aboutInfra
AI Infra的定义
Infra 是 Infrastructure(基础设施) 的缩写。
简单来说:
Infra不是直接给用户提供具体功能的业务,而是为上层软件提供运行所需要的基础能力。
例如一个普通网站:
1 | 用户 |
其中:
- 前端:用户直接使用
- 后端:实现业务逻辑
- 数据库:保存数据
- 服务器:提供计算资源
而服务器、网络、存储、数据库等底层能力,就属于软件系统的:
Infrastructure
为什么叫“基础设施”?
可以类比现实世界。
一个城市:
1 | 城市 |
这些东西通常不是最终产品。
例如:
用户不是为了“用电网”才去买手机。
但是:
没有电网,手机也很难正常工作。
因此:
1 | 基础设施 |
软件里的Infra也是同样的思想。
什么是AI Infra?
AI Infra就是:
为了让AI模型能够训练、部署、运行、扩展和被上层应用稳定使用,而建立的一整套底层计算、存储、网络、调度、模型服务和工程基础设施。
简单理解:
1 | AI Application |
因此:
AI Infra解决的不是“模型应该回答什么”,而是“模型如何高效、稳定、低成本地运行起来”。
AI系统为什么需要Infra?
一个非常简单的LLM:
1 | 用户 |
看起来非常简单。
但如果真正自己运行一个大型模型,就会出现大量问题:
1 | 模型文件放在哪里? |
这些问题都不是单纯的:
“怎么训练一个模型?”
而是:
“怎么让模型成为一个稳定运行的计算服务?”
这就是AI Infra要解决的问题。
AI Infra的位置
可以把整个AI技术栈简单分成:
1 | ┌──────────────────────────────┐ |
越往上越接近用户。
越往下越接近计算机硬件。
Infra到底“做什么”?
可以把AI Infra的工作总结成几个核心问题:
1 | 1. 算什么? |
因此AI Infra本质上是在做:
计算资源的管理 + AI计算任务的调度 + 模型运行的优化 + 服务的工程化。
AI Infra的核心组成
AI Infra不是一个单独的软件。
它通常包含多个层次。
1 | AI Infra |
1. Compute
AI Infra最底层的东西之一就是:
Compute(计算资源)
主要包括:
1 | CPU |
传统Web应用:
1 | CPU |
AI应用:
1 | GPU |
因为深度学习涉及大量矩阵运算,所以GPU成为AI计算的重要硬件。
2. GPU Cluster
如果只有一张GPU:
1 | GPU |
模型规模变大以后,一张GPU可能放不下。
例如:
1 | GPU 1 |
于是需要:
GPU Cluster
即:
1 | GPU |
这时候又产生新的问题:
1 | 任务应该放到哪个GPU? |
这就是AI Infra的重要工作。
3. Scheduling
Scheduling就是:
调度。
例如现在来了三个任务:
1 | Task A |
服务器有:
1 | GPU 0 |
调度系统需要决定:
1 | Task A → GPU 0 |
如果GPU不够:
1 | Task A → GPU 0 |
GPU释放以后:
1 | GPU 2 |
因此:
Scheduling决定“谁什么时候用什么计算资源”。
4. Model Serving
训练好的模型不能直接让用户调用。
需要把模型变成一个:
Model Service
例如:
1 | 用户 |
例如:
1 | POST /chat |
服务器:
1 | Request |
这就是:
Model Serving
5. 为什么Model Serving很重要?
假设只有一个用户:
1 | Request |
非常简单。
但是如果同时有1000个用户:
1 | 1000 Requests |
如果一个请求一个请求执行:
1 | Request 1 |
GPU可能没有得到充分利用。
因此需要:
Batching
6. Batching
假设有:
1 | Request A |
传统方式:
1 | A → GPU |
Batching:
1 | A |
一次让GPU处理多个请求。
这样可以提高:
GPU利用率和吞吐量。
7. Continuous Batching
LLM还有一个特殊问题。
不同请求的生成长度不一样:
1 | Request A → 100 tokens |
如果必须等待所有请求结束再组成下一批:
1 | A ───────── |
GPU资源可能被浪费。
Continuous Batching可以让:
1 | A完成 |
也就是:
请求动态加入和退出Batch。
这类技术是现代LLM Serving的重要优化方向。
8. KV Cache
LLM生成文本的时候,并不是每生成一个Token都从零开始计算。
Transformer会产生:
Key / Value Cache
简称:
KV Cache
例如:
1 | 输入: |
模型计算过程中产生:
1 | K |
后续生成:
1 | RAG |
可以复用之前的计算结果。
因此:
KV Cache可以减少重复计算,提高LLM推理效率。
但是它也会占用大量GPU显存。
于是AI Infra又要解决:
1 | KV Cache怎么管理? |
9. Model Parallelism
如果一个模型太大:
1 | Model |
可以把模型拆开:
1 | Model |
这就是:
Model Parallelism
多个GPU共同运行一个模型。
10. Data Parallelism
另外一种方式是:
1 | GPU 0 → Model |
每个GPU运行一个模型副本。
然后:
1 | Request |
这种方式更适合:
提高服务吞吐量。
11. Distributed Training
训练大型模型往往需要:
1 | GPU 0 |
共同训练。
例如:
1 | Dataset |
这里需要解决:
- GPU之间通信
- 梯度同步
- 数据切分
- 参数同步
- Checkpoint
- 故障恢复
因此:
训练基础设施也是AI Infra的重要组成部分。
12. Storage
AI系统会产生大量数据:
1 | Model |
例如一个模型:
1 | model.safetensors |
因此需要:
1 | Object Storage |
AI Infra需要解决:
数据放在哪里,以及如何快速读取。
13. Network
AI系统里的网络也非常重要。
特别是:
1 | GPU 0 |
如果GPU之间通信很慢:
1 | 计算速度很快 |
最终整个系统性能反而受到网络限制。
因此AI Infra需要关注:
1 | Bandwidth |
14. MLOps
传统软件:
1 | Code |
AI系统:
1 | Data |
所以AI需要一套:
Machine Learning Operations
也就是:
MLOps
它负责模型从开发到生产的整个生命周期。
15. Model Registry
模型不断训练会产生:
1 | Model v1 |
因此需要记录:
1 | 模型版本 |
例如:
1 | Model v3 |
如果出现问题:
1 | Production |
这就是模型版本管理。
16. Evaluation
AI系统不能只看:
“程序有没有报错。”
还要判断:
模型回答得对不对。
例如:
1 | Question |
评估:
1 | Accuracy |
因此AI Infra还需要:
Evaluation Infrastructure
17. Observability
系统上线之后,需要知道:
1 | 现在有多少请求? |
因此需要:
Observability(可观测性)
主要包括:
1 | Logs |
即:
1 | 日志 |
18. AI Infra最关心的几个指标
传统Web服务经常关注:
1 | QPS |
AI系统除了这些,还会特别关注:
Throughput
单位时间处理多少Token / Request。
1 | tokens / second |
Latency
请求需要多久。
例如:
1 | TTFT |
LLM通常不仅关心:
“多久返回?”
还关心:
“多久开始吐出第一个Token?”
GPU Utilization
GPU利用率:
1 | GPU利用率 |
通常说明GPU计算资源利用比较充分。
Memory Usage
特别关注:
1 | GPU VRAM |
因为AI模型非常吃显存。
Cost
最终还需要考虑:
1 | GPU成本 |
因此:
AI Infra的核心目标之一就是降低单位AI任务的计算成本。
AI Infra和普通Infra的区别
| 对比维度 | 传统Infra | AI Infra |
|---|---|---|
| 核心计算 | CPU为主 | GPU/加速器 |
| 主要任务 | Web、数据库、服务 | Training、Inference |
| 数据特点 | 结构化数据为主 | Dataset、Model、Embedding |
| 资源特点 | CPU、Memory | GPU、VRAM |
| 调度 | Server调度 | GPU/AI Workload调度 |
| 性能指标 | QPS、Latency | Token/s、TTFT、GPU利用率 |
| 核心优化 | 服务稳定性 | 计算效率 + 显存 + 吞吐 |
| 模型管理 | 一般没有 | Model Registry |
| AI评估 | 较少 | 非常重要 |
| 成本 | 服务器成本 | GPU计算成本非常高 |
AI Infra与AI Application的区别
例如我们做一个:
AI客服
用户看到的是:
1 | 聊天窗口 |
这是:
AI Application
但是背后可能存在:
1 | AI客服 |






