问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

使用 AI Toolkit for VS Code 微调模型

创作时间:
作者:
@小白创作中心

使用 AI Toolkit for VS Code 微调模型

引用
1
来源
1.
https://learn.microsoft.com/zh-cn/windows/ai/toolkit/toolkit-fine-tune

AI Toolkit for VS Code 是一个强大的工具扩展,它允许用户在应用或云环境中下载、测试、微调和部署AI模型。本文将详细介绍如何使用AI Toolkit进行模型微调,包括环境设置、具体步骤和代码示例。

使用 AI Toolkit for VS Code 微调模型

AI Toolkit for VS Code (AI Toolkit) 是一个 VS Code 扩展,使你能够在应用或云中下载、测试、微调和部署 AI 模型。 有关详细信息,请参阅AI 工具包概述。

注意
GitHub 存储库中提供了适用于 AI 工具包 VS Code 的其他文档和教程:microsoft/vscode-ai-toolkit。 你将找到有关 Playground、使用 AI 模型、微调本地模型和基于云的模型等的指导。

本文将指导如何进行以下操作:

  • 设置本地环境以进行微调。
  • 执行微调工作。

先决条件

  • 已完成AI Toolkit for Visual Studio Code 入门。
  • 如果使用Windows计算机微调,请安装Windows Subsystem for Linux (WSL)。 请参阅如何使用 WSL 在 Windows 上安装 Linux,以便安装 WSL 和默认 Linux 分发版。 在使用 AI Toolkit for VS Code 之前,必须安装 WSL Ubuntu 分发版 18.04 或更高版本,并将其设置为默认分发版。 了解如何更改默认分发版。
  • 如果使用Linux计算机,则它应该是 Ubuntu 分发版 18.04 或更高版本。
  • 在本教程中使用模型需要 NVIDIA GPU 进行微调。 目录中还有其他模型可以使用 CPU 或 NPU 在 Windows 设备上加载。

提示
请确保已在计算机上安装最新的NVIDIA 驱动程序。 如果在游戏就绪驱动程序或Studio 驱动程序之间进行选择,则请下载Studio 驱动程序
你需要知道 GPU 的模型才能下载正确的驱动程序。 要了解你拥有哪些 GPU,请参阅如何检查 GPU 及其重要原因。

环境设置

要查看你是否满足在本地设备或云 VM 上运行微调作业所需的所有先决条件,请打开命令面板 (Shift+Control+P) 并搜索 “AI 工具包:验证环境先决条件”。

如果本地设备通过了验证检查,则会启用“设置 WSL 环境”按钮供你选择。 此操作将安装运行微调作业所需的所有依赖项。

云 VM

如果本地计算机没有 Nvidia GPU 设备,则可以在有 Nvidia GPU(如果有配额)的云 VM(Windows 和 Linux)上进行微调。 在 Azure 中,可以使用以下 VM 系列进行微调:

  • NCasT4_v3 系列
  • NC A100 v4 系列
  • ND A100 v4 系列
  • NCads H100 v5 系列
  • NCv3 系列
  • NVadsA10 v5 系列

提示
VS Code 允许远程连接到云 VM。 如果不熟悉此功能,请阅读通过 SSH 进行远程开发教程

微调模型

AI Toolkit 使用名为QLoRA的方法,该方法结合了量化和低级别自适应 (LoRA) 来使用你自己的数据微调模型。 通过QLoRA:量化 LLM 的有效微调详细了解 QLoRA。

步骤 1:配置项目

若要使用 QLoRA 启动新的微调会话,请在 AI 工具包左侧面板中的“工具”部分选择微调项。

首先输入唯一的“项目名称”和“项目位置”。 将在所选位置创建具有指定项目名称的新文件夹,用于存储项目文件。

接下来,从“模型目录”中选择模型(例如Phi-3-mini-4k-instruct),然后选择“配置项目”:

然后,系统会提示你配置微调项目的设置。 请确保勾选了“本地微调”复选框(将来 VS Code 扩展将允许你将微调卸载到云):

模型推理设置

“模型推理”部分有两个设置可用:

设置 说明
Conda 环境名称 要激活并用于微调过程的 conda 环境名称。此名称在 conda 安装中必须是唯一的。
推理提示模板 在推理时使用的提示模板。 请确保此项与微调的版本匹配。

数据设置

“数据”部分提供了以下设置,以配置数据集信息:

