AI 学习笔记
根据算力(TOPS)估算推理速度
如果已知模型的计算需求(FLOPs)和硬件算力(TOPS),可以用以下公式估算最大可能的推理速度。
FLOPs 是指模型运行一次推理,需要的浮点运算计算次数。注意和FLOPS(大写S)的区别,它表示每秒执行的浮点运算次数。
Ascend 量化工具
在纯CPU的X86服务器或笔记本电脑上,只要安装昇腾CANN开发套件(如Ascend-cann-toolkit),即可使用ATC工具进行模型转换,无需物理连接310B设备。
AMCT的量化校准和模型生成步骤可在纯x86 CPU或NVIDIA GPU(需CUDA环境)上执行。
Yolo的 pytorch 权重文件(模型) 转换为ONNX
预装以下软件:
pip3 install opencv-python opencv-python-headless -i https://mirrors.aliyun.com/pypi/simple
pip3 install onnx=1.16.0 onnxslim onnxruntime -i https://mirrors.aliyun.com/pypi/simple
转换模型 & batchSize 修改
#!/usr/bin/python3
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format='onnx',
opset=12,
batch=16,
data=None,
device=None, # reset to avoid multi-GPU errors
verbose=False,
)
将opset从19降级至12可规避ATC的解析限制. ONNX官方文档指出,opset 12是昇腾早期工具链广泛验证的稳定版本。
batch size
batch size 就是一次推理过程中输入的样本数量。batch size = 4 时,即使你只输入一个样本,模型会进行 4 个样本的推理,并且会用 空数据 填充剩余的批次位置,通常这些空数据会是 全零 或者其他默认值。
转换为OM格式
atc --framework=5 \ # ONNX框架标识
--model=yolov8n.onnx \ # 输入模型路径
--output=yolov8n_310B4 \ # 输出模型名称
--input_shape="images:1,3,640,640" \ # 输入尺寸(Batch,Channel,H,W)
--soc_version=Ascend310B1 # 指定芯片型号
## --insert_op_conf=aipp.cfg
模型INT8量化
amct_onnx calibration --model /home/ai/model/yolov8n.onnx --input_shape "images:1,3,640,640" --data_type "float32" --data_dir ./data/calibration/ --save_path ./results/yolov8n
input_shape 指定模型输入的shape,该shape需要与数据集处理后输入数据shape一致。
–data_type 模型输入数据的类型。模型有多个输入,且数据类型不同,则需要分别指定不同输入的数据类型,指定的输入数据类型必须按照输入节点顺序依次放在双引号中,所有的输入数据类型必须放在双引号中,中间使用英文分号分隔。
AMCT 不支持 动态batch size。
Ascend 转换为RGB的输入
参考下这个AIPP模板https://www.hiascend.com/document/detail/zh/CANNCommunityEdition/800alpha003/devaids/devtools/atc/atlasatc_16_0028.html,使用参考https://portrait.gitee.com/ascend/samples/blob/master/inference/modelInference/sampleResnetAIPP/python/README.md
python3 pip 设置mirror
pip3 config set global.index-url https://mirrors.huaweicloud.com/repository/pypi/simple
更多推荐


所有评论(0)