Тема 2 из 6

pipeline — модель в одну строку

transformers — библиотека Hugging Face с тысячами готовых моделей: анализ тона, перевод, ответы на вопросы, генерация текста, распознавание речи и картинок. Модели лежат на сайте Hugging Face Hub, а библиотека скачивает их и запускает у вас на компьютере.

В курсе вы соберёте определитель тона отзывов: от готового pipeline до того, что происходит внутри — токенов, логитов и генерации.

pipeline

from transformers import pipeline

classify = pipeline("sentiment-analysis", model="distilbert/distilbert-base-uncased-finetuned-sst-2-english")
print(classify(["Great phone!", "Battery is awful"]))
# [{'label': 'POSITIVE', 'score': 0.9998}, {'label': 'NEGATIVE', 'score': 0.9997}]
  • при первом запуске модель скачивается (сотни мегабайт) и кладётся в кэш (~/.cache/huggingface); потом берётся оттуда — интернет уже не нужен;
  • pipeline принимает строку или список строк и возвращает список ответов;
  • лучше всегда указывать model=… — тогда результат не изменится, если библиотека поменяет модель по умолчанию. Для русских текстов ищите модели на Hub, например по запросу «russian sentiment».

Другие задачи: "translation", "summarization", "question-answering", "text-generation", "zero-shot-classification", "automatic-speech-recognition", "image-classification".

Ответ модели

label — выбранный класс, score — уверенность модели в нём (вероятность от 0 до 1). При двух классах 0.5 означает «понятия не имею». Поэтому в настоящих программах ставят порог: если уверенность мала, честнее ответить «не уверен», чем выдать случайный ответ.

Zero-shot

classify = pipeline("zero-shot-classification", model="facebook/bart-large-mnli")
classify("The courier was late", candidate_labels=["delivery", "price", "quality"])
# {'sequence': '…', 'labels': ['delivery', 'quality', 'price'], 'scores': [0.91, 0.05, 0.04]}

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

Как проверяются задачи

Скачивать огромные модели на каждую проверку было бы долго, поэтому в задачах про pipeline проверка подставляет заготовленные ответы модели в том же формате. «Запустить у себя» скачивает настоящую модель и прогоняет живые отзывы. В следующих темах проверка запускает настоящие классы transformers на крошечных моделях прямо у вас на компьютере.

Итог

  • pipeline(задача, model=…): скачивается один раз, работает локально;
  • ответ — {"label", "score"}; порог уверенности;
  • zero-shot: candidate_labels, ответ labels + scores по убыванию.