Skip to content

第1章 · 环境、隐私与云权益审计 ​

前置要求:无需任何专业算法或深度学习基础。作为全书起点,仅需具备基本的终端命令行使用习惯与常规开发软件安装能力。

工程实战的第一步,是建立确定性与可复现性:把本地系统配置为与全书实验完全对齐的基线状态,并在进入代码之前清晰界定开发者订阅、云端资格与操作授权三者的物理边界。分清这三者,能有效避免云端实验中的意外扣费与进度误报。

本章目标 ​

学完后你能做到:

  1. 在自己机器上跑通本书全部本地实验的基线环境(Node 20 / pnpm 9 / Python 3.11 / Chrome),并能在全新 checkout 里重来一遍。
  2. 明确区分“订阅权益、云资格、单次操作授权”的物理边界,不把 Google AI Pro 等订阅误当成免费 GPU 或已开通的云账单。
  3. 按模板写出一份不含任何个人信息的脱敏能力记录,并通过本地校验器。

阶段一:跑通本地基线 ​

以下命令在仓库根目录执行。前半段装站点和测试环境,后半段装 Python 实验环境:

bash
pnpm install --frozen-lockfile   # 按 lockfile 严格安装站点依赖
pnpm test:labs                   # 跑全部实验测试,任何 skip/xfail 都算失败
pnpm docs:build                  # 构建课程站点
pnpm docs:preview --host 127.0.0.1  # 本地预览构建产物
bash
python3.11 -m venv .venv         # 建一个隔离的 Python 环境(避免污染系统 Python)
source .venv/bin/activate        # 激活它;Windows 用 .venv\Scripts\activate
python -m pip install --upgrade pip
python -m pip install -r requirements.txt
export PYTHONPATH="$PWD/python"  # 让 Python 能找到仓库里的实验代码
python -m pytest python/tests -q --tb=short

核心机制解析:

  • venv 隔离机制:为本项目建立独立的 Python 包目录,避免不同项目间的依赖版本冲突。新开终端执行实验前,均需先执行 source .venv/bin/activate。
  • PYTHONPATH 路径解析:显式指定 Python 解释器在标准库之外优先搜索 python/ 源码目录,避免测试时因模块定位失败报 ModuleNotFoundError: llm_core。

requirements.txt 会自动带上 requirements-py311.lock.txt 里 16 个针对 Python 3.11 的锁定约束,保证你装到的版本和课程验证过的一致。第4–11章默认在 CPU / Apple Silicon MPS 上跑,规范安装会包含 PyTorch——第9章要真实训练 TinyGPT,缺了 PyTorch 的环境会把测试 skipped,跳过不算通过,先修复环境再继续。

预期结果:pnpm test:labs 和 pytest 全部通过、无 skip。如果报错,先翻到本章「常见问题」对照处理。

受限设备运行保障(纯 CPU / 轻薄笔记本友好) ​

全书所有核心模型与算法代码均经过高保真工程裁剪与微型化设计,确保在标准开发设备上流畅运行:

  • 纯本地 CPU 极速跑通:从第 4 章的标量自动微分、第 6 章的字节级 BPE 分词器,到第 8 章的多头注意力与第 9 章的 TinyGPT 预训练,所有网络结构均原生支持纯 CPU 运行。
  • 超轻量显存/内存预算:教学版 TinyGPT 参数量精确控制在 10.8 万(约 108K 参数),单批次训练的内存峰值小于 500 MB,轻量可控。
  • 分钟级实验反馈:在普通 CPU(如 Intel i5/i7 或 AMD Ryzen 5)上,运行 100 个训练步仅需约 30 秒,1000 个训练步在 3 分钟内即可收敛;在 Apple Silicon(M1/M2/M3 等)上更可通过 MPS 加速在数十秒内完成。
  • 完全离线且零成本:本地学习路径直接成本为 0 元,无需任何 API 充值,无需云服务器账单,断网状态下亦可完成模型训练与代码测试。
