用途
Pyre Code 是一个自托管的机器学习编程练习平台,提供 68 道题目,范围从 ReLU 到流匹配(flow matching)。用户可以在浏览器编辑器中实现现代 AI 系统的内部组件(如 Transformer、vLLM、TRL、扩散模型),并获得即时的通过/失败反馈,无需 GPU。
主要能力
- 68 道 ML 编程题,覆盖多个类别:
- 基础:ReLU、Softmax、GELU、SwiGLU、Dropout、Embedding、Linear、Kaiming Init
- 归一化:LayerNorm、BatchNorm、RMSNorm
- 注意力:Scaled Dot-Product、Multi-Head、Causal、GQA、Flash、Differential、MLA
- 位置编码:Sinusoidal PE、RoPE、ALiBi、NTK-aware RoPE
- 架构:GPT-2 Block、ViT Block、Conv2D、MoE、Depthwise Conv
- 训练:Adam、Cosine LR、Gradient Clipping、Mixed Precision、Activation Checkpointing
- 分布式:Tensor Parallel、FSDP、Ring Attention
- 推理:KV Cache、Top-k Sampling、Beam Search、Speculative Decoding、Paged Attention
- 对齐:DPO、GRPO、PPO、Reward Model
- 扩散:Noise Schedule、DDIM Step、Flow Matching、adaLN-Zero
- 适配:LoRA、QLoRA
- 推理:MCTS、Multi-Token Prediction
- SSM:Mamba SSM
- 浏览器内即时判题反馈,无需 GPU。
- 进度持久化(默认 SQLite 数据库,Docker 下使用卷)。
- 可选 AI 帮助,支持任意 OpenAI 兼容端点(OpenAI、Anthropic 代理、Ollama 等),也可在 UI 中自行设置密钥。
- 提供学习路径建议,如 Transformer 内部、注意力与位置编码、从零训练 GPT、推理与分布式、对齐与推理、视觉 Transformer、扩散与 DiT、LLM 前沿架构等。
使用方式
安装
方式 A — 一键脚本(推荐):
git clone https://github.com/whwangovo/pyre-code.git
cd pyre-code
./setup.sh
npm run dev
setup.sh 会创建 .venv(优先使用 uv,回退到 python3 -m venv),安装所有 Python 依赖,然后打印启动命令。
方式 B — Conda:
git clone https://github.com/whwangovo/pyre-code.git
cd pyre-code
conda create -n pyre python=3.11 -y && conda activate pyre
pip install -e ".[dev]"
npm install
npm run dev
方式 C — Docker:
git clone https://github.com/whwangovo/pyre-code.git
cd pyre-code
docker compose up --build
进度保存在 Docker 卷中。使用 docker compose down -v 重置。
安装后:判题服务位于 http://localhost:8000,Web 应用位于 http://localhost:3000。
关键命令
# 同时启动前端和后端
npm run dev
# 仅启动判题服务(FastAPI)
cd grading_service && uvicorn main:app --reload --port 8000
# 仅启动前端(Next.js)
cd web && npm run dev
# 运行 Python 测试
pytest torch_judge/
# 以可编辑模式安装 Python 包及开发依赖
pip install -e ".[dev]"
# Docker:构建并启动
docker compose up --build
# Docker:停止并删除卷(重置进度)
docker compose down -v
配置
创建 web/.env.local 覆盖默认值:
GRADING_SERVICE_URL=http://localhost:8000
DB_PATH=./data/pyre.db
AI 帮助(可选):复制 web/.env.example 到 web/.env 并配置:
AI_HELP_BASE_URL=https://api.openai.com/v1
AI_HELP_API_KEY=$OPENAI_API_KEY
AI_HELP_MODEL=gpt-4o-mini
判题服务 API
FastAPI 判题服务位于 http://localhost:8000,暴露以下端点:
GET /health— 健康检查GET /problems— 列出所有题目GET /problems/{problem_id}— 获取特定题目POST /submit— 提交解答,请求体为 JSON:
{
"problem_id": "relu",
"code": "import torch\n\ndef relu(x):\n return torch.clamp(x, min=0)"
}
响应示例:
{
"problem_id": "relu",
"passed": 3,
"total": 3,
"results": [
{"case": 1, "description": "Basic positive values", "passed": true, "error": null},
{"case": 2, "description": "Negative values", "passed": true, "error": null},
{"case": 3, "description": "Mixed values", "passed": true, "error": null}
]
}
添加新题目
题目位于 torch_judge/problems/,每个题目是一个 Python 模块,包含 PROBLEM_ID、TITLE、DIFFICULTY、CATEGORY、DESCRIPTION、STARTER_CODE、REFERENCE_SOLUTION、make_test_cases() 和 grade()。创建后需在题目注册表(如 torch_judge/registry.py)中注册。建议至少编写 3 个测试用例:基础、边界和较大/随机张量。提交 PR 前用 pytest torch_judge/ 验证。
适用场景
- 希望动手实现 AI 底层组件、加深对 Transformer、扩散模型、对齐算法等理解的开发者。
- 准备机器学习相关面试,需要练习编码实现的人群。
- 教学或自学场景,按学习路径系统练习。
- 无 GPU 环境但想练习 ML 内部实现的用户。
限制
- 需要自行安装和运行,属于自托管平台。
- 判题服务依赖 Python 3.11+ 环境。
- 提交代码只能使用环境中可用的包(核心依赖包括 torch、numpy、math 等)。
- 题目数量为 68 道,具体题目列表以实际仓库为准。
- 关于收费、价格、平台支持等未在资料中提供。