学 AI 的人大多数不是倒在模型原理上,是倒在第 0 步:装环境。而你搜到的教程大概率已经过期——PyTorch 官方在 2026 年 10 月 28 日发布 2.15 GA,这是第一个不再提供 Python 3.10 wheel 的版本,最低支持提到了 3.11;Hugging Face 的 transformers 也在 10 月 26 日推到 v5.21.0,v5 这一代直接砍掉了 TensorFlow 和 Flax 后端,还把torch_dtype改成了dtype。照着两年前的教程敲pip install,装完就是一堆 ImportError。
这个系列计划一天一课,从入门到精通共 30 课。今天是第 0 课:不碰模型,只做两件事——把目录定下来,把你的机器体检一遍。
课程目录:30 课从入门到精通
| 阶段 | 课次 | 主题 | 学完能做什么 |
|---|---|---|---|
| 入门 | 第 1-4 课 | Python 数值计算、numpy 张量操作、梯度手推 | 不用框架手写一个线性回归 |
| 入门 | 第 5-8 课 | 数据清洗、特征工程、评估指标 | 跑通一个完整的表格数据建模流程 |
| 进阶 | 第 9-12 课 | PyTorch 张量、autograd、Dataset/DataLoader | 用 torch 训练图像分类 |
| 进阶 | 第 13-16 课 | CNN / RNN / Transformer 结构逐层实现 | 手写一个迷你 Transformer |
| 实战 | 第 17-20 课 | 分词器、注意力可视化、temperature 与采样 | 把 sampling 参数调明白 |
| 实战 | 第 21-24 课 | 微调(LoRA)、向量库、RAG、Agent 工具调用 | 搭一个能查自己文档的问答服务 |
| 精通 | 第 25-27 课 | 量化、torch.compile、推理引擎对比 | 把推理延迟压下来 |
| 精通 | 第 28-30 课 | 评测体系、训练监控、上线部署与成本 | 交付一个可运维的 AI 服务 |
目录不是死的,每课结尾会写明下一课要装什么、验证什么。你跟着目录走,不会出现"学完第 5 课不知道第 6 课在哪"的情况。
第 0 课动手:一份能直接跑的环境自检脚本
先按当前(2026-10-30)官方推荐的方式装基础依赖,Windows / Linux / macOS 通用:
# CPU 版,先跑通流程再考虑 GPU python -m pip install --index-url https://download.pytorch.org/whl/cpu torch torchvision python -m pip install transformers datasets accelerate numpy如果你的机器有 NVIDIA 显卡,去 pytorch.org 的 Get Started 选 CUDA 13.2(2.15 的默认 wheel)或 13.4 对应的命令,别自己拼 CUDA 版本号。装完用下面这个脚本体检,它只依赖 Python 标准库加 numpy,有 torch 就多报一行:
# ai_env_check.py 第 0 课:AI 学习环境自检 # 运行:python ai_env_check.py import importlib.util as u import platform import sys import numpy as np MIN_PY = (3, 11) # PyTorch 2.15 起最低 3.11,3.10 已无官方 wheel def pkg(name): spec = u.find_spec(name) if spec is None: return "MISSING" try: return __import__(name).__version__ except Exception as exc: # 装了但导不进来,通常是 ABI 或依赖版本不匹配 return f"BROKEN: {type(exc).__name__}" def softmax(logits, temperature=1.0): z = logits / temperature z = z - z.max() # 减去最大值再 exp,防溢出,这行不能省 e = np.exp(z) return e / e.sum() def main(): print("== 环境 ==") print("Python :", sys.version.split()[0]) print("系统 :", platform.platform()) print("numpy :", np.__version__) print("满足 PyTorch 2.15 最低要求(>=3.11):", sys.version_info[:2] >= MIN_PY) print("\n== 依赖 ==") for name in ("torch", "transformers", "datasets", "accelerate", "onnxruntime"): print(f"{name:14s}", pkg(name)) print("\n== 采样温度 ==") logits = np.array([2.0, 1.0, 0.1, -1.0]) words = ["北京", "上海", "广州", "深圳"] rng = np.random.default_rng(42) for t in (0.5, 1.0, 2.0): p = softmax(logits, t) draw = rng.choice(len(words), size=20000, p=p) freq = np.bincount(draw, minlength=4) / 20000 print(f"t={t:<4}", np.round(p, 4), "实测频率", np.round(freq, 4)) print("\n== 老代码检查 ==") try: np.float_ except AttributeError as e: print("[FAIL] np.float_ :", e) if __name__ == "__main__": main()本机实测输出与怎么读
我在一台 Windows 10(build 19045)、Python 3.13.14、numpy 2.5.1 的机器上跑了这个脚本,真实输出如下(这台机器没装 torch,所以显示 MISSING):
== 环境 == Python : 3.13.14 系统 : Windows-10-10.0.19045-SP0 numpy : 2.5.1 满足 PyTorch 2.15 最低要求(>=3.11): True == 依赖 == torch MISSING transformers MISSING datasets MISSING accelerate MISSING onnxruntime 1.28.0 == 采样温度 == t=0.5 [0.8619 0.1166 0.0193 0.0021] 实测频率 [0.8629 0.1154 0.0192 0.0025] t=1.0 [0.6381 0.2347 0.0954 0.0318] 实测频率 [0.6342 0.2384 0.0958 0.0316] t=2.0 [0.4512 0.2737 0.1745 0.1007] 实测频率 [0.4522 0.272 0.1748 0.101 ] == 老代码检查 == [FAIL] np.float_ : `np.float_` was removed in the NumPy 2.0 release. Use `np.float64` instead.三段数字要看懂:满足 PyTorch 2.15 最低要求为 False 的话,说明你还在 3.10 或更早,先升 Python,别去硬装 2.15;MISSING表示该装,BROKEN比MISSING更麻烦,通常是装了但底层库版本打架。
采样温度那三行是第 17-20 课的预告,现在先记一个直觉:temperature 越小,概率越往第一名集中。logits 完全没变,t 从 2.0 降到 0.5,"北京"的实测频率从 0.4522 涨到 0.8629。所谓"调模型说得准还是说得发散",底层就是这一个除法。
踩坑记录:三个真实报错
np.float_那条不是我编的,是 numpy 2.x 的真实移除项。2024 年之前的教程里满地都是np.float_、np.int0,今天跑就是 AttributeError,原文:np.float_was removed in the NumPy 2.0 release. Usenp.float64instead. 批量替换成np.float64即可。
第二个坑藏在 softmax 里。把那行减最大值的操作去掉,直接对大模型 logits 取 exp,会先溢出再变 nan:
>>> import numpy as np >>> x = np.array([1000.0, 999.0, 998.0]) >>> e = np.exp(x) RuntimeWarning: overflow encountered in exp >>> e / e.sum() RuntimeWarning: invalid value encountered in divide array([nan, nan, nan])输出 nan 之后模型不会崩,只会一直生成垃圾,排查起来非常费时间。这就是为什么所有框架的 softmax 实现里都有那句减最大值——它是数学等价的,因为分子分母同时除以同一个常数。
第三个坑是 transformers v5 的参数改名。torch_dtype=torch.float16在新版里要写dtype=torch.float16,use_auth_token=True要写token=True,缓存环境变量TRANSFORMERS_CACHE换成了HF_HOME。你从旧仓库复制代码时,这几个不会报"参数已废弃",而是直接 TypeError 或静默失效,所以第 0 课先把版本锁死记下来是有必要的。
下一步安排
第 1 课从 numpy 张量操作讲起,装好 torch 的同学可以直接跟着跑。没装 torch 也不影响前 8 课,入门阶段全部用 numpy 手推,不引入框架。建议每课结束运行一次ai_env_check.py,把输出存下来——环境变迁是 AI 学习里最隐蔽的时间黑洞,留一份记录能省掉大量重复排查。
小结
这一课只做了两件事:定下 30 课的目录,用一个 60 行脚本把机器体检一遍。别急着跑模型,先确认你的 Python 版本站在 PyTorch 2.15 划的线上(≥3.11),再确认 numpy 已经是 2.x 生态。第 1 课见。