一、Tilearn.llm 大模型训练加速
?
计算优化接口与 huggingface 完全兼容,以 llama 模型为例使用方法如下:
### TILEARN.LLMfrom tilearn.llm.transformers import LlamaForCausalLM?### 模型接口与标准huggingface一致model = LlamaForCausalLM.from_pretrained(...)
二、tiacc_training 旧版训练加速
使用新的平台镜像 tilearn-llm0.4.2-torch2.1-deepspeed0.10.0-py3.10-cuda12.1-gpu 可直接使用
tiacc_training.distributed.launch 函数
初始化 DDP 通信加速优化,接口与原生 torch.distributed.launch 完全一致,会默认将原生 DDP 相关的函数调整为调用 TI-ACC 通信加速能力,原生 DDP 相关的主要模块/类包括:torch.distributed和 torch.nn.parallel.DistributedDataParallel()。
adaptfp16.MixedPrecision_TrainingPolicy 类
实现对训练过程中自动混合精度自适应策略的实例化,自适应策略包括时间混合精度、时间学习率混合精度策略、损失函数混合精度策略。
初始化参数:
参数 | 类型 | 是否必填 | 参数说明 | 示例 | 默认值 |
policy | INT | 是 | 自适应混合精度策略, 0:时间混合精度,适用于通用自适应情况; 1:时间学习率混合精度策略,适用于训练过程中某一阶段 loss 波动出现异常的情况; 2:损失函数混合精度策略,适用于训练过程中 loss 下降过快或过慢情况。 | 0 | 无 |
start_time | INT | 否 | 开启自适应混合精度的开始时间,一般建议设为10。策略为0和1时必填,为2时非必填。 | 10 | 10 |
end_time | INT | 否 | 开启自适应混合精度的结束时间,一般建议设为最后一个 epoch 时间。策略为0和1时必填,为2时非必填。 | 1000 | None |
hold_time | INT | 否 | 开启策略1时的保持时间,在保持时间内采用统一策略:开启或者不开启。一般建议为训练过程中 loss 异常波动的持续时间。策略为1时必填,为0和2时非必填。 | 20 | None |
interval_time | INT | 否 | 开启策略2的间隔时间,默认值为1000,即每间隔1000轮 epoch 开启策略2。策略为2时需要填写,为0和1时无需必填。 | 1000 | 1000 |
interval_hold_time | INT | 否 | 在 interval_time 间隔时间开启策略2后的保持时间,默认值为100,如 interval_time 为1000,即在1000-1100,2000-2100...开启策略2。策略为2时需要填写,为0和1时无需必填。 | 100 | 100 |
实例化对象:
对象 | 类型 | 对象说明 |
policy | MixedPrecision_TrainingPolicy 类 | 训练过程中自动混合精度自适应策略的实例化对象 |
enable_mixed_precision 函数方法
属于 MixedPrecision_TrainingPolicy 类,根据输入的参数得到当前 epoch 是否需要开启自动混合精度。
输入参数:
参数 | 类型 | 是否必填 | 参数说明 | 示例 | 默认值 |
epoch | INT | 是 | 当前的 epoch | 20 | 无 |
scaler | torch.cuda.amp.GradScaler | 是 | 梯度缩放实例化对象 | scaler | 无 |
lr | float | 否 | lr 是当前 epoch 的学习率 | 0.01 | None |
loss | float | 否 | loss 是上一轮 epoch 的损失值 | 0.1 | None |
输出参数:
输出参数 | 类型 | 参数说明 |
mixed_precision | BOOL | 输入的参数得到当前 epoch 是否需要开启自动混合精度,是返回 TRUE,否则返回 FLASE。 |
?