Задачи
Полная настройка LLM с помощью AutoTrain Advanced
AutoTrain Advanced позволяет легко настраивать большие языковые модели (LLM) для ваших конкретных случаев использования. В этом руководстве описано все, что вам нужно знать о тонкой настройке LLM.
Ключевые функции
- Простая подготовка данных с форматами CSV и JSONL
- Поддержка нескольких подходов к обучению (SFT, DPO, ORPO)
- Встроенные шаблоны чата
- Варианты локального и облачного обучения
- Оптимизированные параметры обучения
Поддерживаемые методы обучения
Autotrain поддерживает несколько специализированных тренеров:
- llm: Общий тренер LLM
- llm-sft: Тренер точной настройки
- llm-reward: Тренер по моделированию вознаграждений
- llm-dpo: Тренер по оптимизации прямых предпочтений
- llm-orpo: Тренер ORPO (оптимальная политика вознаграждения)
Подготовка данных
LLM Тренер точной настройки принимает данные в форматах CSV и JSONL. Предпочтительным является формат JSONL. Способ форматирования данных зависит от задачи, для решения которой вы обучаете LLM.
Классическая генерация текста
Для генерации текста данные должны быть в следующем формате:
текст |
---|
Википедия - это бесплатная онлайн-энциклопедия |
это совместный проект |
который может редактировать любой желающий |
Википедия - самая крупная и популярная справочная система общего назначения в Интернете |
Пример набора данных для этого формата можно найти здесь: stas/openwebtext-10k
Примеры задач:
- Генерация текста
- Завершение работы с кодом
Совместимые тренеры:
- SFT Тренер
- Общий тренер
Чатбот / Вопрос-Ответ / Генерация кода / вызов функции
Для этой задачи вы можете использовать данные в формате CSV или JSONL. Если вы форматируете данные самостоятельно (добавляете начальные и конечные токены и т.д.), вы можете использовать формат CSV или JSONL. Если вы не хотите форматировать данные самостоятельно и хотите, чтобы параметр --chat-template форматировал данные за вас, вы должны использовать формат JSONL. В обоих случаях CSV и JSONL могут использоваться взаимозаменяемо, но JSONL является наиболее предпочтительным форматом.
Чтобы обучить чат-бота, ваши данные будут содержать контент и роль. Некоторые модели также поддерживают системную роль.
Вот пример набора данных чат-бота (один образец):
[{'content': 'Help write a letter of 100 -200 words to my future self for ' 'Kyra, reflecting on her goals and aspirations.', 'role': 'user'}, {'content': 'Dear Future Self,\n' '\n' "I hope you're happy and proud of what you've achieved. As I " "write this, I'm excited to think about our goals and how far " "you've come. One goal was to be a machine learning engineer. I " "hope you've worked hard and become skilled in this field. Keep " 'learning and innovating. Traveling was important to us. I hope ' "you've seen different places and enjoyed the beauty of our " 'world. Remember the memories and lessons. Starting a family ' 'mattered to us. If you have kids, treasure every moment. Be ' 'patient, loving, and grateful for your family.\n' '\n' 'Take care of yourself. Rest, reflect, and cherish the time you ' 'spend with loved ones. Remember your dreams and celebrate what ' "you've achieved. Your determination brought you here. I'm " "excited to see the person you've become, the impact you've made, " 'and the love and joy in your life. Embrace opportunities and ' 'keep dreaming big.\n' '\n' 'With love,\n' 'Kyra', 'role': 'assistant'}]
Как вы можете видеть, в данных есть столбцы "content" и "role". Столбец "role" может быть "user", "assistant" или "system". Однако эти данные не отформатированы для обучения. Вы можете использовать параметр --chat-template для форматирования данных во время обучения.
--chat-template поддерживает следующие типы шаблонов:
- none (по умолчанию)
- zephyr
- chatml
- tokenizer: используйте шаблон чата, упомянутый в конфигурации токенизатора
Многострочный образец также показан ниже:
[{"content": "hello", "role": "user"}, {"content": "hi nice to meet you", "role": "assistant"}] [{"content": "how are you", "role": "user"}, {"content": "I am fine", "role": "assistant"}] [{"content": "What is your name?", "role": "user"}, {"content": "My name is Mary", "role": "assistant"}] [{"content": "Which is the best programming language?", "role": "user"}, {"content": "Python", "role": "assistant"}] . . .
Пример набора данных для этого формата можно найти здесь: : HuggingFaceH4/no_robots
Если вы не хотите форматировать данные с помощью --chat-template, вы можете отформатировать данные самостоятельно и использовать следующий формат:
<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 03 Oct 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nHelp write a letter of 100 -200 words to my future self for Kyra, reflecting on her goals and aspirations.<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nDear Future Self,\n\nI hope you're happy and proud of what you've achieved. As I write this, I'm excited to think about our goals and how far you've come. One goal was to be a machine learning engineer. I hope you've worked hard and become skilled in this field. Keep learning and innovating. Traveling was important to us. I hope you've seen different places and enjoyed the beauty of our world. Remember the memories and lessons. Starting a family mattered to us. If you have kids, treasure every moment. Be patient, loving, and grateful for your family.\n\nTake care of yourself. Rest, reflect, and cherish the time you spend with loved ones. Remember your dreams and celebrate what you've achieved. Your determination brought you here. I'm excited to see the person you've become, the impact you've made, and the love and joy in your life. Embrace opportunities and keep dreaming big.\n\nWith love,\nKyra<|eot_id|>
Ниже показан пример многострочного набора данных:
[{"text": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 03 Oct 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nhello<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nhi nice to meet you<|eot_id|>"}] [{"text": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 03 Oct 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nhow are you<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nI am fine<|eot_id|>"}] [{"text": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 03 Oct 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nWhat is your name?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nMy name is Mary<|eot_id|>"}] [{"text": "<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\nCutting Knowledge Date: December 2023\nToday Date: 03 Oct 2024\n\n<|eot_id|><|start_header_id|>user<|end_header_id|>\n\nWhich is the best programming language?<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\nPython<|eot_id|>"}] . . .