检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
Dit模型Pytorch迁移与精度性能调优 场景介绍及环境准备 训练迁移适配 精度对齐 性能调优 父主题: GPU业务迁移至昇腾训练推理
torchrun --nnodes=1 --nproc_per_node=8 train.py --model DiT-XL/2 --data-path imagenet/train --global-batch-size 128 正常训练回显日志: 父主题: Dit模型Pytorch迁移与精度性能调优
性能调优 Profiling数据采集 使用Advisor工具分析生成调优建议 调优前后性能对比 父主题: Dit模型Pytorch迁移与精度性能调优
图1 结果对比 在MindSpore Lite 2.0.0版本中,Stable Diffusion的五个模型的精度都能够保证一致性,但是在最新的2.1.0版本中,会出现text_encoder模型精度不一致的情况。该问题后续会发布补丁进行修复。 父主题: 模型精度调优
父主题: Dit模型Pytorch迁移与精度性能调优
按照建议信息做如下修改: 亲和优化器使能,在train.py中修改优化器为apex混合精度模式下的DDP优化方式(修改点:注释第161和167行,增加第168~170行)。 二进制调优使能,减少算子编译耗时,在train.py头文件导入之后添加 (修改点:增加第37行)。
Profiling数据采集 在train.py的main()函数Step迭代处添加配置,添加位置如下图所示: 此处需要注意的是prof.step()需要加到dataloder迭代循环的内部以保证采集单个Step迭代的Profiling数据。 更多信息,请参见Ascend PyTorch
调优前后性能对比 在完成上一章几类调优方式之后,在单卡场景下实测性能调优比对结果如下表所示: 设备 batch_size Steps/Sec 1p-GPU A800 16 3.17 1p-NPU snt9b 313T 16 2.17 1p-NPU snt9b 313T调优后 16
msprobe API预检 msprobe是MindStudio Training Tools工具链下精度调试部分的工具包,主要包括精度预检、溢出检测和精度比对等功能,目前适配PyTorch和MindSpore框架。这些子工具侧重不同的训练场景,可以定位模型训练中的精度问题。
W4A16量化 大模型推理中,模型权重数据类型(weight),推理计算时的数据类型(activation)和kvcache一般使用半精度浮点FP16或BF16。量化指将高比特的浮点转换为更低比特的数据类型的过程。例如int4、int8等。
精度问题根因和表现种类很多,会导致问题定位较为复杂,一般还是需要GPU上充分稳定的网络(包含混合精度)再到NPU上排查精度问题。常见的精度调测手段,包含使用全精度FP32,或者关闭算子融合开关等,先进行排查。
使用自动分组智能标注作业 为了提升智能标注算法精度,可以均衡标注多个类别,有助于提升智能标注算法精度。ModelArts内置了分组算法,您可以针对您选中的数据,执行自动分组,提升您的数据标注效率。
常用的剪枝技术包括:结构化稀疏剪枝、半结构化稀疏剪枝、非结构化稀疏剪枝。 FASP剪枝 FASP剪枝是一种结构化稀疏剪枝方法,能有效降低模型显存以及需要部署的资源依赖,减小推理过程中的计算量,降低增量推理时延,提升吞吐。
top_p 否 1.0 Float 控制要考虑的前几个tokens的累积概率的浮点数。必须在 (0, 1] 范围内。设置为1表示考虑所有tokens。 temperature 否 1.0 Float 控制采样的随机性的浮点数。较低的值使模型更加确定性,较高的值使模型更加随机。
top_p 否 1.0 Float 控制要考虑的前几个tokens的累积概率的浮点数。必须在 (0, 1] 范围内。设置为1表示考虑所有tokens。 temperature 否 1.0 Float 控制采样的随机性的浮点数。较低的值使模型更加确定性,较高的值使模型更加随机。
这些子工具侧重不同的训练场景,可以定位模型训练中的精度问题。 支持精度预检,可扫描训练模型中的所有API进行API复现,给出精度情况的诊断和分析。
依据开发者提供的标注数据及选择的场景,无需任何代码开发,自动生成满足用户精度要求的模型。可支持图片分类、物体检测、预测分析、声音分类等场景。可根据最终部署环境和开发者需求的推理速度,自动调优并生成满足要求的模型。
例如:需要根据训练节点输出的精度信息来决定是重新训练还是进行模型的注册操作时可以使用该节点来实现流程的控制。
在性能测试任务中,与精度测试不同,并不需要用户指定对应的输入(inDataFile)和输出的标杆数据(benchmarkDataFile),benchmark工具会随机生成一个输入进行推理,并统计推理时间。执行的示例命令行如下。
MindSpore Lite问题定位指南 在MindSpore Lite使用中遇到问题时,例如模型转换失败、训练后量化转换失败、模型推理失败、模型推理精度不理想、模型推理性能不理想、使用Visual Studio报错、使用Xcode构建APP报错等,您可以先查看日志信息进行定位分析