codestar-backend / README.md
github-actions
Sync backend from GitHub 47e8067
5f7afef
|
Raw History Blame Contribute Delete
7.33 kB

A newer version of the Gradio SDK is available: 6.32.0

Upgrade
metadata
title: Codestar Backend
emoji: 🚀
colorFrom: blue
colorTo: indigo
sdk: gradio
sdk_version: 6.31.0
app_file: app.py
pinned: false

CodeStar — 大模型 AI 手撕在线判题平台 (ML/DL/LLM)

差异化定位:告别传统 LeetCode 算法题,专攻 机器学习 / 深度学习 / 大模型核心算子(MHA、FlashAttention、RoPE、MLA、GQA)手撕代码与工程判题(对标 deep-ml.com)。


🌟 核心特性

  • 🎯 专注 AI 底层手撕:涵盖 Transformer 注意力机制、大模型位置编码、前馈网络、对齐损失函数与文本解码算法。
  • 🔬 数值容差对拍机制:基于 PyTorch & NumPy 浮点容差比对(allclose,支持 atol/rtol 配置),自动校验张量形状(Shape)、检测 NaN/Inf 并计算最大绝对误差。
  • 🛡️ AST 防作弊审查:静态解析语法树,严禁导入危险系统模块(os, sys, subprocess 等)与内建危险调用(eval, exec),并禁止直接调用官方现成 API(如手撕 SDPA 时禁用 torch.nn.MultiheadAttention)。
  • 💻 现代化 Monaco IDE:内置 VS Code 同款代码编辑器,暗黑主题,支持本地 localStorage 自动保存与模板重置。
  • 📐 KaTeX 公式渲染:题面完整支持 LaTeX 数学公式渲染,直观呈现算子数学原理。
  • ⚡ 零成本 CPU 判题:纯 CPU 快速评测,无需昂贵 GPU 集群或付费 API。

📚 当前已上线题库(500 道手撕题,100% 审计自检通过)

CodeStar 已构建包含 500 道标准化手撕题 的全栈 AI 题库,涵盖深度学习层、注意力机制、经典机器学习、AI Infra 分布式系统、RL 对齐与解码等全部核心知识点:

领域分类 题目数量 核心考察点代表
深度学习基础与层架构 (DL) 96 题 RMSNorm, GroupNorm, ConvNeXt, DropPath, adaLN-Zero, GeGLU, CKA, VeRA, R-Drop
注意力与大模型 (Attention) 85 题 SDPA, FlashAttention, RoPE, MLA, GQA, SwiGLU, Differential Transformer, PagedAttention
经典机器学习 (ML) 82 题 HMM 前后向, PAVA 保序回归, LOESS 局部加权, OMP, ISTA, GMM EM, OLS, PCA, SVM
数学与信息论 (Math) 58 题 Bhattacharyya/Hellinger/TV 距离, Rényi/Tsallis 广义熵, Gram-Schmidt, SVD, Cholesky
AI Infra 与分布式系统 (AIInfra) 60 题 Int8/Int4/FP8 量化, SmoothQuant, ZeRO-1/2/3, Ring All-Reduce, 1F1B 流水线
文本解码与采样策略 (Decoding) 35 题 Speculative Decoding, Min-P, Typical Sampling, Beam Search, Repetition Penalty
强化学习与偏好优化 (RL) 30 题 DPO, SimPO, KTO, IPO, ORPO, PPO Clipped Surrogate, GAE-lambda, Bradley-Terry
损失函数 (Loss) 28 题 Label Smoothing, Focal Loss, ArcFace, SupCon, InfoNCE
优化器与学习率调度 (Optim) 26 题 AdamW, Lion, Adagrad, RMSprop, Cosine Annealing, LARS

快速全量自检 (0.4 秒高速验证)

在本地运行快速内存自检脚本,0.6 秒即可完成全部 500 道题目的参考实现与测试用例对拍: \ash python scripts/fast_verify_all.py \

重点核心手撕算子展示

