Transformers documentation

Философия

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Философия

Transformers — это библиотека, в которой PyTorch является основным фреймворком. Она предоставляет модели, которые точно соответствуют их научным статьям, просты в использовании и легко модифицируются.

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

Наша философия развивается через практику. Ниже приведены наши актуальные, устойчивые принципы.

Для кого предназначена эта библиотека

  • Исследователи и преподаватели, изучающие или расширяющие архитектуры моделей.
  • Практики, которые выполняют дообучение, оценку или развёртывание моделей.
  • Инженерам, которым нужна предобученная модель, которая «просто работает» с предсказуемым API.

Чего можно ожидать

  • Для каждой модели требуются три основных класса: конфигурация, модели и класс предобработки. Токенайзеры обрабатывают NLP, процессоры изображений — изображения, процессоры видео — видео, экстракторы признаков — аудио, а процессоры — мультимодальные входные данные.

  • Все эти классы можно инициализировать простым и унифицированным образом из предобученных экземпляров с помощью общего метода from_pretrained(), который при необходимости скачивает, кэширует и загружает соответствующий экземпляр класса и связанные с ним данные (гиперпараметры конфигураций, словарь токенизаторов, параметры процессоров и веса моделей) из предобученной контрольной точки, предоставленной на Hugging Face Hub, или из вашей собственной сохранённой контрольной точки.

  • Помимо этих трёх базовых классов, библиотека предоставляет два API: pipeline() для быстрого использования модели для инференса по конкретной задаче и Trainer для быстрой тренировки или дообучения модели PyTorch.

Основные принципы

Следующие принципы сформировались со временем и подробно описаны в нашей новой статье о философии в блоге. Они направляют решения сопровождающих при рассмотрении PR и вклада.

  • Источник истины. Реализации должны точно соответствовать официальным результатам и предполагаемому поведению.
  • Одна модель, один файл. Основная логика инференса и обучения видна сверху донизу в файле модели, который читают пользователи.
  • Код — это продукт. Оптимизируйте его для чтения и сравнения версий. Предпочитайте явные имена хитрой косвенности.
  • Стандартизируйте, а не абстрагируйте. Специфичное для модели поведение оставляйте в модели. Общие интерфейсы используйте только для универсальной инфраструктуры.
  • DRY* (Повторяйте, когда это помогает пользователям). Файлы моделей для конечных пользователей остаются самодостаточными. Инфраструктура вынесена в отдельный модуль.
  • Минимальный пользовательский API. Небольшое количество кодовых путей, предсказуемые именованные аргументы, стабильные методы.
  • Обратная совместимость. Публичные интерфейсы не должны ломаться. Старые артефакты Hub должны продолжать работать.
  • Единый публичный интерфейс. Именование, выходные данные и необязательная диагностика согласованы и протестированы.

Основные классы

  • Классы конфигурации хранят гиперпараметры, необходимые для построения модели. К ним относятся количество слоёв и размер скрытого слоя. Вам не всегда нужно создавать эти объекты самостоятельно. При использовании предобученной модели без изменений создание модели автоматически инициализирует конфигурацию.

  • Классы моделей — это модели PyTorch (torch.nn.Module), обёрнутые как минимум в PreTrainedModel.

  • Модульные трансформеры. Вкладчики пишут небольшой фрагмент modular_*.py, в котором объявляется переиспользование существующих компонентов. Библиотека автоматически раскрывает его в видимый пользователю файл modeling_*.py, который пользователи читают и отлаживают. Поддерживающие команды проверяют фрагмент, а пользователи дорабатывают раскрытый файл. Это сохраняет принцип «одна модель — один файл» без расхождения шаблонов. Подробности — в документации по внесению вкладов.

  • Классы предобработки преобразуют исходные данные в формат, который принимает модель. Токенизатор хранит словарь для каждой модели и предоставляет методы для кодирования и декодирования строк в список индексов эмбеддингов токенов. Процессоры изображений предобрабатывают входные данные для зрительных моделей, видео-процессоры — входные данные для видео, извлекатели признаков — входные данные для аудио, а процессоры — мультимодальные входные данные.

Все эти классы можно создать из предобученных экземпляров, сохранить локально и опубликовать на Hub с помощью трех методов:

  • from_pretrained() позволяет создать экземпляр модели, конфигурации и класса предобработки на основе предобученной версии, предоставляемой самой библиотекой (список поддерживаемых моделей доступен в Model Hub) или сохранённой пользователем локально (или на сервере).
  • save_pretrained() позволяет сохранить модель, конфигурацию и класс предобработки локально, чтобы их можно было загрузить с помощью from_pretrained().
  • push_to_hub() позволяет опубликовать модель, конфигурацию и класс предобработки в Hub, чтобы они были легко доступны всем.
Update on GitHub