Skip to content

Latest commit

 

History

History
325 lines (244 loc) · 31 KB

README_ru.md

File metadata and controls

325 lines (244 loc) · 31 KB

Hugging Face Transformers Library

Build GitHub Documentation GitHub release Contributor Covenant DOI

Современное машинное обучение для JAX, PyTorch и TensorFlow

🤗 Transformers предоставляет тысячи предварительно обученных моделей для выполнения различных задач, таких как текст, зрение и аудио.

Эти модели могут быть применены к:

  • 📝 Тексту для таких задач, как классификация текстов, извлечение информации, ответы на вопросы, обобщение, перевод, генерация текстов на более чем 100 языках.
  • 🖼️ Изображениям для задач классификации изображений, обнаружения объектов и сегментации.
  • 🗣️ Аудио для задач распознавания речи и классификации аудио.

Модели transformers также могут выполнять несколько задач, такие как ответы на табличные вопросы, распознавание оптических символов, извлечение информации из отсканированных документов, классификация видео и ответы на визуальные вопросы.

🤗 Transformers предоставляет API для быстрой загрузки и использования предварительно обученных моделей, их тонкой настройки на собственных датасетах и последующего взаимодействия ими с сообществом на нашем сайте. В то же время каждый python модуль, определяющий архитектуру, полностью автономен и может быть модифицирован для проведения быстрых исследовательских экспериментов.

🤗 Transformers опирается на три самые популярные библиотеки глубокого обучения - Jax, PyTorch и TensorFlow - и легко интегрируется между ними. Это позволяет легко обучать модели с помощью одной из них, а затем загружать их для выводов с помощью другой.

Онлайн демонстрация

Большинство наших моделей можно протестировать непосредственно на их страницах с сайта. Мы также предлагаем привтаный хостинг моделей, контроль версий и API для выводов для публичных и частных моделей.

Вот несколько примеров:

В области NLP ( Обработка текстов на естественном языке ):

В области компьютерного зрения:

В области звука:

В мультимодальных задачах:

100 проектов, использующих Transformers

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

Чтобы отпраздновать 100 тысяч звезд Transformers, мы решили сделать акцент на сообществе, и создали страницу awesome-transformers, на которой перечислены 100 невероятных проектов, созданных с помощью transformers.

Если вы являетесь владельцем или пользователем проекта, который, по вашему мнению, должен быть включен в этот список, пожалуйста, откройте PR для его добавления!

Если вы хотите получить индивидуальную поддержку от команды Hugging Face

HuggingFace Expert Acceleration Program

Быстрый гайд

Для использования модели на заданном входе (текст, изображение, звук, ...) мы предоставляем API pipeline. Конвейеры объединяют предварительно обученную модель с препроцессингом, который использовался при ее обучении. Вот как можно быстро использовать конвейер для классификации положительных и отрицательных текстов:

>>> from transformers import pipeline

# Выделение конвейера для анализа настроений
>>> classifier = pipeline('sentiment-analysis')
>>> classifier('Мы очень рады представить конвейер в transformers.')
[{'label': 'POSITIVE', 'score': 0.9996980428695679}]

Вторая строка кода загружает и кэширует предварительно обученную модель, используемую конвейером, а третья оценивает ее на заданном тексте. Здесь ответ "POSITIVE" с уверенностью 99,97%.

Во многих задачах, как в НЛП, так и в компьютерном зрении и речи, уже есть готовый pipeline. Например, мы можем легко извлечь обнаруженные объекты на изображении:

>>> import requests
>>> from PIL import Image
>>> from transformers import pipeline

# Скачиваем изображение с милыми котиками
>>> url = "https://huggingface.co/datasets/huggingface/documentation-images/resolve/main/coco_sample.png"
>>> image_data = requests.get(url, stream=True).raw
>>> image = Image.open(image_data)

