基础模型训练

重要

此功能目前以公共预览版提供。 联系你的 Databricks 帐户团队以注册公共预览版。

使用基础模型训练时,可以使用自己的数据来自定义基础模型,以针对特定应用优化其性能。 通过微调或继续训练基础模型,可以使用比从头开始训练模型少得多的数据、时间和计算资源来训练自己的模型。

借助 Databricks,可以在单个平台中拥有一切:用于训练的数据、要训练的基础模型、保存到 MLflow 的检查点、在 Unity Catalog 中注册并准备好部署的模型。

本文概述了 Databricks 上的基础模型训练。 有关如何使用它的详细信息,请参阅以下内容:

什么是基础模型训练?

基础模型训练让你可以使用 Databricks API 或 UI 来优化或进一步训练基础模型。

使用基础模型训练时,你可以:

  • 使用自定义数据训练模型,并将检查点保存到 MLflow。 保留对已训练模型的完全控制。
  • 自动将模型注册到 Unity Catalog,以便通过模型服务进行轻松部署。
  • 通过加载以前训练的模型的权重进一步训练已完成的专有模型。

Databricks 建议在以下情况下尝试基础模型训练:

  • 你已经尝试了几次学习,并希望获得更好的结果。
  • 你已尝试对现有模型进行提示工程,并希望获得更好的结果。
  • 你想要对自定义模型拥有完全所有权,以便实现数据隐私。
  • 你对延迟敏感或对成本敏感,并且想要将更小、更便宜的模型用于特定于任务的数据。

受支持的任务

基础模型训练支持以下用例:

  • 监督式微调:根据结构化的提示-响应数据训练模型。 使用此方法使模型适应新任务、更改其响应样式或添加指令遵循功能。
  • 继续预训练:使用其他文本数据训练模型。 使用它将新知识添加到模型或将模型聚焦于特定领域。
  • 聊天补全:通过用户与 AI 助手之间的聊天日志训练模型。 此格式既可用于实际的聊天日志,也可以用作问题解答和对话文本的标准格式。 文本会自动格式化为特定模型的相应聊天格式。

要求

  • 以下某个 Azure 区域中的 Databricks 工作区:centraluseastuseastus2northcentraluswestcentraluswestuswestus3
  • 使用 pip install databricks_genai 安装的基础模型训练 API。
  • Databricks Runtime 12.2 LTS ML 或更高版本(如果数据位于 Delta 表中)。

有关所需输入数据格式的信息,请参阅为基础模型训练准备数据

若要进行监督式微调和聊天补全,应至少提供模型的一个完整上下文长度的足够标记。 例如,对于 meta-llama/Llama-2-7b-chat-hf 提供 4096 个标记,对于 mistralai/Mistral-7B-v0.1 提供 32768 个标记。

对于继续预训练,Databricks 建议至少提供 150 万个样本,以获取能够学习自定义数据的更高质量的模型。

支持的模型

重要

Llama 3 根据 LLAMA 3 社区许可授权,版权所有 © Meta Platforms, Inc.保留所有权利。 客户需负责确保遵守适用的模型许可条款。

Llama 2 和 Code Llama 模型根据 LLAMA 2 社区许可授权,版权所有 © Meta Platforms, Inc.保留所有权利。 客户需负责确保遵守适用的模型许可条款。

DBRX 根据 Databricks 开放模型许可证提供并受其约束,版权所有 © Databricks, Inc.保留所有权利。 客户有责任确保符合适用的模型许可证,包括 Databricks 可接受的使用策略

模型 上下文长度上限
databricks/dbrx-base 4096
databricks/dbrx-instruct 4096
meta-llama/Meta-Llama-3-70B 8192
meta-llama/Meta-Llama-3-70B-Instruct 8192
meta-llama/Meta-Llama-3-8B 8192
meta-llama/Meta-Llama-3-8B-Instruct 8192
meta-llama/Llama-2-7b-hf 4096
meta-llama/Llama-2-13b-hf 4096
meta-llama/Llama-2-70b-hf 4096
meta-llama/Llama-2-7b-chat-hf 4096
meta-llama/Llama-2-13b-chat-hf 4096
meta-llama/Llama-2-70b-chat-hf 4096
codellama/CodeLlama-7b-hf 16384
codellama/CodeLlama-13b-hf 16384
codellama/CodeLlama-34b-hf 16384
codellama/CodeLlama-7b-Instruct-hf 16384
codellama/CodeLlama-13b-Instruct-hf 16384
codellama/CodeLlama-34b-Instruct-hf 16384
codellama/CodeLlama-7b-Python-hf 16384
codellama/CodeLlama-13b-Python-hf 16384
codellama/CodeLlama-34b-Python-hf 16384
mistralai/Mistral-7B-v0.1 32768
mistralai/Mistral-7B-Instruct-v0.2 32768
mistralai/Mixtral-8x7B-v0.1 32768

使用基础模型训练

可以使用 databricks_genai SDK 访问基础模型训练。 以下示例创建并启动了使用 Unity Catalog 卷中的数据的训练运行。 有关配置详细信息,请参阅使用基础模型训练 API 创建训练运行

from databricks.model_training import foundation_model as fm

model = 'meta-llama/Llama-2-7b-chat-hf'
# UC Volume with JSONL formatted data
train_data_path = 'dbfs:/Volumes/main/mydirectory/ift/train.jsonl'
register_to = 'main.mydirectory'
run = fm.create(
  model=model,
  train_data_path=train_data_path,
  register_to=register_to,
)

限制

  • 由于计算可用性,不支持大型数据集(10B+ 标记)。
  • 不支持 PrivateLink。
  • 对于连续预训练,工作负载限制为 60-256MB 文件。 大于 1GB 的文件可能会导致处理时间过长。
  • Databricks 努力使最新、最先进的模型可通过基础模型训练进行自定义。 随着新模型可用,我们可能会移除从 API 和/或 UI 访问旧模型的功能、弃用旧模型或更新支持的模型。 如果基础模型将从 API 和/或 UI 中移除或弃用,Databricks 将执行以下步骤,在移除和/或弃用日期之前至少三个月通知客户:
    • 在你的 Databricks 工作区的“试验 > 基础模型训练”页的模型卡片中显示警告消息,指出模型已计划弃用。
    • 更新我们的文档,加入一个指出模型已计划弃用的通知。