已合并
docs: fix text pretraining configuration guide #2974
yeqm创建于 7 天前
docs: fix text pretraining configuration guide #2974
已合并
共 1 个文件变更+28-17
| @@ -1,5 +1,9 @@ | |||
| 1 | # 纯文本预训练 | 1 | # 纯文本预训练 |
| 2 | 2 | ||
| 3 | +## 适用后端 | ||
| 4 | + | ||
| 5 | +纯文本预训练适用于纯 FSDP2 后端和含 Megatron 后端。两种后端选择预训练数据处理流程的配置项不同,请按照下文对应后端的示例进行配置。 | ||
| 6 | + | ||
| 3 | ## 使用场景 | 7 | ## 使用场景 |
| 4 | 8 | ||
| 5 | 预训练(Pretraining)是语言模型发展的核心步骤,目标是让模型通过大规模无标签语料学习语言规律与世界知识。预训练过程更关注语言建模本身,而非具体任务执行。以GPT类模型为例,它是一种典型的自回归语言模型,其核心思想是基于历史上下文预测下一个标记。预训练的过程就是通过反复优化这种预测能力,模型逐渐学会如何理解语境、保持句子连贯性,并掌握更高层次的语言结构,为多种下游任务提供通用的语言表示能力。 | 9 | 预训练(Pretraining)是语言模型发展的核心步骤,目标是让模型通过大规模无标签语料学习语言规律与世界知识。预训练过程更关注语言建模本身,而非具体任务执行。以GPT类模型为例,它是一种典型的自回归语言模型,其核心思想是基于历史上下文预测下一个标记。预训练的过程就是通过反复优化这种预测能力,模型逐渐学会如何理解语境、保持句子连贯性,并掌握更高层次的语言结构,为多种下游任务提供通用的语言表示能力。 |
| @@ -13,8 +17,9 @@ | |||
| 13 | 17 | ||
| 14 | ## 使用方法 | 18 | ## 使用方法 |
| 15 | 19 | ||
| 16 | -1.纯fsdp2后端 | 20 | +### 纯 FSDP2 后端 |
| 17 | -在xx_config.yaml文件中,配置预训练相关的参数 | 21 | + |
| 22 | +在 `xx_config.yaml` 文件中配置预训练相关参数: | ||
| 18 | 23 | ||
| 19 | ```yaml | 24 | ```yaml |
| 20 | ### 数据相关配置 | 25 | ### 数据相关配置 |
| @@ -23,18 +28,23 @@ data: | |||
| 23 | ... | 28 | ... |
| 24 | attr: | 29 | attr: |
| 25 | formatting: alpaca | 30 | formatting: alpaca |
| 26 | - pretrain: true | ||
| 27 | prompt: text | 31 | prompt: text |
| 28 | basic_parameters: | 32 | basic_parameters: |
| 33 | + stage: pretrain | ||
| 29 | template: default | 34 | template: default |
| 30 | dataloader_param: | 35 | dataloader_param: |
| 31 | collate_param: | 36 | collate_param: |
| 32 | - model_name: llm_pretrain | 37 | + collator_id: llm_pretrain |
这个是不是改不改都一样啊? ![]() ![]() | |||
| 33 | ... | 38 | ... |
| 34 | ``` | 39 | ``` |
| 35 | 40 | ||
| 36 | -2.含megatron后端 | 41 | +> [!NOTE] |
| 37 | -在data.json文件中,配置预训练相关的参数 | 42 | +> |
| 43 | +> FSDP2 后端通过 `basic_parameters.stage: pretrain` 选择预训练数据处理流程。切换到预训练时,请将 `attr` 下原有的配置(如 SFT 场景的列映射配置)注释或移除,按上述示例仅保留 `formatting` 和 `prompt` 配置,避免残留配置导致数据对齐失败。 | ||
| 44 | + | ||
| 45 | +### 含 Megatron 后端 | ||
| 46 | + | ||
| 47 | +在 `data.json` 文件中配置预训练相关参数: | ||
| 38 | 48 | ||
| 39 | ```json | 49 | ```json |
| 40 | { | 50 | { |
| @@ -68,19 +78,20 @@ data: | |||
| 68 | 78 | ||
| 69 | ### 参数说明 | 79 | ### 参数说明 |
| 70 | 80 | ||
| 71 | -1.`attr`和`collate_param`下的参数需要全部替换成上述示例的内容,其他参数的值做对应修改 | 81 | +FSDP2 后端需要按照上述示例配置 `basic_parameters.stage`、`attr` 和 `collate_param`;含 Megatron 后端需要按照上述示例配置 `attr` 和 `collate_param`。其他参数请根据实际训练任务修改。 |
| 72 | -2.`basic_parameters/packing`支持配置,对于纯文本大规模预训练,框架将`packing`默认设为true,以充分利用显存、提升训练效率。如果样本不拼接,则按如下方式进行配置: | ||
| 73 | 82 | ||
| 74 | -- **`basic_parameters/packing`** | 83 | +- **`basic_parameters.packing`** |
| 75 | - - 描述:多个短文本样本拼接成一个符合模型最大长度(cutoff_len)的长序列 | 84 | + - 描述:将多个短文本样本拼接成符合模型最大长度 `cutoff_len` 的长序列。对于纯文本大规模预训练,该参数默认为 `true`,以充分利用显存并提升训练效率。 |
| 76 | - 取值: | 85 | - 取值: |
| 77 | - - `true`:默认值,可以不配置该参数 | 86 | + - `true`:开启样本拼接,默认值,可以不配置该参数。 |
| 78 | - - `false`:手动指定 | 87 | + - `false`:关闭样本拼接。 |
| 88 | + | ||
| 89 | +- **`cutoff_len`** | ||
| 90 | + - 描述:训练序列的最大长度。 | ||
| 91 | + - 配置位置: | ||
| 92 | + - 纯 FSDP2 后端:对应 `xx_config.yaml` 中的 `cutoff_len`。 | ||
| 93 | + - 含 Megatron 后端:对应 `finetune_xx.sh` 中的 `SEQ_LEN`。 | ||
| 79 | 94 | ||
| 80 | ## 注意事项 | 95 | ## 注意事项 |
| 81 | 96 | ||
| 82 | -1.packing开启(默认)的场景下,需要保证`max_samples`个短文本拼接成长序列的总长度不小于cutoff_len,否则会报错 | 97 | +packing 开启(默认)的场景下,数据预处理会在每个批次内拼接文本,并按 `cutoff_len` 切分为定长序列。需要保证每个预处理批次中有效文本的 token 总数不小于 `cutoff_len`,否则该批次无法生成训练样本。可通过增大 `preprocessing_batch_size`、增加样本长度或减小 `cutoff_len` 解决。 |
| 83 | - | ||
| 84 | -- **`cutoff_len`** | ||
| 85 | - - 纯fsdp2后端:对应xx_config.yaml中的`cutoff_len` | ||
| 86 | - - 含megatron后端:对应finetune_xx.sh中的`SEQ_LEN` | ||


可以按模板在前面增加适用后端章节进行说明