!229 Update sequence parallism related docs

Merge pull request !229 from 金勇旭/sp_doc
This commit is contained in:
金勇旭
2025-06-05 03:44:06 +00:00
committed by i-robot
parent 31d811107f
commit c7fe211bb3
3 changed files with 26 additions and 0 deletions

View File

@ -599,6 +599,7 @@ chmod -R 750 path/to/model_weights
| load_in_4bit | 支持QLoRA微调时使用4bit精度。 | bool | False | 可选 |
| use_dora | 是否使用DoRA。 | bool | False | 可选 |
| init_lora_weights | LoRA微调的权重初始化方法。只支持pissa_niter_[num of iters]。 | str | True | 可选 |
| sequence_parallel_size | 处理一个训练数据序列的计算设备的数量。 | int | 1 | 可选 |
| model_id | 模型ID。 | str | - | 可选 |
| model_name_or_path | 模型本地路径或者hub的repo_id。 | str | - | 可选 |
| trust_remote_code | 是否信任从远程下载的配置文件。 | bool | False | 可选 |

View File

@ -0,0 +1,24 @@
# 序列并行
当用户的数据集序列维度增长时,训练内存开销会以 $O$($S^2$) 的速度增长,因此需要针对长序列场景进行特定的优化解决长序列训练场景的需求。`openMind Library`当前支持在`sft`下的Ulysses长序列并行方案以此解决序列维度扩展问题。
## Ulysses原理
Ulysses将各个样本在序列维度上进行切分并分发给各个计算设备然后在模型的注意力(attention)计算之前,它对已分割的查询(Query)、键(Key)、值(Value)执行all-to-all通讯操作使得每个计算设备都具备非重叠注意力头的完整序列此时参与计算的设备可以并行的计算不同的注意力头。在注意力(attention)计算结束后再次执行all-to-all通讯操作在注意力头的维度上收集结果同时在序列维度上进行切分。
## 配置序列并行
在yaml文件中配置以下参数
```yaml
sequence_parallel_size: 4
```
- `sequence_parallel_size`为处理一个训练数据序列的计算设备的数量。默认值为1表示未开启序列并行。
当开启序列并行时,需要满足以下几点:
- 计算设备数量`world_size`可以被`sequence_parallel_size`整除。
- 模型注意力头数量`num_attention_heads`可以被`sequence_parallel_size`整除。
- `max_length`可以被`sequence_parallel_size` * 8整除。
- 设置`use_npu_fusion_attention`参数为True。

View File

@ -313,6 +313,7 @@ export HUB_WHITE_LIST_PATHS=/home/cache_model
| load_in_4bit | 支持QLoRA训练时使用4bit精度。 | bool | False | 可选 |
| use_dora | 是否使用DoRA。 | bool | False | 可选 |
| init_lora_weights | LoRA权重初始化方法。只支持pissa_niter_[number of iters]。 | str | True | 可选 |
| sequence_parallel_size | 处理一个训练数据序列的计算设备的数量。 | int | 1 | 可选 |
LoRA与QLoRA的详细用法请参考[模型量化与导出](./lora_and_merge.md)。