Transformers — это библиотека от Hugging Face, которая позволяет легко использовать мощные языковые модели вроде BERT, GPT, RoBERTa и многих других. Она содержит как сами модели, так и удобные инструменты для инференса, обучения и обработки текста.
В этом материале:
- Что такое pipeline и как быстро сделать инференс
- Как загружать модели и токенизаторы вручную
- Как обучить модель под свою задачу (fine-tuning)
- Как сохранить и использовать свою модель
1. Быстрый старт: pipeline
Если нужно просто попробовать модель — используем pipeline
:
from transformers import pipeline
classifier = pipeline("text-classification")
result = classifier("I love this phone!")
print(result)
Этот код скачает предобученную модель (distilbert-base-uncased-finetuned-sst-2-english
) и вернёт метку (POSITIVE
) с вероятностью.
2. Токенизация и модель вручную
Если нужно больше контроля — используем токенизатор и модель напрямую:
from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch
model_name = "distilbert-base-uncased-finetuned-sst-2-english"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModelForSequenceClassification.from_pretrained(model_name)
inputs = tokenizer("This is awesome!", return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
probs = torch.softmax(outputs.logits, dim=1)
print(probs)
AutoTokenizer
и AutoModel*
— универсальные загрузчики, которые подбирают нужный класс модели автоматически.
3. Как обучить модель под себя (fine-tuning)
Пример: классификация заголовков объявлений
У вас есть файл CSV с колонками text
и label
. Хотим научить модель предсказывать категорию объявления.
from transformers import Trainer, TrainingArguments, AutoModelForSequenceClassification
from datasets import load_dataset
# Загружаем датасет
dataset = load_dataset("csv", data_files="ads.csv")
# Токенизация
tokenizer = AutoTokenizer.from_pretrained(model_name)
def tokenize(batch):
return tokenizer(batch["text"], truncation=True, padding=True)
dataset = dataset.map(tokenize, batched=True)
# Модель
model = AutoModelForSequenceClassification.from_pretrained(model_name, num_labels=3)
# Аргументы обучения
args = TrainingArguments(output_dir="./results", per_device_train_batch_size=8, num_train_epochs=3)
# Trainer
trainer = Trainer(model=model, args=args, train_dataset=dataset["train"])
trainer.train()
Этот код обучит модель на ваших данных. Она будет сохраняться в ./results
.
4. Как сохранить и загрузить свою модель
После обучения можно сохранить модель и токенизатор:
model.save_pretrained("my-model")
tokenizer.save_pretrained("my-model")
Позже можно загрузить её так же, как любую другую:
model = AutoModelForSequenceClassification.from_pretrained("my-model")
tokenizer = AutoTokenizer.from_pretrained("my-model")
Частые вопросы
Что делает токенизатор? Преобразует текст в числа (токены), которые понимает модель.
Что делает модель? Получает токены на вход и возвращает результат — например, класс или продолжение текста.
Можно ли дообучить GPT? Да, но GPT-модели — генераторы, а не классификаторы. Используют AutoModelForCausalLM
и другие классы.
Чем отличается pipeline и Trainer? pipeline
— быстрый способ попробовать модель. Trainer
— для обучения.
Transformers — это удобный способ использовать сильные языковые модели без глубокой математики. Начать можно с pipeline
, а дальше шаг за шагом переходить к кастомизации и обучению.