
Добро пожаловать в библиотеку Transfer NLP, структуру, построенную на вершине Pytorch для стимулирования воспроизводимых экспериментов и обучения передачи в NLP
Вы можете иметь обзор высокоуровневого API на этой ноутбуке Colab, который показывает, как использовать структуру на нескольких примерах. Все примеры на основе DL на этих ноутбуках внедряют мониторинг тренировок в рамках тенсорных досок!
Для примера предварительно обученной модели «Производительность» мы предоставляем короткое исполняемое учебное пособие по BertClassifier Penetuning на этой ноутбуке Colab
mkvirtualenv transfernlp
workon transfernlp
git clone https://github.com/feedly/transfer-nlp.git
cd transfer-nlp
pip install -r requirements.txt
Чтобы использовать Transfer NLP в качестве библиотеки:
# to install the experiment builder only
pip install transfernlp
# to install Transfer NLP with PyTorch and Transfer Learning in NLP support
pip install transfernlp[torch]
или
pip install git+https://github.com/feedly/transfer-nlp.git
Чтобы получить последнее состояние перед новыми выпусками.
Для использования трансферного NLP с соответствующими примерами:
git clone https://github.com/feedly/transfer-nlp.git
pip install -r requirements.txt
Документация API и обзор библиотеки можно найти здесь
Ядро библиотеки сделана из строителя эксперимента: вы определяете различные объекты, которые нуждаются в вашем эксперименте, и загружатель конфигурации создает их хорошим образом. Для воспроизводимых исследований и простых исследований абляции библиотека тогда обеспечивает использование файлов конфигурации для экспериментов. Поскольку у людей есть разные вкусы для того, что представляет собой хороший файл эксперимента, библиотека позволяет проводить эксперименты, определенные в нескольких форматах:
В Transfer-NLP файл конфигурации эксперимента содержит всю необходимую информацию, чтобы полностью определить эксперимент. Здесь вы будете вставлять имена различных компонентов, которые будет использовать ваш эксперимент, вместе с гиперпараметрами, которые вы хотите использовать. Transfer-NLP использует инверсию шаблона управления, что позволяет вам определить любой класс / метод / функция, которая вам может понадобиться, класс ExperimentConfig создаст Dictannary и соответствующим образом установить ваши объекты.
Чтобы использовать свои собственные классы внутри Transfer-NLP, вам нужно зарегистрировать их, используя декоратор @register_plugin . Вместо использования различного реестра для каждого вида компонента (модели, загрузчики данных, векторизаторы, оптимизаторы, ...), здесь используется только один реестр, чтобы обеспечить общую настройку.
Если вы используете Transfer NLP только в качестве зависимости DEV, вы можете использовать его только декларативно и вызовать register_plugin() на объектах, которые вы хотите использовать в экспериментальное время выполнения.
Вот пример того, как вы можете определить эксперимент в файле YAML:
data_loader:
_name: MyDataLoader
data_parameter: foo
data_vectorizer:
_name: MyVectorizer
vectorizer_parameter: bar
model:
_name: MyModel
model_hyper_param: 100
data: $data_loader
trainer:
_name: MyTrainer
model: $model
data: $data_loader
loss:
_name: PyTorchLoss
tensorboard_logs: $HOME/path/to/tensorboard/logs
metrics:
accuracy:
_name: Accuracy
Любой объект может быть определен с помощью класса, метода или функции с учетом параметров _name , за которыми следуют его собственные параметры. Затем эксперименты загружаются и создаются с использованием ExperimentConfig(experiment=experiment_path_or_dict)
Некоторые соображения:
Параметры по умолчанию можно пропустить в файле эксперимента.
Если объект используется в разных местах, вы можете обратиться к нему, используя символ $ , например, здесь объект trainer использует data_loader созданный в другом месте. Заказ объектов не требуется.
Для пути вы можете использовать переменные среды, чтобы другие машины также могли проводить ваши эксперименты. В предыдущем примере вы запустите EG ExperimentConfig(experiment=yaml_path, HOME=Path.home()) чтобы создать эксперимент и заменить $HOME на свой дом на машине.
Config Constantiation позволяет создавать любые сложные настройки с вложенным DICT / List
Вы можете взглянуть на тесты на примеры настройки эксперимента, которые может создать загрузчик конфигурации. Кроме того, мы проводим эксперименты в experiments/ .
Для экспериментов по глубокому обучению мы предоставляем BaseIgniteTrainer в transfer_nlp.plugins.trainers.py . Этот базовый тренер возьмет модель и некоторые данные в качестве ввода, и запустит целый тренировочный трубопровод. Мы используем библиотеку Pytorch-ININITE для мониторинга событий во время обучения (регистрируя некоторые показатели, манипулируя скоростями обучения, моделями контрольной точки и т. Д.). Журналы Tensorboard также включены в качестве опции, вам придется указать простые параметры tensorboard_logs в файле конфигурации. Затем просто запустите tensorboard --logdir=path/to/logs в терминале, и вы можете отслеживать свой эксперимент во время обучения! Tensorboard поставляется с очень хорошими утилитами, чтобы отслеживать нормы весов вашей модели, гистограмм, распределений, визуализации встраиваний и т. Д., Поэтому мы действительно рекомендуем использовать его.

Мы предоставляем класс SingleTaskTrainer , который вы можете использовать для любого контролируемого настройки, связанной с одной задачей. Мы работаем над классом MultiTaskTrainer , чтобы справиться с настройками с несколькими задачами, и SingleTaskFineTuner для настройки создания больших моделей.
Вот несколько вариантов использования для передачи NLP:
ExperimentRunner позволяет последовательно запускать ваши наборы экспериментов и генерирует персонализированную отчетность (вам нужно только реализовать метод report в пользовательском классе ReporterABC ))Module Pytorch и позволить тренерам справиться с учебной частью (все еще контролируя большинство параметров обучения через файл эксперимента)При экспериментировании с вашими собственными моделями / данными, обучение может занять некоторое время. Чтобы получить уведомление, когда ваше обучение заканчивается или сбои, вы можете использовать простой библиотеку, которые люди из HuggingFace, которые добавляют простой декоратор в вашу функцию бега, чтобы уведомить вас через Slack, электронную почту и т. Д.
Библиотека была вдохновлена чтением «Обработка естественного языка с питорхом» Делип Рао и Брайана МакМахана. Эксперименты в experiments , словарной строительном блоке и ближайших соседях встраиваются или адаптируются из кода, представленного в книге.