Transformers documentation

Быстрый старт

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Быстрый старт

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

Количество пользовательских абстракций ограничено всего тремя классами для создания модели и двумя API для вывода или обучения. В этом быстром старте вы познакомитесь с ключевыми возможностями Transformers и узнаете, как:

  • загрузить предобученную модель
  • выполнить инференс с помощью Pipeline
  • дообучить модель с помощью Trainer

Настройка

Для начала рекомендуем создать аккаунт Hugging Face. С его помощью вы можете размещать и получать доступ к моделям, наборам данных и Spaces с контролем версий на Hub Hugging Face — платформе для совместной работы, поиска и создания.

Создайте User Access Token и войдите в свой аккаунт.

notebook
CLI

Вставьте ваш User Access Token в notebook_login, когда система попросит вас войти.

from huggingface_hub import notebook_login

notebook_login()

Установите PyTorch.

# remove ! if installing from the CLI
!pip install torch

Затем установите актуальную версию Transformers и некоторые дополнительные библиотеки из экосистемы Hugging Face для работы с наборами данных и моделями компьютерного зрения, оценки обучения и оптимизации обучения для больших моделей.

# remove ! if installing from the CLI
!pip install -U transformers datasets evaluate accelerate timm

Навыки агента

Hugging Face Skills обучают вашего кодинг-агента работе с Transformers. Вместо того чтобы самостоятельно писать скрипт обучения, попросите агента дообучить модель компьютерного зрения и позвольте скиллу направить его действия.

Claude Code
Codex
/plugin marketplace add huggingface/skills
/plugin install hf-cli@huggingface/skills

См. руководство по установке для получения информации о других поддерживаемых платформах, таких как Cursor и Gemini.

После установки навыка включите его в инструкции для вашего кодинг-агента.

