1.3 🔑 API ключ курса или от OpenAI?

🤗 OpenSource + HuggingFaceHub API

Hugging Face Hub - платформа, которая содержит огромное количество моделей с открытым исходным кодом и в открытом доступе.

  • 1️⃣ Авторизуйтесь или зарегистрируйтесь на сайте HuggingFace.
  • 2️⃣ Перейдите по ссылке и нажмите на кнопку Create new token.
  • 3️⃣ Для удобства выберете тип токена Read или Write.
  • 4️⃣ Введите любое название и нажмите кнопку Create a token.
  • 5️⃣ Скопируйте и сохраните свой токен.

В коде токен ключ нужно сохранить в переменную среды HUGGINGFACEHUB_API_TOKEN

import os
os.environ['HUGGINGFACEHUB_API_TOKEN'] = 'Ваш полученный ключ'

Чтобы проверить работоспобность, можно воспользоваться следующим кодом, предварительно установив библиотеки langchain и huggingface_hub с помощью команды !pip install langchain langchain-community huggingface_hub

from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain_community.llms import HuggingFaceEndpoint
question = "1 + 1?"
template = """Question: {question}
Answer: Let's think step by step"""
prompt = PromptTemplate(template=template, input_variables=["question"])
llm = HuggingFaceEndpoint(repo_id="mistralai/Mistral-7B-Instruct-v0.2")
llm_chain = LLMChain(prompt=prompt, llm=llm)
print(llm_chain.invoke(question)['text'])

Использование LLM локально

Для локального использования моделей HuggingFace (на вашем локальном компьютере или сервере), необходима библиотека transformers (можно установить при помощи !pip install transformers), а также должны быть скачены веса необходимой модели.

# Если модель у вас еще не загружена, то её скачивание произойдет автоматически 
# А при дальнейшем использовании, модель подгрузится из памяти
from langchain.llms import HuggingFacePipeline
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
bloom = HuggingFacePipeline.from_model_id(
    model_id="bigscience/bloom-1b7",
    task="text-generation",
    model_kwargs={"temperature": 0, "max_length": 64},
    device=0,  # Номер GPU карточки, если есть!
)
template = """Question: {question}.
Answer:"""
prompt = PromptTemplate(template=template, input_variables=["question"])
llm_chain = LLMChain(
    prompt=prompt,
    llm=bloom
)
question = "When did man first fly into space?"
print(llm_chain.invoke(question)['text'])

Теперь вы готовы использовать HuggingFaceHub API для работы с языковыми моделями, либо запускать их локально, без использования API! 🚀💬

Если у вас возникнут вопросы или трудности, не стесняйтесь задавать их в комментариях к этому уроку. Мы всегда готовы помочь вам! 💡💬


Если дергать модель с HF, то 
Token is valid (permission: read).
но 
ImportError: cannot import name 'AsyncInferenceClient' from 'huggingface_hub' 

@Никита_Зелинский, Где вы запускаете код и какую модель используете? (в google colab код степа полностью отрабатывает)

@Петр_Михайлов, локально, код из последнего отсека

сработало, 

huggingface_hub кривовато стоял

Код с flan-t5-xxl работает корректно, а с mistralai/Mistral-7B-v0.1 из ноутбука падает с ошибкой.  bigscience/bloom-1b7 тоже падает.

@Maksim_Khlopotov, в колабе или локально? Апи-ключ хаггинфэйс вводили?

@Иван_Александров, локально, ключ вводил. Если не ввести ключ, то будет ошибка ValidationError: 1 validation error for HuggingFaceHub. У меня ошибка ValueError: Could not load the text-generation model due to missing dependencies. Наверное, не хватает каких-то библиотек. Установил pytorch. Не помогло

@Maksim_Khlopotov, спасибо за замечание. Там на стороне Хагинфэйса проблемы, эта модель и на сайте не инференсит - выдает ошибку. Заменим на другую в примере.

