Skip to content

Commit

Permalink
数据集文档更新
Browse files Browse the repository at this point in the history
  • Loading branch information
Songjoy committed Oct 18, 2024
1 parent 41081ec commit 0e0508d
Show file tree
Hide file tree
Showing 48 changed files with 636 additions and 4,578 deletions.
421 changes: 421 additions & 0 deletions docs/zh/docs/dtx/dataset.md

Large diffs are not rendered by default.

16 changes: 5 additions & 11 deletions docs/zh/docs/dtx/features.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,11 @@ hide:
| 一级功能 | 二级功能 | 描述 |
| ------- | ------ | ---- |
| 数据集 | 可视化创建数据集 | 提供直观的界面,支持创建训练、验证和测试数据集 |
| | 格式 | 支持 Alpaca 格式和 ShareGPT 格式的数据集。Alpacaga 支持指令监督微调、预训练、偏好训练、KTO、多模态数据集;ShareGPT 支持指令监督微调、偏好训练和 KTO 数据集 |
| | S3存储支持 | 支持从S3存储中直接拉取文件,提升数据接入的便捷性 |
| | 本地文件上传 | 支持本地文件上传,提供多样化的数据接入方式 |
| 参数组 | 可视化创建超参数组 | 通过直观的界面配置超参数组,包括调度器(Scheduler)、优化器(Optimizer)、学习率(Learning Rate)、训练周期(Epochs)和批次大小(Batch Size)等 |
| 微调实验 | 可视化模型微调 | 支持 LoRA、全量微调(full)、冻结微调(freeze)等多种模型微调方式的可视化管理 |
| | 矩阵式微调 | 支持使用不同的参数组和数据集创建微调实验,进行矩阵式微调 |
| 分布式微调实验 | 微调方法 | 支持 LoRA、全量微调(full)、冻结微调(freeze)等多种模型微调方式的可视化管理 |
| | 训练阶段 | 支持(增量)预训练、多模态指令监督微调、奖励模型训练、PPO训练、DPO训练、KTO训练、ORPO训练等多种集成方法 |
| | 实时监控 | 支持查看微调过程中的学习率、训练损失和验证损失等关键数据,实时监控模型训练状态 |
| | 检查点评估 | 支持对微调过程中的检查点(checkpoint)进行评估打分,确保模型质量 |
| | 模型导出与部署 | 支持将微调后的模型导出到模型中心,便于部署模型推理服务 |
| 模型微调 | 多种微调方法 | 支持(增量)预训练、多模态指令监督微调、奖励模型训练、PPO训练、DPO训练、KTO训练、ORPO训练等多种集成方法 |
| | 精度支持 | 支持 16 比特全参数微调、冻结微调、LoRA 微调,以及基于 AQLM/AWQ/GPTQ/LLM.int8/HQQ/EETQ 的 2/3/4/5/6/8 比特 QLoRA 微调 |
| | 先进算法集成 | 支持 GaLore、BAdam、DoRA、LongLoRA、LLaMA Pro、Mixture-of-Depths、LoRA+、LoftQ、PiSSA 和 Agent 微调等先进算法 |
| | 实用技巧支持 | 集成 FlashAttention-2、Unsloth、RoPE scaling、NEFTune 和 rsLoRA 等实用技巧 |
| 模型推理 | 推理支持 | 提供基于 vLLM 的 OpenAI 风格 API,支持模型推理服务 |
| 支持的基础模型 | 支持的模型 | 包括 Baichuan 2、BLOOM/BLOOMZ、ChatGLM3、Command R、DeepSeek (Code/MoE)、Falcon、Gemma/Gemma 2/CodeGemma、GLM-4、InternLM2、Llama、Llama 2、Llama 3、LLaVA-1.5、Mistral/Mixtral、OLMo、PaliGemma、Phi-1.5/Phi-2、Phi-3、Qwen/Qwen1.5/Qwen2 (Code/MoE)、StarCoder 2、XVERSE、Yi/Yi-1.5、Yi-VL 和 Yuan 2 等众多基础模型。 |
| | 查看任务日志 | 支持查看微调过程中的日志信息 |
| 支持的基础模型 | 支持的模型 | 包括 LLaMA、LLaVA、Mistral、Mixtral-MoE、Qwen、Qwen2-VL、Yi、Gemma、Baichuan、ChatGLM、Phi 等等 |
154 changes: 74 additions & 80 deletions docs/zh/docs/dtx/fine-tuning-fast.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,128 +2,122 @@

