高通云AI 100开发者指南(一)
1 介绍
高通云端AI 100加速卡和配套的软件开发工具包(SDK)提供卓越的动力和性能能力,满足云数据中心、边缘计算和其他机器学习(ML)应用不断增长的推断需求。云端AI 100卡由AIC100系统芯片(SoC)提供动力支持,专为ML推断工作负载量身定制。应用程序和平台SDK提供了编译、优化和在云端AI 100硬件上运行来自流行框架(如PyTorch、TensorFlow、ONNX、Caffe和Caffe2)的深度学习模型的能力。
1.1 推断工作流程和软件栈
在高层次上,云端AI 100推断工作流程包括以下步骤:
1.从使用常见ML框架创建的训练好的神经网络生成适用于推断的网络。
2.使用Apps SDK加载和编译适用于推断的网络。网络可以通过以下方式加载:
a.直接通过模型加载器
b. 或间接通过图形API
3.编译器生成网络二进制文件。
4.使用平台运行时在云端AI 100硬件上执行网络二进制文件。
以下图示展示了云端AI 100推断工作流程的高级概述以及涉及的所有软件和硬件组件。
云端AI 100软件栈为ML应用开发者和系统集成商提供了一整套全面的开发工具,用于在各种用例中创建和部署ML推断解决方案。
下图强调了这一全面的全栈解决方案。
1.2 软件包
高通提供了两个软件包——Apps SDK和Platform SDK。
1.2.1 Apps SDK
Apps SDK包含编译器和工具,用于从不同的ML框架中导入、优化和编译神经网络。Apps SDK仅支持x86平台,不支持Arm aarch64。
Apps SDK提供以下工具和工作流程:
从不同框架中导入和编译网络
精度分析
包括量化在内的性能优化
自定义算子
组成有向无环图
性能剖析(资源等)
1.2.2 Platform SDK
云端AI 100(AIC100)的Platform SDK包括用于AIC100硬件的固件镜像、安装脚本、内核驱动程序、AIC推断运行时库以及用于64位x86和64位Arm主机系统的测试应用和工具。Platform SDK提供运行已编译神经网络的功能、用于验证软件安装的测试应用、硬件功能以及用于管理、监控、剖析和捕获卡和日志信息的工具。
1.2.2.1 云端AI 100固件
AIC100 SoC上的几个子系统(QSM、NSP等)在SoC启动时需要加载固件镜像。AIC100固件的关键功能如下:
安全启动
热管理和功耗控制
卡片内存和I/O管理
推断状态管理(网络加载、激活、停用)
SoC资源的诊断和监控
基带管理控制器通信
根据卡片SKU,AI 100启动可以是无闪存或混合启动。以下是启动流程的高级描述。
在两种情况下,启动都从执行主引导加载程序(PBL)开始,该程序在给卡片供电时位于SoC内部。无闪存和混合启动之间的主要区别如下:
无闪存启动:PBL通过PCIe从主机下载次级引导加载程序(SBL)。此时,卡片无法响应用于外带(OOB)遥测的请求。
混合启动:PBL从板载闪存中下载SBL。此时,最低限度的遥测可用 - 卡片能够响应某些遥测的OOB请求。
在两种启动情况下,当SBL固件执行完毕后,剩余的固件镜像 - AI 100服务管理器运行时固件(QSM RT FW)和神经信号处理器根映像固件(NSP RI FW) - 将通过PCIe从主机下载并在AI 100上执行。这完成了两种情况下的卡片启动。
1.2.2.2 云端AI 100安全性
云端AI 100设备硬件和软件安全性在数据中心或边缘部署时提供对内部和外部攻击的保护。典型的攻击可能包括:
使用未经授权的固件启动
安装持久性恶意软件
恶意或行为不端的推断作业破坏系统固件或其他推断作业
恶意或行为不端的主机应用程序破坏其他主机应用程序拥有的推断作业。
未经授权使用调试功能
使用过时的固件运行设备
使用假冒的AIC100 SoC
关键的硬件安全特性包括:
硬件信任根以实现安全启动
AIC100 SoC ROM是不可变的信任根
通过加密方式扩展信任根
硬件访问控制机制
用于PCIe DMA事务的内存保护单元
地址转换单元(ATU)约束的3个BARs,用于内存映射I/O
计算和内存管理单元,用于隔离神经网络应用程序
关键的软件安全特性包括:
无闪存和混合安全启动
固件回滚保护
使用调试策略在启用安全启动的设备上启用调试的能力
1.2.2.3 云端AI 100 Linux运行时
云端AI 100 Linux运行时是在Linux主机上运行的软件堆栈。它为推断应用程序提供软件接口,并为云端AI 100设备提供管理/监控工具。
Linux运行时由两个主要组件组成:
用户空间库 是由推断应用程序和管理/监控应用程序加载的共享库。应用程序使用此库中公开的API与云端AI 100设备通过内核驱动程序进行通信。
内核驱动程序 云端AI 100内核驱动程序是在Linux内核中管理云端AI 100硬件的软件组件,并通过用户空间库向用户空间应用程序提供接口。
以下简化的块图显示了整体软件环境中的这两个组件的上下文。