实验模块推荐硬件内存开销典型运行时间(CPU)产出成果
第4章 标量微分 Value任意双核 CPU< 50 MB< 1 秒标量反向传播引擎
第6章 BPE 分词器任意双核 CPU< 100 MB< 2 秒完整词表与编解码器
第8章 Transformer Block任意四核 CPU< 200 MB< 5 秒多头注意力与前馈块
第9章 TinyGPT 预训练普通笔记本 CPU< 500 MB1 ~ 3 分钟具备下一个词预测能力的微型模型
第10章 KV Cache 推理普通笔记本 CPU< 200 MB< 3 秒缓存加速自回归文本生成

阶段二:分清订阅、资格与授权 ​

全书在后期包含一次受控的云端小模型训练(第21章)。为避免非预期的云端扣费,课程将云端执行拆分为四道互不信任的独立闸门,任何一道未满足均停留在本地路径,不影响主线学习:

闸门检查内容不通过时的阻断策略
资格(Eligibility)当日在服务商官方控制台核验,账号是否具备对应云资源配额与结算关联状态保持 unverified,停留在本地课程
smoke 授权单次 5–10 分钟的小规模预检试跑,需独立审批确认不创建任何远程计算任务
full run 授权完整模型训练执行,必须再次单独获得明确审批smoke 试跑通过不能自动继承权限
service deploy 授权部署私有推理端点服务,必须第三次单独审批不执行任何部署变更

工程视角下的权限分层:订阅等级(如 Google AI Pro)仅代表服务商宣传的包含权益;资格(Eligibility)是在云控制台实测确认当前账号已绑定有效结算与可用配额;授权(Authorization)是每一次具体资源调用的运行时审批凭证。即便看到“包含 Cloud credit”说明,在物理上也既不代表账号已完成结算关联,也不代表已获得可用 GPU 配额或训练无需计费。

CLOUD ROUTE · DRY RUN ONLY

Google 资源是可选加速器,不是课程前置条件

Google AI Pro 会员权益、Google Cloud credit、Gemini API 额度和 GPU quota 是不同边界;必须在真实控制台逐项核验。页面不读取账号、不发起云请求。

资格:未核验
选择本地 dry-run 的云路线形状
Cloud Run Jobs · CPU
资源形状
1 task · 4 vCPU · 16 GiB · 最长 1 h(本地计划)
成本边界
研究估算示例;不是报价,必须按当日 SKU 重算
为什么
默认路线:可清理、无需 GPU quota

尚未生成本地计划。选择路线后点按钮,结果只留在本页。

任何 cloud smoke/full run/service deploy 都必须带一次性 approval_id、operation_id、region、资源形状、时限和 gross cost;未核验或未授权时,本地结果不能标记为云端通过。

云操作的真实顺序固定为:本地 dry-run(不联网、不建资源)→ smoke → 单独批准 full run → 单独批准部署 → 生成对拍 → 同日清理 → 48 小时后回读账单确认没有残留费用。credit 不是消费上限,gross 预算门禁为不超过 8 美元等值。

每一次云端执行都必须留下一条可回读的证据链——缺少任何一环,云端训练完成状态均不成立:

这条链每一环在第21章会展开成逐阶段证据表;本章核心在于建立防御性认知:任何一环缺失(例如缺少 execution ID),就意味着该产物不能作为云端训练的有效证据,系统状态必须保持 cloud_training_passed=false。

阶段三:写下你的脱敏审计记录 ​

核验完官方 UI 后,只记录下面这种结构。对照字段逐个理解:

yaml
capability: <capability-name>        # 能力名称,如 cloud-training
verified_at: <iso-date>              # 你核验的日期
status: eligible|unavailable|unverified  # 三态:能用 / 没有 / 未核验
scope: <sanitized-service-or-route>  # 脱敏后的服务或路线描述
expires_at: <iso-date-or-null>       # 资格失效日期,没有就 null
safe_course_use: yes|no|human-approval-required
evidence_local_only: true            # 原始截图只存本地,不进仓库

字段的机器合同在 configs/google-gates.template.json;当前仓库的记录是 configs/google-gates-local-v1.json。写完记录后运行校验:

bash
pnpm google:gates
node scripts/validate_google_gates.mjs --file <你的脱敏记录.json>

