• 课程引入:

    • 课程背景:使用AI应用输出图片或文字需要算力,算力源于底层硬件,提出如何使用底层硬件进行训练或推理的问题。
    • 课程目标:了解CANN是什么,掌握CANN中包含的开发工具,以帮助AI应用更好使用底层算力提升训练或推理效率。
  • CANN简介:

    • 昇腾AI产业:是以昇腾AI基础软硬件平台为基础构建的人工智能计算产业,包含多种硬件及软件框架。
    • CANN作用:对上支持多种AI框架,对下服务昇腾AI硬件,在中间起承上启下作用(调用下层算力服务上层应用),通过多种技术释放昇腾AI处理器算力,提供多层次编程接口。
  • CANN功能特性:

    • 算子开发:提供很多生成硬件的亲和算子,在生成硬件上运行速度和效率更高。
    • 模型训练:可基于CANN调用底层昇腾算力在昇腾硬件上快速训练模型,也可将其他硬件上训练好的模型迁移到昇腾硬件上。
    • 推理应用开发:基于训练好的模型在昇腾硬件上进行推理相关应用的开发或部署。在这里插入图片描述
  • CANN整体架构:处于中间层,包含图引擎工具、算子开发语言、算子加速库等围绕其特性构建的工具,凸显承上启下位置。

  • CANN组件功能:

    • Ascendcl:基于C语言构建的API库,提供模型加载执行及多媒体数据处理功能,可用于昇腾CANN平台上的深度学习模型推理计算、图像处理和算子调度应用开发,应用开发流程包括创建项目目录、准备模型、开发应用、编译应用和运行。
    • pyacl:将Ascendcl Python化,可基于Python语法实现CANN平台上的应用推理开发,流程与Ascendcl类似。
    • GE(图引擎):提供统一的图开发接口,支持多种AI框架接入,允许开发者自定义图结构,还提供计算图优化、多流并行内存复用和模型下沉等技术手段提升模型执行性能。
    • 昇腾C:针对算子开发的编程语言,支持C和C++,兼具开发效率和运行性能,可帮助开发者基于昇腾AI硬件高效实现自定义创新算法,具有匹配用户开发习惯、提供多种API、支持并行调度、结构化核函数编程和CPU NPU孪生调试等优势。
    • ACL(算子加速库):提供在昇腾上优化算子的功能和昇腾的亲和算子,可在昇腾硬件上提升算子执行效率,优化训练和推理速度。
    • HCCL(集合通信库):提供C和Python两种语言接口,C语言接口用于单算子模式下的框架匹配,Python语言接口用于图模式下的框架适配,内置分布式场景下的通信算法和框架,可提升分布式场景下不同计算节点间的通信效率,优化训练效率。
  • CANN总结功能:

    • 使能大模型并行加速:通过HCCL进行分布式通信,图引擎优化算子结构,释放昇腾芯片算力。
    • 高效的原生开发与生态迁移:基于相关工具可快速实现算法开发,也可将其他平台算法迁移到昇腾平台。
    • 全面开放生态兼容:可兼容当前主流框架,如Pytorch、Tensorflow等。
  • 大模型分布式训练:

    • 训练问题:大模型训练存在显存和算力问题,如GPT3参数量大,训练时占用内存多,单张计算卡或单台服务器无法支撑训练任务。
    • 注意要点:训练时需注意可部署,将模型拆分部署在不同节点;通信快,可基于HCCL优化;算得快,利用CANN工具优化算子执行效率。
    • 并行策略:支持多种模型并行策略,如流水线并行、数据并行等,还可通过重计算等策略节约内存,缩短模型训练时间,提供多种优化attention机制的方式。在这里插入图片描述
  • 课程总结:提出思考题,回顾CANN完成的功能,如算子优化、分布式通信优化、计算图优化等,鼓励有想法的人员通过链接进一步学习https://www.hiascend.com/software/cann。
    在这里插入图片描述

算子 = AI 计算里最小、不可拆分的基础运算单元

Logo

CANN开发者社区旨在汇聚广大开发者,围绕CANN架构重构、算子开发、部署应用优化等核心方向,展开深度交流与思想碰撞,携手共同促进CANN开放生态突破!

更多推荐