AI 学习路径:从 GPU 运行时到推理、微调与 RAG 评估

使用方式

AI 工程的门槛不在调包,而在资源约束:显存、算力、带宽和并发决定了你能跑什么、跑多快。这条路径按“硬件 → 推理 → 训练 → 评估”推进。

四个阶段按依赖顺序排列,每个阶段建议留 3–4 小时:

每个阶段都要留下一次可复现的测量:命令、模型、输入长度、并发数和结果。

阶段一:GPU 与运行时

目标:能确认 GPU 是否可见、驱动和 CUDA 是否匹配、容器能否使用 GPU,以及多卡通信是否正常。

阅读顺序:

  1. nvidia-smi — 显存、利用率、进程和 ECC 状态。
  2. nvidia-container-toolkit — 容器暴露 GPU 的运行时配置。
  3. cuda — 驱动版本、CUDA 版本、cuDNN 和框架的兼容关系。
  4. nccl — 多卡集合通信、拓扑和 all-reduce 测试。
  5. dcgm-exporter — GPU 指标采集和 Prometheus 集成。
  6. nvtop — 交互式查看 GPU 利用率和显存。
  7. nvitop — 按进程查看 GPU 资源和历史曲线。
  8. gpu-operator — Kubernetes 中驱动、容器运行时和插件的一体化部署。
  9. nvidia-device-plugin — 把 GPU 作为可调度资源暴露给 Pod。
  10. gpu-cheatsheet — GPU 常用检查命令速查。

动手任务:在单卡机器上确认驱动与 CUDA 版本,启动一个带 GPU 的容器,跑一次 NCCL all-reduce,并把 GPU 指标接入 Prometheus。

nvidia-smi
nvidia-smi --query-gpu=name,driver_version,memory.total,memory.used --format=csv
docker run --rm --gpus all nvidia/cuda:12.4.1-base-ubuntu22.04 nvidia-smi
nvidia-smi topo -m
curl -s localhost:9400/metrics | grep -E 'DCGM_FI_DEV_(GPU_UTIL|FB_USED)'

过关标准:

阶段二:推理服务

目标:能把模型部署成可用的推理服务,理解首 token 延迟、单 token 延迟、吞吐和并发之间的关系。

阅读顺序:

  1. ollama — 本地模型管理、量化格式和简单 API。
  2. vllm — PagedAttention、连续批处理和 OpenAI 兼容接口。
  3. sglang — RadixAttention、前缀缓存和高并发服务。
  4. tgi — Hugging Face 推理容器、批处理和流式输出。
  5. tensorrt-llm — 编译优化、量化内核和 NVIDIA 平台。
  6. llama-server — llama.cpp 的 HTTP 服务与 CPU/GPU 混合推理。
  7. lmdeploy — TurboMind 引擎、量化和多模型服务。
  8. triton — 多框架模型仓库、动态批处理和并发实例。
  9. vllm-vs-sglang — 两种高吞吐推理引擎的差异。
  10. ollama-vs-vllm — 本地体验与生产服务的边界。

动手任务:用 vLLM 部署一个小模型,测量不同并发下的首 token 延迟和输出吞吐;再用 Ollama 跑同一模型,对比量化、显存和速度。

vllm serve Qwen/Qwen2.5-1.5B-Instruct --port 8000 --max-model-len 4096
curl -s http://localhost:8000/v1/models
curl -s http://localhost:8000/v1/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{"model":"Qwen/Qwen2.5-1.5B-Instruct","messages":[{"role":"user","content":"hi"}],"max_tokens":32}'
nvidia-smi --query-gpu=memory.used,utilization.gpu --format=csv -l 1

过关标准:

阶段三:训练与微调

目标:能跑通单机多卡训练和 LoRA 微调,理解显存构成、并行策略和可复现性。

阅读顺序:

  1. torchrun — 分布式启动、rank、world size 和环境变量。
  2. deepspeed — ZeRO 分片、offload 和通信开销。
  3. peft — LoRA、QLoRA 和适配器合并。
  4. trl — SFT、DPO 等训练流程和对话模板。
  5. axolotl — 用配置驱动微调,减少手写训练循环。
  6. accelerate — 统一单卡、多卡和混合精度的启动方式。
  7. bitsandbytes — 8bit/4bit 量化和 QLoRA 的显存收益。
  8. llama-factory — 多模型微调平台和数据集格式。
  9. megatron-lm — 张量并行、流水并行和大规模训练。
  10. transformers — 模型加载、tokenizer、Trainer 和保存格式。

动手任务:用 LoRA 微调一个小模型,记录每步显存和耗时;再改一次 batch size 或并行度,解释吞吐变化。

accelerate config
torchrun --nproc_per_node=2 train.py --config config.yaml
python -c "import torch; print(torch.cuda.device_count(), torch.cuda.is_available())"
nvidia-smi --query-gpu=memory.used,utilization.gpu --format=csv -l 1

过关标准:

阶段四:RAG、评估与实验管理

目标:能把外部知识接入模型,建立离线评估和线上追踪,并用实验管理保证结果可复现。

阅读顺序:

  1. langchain — 链、工具、检索器和会话记忆的抽象。
  2. llamaindex — 文档解析、索引、检索和后处理。
  3. ragflow — 端到端的文档问答和知识库流程。
  4. mlflow — 参数、指标、制品和模型注册。
  5. langfuse — LLM 调用追踪、提示管理和在线评估。
  6. lm-eval — 标准基准评测和结果对比。
  7. rag-production-checklist — 上线前的检索、生成和权限检查。
  8. dify — 可视化编排 RAG 和工作流。
  9. fastgpt — 知识库问答和私有化部署。
  10. ragas — RAG 评估指标、测试集生成和 LLM 裁判。

动手任务:用 LangChain 或 LlamaIndex 对一组文档建索引,比较两种 chunk 大小的检索命中率;用 Langfuse 记录一次问答链路,并把评估结果写入 MLflow。

python ingest.py --chunk-size 512 --overlap 64
python evaluate.py --questions eval.jsonl --top-k 5
mlflow ui --port 5000
docker compose up -d langfuse

过关标准:

常见误区

读完自测

合上页面,先回答,再展开对照。

  1. 推理服务显存不够,可能由哪些部分组成?先减哪一项最有效?
  2. LoRA 微调和 RAG 分别适合解决什么问题?
  3. 评估 RAG 时,为什么要先看检索指标再看生成指标?
答案
  1. 显存主要由模型权重、KV cache、激活和框架临时缓冲区组成。推理阶段权重通常占大头,但 KV cache 会随并发和上下文长度线性增长。先量化权重或减少并发与上下文长度通常最有效,其次才是调整批处理和释放缓存。
  2. LoRA 改变模型的行为、风格和指令遵循能力,适合有标注数据且需要稳定输出的场景;RAG 不改变权重,通过检索外部知识提供事实依据,适合知识频繁更新、需要引用来源和权限隔离的场景。两者可以叠加。
  3. RAG 的答案质量上限由检索到的上下文决定。如果召回率低,生成模型只能凭空编造,此时优化提示或换更大模型收益有限。先确认正确文档能被召回,再评估生成是否忠实、完整和可引用。

相关条目