Легко настраивайте LLaMA-3 на ваши данные с помощью Unslot

Легко настраивайте LLaMA-3 на ваши данные с помощью Unslot, мощного инструмента, который обещает до 30-кратного ускорения обучения. Узнайте, как настроить, оптимизировать и сохранить вашу настроенную модель для бесшовного вывода на различных платформах. Раскройте полный потенциал LLaMA-3 для вашего конкретного варианта использования.

14 февраля 2025 г.

party-gif

Настройте LLAMA-3, мощную открытую языковую модель, на своих собственных данных с легкостью, используя оптимизированный пакет Unslot. Раскройте полный потенциал этой модели ИИ и адаптируйте ее к своим конкретным потребностям, без хлопот со сложной настройкой или ресурсоемким обучением.

Тонкая настройка LLAMA-3 с помощью Unslot: мощный и эффективный подход

Unslot - это потрясающий инструмент, который позволяет вам эффективно настраивать модель LLAMA-3 на вашем собственном наборе данных. Вот пошаговое руководство о том, как это сделать:

  1. Установите необходимые пакеты: Начните с клонирования репозитория Unslot GitHub и установки необходимых пакетов в соответствии с вашей конфигурацией оборудования.

  2. Настройте параметры обучения: Определите ваши параметры обучения, такие как максимальная длина последовательности, типы данных и метод квантования. Unslot использует адаптеры Lora для эффективной настройки.

  3. Отформатируйте ваши тренировочные данные: Убедитесь, что ваши данные структурированы в требуемом формате, с колонками для инструкции, ввода и вывода. Unslot предоставляет примеры с использованием набора данных Alpaca, но вы можете адаптировать его под свои данные.

  4. Настройте тренировщик SFT: Создайте объект тренировщика SFT (Supervised Fine-Tuning) из библиотеки Hugging Face Transformers, указав модель, токенизатор, набор данных и другие параметры обучения.

  5. Обучите модель: Вызовите функцию train() на объекте тренировщика SFT, чтобы начать процесс настройки. Оптимизированное использование памяти и скорость Unslot обеспечивают эффективное обучение даже на ограниченных ресурсах GPU.

  6. Выполните вывод: После обучения вы можете использовать специфичный для Unslot класс FastLanguageModel для генерации ответов из вашей настроенной модели. Unslot также предоставляет возможности для сохранения модели и загрузки адаптеров Lora для дальнейшего использования.

  7. Изучите дополнительные функции: Unslot предлагает расширенные функции, такие как возможность использования модели с другими фреймворками, как PyTorch Lightning, и опция преобразования модели в формат GGML для использования с LLAMA-CPP или GoLLAMA.

Подход Unslot к настройке LLAMA-3 является высокоэффективным, используя оптимизированное использование памяти и скорость. Он предоставляет удобное и всеобъемлющее решение, делая его отличным выбором для настройки больших языковых моделей на ваших собственных данных.

Настройка параметров обучения

Прежде всего, нам нужно импортировать необходимые классы из библиотеки unslot:

from unslot.models.fast_language_model import FastLanguageModel

Затем мы настраиваем параметры обучения:

  • max_sequence_length: Максимальная длина последовательности для ввода. Мы устанавливаем его на 248 токенов, так как используемый нами набор данных имеет относительно короткий текст.
  • data_type: Мы используем 4-битное квантование для эффективного обучения.
max_sequence_length = 248
data_type = "4bit"

Unslot использует адаптеры Lora для обеспечения эффективной настройки. Есть два варианта:

  1. Использовать предварительно загруженную модель из репозитория Unslot Hugging Face, в которой уже объединены адаптеры Lora.
  2. Использовать модель из репозитория Hugging Face и добавить адаптеры Lora самостоятельно.

В этом случае мы будем использовать предварительно загруженную модель, поэтому нам не нужно выполнять никаких дополнительных шагов.

model = FastLanguageModel.from_pretrained("unslot/alpaca-7b")

Если вам нужно использовать другую модель и добавить адаптеры Lora самостоятельно, вы можете раскомментировать следующий раздел и предоставить необходимые параметры.

# model_id = "your-hugging-face-model-id"
# model = FastLanguageModel.from_pretrained(model_id)
# model.add_lora_adapters()

Теперь мы готовы перейти к следующему шагу: форматированию тренировочных данных.

Подготовка данных для тонкой настройки

Чтобы настроить модель Lama 3 с помощью Unslot, вам необходимо отформатировать ваши тренировочные данные определенным образом. Набор данных, используемый в примере, имеет три столбца: инструкция, ввод и вывод.

Столбец инструкции содержит описание задачи, которую должна выполнить модель. Столбец ввода предоставляет дополнительный контекст для задачи, а столбец вывода содержит ожидаемый ответ модели.

При форматировании ваших собственных данных убедитесь, что они структурированы таким же образом, с колонками для инструкции, ввода и вывода. Если для конкретного примера отсутствует ввод, это нормально, так как одной инструкции может быть достаточно для того, чтобы модель сгенерировала вывод.

