昇腾AI入门课(PyTorch)
昇腾基础知识介绍
- AI全栈架构
• 芯片 - 芯片使能 - AI框架 - 应用使能
• 芯片使能 - CANN计算加速库,芯片算子库,算子开发工具
• AI框架(华为MindSpore,Pytorch,TensorFlow)
• 应用使能 - ModelArts
•
- 异构计算架构CANN
• 昇腾计算语言接口(AscendComputingLanguage)
• 计算服务层:提供计算库
• 计算编译引擎:提供图编译与TBE算子开发支持
• 计算执行引擎
• 计算基础层
- 模型推理加速架构AscendCL
• 对上对接开发框架和应用程序·对下进行运行管理与任务调度
PyTorch模型迁移 & 调优
- 迁移方案与优点
• 继承torch动态图特性继承pytorch原生使用方式与体系结构新增网络类型与结构只需要进行算子开发与实现
- 达芬奇架构
• Cube:负责矩阵运算Vector:向量运算,算力低于Cube,灵活度高Scalar:标量运算
- 迁移
• 手动迁移
• 分布式,DP改为DDP
• 混合精度,使用apex对原始代码进行修改
• torch.cuda 变为torch.npu
• 多P代码:nccl 变为 hccl
• 脚本转换工具迁移
• 自动迁移(推荐)
• from torch_npu.contrib import transfer_to_npu
日志
- CANN软件安装目录/ascend/log 下存放日志
• plog/plog-pid_*.log 存放在Host侧运行应用程序产生的日志,主要包括接口调用过程中的日志和Device用户态日志
• device-id/device-pid_*.log 存放在Device侧运行应用程序产生的日志,主要包括AICPU算子、HCCP集合通信算子相关的日志
- 日志格式
• Level ModuleName PID PName DateTimeMS FileName:LineNumber LogContent视频课
(一) - 昇腾体系介绍
人工智能发展趋势与挑战
- 发展趋势:在特定领域已超过人类能力,进入场景化应用时代
- 挑战:算法开发难,应用开发难,业务部署难
昇腾全栈架构:硬软件结合
- 处理器,Atlas全家桶,CANN异构计算架构,AI计算框架,应用使能,全流程开发工具链,管理运维工具
• Atlas系列
• 昇腾310,910
• 采用华为自研达芬奇架构
• 加速卡Atlas300
• 集群,服务器
NPU介绍
- 昇腾处理器核心由AI Core构成:矩阵计算单元(Cube)、向量计算单元(Vector)、标量计算单元(Scalar)
- CANN AI异构计算架构
pytorch适配昇腾AI处理器
- pytorch适配方案:动态图特性,继承GPU方法,继承pytorch原生结构,可以实现算子开发与实现,使用方法可以直接指定为device
- pytorch模型迁移:自动迁移(脚本转换库,边训练边转换)工具迁移(先转换脚本,再进行训练)手动迁移(修改脚本进行训练)
• 自动迁移:form torch_npu.contrib import transfer_to_npu
• 脚本转换工具:msFmkTransplt
• 手动迁移:分布式修改,混合精度修改
• 单卡迁移:改变设备多卡迁移:更改设备,切换通信方式
• 报错排查:流同步接口辅助端点,网络拓扑(hook),Host日志(底层BUG)
视频课(二) - AscendCL
AscendCL 在昇腾平台进行神经网络推理的c语言API库
- 主要功能:1、C,Python语言API库2、硬件资源入口3、提供深度学习推理计算,图像预处理等能力
• 基本功能:运行资源管理,内存管理
• 关键功能:图形图像预处理,深度学习推理计算,单算子加速计算
- 应用场景:1、开发应用2、供第三方框架调用3、供第三方开发lib库
AscendCL基本概念
- Host & Device
- 运行资源管理:Device Context stream Task
- 同步 & 异步
• 同步:任务执行完毕再返回异步:调用后直接继续进行任务
• 同步等待接口实现同步异步结合需要显式创建Stream,进行调用异步指令aclError aclrtSynchronizeStream(aclrtStream stream)
- 开发流程
• 准备环境 - 创建代码目录 - 构建模型 - 开发应用 - 编译及运行应用
• 代码目录:Data,Model,Script,Src
• 开发应用:AscendCL初始化,运行管理资源申请,开发关键功能,运行管理资源释放,AsendCL去初始化
• 开发关键功能:图形预处理,模型推理计算,单算子加速