“AI Infra”这个标签这两年被贴得到处都是。打开招聘软件技术岗里四五个挂着AI Infra刷技术社区分布式训练、推理加速、GPU池化、模型服务化的文章铺天盖地。但你要真让一个准备转行的人说说AI Infra是什么大概率听到的回答是“搭环境、跑模型、调显存”。我见过太多人从零开始学AI Infra第一步是装显卡驱动第二步是配CUDA第三步跑通一个mnist然后就没有然后了。问题不在于不努力而在于手里只有一棵棵零散的树看不到整片森林。这篇文章想帮你的就是把这片森林的轮廓画出来AI Infra到底解决什么问题零基础该补哪些底子按什么顺序学做什么项目练手以及面试高频考点怎么准备。无论你是后端工程师想转方向、刚毕业的学生想入行还是算法工程师想往系统侧纵深这条路线都可以直接拿来参考。顺便说一句现在AI编程工具已经能帮忙写不少代码但系统设计层面的判断力还是得靠你自己一点点搭起来。1. 扒开AI Infra的壳它到底在解决什么问题1.1 一个AI项目的全链路里Infra工程师卡在哪个环节先看一个生产级AI项目的完整链路数据获取与清洗、特征加工、模型训练、模型评估、模型部署上线、线上监控与迭代。算法工程师的主要精力放在“模型训练”和“模型评估”上研究的是怎么把loss降下去、把准确率提上来。AI Infra工程师则要保证整条链路都能稳定、高效、低成本地运转。落到日常工作中Infra工程师做的事情大概是这些训练阶段帮你把分布式任务跑起来单卡装不下的模型用多卡甚至多机拆分GPU资源不够时做排队和调度避免谁都能抢卡导致任务互相打架模型上线时搭推理服务处理高并发和延迟问题出事的时候排障——是NCCL通信超时还是显存溢出抑或是数据加载卡住了IO。这里可以用一个不太严谨但很直观的类比算法像是研究菜谱的大厨Infra则像是设计后厨动线和供应链的人。菜谱再厉害后厨出不了菜、食材供不上餐厅一样歇菜。很多转行的人容易看轻这一层觉得“不就是搭环境嘛”但实际上大模型训练和推理的每一个环节都藏着系统瓶颈而找到并解决瓶颈正是Infra工程师的饭碗。1.2 四大主流方向先选一个做切入口AI Infra不是一个单一岗位它下面至少可以拆出四个方向。新手入门的时候不需要全部精通但至少要能分清它们各自解决什么问题方向核心工作代表性技术与工具分布式训练把模型训练扩展到多卡多机解决显存、算力和通信瓶颈PyTorch DDP/FSDP、DeepSpeed、Megatron-LM、NCCL推理服务化让模型以低延迟、高吞吐对外提供服务控制推理成本vLLM、Triton、TensorRT、SGLangGPU资源调度管理GPU资源池提升利用率保证多任务稳定运行Kubernetes、Slurm、Ray、GPU虚拟化数据处理与存储让训练和推理任务高效读取数据、持久化模型产物对象存储、分布式文件系统、缓存系统我的建议是入门阶段在“分布式训练”和“推理服务化”里二选一作为主攻方向另外两个作为扩展了解。如果偏底层、喜欢跟硬件和通信打交道从分布式训练入手如果更关注业务落地、希望快速看到线上效果那推理服务化更合适。顺带提一句AI Agent当前特别火但Agent对Infra的挑战本质上还是在推理层工具调用频繁、多轮对话上下文变长、并发请求波动大。理解了推理服务化的底子再去想Agent场景的架构会非常顺畅。1.3 和算法岗最大的差别你不是在调模型你是在调系统算法工程师和Infra工程师虽然是协作关系但思维方式完全不同。算法是实验驱动今天调个学习率明天换个注意力结构天天盯指标曲线。Infra是工程驱动要设计稳定、可扩展、可观测的系统评估一个方案的维度往往是延迟、吞吐、稳定性、成本。很多从算法转Infra的人最难受的不是不会写代码而是思维方式转不过来。遇到线上推理变慢第一反应是“是不是模型结构有问题”而不是先看系统层最近发生了什么变化——是流量涨了GPU温度高了还是某台机器的网卡降速了。AI Infra另一个特点是“向下要懂硬件向上要懂模型”。你不一定要会设计模型但要理解模型的显存占用怎么算、算力需求大概什么量级、推理时KV cache为什么吃内存。这种横跨硬件和算法的视野恰恰是这个方向最有壁垒的地方。2. 零基础阶段的技能底子学什么、学到什么程度、先跳过什么2.1 Python、C、Go三门语言怎么安排优先级编程语言方面我的排序很明确Python第一优先级C第二Go按需。Python必须熟练。AI生态几乎都面向PythonPyTorch、Hugging Face、各种推理框架的接口全是Python。不要求你写出多么花哨的Python代码但至少能清晰可靠地处理数据、写训练循环、调用框架API。建议不要单独刷语法直接在训练脚本里练。C不需要成为专家但一定要能看懂。PyTorch的性能关键路径是C写的vLLM这类推理引擎的核心也是C和CUDA。如果完全不懂C你排查问题就只能停在调API的层面永远深入不进去。我见过很多优秀的AI Infra工程师C水平并不算“精通”但读框架源码足够了。Go是Kubernetes生态的语言调度器、控制器都是Go写的。如果目标是做集群调度和平台方向Go绕不开如果不做调度可以先放一放。有一点要提醒语言学习最好在具体项目里进行不要闷头刷几个月的题再动手。带着问题查资料效率比系统性啃书高得多。2.2 Linux、网络和分布式基础别上来就啃书Linux是AI Infra的工作语言。你需要掌握进程管理、内存管理、文件系统、IO模型这些基本概念还得对容器技术有感觉知道namespace和cgroup解决什么问题。原因很简单GPU任务最终都要跑在Linux机器上排查问题的时候你离不开top、nvidia-smi、pidstat、perf这些工具。网络知识同样关键。分布式训练本质上就是跨节点的通信不理解TCP/IP和RPC的基本模型遇到“训练比预期慢十倍”这种情况会无从下手。你需要知道TCP握手、HTTP/gRPC的通信机制再更近一步了解RDMA、InfiniBand、RoCE这些高性能网络的名字和用途。这里有个学习策略问题千万别买一本《分布式系统》从头啃到尾再动手。分布式系统理论很庞杂AI Infra真正高频用到的就那几个概念——通信原语、一致性、容错、存储抽象。先混个脸熟然后在分布式训练的实验里一个一个验证理解会深得多。2.3 GPU硬件与CUDA概念本地部署时的显存焦虑来源想要理解AI InfraGPU硬件常识是躲不掉的。你需要知道GPU的基本构成流处理器、显存、带宽理解为什么GPU适合并行计算——成千上万个线程同时干活把矩阵乘法这种高密度计算拆开做。CUDA编程模型的核心概念包括host和device的区分、kernel函数、线程组织方式grid、block、thread。新手可以写一个最简单的向量加法内核感受从CPU到GPU的思维切换import numpy as np from numba import cuda cuda.jit def vector_add(a, b, c): i cuda.grid(1) if i a.size: c[i] a[i] b[i] a np.arange(1024, dtypenp.float32) b np.ones(1024, dtypenp.float32) c np.zeros(1024, dtypenp.float32) d_a cuda.to_device(a) d_b cuda.to_device(b) d_c cuda.device_array_like(c) vector_add[(32,), (32,)](d_a, d_b, d_c) d_c.copy_to_host(c)写完这个demo之后再去看那些“AI大模型本地部署配置”的教程你就能看懂显存焦虑的根源了。为什么总有人说72B模型本地跑不起来因为光权重就是一百多GB加上梯度和KV cache单张消费级显卡根本装不下。理解了显存和带宽限制你自然就明白为什么需要量化、KV cache优化、张量并行切分这些手段。2.4 分布式系统的几个核心概念先混个脸熟AI Infra工程师的底子里必须有分布式系统概念但入门阶段不需要深究。先认识这几个词通信原语broadcast、allreduce、allgather、reduce-scatter。分布式训练的核心是梯度聚合而梯度聚合就是allreduce。一致性不是所有场景都要强一致很多AI训练场景能容忍最终一致。容错与恢复训练任务中途挂了怎么办checkpoint和弹性训练解决什么问题。存储抽象训练数据放在分布式文件系统或对象存储里任务才能被调度到任意机器执行。这些概念的价值在于它们能帮你建立起“大规模系统怎么协同工作”的直觉。等到后面实际跑分布式训练时你会发现纸上谈兵的理解和真正调试过一遍完全不同。3. 一份可执行的进阶路线先训起来再把服务跑起来最后管住资源3.1 阶段一在单卡上把训练链路跑通再写一个CUDA内核从零开始不要碰分布式先在单卡上把整条链路跑通。写一个完整的训练脚本包括数据加载、模型定义、训练循环、验证、保存把“一个batch怎么变成loss、loss怎么更新参数”这件事搞得清清楚楚。这个阶段有四个常见的性能坑值得关注dataloader的num_workers设置不合理会导致数据加载成为瓶颈pin_memory能加速数据传输batch size直接决定显存占用梯度累积可以在显存不足时模拟大batch。这些细节就是日后排查训练卡顿的直觉来源。跑通训练之后再往下钻一层写写CUDA内核。建议用自定义算子做一个矩阵乘法和PyTorch自带的torch.matmul对比一下性能。结果大概率是你的实现慢得多这个“慢”就是学习价值所在——公司里做推理优化的人干的本质上就是把这种慢追赶到接近厂商库的水平。3.2 阶段二从DDP到FSDP理解分布式训练的并行权衡从单机多卡开始学DDP是最平滑的路径。DDP的原理用一句话概括每个进程持有模型副本用各自的数据做前向反向然后通过allreduce同步梯度再各自更新参数。注意一个关键点DDP同步的是梯度而不是参数这保证了所有进程最终收敛到的模型完全一致。实践的时候需要理解rank、local_rank、world_size这几个概念再配合DistributedSampler让每个进程拿到不同的数据分片。这个阶段跑通一个DDP训练脚本你就能回答“数据并行到底在并行什么”的问题了。接着学显存优化手段重点看ZeRO和FSDP。为什么要做显存优化一个7B模型fp16权重就占14GB再加上梯度、优化器状态、激活值单卡很难装下。ZeRO的思路是不在每个GPU上复制完整模型而是把参数、梯度、优化器状态分片到多个GPU上本质是用通信换显存。FSDP是PyTorch对ZeRO风格的官方实现工业界用得非常多。走到这一步你基本能看懂并行策略的权衡逻辑了。分布式训练的所有方案本质上都在算力、显存、通信三者之间找平衡数据并行实现简单但显存冗余大、通信量小张量并行把矩阵切成多份显存分摊了但通信频率很高流水线并行按层切分显存高效但有空泡。面试里问“为什么用8卡张量并行而不是16卡”考察的就是这个权衡。3.3 阶段三把模型卷成线上服务vLLM为什么快训练完只是开始线上的推理服务才是真正考验Infra的地方。最简单的方案是用FastAPI包一个HTTP服务加载模型权重接收文本返回结果。跑起来之后你会立刻遇到三个问题没有批处理GPU空转严重没有KV cache管理长序列生成慢没有显存管理并发一高就OOM。vLLM的出现就是冲着这几个痛点去的。它的核心创新是PagedAttention把KV cache分成固定大小的块不需要连续显存内存利用率大幅提升配合Continuous Batching新请求可以在旧请求生成的间隙插队吞吐自然高出一大截。很多工程团队把推理服务从朴素的PyTorch实现换成vLLM之后吞吐提升一个数量级是常态。另外可以了解一下OpenVINO这类后端如果场景在CPU或边缘设备上Intel OpenVINO能把模型量化到CPU上高效运行适合低功耗、低延迟的应用比如一些桌面音频软件的AI特效功能。它和TensorRT是两条并行的推理优化路线一个偏向服务端GPU一个偏向边缘和异构设备。部署之后要盯的指标也有讲究TTFT是首token延迟TPOT是每个token的生成时间吞吐按每秒生成的token数算还得关注显存占用和OOM稳定性。如果你所在的公司是Java技术栈还可能会用Spring AI这类框架去封装模型调用链路这时候Infra工程师就得理解从接入层到模型服务的完整链路。3.4 阶段四GPU资源池化从Kubernetes到Ray的调度逻辑当机器变多、使用的人变多GPU资源就不能靠人肉分配了必须有调度系统。学术和实验室环境里Slurm很常见工业云场景基本是Kubernetes加GPU虚拟化。调度系统要解决的核心问题有三个资源抽象把GPU、显存、CPU、内存统一抽象成可申请的资源对象让任务能声明自己需要多少资源。调度策略bin packing尽量把任务塞满机器减少碎片best fit选择碎片最少的机器再配合优先级做抢占。任务生命周期管理排队、启动、监控、清理、失败重试一个都不能少。这里有一个关键指标值得反复强调GPU利用率。很多公司集群利用率只有百分之二三十不是模型太重而是调度和资源管理做得稀烂。提高利用率靠的不是人守在机器前而是合理的资源分配、算力共享和弹性伸缩策略。Ray这个框架也值得关注。它在AI Infra里的定位很特别既做分布式计算又做任务调度很多大模型训练和推理框架底层都用了Ray。理解Ray的资源模型对进阶会很有帮助。4. 用三个动手项目验证学习成果顺便攒面试素材4.1 半天写完一个DDP分布式训练脚本第一个项目很简单用PyTorch DDP写一个单机多卡训练脚本跑一个小的CV或NLP任务。关键点是要让每个进程拿到不同的数据分片否则就等于白训。核心代码骨架大概是这样的import torch import torch.distributed as dist from torch.nn.parallel import DistributedDataParallel as DDP dist.init_process_group(backendnccl) rank dist.get_rank() torch.cuda.set_device(rank) model MyModel().to(rank) model DDP(model, device_ids[rank]) sampler DistributedSampler( dataset, num_replicasdist.get_world_size(), rankrank ) loader DataLoader(dataset, batch_size32, samplersampler) for epoch in range(10): sampler.set_epoch(epoch) for batch in loader: loss model(batch) loss.backward() optimizer.step()脚本跑通之后用nvidia-smi观察两张卡都满载了再打印各进程的rank号感受一下进程组。然后做个实验把DistributedSampler去掉让所有进程都消费完整数据集你会发现loss曲线变得诡异。这个实验做完你对“数据并行到底在并行什么”的理解就到位了。4.2 把同一个模型从FastAPI换成vLLM量化推理优化价值第二个项目是部署实践。先用FastAPI把Hugging Face上一个7B以下的模型部署成本地HTTP服务用并发请求测试吞吐。然后换成vLLM相同的并发重新测一遍记录首token延迟、生成速度、并发数和显存占用。你大概率会看到一个数量级的差距。这个差距本身就是推理优化项目最有说服力的结果。把这个对比过程写成文档或博客配合性能曲线图已经完全能当做一个简历项目来展示。这个项目做完你对部署环节的理解会比只学理论深得多。4.3 用两百行Python模拟一个GPU调度器第三个项目不碰真实集群而是用Python写一个极简的GPU调度模拟器模拟若干台GPU节点每台有总显存模拟若干任务每个任务请求固定显存并有优先级。分别实现first-fit和best-fit两种分配策略统计GPU碎片率和平均排队时间。代码量不大两三百行就能搞定但做完之后你对“调度”两个字的理解会发生质变——调度本质上是在找资源分配与利用率之间的平衡。之后再去看Kubernetes scheduler的设计就不会觉得一头雾水了。这三个项目按顺序做完你已经具备了一个AI Infra入行者的基本盘。简历上能写的不再是“了解分布式训练”而是“用DDP部署过X卡训练任务吞吐提升X倍用vLLM替换原始推理服务并发吞吐提升X倍”。5. 面试常考内容与“会背八股”和“真懂系统”的分水岭5.1 AI Infra八股的高频考点分布“八股”这个词听起来像贬义但其实它指的是这个领域最高频被问的知识点。掌握它们的正确方式不是死记硬背而是每个知识点都亲手做一遍实验。高频考点分布大概是这样的模块高频考点建议学习方式分布式训练DDP和FSDP的区别、allreduce原理、NCCL通信机制跑一遍DDP实验读NCCL文档推理优化vLLM的PagedAttention、Continuous Batching读vLLM论文与源码跑benchmarkGPU与调度CUDA内存模型、GPU虚拟化、K8s调度器写vector add kernel看调度器设计网络与存储RDMA/InfiniBand概念、IO瓶颈、数据缓存了解高性能网络协议做数据加载实验如果你照着前面的学习路线走完会发现在面试中聊这些话题都不是在“背答案”而是在复盘自己做过的实验。这是面试最好的状态。5.2 一个典型追问通信瓶颈如何优化我面试别人的时候很多人能流畅背出“数据并行用allreduce同步梯度”但再往下问一句“如果8卡训练时通信占比特别高你怎么优化”就开始支支吾吾。这道题考的是能不能把“通信量模型大小×更新次数”这个公式变成实际的优化动作。合理的优化方向至少有这些梯度压缩只同步变化显著的梯度梯度累积加延迟同步降低同步频率混合并行有些层用数据并行有些层用模型并行调大batch size让单次同步带来更多有效计算收益。这类问题的价值在于考察因果推理能力而不是背结论。可以这么理解八股是地图能背下来说明你看过地图但面试官真正想确认的是把你扔进一片真实丛林你会不会迷路。5.3 讲项目经历的正确姿势项目经历讲得好不好直接决定面试结果。几个建议供参考不要只讲“我做了什么”要讲“我做的这件事解决的是什么系统瓶颈、有哪些可选方案、为什么这么选、效果如何”。这就是面试官常说的闭环。所有指标必须量化。GPU利用率从多少提升到多少推理延迟降低到多少毫秒并发能力提升了多少倍都要写具体数字。没有数字的项目描述在面试官眼里等于没做。主动展示排查过程。比如NCCL超时问题是怎么一步步定位到网络参数的这种有细节、有转折的故事远比一个光鲜的结论有说服力。6. 自学最常见的三条弯路与我的避坑建议6.1 别把CUDA算子优化当成AI Infra的全部第一条弯路也最常见的是一头扎进CUDA优化出不来。CUDA优化确实很有成就感把某个算子速度翻倍的快感容易让人上瘾但它只是AI Infra的一个分支。如果花一年时间把CUDA算子优化做到极致进公司后很可能发现自己只是整条流水线上的一颗螺丝。正确的策略是先建立系统全景再选择一个方向深耕。建议新手在了解四大方向的基础上至少把训练和推理各走一遍全流程之后再决定是钻算子还是钻调度。先有广度再有深度。6.2 训练重要推理更缺人第二条弯路是只关注训练完全不碰推理。大模型时代推理成本可能是训练的很多倍推理优化岗位的需求量非常大。如果你把自己局限在“训练”里职业选择面会窄很多。而且推理优化涉及的量化、蒸馏、批处理、内存管理本身就是AI Infra的核心技术栈。就算未来你想回到训练方向推理优化积累的经验也不会浪费。所以学习路线上训练和推理都要覆盖到不为别的就为求职时多一个选项。6.3 每个阶段都要有“跑通”的里程碑第三条弯路是理论听懂了代码一次都没跑通。学AI Infra有一个很扎心的规律“懂了”和“会了”之间差了不止一次debug。分布式训练最容易出各种环境问题NCCL版本不匹配、网卡没选对、共享内存不够、进程之间参数不同步。这些坑如果你没踩过面试官一追问就露馅。所以每个阶段都要设定一个必须跑通的里程碑跑不通不放行。比如第一个月必须跑通单卡训练第二个月必须写出来CUDA内核算对结果第三个月必须跑完DDP实验。这个习惯能保证你的学习始终有实打实的产出。6.4 一个六到九个月的时间规划参考最后给一份参考时间表可以根据自己的节奏调整阶段时间目标基础与单卡训练第1-2月Python熟练、Linux常用操作、单卡训练跑通、CUDA基础概念分布式训练第3-4月DDP实验、FSDP原理、并行策略理解推理服务化第5月推理服务demo、vLLM对比实验调度与综合项目第6-8月极简调度器、综合项目、整理博客、准备简历复盘与面试第9月查漏补缺、刷面试高频题、复盘每个项目配套资源不用贪多PyTorch官方文档里DDP和FSDP的教程值得看三遍CUDA C Programming Guide只读入门章节即可vLLM的官方文档和PagedAttention原论文值得精读Kubernetes官方文档重点看调度器与GPU扩展再配合NCCL官方示例、DeepSpeed的ZeRO系列博客就够了。我个人带新人最大的感受是真正学得扎实的人身上有一个共同点愿意把每个学习环节都变成“能跑通、能量化”的实验。哪怕只是把一个算子性能提升5%也比背了100个知识点更有说服力。还有一个习惯我强烈建议养成每天花半小时把当天学的东西写成技术笔记不一定要公开发布但一定要落到文字里。写出来的过程会暴露大量你以为懂但实际上没懂的地方。这个习惯坚持半年效果会超出你的预期。