校验器只接受 eligible|unavailable|unverified 三种状态,并且拒绝任何账号 ID、项目号、邮箱、凭据、绝对路径——写进去就会校验失败,这是故意的:脱敏是硬性要求,不是建议。校验通过只说明"记录格式和隐私边界有效",不代表任何云操作已执行。

故障注入与预期信号 ​

注入的坑会出现的信号正确处理
把会员名当 GPU 配额计划直接提交云资源资格保持 unverified,停在本地
只有 smoke 授权却启动 full run授权 action 不匹配审批账本拒绝,授权不能继承
预算、时长或 region 缺失计划无法审计不创建任务
本地 checkpoint 冒充云 checkpoint证据链缺 execution ID记 cloud_training_passed=false
发现异常资源或账单继续操作会放大损失立即停止,交由人类处理

常见问题 ​

现象处理
ModuleNotFoundError: llm_core激活 venv 并设置 PYTHONPATH="$PWD/python"
pytest 找不到检查是否在 Python 3.11 的 venv 里、requirements 是否装完
页面组件不更新重新 pnpm docs:build 再重启 preview
云资格是 unverified继续本地课程,不打开未授权的已登录控制台
看到密钥、个人资料或账单原文不复制到任何地方;停止并只做脱敏记录

本章验收 ​

不看资料,能回答这两题就算过:

  1. 为什么 eligible、一次 smoke 授权、一次真实云执行是三件不同的事?每一步缺失时必须停在哪里?
  2. 从本地训练输入画到私有 Service 的证据链,指出哪一个回读能阻止"本地成功"被误报成"云端成功"。

学习者提交模板(待填写,不是当前机器证据) ​

复制下面模板,填写你当天官方 UI 核验后的脱敏结果。所有 <...> 都是未填写状态,不能当作资格已确认;不要写入账号、项目号、余额截图、cookie、token 或账单原文。

yaml
capability: <capability-name>
verified_at: <iso-date>
status: eligible|unavailable|unverified
scope: <sanitized-service-or-route>
expires_at: <iso-date-or-null>
safe_course_use: yes|no|human-approval-required
evidence_local_only: true

模板未填写、资格为 unverified 或授权为 false 时,必须停在本地路径;这些记录不能推出云训练、部署或学习者掌握已经通过。

资源 / 成本 / 隐私 ​

  • 资源:本地 Node、Python 3.11、PyTorch、Chrome 与仓库内 fixture 即可完成本章;Google 官方页面只在你主动核验时使用。
  • 成本:本地路径直接成本为 $0;Cloud dry-run 固定 network_calls=0 且不创建资源。真实云操作需要另行人工审批、预算和当天资格核验。
  • 隐私:只保存脱敏的布尔/状态/范围字段,不保存账号、项目号、账单、cookie、token、邮箱或个人经历原文。

证据 ​

仓库当前机器证据(只读快照) ​

evidence/module-manifest-v1.json 中 01.evidence 指向当前文件:evidence/cloud-dry-run-v1.json。这是当前 checkout 的脱敏 dry-run 记录,只证明本地计划的参数、边界和 network_calls=0;它不证明 Google 账号资格、付费云训练或学习者已经完成本章。

隐私历史与产物扫描的补充记录为 evidence/privacy-history-local-v1.json。它只保存类别、路径、计数和脱敏状态;当前树扫描为 0 hit,但历史中的命中与缺少 CI 日志仍保持阻塞。

Google 权益与授权合同的本地补充记录为 evidence/google-gates-local-v1.json;官方 UI 脱敏观察的原始范围索引为 evidence/google-one-ui-readonly-v1.json。这两份记录只证明 UI 观察、脱敏字段、独立 approval 绑定和 fail-closed 校验器范围;不证明 Cloud billing、quota、云 job 或部署。

下一步 ​

默认进入 第2章 · 面向大模型的现代 Python 与张量工程底座:补齐面向对象运算符重载、闭包、venv/pytest 和 NumPy 广播直觉,接着进入 第3章 · 大模型核心数学桥接与符号解码速查 解锁 15 大数学符号。已经具备扎实工程与数学直觉的读者,可以直接进 第4章 · 从导数到自动微分。云资格未核验不挡本地主线。

边界说明:环境参考 · 隐私红线

私有学习站 · 原理从零构建 · 勿提交个人隐私或密钥