Введение | Установка | Начать | Документация | Сообщество | Лицензия | Ссылаясь на Торчтюна
Важный
Обновление от 25 сентября 2024 г.: torchtune поддерживает модели Llama 3.2 11B Vision , Llama 3.2 3B и Llama 3.2 1B ! Опробуйте их, следуя нашим инструкциям по установке здесь, а затем запустите любую текстовую конфигурацию здесь или конфигурацию зрения здесь.
torchtune — это библиотека PyTorch для удобной разработки, точной настройки и экспериментов с LLM.
Торчтун обеспечивает:
Реализации PyTorch популярных LLM из семейств моделей Llama, Gemma, Mistral, Phi и Qwen.
Взламываемые рецепты обучения для полной настройки, LoRA, QLoRA, DPO, PPO, QAT, дистилляции знаний и многого другого.
Готовая эффективность использования памяти, повышение производительности и масштабирование с помощью новейших API PyTorch.
Конфигурации YAML для простой настройки рецептов обучения, оценки, квантования или вывода.
Встроенная поддержка многих популярных форматов наборов данных и шаблонов подсказок.
torchtune в настоящее время поддерживает следующие модели.
Модель | Размеры |
---|---|
Лама3.2-Видение | 11Б [модели, конфиги] |
Лама3.2 | 1Б, 3Б [модели, конфиги] |
Лама3.1 | 8Б, 70Б, 405Б [модели, конфиги] |
Лама3 | 8Б, 70Б [модели, конфиги] |
Лама2 | 7Б, 13Б, 70Б [модели, конфиги] |
Код-Лама2 | 7Б, 13Б, 70Б [модели, конфиги] |
Мистраль | 7Б [модели, конфиги] |
Джемма | 2Б, 7Б [модели, конфиги] |
Майкрософт Фи3 | Мини [модели, конфиги] |
Квен2 | 0.5Б, 1.5Б, 7Б [модели, конфиги] |
Мы постоянно добавляем новые модели, но не стесняйтесь сообщать о проблеме, если есть новая модель, которую вы хотели бы видеть в torchtune.
torchtune предоставляет следующие рецепты точной настройки для обучения на одном или нескольких устройствах.
Метод точной настройки | Устройства | Рецепт | Пример конфигурации(ов) |
---|---|---|---|
Полная точная настройка | 1-8 | full_finetune_single_device full_finetune_distributed | Llama3.1 8B одноустройство Лама 3.1 70Б распространена |
Точная настройка LoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Qwen2 0.5B для одного устройства Джемма 7B распространена |
Тонкая настройка QLoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Phi3 Mini для одного устройства Лама 3.1 405B распространена |
Тонкая настройка DoRA/QDoRA | 1-8 | lora_finetune_single_device lora_finetune_distributed | Llama3 8B QDoRA одноустройство Llama3 8B DoRA распространена |
Обучение с учетом квантования | 4-8 | qat_distributed | Лама3 8Б КАТ |
Прямая оптимизация предпочтений | 1-8 | lora_dpo_single_device lora_dpo_distributed | Llama2 7B одноустройство Лама2 7Б распределена |
Оптимизация проксимальной политики | 1 | ppo_full_finetune_single_device | Мистраль 7Б |
Дистилляция знаний | 1 | Knowledge_distillation_single_device | Квен2 1,5Б -> 0,5Б |
Приведенные выше конфигурации — это всего лишь примеры для начала. Если вы видите модель выше, не указанную здесь, скорее всего, мы все еще поддерживаем ее. Если вы не уверены, поддерживается ли что-либо, откройте вопрос в репозитории.
Ниже приведен пример требований к памяти и скорости обучения для разных моделей Llama 3.1.
Примечание
Для простоты сравнения все приведенные ниже числа указаны для размера пакета 2 (без накопления градиента), набора данных, упакованного до длины последовательности 2048, и включенной факельной компиляции.
Если вы заинтересованы в работе на другом оборудовании или на разных моделях, ознакомьтесь с нашей документацией по оптимизации памяти здесь, чтобы найти подходящую настройку для вас.
Модель | Метод точной настройки | Работоспособность включена | Пиковая память на графический процессор | Токенов/сек * |
---|---|---|---|---|
Лама 3.1 8Б | Полная тонкая настройка | 1x 4090 | 18,9 ГиБ | 1650 г. |
Лама 3.1 8Б | Полная тонкая настройка | 1x А6000 | 37,4 ГиБ | 2579 |
Лама 3.1 8Б | ЛоРА | 1x 4090 | 16,2 ГиБ | 3083 |
Лама 3.1 8Б | ЛоРА | 1x А6000 | 30,3 ГиБ | 4699 |
Лама 3.1 8Б | QLoRA | 1x 4090 | 7,4 ГиБ | 2413 |
Лама 3.1 70Б | Полная тонкая настройка | 8x А100 | 13,9 ГиБ ** | 1568 |
Лама 3.1 70Б | ЛоРА | 8x А100 | 27,6 ГиБ | 3497 |
Лама 3.1 405Б | QLoRA | 8x А100 | 44,8 ГБ | 653 |
*= Измерено за одну полную эпоху обучения.
**= Использует разгрузку ЦП с помощью объединенного оптимизатора.
torchtune протестирован с последней стабильной версией PyTorch, а также с предварительной ночной версией. torchtune использует torchvision для точной настройки мультимодальных LLM и torchao для новейших методов квантования; вам также следует установить их.
# Установите стабильную версию PyTorch, torchvision, torchao стабильный релизspip install torch torchvision torchao pip установить torchtune
# Установите PyTorch, torchvision, torchao nightliespip install --pre --upgrade torch torchvision torchao --index-url https://download.pytorch.org/whl/nightly/cu121 # полные параметры: cpu/cu118/cu121/cu124pip install --pre --upgrade torchtune --extra-index-url https://download.pytorch.org/whl/nightly/cpu
Вы также можете ознакомиться с нашей документацией по установке для получения дополнительной информации, включая установку torchtune из исходного кода.
Чтобы убедиться, что пакет установлен правильно, вы можете запустить следующую команду:
настроить --help
И должен увидеть следующий вывод:
использование: настройка [-h] {ls,cp,download,run,validate} ... Добро пожаловать в интерфейс командной строки torchtune!Параметры: -h, --help показать это справочное сообщение и выйти...
Чтобы начать работу с torchtune, прочтите наше первое руководство по Finetune. Наше комплексное руководство по рабочему процессу покажет вам, как оценивать, квантовать и выполнять логические выводы с помощью модели Ламы. В оставшейся части этого раздела будет представлен краткий обзор этих шагов с помощью Llama3.1.
Следуйте инструкциям в официальном репозитории meta-llama
, чтобы убедиться, что у вас есть доступ к официальному весу модели ламы. После подтверждения доступа вы можете запустить следующую команду, чтобы загрузить веса на свой локальный компьютер. Также будет загружена модель токенизатора и руководство по ответственному использованию.
Чтобы скачать Llama3.1, вы можете запустить:
скачать мелодию мета-лама/Meta-Llama-3.1-8B-Instruct --output-dir /tmp/Meta-Llama-3.1-8B-Instruct --ignore-patterns "original/consolidated.00.pth" --hf-token
Кончик
Установите переменную среды HF_TOKEN
или передайте команде --hf-token
чтобы подтвердить ваш доступ. Вы можете найти свой токен по адресу https://huggingface.co/settings/tokens.
Вы можете точно настроить Llama3.1 8B с LoRA на одном графическом процессоре, используя следующую команду:
запуск настройки lora_finetune_single_device --config llama3_1/8B_lora_single_device
Для распределенного обучения Tune CLI интегрируется с torchrun. Чтобы выполнить полную настройку Llama3.1 8B на двух графических процессорах:
запуск настройки --nproc_per_node 2 full_finetune_distributed --config llama3_1/8B_full
Кончик
Обязательно помещайте все команды torchrun перед спецификацией рецепта. Любые аргументы CLI после этого будут переопределять конфигурацию и не влиять на распределенное обучение.
Есть два способа изменения конфигов:
Переопределения конфигурации
Вы можете напрямую перезаписать поля конфигурации из командной строки:
настроить запуск lora_finetune_single_device --config llama2/7B_lora_single_device пакетный_размер=8 Enable_activation_checkpointing = Истина max_steps_per_epoch=128
Обновить локальную копию
Вы также можете скопировать конфигурацию в свой локальный каталог и изменить содержимое напрямую:
настройка cp llama3_1/8B_full ./my_custom_config.yaml Скопировано в ./my_custom_config.yaml.
Затем вы можете запустить свой собственный рецепт, направив команду tune run
в свои локальные файлы:
запуск настройки full_finetune_distributed --config ./my_custom_config.yaml
Проверьте tune --help
для всех возможных команд и опций CLI. Для получения дополнительной информации об использовании и обновлении конфигураций ознакомьтесь с нашим подробным описанием конфигурации.
torchtune поддерживает точную настройку различных наборов данных, включая стиль инструкций, стиль чата, наборы данных предпочтений и многое другое. Если вы хотите узнать больше о том, как применять эти компоненты для точной настройки вашего собственного набора данных, ознакомьтесь с предоставленными ссылками и нашей документацией по API.
torchtune ориентирован на интеграцию с популярными инструментами и библиотеками экосистемы. Это всего лишь несколько примеров, другие находятся в стадии разработки:
Hugging Face Hub для доступа к весу модели
LM Eval Harness от EleutherAI для оценки обученных моделей
Наборы данных Hugging Face для доступа к наборам обучающих и оценочных данных.
PyTorch FSDP2 для распределенного обучения
torchao для dtypes с более низкой точностью и методов квантования после обучения
Веса и смещения для регистрации показателей и контрольных точек, а также отслеживания прогресса обучения.
Comet как еще один вариант логирования
ExecuTorch для вывода на устройстве с использованием точно настроенных моделей
биты и байты для оптимизаторов малой памяти для наших рецептов для одного устройства
PEFT для дальнейшей точной настройки или вывода моделей torchtune в экосистеме Hugging Face.
Мы действительно ценим наше сообщество и вклад наших замечательных пользователей. Мы будем использовать этот раздел, чтобы выделить некоторые из этих вкладов. Если вы тоже хотите помочь, ознакомьтесь с руководством «ВКЛАД».
@SalmanMohammadi за добавление комплексного комплексного рецепта точной настройки обучения с подкреплением на основе обратной связи с человеком (RLHF) с помощью PPO для torchtune.
@fyabc за добавление моделей Qwen2, токенизатора и интеграции рецептов в torchtune.
@solitude-alive за добавление модели Gemma 2B в torchtune, включая изменения рецептов, числовые проверки моделей и правильность рецептов.
@yechenzhi за добавление оптимизации прямых предпочтений (DPO) в torchtune, включая рецепт и конфигурацию, а также проверку правильности.
Код Llama2 в этом репозитории создан на основе исходного кода Llama2.
Мы хотим выразить огромную благодарность EleutherAI, Hugging Face и Weights & Biases за замечательную совместную работу и за работу с нами над некоторыми из этих интеграций в torchtune.
Мы также хотим отметить несколько замечательных библиотек и инструментов из экосистемы:
gpt-fast для высокопроизводительных методов вывода LLM, которые мы внедрили в готовом виде.
рецепты ламы для развития сообщества llama2
биты и байты для внедрения нескольких методов, основанных на памяти и производительности, в экосистему PyTorch.
@winglian и axolotl за ранние отзывы и мозговой штурм по дизайну и набору функций torchtune.
lit-gpt за продвижение вперед сообщества специалистов по тонкой настройке LLM.
HF TRL за то, чтобы сделать моделирование вознаграждений более доступным для сообщества PyTorch.
torchtune выпускается под лицензией BSD 3. Однако у вас могут быть другие юридические обязательства, регулирующие использование вами другого контента, например условия обслуживания для сторонних моделей.
Если вы найдете библиотеку torchtune полезной, пожалуйста, укажите ее в своей работе, как показано ниже.
@software{torchtune, title = {torchtune: библиотека тонкой настройки PyTorch}, автор = {сопровождающие и участники torchtune}, url = {https//github.com/pytorch/torchtune}, лицензия = {BSD-3-Clause}, месяц = апрель, год = {2024}}