«Как настроить Mistral AI 7B LLM с использованием Hugging Face AutoTrain»
«Как настроить Mistral AI 7B LLM с помощью Hugging Face AutoTrain для достижения идеальных результатов»
С развитием LLM исследований по всему миру, множество моделей стало доступным. Одной из небольших, но мощных моделей с открытым исходным кодом является Mistral AI 7B LLM. Эта модель обладает адаптивностью к множеству сценариев использования, показывая более высокую производительность, чем LlaMA 2 13B на всех тестовых показателях, используя механизм скользящего окна внимания (SWA) и обладает простотой в развертывании.
Всеобщая производительность модели Mistral 7B можно увидеть на нижеприведенном изображении.
- Генерация кода документов с использованием LLMs
- Начните с использования крупных языковых моделей (LLM) в 2023 году
- Компания Samsung визионерский прорыв в будущее искусственного интеллекта и чип-технологий
Модель Mistral 7B также доступна в HuggingFace. Мы можем использовать Hugging Face AutoTrain для настройки модели под нужды наших сценариев использования. Hugging Face’s AutoTrain – это платформа без написания кода с Python API, которую мы можем использовать для настройки любой доступной модели LLM в HugginFace.
В этом руководстве мы разберемся, как настраивать модель Mistral AI 7B LLM с помощью Hugging Face AutoTrain. Как это работает? Давайте разбираться.
Подготовка окружения и набора данных
Чтобы настраивать LLM с помощью Python API, нам нужно установить пакет Python, который можно выполнить с помощью следующего кода.
pip install -U autotrain-advanced
Также для нашей работы мы будем использовать набор данных Alpaca от HuggingFace, для использования которого потребуются пакеты datasets для получения данных и transformers для обработки модели Hugging Face.
pip install datasets transformers
Далее нам необходимо отформатировать наши данные для настройки модели Mistral 7B. В общем, Mistral выпустил две основных модели: Mistral 7B v0.1 и Mistral 7B Instruct v0.1. Модель Mistral 7B v0.1 является базовой моделью, а модель Mistral 7B Instruct v0.1 – это модель Mistral 7B v0.1, которая была настроена для диалогов и ответов на вопросы.
Для настройки модели Mistral 7B с использованием Hugging Face AutoTrain нам понадобится файл CSV, содержащий столбец с текстом. Однако для базовой и инструкционной моделей мы будем использовать различные текстовые форматы во время настройки.
Давайте сначала посмотрим на используемый для нашего примера набор данных.
from datasets import load_datasetimport pandas as pd# Load the datasettrain= load_dataset("tatsu-lab/alpaca",split='train[:10%]')train = pd.DataFrame(train)
Код выше выберет десять процентов от реальных данных. Нам понадобится только столько для этого руководства, так как обучение для больших данных требует больше времени. Наш образец данных выглядит так, как показано на изображении ниже.
Набор данных уже содержит столбцы с текстом в нужном формате для настройки нашей модели LLM. Вот почему нам не нужно выполнять никаких действий. Однако я предоставлю код, если у вас есть другой набор данных, который требует форматирования.
def text_formatting(data): # Если вводной столбец не пустой
if data['input']:
text = f"""Ниже приведена инструкция, описывающая задачу, сопровождаемая вводом,
предоставляющим дополнительный контекст. Напишите ответ, который подходит для выполнения запроса.\n\n### Инструкция:\n{data["instruction"]} \n\n### Ввод:\n{data["input"]}\n\n### Ответ:\n{data["output"]}"""
else:
text = f"""Ниже приведена инструкция, описывающая задачу. Напишите ответ, который подходит для выполнения запроса.\n\n### Инструкция:\n{data["instruction"]}\n\n### Ответ:\n{data["output"]}"""
return texttrain['text'] = train.apply(text_formatting, axis =1)
Для автоматической настройки Hugging Face нам потребуется данные в формате CSV, чтобы мы могли сохранить их с помощью следующего кода.
train.to_csv('train.csv', index = False)
Затем перенесите результат CSV в папку с именем data. Вот все, что нужно сделать для подготовки набора данных к настройке модели Mistral 7B v0.1.
Если вы хотите настроить модель Mistral 7B Instruct v0.1 для диалогов и ответов на вопросы, вам необходимо следовать формату шаблона чата, предоставленному Mistral, который показан в блоке кода ниже.
<s>[INST] Инструкция [/INST] Ответ модели</s>[INST] Дополнительная инструкция [/INST]
Если мы используем наш предыдущий пример набора данных, нам необходимо изменить формат столбца с текстом. Мы будем использовать только данные без ввода для модели чата.
train_chat = train[train['input'] == ''].reset_index(drop = True).copy()
Затем мы можем отформатировать данные с помощью следующего кода.
def chat_formatting(data):
text = f"<s>[INST] {data['instruction']} [/INST] {data['output']} </s>"
return texttrain_chat['text'] = train_chat.apply(chat_formatting, axis =1)train_chat.to_csv('train_chat.csv', index =False)
Таким образом, мы получим набор данных, который можно использовать для настройки модели Mistral 7B Instruct v0.1.
После всех подготовительных мер можно приступить к настройке автоматического обучения для оптимизации нашей модели Mistral.
Обучение и настройка
Давайте настроим среду Hugging Face AutoTrain для оптимизации модели Mistral. Сначала запустим настройку AutoTrain, используя следующую команду.
!autotrain setup
Затем мы укажем необходимую информацию для запуска AutoTrain. Для этого руководства давайте использовать Mistral 7B Instruct v0.1.
project_name = 'my_autotrain_llm'
model_name = 'mistralai/Mistral-7B-Instruct-v0.1'
Затем мы добавим информацию Hugging Face, если вы хотите отправить свою модель в репозиторий.
push_to_hub = Falsehf_token = "ВАШ HF ТОКЕН"
repo_id = "имя_пользователя/имя_репозитория"
Наконец, мы инициируем информацию о параметрах модели в следующих переменных. Вы можете изменить их, чтобы увидеть хороший результат.
learning_rate = 2e-4
num_epochs = 4
batch_size = 1
block_size = 1024
trainer = "sft"
warmup_ratio = 0.1
weight_decay = 0.01
gradient_accumulation = 4
use_fp16 = True
use_peft = True
use_int4 = True
lora_r = 16
lora_alpha = 32
lora_dropout = 0.045
Мы можем настроить множество параметров, но не будем обсуждать их в этой статье. Некоторые советы по улучшению мелкой настройки LLM включают использование более низкой скорости обучения для поддержания предварительно изученных представлений и наоборот, избегание переобучения путем изменения числа эпох, использование большего размера пакета для стабильности или корректировка накопления градиента, если у вас возникли проблемы с памятью.
Когда вся информация готова, мы настроим окружение для принятия всей настроенной ранее информации.
import osos.environ["PROJECT_NAME"] = project_nameos.environ["MODEL_NAME"] = model_nameos.environ["PUSH_TO_HUB"] = str(push_to_hub)os.environ["HF_TOKEN"] = hf_tokenos.environ["REPO_ID"] = repo_idos.environ["LEARNING_RATE"] = str(learning_rate)os.environ["NUM_EPOCHS"] = str(num_epochs)os.environ["BATCH_SIZE"] = str(batch_size)os.environ["BLOCK_SIZE"] = str(block_size)os.environ["WARMUP_RATIO"] = str(warmup_ratio)os.environ["WEIGHT_DECAY"] = str(weight_decay)os.environ["GRADIENT_ACCUMULATION"] = str(gradient_accumulation)os.environ["USE_FP16"] = str(use_fp16)os.environ["USE_PEFT"] = str(use_peft)os.environ["USE_INT4"] = str(use_int4)os.environ["LORA_R"] = str(lora_r)os.environ["LORA_ALPHA"] = str(lora_alpha)os.environ["LORA_DROPOUT"] = str(lora_dropout)
Мы будем использовать следующую команду для запуска AutoTrain в нашей записной книжке.
!autotrain llm \--train \--model ${MODEL_NAME} \--project-name ${PROJECT_NAME} \--data-path data/ \--text-column text \--lr ${LEARNING_RATE} \--batch-size ${BATCH_SIZE} \--epochs ${NUM_EPOCHS} \--block-size ${BLOCK_SIZE} \--warmup-ratio ${WARMUP_RATIO} \--lora-r ${LORA_R} \--lora-alpha ${LORA_ALPHA} \--lora-dropout ${LORA_DROPOUT} \--weight-decay ${WEIGHT_DECAY} \--gradient-accumulation ${GRADIENT_ACCUMULATION} \$( [[ "$USE_FP16" == "True" ]] && echo "--fp16" ) \$( [[ "$USE_PEFT" == "True" ]] && echo "--use-peft" ) \$( [[ "$USE_INT4" == "True" ]] && echo "--use-int4" ) \$( [[ "$PUSH_TO_HUB" == "True" ]] && echo "--push-to-hub --token ${HF_TOKEN} --repo-id ${REPO_ID}" )
Если процесс мелкой настройки проходит успешно, у нас будет новый каталог с настроенной моделью. Мы будем использовать этот каталог для тестирования нашей новой модели, настроенной мелко.
from transformers import AutoModelForCausalLM, AutoTokenizermodel_path = "my_autotrain_llm"tokenizer = AutoTokenizer.from_pretrained(model_path)model = AutoModelForCausalLM.from_pretrained(model_path)
С готовой моделью и токенизатором мы бы попробовали модель с примером ввода.
input_text = "Дайте три совета по поддержанию здоровья."input_ids = tokenizer.encode(input_text, return_tensors="pt")output = model.generate(input_ids, max_new_tokens = 200)predicted_text = tokenizer.decode(output[0], skip_special_tokens=True)print(predicted_text)
Вывод:
Дайте три совета по поддержанию здоровья.
- Питайтесь сбалансированно: Обязательно включайте в свой рацион много фруктов, овощей, белковых продуктов и цельных зерен. Это поможет вам получить необходимые питательные вещества для поддержания здоровья и энергии.
- Регулярно занимайтесь физическими упражнениями: Старайтесь заниматься физическими упражнениями не менее 30 минут в день, такими как энергичная ходьба или езда на велосипеде. Это поможет вам сохранить здоровый вес, снизить риск хронических заболеваний и улучшить физическое и психическое здоровье.
- Высыпайтесь: Старайтесь спать 7-9 часов каждую ночь. Это поможет вам чувствовать себя бодрее и более внимательными в течение дня, а также поможет вам сохранить здоровый вес и снизить риск хронических заболеваний.
Результаты модели оказались близкими к фактическим данным нашей тренировочной выборки, показанным на изображении ниже.
- Следите за сбалансированным питанием и обязательно включайте в него достаточное количество фруктов и овощей.
- Регулярно занимайтесь спортом, чтобы поддерживать активное и сильное тело.
- Высыпайтесь достаточно и поддерживайте постоянный распорядок сна.
Модели Mistral, несомненно, обладают большой мощностью для своего размера, и уже простая настройка показала многообещающие результаты. Попробуйте свой набор данных, чтобы узнать, подходит ли он для вашей работы.
Вывод
Модель Mistral AI 7B – это мощная модель LLM, которая обеспечивает более высокую производительность, чем LLaMA, и отличается большой адаптивностью. Поскольку модель доступна в Hugging Face, мы можем использовать HuggingFace AutoTrain для настройки модели. В Hugging Face в настоящее время доступны две модели для настройки: Mistral 7B v0.1 для базовой модели и Mistral 7B Instruct v0.1 для вопросов и ответов в разговоре. Даже с быстрым процессом обучения, настройка показала многообещающие результаты.
[Cornellius Yudha Wijaya](https://www.linkedin.com/in/cornellius-yudha-wijaya/) – это заместитель руководителя по науке о данных и дата-писатель. Во время работы на полную ставку в Allianz Indonesia, он любит делиться советами по Python и данным через социальные сети и средства письменной коммуникации.