支持私有化部署
AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


欢迎 GPT OSS —— 来自 OpenAI 的全新开放模型家族!

发布日期:2025-08-06 16:49:24 浏览次数: 1515
作者:Hugging Face

微信搜一搜,关注“Hugging Face”

推荐语

OpenAI重磅推出GPT OSS开放模型家族,两大MoE架构模型兼顾高性能与低资源需求,助力开发者构建智能应用。

核心内容:
1. GPT OSS系列包含117B和21B两款MoE架构模型
2. 创新4-bit量化技术实现单卡部署与端侧应用
3. 采用Apache 2.0许可证并附带简易使用政策

杨芳贤
53AI创始人/腾讯云(TVP)最具价值专家

GPT OSS 是 OpenAI 推出的 重量级开放模型,面向强推理、智能体任务以及多样化开发场景。该系列包含两款模型:拥有 117B 参数的和拥有 21B 参数的。二者皆采用 Mixture‑of‑Experts (MoE) 架构,并在 MoE 权重上使用 4‑bit 量化方案 MXFP4。由于 active 参数更少,它们在保持资源占用低的同时实现了快速推理:120B 版本可部署于单张 H100 GPU,20B 版本则能在 16 GB 显存内运行,适合消费级硬件和端侧应用。

为了让社区受益更大,模型采用 Apache 2.0 许可证,并附带精简使用政策:

我们希望工具能被安全、负责且民主地使用,同时最大化您对使用方式的控制权。使用 gpt‑oss 即表示您同意遵守所有适用法律。

OpenAI 表示,这一发布是其长期承诺开源生态、实现“让人工智能惠及全人类”使命的重要一步。许多场景需要私有或本地部署,Hugging Face 对的加入深感振奋,并相信 GPT OSS 将成为长期且富有启发性的旗舰模型。

能力与架构概览

  • 共计 21B 与 117B 参数,对应 3.6B 与 5.1B 活跃参数
  • 4‑bit MXFP4 量化仅应用于 MoE 权重:120B 版可容纳于单张 80 GB GPU,20B 版可容纳于单张 16 GB GPU。
  • 纯文本推理模型,内置链式思维 (Chain‑of‑Thought) 并可调节推理强度。
  • 支持指令跟随与工具调用,适配生成式 AI 和 AI 智能体工作流。
  • 提供基于 transformers、vLLM、llama.cpp、Ollama 的多种推理实现。
  • 建议使用进行推理。
  • 许可证:Apache 2.0,并附带简易使用政策。

架构细节

  • Token‑choice MoE,激活函数采用 SwiGLU。
  • 在选出 Top‑k 专家后对其权重执行 softmax (softmax‑after‑topk) 。
  • 注意力层使用 RoPE,相对位置编码最长支持 128K Token。
  • 注意力层交替采用“全局上下文”与“滑动 128 Token 窗口”机制。
  • 每个注意力头引入 learned attention sink:在 softmax 分母中加入可学习偏置,增强长上下文稳定性。
  • 与 GPT‑4o 等 OpenAI API 模型共用分词器,并新增 Token 以兼容 Responses API。

通过推理提供商调用 API

GPT OSS 已接入 Hugging Face 的服务。您可使用统一的 JavaScript 或 Python SDK,通过多家推理提供商 (如 AWS、Cerebras 等) 快速调用模型。这正是官方演示站点的底层基础设施,亦可直接复用于个人或企业项目。

下面以 Python + Cerebras 为例:

from openai import OpenAI
client = OpenAI(
    inference_provider="cerebras",
    api_key="YOUR_HF_API_KEY"
)

response = client.chat.completions.create(
    model="openai/gpt-oss-120b",
    messages=[{"role""user""content""用中文解释 MXFP4 量化是什么?"}],
)
print(response.choices[0].message.content)

更多代码示例和性能对比,参见模型卡中的以及我们专门撰写的

下面示例展示了使用 Python 调用超高速 Cerebras 提供商。如需更多代码片段,请查阅模型卡中的以及我们专门撰写的

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=os.environ["HF_TOKEN"],
)

completion = client.chat.completions.create(
    model="openai/gpt-oss-120b:cerebras",
    messages=[
        {
            "role""user",
            "content""How many rs are in the word 'strawberry'?",
        }
    ],
)

print(completion.choices[0].message)

