训练千亿参数模型的法宝,昇腾CANN异构计算架构来了
发表于 2022/05/27
2021年4月,“华为云盘古大模型”一炮走红AI人工智能领域。
如果你问:明明明明明白白白喜欢他,但他就是不说,白白喜欢谁?
你的同伴可能还要犹豫3秒钟,而盘古却能轻松地回答出:明明!
诸如此类的「中文同词不同义」的快速语义识别也仅仅是它的雕虫小技而已。
领先的语言理解和模型生成能力,这个大网红瞬间被贴上了“最接近人类中文理解能力”、“全球最大中文语言(NLP)预训练模型”各类标签。
标签不是白帖的,在AI领域,大智慧就意味着大模型,他背后的“千亿参数”、“TB 级内存模型”绝对是他成功的法宝!
模型大,意味着数据也大,你想到如何训练出这样大的模型了么?
盘古的训练以「昇腾AI处理器」为基座,同时借助了「CANN 异构计算架构」,让硬件算力得以充分释放,大大缩短了训练时间!
什么是CANN?
以提升用户开发效率和释放昇腾AI处理器极致算力为目标,昇腾CANN(Compute Architecture for Neural Networks)是华为针对AI场景推出的异构计算架构。它对上支持业界主流前端框架,向下对用户屏蔽系列化芯片的硬件差异,以丰富的软件栈功能满足用户全场景的人工智能应用诉求。
当前CANN已经发布到3.0的版本,统一编程架构,同时支持推理+训练的端、边、云全量场景,实现三大使能。
使能全场景:通过支持业界主流AI框架,支持14+种主流操作系统,实现一次开发,全场景各种硬件形态和运行环境的灵活部署。
使能极简开发:通过统一编程接口AscendCL(Ascend Computing Language),为开发者屏蔽底层处理器的差异,支持开发者只需要掌握一套API,就可以全面应用于昇腾全系列芯片+推理、训练全场景。
使能极致性能:通过软硬协同优化,亲和昇腾的图编译技术,以及超过1200个高性能算子,来释放昇腾芯片的澎湃算力。
CANN的开放能力
CANN为开发者提供算子开发、模型开发、应用开发的全流程开发体验,可覆盖全场景应用。
算子开发
DSL语言开发接口:提供了一套基于内存的开发接口,处理器上的指令映射和调度是自动实现的。开发者仅需要关注算子的数学逻辑计算,不需要了解硬件细节,即可开发出高性能的算子。根据统计可以满足60%以上算子开发需求。
TIK语言开发接口:提供了一套比较完备的基于处理器内部Buffer可见的编程语言,开发者可以自行决定搬进搬出数据量的大小,从而充分发挥芯片的能力,提升开发算子的性能。
模型开发
支持多种模型开发框架MindSpore,TensorFlow, PyTorch, ONNX 等
支持通过标准化的Ascend IR(Intermediate Representation)接口隔离上层框架差异,进行直接构图和模型开发
应用开发
提供一套标准的AscendCL编程接口,提升用户APP编程效率
CANN的硬核技术
高性能算子库:支持包括TensorFlow、Pytorch、Mindspore、Onnx框架在内1200+算子,开发者直接基于内置算子即可开发模型。
自动融合技术: 支持基于算子、子图、SCOPE多维度的自动融合,支持动态DSL融合,可有效减少计算节点,缩短计算时间,让昇腾AI处理器瞬间加速。
异构部署调度框架:充分利用昇腾芯片的异构执行单元,将不同的计算任务分配给最合适的计算引擎,高效协同异步流水,提升计算任务整体效率。
高效的内存生命周期管理算法:兼顾内存的充分复用以及数据交换的效能,实现资源与效率的均衡。
预置的业界主流模型库:华为昇腾Model Zoo提供100+主流模型的代码以及相应的调优参数example,为开发者提供货架式的参考实现,详细信息参见:https://www.hiascend.com/software/modelzoo
高性能的图下沉执行框架:将所有计算下沉到芯片,减少Host CPU与芯片之间的交互时间,实现高性能的训练和推理。
高性能动态图调度:支持基于异步流水的单算子执行框架,支持灵活的H2D、D2H交互,解决PyTorch等框架下动态图模式的高性能运行问题。
业界领先的智能调优:支持基于强化学习、遗传算法、CostModel等多种智能调优算法,提供算子级或者图级调优选择,为用户提供自动的极致性能调优体验。
CANN的5.0版本会给你带来更多想象,了解更多信息,请访问昇腾社区https://www.hiascend.com/。
本页内容