AI 入门到精通 02 · 编程能力
数学告诉你"该算什么",代码决定"算得多快、跑不跑得起来"。 AI 圈的工程能力鸿沟比算法鸿沟更大:很多算法不错的人因为代码差落地不了。
一、需要掌握的栈
| 层级 | 必备 | 推荐熟练度 |
|---|---|---|
| 语言 | Python | 熟练(能写复杂工程) |
| 科学计算 | NumPy / pandas / matplotlib | 熟练 |
| 深度学习框架 | PyTorch | 熟练;JAX / TF 知其大概 |
| AI 生态 | Hugging Face (transformers / datasets / accelerate / peft) | 熟练 |
| 工程基础 | Git / Linux / Shell / Docker | 熟练 |
| GPU 编程 | CUDA / Triton(基本概念) | 了解;做 infra 才需要熟练 |
| 后端 | FastAPI / gRPC / Redis / Postgres | 了解;做应用 / Agent 时需要 |
| 数据栈 | SQL / Spark / 数据湖 | 按需;做数据时需要 |
二、知识点
2.1 Python(吃饭工具,必须熟练)
- 数据类型、控制流、函数、模块化。
- 面向对象:class、继承、
__init__/__call__/__getitem__/ dataclasses。 - 装饰器、生成器、上下文管理器、迭代器协议。
- 异步:
asyncio、async / await(Agent / API 调用必备)。 - 类型注解(
typing/pydantic)—— 现代 Python 工程标配。 - 性能:
cProfile、line_profiler、memory_profiler;multiprocessingvsthreadingvsasyncio。 - 包管理:
pip/uv/conda;虚拟环境最佳实践。 - 测试:
pytest、mock、fixture。
2.2 NumPy / pandas / matplotlib
- NumPy:ndarray、broadcasting、向量化(永远不要写 Python for 循环遍历数组)、view vs copy。
- pandas:DataFrame、merge / groupby / pivot、缺失值处理、时间序列。
- matplotlib / seaborn / plotly:会画散点 / 折线 / 热力图 / 直方图,能调出能看的图。
2.3 PyTorch(深度学习的事实标准)
- Tensor、device(cpu / cuda / mps)、dtype(fp32 / fp16 / bf16)。
- Autograd 机制:
requires_grad、backward()、计算图、detach()。 nn.Module/nn.Parameter、参数初始化、state_dict保存加载。- DataLoader / Dataset / Sampler;自定义 collate_fn。
- 优化器、loss、学习率调度器。
- 训练循环结构、验证 / 早停。
- 混合精度训练 (
torch.amp)、torch.compile。 - 分布式:
DataParallel(过时不用) →DistributedDataParallel(DDP) → FSDP / DeepSpeed / accelerate。
2.4 Hugging Face 生态
transformers:加载预训练模型、tokenizer、pipeline、Trainer。datasets:高效数据集;map / filter / streaming。accelerate:一键多卡 / 混合精度。peft:LoRA / QLoRA / Adapter 微调。trl:SFT / DPO / PPO 等 RL 训练。- Hub:上传 / 下载模型与数据集。
2.5 工程能力
- Git:commit / branch / merge / rebase / cherry-pick / interactive rebase;学会写好的 commit message。
- Linux:文件系统、权限、
grep / sed / awk / find / xargs / jq、tmux/screen、ssh/scp/rsync。 - Shell:bash 基本语法、写自动化脚本。
- Docker:image vs container、Dockerfile、多阶段构建、
docker compose、GPU 容器(--gpus all)。 - 环境管理:
uv/poetry、requirements.txt与pyproject.toml的区别。 - 可观测性:日志规范、
tensorboard/wandb跟踪实验。 - 代码规范:
ruff/black/mypy、pre-commit hook。
2.6 GPU / 加速(按需)
- CPU / GPU 内存模型、PCIe、NVLink。
- CUDA 编程基本概念:grid / block / thread / warp、shared memory。
- Triton:用 Python 写 GPU kernel(推荐入门方式)。
- 性能瓶颈识别:compute-bound vs memory-bound、
nsys/nvprof。
三、参考资料
入门
- 《Python 教程》—— Mark Lutz 《Learning Python》 或廖雪峰 Python 教程(中文)。
- 《流畅的 Python》(Fluent Python) —— 进阶必读。
- Real Python —— 高质量英文教程。
NumPy / pandas
- 官方文档 + NumPy 100 道题 + pandas 100 道题。
PyTorch
- 官方 60-Minute Blitz → Learn the Basics。
- 《动手学深度学习》PyTorch 版 (d2l.ai)。
- Andrej Karpathy 的 Neural Networks: Zero to Hero —— 强烈推荐,从零写出 GPT。
Hugging Face
- 官方 HF Course(NLP / RL / Audio 三套)。
工程
- Pro Git (中文)。
- The Missing Semester of Your CS Education —— MIT 出品,shell / git / vim / docker 速通。
- 《Designing Data-Intensive Applications》—— 想做 AI infra / 数据的必读。
GPU 编程
- CUDA C Programming Guide。
- Triton 官方教程。
- GPU MODE Discord 的录播 —— 最活跃的 GPU 学习社区。
四、动手实践
每个练习都 commit 到你的 ai-learning repo。
- NumPy 100 题 + pandas 100 题 全做完。
- 从零实现 MLP(三层全连接) 训练 MNIST,先用 NumPy + 手写反向传播,再用 PyTorch 重写一遍对比。
- 复现 Karpathy 的 micrograd 与 makemore 系列(Zero to Hero 第 1-4 集)。
- Hugging Face 入门项目:用
transformers加载 BERT,在中文情感分类数据集(如 ChnSentiCorp)上 fine-tune。 - Docker 实战:用 Dockerfile 打包一个 PyTorch 训练镜像,能在另一台机器上 pull 下来跑。
- Git 工作流:在 GitHub 上发起一个 PR 到任一开源项目(哪怕只是改 typo),走完 fork / branch / PR / review / merge 全流程。
- 写一个 CLI 工具:用
typer/click写一个chat命令行工具,调用 LLM API,带历史记录、流式输出、参数可配。 - Triton 入门(选):跟着官方教程写一个 vector add / fused softmax kernel,并对比 PyTorch 性能。
五、通关标志
- 能熟练用 PyTorch 写一个完整的训练 / 验证循环(不复制粘贴)。
- 能解释 PyTorch 的 autograd 是怎么工作的。
- 看到 NumPy 代码立刻能想到对应的 broadcasting 形状。
- 能用 git rebase 整理乱七八糟的 commit 历史。
- 能写 Dockerfile 把项目打包成可移植镜像。
- 能给开源项目提一个 PR 并被 merge。
下一站:03. 机器学习基础