GPT-OSS从零开始,使用纯Python实现OpenAI的大型语言模型,提供一个教育性强、深入解析大语言模型内部工作原理的开源实践,完整实现了GPT-OSS的Transformer架构,用C++实现的自定义BFloat16数据类型以确保数值精度,集成了专家混合(Mixture of Experts, MoE)架构,采用带有NTK感知缩放的旋转位置嵌入(RoPE),引入了支持注意力汇和滑动窗口的分组查询注意力(Grouped Query Attention),提供功能性的SwiGLU、RMSNorm、Softmax和线性层。GPT-OSS能够与PyTorch参考实现保持一致,通过逐token验证测试来保障其实现质量。
• 代码清晰,附带详细注释,适合学习研究
• 数值精度与 PyTorch 参考实现完全匹配
• 提供逐 token 验证机制,确保与参考模型结果一致
• 模块化设计,代码结构清晰,方便修改和扩展
• 核心功能不依赖 PyTorch,安装灵活轻便
• 模型规模:200 亿参数解码器架构
• transformer 块数量:36 层
• 隐藏层维度:2880
• 注意力机制:分组查询注意力 + 滑动窗口
• 前馈网络:32 个专家的混合专家系统(MoE),采用 top-4 路由策略
• C++ 自定义 BFloat16 实现,保障数值计算精度
• 混合专家系统(MoE),提升模型并行计算效率
• 支持 NTK 感知缩放的旋转位置编码(RoPE)
• 带注意力槽和滑动窗口的分组查询注意力
• 功能性 SwiGLU 激活函数、RMSNorm 归一化、Softmax 函数及线性层
输入 Token
↓
嵌入层(词汇表大小 → 隐藏层大小)
↓
┌─────────────────────────────────────┐
│ Transformer 块(×36) │
│ ┌───────────────────────────────┐ │
│ │ 注意力机制 │ │
│ │ • RMSNorm 归一化 │ │
│ │ • QKV 投影 │ │
│ │ • RoPE 位置编码 │ │
│ │ • 缩放点积运算 │ │
│ │ • 输出投影 │ │
│ │ • 残差连接 │ │
│ └───────────────────────────────┘ │
│ ┌───────────────────────────────┐ │
│ │ 混合专家系统 │ │
│ │ • RMSNorm 归一化 │ │
│ │ • 专家路由(top-4) │ │
│ │ • 专家计算 │ │
│ │ • 加权组合 │ │
│ │ • 残差连接 │ │
│ └───────────────────────────────┘ │
└─────────────────────────────────────┘
↓
最终 RMSNorm 归一化
↓
解嵌入层(隐藏层大小 → 词汇表大小)
↓
输出 Logits
仅支持 Ubuntu 22.04 或 Ubuntu 24.04 系统
git clone https://github.com/projektjoe/gptoss.git
cd gptoss
sudo apt update
sudo apt install -y \
python3-dev \
libopenblas-dev \
build-essential \
libdnnl-dev \
cmake
1、安装 UV 包管理器
curl -LsSf https://astral.sh/uv/install.sh | sh
2、重启终端后创建并激活虚拟环境
uv venv .venv
source .venv/bin/activate
3、安装项目(自动构建 C++ 扩展)
uv pip install -e .
如需通过 PyTorch 层匹配 OpenAI 官方实现的数值精度,可按以下步骤操作:
1、完成方式 A 中的所有步骤
2、安装 PyTorch 及相关依赖
# 方法 1:先安装 PyTorch,再禁用构建隔离
uv pip install torch
uv pip install scikit_build_core
uv pip install --no-build-isolation -e .
# 方法 2:通过环境变量禁用构建隔离
export UV_NO_BUILD_ISOLATION=1
uv pip install -e ".[torch]"
从 Hugging Face Hub 下载 GPTOSS-20B 模型权重,放置在项目根目录:
hf download openai/gpt-oss-20b --include "original/*" --local-dir gpt-oss-20b/
# 启动主程序
python main.py
# 运行测试(验证与官方实现的一致性)
python test/test.py
测试脚本支持两种验证模式,可通过修改 VERIFY_LAYER_BY_LAYER 参数控制:
• VERIFY_LAYER_BY_LAYER = True:将官方实现的输出作为下一层输入,逐层隔离测试
• VERIFY_LAYER_BY_LAYER = False:测试整个模型,错误会向后传播
测试会验证以下模块的数值一致性:
• 嵌入层查找 • RMSNorm 计算 • QKV 投影 • RoPE 应用 • 注意力机制 • MoE 路由与专家计算 • 最终 Logits 输出
[OK] block[0].attn.norm token 0 passed.
[OK] qkv layer 0 token 0 passed.
[OK] rope q layer 0 token 0 passed.
[OK] rope k layer 0 token 0 passed.
[OK] att layer 0 token 0 passed.
[OK] linear & residual layer 0 token 0 passed.
[OK] gate layer 0 token 0 passed.
[OK] moe layer 0 token 0 passed.
PowerPoint演示文稿智能生成工具 PowerPoint Slides Skill
金融 AI 新工具 FinClaw,免费提供1000+ 金融专属Skills
PPT Agent 演示文稿生成框架
端到端自主AI科研引擎 NanoResearch
CitationClaw 学术论文智能引用画像和分析报告
pi-autoresearch:pi自动化实验优化循环
OpenClaw Control Center:为OpenClaw用户(包括团队和个人)提供统一的监控和管理界面
OpenClaw Dashboard 仪表盘:让OpenClaw管理更简单
PaperBanana-CN 学术配图助手
996.ICU:工作 996, 生病 ICU