大致流程为:

[前置要求准备](#_2) -> [创建数据集](#_3) -> [创建参数组](#_4) -> [创建微调实验](#_5) -> [部署微调模型](#_6) -> [对话](#_7)

<div class="video-container">
<iframe width="560" height="315" src="https://harbor-test2.cn-sh2.ufileos.com/drun/fine-tuning.mp4" title="模型微调教学" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
</div>
[前置要求准备](#_2) -> [创建数据集](#_3) -> [创建分布式微调实验](#_4) -> [部署微调模型](#_5) -> [对话](#_6)

## 前置要求

1. 已购买算力集群,并且该算力集群被加入当前用户所在的 workspace 中
2. 集群有可用的大模型(目前微调只适用与 llama2-7b 模型)
3. 已准备本地/远程数据集,数据集格式为 Q&A(目前仅支持 CSV 格式且文件不超过 50M)
2. 集群有可用的大模型
3. 已准备本地/远程数据集,数据集格式为 Q&A

## 创建数据集

1.**模型微调** -> **数据集** 中,点击 **上传数据集** 按钮。
1.**模型微调** -> **数据集** 中,点击 **创建** 按钮。

![创建数据集](images/dataset01.png)



1. 参照以下说明填写表单后,点击 **确认**

![数据集](images/dataset02.png)

| 参数说明 | 详细描述 |
| -------- | -------- |
| 数据集名称 | 不支持中文,长度限制 63 字符 |
| 自定义标签 | 为数据集添加自定义标签 |
| 数据集语言 | 当前支持中文/英文 |
| 集群及命名空间 | 选择数据集所属的集群以及命名空间,注意:数据集所在集群/命名空间应该和微调实验所属集群/命名空间保持一致。 |
| 授权协议 | 根据数据集的属性,设置授权协议 |
| 词条数目 | 根据数据集的大小,选择词条的数目 |
| 任务类型 | 根据数据集属性,选择数据集被应用的任务的类型,同时支持添加子类型 |
| 数据集信息 | 配置数据集的信息,可以上传本地数据集文件,配置三种类型的数据集地址,或者设置插件,配置参数让插件拉取数据集 |
| 特征映射 | 填写数据集中文件的表头 |
| 列名 | 该数据集分为两列,列名分别为:question/answer |

!!! tip

- [点击下载 DCEdata_en_test.csv](images/DCEdata_en_test.csv) 测试集文件
- [点击下载 DCEdata_en_Trainning.csv](images/DCEdata_en_Trainning.csv) 训练集文件
- [点击下载 DCEdata_en_validation.csv](images/DCEdata_en_validation.csv) 验证集文件

## 创建参数组

**模型微调** -> **参数组** 中,点击 **创建** 按钮。

![创建参数组](images/create-parameter-groups.png)

- 设置参数组基本信息,参数组名称以及微调类型和所属集群以及命名空间,目前支持的微调类型为:SFT
- 按照需要配置参数组信息,点击右下角确认完成参数组的创建

点击 **确认** 创建参数组。

![参数组](images/parmergroup02.png)
| 格式 | 目前我们支持 [Alpaca](https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/data_preparation.html#alpaca) 格式和 [ShareGPT](https://llamafactory.readthedocs.io/zh-cn/latest/getting_started/data_preparation.html#sharegpt) 格式的数据集。 |
| 适用于 | 针对不同格式,数据集格式不同,Alpaca支持指令监督微调、预训练、偏好训练、KTO、多模态数据集;ShareGPT支持指令监督微调、偏好训练和KTO数据集; |
| 数据集文件 | 配置数据集的信息,可以上传本地数据集文件,仅支持 .json 和 .jsonl 文件类型,配置字段映射让插件拉取数据集 |

以 DCE 参数组为例:

![参数组](images/parmergroup01.png)
## 创建分布式微调实验
1. 进入分布式微调页面
![进入分布式微调页面](images/fine-tuning-experiment-enter.png)

## 创建微调实验
2.**模型微调** -> **分布式微调** 中,点击 **创建** 按钮

1.**模型微调** -> **微调实验** 中,点击 **创建微调实验** 按钮

![创建微调实验](images/create-fine-tuning-experiment.png)

2. 填写表单
![创建微调实验](images/fine-tuning-experiment-create.png)

3. 填写表单
**基本信息:**
![实验基本信息](images/fine-tuning-experiment-create01.png)
- 实验名称:由小写字母、数字字符或“-”组成,并且必须以字母或数字字符开头及结尾。
- 选择评估方式:实验中对模型使用的评分准则。
- 选择命名空间。
- 选择部署位置。
- 基础模型:选择微调实验支持的模型;
- 提示词模版:与基础模型适配的模版,instruct、chat模型模版和模型一定要适配、base模型影响不大,但是微调过后如果再进行微调,就要选和第一次一样的模版;
- 微调方法:根据需求选择合适的微调方法;
- 训练阶段:根据需求选择合适的训练的阶段;
- 训练数据集:目前只支持aplaca格式。

![实验基本信息](images/basic-information-of-experiment.png)
**点击下一步,任务配置**
![任务配置](images/fine-tuning-experiment-create02.png)

- 任务名称:由小写字母、数字字符或“-”组成,并且必须以字母或数字字符开头及结尾。
- 选择算力类型并填写物理卡个数。

- 填写资源配置

!!! info

当前模型服务仅支持 Nvidia 的 GPU,模型会根据物理卡个数在GPU上进行分布式微调。

- CPU 配额:通常需要使用多核 CPU 来加速训练和推理过程。具体的 CPU 配额需要根据任务的需求和可用的硬件资源来确定。
- 内存配置:根据模型的大小和数据集的大小来确定内存需求,并根据需要调整内存配置。

推荐 CPU 配额和内存配置请求值为 **16** Core,限制值为 **32** Core。

!!! note

两者的请求值皆不可超过限制值。

![任务配置](images/resource-allocation.png)

- 选择实验中要使用的 **基础大模型****数据组** 以及 **参数组**
- 若要设置多个微调任务,可点击左下角 **添加任务** 创建新任务。

当前模型服务仅支持Nvidia的GPU,模型会根据物理卡个数在GPU上进行分布式微调

**任务配置参数设置**
![任务配置参数设置](images/fine-tuning-experiment-create03.png)
**超参数配置**
- 任务并行数: 同时运行的任务数量(控制多机)。
- 物理卡数: 用于训练的物理GPU或TPU卡的数量(控制每台机器使用的卡数,目前只支持GPU)。
- 学习率: 模型参数更新的步长,学习率过高可能导致训练不稳定,过低可能导致收敛缓慢。推荐取值: 1e-5 至 1e-3,通常从1e-4开始调整。
- 训练轮数: 完整地遍历训练数据集的次数。推荐取值: 1-10,视数据集大小和计算资源而定,一般做微调1到3轮就足够。
- 最大梯度范数: 用于控制梯度的最大值,以避免梯度爆炸问题。推荐取值: 0.5-1.0,视具体情况而定。
- 最大样本数: 每次训练使用的最大样本数量,通常用于调试或预训练阶段。推荐取值: 根据硬件资源确定,通常设置为None(不限制)。
- 计算类型: 指定训练时的计算精度类型。推荐取值: FP16,若硬件支持可选择混合精度以加速训练。
- 截断长度:输入分词后的最大长度 。
- 批处理大小: 每次训练中输入模型的样本数量。较大的批处理大小可提高训练效率,但也需要更多的显存。推荐取值: 8-64,视显存容量和模型复杂度而定。资源充足的情况下,批处理大小越大,效果越好。
- 梯度累计解释: 梯度累计的次数,即在更新模型前积累梯度的次数。推荐取值: 1-8,通常与批处理大小的实际可行性有关。
- 验证集比例解释: 用于验证的数据集在整个数据集中的比例。根据需求设定
- 学习率调节器解释: 调整学习率的策略,如预热、线性下降或余弦退火。推荐取值: 预热加线性衰减,或余弦退火。根据训练情况和目标任务选择。

**LoRA参数配置**
- LoRA秩解释: LoRA 秩表示用于低秩分解的秩值,它决定了学习的参数量。较高的秩值会增加参数量,通常在训练复杂模型时使用。推荐取值: 4-16,视模型大小和任务复杂度而定。
- LoRA缩放系数解释: 缩放系数用于放大或缩小LoRA的输出,在微调过程中可以调整其影响力。较高的缩放系数会使LoRA的贡献更大。推荐取值: 8-32,通常使用16作为默认值,并根据实验结果调整。
- LoRA随机丢弃解释: LoRA随机丢弃用于在训练过程中随机丢弃部分LoRA层的输出,以防止过拟合并增强模型的泛化能力。推荐取值: 0.1-0.3,视过拟合程度和数据集规模而定。
- LoRA学习率比例解释: LoRA学习率比例是指LoRA部分的学习率相对于基础模型学习率的比例。较高的学习率比例可以加速LoRA参数的学习,但也可能导致不稳定性。推荐取值: 0.5-1.0,通常从0.5开始,视训练稳定性进行调整。
高级配置
- 量化等级: 量化等级指模型参数的量化精度,可以选择int4或int8来减少模型的计算量和内存占用。选择none则不进行量化。推荐取值: none, int4, int8,根据模型性能要求和计算资源选择。
- 量化方法: 量化方法指定了使用哪种算法进行模型的量化。常见方法包括bnb(Bits-and-Bytes),hqq(High Quality Quantization),和etqq(Extreme Tiny Quantization)。根据任务要求和实验结果选择。
- RoPE插值方式: RoPE(旋转位置编码)插值方式用于处理旋转位置编码的不同实现方案,影响模型对位置信息的处理。
- 加速方式: 加速方式指使用的模型加速技术,以提高训练和推理速度。unslosh和flashattention2是常用的加速方法。根据硬件支持情况和加速效果选择,同时需要注意使用的模型是否适用以上的加速模式。

**其他参数配置**
- 日志间隔: 日志间隔指在训练过程中记录日志的频率,通常以训练步数为单位。适当的日志间隔可以帮助监控训练进度和模型性能。推荐取值: 10-1000步,视数据集大小和训练需求而定。
- 保存间隔: 保存间隔指模型权重的保存频率,通常以训练步数或时间为单位。较短的保存间隔可以减少训练中途崩溃时的损失。推荐取值: 1000-5000步,视训练时长和数据集大小而定。
- 预热步数: 预热步数是在正式训练前的学习率线性增加阶段,通常用于避免模型在初期出现过大的梯度更新。推荐取值: 500-2000步,视训练总步数和学习率策略而定。
- NEFTune噪声参数: NEFTune噪声参数控制在NEFTune方法中引入的噪声水平,以增强模型的泛化能力。推荐取值:5,视具体任务和噪声敏感性而定。
- 优化器: 优化器是指用于更新模型参数的算法。常见的优化器包括Adam、SGD、Adafactor等,选择合适的优化器对训练效率和效果至关重要。推荐取值: AdamW

**添加任务按钮**
![alt text](images/add-task.png)

3. 点击右下角 **确认** 按钮创建微调实验。
4. 点击右下角 **确定** 按钮创建微调实验。

## 部署微调模型

**模型仓库** -> **内置模型** 的微调模型中,可以查看运行成功的实验结果。

1. 点击右侧的 **...** ,在弹出的选项中选择 **部署**

1.**模型仓库** -> **内置模型** 的微调模型中,接入模型;
![微调模型部署](images/dtx-chat01.png)

2. 填写模型服务名称、命名空间、算力配额、资源配置后点击 **确定** (注:推荐 CPU 配额和内存配置请求值为 **16** Core, **32** Gi)。
2. 模型接入成功后,点击右下方 ,在弹出的选项中选择部署,部署模型服务。!

![微调模型部署](images/dtx-chat02.png)

3. 创建成功,接下来可以通过部署的模型提供服务。

## 模型服务对话
3. 填写模型服务名称、命名空间、算力配额、资源配置后点击 **确定** (注:推荐 CPU 配额和内存配置请求值为 **16** Core, **32** Gi)。

1. 微调模型部署成功后,可以在 **模型服务** -> **本地模型服务** -> **微调模型** 勾选模型服务后,
点击右侧 **对话** 即可与该模型对话。
![微调模型部署](images/dtx-chat03.png)

![模型服务对话](images/dtx-chat03.png)
3. 创建成功,接下来可以通过部署的模型提供服务。

!!! tip
## 模型服务对话

最多可选中三个微调模型进行对话。
1. 微调模型部署成功后,可以在 **模型服务** -> **本地模型服务** -> **我创建的** 查看模型服务,点击文件名即可即可与该模型对话。
![微调模型对话](images/dtx-chat04.png)

2. 你可以输入训练集中的问题,发送给微调模型,以此验证模型微调的效果,微调模型会回答用户提出的问题。

![模型服务对话](images/dtx-chat04.png)
![微调模型对话](images/dtx-chat05.png)
Loading

0 comments on commit 0e0508d

Please sign in to comment.