Подготовка моделей с AutoModel и Accelerator

Эффективное обучение моделей ИИ с PyTorch

Dennis Lee

Data Engineer, Amazon

Знакомство с преподавателем!

$$

  • Дата-инженер

Фотография преподавателя

Иконка сервера

Эффективное обучение моделей ИИ с PyTorch

Знакомство с преподавателем!

$$

  • Дата-инженер
  • Специалист по данным

Фотография преподавателя

Иконки сервера и лампочки

Эффективное обучение моделей ИИ с PyTorch

Знакомство с преподавателем!

$$

  • Дата-инженер
  • Специалист по данным
  • Кандидат наук в области электротехники

Фотография преподавателя

Иконки сервера, лампочки и академической шапки

Эффективное обучение моделей ИИ с PyTorch

Знакомство с преподавателем!

$$

  • Дата-инженер
  • Специалист по данным
  • Кандидат наук в области электротехники

Фотография преподавателя

Иконки сервера, лампочки и академической шапки

$$

$$

$$

Рад поделиться лучшими практиками!

Эффективное обучение моделей ИИ с PyTorch

План эффективного обучения ИИ

  • Распределённое обучение ИИ-моделей

Ноутбук

Эффективное обучение моделей ИИ с PyTorch

План эффективного обучения ИИ

  • Распределённое обучение ИИ-моделей

Ноутбук и ожидающий человек

Эффективное обучение моделей ИИ с PyTorch

План эффективного обучения ИИ

  • Распределённое обучение ИИ-моделей

Ноутбук, ожидающий человек и микросхема памяти

  • ↓ ↓ Время обучения больших языковых моделей

Календарь

Эффективное обучение моделей ИИ с PyTorch

План эффективного обучения ИИ

Блок-схема тем курса: подготовка данных, распределённое обучение, эффективное обучение и оптимизаторы.

$$

  • Подготовка данных: размещение данных на нескольких устройствах
Эффективное обучение моделей ИИ с PyTorch

План эффективного обучения ИИ

Блок-схема тем курса: подготовка данных, распределённое обучение, эффективное обучение и оптимизаторы.

$$

  • Подготовка данных: размещение данных на нескольких устройствах
  • Распределённое обучение: масштабирование на несколько устройств
Эффективное обучение моделей ИИ с PyTorch

План эффективного обучения ИИ

Блок-схема тем курса: подготовка данных, распределённое обучение, эффективное обучение и оптимизаторы.

$$

  • Подготовка данных: размещение данных на нескольких устройствах
  • Распределённое обучение: масштабирование на несколько устройств
  • Эффективное обучение: оптимизация доступных устройств
Эффективное обучение моделей ИИ с PyTorch

План эффективного обучения ИИ

Блок-схема тем курса: подготовка данных, распределённое обучение, эффективное обучение и оптимизаторы.

$$

  • Подготовка данных: размещение данных на нескольких устройствах
  • Распределённое обучение: масштабирование на несколько устройств
  • Эффективное обучение: оптимизация доступных устройств
  • Оптимизаторы: ускорение обучения
Эффективное обучение моделей ИИ с PyTorch

CPU

  • Большинство ноутбуков используют CPU

         

Ноутбук с CPU

GPU

  • GPU позволяют обучать большие модели

         

Ноутбук с GPU

Эффективное обучение моделей ИИ с PyTorch

CPU и GPU

CPU

  • Большинство ноутбуков используют CPU
  • Предназначены для задач общего назначения
  • Лучшее управление потоком выполнения

         

Ноутбук для повседневных задач

GPU

  • GPU позволяют обучать большие модели
  • Специализируются на параллельных вычислениях
  • Оптимизированы для матричных операций

         

Ноутбук для параллельных вычислений

Эффективное обучение моделей ИИ с PyTorch

Распределённое обучение

Схема распределённого обучения: репликация модели и шардинг данных.

  • Шардинг данных: каждое устройство параллельно обрабатывает подмножество данных
Эффективное обучение моделей ИИ с PyTorch

Распределённое обучение

Схема распределённого обучения: репликация модели и шардинг данных.

  • Шардинг данных: каждое устройство параллельно обрабатывает подмножество данных
  • Репликация модели: каждое устройство выполняет прямой/обратный проход
  • Агрегация градиентов: выделенное устройство агрегирует градиенты
  • Синхронизация параметров: выделенное устройство распространяет обновлённые параметры
Эффективное обучение моделей ИИ с PyTorch

Эффективность без усилий: использование предобученных моделей

  • Использование предобученных моделей Transformer
  • Инициализация параметров модели с помощью AutoModelForSequenceClassification
  • Вывод конфигурации
from transformers import AutoModelForSequenceClassification
model = AutoModelForSequenceClassification.from_pretrained(model_name)

print(model.config)
DistilBertConfig {
  "architectures": ["DistilBertForMaskedLM"],
  "dim": 768,
  "dropout": 0.1,
  "hidden_dim": 3072,
  ...
Эффективное обучение моделей ИИ с PyTorch

Размещение на устройствах с Accelerator

  • Класс Hugging Face 🤗
  • Accelerator определяет доступные на компьютере устройства
  • Автоматизация размещения данных и параллелизма: accelerator.prepare()
  • Размещает модель (типа torch.nn.Module) на первом доступном GPU
  • По умолчанию использует CPU, если GPU не найден
from accelerate import Accelerator
accelerator = Accelerator()
model = accelerator.prepare(model)

print(accelerator.device)
cpu
Эффективное обучение моделей ИИ с PyTorch

Давайте попрактикуемся!

Эффективное обучение моделей ИИ с PyTorch

Preparing Video For Download...