Skip to content

第1章 · 环境、隐私与 Google Cloud 权益审计

本页只记录本地基线和外部资格核验方法,未把账号或云执行写成已通过。

本章是主线内容之前的环境准备章,只建立一个可复现、可停止、不泄密、不把会员权益误当作云授权的起点。

目标

  • 固定本地 Node/Python/浏览器/设备基线,并能在全新 checkout 重跑。
  • 只记录脱敏的能力状态,不记录账号 ID、项目号、余额截图、cookie、token 或账单原文。
  • 区分 Google AI Pro 会员权益、Google Developer Profile credit、Google Cloud Billing、GPU quota、Colab/Kaggle 配额和 Gemini API 账本。
  • 把云训练拆成资格、smoke、full run、service deploy 四道独立门;任意一门未核验都停在本地。

本地基线

bash
pnpm install --frozen-lockfile
pnpm test:labs
pnpm docs:build
pnpm docs:preview --host 127.0.0.1

python3.11 -m venv .venv
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 -m pytest python/tests -q --tb=short

requirements.txt 会自动加载 requirements-py311.lock.txt 的 16 个 Python 3.11 支持矩阵约束。发布前还要分别运行 pnpm privacy:historypnpm source:manifest -- --strict;当前两者的阻塞状态必须如实保留,不能被 pnpm verify 的本地 fixture 通过替代。

主线第3–10章默认使用 CPU/Apple Silicon MPS;规范安装会包含 PyTorch,因为第8章的真实 backward/update、受控 loss 下降、无 NaN、checkpoint 恢复是核心合同。缺少 PyTorch 的环境不能把 skipped 当作通过,应先修复环境。

能力审计字段

在本人打开官方 UI 后,只保存下面的结构,不复制任何个人信息:

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

字段模板和一次性授权的机器合同分别在 configs/google-gates.template.json;当前 checkout 的记录是 configs/google-gates-local-v1.json,其中 Google One 的 AI Pro 福利已由官方 UI 脱敏观察到,但 Cloud 训练资格仍为 unverified。提交脱敏记录前运行:

bash
pnpm google:gates
node scripts/validate_google_gates.mjs --file <repo-relative-sanitized-record.json>

校验器只接受 eligible|unavailable|unverified,拒绝账号/项目/账单标识、凭据、绝对路径和邮箱;smokefull-runservice-deploy 必须各自绑定不同的 approval_idoperation_id、route、region、资源形状、最大时长、gross 预算、expiry 和计划资源。当前只观察到 Google AI Pro 福利描述;Cloud 账单、项目、quota、Gemini API billing、Colab runtime 和 Kaggle accelerator 仍是 unverified,三个授权为 false,因此命令的通过含义是“合同和隐私边界有效”,不是云动作已执行。

Google AI Pro 页面可能展示 Developer Program 的 Google Cloud credit 或产品化 AI credits;这只能证明“官方计划存在该权益描述”,不能推出当前账号已完成 Developer Profile 关联、Cloud Billing 已启用、Gemini API 付费层/GPU quota 可用、项目能创建资源或训练费用一定为零。课程必须以当天真实 UI 和预算审批为准。

云路线与停止条件

本课程的默认小模型路线是 cloud_run_job_cpu,Vertex T4 只在 quota、价格和人工授权全部通过时启用。两条路线都必须绑定固定参数规模、token 上限、最长时长、region、预计 gross cost、operation_id 和一次性 approval_id。credit 不是 spending cap。

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;未核验或未授权时,本地结果不能标记为云端通过。

云 artifact chain 必须完整可回读:

text
dataset/config/tokenizer hash
  → job execution ID
  → checkpoint hash + validation metrics
  → image digest
  → private service revision
  → authenticated generation comparison

顺序固定为:本地 dry-run → 5–10 分钟 smoke → 单独 full run → 单独 service deploy → 生成对拍 → 同日清理 → 48 小时资源/账单回读。当前仓库不执行任何云请求,三项授权默认 false;本地 dry-run 不能写成云端通过。这条顺序在 第18章的部署门禁节 展开为逐阶段证据表——本章定三态审计与授权合同,第18章定每个阶段要回读什么证据。

故障注入与预期信号

注入预期信号修复/停止条件
把会员名当 GPU 配额计划直接提交资源保持 unverified,停在本地
只有 smoke approval 却启动 full runapproval action 不匹配ledger 拒绝,不能继承授权
gross cost、时长或 region 缺失计划不可审计不创建 job
本地 checkpoint 冒充云 checkpointartifact chain 缺 execution IDcloud_training_passed=false
发现异常资源/账单继续执行会放大损失立即停止,交由人类处理

口述与自测(不看资料,5–10 分钟)

  • 说明为什么 eligible、一次 smoke 授权与一次真实云执行是三件不同的事;指出每一步缺失时必须停在哪里。
  • 用自己的话画出本地训练输入到私有 Service 的 artifact chain,并指出哪个回读能阻止“本地成功”被误报成云端成功。

常见问题

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

资源 / 成本 / 隐私

  • 资源:本地 Node、Python 3.11、PyTorch、Chrome 与仓库内 fixture 即可完成本章;Google 官方页面只在学习者主动核验时使用,课程不要求把账号资料带入仓库。
  • 成本:本地路径的直接成本为 $0;Cloud dry-run 固定 network_calls=0 且不创建资源。真实 Cloud smoke/full-run/deploy 需要另行人工审批、预算和当天资格核验,本页不把会员权益写成免费额度。
  • 隐私:只保存脱敏的布尔/状态/范围字段,不保存账号、项目号、账单、cookie、token、邮箱或个人经历原文;个人材料仅用于本地课程适配,不进入公开构建产物。

证据

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

evidence/module-manifest-v1.json01.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 或部署。

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

复制下面模板并填写本人当天官方 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

本章的本地命令输出、脱敏能力 YAML、隐私扫描结果、云 dry-run JSON 和浏览器页面/console/network 检查只证明各自范围。模板未填写、资格为 unverified 或授权为 false 时,必须停在本地路径;这些记录不能推出云训练、部署或学习者掌握已经通过。

下一章:第3章 · 从导数到自动微分 · 边界说明:环境参考 · 隐私红线

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