Перейти к основному содержимому

Практика работы с предобученными моделями

Разработчику Инженеру

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-casedEncoder, классификация, NER base~178M
cointegrated/rubert-tiny2Лёгкий encoder, edge~29M
ai-forever/ruBert-largeКачество на GLUE-ru~435M
ai-forever/sbert_large_nlu_ruSentence embeddings, semantic search~435M
ai-forever/ruT5-baseSeq2seq, summarization~220M
ai-forever/ruGPT-3.5-13BГенерация (тяжёлый inference)13B
Qwen/Qwen2.5-7B-InstructMultilingual chat7B
intfloat/multilingual-e5-largeEmbeddings RU+EN~560M

Проверяйте лицензию (apache-2.0, mit, custom) и card на Hub — domain, метрики, ограничения.


Явный inference

import torch
from transformers import AutoTokenizer, AutoModelForSequenceClassification

name = "cointegrated/rubert-tiny2"
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForSequenceClassification.from_pretrained(name)
model.eval()

text = "Продукт разочаровал, верну деньги."
inputs = tokenizer(text, return_tensors="pt", truncation=True, max_length=512)

with torch.no_grad():
logits = model(**inputs).logits
pred = logits.argmax(dim=-1).item()

Для NERAutoModelForTokenClassification + выравнивание subword → word (word_ids в fast tokenizer).


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 + quantizationint8 на CPU
BatchingМного запросов — dynamic batch
Distilled modelLatency < 50 ms на CPU
GPU + half()fp16/bf16 на NVIDIA

Микро-ML в каждом сервисе — статья про микро-ML.


Чек-лист перед продом

  1. Версия tokenizer и model зафиксированы (pin commit на Hub).
  2. Max length и padding согласованы с обучением.
  3. Preprocessing текста (lower case, emoji) как в train.
  4. Мониторинг drift по распределению входов и confidence.
  5. Fallback при низком score — эскалация человеку.
  6. GDPR / 152-ФЗ — логирование без PII или с маскированием.

Hallucination в генерации
RuGPT и multilingual LLM могут выдумывать факты. Для юридических и медицинских сценариев — RAG по проверенным документам и цитирование источника, не «голая» генерация.


Дальше


См. также

Другие статьи этого же раздела в боковом меню (как на странице "О разделе").