微调模型
微调AI模型是一种常见做法,允许你利用自定义数据集在带有GPU的计算环境中,对预训练模型运行微调作业。AI Toolkit目前支持在本地机器上用GPU微调SLM,或在云端(Azure容器应用)上用GPU进行微调。
经过微调的模型可以下载到本地,用GPU进行推理测试,或者量化后在CPU上本地运行。微调模型也可以作为远程模型部署到云环境中。
Fine-tune AI models on Azure with AI Toolkit for VS Code (Preview)
VS Code 的 AI Toolkit 现在支持配置 Azure 容器应用,用于运行模型微调并在云端托管推理端点。
搭建你的云环境
-
要在远程 Azure 容器应用环境中运行模型微调和推理,请确保你的订阅有足够的 GPU 容量。提交支持工单,申请申请所需的容量。获取更多关于GPU容量的信息
-
如果你在HuggingFace上使用私有数据集,或者基础模型需要访问控制,确保你有HuggingFace账户并生成访问令牌。
-
如果你正在微调Mistral或Llama,请在HuggingFace上接受许可。
-
在 VS Code 的 AI 工具包中启用远程微调和推理功能标志
- 通过选择文件 ->偏好设置 ->设置打开VS代码设置。
- 进入扩展并选择 AI 工具包。
- 选择“启用在Azure容器应用上运行微调和推理”选项。

- 重新加载VS代码以生效更改。
支架:一个微调项目
- 运行
AI工具包:工具专注视图在命令面板中(⇧⌘P(Windows,Linux Ctrl+Shift+P)) - 导航至此
微调访问型号目录。选择一个模型进行微调。给你的项目分配一个名字,并在你的机器上选择它的位置。然后,点击“配置项目”按钮。
- 项目配置
- 避免启用“本地微调”选项。
- Olive配置设置会显示为预设的默认值。请根据需要调整和填写这些配置。
- 继续生成项目。这一阶段利用了 WSL,并涉及建立新的 Conda 环境,为未来包含开发容器的更新做准备。

- 选择“在工作区中重启窗口”以打开你的微调项目。

该项目目前可在本地或远程运行于 VS Code 的 AI 工具包中。如果你在项目创建时选择“本地微调”,它将完全在 WSL 中运行,没有云资源。否则,项目将被限制只能在远程的 Azure 容器应用环境中运行。
Provision Azure Resources
要开始,你需要为远程微调配置 Azure 资源。从命令调色板中查找并执行AI Toolkit: Provision Azure Container Apps job for fine-tuning.在此过程中,系统会提示您选择Azure订阅和资源组。

通过输出通道显示的链路监控供应进度。
运行微调
要启动远程微调作业,运行AI工具包:运行微调命令在指令调色板中。

扩展随后执行以下作:
-
将你的工作区与 Azure 文件同步。
-
使用以下指定的命令触发 Azure Container Appjob
./infra/fintuning.config.json.
QLoRA将用于微调,微调过程将为模型创建用于推理的LoRA适配器。
微调的结果将存储在 Azure 文件中。
要在 Azure 文件共享中查看输出文件,可以通过输出面板中的链接访问 Azure 门户。或者,你也可以直接访问Azure门户,找到名为存储账户的地址STORAGE_ACCOUNT_NAME定义如下./infra/fintuning.config.json以及名为的文件共享FILE_SHARE_NAME定义如下./infra/fintuning.config.json.

查看日志
一旦微调工作开始,你可以通过访问Azure门户访问系统和控制台日志。
或者,你也可以直接在VSCode输出面板查看控制台日志。

这项工作可能需要几分钟才能启动。如果已经有一个正在运行的作业,当前的作业可能会排队以待后期开始。
Azure 上的查看和查询日志
微调作业触发后,你可以通过 VSCode 通知中的“在 Azure 门户中打开日志”按钮查看 Azure 日志。
或者,如果你已经打开了 Azure 门户,可以从“执行历史”面板找到 Azure 容器应用职位的职位历史。

日志分为两种类型,“控制台”和“系统”。
- 控制台日志是来自你应用的消息,包括
特别以及学生留言。这就是你已经在直播日志部分看到的内容。 - 系统日志是来自Azure容器应用服务的消息,包括服务级别事件的状态。
要查看和查询日志,请点击“控制台”按钮,进入日志分析页面,查看所有日志并撰写查询。

有关Azure容器应用日志的更多信息,请参见Azure容器应用中的应用日志。
在VSCode中查看流媒体日志
启动微调工作后,你也可以在 Azure 上查看日志,方法是在 VSCode 通知中点击“在 VS Code 中显示流媒体日志”按钮。
或者你可以运行命令AI工具包:显示正在进行的微调作业流日志在指挥调色板中。

