Дообучение на нескольких GPU

Урок 8 из 17 курса «Llama: начало работы»: официальный курс Llama Cookbook (Мета Лама) на русском языке. Урок входит в платный доступ; первые уроки курса бесплатно.

О чём урок

Этот рецепт покажет вам, как выполнить fine-tuning модели Meta Llama 3 для задачи суммаризации текста, используя набор данных samsum на нескольких GPU в рамках одного или нескольких узлов. Убедитесь, что вы установили пакет llama-cookbook (подробнее). Нам также понадобятся 2 пакета: PEFT для использования ресурсоэффективного fine-tuning. FSDP, который помогает нам распараллелить обучение на нескольких GPU. Подробнее. [!ПРИМЕЧАНИЕ] Пакет llama-cookbook установит версию PyTorch 2.0.1. Если вы хотите использовать FSDP с PEFT для multi GPU fine-tuning, пожалуйста, установите ночные сборки PyTorch (подробнее) Квантование INT8 в настоящее время не поддерживается в FSDP Получите доступ к машине с несколькими GPU (в данном случае мы тестировали с 4 A100 и A10s). Это было протестировано на 4 GPU H100. Multi-GPU на одном узле Multi-GPU на нескольких узлах Здесь мы используем скрипт slurm для планирования задачи с помощью slurm на нескольких узлах. Мы используем torchrun для запуска нескольких процессов для FSDP. Аргументы, используемые в команде выше: --enable_fsdp булевый флаг для включения FSDP в скрипте --use_peft булевый флаг для включения методов PEFT в скрипте --peft_method для указания метода PEFT, здесь мы используем lora, другие варианты: llama_adapter, prefix. Если вы заинтересованы в выполнении full parameter fine-tuning без использования методов PEFT, пожалуйста, используйте следующую команду. Убедитесь, что вы изменили nproc_per_node на количество доступных вам GPU. Это было протестировано с BF16 на 8xA100, 40GB GPU. Если вы выполняете full parameter fine-tuning на модели 70B, вы можете включить режим low_cpu_fsdp с помощью следующей команды. Эта опция загрузит модель только на rank0 перед перемещением модели на устройства для построения FSDP. Это может значительно сэкономить оперативную память при загрузке больших моделей, таких как 70B (на узле с 8 GPU это сокращает объем оперативной памяти с более чем 2 ТБ до 280 ГБ для модели 70B). Это было протестировано с BF16 на 16xA100, 80GB GPU.

План урока

  1. Требования
  2. Как запустить
  3. С FSDP + QLORA
  4. С FSDP + PEFT
  5. Только с FSDP
  6. Использование меньшего объема оперативной памяти (FSDP на модели 70B)
  7. Запуск с различными наборами данных
  8. [СОВЕТ] Медленное межсоединение между узлами?

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

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