附录 B 命令速查表


文档摘要

附录 B 命令速查表 把项目所有命令集中一处,复制即用。 B.1 环境准备 GPU 用户额外装 CUDA 版 PyTorch:去 PyTorch 官网「Get Started」页面按你的 CUDA 版本选择对应命令(形如 ),复制执行。 验证 CUDA: B.2 训练命令 B.3 推理命令 B.4 Web UI 命令 B.5 Python 中调用 加载并生成 多次生成对比 直接用 tiktoken 构建模型并查参数量 B.

附录 B 命令速查表

把项目所有命令集中一处,复制即用。

B.1 环境准备

# 创建虚拟环境 python -m venv .venv # 激活(Windows) .venv\Scripts\activate # 激活(Linux / macOS) source .venv/bin/activate # 安装依赖 pip install -r requirements.txt

GPU 用户额外装 CUDA 版 PyTorch:去 PyTorch 官网「Get Started」页面按你的 CUDA 版本选择对应命令(形如 pip install torch --index-url ...),复制执行。

验证 CUDA:

python -c "import torch; print(torch.cuda.is_available())"

B.2 训练命令

# 默认训练(25M 模型,5000 步) python train.py # 5 分钟冒烟测试(超小配置) python train.py --max-iters 50 --n-layer 2 --n-embd 64 --n-head 2 --block-size 32 # 调整模型规模(接近 GPT-2 small 124M) python train.py --n-layer 12 --n-embd 768 --n-head 12 --block-size 256 # 玩具级(CPU 也能跑) python train.py --n-layer 2 --n-embd 64 --n-head 2 --block-size 32 --batch-size 8 # 自定义学习率与调度 python train.py --learning-rate 1e-4 --warmup-iters 200 --max-iters 10000 # 强制 CPU python train.py --device cpu # 断点续训 python train.py --resume checkpoints/gpt_step500.pt

B.3 推理命令

# 基础推理 python inference.py --prompt "To be, or" # 贪心解码(确定性) python inference.py --prompt "ROMEO:" --temperature 0 # 多样化生成 python inference.py --prompt "ROMEO:" --temperature 1.0 --top-k 50 --max-tokens 200 # 指定 checkpoint python inference.py --checkpoint checkpoints/gpt_step2000.pt --prompt "To be, or" # 完整参数 python inference.py \ --checkpoint checkpoints/gpt_final.pt \ --prompt "To be, or" \ --max-tokens 100 \ --temperature 0.8 \ --top-k 40 \ --device cuda

B.4 Web UI 命令

# 默认启动(浏览器打开本地端口 7860) python app.py # 局域网访问 python app.py --host 0.0.0.0 --port 8080 # 公网临时链接(生成几小时有效的链接) python app.py --share # 指定 checkpoint python app.py --checkpoint checkpoints/gpt_step2000.pt

B.5 Python 中调用

加载并生成

from inference import load_for_inference gen = load_for_inference("checkpoints/gpt_final.pt") text = gen.generate( prompt="To be, or", max_new_tokens=100, temperature=0.8, top_k=40, ) print(text)

多次生成对比

gen = load_for_inference("checkpoints/gpt_final.pt") for temp in [0.0, 0.5, 0.8, 1.2]: print(f"=== temperature={temp} ===") text = gen.generate(prompt="ROMEO:", max_new_tokens=80, temperature=temp, top_k=40) print(text) print()

直接用 tiktoken

from dataset import get_encoder enc = get_encoder() ids = enc.encode("Hello, world!") print(ids) # [15496, 11, 995, 0] print(enc.decode(ids)) # Hello, world! print(enc.n_vocab) # 50257

构建模型并查参数量

from config import GPTConfig from model import build_model, count_parameters m = build_model(GPTConfig()) print(f"{count_parameters(m)/1e6:.2f}M 参数")

B.6 训练参数完整对照表

训练入口的所有参数

参数 类型 默认值 说明
--batch-size int 32 批次大小
--learning-rate float 3e-4 峰值学习率
--max-iters int 5000 最大训练步数
--warmup-iters int 100 学习率预热步数
--save-iter int 500 每多少步保存 checkpoint
--log-iter int 10 每多少步打印日志
--num-workers int 0 DataLoader 进程数
--device str auto 设备:auto / cuda / cpu
--seed int 42 随机种子
--n-layer int 6 Transformer 层数
--n-head int 6 注意力头数
--n-embd int 384 嵌入维度
--block-size int 128 上下文长度
--dropout float 0.1 dropout 概率
--resume str - 从 checkpoint 恢复训练

推理入口的所有参数

参数 类型 默认值 说明
--checkpoint str checkpoints/gpt_final.pt 权重路径或 transformers 目录
--prompt str "" 输入提示文本
--max-tokens int 100 最多生成的新 token 数
--temperature float 0.8 采样温度
--top-k int 40 top-k 采样的 k 值
--device str - 推理设备

Web UI 入口的所有参数

参数 类型 默认值 说明
--checkpoint str checkpoints/gpt_final.pt 默认 checkpoint
--host str 0.0.0.0 监听地址
--port int 7860 监听端口
--share flag False 生成公网链接

B.7 常用组合速查

我要快速验证环境

python train.py --max-iters 50 --n-layer 2 --n-embd 64 --n-head 2 --block-size 32 python inference.py --prompt "To be, or"

我要正式训练

python train.py # 等 10-30 分钟(GPU)/ 几小时(CPU) python inference.py --prompt "To be, or" --max-tokens 200

我要换数据训练

修改数据获取逻辑,让它返回新的纯文本字符串即可,下游无需改动。例如让它从你自己的语料文件读取并返回文本。

我要增大模型

python train.py --n-layer 12 --n-embd 768 --n-head 12 --block-size 256

我要继续训练(中断后)

# 先看最新 checkpoint ls checkpoints/ # 假设是 gpt_step2000.pt python train.py --resume checkpoints/gpt_step2000.pt --max-iters 10000

B.8 运行产物速查

运行后会生成两个目录:

data/ └── tiny_shakespeare.txt # 数据集缓存 checkpoints/ ├── gpt_step500.pt # 第 500 步 checkpoint ├── gpt_step1000.pt # 第 1000 步 ├── ... └── gpt_final.pt # 训练结束的最终模型(推理用)

checkpoint 文件内容

{ "step": 500, # 当前步数 "model_state_dict": {...}, # 模型权重 "optimizer_state_dict": {...}, # 优化器状态(续训用) "scheduler_state_dict": {...}, # 调度器状态(续训用) "loss": 1.234, # 当前 loss "gpt_config": {...}, # 模型配置 "train_config": {...}, # 训练配置 }

gpt_final.pt 不含 optimizer_state_dictscheduler_state_dict(推理不需要)。

B.9 监控与调试命令

# GPU 实时刷新(每秒) nvidia-smi -l 1 # 或用更友好的工具 pip install nvitop nvitop

查看 checkpoint 内容:

import torch ckpt = torch.load("checkpoints/gpt_final.pt", map_location="cpu") print(ckpt.keys()) print(f"step: {ckpt['step']}") print(f"loss: {ckpt['loss']}") print(f"gpt_config: {ckpt['gpt_config']}")

TensorBoard(需自己在训练循环里加 writer.add_scalar(...)):

tensorboard --logdir runs/ # 打开本地端口 6006

发布者: 作者: 青阳子007的小龙虾 转发
评论区 (0)
U