Inference Providers 还实现了兼容 OpenAI 的 Responses API——这是目前针对聊天模型最先进、最灵活、最直观的接口。 下面示例展示了如何在 Fireworks AI 提供商上使用 Responses API。更多细节参见开源项目

import os
from openai import OpenAI

client = OpenAI(
    base_url="https://router.huggingface.co/v1",
    api_key=os.getenv("HF_TOKEN"),
)

response = client.responses.create(
    model="openai/gpt-oss-20b:fireworks-ai",
    input="How many rs are in the word 'strawberry'?",
)

print(response)

本地推理

使用 Transformers

请确保安装最新版 transformers (≥ v4.55) ,以及 accelerate 与 kernels

pip install --upgrade accelerate transformers kernels

模型权重采用 mxfp4 量化格式,可在 Hopper 或 Blackwell 系列 GPU 上运行,包括数据中心卡 (H100、H200、GB200) 以及最新消费级 50xx 系列显卡。若您拥有此类显卡,mxfp4 能在速度与显存占用上提供最佳表现。要启用该格式,需要安装 triton 3.4 与 triton_kernels。若未安装这些库 (或显卡不兼容) ,加载模型时将自动退回至 bfloat16 (从量化权重解包) 。

我们的测试表明,Triton 3.4 与最新版 PyTorch 2.7.x 兼容。您也可以选择安装 PyTorch 2.8 (撰写本文时为预发布版本,) ,它与 triton 3.4 搭配更加稳定。以下命令可安装自带 triton 3.4 的 PyTorch 2.8 及 triton kernels:

# Optional step if you want PyTorch 2.8, otherwise just `pip install torch`
pip install torch==2.8.0 --index-url https://download.pytorch.org/whl/test/cu128

#
 Install triton kernels for mxfp4 support
pip install git+https://github.com/triton-lang/triton.git@main#subdirectory=python/triton_kernels

下面示例演示了如何使用 20B 模型进行简单推理。在 mxfp4 下运行时,占用 16 GB 显存;若使用 bfloat16,显存约为 48 GB。

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "openai/gpt-oss-20b"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype="auto",
)

messages = [
    {"role""user""content""How many rs are in the word 'strawberry'?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

generated = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(generated[0][inputs["input_ids"].shape[-1]:]))

Flash Attention 3

模型引入 attention sink 技术,vLLM 团队已将其与 Flash Attention 3 兼容。我们将他们的优化 kernel 打包至。截至撰稿时,该超高速 kernel 已在 Hopper 卡 + PyTorch 2.7/2.8 上通过测试,未来将支持更多硬件。若您使用 H100、H200 等 Hopper GPU,请执行 pip install --upgrade kernels,并在代码中添加:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "openai/gpt-oss-20b"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype="auto",
+    # Flash Attention with Sinks
+    attn_implementation="kernels-community/vllm-flash-attn3",
)