序号 题目名称 分类 难度 核心考察点
1 手撕缩放点积注意力 (SDPA) Attention Medium Causal Mask, Scale 因子, 交叉注意力
2 手撕 FlashAttention 前向与分块 Attention Hard Tiling 分块, Online Softmax 递推更新
3 手撕旋转位置编码 (RoPE) Attention Medium 广播旋转, 偶数维复数旋转矩阵
4 手撕分组查询注意力 (GQA) Attention Medium KV-Cache 优化, repeat_interleave
5 手撕潜在多头注意力 (MLA) Attention Hard DeepSeek-V2/V3 核心, 低秩 KV 压缩与上采样
6 手撕线性偏置注意力 (ALiBi) Attention Medium 相对位置衰减斜率, 长度外推性
7 手撕 SwiGLU 门控激活函数 Attention Easy LLaMA FFN 核心, SiLU 门控与参数投影
8 手撕 RMSNorm 均方根归一化 DL Easy LLaMA 标配归一化, 均方根缩放与可学习参数
9 手撕 LoRA 低秩适配层与参数合并 DL Medium $W_0 + \frac{\alpha}{r}AB$ 增量更新, 权重吸纳
10 手撕 Inverted Dropout 丢弃层 DL Easy 期望不变性缩放 $\frac{1}{1-p}$, 训练/评估模式切换
11 手撕标签平滑交叉熵损失 DL Easy Label Smoothing, 正则化, NLLLoss 与均匀分布
12 手撕 DPO 直接偏好对齐损失 RL Medium RLHF, 策略模型与参考模型 Log-Ratio, logsigmoid
13 手撕 Top-K 采样截断过滤 ML Easy 候选集过滤, 非 Top-K 位置填充 -inf
14 手撕 Top-P (Nucleus) 核采样截断 ML Medium 累积概率阈值截断, 至少保留首位 Token

🚀 快速启动

方式 1:Windows 一键启动(推荐开发使用)

在项目根目录下双击运行:

.\scripts\start_dev.bat

将自动启动:

  • FastAPI 判题后端:http://127.0.0.1:8000(交互文档:http://127.0.0.1:8000/docs)
  • Next.js Web 前端:http://localhost:3000

方式 2:Docker Compose 一键部署

docker compose up -d --build

打开浏览器访问 http://localhost:3000 即可开始刷题。


方式 3:手动启动

启动后端 (FastAPI)

python scripts/run_server.py

启动前端 (Next.js)

cd frontend
npm install
npm run dev

🧪 自动化测试

项目拥有严格的端到端自动化测试体系:

# 运行全部 20 项核心引擎、AST 安全、容差与 API 测试
pytest -v tests

# 运行全量 14 道上线题目的标答自检
python scripts/verify_all_problems.py

🛠️ 项目结构

codestar/
├── codestar/                 # Python 判题内核与后端
│   ├── core/
│   │   ├── schemas.py        # Pydantic 数据契约 (Problem, JudgeResult)
│   │   ├── ast_checker.py    # AST 语法解析与防作弊安全检查
│   │   ├── comparator.py     # PyTorch & NumPy 数值容差比对器
│   │   ├── runner.py         # 子进程沙箱评测驱动 Harness
│   │   └── engine.py         # JudgeEngine 协调引擎
│   ├── problems/
│   │   └── loader.py         # 题库持久化与仓储模块
│   └── server/               # FastAPI RESTful API 服务
│       ├── app.py
│       └── routes/
├── data/
│   └── problems/             # 14 道标准题目 JSON 定义文件
├── frontend/                 # Next.js 14 Web 前端应用
│   ├── src/
│   │   ├── app/              # App Router (首页、工作台、全局样式)
│   │   ├── components/       # Monaco IDE、Navbar、控制台组件
│   │   └── lib/              # API Client 封装
├── docker/                   # Dockerfile 配置
├── scripts/                  # 运维、测试与启动工具脚本
└── tests/                    # 完整 pytest 自动化测试套件