Вот такие ошибки выдает, что не так?: 
NameError: name 'PromptTemplate' is not defined
NameError: name 'HuggingFaceEndpoint' is not defined
NameError: name 'LLMChain' is not defined
NameError: name 'llm_chain' is not defined

@Alexander_Kasyanenko,  надо вначале установить библиотеки в ячейке с !pip install ......

И проверить, что ячейки с импортами модулей отработали

ImportError: 
AutoModelForCausalLM requires the PyTorch library but it was not found in your environment.
However, we were able to find a TensorFlow installation. TensorFlow classes begin
with "TF", but are otherwise identically named to our PyTorch classes. This
means that the TF equivalent of the class you tried to import would be "TFAutoModelForCausalLM".
If you want to use TensorFlow, please use TF classes instead!
If you really do want to use PyTorch please go to
https://pytorch.org/get-started/locally/ and follow the instructions that
match your environment.

@Андрей_Коржун, это в какой ячейке? Попробуйте : !pip install pytorch

Для использования LLM локально ругается на deprecated-методы.
Вопрос: как понять, как указать id модели? На HuggingFace есть страница bigscience/bloom Но эта общая страница модели как я понимаю. 
Зачем в примере указано про библиотеку transformers, если скачивание делаем через langchain? Полагаю при ее установке она должна подтянуть зависимости, например torch?

@Антон_Т.,  Без transformers:

----> 5 bloom = HuggingFacePipeline.from_model_id(
      6     model_id="bigscience/bloom-1b7",
      7     task="text-generation",
      8     model_kwargs={"temperature": 0, "max_length": 64},
      9 )
     12 template = """Question: {question}.
     13 
     14 Answer:"""
     16 prompt = PromptTemplate(template=template, input_variables=["question"])

File ~/mambaforge/envs/llm/lib/python3.12/site-packages/langchain_community/llms/huggingface_pipeline.py:89, in HuggingFacePipeline.from_model_id(cls, model_id, task, backend, device, device_map, model_kwargs, pipeline_kwargs, batch_size, **kwargs)
     86     from transformers import pipeline as hf_pipeline
     88 except ImportError:
---> 89     raise ValueError(
     90         "Could not import transformers python package. "
     91         "Please install it with `pip install transformers`."

Пытаюсь запустить с HF, выдает такую ошибку

from langchain.chains import LLMChain
from langchain_community.llms import HuggingFaceEndpoint
from langchain.prompts import PromptTemplate
#initialize HF LLM
hf_llm = HuggingFaceEndpoint(
    repo_id = 'mistralai/Mistral-7B-Instruct-v0.2' #'meta-llama/Llama-2-7b' 'mistralai/Mistral-7B-Instruct-v0.2'
)
template = """Question: {question}.
Answer:"""
prompt = PromptTemplate(template=template, input_variables = ['question'])
llm_chain = LLMChain(prompt=prompt, llm=hf_llm)
question = "When did man first fly to Mars?"
print(llm_chain.invoke(question)['text'])
HTTPError: 503 Server Error: Service Unavailable for url: https://api-inference.huggingface.co/models/mistralai/Mistral-7B-Instruct-v0.2
import os
os.environ['HUGGINGFACEHUB_API_TOKEN'] = 'your_API'
from langchain.prompts import PromptTemplate
from langchain_community.llms import HuggingFaceEndpoint
from langchain import LLMChain
question = "1 + 1?"
template = """Question: {question}
Answer: Let's think step by step"""
prompt = PromptTemplate(template=template, input_variables=["question"])
llm = HuggingFaceEndpoint(repo_id="mistralai/Mistral-7B-Instruct-v0.2")
llm_chain = LLMChain(prompt=prompt, llm=llm)
print(llm_chain.run({"question": question}))

была куча ошибок, в итоге заработал такой код

Все попробовал, все работает. Хотелось бы поподробнее про настройки каждого варианта. Но думаю дальше все будет.

Не указано, какую лучше роль ставить для начала - read или write, и собственно в чём разница