最近在研究 AI Infra、大模型推理优化和 GPU 计算软件工程,系统梳理了一些值得学习的技术资料、开源项目以及实践方向。
本文主要面向已经具备 Python、后端开发或 AI Agent 开发基础,希望进一步进入 GPU 软件、模型推理、AI 框架适配和异构计算领域的开发者。
一、为什么要学习 GPU 计算软件?
随着大语言模型在企业应用、端侧设备及数据中心逐渐落地,AI 工程师面对的问题不再局限于如何调用模型 API。
更深入的工程问题包括:
-
如何让 PyTorch 支持一种新的 GPU?
-
为什么相同模型在不同 GPU 上的性能差距很大?
-
vLLM 是怎样管理 KV Cache 和请求调度的?
-
一款国产 GPU 如何兼容主流大模型?
-
GPU Kernel 的计算与访存瓶颈如何定位?
-
如何开发一套模型适配自动化测试平台?
这些问题都涉及 GPU 计算软件体系。
一个典型的 AI 模型执行链路可以抽象为:
AI Model
|
v
PyTorch / Transformers
|
v
Inference Engine
|
v
GPU Framework Backend
|
v
GPU Runtime / Compute Libraries
|
v
GPU Driver
|
v
GPU Hardware
需要说明的是,这是一张概念架构图。实际系统中,推理引擎、深度学习框架及设备后端之间的关系可能因实现而不同,不一定是严格的线性调用链。
对于软件工程师来说,这些层级对应不同的发展方向。
| 技术方向 | 主要工作 |
|---|---|
| AI Application | Agent、RAG、AI 应用开发 |
| AI Infrastructure | 模型部署、服务调度、性能优化 |
| AI Framework | PyTorch、设备后端、算子适配 |
| GPU Runtime | 设备管理、执行调度、显存管理 |
| GPU Compiler | 编译器、指令映射、算子优化 |
| GPU Kernel | 并行计算、访存优化、计算性能 |
如果希望从 AI 应用开发进一步进入 AI Infra 或 GPU 软件领域,就需要逐步建立对这些技术层的理解。
二、首先明确:应该掌握哪些技术栈?
我将学习内容分为六个模块。
| 模块 | 核心技术 | 学习目标 |
|---|---|---|
| 系统编程 | Linux、C++、CMake、GDB | 能阅读和调试底层软件 |
| GPU 编程 | CUDA、OpenCL、GPU Kernel | 理解 GPU 并行执行 |
| AI 框架 | PyTorch、ATen、Dispatcher | 理解模型如何执行算子 |
| 推理引擎 | vLLM、llama.cpp、SGLang | 理解模型推理系统 |
| 性能优化 | Nsight、Profiler、Benchmark | 定位性能瓶颈 |
| 异构计算生态 | ROCm、MUSA、设备后端 | 理解不同 GPU 的软件适配 |
其中,建议最先学习:
Python + C++ + Linux + PyTorch + GPU Computing。
Python 用于模型、测试、自动化与工具开发;C++ 用于理解框架底层与系统软件;Linux 是许多 GPU 研发环境的重要基础。
CUDA 则可以作为学习 GPU 并行编程的切入点。
不过,CUDA 属于 NVIDIA 生态,不能认为所有 GPU 都原生支持 CUDA。学习时应重点掌握能够跨硬件迁移的并行计算原理。
三、值得关注的微信公众号与中文技术社区
对于 GPU 软件工程领域,我更推荐关注具有技术教程、源码分析和工程实践内容的社区,而不是只追踪 AI 新闻。
3.1 NVIDIA 企业开发者社区
推荐程度:★★★★★
官方社区:
重点关注:
-
CUDA Programming
-
GPU Memory
-
GPU Kernel Optimization
-
Nsight Systems
-
TensorRT-LLM
-
多 GPU 计算
-
推理加速技术
推荐理由:
NVIDIA 拥有成熟的 GPU 计算生态。通过其技术文章,可以建立对 GPU 编程、Runtime 和性能工具的完整认识。
建议在公众号中搜索:
CUDA、Nsight、TensorRT、GPU 性能优化。
3.2 AI 前线
推荐程度:★★★★☆
重点关注:
-
AI Infra
-
大模型工程化
-
推理系统
-
企业 AI 平台
-
模型部署架构
-
生产环境中的技术实践
推荐理由:
对于已经有 AI 应用开发经验的工程师,AI 前线的工程实践内容适合用于了解如何从单个模型调用扩展到生产级系统。
3.3 极市平台
推荐程度:★★★★☆
网站:
重点关注:
-
计算机视觉
-
模型推理部署
-
边缘 AI
-
算法工程化
-
嵌入式计算
-
模型优化
如果未来对机器人、无人机或端侧智能感兴趣,可以持续关注相关技术文章。
3.4 机器之心
网站:
主要用于了解:
-
新模型架构
-
深度学习框架
-
开源模型
-
AI 研究进展
-
重要技术论文
建议优先阅读包含论文、源码、实验数据的技术内容。
3.5 量子位与智东西
量子位:
智东西:
这两类媒体更适合跟踪:
-
国产 GPU 产品
-
AI 芯片企业
-
算力产业发展
-
机器人与边缘计算
-
软硬件生态合作
它们可以帮助了解产业动向,但不应替代技术文档和实践。
四、GPU 编程入门:CUDA Programming Guide
官方文档:
这是 GPU 计算学习中非常重要的一份资料。
4.1 建议掌握的核心概念
首先理解 CPU 和 GPU 的并行计算差异。
然后依次学习:
-
Thread、Block、Grid。
-
Warp 与 SIMT。
-
Global Memory。
-
Shared Memory。
-
Register。
-
Memory Coalescing。
-
Synchronization。
-
Kernel Launch。
-
Occupancy。
-
Compute Bound 与 Memory Bound。
4.2 第一个 GPU 编程实验
建议从 Vector Addition 开始。
#include <cuda_runtime.h>
__global__ void vectorAdd(
const float* a,
const float* b,
float* c,
int n
) {
int i = blockIdx.x * blockDim.x + threadIdx.x;
if (i < n) {
c[i] = a[i] + b[i];
}
}
这个例子虽然简单,但能够帮助理解 GPU 的任务划分机制。
之后可以继续实现:
-
Reduction。
-
Matrix Multiplication。
-
Softmax。
-
LayerNorm。
-
简单的 Attention 计算。
不建议刚开始就尝试手写完整的高性能 FlashAttention。
先理解基本并行模型,再进入性能优化会更有效。
五、PyTorch 内部机制:理解模型如何在 GPU 上执行
官方教程:
https://docs.pytorch.org/tutorials/extension.html
PyTorch 源码:
如果想学习 GPU 框架适配,PyTorch 是非常重要的研究对象。
5.1 需要理解的几个模块
-
Tensor。
-
Autograd。
-
ATen。
-
Dispatcher。
-
Operator Registration。
-
Device Backend。
-
Custom Operator。
-
C++ Extension。
例如:
import torch
x = torch.randn(1024, 1024, device="cuda")
y = torch.matmul(x, x)
看起来只有几行 Python,但背后需要完成设备选择、张量内存管理、算子分发和 GPU 执行。
一个值得深入研究的问题是:
PyTorch 如何根据 Tensor 所在的设备,选择不同的底层算子实现?
5.2 新硬件如何接入 PyTorch?
PyTorch 提供 PrivateUse1 等机制,帮助第三方硬件加速器集成设备后端。
官方资料:
Facilitating New Backend Integration by PrivateUse1 --- PyTorch Tutorials 2.14.0+cu130 documentation
值得重点研究:
-
设备后端注册。
-
算子实现。
-
Tensor 数据传输。
-
设备内存管理。
-
框架兼容性测试。
-
数值正确性验证。
这对于理解国产 GPU 软件生态非常有帮助。
六、大模型推理:重点研究 vLLM
官方文档:
GitHub:
vLLM 是非常值得研究的大模型推理项目。
建议按照以下顺序学习。
6.1 先跑通部署
选择一个能够在现有 GPU 上运行的开源模型。
完成:
-
环境配置。
-
模型加载。
-
API 服务启动。
-
请求调用。
-
日志检查。
6.2 学习推理阶段
重点区分:
Prefill: 处理输入 Token,计算初始上下文表示及 KV Cache。
Decode: 在已有上下文基础上逐步生成新的 Token。
两者的计算特征、访存行为和性能瓶颈存在区别。
6.3 理解 KV Cache
KV Cache 是大模型推理系统中的重要资源。
需要关注:
-
显存占用。
-
长上下文。
-
Batch Size。
-
缓存分配。
-
缓存复用。
-
缓存碎片。
-
请求调度。
6.4 重点学习的推理优化技术
-
PagedAttention。
-
Continuous Batching。
-
Prefix Caching。
-
Quantization。
-
Speculative Decoding。
-
Tensor Parallelism。
-
Pipeline Parallelism。
6.5 建立性能指标体系
| 指标 | 含义 |
|---|---|
| TTFT | 首 Token 延迟 |
| TPOT | 输出 Token 间隔 |
| Tokens/s | 模型生成吞吐 |
| P95 Latency | 95 分位请求延迟 |
| GPU Memory | 显存资源占用 |
| Concurrency | 并发能力 |
学习重点不只是跑出一个数字,还要解释瓶颈为什么出现。
七、深入 GPU 软件生态:AMD ROCm 与摩尔线程 MUSA
如果目标是理解自主 GPU 如何适配主流 AI 框架,不能只研究 NVIDIA CUDA。
推荐另外两套软件生态。
7.1 AMD ROCm
GitHub:
GitHub - ROCm/legacy-rocm-build: AMD ROCm™ Software - GitHub Home · GitHub
官方技术博客:
重点学习:
-
HIP。
-
GPU Runtime。
-
ROCm Compute Libraries。
-
PyTorch ROCm Backend。
-
GPU Kernel。
-
GPU 性能分析。
-
不同硬件的软件兼容。
ROCm 可以帮助理解一套非 NVIDIA CUDA 原生的软件生态如何支持深度学习框架。
7.2 摩尔线程 MUSA
推荐项目:
这两个项目尤其值得阅读。
torch_musa 主要涉及 PyTorch 与 MUSA 计算平台的集成。
vllm-musa 则可以帮助研究大模型推理框架如何适配国产 GPU 软件生态。
建议重点关注:
-
设备后端接口。
-
算子支持。
-
模型执行路径。
-
设备兼容性。
-
Runtime 依赖。
-
自动化测试。
需要说明的是,这些项目仍然在迭代,实际 API 和目录结构应以当前代码为准。
八、性能分析:学习 NVIDIA Nsight Systems
官方资料:
Nsight Systems - Get Started | NVIDIA Developer
GPU 性能优化不能只靠猜测。
需要通过 Profiler 收集真实执行数据。
例如一个模型推理比较慢,可能由以下原因导致:
-
GPU Kernel 本身执行时间过长。
-
显存访问效率低。
-
CPU 提交任务存在瓶颈。
-
CPU/GPU 同步过多。
-
Kernel Launch Overhead 过高。
-
请求 Batch 不合理。
-
内存分配与释放频繁。
Nsight Systems 可以帮助分析系统级执行时间线。
进一步研究单个 CUDA Kernel 时,可以学习 Nsight Compute。
建议完成一个实验:
对比不同矩阵乘法实现的性能,并结合 Profiler 数据解释差异。
需要记录:
-
矩阵形状。
-
数据类型。
-
GPU 型号。
-
Kernel 执行时间。
-
运行次数。
-
性能变化。
-
测试环境。
九、值得长期研究的七个 GitHub 项目
| 项目 | 核心学习价值 |
|---|---|
| vLLM | 大模型推理、KV Cache、Scheduler |
| llama.cpp | C/C++ 推理、量化、跨设备 Backend |
| PyTorch | AI 框架、算子、设备后端 |
| Triton | GPU Kernel、JIT 编译、算子优化 |
| ROCm | GPU Runtime 和计算软件生态 |
| torch_musa | 国产 GPU 的 PyTorch 适配 |
| vllm-musa | 国产 GPU 的推理框架适配 |
我更推荐采用"带着问题读源码"的方式。
例如研究 vLLM:
-
模型请求如何进入 Scheduler?
-
Model Runner 如何调用设备后端?
-
KV Cache 如何分配?
-
不同 GPU Backend 如何接入?
-
性能指标如何采集?
研究 PyTorch:
-
Tensor 如何确定设备?
-
Dispatcher 如何选择算子实现?
-
自定义设备如何注册?
-
CPU 与 GPU 数据如何传输?
-
如何验证一个新算子的正确性?
这样比从头到尾阅读大型仓库更容易形成成果。
十、八周实战学习路线
以下计划适合已经具备 Python 开发经验,每周可以投入约 8---12 小时的开发者。
| 周次 | 学习主题 | 本周交付物 |
|---|---|---|
| 第 1 周 | Linux + C++ 基础 | 一个 CMake 工程及 GDB 调试记录 |
| 第 2 周 | CUDA GPU 编程 | Vector Add、Reduction、MatMul |
| 第 3 周 | GPU 性能分析 | Kernel Profile 报告 |
| 第 4 周 | PyTorch 内部机制 | 自定义 C++/CUDA Operator |
| 第 5 周 | vLLM 模型部署 | 可调用的模型推理 API |
| 第 6 周 | 模型推理 Benchmark | TTFT、TPOT、吞吐测试报告 |
| 第 7 周 | 推理框架与 Backend 源码 | 模型执行链路分析文档 |
| 第 8 周 | 模型适配自动化 | 兼容性与性能回归工具原型 |
这只是入门路线,不意味着八周后就能独立开发 GPU Runtime 或完整硬件后端。
建议最终形成一个综合项目
项目名称:
LLM Inference Compatibility & Performance Lab
主要功能:
-
注册开源模型。
-
自动部署推理服务。
-
管理模型运行配置。
-
执行推理 Benchmark。
-
检查数值正确性。
-
采集显存和性能指标。
-
对比不同版本的结果。
-
自动生成测试报告。
参考技术栈:
Python
PyTorch
vLLM
FastAPI
pytest
Docker
Prometheus
如果有 GPU 性能分析需求,可以加入 Nsight 等工具。
该项目既适合作为 AI Infra 学习实践,也有助于理解模型适配和计算软件研发。
十一、如何判断自己真正学会了?
不建议只用"读完了多少篇文章"衡量学习效果。
可以用以下五个标准评估:
1. 能运行
可以独立配置环境、运行代码、定位基本错误。
2. 能解释
能够解释模型执行流程、GPU 并行模型以及主要性能指标。
3. 能修改
可以修改一个开源项目中的实际模块,而不是只调用 API。
4. 能测量
能够设计 Benchmark,采集数据并解释性能瓶颈。
5. 能交付
能够把项目整理成代码、文档、测试和可复现的实验报告。
从职业能力角度看,第 3---5 项尤其重要。
十二、总结:从会调用模型,到理解模型如何在 GPU 上运行
从 AI 应用开发转向 AI Infra 或 GPU 软件工程,并不是简单换一个框架。
技术关注点会逐渐发生变化:
AI Application
|
v
Model Deployment
|
v
Inference Engine
|
v
AI Framework Backend
|
v
GPU Runtime
|
v
GPU Computing
过去可能更多关注:
-
Prompt 是否有效。
-
Agent 如何调用工具。
-
RAG 检索质量。
-
API 的稳定性。
-
应用功能能否交付。
进一步深入后,则需要关注:
-
模型怎样执行算子。
-
推理请求如何调度。
-
KV Cache 如何管理。
-
GPU 显存如何分配。
-
不同硬件如何适配框架。
-
Kernel 如何利用计算和访存资源。
-
软件与硬件的问题如何分层定位。
我认为最值得长期积累的,不是某一家 GPU 厂商的专有 API,而是模型执行、计算框架、系统软件和硬件之间的通用原理。
这些知识可以帮助开发者从单纯使用 AI 模型,逐步走向开发和优化 AI 计算基础设施。
当然,底层开发同样会受到 AI 编程工具、框架抽象和硬件技术演进的影响。它的价值并不来自"底层技术一定不会被替代",而来自真实系统问题中对正确性、性能、兼容性和工程交付的要求。
对于已经具备 AI Agent、Python 和全栈开发经验的工程师,比较合理的学习路径是:
先跑通 PyTorch + vLLM,再补 GPU 编程与性能分析,最后深入框架后端、计算库与 Runtime。
每完成一个阶段,都尽量形成可复现的项目,而不是只增加一项技术名词。
参考资料
-
NVIDIA CUDA Documentation:CUDA Toolkit Documentation
-
PyTorch Tutorials:Welcome to PyTorch Tutorials --- PyTorch Tutorials 2.14.0+cu130 documentation
-
PyTorch PrivateUse1:Facilitating New Backend Integration by PrivateUse1 --- PyTorch Tutorials 2.14.0+cu130 documentation
-
vLLM Documentation:vLLM
-
NVIDIA Nsight Systems:Nsight Systems | NVIDIA Developer
-
AMD ROCm:GitHub - ROCm/legacy-rocm-build: AMD ROCm™ Software - GitHub Home · GitHub
-
AMD ROCm Blog:AMD ROCm™ Blogs
-
NVIDIA Developer Community:NVIDIA 社区中心 | NVIDIA 开发者
-
Moore Threads torch_musa:GitHub - MooreThreads/torch_musa: torch_musa is an open source repository based on PyTorch, which can make full use of the super computing power of MooreThreads graphics cards. · GitHub
-
Moore Threads vllm-musa:GitHub - MooreThreads/vllm-musa: A high-throughput and memory-efficient inference and serving engine for LLMs · GitHub
建议 CSDN 标签:
#GPU #CUDA #PyTorch #vLLM #AIInfra #大模型推理 #C++ #国产GPU