openai/gpt-oss
GitHub: openai/gpt-oss
OpenAI 开源的 GPT-OSS 系列语言模型,支持本地部署和可调节推理强度,具备原生工具调用和思维链能力。
Stars: 19859 | Forks: 2052
Try gpt-oss · Guides · Model card · OpenAI blog
Download gpt-oss-120b and gpt-oss-20b on Hugging Face
欢迎来到 gpt-oss 系列,这是 [OpenAI 的开放权重模型](https://openai.com/open-models/),专为强大的推理、Agentic 任务和多样化的开发者用例而设计。 我们要发布两种版本的开放模型: - `gpt-oss-120b` — 适用于生产环境、通用目的以及适合单个 80GB GPU(如 NVIDIA H100 或 AMD MI300X)的高推理用例(117B 参数,5.1B 活跃参数) - `gpt-oss-20b` — 适用于较低延迟、本地或专业用例(21B 参数,3.6B 活跃参数) 这两个模型都使用我们的 [harmony response format][harmony] 进行训练,并且只能使用该格式;否则,它们将无法正常工作。 ## 目录 - [亮点](#highlights) - [推理示例](#inference-examples) - [关于本仓库](#about-this-repository) - [设置](#setup) - [下载模型](#download-the-model) - [参考 PyTorch 实现](#reference-pytorch-implementation) - [参考 Triton 实现(单 GPU)](#reference-triton-implementation-single-gpu) - [参考 Metal 实现](#reference-metal-implementation) - [Harmony 格式与工具](#harmony-format--tools) - [客户端](#clients) - [工具](#tools) - [其他详情](#other-details) - [贡献](#contributing) ### 亮点 - **宽松的 Apache 2.0 许可证:** 不受 copyleft 限制或专利风险地自由构建——非常适合实验、定制和商业部署。 - **可配置的推理力度:** 根据您的特定用例和延迟需求,轻松调整推理力度(低、中、高)。 - **完整的思维链:** 提供对模型推理过程的完全访问,便于调试并增加对输出的信任。此信息不旨在展示给最终用户。 - **可微调:** 通过参数微调完全定制模型以适应您的特定用例。 - **Agentic 能力:** 利用模型的原生能力进行函数调用、[网页浏览](#browser)、[Python 代码执行](#python)和结构化输出。 - **MXFP4 量化:** 模型经过 MoE 权重的 MXFP4 量化后训练,使 `gpt-oss-120b` 可以在单个 80GB GPU(如 NVIDIA H100 或 AMD MI300X)上运行,`gpt-oss-20b` 模型可在 16GB 内存内运行。所有评估均使用相同的 MXFP4 量化进行。 ### 推理示例 #### Transformers 您可以将 `gpt-oss-120b` 和 `gpt-oss-20b` 与 Transformers 库一起使用。如果您使用 Transformers 的 chat template,它将自动应用 [harmony response format][harmony]。如果您直接使用 `model.generate`,则需要使用 chat template 手动应用 harmony 格式,或使用我们的 [`openai-harmony`][harmony] 包。 ``` from transformers import pipeline import torch model_id = "openai/gpt-oss-120b" pipe = pipeline( "text-generation", model=model_id, torch_dtype="auto", device_map="auto", ) messages = [ {"role": "user", "content": "Explain quantum mechanics clearly and concisely."}, ] outputs = pipe( messages, max_new_tokens=256, ) print(outputs[0]["generated_text"][-1]) ``` [了解更多关于如何将 gpt-oss 与 Transformers 结合使用的信息。](https://cookbook.openai.com/articles/gpt-oss/run-transformers) #### vLLM vLLM 推荐使用 [`uv`](https://docs.astral.sh/uv/) 进行 Python 依赖管理。您可以使用 vLLM 启动一个兼容 OpenAI 的 Web 服务器。以下命令将自动下载模型并启动服务器。 ``` uv pip install --pre vllm==0.10.1+gptoss \ --extra-index-url https://wheels.vllm.ai/gpt-oss/ \ --extra-index-url https://download.pytorch.org/whl/nightly/cu128 \ --index-strategy unsafe-best-match vllm serve openai/gpt-oss-20b ``` [了解更多关于如何将 gpt-oss 与 vLLM 结合使用的信息。](https://cookbook.openai.com/articles/gpt-oss/run-vllm) 离线服务代码: - 在按照描述安装适当的库之后运行此代码,同时需额外安装: - `uv pip install openai-harmony` ``` # source .oss/bin/activate import os os.environ["VLLM_USE_FLASHINFER_SAMPLER"] = "0" import json from openai_harmony import ( HarmonyEncodingName, load_harmony_encoding, Conversation, Message, Role, SystemContent, DeveloperContent, ) from vllm import LLM, SamplingParams import os # --- 1) 使用 Harmony 渲染 prefill --- encoding = load_harmony_encoding(HarmonyEncodingName.HARMONY_GPT_OSS) convo = Conversation.from_messages( [ Message.from_role_and_content(Role.SYSTEM, SystemContent.new()), Message.from_role_and_content( Role.DEVELOPER, DeveloperContent.new().with_instructions("Always respond in riddles"), ), Message.from_role_and_content(Role.USER, "What is the weather like in SF?"), ] ) prefill_ids = encoding.render_conversation_for_completion(convo, Role.ASSISTANT) # Harmony stop tokens (传递给 sampler 以便它们不会包含在输出中) stop_token_ids = encoding.stop_tokens_for_assistant_actions() # --- 2) 使用 prefill 运行 vLLM --- llm = LLM( model="openai/gpt-oss-20b", trust_remote_code=True, gpu_memory_utilization = 0.95, max_num_batched_tokens=4096, max_model_len=5000, tensor_parallel_size=1 ) sampling = SamplingParams( max_tokens=128, temperature=1, stop_token_ids=stop_token_ids, ) outputs = llm.generate( prompt_token_ids=[prefill_ids], # batch of size 1 sampling_params=sampling, ) # vLLM 为您提供文本和 token ID gen = outputs[0].outputs[0] text = gen.text output_tokens = gen.token_ids # <-- these are the completion token IDs (no prefill) # --- 3) 将 completion token IDs 解析回结构化的 Harmony 消息 --- entries = encoding.parse_messages_from_completion_tokens(output_tokens, Role.ASSISTANT) # 'entries' 是一个结构化对话条目序列(assistant 消息、tool calls 等)。 for message in entries: print(f"{json.dumps(message.to_dict())}") ``` #### PyTorch / Triton / Metal 这些实现主要是用于教育目的的参考实现,不期望在生产环境中运行。 [在下方了解更多。](#reference-pytorch-implementation) #### Ollama 如果您尝试在消费级硬件上运行 `gpt-oss`,可以在 [安装 Ollama](https://ollama.com/download) 后运行以下命令使用 Ollama。 ``` # gpt-oss-20b ollama pull gpt-oss:20b ollama run gpt-oss:20b # gpt-oss-120b ollama pull gpt-oss:120b ollama run gpt-oss:120b ``` [了解更多关于如何将 gpt-oss 与 Ollama 结合使用的信息。](https://cookbook.openai.com/articles/gpt-oss/run-locally-ollama) #### LM Studio 如果您正在使用 [LM Studio](https://lmstudio.ai/),可以使用以下命令进行下载。 ``` # gpt-oss-20b lms get openai/gpt-oss-20b # gpt-oss-120b lms get openai/gpt-oss-120b ``` 查看我们的 [awesome list](./awesome-gpt-oss.md) 以获取更广泛的 gpt-oss 资源和推理合作伙伴集合。 ## 关于本仓库 本仓库提供了一系列参考实现: - **推理:** - [`torch`](#reference-pytorch-implementation) — 一个非优化的 [PyTorch](https://pytorch.org/) 实现,仅用于教育目的。由于缺乏优化,至少需要 4× H100 GPU。 - [`triton`](#reference-triton-implementation-single-gpu) — 一个使用 [PyTorch](https://pytorch.org/) 和 [Triton](https://github.com/triton-lang/triton) 的更优化的实现,包括使用 CUDA graphs 和基本缓存 - [`metal`](#reference-metal-implementation) — 一个在 Apple Silicon 硬件上运行模型的 Metal 专用实现 - **工具:** - [`browser`](#browser) — 模型训练时所用的 browser 工具的参考实现 - [`python`](#python) — 模型训练时所用的 python 工具的无状态参考实现 - **客户端示例:** - [`chat`](#terminal-chat) — 一个基本的终端聊天应用程序,使用 PyTorch 或 Triton 实现进行推理,并配合 python 和 browser 工具 - [`responses_api`](#responses-api) — 一个示例 Responses API 兼容服务器,实现了 browser 工具以及其他 Responses 兼容功能 ## 设置 ### 要求 - Python 3.12 - 在 macOS 上:安装 Xcode CLI 工具 --> `xcode-select --install` - 在 Linux 上:这些参考实现需要 CUDA - 在 Windows 上:这些参考实现尚未在 Windows 上经过测试。如果您尝试在本地运行模型,请尝试使用 Ollama 等解决方案。 ### 安装 如果您想尝试任何代码,可以直接从 [PyPI](https://pypi.org/project/gpt-oss/) 安装 ``` # 如果您只需要 tools pip install gpt-oss # 如果您想尝试 torch implementation pip install gpt-oss[torch] # 如果您想尝试 triton implementation pip install gpt-oss[triton] ``` 如果您想修改代码或尝试 metal 实现,请在本地设置项目: ``` git clone https://github.com/openai/gpt-oss.git GPTOSS_BUILD_METAL=1 pip install -e ".[metal]" ``` ## 下载模型 您可以直接通过 Hugging Face CLI 从 [Hugging Face Hub](https://huggingface.co/collections/openai/gpt-oss-68911959590a1634ba11c7a4) 下载模型权重: ``` # gpt-oss-120b hf download openai/gpt-oss-120b --include "original/*" --local-dir gpt-oss-120b/ # gpt-oss-20b hf download openai/gpt-oss-20b --include "original/*" --local-dir gpt-oss-20b/ ``` ## 参考 PyTorch 实现 我们在 [gpt_oss/torch/model.py](gpt_oss/torch/model.py) 中包含了一个效率较低的参考 PyTorch 实现。此代码使用基本的 PyTorch 算子来展示确切的模型架构,并添加了少量对 MoE 中张量并行的支持,以便较大的模型可以运行此代码(例如,在 4xH100 或 2xH200 上)。在此实现中,我们将所有权重向上转换为 BF16 并以 BF16 运行模型。 要运行参考实现,请安装依赖项: ``` pip install -e ".[torch]" ``` 然后运行: ``` # 在 4xH100 上: torchrun --nproc-per-node=4 -m gpt_oss.generate gpt-oss-120b/original/ ``` ## 参考 Triton 实现(单 GPU) 我们还包含了一个优化的参考实现,它使用 [an optimized triton MoE kernel](https://github.com/triton-lang/triton/tree/main/python/triton_kernels/triton_kernels),支持 MXFP4。它还在 attention 代码上做了一些优化以降低内存成本。要运行此实现,需要安装 nightly 版本的 triton 和 torch。此版本可以在单个 80GB GPU 上运行 `gpt-oss-120b`。 要安装参考 Triton 实现,请运行 ``` # 您需要从源代码安装 triton 才能使用 triton implementation git clone https://github.com/triton-lang/triton cd triton/ pip install -r python/requirements.txt pip install -e . --verbose --no-build-isolation pip install -e python/triton_kernels # 安装 gpt-oss triton implementation pip install -e ".[triton]" ``` 然后运行: ``` # 在 1xH100 上 export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True python -m gpt_oss.generate --backend triton gpt-oss-120b/original/ ``` 如果您遇到 `torch.OutOfMemoryError`,请确保开启 expandable allocator 以避免从 checkpoint 加载权重时发生崩溃。 ## 参考 Metal 实现 此外,我们为在 Apple Silicon 上运行提供了 Metal 的参考实现。此实现尚未准备好用于生产环境,但与 PyTorch 实现保持一致。 在 Apple Silicon 设备上运行 `.[metal]` 安装时,该实现将自动编译: ``` GPTOSS_BUILD_METAL=1 pip install -e ".[metal]" ``` 要执行推理,您首先需要使用以下命令将 Hugging Face 的 SafeTensor 权重转换为正确的格式: ``` python gpt_oss/metal/scripts/create-local-model.py -s
标签:Agent, AI风险缓解, AMD MI300X, Apache 2.0, Apex, CUDA, GPT, gpt-oss-120b, gpt-oss-20b, GPU推理, H100, Hugging Face, LLM, Metal, NLP, OpenAI, PyTorch, Transformer, Triton, Unmanaged PE, Vectored Exception Handling, 人工智能, 低延迟, 内存规避, 凭据扫描, 基础模型, 开源大模型, 开源搜索引擎, 开源权重, 推理模型, 文本生成, 本地部署, 机器学习, 深度学习, 漏洞管理, 用户模式Hook绕过, 系统调用监控, 逆向工具