Практика работы с предобученными моделями
Hugging Face Hub — каталог тысяч чекпоинтов с единым API — from_pretrained, pipeline, Trainer. Эта статья — практический минимум для русского и multilingual NLP без обучения с нуля.
Fine-tuning — статья 4. LLM-чаты и RAG — модели и инструменты, разработка ИИ.
Установка и первый pipeline
pip install transformers torch sentencepiece accelerate
from transformers import pipeline
clf = pipeline(
"sentiment-analysis",
model="blanchefort/rubert-base-cased-sentiment",
)
print(clf("Отличный сервис, быстро ответили поддержке."))
# [{'label': 'POSITIVE', 'score': 0.98}]
pipeline скрывает tokenize → model → postprocess. Для кастомной логики вызывают модель напрямую.
Русскоязычные и multilingual чекпоинты
| Модель | Назначение | Размер |
|---|---|---|
DeepPavlov/rubert-base-cased | Encoder, классификация, NER base | ~178M |
cointegrated/rubert-tiny2 | Лёгкий encoder, edge | ~29M |
ai-forever/ruBert-large | Качество на GLUE-ru | ~435M |
ai-forever/sbert_large_nlu_ru | Sentence embeddings, semantic search | ~435M |
ai-forever/ruT5-base | Seq2seq, summarization | ~220M |
ai-forever/ruGPT-3.5-13B | Генерация (тяжёлый inference) | 13B |
Qwen/Qwen2.5-7B-Instruct | Multilingual chat | 7B |
intfloat/multilingual-e5-large | Embeddings RU+EN | ~560M |
Проверяйте лицензию (apache-2.0, mit, custom) и card на Hub — domain, метрики, ограничения.
Явный inference
Код ITЗагрузка примера кода…
Для NER — AutoModelForTokenClassification + выравнивание subword → word (word_ids в fast tokenizer).
Embeddings и semantic search
from sentence_transformers import SentenceTransformer
model = SentenceTransformer("ai-forever/sbert_large_nlu_ru")
emb = model.encode(["как оформить возврат", "политика возврата товара"])
# cosine similarity между emb[0] и emb[1] — для поиска по FAQ / RAG
Связь с векторными БД — NoSQL / embeddings, RAG.
spaCy + transformers
Для production-NER удобен spaCy 3 с transformer pipeline:
import spacy
nlp = spacy.load("ru_core_news_lg") # или ru_core_news_sm для легче
doc = nlp("ООО Ромашка заключила контракт в Казани.")
for ent in doc.ents:
print(ent.text, ent.label_)
Под капотом может быть CNN или transformer в зависимости от пакета модели.
Оптимизация inference
| Подход | Когда |
|---|---|
| ONNX Runtime | Стабильный CPU/GPU без PyTorch в prod |
optimum + quantization | int8 на CPU |
| Batching | Много запросов — dynamic batch |
| Distilled model | Latency < 50 ms на CPU |
| GPU + half() | fp16/bf16 на NVIDIA |
Микро-ML в каждом сервисе — статья про микро-ML.
Чек-лист перед продом
- Версия tokenizer и model зафиксированы (pin commit на Hub).
- Max length и padding согласованы с обучением.
- Preprocessing текста (lower case, emoji) как в train.
- Мониторинг drift по распределению входов и confidence.
- Fallback при низком score — эскалация человеку.
- GDPR / 152-ФЗ — логирование без PII или с маскированием.
RuGPT и multilingual LLM могут выдумывать факты. Для юридических и медицинских сценариев — RAG по проверенным документам и цитирование источника, не "голая" генерация.
Дальше
- Дообучение на задачи NLP
- Облачные Cognitive Services — альтернатива self-host
- Мультимодальные трансформеры