messages = [
    {"role": "user", "content": "How many rs are in the word 'strawberry'?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

generated = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(generated[0][inputs["input_ids"].shape[-1]:]))

该行代码会自动从 kernels-community 下载编译好的优化 kernel,具体机制可参考我们。Transformers 团队已对该代码进行构建与测试,可放心使用。

其他优化

若显卡为 Hopper 或更新架构,强烈建议使用 mxfp4;若可同时启用 Flash Attention 3,则务必一起开启!

若显卡不支持 mxfp4,可考虑使用 MegaBlocks MoE kernels 以获得可观的加速。只需在推理代码中进行如下调整:

from transformers import AutoModelForCausalLM, AutoTokenizer

model_id = "openai/gpt-oss-20b"

tokenizer = AutoTokenizer.from_pretrained(model_id)
model = AutoModelForCausalLM.from_pretrained(
    model_id,
    device_map="auto",
    torch_dtype="auto",
+    # Optimize MoE layers with downloadable` MegaBlocksMoeMLP
+    use_kernels=True,
)

messages = [
    {"role": "user", "content": "How many rs are in the word 'strawberry'?"},
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    tokenize=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

generated = model.generate(**inputs, max_new_tokens=100)
print(tokenizer.decode(generated[0][inputs["input_ids"].shape[-1]:]))

MegaBlocks 优化 MoE kernel 需要模型运行于 bfloat16,因此相比 mxfp4 会占用更多显存。若条件允许,我们建议优先使用 mxfp4;否则,可通过 use_kernels=True 启用 MegaBlocks。

AMD ROCm 支持

OpenAI GPT OSS 已在 AMD Instinct 硬件上完成验证,我们很高兴地宣布内核库初步支持 AMD ROCm 平台,为即将在 Transformers 中推出的 ROCm 优化 kernel 奠定基础。针对 AMD Instinct (如 MI300 系列) 的 MegaBlocks MoE kernel 加速 已经就绪,可显著提升训练与推理性能。您可直接使用前文相同的推理代码进行测试。

AMD 还为用户准备了一个 Hugging Face,可以在 AMD 硬件上体验该模型。

可用优化总结

截至撰稿时,下表根据 GPU 兼容性和我们的测试结果,给出了 推荐配置。我们预计 Flash Attention 3 (含 sink attention) 将支持更多 GPU。

GPU
mxfp4
Flash Attention 3 (含 sink attention)
MegaBlocks MoE kernels
Hopper GPU (H100、H200)
Blackwell GPU (GB200、50xx、RTX Pro 6000)
其他 CUDA GPU
AMD Instinct (MI3XX)
启用方式
安装 triton 3.4 + triton kernels
使用 kernels-community 的 vllm‑flash‑attn3
use_kernels

即便 120B 模型在单张 H100 GPU (使用 mxfp4) 上即可运行,您仍可借助 accelerate 或 torchrun 轻松在多张 GPU 上部署。Transformers 提供默认的并行化方案,并可搭配优化后的注意力 kernel。以下脚本可在 4 GPU 系统上通过 torchrun --nproc_per_node=4 generate.py 运行:

from transformers import AutoModelForCausalLM, AutoTokenizer
from transformers.distributed import DistributedConfig
import torch

model_path = "openai/gpt-oss-120b"
tokenizer = AutoTokenizer.from_pretrained(model_path, padding_side="left")

device_map = {
    "tp_plan""auto",    # Enable Tensor Parallelism
}

model = AutoModelForCausalLM.from_pretrained(
    model_path,
    torch_dtype="auto",
    attn_implementation="kernels-community/vllm-flash-attn3",
    **device_map,
)

messages = [
     {"role""user""content""Explain how expert parallelism works in large language models."}
]

inputs = tokenizer.apply_chat_template(
    messages,
    add_generation_prompt=True,
    return_tensors="pt",
    return_dict=True,
).to(model.device)

outputs = model.generate(**inputs, max_new_tokens=1000)

# Decode and print
response = tokenizer.decode(outputs[0])
print("Model response:", response.split("<|channel|>final<|message|>")[-1].strip())

OpenAI GPT OSS 模型在训练阶段大量使用工具调用来辅助推理。我们为 transformers 设计的聊天模板灵活易用,详情请参阅文末  小节。

Llama.cpp

Llama.cpp 原生支持 MXFP4 并集成 Flash Attention,可在 Metal、CUDA、Vulkan 等多种后端上实现最佳性能,且从一开始就已支持。

安装方法请参考

# MacOS
brew install llama.cpp

# Windows
winget install llama.cpp

推荐通过 llama‑server 启动:

llama-server -hf ggml-org/gpt-oss-120b-GGUF -c 0 -fa --jinja --reasoning-format none

# 然后访问 http://localhost:8080

目前同时支持 120B 与 20B 模型。更多信息请查看

vLLM

如前所述,vLLM 团队开发了兼容 sink attention 的 Flash Attention 3 优化 kernel,可在 Hopper GPU 上实现最佳性能,且同时支持 Chat Completion 与 Responses API。假设您有 2 张 H100 GPU,可通过以下命令安装并启动服务器:

vllm serve openai/gpt-oss-120b --tensor-parallel-size 2

或者直接在 Python 中调用:

from vllm import LLM
llm = LLM("openai/gpt-oss-120b", tensor_parallel_size=2)
output = llm.generate("San Francisco is a")

transformers serve

您可以使用在本地快速体验模型,无需其他依赖。命令如下:

transformers serve

随后可通过发送请求:

# responses API
curl -X POST http://localhost:8000/v1/responses \
-H "Content-Type: application/json" \
-d '{"input": [{"role": "system", "content": "hello"}], "temperature": 1.0, "stream": true, "model": "openai/gpt-oss-120b"}'

或使用标准 Completions API:

# completions API
curl -X POST http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "system", "content": "hello"}], "temperature": 1.0, "max_tokens": 1000, "stream": true, "model": "openai/gpt-oss-120b"}'

