SuperAPI AI 工具集

pyre-code-ml-practice

编程与开发

查看项目

更新于 10-15 18:13

技能介绍

用途

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 道,具体题目列表以实际仓库为准。
  • 关于收费、价格、平台支持等未在资料中提供。