运行微调作业的流式日志会显示在输出面板中。

作业可能因资源不足而被排队。如果日志没有显示,请稍等一段时间,然后执行重新连接流媒体日志的命令。 流媒体日志可能会超时并断开连接。不过,可以通过再次执行命令重新连接。
用微调模型推理
适配器在远程环境中训练完成后,使用简单的 Gradio 应用程序与模型交互。

Provision Azure resources
类似于微调过程,你需要通过执行AI Toolkit: Provision Azure Container Apps for inference来自指令面板。在此设置过程中,您将被要求选择Azure订阅和资源组。

默认情况下,用于推理的订阅和资源组应与用于微调的资源组保持一致。推理将使用相同的 Azure 容器应用环境,访问存储在 Azure 文件中的模型和模型适配器,这些适配器是在微调步骤中生成的。
推理部署
如果您想修改推理代码或重新加载推理模型,请执行AI工具包:部署推理指挥部。这样你最新的代码会与ACA同步,并重启副本。

部署成功完成后,模型即可通过该端点进行评估。
您可以通过选择VSCode通知中显示的“前往推理端点”按钮来访问推理API。或者,Web API 端点可在以下找到ACA_APP_ENDPOINT在./infra/inference.config.json以及输出面板。

推理端点可能需要几分钟才能完全运行。
高级用法
微调项目组件
| 文件夹 | 目录 |
|---|---|
基础设施 |
包含所有远程作所需的配置。 |
基础设施/供应/finetuning.parameters.json |
存储 bicep 模板的参数,用于配置 Azure 资源进行微调。 |
infra/provision/finetuning.bicep |
包含用于配置 Azure 资源以进行微调的模板。 |
下finetuning.config.json |
配置文件由AI Toolkit: Provision Azure Container Apps job for fine-tuning指挥部。它被用作其他远程命令调色板的输入。 |
Configuring secrets for fine-tuning in Azure Container Apps
Azure 容器应用秘密提供了一种安全的方式,用于存储和管理 Azure 容器应用中的敏感数据,如 HuggingFace 令牌和权重与偏见 API 密钥。利用 AI 工具包的命令调色板,你可以将秘密输入到已配置的 Azure 容器应用作业中(存储于./finetuning.config.json).这些秘密随后被设置为所有容器中的环境变量。
步骤
-
在命令调色板中,输入并选择
AI Toolkit: Add Azure Container Apps Job secret for fine-tuning
-
提供一个秘密名称和数值


