由于好奇大模型推理的原理,学习了 tiny-llm 课程并将苹果芯片相关代码适配 Nvidia 芯片,遂有了本仓库。实现主要技术,完成 Qwen3-4B 模型的本地部署和推理优化。显存不够可以考虑 Qwen3-0.5B,主要是学技术。
- 需要 Nvidia 显卡,安装 cuda 环境,以及 pytorch
- 为测试代码准性,需要安装 torchao 和 torchtune
- 为了加载 huggingface 的 Qwen3 model,需要安装 transformers。如果网络失败,需要
export HF_ENDPOINT=https://hf-mirror.com
我的版本:
torch 2.6.0+cu126
torchao 0.15.0
torchtune 0.6.1
transformers 4.57.6
triton 3.2.0
| 任务 | 测试命令 |
|---|---|
✅ Task 1: 实现 scaled_dot_product_attention |
python -m unittest llm.test.attention_test.TestScaleDotAttention |
✅ Task 2: 实现 MultiHeadAttention |
python -m unittest llm.test.attention_test.TestMultiHeadAttention |
✅ Task 3: 实现 RoPE 旋转位置编码 |
python -m unittest llm.test.rope_test |
✅ Task 4: 实现 RMSNorm 标准化 |
python -m unittest llm.test.norm_test |
✅ Task 5: 实现千问的 MLP |
python -m unittest llm.test.mlp_test |
✅ Task 6.1: scaled_dot_product_attention 添加 GQA 支持 |
python -m unittest llm.test.attention_test.TestScaleDotAttention |
✅ Task 6.2: MultiHeadAttention 添加 GQA 支持 |
python -m unittest llm.test.attention_test.TestGroupedMultiHeadAttention |
✅ Task 7: 实现 tied embedding |
python -m unittest llm.test.tie_embedding_test.TestTieEmbedding |
✅ Task 8: 实现 Qwen3 TransformerBlock |
暂时没想到测试方法 |
| ✅ Task 9: 加载 Qwen3 模型,简单推理 | python -m llm.executor.run_model 执行推理 |
| 优化 | 测试命令 |
|---|---|
✅ Task 1.1: 解决重复生成问题,实现 TopK 采样 |
python -m llm.executor.run_model --topk 100 |
✅ Task 1.2: 解决重复生成问题,实现 TopN 采样 |
python -m llm.executor.run_model --topp 0.7 |
- key-value cache
- flash attention
- continuous batching
......
