Hub documentation

Использование 🤗 transformers на Hugging Face

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Использование 🤗 transformers на Hugging Face

🤗 transformers — это библиотека, поддерживаемая Hugging Face и сообществом, для передовых методов машинного обучения в PyTorch, TensorFlow и JAX. Она предоставляет тысячи предобученных моделей для выполнения задач в различных модальностях, таких как текст, изображения и аудио. Мы немного предвзяты, но нам действительно очень нравится 🤗 transformers!

Исследование 🤗 transformers в Hub

В Hub доступно более 630 000 моделей transformers, которые можно найти, используя фильтры слева на странице моделей.

Вы можете найти модели для самых разных задач:

  • Извлечение ответа из контекста (ответы на вопросы).
  • Создание резюме из большого текста (summarization).
  • Классификация текста (например, как спам или не спам, text-classification).
  • Сгенерируйте новый текст с помощью таких моделей, как GPT (text-generation).
  • Определение частей речи (глагол, подлежащее и т. д.) или сущностей (страна, организация и т. д.) в предложении (token-classification).
  • Распознавание аудиофайлов в текст (automatic-speech-recognition).
  • Определите говорящего или язык в аудиофайле (audio-classification).
  • Обнаружение объектов на изображении (object-detection).
  • Сегментируйте изображение (image-segmentation).
  • Занимайтесь обучением с подкреплением (reinforcement-learning)!

Благодаря встроенным в браузер виджетам вы можете протестировать модели прямо в браузере, не скачивая их.

Файлы репозитория Transformers

Репозиторий модели Transformers обычно содержит файлы модели и файлы предобработчика.

Модель

  • Файл config.json хранит сведения об архитектуре модели, такие как количество скрытых слоев, размер словаря, количество головок внимания, размерность каждой головки и другие параметры. Эти метаданные представляют собой чертёж модели.

  • Файл model.safetensors хранит предобученные слои и веса модели. Для больших моделей файл safetensors разбивается на части, чтобы ограничить объём памяти, необходимый для его загрузки. Откройте файл model.safetensors.index.json, чтобы узнать, из каких файлов safetensors загружаются веса модели.

    {
    "metadata": {
      "total_size": 16060522496
    },
    "weight_map": {
      "lm_head.weight": "model-00004-of-00004.safetensors",
      "model.embed_tokens.weight": "model-00001-of-00004.safetensors",
      ...
      }
    }

    Вы также можете визуализировать это отображение, нажав на кнопку ↗ на карточке модели.

    Safetensors — это более безопасный и быстрый формат сериализации для хранения весов моделей по сравнению с pickle. Вы можете встретить веса, сохранённые в форматах, таких как bin, pth или ckpt, однако safetensors всё чаще используется в экосистеме моделей как более предпочтительная альтернатива.

  • Модель также может содержать файл generation_config.json, в котором хранятся сведения о том, как генерировать текст: например, следует ли использовать выборку, какие токены брать для выборки, температура и специальные токены для начала и остановки генерации.

Предобработчик

  • Файл tokenizer_config.json хранит специальные токены, добавленные моделью. Эти специальные токены сигнализируют модели о многих вещах, таких как начало предложения, конкретное форматирование для шаблонов чата или указание на изображение. В этом файле также указаны максимальная длина входной последовательности, которую может принять модель, класс предобработчика и возвращаемые им выходные данные.
  • Файл tokenizer.json хранит выученную моделью лексику.
  • Файл special_tokens_map.json содержит сопоставление специальных токенов. Например, в модели Llama 3.1-8B-Instruct токен начала строки — это "<|begin_of_text|>".

Для других модальностей файл tokenizer_config.json заменяется на preprocessor_config.json.

Использование существующих моделей

Все модели transformer готовы к использованию! В зависимости от того, как вы хотите их применять, можно использовать высокоуровневый API с функцией pipeline или AutoModel для более точного управления.

# With pipeline, just specify the task and the model id from the Hub.
from transformers import pipeline
pipe = pipeline("text-generation", model="distilbert/distilgpt2")

# If you want more control, you will need to define the tokenizer and model.
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilgpt2")
model = AutoModelForCausalLM.from_pretrained("distilbert/distilgpt2")

Также можно загрузить модель из конкретной версии (на основе хэша коммита, имени тега или ветки) следующим образом:

model = AutoModel.from_pretrained(
    "julien-c/EsperBERTo-small", revision="v2.0.1"  # tag name, or branch name, or commit hash
)

Если вы хотите узнать, как загрузить конкретную модель, нажмите Use in Transformers — вам будет предложен рабочий фрагмент кода для её загрузки. Если вам нужна дополнительная информация об архитектуре модели, вы также можете нажать «Read model documentation» внизу фрагмента кода.

Обмен моделями

Чтобы узнать всё о совместном использовании моделей с transformers, обратитесь к руководству Share a model в официальной документации.

Многие классы в transformers, такие как модели и токенизаторы, имеют метод push_to_hub, который позволяет легко загрузить файлы в репозиторий.

# Pushing model to your own account
model.push_to_hub("my-awesome-model")

# Pushing your tokenizer
tokenizer.push_to_hub("my-awesome-model")

# Pushing all things after training
trainer.push_to_hub()

Возможностей гораздо больше, поэтому мы рекомендуем ознакомиться с руководством Share a model.

Дополнительные ресурсы

Update on GitHub