希姆计算术语表
硬件产品
-
希姆计算STCP920/STCP950L/STCP950P/STCP980L/STCP980P AI推理加速卡基于NeuralScale架构、软硬件协同设计,可以通过标准的PCIe接口便捷地集成到各类服务器中,从而快速扩展云端推理能力,满足计算机视觉、自然语言处理、语音识别、搜索推荐、LLM等主流AI场景中的推理加速需求。
-
NeuralScale:自研的NPU神经网络计算加速架构,支持基于RISC-V指令集的扩展指令,具有良好的可编程性。
-
MCU:一款兼容RISC-V指令集架构的微控制器。
-
NPU:Neural-network Processing Unit。神经网络处理器,专门面向大规模神经元和突触处理的处理器。采用数据驱动并行计算的架构,非常适合并行计算的场景。
-
NPC:Neural-network Processing Core。自研NPU中的神经网络处理核心。每个NPU中包含多个NPC Cluster。每个NPC Cluster通过NPC Cluster ID唯一标识,对N个NPC Cluster,异构编程环境中使用0至N-1依次标记,同一个NPU中的所有NPC Cluster的ID是连续的。
-
DDR:Double Data Rate Synchronous Dynamic Random-Access Memory。全局内存,访问速度较慢,每个NPC Cluster可用的全局内存,由NPC Cluster内的NPC共享。
-
LLB:Last Level Buffer。共享内存,访问速度较快,每个NPC Cluster可用的共享内存,由NPC Cluster内的NPC共享。
-
L1:本地内存,访问速度最快,每个NPC私有的本地内存。
-
sysDMA:System Direct Memory Access。数据传输通道,用于在NPC Cluster内的共享内存和全局内存间传输数据。
-
IM:Intermediate Buffer。中转缓存, 每个NPC私有的高速内存。
-
PMU:Performance Unit。性能数据采集单元。
-
PMC:Performance Counters。性能数据采集单元统计的计数器。
-
MME:Matrix MAC Engine。矩阵MAC引擎。
-
VME:Vector MAC Engine。向量MAC引擎。
-
MTE:Memory Transfer Engine。内存传输引擎。
-
软件产品
-
STCRP:Stream Computing System Reference Platform。AI加速卡的配套软件以STCRP的形式交付,包括了异构编程环境、AI编译器,以及满足监控调试、部署集成等用途的工具。
-
HPE:Heterogeneous Programming Engine。异构编程引擎,安装HPE后可以识别NPU设备,使用C/C++语言开发异构程序,方便地使用NPU进行并行计算。
-
SHC:Stream Computing Heterogeneous C++。异构编程语言,完整兼容C++17标准,并针对异构程序扩展了语法和函数库,例如支持调用核函数的
<<< >>>符号。 -
核函数:一个核函数对应一个计算任务,由主机端(CPU)部署到设备端(NPU),并在设备端的多个NPC上并行执行。
-
stc-dkms:异构驱动模块,对应有异构驱动stc.ko文件。主机端与设备端使用PCIe总线连接,异构驱动将主机端的操作请求通过PCIe总线传递到设备端。stc-dkms方便异构驱动适应不同的Linux内核版本,不用逐版本手动编译也能保证异构驱动始终可用,主机端和设备端的交互不会因Linux内核版本变化而产生异常。
-
stc-kernel-common:自动添加设备节点规则。
-
hpert:Heterogeneous Programming Engine Runtime。主机端运行时库,为主机端程序提供控制设备端内存访问、核函数执行等操作的接口。
-
npurt:NPU Runtime。设备端程序接口,用于设备端信息打印、内存拷贝等操作。
-
stcc:Stream Computing Heterogeneous C++ Compiler。异构程序编译器,统一编译异构程序中的主机端程序和设备端程序,生成可执行文件。
-
stc-smi:Stream Computing System Management Interface。设备管理工具,管理和监控NPU设备的状态。
-
stc-prof:Stream Computing Profiler。性能调优工具,采集异构程序的性能数据,分析异构程序的性能。
-
stc-vprof:Stream Computing Visual Profiler。可视化性能调优工具,主要用于异构程序的可视化性能分析。
-
stc-gdb:Stream Computing Debugger。异构程序调试工具,监视程序运行状态,获取和修改程序的中间运行结果。stc-gdb完全兼容GDB原生命令,并添加了扩展命令。
-
hpe-example:Heterogeneous Programming Engine Example。HPE示例异构程序。
-
-
HPE-Python:基于HPE异构编程模型和C++语言扩展接口的设计提供的Python层异构编程环境,方便在Python项目中使用HPE的异构编程能力。
-
hpert:HPE主机端运行时模块,提供了设备管理、内存管理、执行控制、流管理相关的接口。
-
stcpti:HPE性能数据采集模块,提供了采集异构程序性能数据的接口,获取MME、MTE等粒度的执行cycle数。
-
-
MLTC:基于MLIR研发的端到端AI编译器,可以将来自不同框架的AI模型编译为适配硬件产品的可执行文件,同时加速AI模型的计算过程,提高系统的健壮性。
-
MLTC设计概念:
-
IR:串联起编译器内各层级和模块的中间表示。中间表示可以有三种形态:用以高效分析和变换的内存表示(in-memory form),用以存储和交换的字节码(bytecode form),以及用以阅读和纠错的文本表示(textural form)。基于使用场景,我们通常会见到不同的设计折中来侧重不同的形态和提供不同程度的兼容性。
-
MLIR:MLIR进一步解耦了中间表示,完整的中间表示被分割成可以按需选取的dialect,其基础设施极大地简化定义各种层级operation和转换。水平方向上,dialect把完整中间表示打散成许多局部中间表示,垂直方向上,MLIR让我们可以对处于不同层级的概念进行建模。
-
lower:在编译器一步步转换程序的过程中,越来越多的高层次的简明的信息被打散,转换成低层次的细碎的指令,这个过程被称为代码表示的递降(lowering)。递降的过程通常会进行某种形式的问题分解(decomposition)或者资源分配(resource assignment)来逐渐贴近底层硬件。
-
Graph Optimizations:对计算图进行等价变化,同时优化图层算子。
-
Group Partition:针对NeuralScale架构的局部性优化,根据存储需求分组算子,提高算子计算时的局部性。
-
GOAT:算子无关的tiling框架,支持针对LLB、MC、L1做tiling优化。
-
-
MLTC工具模块:
-
模型转换工具:解析AI框架导出的模型文件,转换为MLTC自定义的图层IR。
-
模型编译工具:将转换得到的MLIR文件编译为在目标设备上部署的vmfb文件。
-
模型验证工具:将通过MLTC前端转换后模型的MLIR部署到CPU上验证模型。
-
模型部署工具:将编译得到的vmfb文件部署到NPU板卡上。
-
性能分析工具:分析模型执行时性能问题的工具,可获取整网中融合算子详细的性能信息,并详细显示图调度后融合算子每次运行的性能信息。
-
精度分析工具:分析模型执行时精度问题的工具,可帮助您在整网精度调试时,快速定位精度问题的根因,提高精度分析效率。
-
SNQ模型量化工具:对模型进行PTQ量化的工具,可将模型转化为ONNX量化模型。
- PTQ:训练后量化(Post-training Quantization)。一种常见的模型量化技术,它在模型训练完成之后应用,旨在减少模型的大小和提高推理速度,同时尽量保持模型的性能。
-
-
-
STC_LLM:面向LLM自研的推理框架。在AI编译器、手写算子的基础上对LLM的推理过程进行了封装,您可以方便地导入、替换LLM并完成推理任务,简化了LLM的部署和使用过程。在编译阶段支持权重转换、量化预处理、Tensor并行处理超大规模的权重等,在服务阶段支持动态batch管理优化端到端吞吐,在推理阶段支持kernel级别的优化、KV Cache优化等。
-
STC_LLM_DNN:大模型通过手写算子等特殊处理编译后部署LLM的框架。
-
STC_LLM_MLTC:大模型通过MLTC编译器编译后部署LLM的框架。
-
SNC量化工具:Stream Computing Neural Compressor。SNC量化工具是基于英特尔的Neural Compressor构建,支持PyTorch大模型量化。
-
alpha:用于拉平激活值与权重的超参数。
-
smooth quant:一种拉平激活值来减少精度损失的算法。
-
Neural Compressor:一个开源的Python库,它支持在主流深度学习框架上应用流行的模型压缩技术,包括量化、剪枝(稀疏性)、蒸馏和神经架构搜索。
-
C-Eval:一个全面的中文基础模型评估数据集。 包含了13948个多项选择题,涵盖了52个不同的学科和四个难度级别,用以评测大模型中文理解能力。
-
-
npu-exporter:用于获取NPU设备的指标数据或者相关信息并推送给Prometheus,例如NPU设备ID、NPU利用率、内存使用量等。方便您进一步图形化监控资源使用情况,以及根据AI应用的要求设置告警规则,实现指标数据异常时自动告警。
-
-
stc-k8s-device-plugin:部署该插件后,在创建Pod时Kubernetes集群会自动申请使用NPU设备,并跟踪NPU设备的健康状况。
行业术语
-
深度学习模型:深度学习是一种模拟人脑的方式处理数据的方法,可以识别图片、文本、声音和其他数据中的复杂模式,从而生成准确的见解和预测。深度学习模型则是根据深度学习算法构建并执行任务的模型,例如使用ResNet-50识别图像、BERT理解语言,经常以计算图的形式表现其中的计算逻辑与状态。
-
LLM:具有大规模参数和计算能力的大型自然语言处理模型,例如OpenAI GPT系列、Meta Llama系列、阿里Qwen系列等。LLM可以通过大量的数据和参数进行训练,以生成类人的文本或回答自然语言的问题,在文本生成和智能对话等领域有广泛应用。
-
算子:Operator、Op。深度学习模型中的单元,是一个数学逻辑单元,例如二维卷积算子Conv2D。各种算子组成一个有向无环图(Directed Acyclic Graph,DAG),构成一个模型的计算图。
-
深度学习编译器:深度学习模型一般通过深度学习框架构建和训练得到,常见的深度学习框架有PyTorch、TensorFlow、PaddlePaddle等。每个框架都有各自的模型结构存储格式,深度学习编译器用于将基于不同框架构建的模型转换为可以在硬件上运行的指令表达,并在转换的过程中进行针对性的优化,从而高效地完成推理操作。
-
异构计算:Heterogeneous Computing。CPU标量计算的特点导致无法高效处理深度学习中常见的向量计算和矩阵计算,GPU、NPU等设备能够以并行计算的方式高效处理此类计算。一般需要CPU和GPU、NPU等设备配合完成计算任务,而GPU、NPU等与CPU的指令集架构有所区别,因此被称为异构计算。
-
AI加速卡:AI Accelerator。在异构计算场景中,专门用来加速深度学习模型的训练或推理的硬件,例如NVIDIA H100、Google TPU、华为Atlas 300、Habana GOYA等,均为面向云端的AI加速卡。
-
HuggingFace:专注于NLP技术的开源社区和平台,提供一系列的工具和库,帮助开发者更高效地构建、训练、部署各种NLP模型。