Отладка обучения: проверяем данные

Урок 88 из 104 курса «HuggingFace: курс по Transformers»: официальный курс Hugging Face Learn (Хаггинг Фейс) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Вы написали прекрасный сценарий для обучения или дообучения модели на заданной задаче, послушно следуя советам из Главы 7. Но когда вы запускаете команду model.fit(), происходит нечто ужасное: вы получаете ошибку 😱! Или, что еще хуже, все вроде бы хорошо, обучение проходит без ошибок, но результирующая модель получается плохой. В этом разделе мы покажем вам, что можно сделать для отладки подобных проблем. Проблема, когда вы сталкиваетесь с ошибкой в trainer.train(), заключается в том, что она может возникнуть из нескольких источников, поскольку Trainer обычно собирает вместе множество вещей. Он преобразует наборы данных в загрузчики данных, поэтому проблема может заключаться в том, что в вашем наборе данных что-то не так, или в том, что вы пытаетесь объединить элементы наборов данных в батч. Затем он берет батч данных и подает его в модель, так что проблема может быть в коде модели. После этого вычисляются градиенты и выполняется этап оптимизации, так что проблема может быть и в вашем оптимизаторе. И даже если во время обучения все идет хорошо, во время валидации все равно что-то может пойти не так, если проблема в метрике. Лучший способ отладить ошибку, возникшую в trainer.train(), - это вручную пройти весь пайплайн и посмотреть, где все пошло не так. В этом случае ошибку часто очень легко устранить. Чтобы продемонстрировать это, мы используем следующий скрипт, который (пытается) точно настроить модель DistilBERT на наборе данных MNLI dataset: Если вы попытаетесь выполнить его, то столкнетесь с довольно загадочной ошибкой: Это может быть очевидно, но если ваши данные повреждены, Trainer не сможет сформировать батчи, не говоря уже об обучении вашей модели. Поэтому прежде всего необходимо посмотреть, что находится в вашем обучающем наборе. Чтобы избежать бесчисленных часов, потраченных на попытки исправить то, что не является источником ошибки, мы рекомендуем использовать trainer.train_dataset для проверок и ничего больше.

План урока

  1. Отладка обучающего пайплайна
  2. Проверка данных
  3. От датасетов к загрузчикам данных
  4. Проверьте данные
  5. Выполнение одного шага оптиимзации
  6. Как справиться с ошибками нехватки памяти
  7. Валидация модели
  8. Отладка скрытых ошибок во время обучения

Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.

Полезные гиды