После загрузки данных вам необходимо преобразовать три столбца в один текстовый ряд, который следует определенному формату. Этот формат включает специальные токены для инструкции, ввода и ответа. Код в примере демонстрирует, как выполнить это преобразование, создавая единственный столбец, который можно использовать для обучения модели.

Следует отметить, что, хотя пример использует стандартный набор данных Alpaca, вы также можете структурировать свои данные с использованием других шаблонов подсказок, таких как формат ChatML, введенный OpenAI. Просто убедитесь, что вы правильно отформатировали свои примеры ввода, так как они будут подаваться в языковую модель во время обучения.

Обучение модели с помощью тренера Unslot для контролируемой тонкой настройки

Прежде всего, нам нужно настроить параметры обучения. Мы импортируем класс FastLanguageModel из Unslot и определим максимальную длину последовательности, типы данных и метод квантования.

Затем мы рассмотрим случай, когда нам нужно добавить адаптеры Lora к модели. Если мы используем модель из репозитория Hugging Face, нам может потребоваться предоставить токен для принятия условий обслуживания.

Теперь нам нужно отформатировать тренировочные данные. Набор данных должен иметь три столбца: инструкция, ввод и вывод. Мы загрузим данные из Hugging Face и сопоставим их с этим форматом.

Затем мы настроим тренировщик Supervised Fine-Tuning из библиотеки Hugging Face Transformers. Этот тренировщик примет объект модели, токенизатор, набор данных и другие параметры, такие как оптимизатор, расписание скорости обучения и выходной каталог.

Наконец, мы вызовем функцию train() на объекте тренировщика. Мы будем наблюдать, как уменьшается потеря при обучении, что указывает на то, что модель обучается. Обратите внимание, что мы запускаем только небольшую часть данных в этом примере, но вам нужно будет запустить его как минимум на одну эпоху или две, чтобы получить лучшие результаты.

После обучения мы можем сохранить модель и загрузить адаптеры Lora для вывода. Unslot также предоставляет возможности для использования модели с другими фреймворками, такими как PyTorch Lightning и TensorFlow.

Выполнение вывода с использованием модели с тонкой настройкой

Когда модель обучена, вы можете использовать ее для вывода. Unslot предоставляет простой интерфейс для этого:

  1. Импортируйте класс FastLanguageModel из Unslot.
  2. Предоставьте обученную модель и скажите ей выполнить вывод.
  3. Токенизируйте ввод, используя формат Alpaca (инструкция, ввод и ожидаемый вывод).
  4. Переместите входные данные на GPU, чтобы использовать доступные ресурсы.
  5. Вызовите функцию generate, предоставив токенизированные входные данные, максимальное количество генерируемых токенов и флаг использования кэширования.

Модель затем сгенерирует ответ на основе предоставленного ввода. Вы также можете использовать класс TextStreamer для потоковой передачи текстового ответа.

После обучения вы можете сохранить модель разными способами:

  • Отправьте модель в Hugging Face Hub, что сохранит адаптеры Lora отдельно.
  • Сохраните модель локально, снова сохранив адаптеры Lora отдельно.

Чтобы загрузить сохраненную модель для вывода, вы можете установить флаг для объединения адаптеров Lora с моделью.

Unslot также предоставляет альтернативные варианты для вывода, такие как использование класса AutoModelForCausalLM из библиотеки Hugging Face Transformers, который может быть медленнее, но позволяет использовать модель с другими инструментами, такими как LLaMA-CPP или GoLLaMA.

Сохранение и загрузка модели с тонкой настройкой

Когда модель обучена, вы можете сохранить ее различными способами, чтобы использовать ее для вывода позже. Unslot предоставляет несколько вариантов для сохранения и загрузки настроенной модели:

  1. Сохранение в Hugging Face Hub: Вы можете отправить настроенную модель в Hugging Face Hub, что позволит вам делиться ею и использовать ее с другими. Для этого вам нужно предоставить свой токен Hugging Face.
model.push_to_hub("your-model-name")
  1. Локальное сохранение: Вы также можете сохранить модель локально, что сохранит только адаптеры Lora, а не всю модель. Это позволит вам легко загружать адаптеры Lora и объединять их с базовой моделью позже.
model.save_pretrained("path/to/save/model")
  1. Загрузка сохраненных адаптеров Lora: Когда вы захотите использовать настроенную модель для вывода, вы можете загрузить сохраненные адаптеры Lora и объединить их с базовой моделью.
model = FastLLamaForCausalLM.from_pretrained("path/to/base/model")
model.load_adapter("path/to/saved/model")
  1. Преобразование в формат GGML: Unslot также предоставляет возможность преобразовать настроенную модель в формат GGML, который можно использовать с инструментами, такими как Llama-CPP или GoLlama. Это позволяет использовать модель в средах, работающих только на CPU.
model.save_pretrained("path/to/save/model", quantization_method="nf16")

Используя эти варианты, вы можете легко сохранять, загружать и использовать настроенную модель для различных случаев использования, включая развертывание в разных средах и распространение в сообществе.

Часто задаваемые вопросы