Use the HF Trainer skill to fine-tune RT-DETRv2 on [Lekim89/sportsmot](https://huggingface.co/datasets/Lekim89/sportsmot) for basketball player tracking.

Предобученные модели

Каждая предобученная модель наследуется от трёх базовых классов.

КлассОписание
PreTrainedConfigФайл, в котором указаны атрибуты модели, такие как количество головок внимания или размер словаря.
PreTrainedModelМодель (или архитектура), определяемая атрибутами модели из файла конфигурации. Предобученная модель возвращает только необработанные скрытые состояния. Для конкретной задачи используйте соответствующую головку модели, чтобы преобразовать необработанные скрытые состояния в осмысленный результат (например, LlamaModel и LlamaForCausalLM).
ПредобработчикКласс для преобразования исходных данных (текст, изображения, аудио, мультимодальные данные) в числовые входные данные модели. Например, PreTrainedTokenizer преобразует текст в тензоры, а ImageProcessingMixin — пиксели в тензоры.

Мы рекомендуем использовать API AutoClass для загрузки моделей и препроцессоров, поскольку он автоматически определяет подходящую архитектуру для каждой задачи и фреймворка машинного обучения на основе имени или пути к предобученным весам и файлу конфигурации.

Используйте from_pretrained(), чтобы загрузить веса и файл конфигурации с Hub в класс модели и препроцессора.

При загрузке модели настройте следующие параметры, чтобы обеспечить оптимальную загрузку.

  • device_map="auto" автоматически распределяет веса модели, начиная с самого быстрого устройства.
  • dtype="auto" инициализирует веса модели непосредственно в том типе данных, в котором они хранятся, что позволяет избежать двойной загрузки весов (по умолчанию PyTorch загружает веса в типе torch.float32).
from transformers import AutoModelForCausalLM, AutoTokenizer

model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", dtype="auto", device_map="auto")
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-hf")

Токенизируйте текст с помощью токенизатора и верните тензоры PyTorch. Перед запуском инференса переместите токенизированные входные данные на то же устройство, на котором находится модель, чтобы модель могла их обработать.

model_inputs = tokenizer(["The secret to baking a good cake is "], return_tensors="pt").to(model.device)

Модель готова для вывода или обучения.

Для вывода передайте токенизированные входные данные в generate(), чтобы сгенерировать текст. Затем декодируйте идентификаторы токенов обратно в текст с помощью batch_decode().

generated_ids = model.generate(**model_inputs, max_length=30)
tokenizer.batch_decode(generated_ids)[0]
'<s> The secret to baking a good cake is 100% in the preparation. There are so many recipes out there,'

Перейдите сразу к разделу Trainer, чтобы узнать, как дообучить модель.

Пайплайн

Класс Pipeline — самый удобный способ выполнять инференс с помощью предобученной модели. Он поддерживает множество задач, таких как генерация текста, сегментация изображений, автоматическое распознавание речи, ответ на вопросы по документам и другие.

Список доступных задач см. в справочнике API Pipeline.

Создайте объект Pipeline и выберите задачу. По умолчанию Pipeline скачивает и кэширует предобученную модель по умолчанию для указанной задачи. Передайте имя модели в параметр model, чтобы выбрать конкретную модель.

генерация текста
сегментация изображений
автоматическое распознавание речи

Используйте Accelerator для автоматического обнаружения доступного ускорителя для инференса.

from transformers import pipeline
from accelerate import Accelerator

device = Accelerator().device

pipe = pipeline("text-generation", model="meta-llama/Llama-2-7b-hf", device=device)

Запрос Pipeline с некоторым начальным текстом для генерации дополнительного текста.

pipe("The secret to baking a good cake is ", max_length=50)
[{'generated_text': 'The secret to baking a good cake is 100% in the batter. The secret to a great cake is the icing.\nThis is why we’ve created the best buttercream frosting reci'}]

Trainer

Trainer — это полный цикл обучения и оценки для моделей PyTorch. Он абстрагирует от значительной части шаблонного кода, который обычно приходится писать при ручной реализации цикла обучения, что позволяет быстрее приступить к обучению и сосредоточиться на архитектурных решениях. Для создания пакетов данных из набора данных вам понадобятся только модель, датасет, препроцессор и data collator.

Используйте класс TrainingArguments для настройки процесса обучения. Он предоставляет множество опций для обучения, оценки и других задач. Экспериментируйте с гиперпараметрами и функциями обучения, такими как размер батча, скорость обучения, смешанная точность, torch.compile и другие, чтобы удовлетворить ваши потребности. Вы также можете использовать параметры обучения по умолчанию, чтобы быстро получить базовый результат.

Загрузите модель, токенизатор и набор данных для обучения.

from transformers import AutoModelForSequenceClassification, AutoTokenizer
from datasets import load_dataset

model = AutoModelForSequenceClassification.from_pretrained("distilbert/distilbert-base-uncased")
tokenizer = AutoTokenizer.from_pretrained("distilbert/distilbert-base-uncased")
dataset = load_dataset("cornell-movie-review-data/rotten_tomatoes")

Создайте функцию для токенизации текста и преобразования его в тензоры PyTorch. Примените эту функцию ко всему набору данных с помощью метода map.

def tokenize_dataset(dataset):
    return tokenizer(dataset["text"])
dataset = dataset.map(tokenize_dataset, batched=True)

Загрузите коллабор данных для создания батчей данных и передайте ему токенизатор.

from transformers import DataCollatorWithPadding

data_collator = DataCollatorWithPadding(tokenizer=tokenizer)

Далее настройте TrainingArguments с функциями обучения и гиперпараметрами.

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="distilbert-rotten-tomatoes",
    learning_rate=2e-5,
    per_device_train_batch_size=8,
    per_device_eval_batch_size=8,
    num_train_epochs=2,
    push_to_hub=True,
)

Наконец, передайте все эти отдельные компоненты в Trainer и вызовите train(), чтобы запустить обучение.

from transformers import Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=dataset["train"],
    eval_dataset=dataset["test"],
    processing_class=tokenizer,
    data_collator=data_collator,
)

trainer.train()

Опубликуйте вашу модель и токенизатор на Hub с помощью push_to_hub().

trainer.push_to_hub()

Поздравляем, вы только что обучили свою первую модель с помощью Transformers!

Дальнейшие шаги

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

  • Базовые классы: Узнайте больше о классах конфигурации, моделей и процессоров. Это поможет вам понять, как создавать и настраивать модели, предобрабатывать различные типы входных данных (аудио, изображения, мультимодальные) и как делиться своей моделью.
  • Вывод: изучите Pipeline подробнее, а также вывод и общение с LLM, агентами и способы оптимизации вывода с использованием вашего фреймворка машинного обучения и оборудования.
  • Обучение: Изучите Trainer подробнее, а также распределённое обучение и оптимизацию обучения на конкретном оборудовании.
  • Квантование: сократите требования к памяти и хранилищу с помощью квантования и ускорьте инференс, представляя веса меньшим числом бит.
  • Ресурсы: Ищете пошаговые инструкции по обучению и инференсу модели для конкретной задачи? Загляните в рецепты по задачам!
Update on GitHub