Загрузка наборов данных в Hugging Face: пошаговое руководство для бизнеса

Загрузка наборов данных на Hugging Face: пошаговое руководство

Часть 1: Загрузка набора данных на Hugging Face Hub

Введение

В этой части руководства мы рассмотрим процесс загрузки пользовательского набора данных на Hugging Face Hub, платформу для обмена и совместной работы с наборами данных и моделями.

Мы преобразуем существующий набор данных, содержащий инструкции на Python, в формат, подходящий для обучения современных больших языковых моделей (LLMs), и затем загрузим его для публичного использования. Мы будем форматировать наши данные в соответствии с шаблоном чата Llama 3.2, что подготовит их для дообучения моделей Llama 3.2.

Шаг 1: Установка и аутентификация

Сначала необходимо установить необходимые библиотеки и пройти аутентификацию на Hugging Face Hub:

    !pip install -q datasets
    !huggingface-cli login
  

Здесь мы устанавливаем библиотеку datasets и выполняем команду для входа в систему с помощью токена аутентификации, который можно найти в настройках вашей учетной записи Hugging Face.

Шаг 2: Загрузка набора данных и определение функции трансформации

Теперь мы загрузим существующий набор данных и определим функцию для его преобразования в формат чата Llama 3.2:

    from datasets import load_dataset

    dataset = load_dataset('Vezora/Tested-143k-Python-Alpaca')

    def transform_conversation(example):
        system_prompt = "Вы - эксперт по программированию на Python..."
        instruction = example['instruction'].strip()
        output = example['output'].strip()
        formatted_text = f""" {system_prompt} <|user|> {instruction} <|assistant|> {output} """
        return {'text': formatted_text}
  

Мы загружаем набор данных, содержащий инструкции и выходные данные программирования на Python, и определяем функцию, которая перестраивает каждый пример в формат чата Llama 3.2, включая детализированную системную подсказку.

Шаг 3: Применение трансформации к набору данных

Теперь мы применим нашу функцию трансформации к всему набору данных:

    transformed_dataset = dataset['train'].map(transform_conversation)
  

Функция map() применяет нашу трансформацию ко всем примерам в наборе данных, что позволяет подготовить данные для дообучения моделей Llama 3.2.

Шаг 4: Загрузка набора данных на Hugging Face Hub

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

    transformed_dataset.push_to_hub("Llama-3.2-Python-Alpaca-143k")
  

Метод push_to_hub() загружает наш преобразованный набор данных на Hugging Face Hub, делая его доступным для скачивания и использования другими.

Часть 2: Дообучение и загрузка модели на Hugging Face Hub

Шаг 1: Установка необходимых библиотек

Сначала установим все необходимые библиотеки для эффективного дообучения больших языковых моделей:

    !pip install "unsloth[colab-new]" 
    !pip install -U transformers
    !pip install -U trl
    !pip install -U peft accelerate bitsandbytes
    !pip install torch torchvision torchaudio triton
    !pip install xformers
  

Шаг 2: Загрузка набора данных

Теперь загрузим набор данных, подготовленный в предыдущем разделе:

    from unsloth import FastLanguageModel
    from trl import SFTTrainer
    from transformers import TrainingArguments
    import torch

    dataset = load_dataset("nikhiljatiwal/Llama-3.2-Python-Alpaca-143k", split="train")
  

Шаг 3: Загрузка предобученной модели

Теперь загружаем квантованную версию Llama 3.2:

    model, tokenizer = FastLanguageModel.from_pretrained(
        model_name="unsloth/Llama-3.2-3B-Instruct-bnb-4bit",
        load_in_4bit=True
    )
  

Шаг 4: Настройка PEFT (параметрически эффективное дообучение)

Настраиваем модель для эффективного дообучения с помощью LoRA:

    model = FastLanguageModel.peft_model(
        model,
        r=16,
        target_modules=["q_proj", "k_proj", "v_proj", "o_proj"],
        lora_alpha=16,
        use_gradient_checkpointing=True
    )
  

Шаг 5: Подключение Google Диска для сохранения

Чтобы сохранить нашу обученную модель, подключим Google Диск:

    from google.colab import drive
    drive.mount('/content/drive')
  

Шаг 6: Настройка обучения и запуск процесса обучения

Теперь настраиваем и запускаем процесс обучения:

    trainer = SFTTrainer(
        model=model,
        train_dataset=dataset,
        args=TrainingArguments(
            per_device_train_batch_size=2,
            max_steps=60,
            output_dir="/content/drive/My Drive/Llama-3.2-3B-Instruct-bnb-4bit"
        )
    )
    trainer.train()
  

Шаг 7: Сохранение дообученной модели локально

После обучения сохраняем нашу модель:

    model.save_pretrained("lora_model")
  

Шаг 8: Загрузка модели на Hugging Face Hub

Наконец, загружаем нашу дообученную модель на Hugging Face:

    model.push_to_hub("nikhiljatiwal/Llama-3.2-3B-Instruct-code-bnb-4bit", token=HF_TOKEN)
  

Заключение

В данном руководстве мы продемонстрировали полный рабочий процесс кастомизации модели ИИ с использованием Hugging Face. Мы преобразовали набор данных инструкций Python в формат Llama 3.2, дообучили модель с помощью эффективных методов, таких как квантование и LoRA, и поделились ресурсами на Hugging Face Hub.

Дополнительные советы

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

Если вам нужна помощь в управлении ИИ в бизнесе, свяжитесь с нами по адресу hello@itinai.ru.

AI Solutions

Новости в сфере искусственного интеллекта