Поделиться через


Создание обучающего запуска с помощью API тонкой настройки модели Foundation

Внимание

Эта функция доступна в общедоступной предварительной версии в следующих регионах: centralus, , eastus, eastus2и northcentraluswestus.

В этой статье описывается, как создать и настроить обучающий запуск с помощью 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: 50top_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/.

Вкладка артефактов для предыдущего запуска MLflow

  • Чтобы предоставить последнюю контрольную точку из предыдущего запуска, установите 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

)

См. статью "Настройка обучения " для настройки других параметров в процессе точной настройки.

Получение идентификатора кластера

Чтобы получить идентификатор кластера, выполните следующие действия.

  1. В левой панели навигации рабочей области Databricks щелкните "Вычисления".

  2. В таблице щелкните имя кластера.

  3. Щелкните Кнопка в правом верхнем углу и выберите "Вид JSON " в раскрывающемся меню.

  4. Появится JSON-файл кластера. Скопируйте идентификатор кластера, который является первой строкой в файле.

    Идентификатор кластера

Получение состояния выполнения

Ход выполнения можно отслеживать с помощью страницы "Эксперимент" в пользовательском интерфейсе Databricks или с помощью команды get_events()API. Дополнительные сведения см. в статье Просмотр, управление и анализ запусков тонкой настройки модели Foundation.

Пример выходных данных из get_events():

Получение состояния выполнения с помощью API

Пример сведений о выполнении на странице "Эксперимент"

Получение состояния выполнения из пользовательского интерфейса экспериментов

Следующие шаги

После завершения обучения можно просмотреть метрики в MLflow и развернуть модель для вывода. См. шаги 5–7 руководства. Создание и развертывание запуска тонкой настройки модели Foundation.

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

Пример записной книжки

В следующей записной книжке показан пример создания искусственных данных с помощью модели структуры Meta Llama 3.1 405B и использования этих данных для точной настройки модели:

Создание искусственных данных с помощью записной книжки Instruct Llama 3.1 405B

Получить записную книжку

Дополнительные ресурсы