# Выделение конвейера для обнаружения объектов
>>> object_detector = pipeline('object-detection')
>>> object_detector(image)
[{'score': 0.9982201457023621,
  'label': 'remote',
  'box': {'xmin': 40, 'ymin': 70, 'xmax': 175, 'ymax': 117}},
 {'score': 0.9960021376609802,
  'label': 'remote',
  'box': {'xmin': 333, 'ymin': 72, 'xmax': 368, 'ymax': 187}},
 {'score': 0.9954745173454285,
  'label': 'couch',
  'box': {'xmin': 0, 'ymin': 1, 'xmax': 639, 'ymax': 473}},
 {'score': 0.9988006353378296,
  'label': 'cat',
  'box': {'xmin': 13, 'ymin': 52, 'xmax': 314, 'ymax': 470}},
 {'score': 0.9986783862113953,
  'label': 'cat',
  'box': {'xmin': 345, 'ymin': 23, 'xmax': 640, 'ymax': 368}}]

Здесь мы получаем список объектов, обнаруженных на изображении, с рамкой вокруг объекта и оценкой достоверности. Слева - исходное изображение, справа прогнозы:

Подробнее о задачах, поддерживаемых API pipeline, можно узнать в этом учебном пособии

В дополнение к pipeline, для загрузки и использования любой из предварительно обученных моделей в заданной задаче достаточно трех строк кода. Вот версия для PyTorch:

>>> from transformers import AutoTokenizer, AutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = AutoModel.from_pretrained("google-bert/bert-base-uncased")

>>> inputs = tokenizer("Привет мир!", return_tensors="pt")
>>> outputs = model(**inputs)

А вот эквивалентный код для TensorFlow:

>>> from transformers import AutoTokenizer, TFAutoModel

>>> tokenizer = AutoTokenizer.from_pretrained("google-bert/bert-base-uncased")
>>> model = TFAutoModel.from_pretrained("google-bert/bert-base-uncased")

>>> inputs = tokenizer("Привет мир!", return_tensors="tf")
>>> outputs = model(**inputs)

Токенизатор отвечает за всю предварительную обработку, которую ожидает предварительно обученная модель, и может быть вызван непосредственно с помощью одной строки (как в приведенных выше примерах) или на списке. В результате будет получен словарь, который можно использовать в последующем коде или просто напрямую передать в модель с помощью оператора распаковки аргументов **.

Сама модель представляет собой обычный Pytorch nn.Module или TensorFlow tf.keras.Model (в зависимости от используемого бэкенда), который можно использовать как обычно. В этом руководстве рассказывается, как интегрировать такую модель в классический цикл обучения PyTorch или TensorFlow, или как использовать наш API Trainer для быстрой тонкой настройки на новом датасете.

Почему необходимо использовать transformers?

  1. Простые в использовании современные модели:

    • Высокая производительность в задачах понимания и генерации естественного языка, компьютерного зрения и аудио.
    • Низкий входной барьер для преподавателей и практиков.
    • Небольшое количество абстракций для пользователя и всего три класса для изучения.
    • Единый API для использования всех наших предварительно обученных моделей.
  2. Более низкие вычислительные затраты, меньший "углеродный след":

    • Исследователи могут обмениваться обученными моделями вместо того, чтобы постоянно их переобучать.
    • Практики могут сократить время вычислений и производственные затраты.
    • Десятки архитектур с более чем 60 000 предварительно обученных моделей для всех модальностей.
  3. Выбор подходящего фреймворка для каждого этапа жизни модели:

    • Обучение самых современных моделей за 3 строки кода.
    • Перемещайте одну модель между фреймворками TF2.0/PyTorch/JAX по своему усмотрению.
    • Беспрепятственный выбор подходящего фреймворка для обучения, оценки и производства.
  4. Легко настроить модель или пример под свои нужды:

    • Мы предоставляем примеры для каждой архитектуры, чтобы воспроизвести результаты, опубликованные их авторами.
    • Внутренние компоненты модели раскрываются максимально последовательно.
    • Файлы моделей можно использовать независимо от библиотеки для проведения быстрых экспериментов.

Почему я не должен использовать transformers?

  • Данная библиотека не является модульным набором строительных блоков для нейронных сетей. Код в файлах моделей специально не рефакторится дополнительными абстракциями, чтобы исследователи могли быстро итеративно работать с каждой из моделей, не погружаясь в дополнительные абстракции/файлы.
  • API обучения не предназначен для работы с любой моделью, а оптимизирован для работы с моделями, предоставляемыми библиотекой. Для работы с общими циклами машинного обучения следует использовать другую библиотеку (возможно, Accelerate).
  • Несмотря на то, что мы стремимся представить как можно больше примеров использования, скрипты в нашей папке примеров являются именно примерами. Предполагается, что они не будут работать "из коробки" для решения вашей конкретной задачи, и вам придется изменить несколько строк кода, чтобы адаптировать их под свои нужды.

