系列文章

  1. 深度学习基本概念
  2. 算力评估基础知识
  3. 大模型相关算子
  4. 华为系算力卡产品调研
  5. Nv系算力卡产品调研

大模型算子

基本知识框架

什么是“算子”


算子(Operator)是实现某种数学运算的最小程序单元。

在大模型中,“算子”就是你写的 matmulconv2dsoftmaxlayernorm 等操作在底层的真正执行者。

举个例子,你写的 PyTorch 代码:

output = torch.nn.functional.softmax(x, dim=-1)

实际上调用的底层是:

  • PyTorch 封装的 softmax算子
  • 底层可能是 C++/CUDA 编写的高效实现
  • 运行时会调用:aten::softmax → libtorch → CUDA kernel

算子的基本分类


类型 示例 特点与挑战
线性算子 matmul、linear、conv 算力占比最高,需要高度优化
归一化算子 batchnorm、layernorm 对内存访问、并发要求高
激活函数 ReLU、GELU、Sigmoid 简单但频繁,需向量化
注意力算子 softmax、mask、scaled dot product 大模型专属,性能瓶颈所在
高阶结构算子 transformer、MoE、RNNCell 组合算子,框架可自动融合优化

与框架的关系


框架(PyTorch、TF、MindSpore)主要负责:

模块 功能
前端API 提供用户调用接口,如 nn.Lineartorch.matmul
中间表示(IR) 如 PyTorch 的 TorchScript / XLA、TF 的 GraphDef
算子注册库 每个算子在 CPU/GPU/NPU 等平台上的实现
执行器/调度器 根据平台调度最优算子,支持自动混合精度、算子融合等

举例:

PyTorch API
↳ TorchScript
↳ ATen 中间算子库
↳ C++/CUDA 实现(如 cudnn、cublas、triton)

大模型中重要的“关键算子”


大模型训练/推理中,主要耗时/算力集中在以下算子:

模块 关键算子
Embedding embedding lookup, layernorm
Attention matmul, softmax, masking, scaled dot
MLP层 matmul, gelu, dropout
输出层 matmul, softmax

算子优化方式


优化手段 简介 示例
算子融合 多个简单算子合并为一个复杂内核 layernorm+gelu
内存布局优化 改变张量内存排列方式,提高访存效率 NCHW → NHWC
低精度优化 使用 FP16 / BF16 / INT8 等混合精度计算 NVIDIA Tensor Core
编译器优化 使用 XLA、TensorRT、Ascend C 等编译执行 HuggingFace + TensorRT
异构调度 CPU/GPU/NPU 之间的算子自动分配 MindSpore、TVM

基本上一个大模型的训练(推理)过程的每一条指令流程就是:

      你写的代码

深度学习框架(如 PyTorch)

┌──────────────┬──────────────┐
算子注册系统 计算图IR编译器
└──────────────┴──────────────┘

选中硬件平台最优算子实现

GPU: cuBLAS/cuDNN, Triton
NPU: TBE, CANN, XPU kernel
CPU: OneDNN, Eigen

算子如何链接代码与硬件

以LayerNorm为例,