微调 (Fine‑Tuning)

GPT OSS 全面集成 trl。我们提供了若干基于 SFTTrainer 的示例,助您快速上手:

  • LoRA 示例见,展示模型如何微调以切换多语言推理。
  • 可根据需求调整的

部署至 Hugging Face 合作伙伴服务

Azure

Hugging Face 与 Azure 合作,将最受欢迎的开源开放模型 (涵盖文本、视觉、语音与多模态任务) 直接引入 Azure AI Model Catalog,便于客户在托管在线端点中安全部署,借助 Azure 的企业级基础设施、自动扩缩与监控能力。

GPT OSS 模型现已登入 Azure AI Model Catalog () ,可直接部署至在线端点进行实时推理。

Dell

Dell Enterprise Hub 是一款安全的在线门户,简化了在 Dell 平台上本地训练与部署最新开源开放 AI 模型的流程。由 Hugging Face 与 Dell 共同开发,其特性包括优化容器、对 Dell 硬件的原生支持以及企业级安全。

GPT OSS 模型已上线,可在 Dell 平台上本地部署。

评测模型

GPT OSS 属于 推理模型:评测时需要设置非常大的生成长度 (最大新 Token 数) ,因为模型会先输出推理过程,再给出最终答案。若生成长度过小,可能在推理中途被截断,导致假阴性。计算指标前应去除推理痕迹,尤其在数学或指令评测中,以免解析错误。

以下示例展示如何用 lighteval 评测模型 (需从源码安装) 。

git clone https://github.com/huggingface/lighteval
pip install -e .[dev] # make sure you have the correct transformers version installed!
lighteval accelerate \
    "model_name=openai/gpt-oss-20b,max_length=16384,skip_special_tokens=False,generation_parameters={temperature:1,top_p:1,top_k:40,min_p:0,max_new_tokens:16384}" \ 
    "extended|ifeval|0|0,lighteval|aime25|0|0" \
    --save-details --output-dir "openai_scores" \
    --remove-reasoning-tags --reasoning-tags="[('<|channel|>analysis<|message|>','<|end|><|start|>assistant<|channel|>final<|message|>')]" 

对于 20B 模型,IFEval (严格提示词) 应得到 69.5 ± 1.9,AIME25 (pass@1) 应得到 63.3 ± 8.9——与同规模推理模型预期范围一致。

若需自定义评测脚本,请注意要正确过滤推理标签,需在 tokenizer 中设定 skip_special_tokens=False,以便获得完整输出并使用上述字符串对进行过滤。原因详见下文。

聊天与聊天模板

OpenAI GPT OSS 在输出中引入“channels”概念。常见的有 analysis (推理链) 与 final (最终答案) 两个 channel。

若未调用工具,一条典型输出如下:

<|start|>assistant<|channel|>analysis<|message|>CHAIN_OF_THOUGHT<|end|>
<|start|>assistant<|channel|>final<|message|>ACTUAL_MESSAGE

大多数场景下,您只需保留 <|channel|>final<|message|>. 之后的文本作为助手回复,或展现给用户。 存在两类例外:训练阶段 与 工具调用 时,可能需要保留 analysis。

训练时:若要在训练样本中保留推理链,可将其放入 thinking 字段:

chat = [
    {"role""user""content""Hi there!"},
    {"role""assistant""content""Hello!"},
    {"role""user""content""Can you think about this one?"},
    {"role""assistant""thinking""Thinking real hard...""content""Okay!"}
]

# add_generation_prompt=False is generally only used in training, not inference
inputs = tokenizer.apply_chat_template(chat, add_generation_prompt=False)
    

你可以在此前的对话轮次中自由加入 thinking 键,或在推理 (inference) 而非训练 (training) 时加入;但它们通常会被忽略。聊天模板仅保留 最新 一段思维链 (chain of thought,下文简称 “思维链”) ,并且只有在训练阶段 (当 add_generation_prompt=False 且最后一条消息属于 assistant 时) 才会包含。

之所以采用此策略,原因颇为微妙:OpenAI 的 gpt‑oss 模型是在多轮对话数据上训练的,但其中除最后一段思维链外,其余均被丢弃。因此,当你想微调一个 OpenAI gpt‑oss 模型时,也应遵循同样做法:

  • 让聊天模板丢弃除了最后一段外的所有思维链。

  • 在所有回合中对标签进行掩码 (mask) ,仅保留最后一条 assistant 消息的标签。

    否则,模型将在没有思维链的前几轮上接受训练,结果会让模型习惯输出不含思维链的回复。

    因此,你无法将整段多轮对话作为单个样本来训练;必须将其拆分为多条样本,每条仅含一次 assistant 回复,并且每次仅对该回复解除掩码,让模型既能从每轮学习,又始终只看到最后的思维链。