Установка

С помощью pip

Данный репозиторий протестирован на Python 3.8+, Flax 0.4.1+, PyTorch 1.11+ и TensorFlow 2.6+.

Устанавливать 🤗 Transformers следует в виртуальной среде. Если вы не знакомы с виртуальными средами Python, ознакомьтесь с руководством пользователя.

Сначала создайте виртуальную среду с той версией Python, которую вы собираетесь использовать, и активируйте ее.

Затем необходимо установить хотя бы один бекенд из Flax, PyTorch или TensorFlow. Пожалуйста, обратитесь к страницам TensorFlow установочная страница, PyTorch установочная страница и/или Flax и Jax, где описаны команды установки для вашей платформы.

После установки одного из этих бэкендов 🤗 Transformers может быть установлен с помощью pip следующим образом:

pip install transformers

Если вы хотите поиграть с примерами или вам нужен самый современный код и вы не можете ждать нового релиза, вы должны установить библиотеку из исходного кода.

С помощью conda

Установить Transformers с помощью conda можно следующим образом:

conda install conda-forge::transformers

ЗАМЕТКА: Установка transformers через канал huggingface устарела.

О том, как установить Flax, PyTorch или TensorFlow с помощью conda, читайте на страницах, посвященных их установке.

ЗАМЕТКА: В операционной системе Windows вам может быть предложено активировать режим разработчика, чтобы воспользоваться преимуществами кэширования. Если для вас это невозможно, сообщите нам об этом здесь.

Модельные архитектуры

Все контрольные точки моделей, предоставляемые 🤗 Transformers, беспрепятственно интегрируются с huggingface.co model hub, куда они загружаются непосредственно пользователями и организациями.

Текущее количество контрольных точек:

🤗 В настоящее время Transformers предоставляет следующие архитектуры: подробное описание каждой из них см. здесь.

Чтобы проверить, есть ли у каждой модели реализация на Flax, PyTorch или TensorFlow, или связанный с ней токенизатор, поддерживаемый библиотекой 🤗 Tokenizers, обратитесь к этой таблице.

Эти реализации были протестированы на нескольких наборах данных (см. примеры скриптов) и должны соответствовать производительности оригинальных реализаций. Более подробную информацию о производительности можно найти в разделе "Примеры" документации.

Изучи больше

Секция Описание
Документация Полная документация по API и гайды
Краткие описания задач Задачи поддерживаются 🤗 Transformers
Пособие по предварительной обработке Использование класса Tokenizer для подготовки данных для моделей
Обучение и доработка Использование моделей, предоставляемых 🤗 Transformers, в цикле обучения PyTorch/TensorFlow и API Trainer.
Быстрый тур: Тонкая настройка/скрипты использования Примеры скриптов для тонкой настройки моделей на широком спектре задач
Совместное использование и загрузка моделей Загружайте и делитесь с сообществом своими доработанными моделями

Цитирование

Теперь у нас есть статья, которую можно цитировать для библиотеки 🤗 Transformers:

@inproceedings{wolf-etal-2020-transformers,
    title = "Transformers: State-of-the-Art Natural Language Processing",
    author = "Thomas Wolf and Lysandre Debut and Victor Sanh and Julien Chaumond and Clement Delangue and Anthony Moi and Pierric Cistac and Tim Rault and Rémi Louf and Morgan Funtowicz and Joe Davison and Sam Shleifer and Patrick von Platen and Clara Ma and Yacine Jernite and Julien Plu and Canwen Xu and Teven Le Scao and Sylvain Gugger and Mariama Drame and Quentin Lhoest and Alexander M. Rush",
    booktitle = "Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing: System Demonstrations",
    month = oct,
    year = "2020",
    address = "Online",
    publisher = "Association for Computational Linguistics",
    url = "https://www.aclweb.org/anthology/2020.emnlp-demos.6",
    pages = "38--45"
}