例如,如果你使用私有的 HuggingFace 数据集或需要 Hugging Face 访问控制的模型,可以将 HuggingFace 令牌设置为环境变量
HF_TOKEN以避免在拥抱面中心手动登录。
设置好秘密后,你就可以在Azure容器应用中使用它。秘密会在你的容器应用的环境变量中设置。
Configuring Azure resource provision for fine-tune
本指南将帮助您配置AI Toolkit: Provision Azure Container Apps job for fine-tuning指挥部。
你可以在./infra/provision/finetuning.parameters.json档案。以下是详细信息:
| 参数 | 描述 |
|---|---|
defaultCommands |
这是开始微调工作的默认命令。它可以被覆盖./infra/finetuning.config.json. |
最大实例计数 |
该参数设定了GPU实例的最大容量。 |
暂停 |
这会在几秒钟内设置Azure Container Appfine-tuning作业的超时。默认值是10800,相当于3小时。如果Azure容器应用作业达到此超时,微调过程将停止。不过,检查点默认保存,允许微调过程从上一个检查点继续,而非重新开始。 |
位置 |
这里是Azure资源配置的位置。默认值与所选资源组的位置相同。 |
storageAccountName,文件共享名称 aca环境名称,acaEnvironmentStorageName,acaJobName,acaLogAnalyticsName |
这些参数用于命名用于配置的 Azure 资源。你可以输入一个新的未使用的资源名来创建自定义资源,或者如果你愿意使用已有的Azure资源名称,也可以输入它。 |
使用现有的 Azure 资源
如果你有需要配置的 Azure 资源进行微调,可以在./infra/provision/finetuning.parameters.json文件,然后运行AI Toolkit: Provision Azure Container Apps job for fine-tuning来自指令面板。这会更新你指定的资源,并创建缺失的资源。
例如,如果你已有 Azure 容器环境,你的./infra/finetuning.parameters.json应该是这样的:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
...
"acaEnvironmentName": {
"value": "<your-aca-env-name>"
},
"acaEnvironmentStorageName": {
"value": null
},
...
}
}
手动配置
如果你更愿意手动设置 Azure 资源,可以使用提供的 bicep 文件在./infra/provision文件夹。如果你已经设置并配置了所有 Azure 资源,但没有使用 AI Toolkit 命令面板,你可以简单地在finetune.config.json档案。
例如:
{
"SUBSCRIPTION_ID": "<your-subscription-id>",
"RESOURCE_GROUP_NAME": "<your-resource-group-name>",
"STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
"FILE_SHARE_NAME": "<your-file-share-name>",
"ACA_JOB_NAME": "<your-aca-job-name>",
"COMMANDS": [
"cd /mount",
"pip install huggingface-hub==0.22.2",
"huggingface-cli download <your-model-name> --local-dir ./model-cache/<your-model-name> --local-dir-use-symlinks False",
"pip install -r ./setup/requirements.txt",
"python3 ./finetuning/invoke_olive.py && find models/ -print | grep adapter/adapter"
]
}
模板中包含的推理组件
| 文件夹 | 目录 |
|---|---|
基础设施 |
包含所有远程作所需的配置。 |
基础设施/供应/inference.parameters.json |
存储 bicep 模板的参数,用于为推理配置 Azure 资源。 |
infra/provision/inference.bicep |
包含用于推理 Azure 资源配置的模板。 |
下inference.config.json |
配置文件由AI Toolkit: Provision Azure Container Apps for inference指挥部。它被用作其他远程命令调色板的输入。 |
配置 Azure 资源配置
本指南将帮助您配置AI Toolkit: Provision Azure Container Apps for inference指挥部。
你可以在./infra/provision/inference.parameters.json档案。以下是详细信息:
| 参数 | 描述 |
|---|---|
defaultCommands |
这是启动网络API的命令。 |
最大实例计数 |
该参数设定了GPU实例的最大容量。 |
位置 |
这里是Azure资源配置的位置。默认值与所选资源组的位置相同。 |
storageAccountName,文件共享名称 aca环境名称,acaEnvironmentStorageName,acaAppName,acaLogAnalyticsName |
这些参数用于命名用于配置的 Azure 资源。默认情况下,它们将与微调资源名称相同。你可以输入一个新的未使用的资源名来创建自定义资源,或者如果你愿意使用已有的Azure资源名称,也可以输入它。 |
使用现有的 Azure 资源
默认情况下,推理配置使用与微调相同的Azure容器应用环境、存储账户、Azure文件共享和Azure日志分析。专门为推理API创建了一个独立的Azure容器应用。
如果你在微调阶段自定义了 Azure 资源,或者想用你已有的 Azure 资源进行推理,请在./infra/inference.parameters.json档案。然后,运行AI Toolkit: Provision Azure Container Apps for inference命令面板中的命令。这会更新指定资源并创建缺失资源。
例如,如果你已有 Azure 容器环境,你的./infra/finetuning.parameters.json应该是这样的:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
...
"acaEnvironmentName": {
"value": "<your-aca-env-name>"
},
"acaEnvironmentStorageName": {
"value": null
},
...
}
}
手动配置
如果你更愿意手动配置 Azure 资源,可以使用提供的 Bicep 文件./infra/provision文件夹。如果你已经在没有使用 AI Toolkit 命令调色板的情况下设置并配置了所有 Azure 资源,你可以简单地在inference.config.json档案。
例如:
{
"SUBSCRIPTION_ID": "<your-subscription-id>",
"RESOURCE_GROUP_NAME": "<your-resource-group-name>",
"STORAGE_ACCOUNT_NAME": "<your-storage-account-name>",
"FILE_SHARE_NAME": "<your-file-share-name>",
"ACA_APP_NAME": "<your-aca-name>",
"ACA_APP_ENDPOINT": "<your-aca-endpoint>"
}
你学到了什么
在本文中,你学到了:
- 设置 AI Toolkit for VS Code,支持Azure Container Apps中的微调和推理。
- 在 AI Toolkit for VS Code 中创建一个微调项目。
- 配置微调工作流程,包括数据集选择和训练参数。
- 运行微调流程,将预训练模型适配到你的具体数据集中。
- 查看微调过程的结果,包括指标和日志。
- 使用示例笔记本进行模型推断和测试。
- 导出并与他人分享微调项目。
- 用不同的数据集或训练参数重新评估模型。
- 处理失败的作业并调整配置以适应重运行。
- 了解支持的模型及其微调需求。
- 使用VS Code的AI工具包来管理微调项目,包括配置Azure资源、运行微调作业以及部署推理模型。