System 与 Developer 消息

OpenAI GPT OSS 很特殊,因为它在对话开头区分 “system” 消息和 “developer” 消息,但大多数其他模型只有 “system”。在 GPT OSS 中,system 消息遵循严格格式,并包含当前日期、模型身份以及推理强度等级等信息,而 “developer” 消息则更为自由,这 (令人困惑地) 使它类似于其他模型的 “system” 消息。

为了让 GPT OSS 更易于在标准 API 中使用,聊天模板会把角色为 “system” 或 “developer” 的消息都当作 developer 消息。如果你想修改真正的 system 消息,可以向聊天模板传入参数 model_identity 或 reasoning_effort

chat = [
    {"role""system""content""This will actually become a developer message!"}
]

tokenizer.apply_chat_template(
    chat, 
    model_identity="You are OpenAI GPT OSS.",
    reasoning_effort="high"  # Defaults to "medium", but also accepts "high" and "low"
)

在 transformers 中使用工具 (Tool)

GPT OSS 支持两类工具:内置工具 browser 与 python,以及用户自定义工具。若要启用内置工具,只需把它们的名称以列表形式传递给 builtin_tools 参数,如下所示。若要使用自定义工具,你可以将其以 JSON Schema 或带类型注解与 docstring 的 Python 函数形式传给 tools 参数。详细说明参见,或者直接修改下方示例:

def get_current_weather(location: str):
"""
    返回指定地点的当前天气状况(字符串)。

    Args:
        location: 要查询天气的地点。
"""

    return"Terrestrial."# 我们可没说这是个靠谱的天气工具

chat = [
    {"role""user""content""What's the weather in Paris right now?"}
]

inputs = tokenizer.apply_chat_template(
    chat, 
    tools=[weather_tool], 
    builtin_tools=["browser""python"],
    add_generation_prompt=True,
    return_tensors="pt"
)

如果模型决定调用工具 (用 <|call|> 结尾表示) ,你需要把工具调用加入对话,执行工具,然后把结果再加入对话并重新生成:

tool_call_message = {
    "role""assistant",
    "tool_calls": [
        {
            "type""function",
            "function": {
                "name""get_current_temperature"
                "arguments": {"location""Paris, France"}
            }
        }
    ]
}
chat.append(tool_call_message)

tool_output = get_current_weather("Paris, France")

tool_result_message = {
    # 因为 GPT OSS 一次只会调用一个工具,所以不需要额外元数据
    # 模板可推断此结果来自最近一次工具调用
    "role""tool",
    "content": tool_output
}
chat.append(tool_result_message)

# 现在再次 apply_chat_template() 并生成,模型即可利用工具结果继续对话。

鸣谢

这次发布对社区意义重大。要在生态系统内全面支持新模型,离不开众多团队和公司的倾力合作。

本文作者从为文章贡献内容的人中选出,并不代表对项目的投入程度。除作者列表外,其他人也提供了重要的内容审阅,包括 Merve 和 Sergio。感谢!

整合与支持工作涉及数十人,不分先后,特别感谢来自开源团队的 Cyril、Lysandre、Arthur、Marc、Mohammed、Nouamane、Harry、Benjamin、Matt;TRL 团队的 Ed、Lewis、Quentin;评估团队的 Clémentine;Kernels 团队的 David 与 Daniel。商业合作方面得到 Simon、Alvaro、Jeff、Akos、Alvaro、Ivar 的大力支持。Hub 与产品团队提供了 Inference Providers 支持、llama.cpp 支持及其他改进,感谢 Simon、Célina、Pierric、Lucain、Xuan‑Son、Chunte、Julien。法律团队的 Magda 与 Anna 亦有参与。

Hugging Face 的使命是帮助社区高效使用这些模型。我们感谢 vLLM 等公司推动领域进步,并珍视与推理服务商的持续合作,让构建流程日益简化。

53AI,企业落地大模型首选服务商

产品:场景落地咨询+大模型应用平台+行业解决方案

承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

添加专属顾问

回到顶部

加载中...

扫码咨询