Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LLM_bagu · 大模型 / RL 面试基本功刷题

像 LeetCode 一样「手撕」LLM 与 RL 的核心组件;问答题用免费大模型当面试官给你逐点判分。

python pytorch judge license prs


面试大模型 / Code Agent 方向,八股看一百遍不如自己手撕一遍。这个仓库把高频考点拆成两类可练的题:

  • 🧩 代码题 —— 打开 notebook,在「实现 cell」补全函数,跑「测试 cell」看红/绿。每题用 PyTorch 官方算子 / 闭式公式做 oracle 自动判对错,而且测试会打印关键中间量(注意力权重、量化误差、BPE 合并过程…),让你跑一遍就看懂,而不是只得到一个 ✓。
  • 💬 问答题 —— 练「讲清楚」型考点(分词、对齐取舍、量化、分布式、推理优化…)。每题备好评分要点 rubric,你作答后调一个免费大模型 API(智谱 / 豆包 / MiniMax 任选)当面试官,给出总分 + ✅正确点 + ❌错误点 + 改进建议;没配 key 也能打印要点供自评。

配套「速记卡」帮你把每个概念背成白板能写的一句话。

✨ 特点

  • 测试即讲解:代码题的 test case 不是 mock,而是边验证边 print 关键张量/误差/中间过程,加深理解。
  • oracle 独立于答案:用 torch.nn.functional / 闭式公式 / 独立朴素实现当 ground truth,绝不偷看参考解,「测试过 = 真的对」。
  • 免费大模型判分:纯标准库实现(零额外依赖),OpenAI 兼容,内置 5 家预设,.env 一行切换。
  • 一题一个文件夹:源码 + notebook + 速记卡 + 参考答案都在该题目录里,自包含。
  • headless 跑题器:不开 notebook 也能 python bagu.py ... 跑测试 / 看进度 / 判分。

🚀 快速上手

# 1) 用装了 torch 的环境(Python 3.10+,torch>=2.0)
pip install -r requirements.txt        # torch / numpy / jupyterlab

# 2) 从源码生成所有刷题 notebook(就生成在各题目录下)
python build_notebooks.py

# 3) 开刷
jupyter lab                            # 进 exercises/ 或 qa/ 的题目文件夹点开 .ipynb
#   代码题:exercises/A_attention/A01_scaled_dot_product_attention/A01_*.ipynb
#   问答题:qa/QC_systems/QC01_lora_qlora/QC01_*.ipynb

代码题 notebook:题面 → 环境准备 → ✏️实现 cell → ✅测试 cell(看红/绿 + 打印中间量)→ 💡参考答案 → 速记卡。 问答题 notebook:题面 → ✏️你的答案 → ✅判分(调大模型)→ 💡参考答案(独立文件运行时读取)

🗺️ 题目地图

代码题(27 题)

轨道 题目
A · 注意力 & Transformer 内核 SDPA · MHA · MQA/GQA · RoPE · KV-cache 增量解码 · RMSNorm/LayerNorm · 稳定 softmax & 交叉熵 · pre-norm block
B · RL 基础数学 折扣回报 · GAE · REINFORCE · PPO clip · value/TD · KL 散度
C · 后训练 / Agentic RL GRPO group advantage · DPO loss · RLVR reward · observation loss-mask · pass@k · importance ratio
D · 采样与训练杂项 temperature/top-k/top-p · label smoothing · Adam 单步 · beam search · warmup+cosine
E · 工程内核 / 压缩与推理 BPE 合并 · INT8 对称量化

问答题(14 题,大模型判分)

轨道 题目
QA · 基础与架构 子词分词/BPE · 位置编码全景 · 注意力家族与 KV cache · SwiGLU+Pre-Norm
QB · 训练与对齐 训练三阶段 · RLHF 全链路与 KL · DPO vs PPO vs GRPO · 灾难性遗忘与对齐税
QC · 高效训练与部署 LoRA/QLoRA · 量化 · 分布式并行 · 推理优化
QD · 评测与应用 幻觉 · RAG

🤖 问答题判分:配一个免费 key(1 分钟)