设置 说明
数据集名称 用于微调模型的数据集的名称。
训练拆分 数据集的训练拆分名称。
数据集类型 要使用的数据集类型。
文本列 数据集中用以填充训练提示的列的名称。
文本模板 用于微调模型的提示模板。 此操作使用文本列中的替换词元。
Corpus 策略 指示是否要联接样本或逐行进行处理。
源最大长度 每个训练样本的最大词元数。
填充到最大长度 将 PAD 词元添加到训练样本,直到达到最大词元数。

微调设置

“微调”部分提供了以下设置,用于进一步配置微调流程:

设置 Data type 默认值 说明
计算类型 字符串 bfloat16 模型权重和适配器权重的数据类型。 对于 4 位量化模型,它也是量化模块的计算数据类型。 有效值:bfloat16、float16 或 float32。
量化类型 字符串 nf4 要使用的量化数据类型。 有效值:fp4 或 nf4。
双重量化 布尔 是 是否使用嵌套量化,其中第一个量化中的量化常量再次被量化。
Lora r Integer 64 Lora 关注维度。
Lora alpha 浮点 16 适用于 Lora 缩放的 alpha 参数。
Lora 信息漏失 浮点 0.1 Lora 层的信息漏失概率。
Eval 数据集大小 浮点 1024 验证数据集的大小。
Seed Integer 0 用于初始化的随机种子。
种子数据 Integer 42 要与数据采样器搭配使用的随机种子。
每个设备训练批次大小 Integer 1 要用于训练的每个 GPU 批次大小。
每个设备 eval 批次大小 Integer 1 要评估的每个 GPU 批次大小。
梯度累计步骤 Integer 4 在执行向后/更新传递之前,累计梯度的更新步骤数。
启用梯度检查点 布尔 是 使用梯度检查点。 为节省内存,建议使用。
学习速率 浮点 0.0002 AdamW 的初始学习速率。
最多步骤数 Integer -1 如果设置为正数,则要执行的训练步骤总数。 此项会替代 num_train_epochs。 如果使用有限的可迭代数据集,则当所有数据耗尽时,训练可能在达到设定的步数之前停止。

步骤 2:生成项目

设置所有参数后,单击“生成项目”。 此项将执行以下操作:

  • 初始化模型下载。
  • 安装所有先决条件和依赖项。
  • 创建 VS Code 工作区。

下载模型并准备好环境后,可以通过在“步骤 3 - 生成项目”页面上选择“重新启动工作区窗口”,从 AI 工具包启动项目。 这将启动连接到环境的 VS Code 的新实例。

注意
系统可能会提示安装其他扩展,例如VS Code 的提示流。 要获得最佳微调体验,请安装这些扩展以继续操作。

重新启动的窗口在其工作区中具有以下文件夹:

文件夹名 说明
dataset 此文件夹包含模板的数据集(dataset-classification.json- 包含短语和音调的 JSON 行文件)。 如果将项目设置为使用本地文件或 Hugging Face 数据集,则可以忽略此文件夹。
微调 要执行微调工作的Olive配置文件。 Olive 是一种易于使用的硬件感知模型优化工具,包含模型压缩、优化和编译等方面的行业领先技术。 Olive 基于模型和目标硬件并在考虑一组约束(例如准确性和延迟)的情况下编写了最适合的优化技术,用于输出在云或边缘上进行推理的最高效模型,。
推理 用于使用微调模型的进行推理的代码示例。
基础结构 用于使用 Azure 容器应用服务进行微调和推理(即将推出)。 此文件夹包含用于预配 Azure 容器应用服务的 Bicep 和配置文件。
安装 用于设置 conda 环境的文件。 例如,pip 要求。

步骤 3:执行微调工作

现在可以使用以下方式微调模型:


# replace {conda-env-name} with the name of the environment you set
conda activate {conda-env-name}
python finetuning/invoke_olive.py  

重要
微调所需的时间取决于 GPU 类型、GPU 数、步骤数和时期数。 这很耗时(例如,可能需要几个小时)。
如果只想执行快速测试,请考虑减少文件中的
olive-config.json
数。 使用检查点,因此下一次微调运行将从最后一个检查点继续运行。
检查点和最终模型将保存在项目的
models
文件夹中。

步骤 4:将微调模型集成到应用中

接下来,使用经过微调的模型通过
console

web browser

prompt flow
中的聊天运行推理。


cd inference
# Console interface.
python console_chat.py
# Web browser interface allows to adjust a few parameters like max new token length, temperature and so on.
# User has to manually open the link (e.g. http://127.0.0.1:7860) in a browser after gradio initiates the connections.
python gradio_chat.py  

提示
README.md
页面上也提供了相关说明,可在项目文件夹中找到这些说明。

相关内容

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号