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;multiprocessing vs threading vs asyncio。
  • 包管理: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。

三、参考资料

入门

NumPy / pandas

PyTorch

Hugging Face

  • 官方 HF Course(NLP / RL / Audio 三套)。

工程

GPU 编程

四、动手实践

每个练习都 commit 到你的 ai-learning repo。

  1. NumPy 100 题 + pandas 100 题 全做完。
  2. 从零实现 MLP(三层全连接) 训练 MNIST,先用 NumPy + 手写反向传播,再用 PyTorch 重写一遍对比。
  3. 复现 Karpathy 的 micrograd 与 makemore 系列(Zero to Hero 第 1-4 集)。
  4. Hugging Face 入门项目:用 transformers 加载 BERT,在中文情感分类数据集(如 ChnSentiCorp)上 fine-tune。
  5. Docker 实战:用 Dockerfile 打包一个 PyTorch 训练镜像,能在另一台机器上 pull 下来跑。
  6. Git 工作流:在 GitHub 上发起一个 PR 到任一开源项目(哪怕只是改 typo),走完 fork / branch / PR / review / merge 全流程。
  7. 写一个 CLI 工具:用 typer / click 写一个 chat 命令行工具,调用 LLM API,带历史记录、流式输出、参数可配。
  8. Triton 入门(选):跟着官方教程写一个 vector add / fused softmax kernel,并对比 PyTorch 性能。

五、通关标志

  • 能熟练用 PyTorch 写一个完整的训练 / 验证循环(不复制粘贴)。
  • 能解释 PyTorch 的 autograd 是怎么工作的。
  • 看到 NumPy 代码立刻能想到对应的 broadcasting 形状。
  • 能用 git rebase 整理乱七八糟的 commit 历史。
  • 能写 Dockerfile 把项目打包成可移植镜像。
  • 能给开源项目提一个 PR 并被 merge。

下一站:03. 机器学习基础