判分器(common/judge.py)是 OpenAI 兼容 + 纯标准库实现,内置 智谱 / 豆包 / MiniMax / 硅基流动 / OpenRouter 预设。切换只改 .env 两行:

cp .env.example .env
#   BAGU_JUDGE_PROVIDER=zhipu          # zhipu / doubao / minimax / siliconflow / openrouter
#   BAGU_JUDGE_API_KEY=你的key

各家怎么领免费 key、模型名怎么填,见 docs/free-api-guide.md。默认 zhipu(GLM-4.5-Flash,完全免费、国内直连)。判分长这样:

== QC02 判分结果 ==
  总分:62 / 100
  总评:抓住了量化核心机制,但覆盖面只到一半。

  ✅ 正确点(答到的):
    ● 量化在做什么   fp16→int8、scale 还原、省显存讲清楚了
  ❌ 错误点 / 没答到(要补的):
    ◐ 部分 PTQ vs QAT   区分了定义,但没提校准数据/伪量化/成本差异
    ○ 缺失 对称 vs 非对称   完全没讨论
    ○ 缺失 GPTQ / AWQ      完全没讨论
    ○ 缺失 outlier 难点     完全没讨论
  改进建议:补上对称/非对称、量化粒度、GPTQ/AWQ 与 outlier 处理。

命令行也能判分:python bagu.py qa QC02(显示题面 → 读你作答 → 大模型判分)。 参考答案放在独立文件 qa/<轨道>/<题>/answer.md,notebook 运行时才读取,不写进 .ipynb,避免提前剧透。

🛠️ headless 跑题器

python bagu.py list          # 列出所有题(代码题 ✅/⬜ + 问答题 📝)
python bagu.py test A03       # 跑单题 / 整轨(python bagu.py test A)
python bagu.py solve A03      # 卡住了?打印参考答案
python bagu.py verify        # 全量自检:确认每题参考答案都能让测试全绿
python bagu.py qa QA01        # 答一道问答题并判分

📂 目录结构

LLM_bagu/
├── build_notebooks.py      # 从源码生成 notebook,就放进各题目录(产物,勿手改)
├── bagu.py                 # headless 跑题 / 自检 / 问答判分器
├── common/checks.py        # set_seed / assert_allclose / show / note / check_all
├── common/judge.py         # 问答题判分器(OpenAI 兼容,默认智谱,无 key 优雅降级)
├── exercises/<轨道>/<题>/   # 代码题:problem.py solution.py test_problem.py README.md + <题>.ipynb
├── qa/<轨道>/<题>/          # 问答题:question.md + answer.md(评分要点+参考答案)+ <题>.ipynb
├── docs/cheatsheet.md      # 代码题「一句话结论」汇总
├── docs/free-api-guide.md  # 免费大模型 API 获取攻略
└── .env.example            # 判分器多家预设 + key 配置模板

📐 设计约定

  • 源码是真相,notebook 是生成产物:改题改 exercises/qa/ 下的源文件,再 python build_notebooks.py 重生成,不要手改 .ipynb
  • 代码题 oracle 独立于参考答案:测试用官方算子/闭式公式/独立实现当 ground truth,绝不 import solution.py
  • key 绝不入库:从环境变量或 .env 读取,.env 已在 .gitignore
  • 可独立运行:每道代码题 python exercises/<轨道>/<题>/test_problem.py 也能直接跑(无需 pytest)。

🧭 Roadmap

  • 扩充问答题:评测指标 / 长上下文 / Prompt & CoT / Agent 评测。
  • 更多「打印关键信息」代码题:MoE top-k 路由 + 负载均衡、flash-attention 在线 softmax、投机解码接受率、per-channel 量化对比。
  • 欢迎 PR:加题只需在 exercises/qa/ 下按现有结构建文件夹,再 python build_notebooks.py

📄 License

MIT —— 自由使用、修改、分发。题目内容仅供学习交流。

About

手撕 LLM/RL 面试基本功 + 免费大模型判分的问答题库 | LeetCode-style LLM & RL interview drills with free-LLM-judged Q&A

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages