Hugging Face Transformers – работа с моделями NLP

онлайн тренер по питону
Онлайн-тренажер Python 3 для начинающих

Теория без воды. Задачи с автоматической проверкой. Подсказки на русском языке. Работает в любом современном браузере.

начать бесплатно

Введение в Hugging Face Transformers

Hugging Face Transformers — это фреймворк Python с открытым исходным кодом, предоставляющий удобный доступ к мощным трансформерным моделям для обработки естественного языка (NLP). Библиотека поддерживает более 100 тысяч предобученных моделей, разработанных на архитектурах BERT, GPT, T5, RoBERTa, DistilBERT и многих других, применяемых в задачах классификации, генерации, перевода, суммаризации и извлечения информации.


Основные возможности библиотеки

  • Доступ к тысячам моделей из Hugging Face Hub

  • Поддержка PyTorch, TensorFlow и JAX

  • Простота использования через pipeline API

  • Возможность дообучения моделей (Fine-tuning)

  • Совместимость с ONNX, Optimum и другими ускорителями

  • Интеграция с DataCollator, Datasets, Accelerate, Tokenizers


Установка и подключение

Установка базового пакета:

bash
pip install transformers

Для полной функциональности рекомендуется установить также:

bash
pip install datasets accelerate sentencepiece

Импорт библиотеки:

python
from transformers import pipeline, AutoTokenizer, AutoModelForSequenceClassification

Архитектура и поддерживаемые модели

Поддерживаются все популярные трансформеры:

  • BERT, RoBERTa, DistilBERT — энкодеры для классификации, NER

  • GPT, GPT-2, GPT-Neo, GPT-J — генерация текста

  • T5, BART — seq2seq задачи (перевод, суммаризация)

  • mBERT, XLM-RoBERTa — мультиязычные модели

  • Whisper — распознавание речи

Каждая модель разделяется на:

  • Tokenizer — преобразование текста в токены

  • Model — нейронная сеть


Токенизация текста

python
from transformers import AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") tokens = tokenizer("Natural Language Processing with Transformers", return_tensors="pt")

Токенизация включает преобразование текста в числовые векторы, необходимые для входа в модель.


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

Самый простой способ — использование pipeline:

python
from transformers import pipeline classifier = pipeline("sentiment-analysis") classifier("Transformers are very powerful in NLP tasks.")

Поддерживаемые задачи: sentiment-analysis, text-classification, question-answering, translation, text-generation, summarization и др.


Классификация текста

python
from transformers import AutoModelForSequenceClassification model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english") inputs = tokenizer("This is a great product!", return_tensors="pt") outputs = model(**inputs)

Можно использовать Softmax для получения вероятностей классов.


Генерация текста

python
from transformers import pipeline generator = pipeline("text-generation", model="gpt2") generator("In a distant future,", max_length=30, num_return_sequences=1)

Генерация текста доступна на моделях GPT, GPT-Neo, GPT-J, Falcon и др.


Перевод текста

python
translator = pipeline("translation_en_to_fr") translator("Machine learning is transforming the world.")

Поддерживаются пары en→fr, en→de, ru→en и многие другие на базе моделей MarianMT, T5, mBART.


Ответы на вопросы и извлечение информации

python
qa = pipeline("question-answering") qa({ 'context': "Hugging Face created the Transformers library for NLP.", 'question': "Who created Transformers?" })

Применяется для анализа документов, FAQ, чат-ботов.


Тонкозернистая настройка (Fine-tuning) моделей

Модели можно адаптировать под конкретные датасеты:

python
from transformers import Trainer, TrainingArguments training_args = TrainingArguments( output_dir="./results", num_train_epochs=3, per_device_train_batch_size=8 ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=eval_dataset ) trainer.train()

Использование Trainer API

Trainer — высокоуровневый API, объединяющий обучение, оценку и логирование. Поддерживает:

  • кастомные лоссы

  • метрики

  • логгеры (WandB, TensorBoard)


Оптимизация и ускорение инференса

  • Использование torch.compile (PyTorch 2.0)

  • Компиляция в ONNX через optimum

  • Поддержка ускорителей: TensorRT, Hugging Face Accelerate

  • Использование quantization для уменьшения веса модели


Интеграция с PyTorch, TensorFlow и ONNX

  • transformers поддерживает как torch, так и tensorflow.keras

  • Экспорт в ONNX:

bash
transformers-cli convert --framework pt --model bert-base-uncased --output bert.onnx
  • Поддержка моделей в ONNXRuntime, TensorRT, TFLite


Примеры практического применения

  • Анализ тональности пользовательских отзывов

  • Генерация текстов маркетинговых кампаний

  • Ответы на вопросы в чат-ботах

  • Перевод и суммаризация технической документации

  • Обнаружение фейковой информации

  • Распознавание именованных сущностей в юридических документах


Часто задаваемые вопросы

Что такое Hugging Face Transformers?

Это библиотека Python для загрузки, использования и обучения трансформерных моделей в задачах NLP.

Какие модели поддерживаются?

