附录 B 命令速查表


文档摘要

附录 B 命令速查表 把项目所有命令集中一处,复制即用。 B.1 环境准备 创建虚拟环境 激活虚拟环境 安装依赖 安装 CUDA 版 PyTorch(可选,GPU 用户) 验证 CUDA B.2 训练命令(train.py) 默认训练(25M 模型,5000 步) 5 分钟冒烟测试(超小配置) 调整模型规模 调整训练参数 设备控制 断点续训 多参数组合 B.3 推理命令(inference.py) 基础推理 贪心解码(确定性) 多样化生成 指定 checkpoint 完整参数 B.4 Web UI 命令(app.py) 默认启动 局域网访问 公网临时链接 指定 checkpoint 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

安装 CUDA 版 PyTorch(可选,GPU 用户)

# CUDA 12.1 示例(以 PyTorch 官网命令为准) pip install torch --index-url PyTorch 官方 CUDA 轮子仓库(whl/cu121)

验证 CUDA

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

B.2 训练命令(train.py)

默认训练(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 # 大 batch + 长 block python train.py --batch-size 64 --block-size 256

设备控制

# 强制 CPU python train.py --device cpu # 指定 GPU python train.py --device cuda:0

断点续训

python train.py --resume checkpoints/gpt_step500.pt

多参数组合

python train.py \ --n-layer 6 --n-embd 384 --n-head 6 \ --batch-size 32 --learning-rate 3e-4 \ --max-iters 5000 --warmup-iters 100 \ --save-iter 500 --log-iter 10 \ --device cuda --seed 42

B.3 推理命令(inference.py)

基础推理

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 命令(app.py)

默认启动

python app.py # 浏览器打开 本地端口 7860

局域网访问

python app.py --host 0.0.0.0 --port 8080 # 局域网其他机器访问 你的IP:8080

公网临时链接

python app.py --share # 生成一个 xxx.gradio.live 链接(几小时有效)

指定 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 参数") print(m) # 打印完整结构

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

train.py 所有参数

参数 类型 默认值 说明
--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 恢复训练

inference.py 所有参数

参数 类型 默认值 说明
--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 - 推理设备

app.py 所有参数

参数 类型 默认值 说明
--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

我要换数据训练

修改 dataset.pyget_dataset(),返回新文本即可:

def get_dataset(cache_path="data/my_data.txt"): # 你的数据获取逻辑 return my_text

我要增大模型

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

我要部署 Web

# 后台运行 nohup python app.py --host 0.0.0.0 --port 7860 > app.log 2>&1 &

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 # 或用 nvitop(更友好) 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']}")

数模型参数

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

TensorBoard(需自己加)

# 训练时加 writer.add_scalar(...) tensorboard --logdir runs/ # 打开 本地端口 6006

发布者: 作者: 转发
评论区 (0)
U