Создание обучающего запуска с помощью API тонкой настройки модели Foundation
Внимание
Эта функция доступна в общедоступной предварительной версии в следующих регионах: centralus
, , eastus
, eastus2
и northcentralus
westus
.
В этой статье описывается, как создать и настроить обучающий запуск с помощью API тонкой настройки модели Foundation (в настоящее время входит в API обучения модели Мозаики ИИ) и описывает все параметры, используемые в вызове API. Вы также можете создать запуск с помощью пользовательского интерфейса. Инструкции см. в статье "Создание обучающего запуска с помощью пользовательского интерфейса тонкой настройки модели Foundation".
Требования
См. раздел Требования.
Создание учебного запуска
Чтобы создать обучающие запуски программным способом, используйте функцию create()
. Эта функция обучает модель в предоставленном наборе данных и преобразует окончательную контрольную точку Composer в отформатированную контрольную точку распознавания лиц для вывода.
Необходимые входные данные — это модель, которую вы хотите обучить, расположение набора данных обучения и место регистрации модели. Существуют также необязательные параметры, позволяющие выполнять оценку и изменять гиперпараметры выполнения.
После завершения выполнения завершенные запуски и окончательные контрольные точки сохраняются, модель клонируется и клонируется в каталог Unity в качестве версии модели для вывода.
Модель из завершенного запуска, а не клонированную версию модели в каталоге Unity, а ее контрольные точки Composer и Hugging Face сохраняются в MLflow. Контрольные точки Composer можно использовать для дальнейших задач тонкой настройки.
Дополнительные сведения о аргументах для функции см. в разделе "Настройка обучения".create()
from databricks.model_training import foundation_model as fm
run = fm.create(
model='meta-llama/Llama-2-7b-chat-hf',
train_data_path='dbfs:/Volumes/main/mydirectory/ift/train.jsonl', # UC Volume with JSONL formatted data
# Public HF dataset is also supported
# train_data_path='mosaicml/dolly_hhrlhf/train'
register_to='main.mydirectory', # UC catalog and schema to register the model to
)
Настройка учебного запуска
В следующей foundation_model.create()
таблице перечислены параметры функции.
Параметр | Обязательное поле | Type | Description |
---|---|---|---|
model |
x | str | Имя используемой модели. См. раздел "Поддерживаемые модели". |
train_data_path |
x | str | Расположение обучающих данных. Это может быть расположение в каталоге Unity (<catalog>.<schema>.<table> или dbfs:/Volumes/<catalog>/<schema>/<volume>/<dataset>.jsonl ) или наборе данных HuggingFace.Для INSTRUCTION_FINETUNE этого данные должны быть отформатированы с каждой prompt строкой, содержащей и response поле.Для CONTINUED_PRETRAIN этого используется папка .txt файлов. Ознакомьтесь с разделом "Подготовка данных для точной настройки модели Foundation" для принятых форматов данных и рекомендуемого размера данных для обучения модели для рекомендаций по размеру данных. |
register_to |
x | str | Каталог и схема каталога Unity (<catalog>.<schema> или <catalog>.<schema>.<custom-name> ), где модель зарегистрирована после обучения для простого развертывания. Если custom-name этот параметр не указан, по умолчанию используется имя выполнения. |
data_prep_cluster_id |
str | Идентификатор кластера для обработки данных Spark. Это необходимо для защищенных задач обучения, в которых данные обучения находятся в таблице Delta. Сведения о том, как найти идентификатор кластера, см. в разделе "Получение идентификатора кластера". | |
experiment_path |
str | Путь к эксперименту MLflow, в котором сохраняется результат обучения (метрики и контрольные точки). По умолчанию используется имя запуска в личной рабочей области пользователя (т. е. /Users/<username>/<run_name> ). |
|
task_type |
str | Тип выполняемой задачи. Может быть INSTRUCTION_FINETUNE (по умолчанию), CHAT_COMPLETION или CONTINUED_PRETRAIN . |
|
eval_data_path |
str | Удаленное расположение данных оценки (если таковые есть). Должен соответствовать тому же формату, что train_data_path и . |
|
eval_prompts |
List[str] | Список строк запроса для создания ответов во время оценки. None Значение по умолчанию — (не создавайте запросы). Результаты регистрируются в эксперимент каждый раз при контрольной точке модели. Поколения происходят на каждой контрольной точке модели со следующими параметрами создания: max_new_tokens: 100 , temperature: 1 , , top_k: 50 top_p: 0.95 . do_sample: true |
|
custom_weights_path |
str | Удаленное расположение пользовательской контрольной точки модели для обучения. Значение по умолчанию — это None означает, что запуск начинается с исходных предварительно обученных весов выбранной модели. Если предоставляются пользовательские весы, эти весы используются вместо исходных предварительно обученных весов модели. Эти весы должны быть контрольной точкой Composer и должны соответствовать архитектуре указанного model . См. статью "Сборка на основе весов пользовательских моделей" |
|
training_duration |
str | Общая длительность выполнения. По умолчанию используется одна эпоха или 1ep . Можно указать в эпохах (10ep ) или маркерах (1000000tok ). |
|
learning_rate |
str | Частота обучения для обучения модели. Для всех моделей, отличных от Ллама 3.1 405B Instruct, по умолчанию используется 5e-7 частота обучения. Для Ламы 3.1 405B инструктажа по умолчанию используется 1.0e-5 частота обучения. Оптимизатор — DecoupledLionW с бета-версиями 0,99 и 0,95 и без распада веса. Планировщик скорости обучения — LinearWithWarmupSchedule с 2% от общей продолжительности обучения и окончательного умножения скорости обучения 0. |
|
context_length |
str | Максимальная длина последовательности примера данных. Это используется для усечения всех данных, слишком длинных и для упаковки более коротких последовательностей для повышения эффективности. Значение по умолчанию — 8192 маркеров или максимальная длина контекста для предоставленной модели, в зависимости от того, что ниже. Этот параметр можно использовать для настройки длины контекста, но настройка за пределами максимальной длины контекста модели не поддерживается. См. раздел "Поддерживаемые модели " для максимальной поддерживаемой длины контекста каждой модели. |
|
validate_inputs |
Логический | Следует ли проверять доступ к входным путям перед отправкой задания обучения. По умолчанию — True . |
Сборка на основе весов пользовательских моделей
Базовая настройка модели поддерживает добавление настраиваемых весов с помощью необязательного параметра custom_weights_path
для обучения и настройки модели.
Чтобы приступить к работе, задайте custom_weights_path
путь контрольной точки Composer из предыдущего учебного запуска. Пути контрольной точки можно найти на вкладке Артефактов предыдущего запуска MLflow. Имя папки контрольной точки соответствует пакету и эпохе определенного моментального снимка, например ep29-ba30/
.
- Чтобы предоставить последнюю контрольную точку из предыдущего запуска, установите
custom_weights_path
для нее контрольную точку Composer. Например,custom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/latest-sharded-rank0.symlink
. - Чтобы предоставить более раннюю контрольную точку, задайте
custom_weights_path
путь к папке, содержащей.distcp
файлы, соответствующие требуемой контрольной точке, напримерcustom_weights_path=dbfs:/databricks/mlflow-tracking/<experiment_id>/<run_id>/artifacts/<run_name>/checkpoints/ep#-ba#
.
Затем обновите model
параметр, чтобы он соответствовал базовой модели переданной custom_weights_path
контрольной точки.
В следующем примере ift-meta-llama-3-1-70b-instruct-ohugkq
показан предыдущий запуск, который настраивается meta-llama/Meta-Llama-3.1-70B
. Чтобы точно настроить последнюю контрольную точку, ift-meta-llama-3-1-70b-instruct-ohugkq
задайте model
значения и custom_weights_path
переменные следующим образом:
from databricks.model_training import foundation_model as fm
run = fm.create(
model = 'meta-llama/Meta-Llama-3.1-70B'
custom_weights_path = 'dbfs:/databricks/mlflow-tracking/2948323364469837/d4cd1fcac71b4fb4ae42878cb81d8def/artifacts/ift-meta-llama-3-1-70b-instruct-ohugkq/checkpoints/latest-sharded-rank0.symlink'
... ## other parameters for your fine-tuning run
)
См. статью "Настройка обучения " для настройки других параметров в процессе точной настройки.
Получение идентификатора кластера
Чтобы получить идентификатор кластера, выполните следующие действия.
В левой панели навигации рабочей области Databricks щелкните "Вычисления".
В таблице щелкните имя кластера.
Щелкните в правом верхнем углу и выберите "Вид JSON " в раскрывающемся меню.
Появится JSON-файл кластера. Скопируйте идентификатор кластера, который является первой строкой в файле.
Получение состояния выполнения
Ход выполнения можно отслеживать с помощью страницы "Эксперимент" в пользовательском интерфейсе Databricks или с помощью команды get_events()
API. Дополнительные сведения см. в статье Просмотр, управление и анализ запусков тонкой настройки модели Foundation.
Пример выходных данных из get_events()
:
Пример сведений о выполнении на странице "Эксперимент"
Следующие шаги
После завершения обучения можно просмотреть метрики в MLflow и развернуть модель для вывода. См. шаги 5–7 руководства. Создание и развертывание запуска тонкой настройки модели Foundation.
Дополнительные сведения о настройке инструкции: демонстрационная записная книжка распознавания именованных сущностей см. в примере точной настройки инструкции, которая описывает подготовку данных, настройку конфигурации и развертывания для обучения.
Пример записной книжки
В следующей записной книжке показан пример создания искусственных данных с помощью модели структуры Meta Llama 3.1 405B и использования этих данных для точной настройки модели:
Создание искусственных данных с помощью записной книжки Instruct Llama 3.1 405B
Дополнительные ресурсы
- Тонкое настройка модели Foundation
- Руководство по созданию и развертыванию запуска тонкой настройки модели Foundation
- Создание обучающего запуска с помощью пользовательского интерфейса тонкой настройки модели Foundation
- Просмотр, управление и анализ запусков тонкой настройки модели Foundation
- Подготовка данных для точной настройки модели Foundation