BERT, RoBERTa, GPT, T5, BART, DistilBERT, Electra, mBERT, и др.

Можно ли использовать свою модель?

Да, можно загрузить свою модель в формате PyTorch или TensorFlow.

Поддерживает ли библиотека GPU?

Да, при наличии CUDA модель автоматически использует GPU.

Как развернуть модель в продакшене?

Возможны варианты: ONNX, TorchScript, FastAPI, Gradio, BentoML.

Полный справочник по ключевым функциям и модулям библиотеки Hugging Face Transformers для Python

Установка

bash
pip install transformers

Также желательно установить torch или tensorflow, т.к. Transformers поддерживает обе платформы.


Основные модули

Модуль Назначение
transformers.AutoModel / AutoModelFor... Автоматический выбор нужной модели.
transformers.AutoTokenizer Подбор подходящего токенизатора.
transformers.pipeline Быстрое применение моделей без настройки.
transformers.Trainer / TrainingArguments Обучение и дообучение моделей.
transformers.PreTrainedModel Базовый класс для всех моделей.
transformers.PreTrainedTokenizer Базовый класс для всех токенизаторов.

Быстрый способ: pipeline

python
from transformers import pipeline classifier = pipeline("sentiment-analysis") print(classifier("I love this library!"))

Доступные типы пайплайнов:

Название Задача
sentiment-analysis Анализ тональности.
text-classification Классификация текста.
question-answering Вопрос-ответ по контексту.
translation_xx_to_yy Перевод (например, en_to_fr).
summarization Сжатие текста.
text-generation Генерация текста.
fill-mask Заполнение пропущенных слов ([MASK]).
ner Распознавание сущностей.
feature-extraction Векторизация текста.
image-classification, object-detection Компьютерное зрение.
automatic-speech-recognition Распознавание речи.

Работа с моделью вручную

1. Загрузка модели и токенизатора

python
from transformers import AutoTokenizer, AutoModelForSequenceClassification tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased") model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")

2. Токенизация текста

python
inputs = tokenizer("This is a test", return_tensors="pt")

3. Прогон через модель

python
outputs = model(**inputs) logits = outputs.logits

Поддерживаемые типы моделей

Класс Назначение
AutoModel Базовая модель без головы (без задачи).
AutoModelForSequenceClassification Классификация текста.
AutoModelForQuestionAnswering Ответ на вопросы по контексту.
AutoModelForTokenClassification NER, POS и т.п.
AutoModelForCausalLM Генерация текста (GPT).
AutoModelForMaskedLM Заполнение маски (BERT).
AutoModelForSeq2SeqLM Перевод, суммаризация (T5, BART).

Пример: генерация текста (GPT-2)

python
from transformers import AutoModelForCausalLM, AutoTokenizer import torch tokenizer = AutoTokenizer.from_pretrained("gpt2") model = AutoModelForCausalLM.from_pretrained("gpt2") input_ids = tokenizer("Once upon a time", return_tensors="pt").input_ids output = model.generate(input_ids, max_length=50) print(tokenizer.decode(output[0], skip_special_tokens=True))

Дообучение модели (Trainer API)

python
from transformers import Trainer, TrainingArguments training_args = TrainingArguments( output_dir="./results", per_device_train_batch_size=8, num_train_epochs=3, evaluation_strategy="epoch", ) trainer = Trainer( model=model, args=training_args, train_dataset=train_dataset, eval_dataset=val_dataset, tokenizer=tokenizer, ) trainer.train()

Работа с собственными данными

Инструмент Описание
datasets Hugging Face Datasets — для загрузки и подготовки данных.
tokenizer(..., truncation=True, padding=True) Подготовка батчей.
DataCollatorWithPadding Динамическое выравнивание длины последовательностей.

Загрузка моделей с Hugging Face Hub

python
from transformers import AutoModel model = AutoModel.from_pretrained("distilbert-base-uncased")

Можно указывать не только официальные модели, но и пользовательские: "username/model_name".


Сохранение и загрузка локально

python
model.save_pretrained("my_model") tokenizer.save_pretrained("my_model") # Загрузка обратно: model = AutoModel.from_pretrained("my_model") tokenizer = AutoTokenizer.from_pretrained("my_model")

Основные преимущества Transformers

  • Тысячи готовых моделей на Hugging Face Hub.

  • Унифицированный API для десятков архитектур (BERT, GPT, RoBERTa, T5, DistilBERT, etc.).

  • Поддержка PyTorch, TensorFlow и JAX.

  • Простота интеграции в ML-проекты.

  • Совместимость с ONNX и TorchScript.


Заключение: роль Transformers в современной NLP-инфраструктуре

Hugging Face Transformers предоставляет мощные средства для работы с трансформерными моделями, упрощая как их использование, так и обучение. Благодаря широкому выбору моделей, готовых пайплайнов и возможности глубокой настройки, библиотека стала стандартом в современной обработке естественного языка. Она позволяет быстро строить, тестировать и внедрять NLP-решения любой сложности.