一、概述

gpt-oss 是 OpenAI 发布的开放权重(open-weight)模型系列,面向强推理、Agent 能力与多样化应用场景

提供两种规格:

  • gpt-oss-120b:面向生产与高推理需求,单卡 80GB GPU(如 NVIDIA H100 或 AMD MI300X)可运行(117B 参数,活跃参数 5.1B)。
  • gpt-oss-20b:面向低时延、本地化或专项场景(21B 参数,活跃参数 3.6B)。

两款模型均基于 harmony 对话格式训练,必须使用该格式,否则行为不稳定。

二、亮点(Highlights)

  • Apache 2.0 许可:无传染条款与专利风险,便于实验、定制与商业化。
  • 推理成本可调:按需在低/中/高之间折中推理强度与时延。
  • 可访问的推理过程(CoT):便于调试与可解释性(不建议直接展示给终端用户)。
  • 可微调:支持参数级微调,适配垂直场景。
  • 原生 Agent 能力:函数调用、网页浏览、Python 代码执行与结构化输出。
  • 原生 MXFP4 量化:MoE 层使用 MXFP4;120b 可单卡 80GB 运行,20b 可在 16GB 级内存环境运行。

三、推理示例(Inference examples)

Transformers

可直接在 Transformers 中使用 gpt-oss-120b / gpt-oss-20b。使用 chat 模板会自动套用 harmony;如果手动 model.generate,需要显式应用(或使用 openai-harmony)。

from transformers import pipeline
import torchmodel_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])

了解如何在 Transformers 中使用 gpt-oss。

vLLM

建议用 uv 管理依赖。vLLM 可启动 OpenAI 兼容服务,命令如下:

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-matchvllm serve openai/gpt-oss-20b

了解如何在 vLLM 中使用 gpt-oss。

PyTorch / Triton / Metal

主要作为参考实现与教学用途,不建议直接用于生产(详见下文“参考实现”)。

Ollama

在消费级设备上可使用 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

在 Ollama 上本地运行 gpt-oss 的详情。

LM Studio

在 LM Studio 中下载:

## gpt-oss-20b
lms get openai/gpt-oss-20b
## gpt-oss-120b
lms get openai/gpt-oss-120b

更多生态与推理伙伴见仓库中的 awesome-gpt-oss.md

四、环境准备(Setup)

先决条件(Requirements)

  • Python 3.12
  • macOS:安装 Xcode CLI → xcode-select --install
  • Linux:参考实现依赖 CUDA
  • Windows:未测试;本地运行建议用 Ollama 等方案

安装(Installation)

快速试用可从 PyPI 安装:

## 仅使用工具
pip install gpt-oss
## 试用 torch 参考实现
pip install gpt-oss[torch]
## 试用 triton 参考实现
pip install gpt-oss[triton]

需要修改源码或使用 metal 实现,可本地搭建:

git clone https://github.com/openai/gpt-oss.git
GPTOSS_BUILD_METAL=1 pip install -e ".[metal]"

五、下载模型(Download the model)

通过 Hugging Face CLI 拉取权重:

## gpt-oss-120b
huggingface-cli download openai/gpt-oss-120b --include "original/*" --local-dir gpt-oss-120b/## gpt-oss-20b
huggingface-cli download openai/gpt-oss-20b --include "original/*" --local-dir gpt-oss-20b/

六、参考 PyTorch 实现(Reference PyTorch implementation)

gpt_oss/torch/model.py 提供结构真实但效率较低的 PyTorch 参考实现,用基础算子还原模型。MoE 支持张量并行(如 4×H100 或 2×H200),权重与激活以 BF16 运行。

安装依赖:

pip install -e .[torch]

运行:

## 在 4×H100 上:
torchrun --nproc-per-node=4 -m gpt_oss.generate gpt-oss-120b/original/

七、参考 Triton 实现(单卡)(Reference Triton implementation, single GPU)

基于 Triton MoE 内核 的优化实现,支持 MXFP4,并对注意力做了内存优化。使用 nightly 版 triton/torch,可在单张 80GB H100上运行 gpt-oss-120b

安装:

## 构建 triton
git clone https://github.com/triton-lang/triton
cd triton/
pip install -r python/requirements.txt
pip install -e . --verbose --no-build-isolation## 安装 gpt-oss 的 triton 后端
pip install -e .[triton]

运行:

## 在 1×H100 上
export PYTORCH_CUDA_ALLOC_CONF=expandable_segments:True
python -m gpt_oss.generate --backend triton gpt-oss-120b/original/

遇到 torch.OutOfMemoryError 时,启用可扩展分配器,避免加载 checkpoint 时崩溃。

八、参考 Metal 实现(Reference Metal implementation)

提供 Apple Silicon 的 Metal 实现,数值与 PyTorch 一致(不适合生产)。在 Apple Silicon 上安装 .[metal] 会自动编译:

pip install -e .[metal]

推理前需将 SafeTensors 转为本地格式:

python gpt_oss/metal/scripts/create-local-model.py -s <model_dir> -d <output_file>

或直接下载 metal/* 权重:

huggingface-cli download openai/gpt-oss-120b --include "metal/*" --local-dir gpt-oss-120b/metal/
huggingface-cli download openai/gpt-oss-20b --include "metal/*" --local-dir gpt-oss-20b/metal/

快速测试:

python gpt_oss/metal/examples/generate.py gpt-oss-20b/metal/model.bin -p "why did the chicken cross the road?"

九、Harmony 格式与工具(Harmony format & tools)

提供 harmony 对话格式库,用于与模型交互(见官方指南)。同时包含两类系统工具:浏览器Python 容器(实现见 gpt_oss/tools)。

十、客户端(Clients)

终端聊天(Terminal Chat)

终端应用演示如何在 PyTorch、Triton、vLLM 中使用 harmony,并可选择启用 Python/浏览器工具:

usage: python -m gpt_oss.chat [-h] [-r REASONING_EFFORT] [-a] [-b] [--show-browser-results] [-p] [--developer-message DEVELOPER_MESSAGE] [-c CONTEXT] [--raw] [--backend {triton,torch,vllm}] FILEChat examplepositional arguments:FILE                  Path to the SafeTensors checkpointoptions:-h, --help            show this help message and exit-r REASONING_EFFORT, --reasoning-effort REASONING_EFFORTReasoning effort (default: low)-a, --apply-patch     Make apply_patch tool available to the model (default: False)-b, --browser         Use browser tool (default: False)--show-browser-resultsShow browser results (default: False)-p, --python          Use python tool (default: False)--developer-message DEVELOPER_MESSAGEDeveloper message (default: )-c CONTEXT, --context CONTEXTMax context length (default: 8192)--raw                 Raw mode (does not render Harmony encoding) (default: False)--backend {triton,torch,vllm}Inference backend (default: triton)

注:PyTorch/Triton 需要 gpt-oss-120b/original/gpt-oss-20b/original/ 下的原始 checkpoint;vLLM 使用 gpt-oss-120b/gpt-oss-20b/ 根目录下的 Hugging Face 转换版 checkpoint。

Responses API

提供简化的 Responses API 服务器示例(不覆盖全部事件,但可满足大多数基础用例),并可作为自建服务思路。可选择以下后端:

  • triton:使用 triton 实现
  • metal:Apple Silicon
  • ollama:调用 Ollama /api/generate
  • vllm:本地 vLLM
  • transformers:本地 Transformers 推理
usage: python -m gpt_oss.responses_api.serve [-h] [--checkpoint FILE] [--port PORT] [--inference-backend BACKEND]Responses API serveroptions:-h, --help                    show this help message and exit--checkpoint FILE             Path to the SafeTensors checkpoint--port PORT                   Port to run the server on--inference-backend BACKEND   Inference backend to use

Codex

可将 codex 作为 gpt-oss 客户端。以 20b 为例,在 ~/.codex/config.toml 中配置:

disable_response_storage = true
show_reasoning_content = true[model_providers.local]
name = "local"
base_url = "http://localhost:11434/v1"[profiles.oss]
model = "gpt-oss:20b"
model_provider = "local"

可与任何监听 11434 端口、兼容 Chat Completions API 的服务配合(如 Ollama):

ollama run gpt-oss:20b
codex -p oss

十一、工具(Tools)

Browser

警告:示例仅用于学习,不要直接用于生产。生产环境需替换为等价的自研浏览后端(如与 ExaBackend 同等能力)。

两种 gpt-oss 模型均受训支持 browser 工具,提供:

  • search:关键词检索
  • open:打开页面
  • find:页内查找

用法(在 harmony 的 system 消息里声明工具定义;完整接口可用 with_browser(),否则用 with_tools() 自定义):

import datetime
from gpt_oss.tools.simple_browser import SimpleBrowserTool
from gpt_oss.tools.simple_browser.backend import ExaBackend
from openai_harmony import SystemContent, Message, Conversation, Role, load_harmony_encoding, HarmonyEncodingNameencoding = load_harmony_encoding(HarmonyEncodingName.HARMONY_GPT_OSS)## Exa backend 需要你设置 EXA_API_KEY 环境变量
backend = ExaBackend(source="web",
)
browser_tool = SimpleBrowserTool(backend=backend)## 基本 system 提示词
system_message_content = SystemContent.new().with_conversation_start_date(datetime.datetime.now().strftime("%Y-%m-%d")
)## 若需要使用浏览器工具
if use_browser_tool:# 启用工具system_message_content = system_message_content.with_tools(browser_tool.tool_config)# 如果你的工具不是无状态的,也可以:system_message_content = system_message_content.with_browser()## 构造 system 消息
system_message = Message.from_role_and_content(Role.SYSTEM, system_message_content)## 构造整体对话
messages = [system_message, Message.from_role_and_content(Role.USER, "What's the weather in SF?")]
conversation = Conversation.from_messages(messages)## 渲染为补全所需 token
token_ids = encoding.render_conversation_for_completion(conversation, Role.ASSISTANT)## ……执行推理……## 解析输出
messages = encoding.parse_messages_from_completion_tokens(output_tokens, Role.ASSISTANT)
last_message = messages[-1]
if last_message.recipient.startswith("browser"):# 执行浏览器调用response_messages = await browser_tool.process(last_message)# 追加到对话后再次推理messages.extend(response_messages)

实现细节:采用“窗口式滚动文本”控制上下文(先取前 50 行,再滚动 20 行等);模型被训练为在回答中引用工具返回的片段。内置请求缓存,避免重复抓取;建议每次请求新建浏览器实例

Python

模型受训支持在推理过程中使用 Python 工具。训练时为有状态,参考实现改为无状态(会在 system 中覆盖 openai-harmony 默认定义)。

警告:参考实现运行在权限较宽的容器中,存在提示注入等风险;生产需加强隔离与最小权限。

用法(完整接口可用 with_python(),否则 with_tools() 自定义):

import datetime
from gpt_oss.tools.python_docker.docker_tool import PythonTool
from openai_harmony import SystemContent, Message, Conversation, Role, load_harmony_encoding, HarmonyEncodingNameencoding = load_harmony_encoding(HarmonyEncodingName.HARMONY_GPT_OSS)python_tool = PythonTool()## 基本 system 提示词
system_message_content = SystemContent.new().with_conversation_start_date(datetime.datetime.now().strftime("%Y-%m-%d")
)## 若启用 Python 工具
if use_python_tool:# 以无状态定义启用工具system_message_content = system_message_content.with_tools(python_tool.tool_config)# 若你的工具不是无状态,也可以:system_message_content = system_message_content.with_python()## 构造 system 消息
system_message = Message.from_role_and_content(Role.SYSTEM, system_message_content)## 构造整体对话
messages = [system_message, Message.from_role_and_content(Role.USER, "What's the square root of 9001?")]
conversation = Conversation.from_messages(messages)## 渲染为补全所需 token
token_ids = encoding.render_conversation_for_completion(conversation, Role.ASSISTANT)## ……执行推理……## 解析输出
messages = encoding.parse_messages_from_completion_tokens(output_tokens, Role.ASSISTANT)
last_message = messages[-1]
if last_message.recipient == "python":# 执行 Python 调用response_messages = await python_tool.process(last_message)# 追加到对话后再次推理messages.extend(response_messages)

Apply Patch

apply_patch 用于在本地创建、更新或删除文件

十二、其他细节(Other details)

精度格式(Precision format)

模型以原生量化形式发布:MoE 线性投影权重使用 MXFP4。MoE 张量拆分为两部分:

  • tensor.blocks:FP4 数值(每两个值打包为一个 uint8
  • tensor.scales:分块尺度(沿最后一维分块缩放)

其余张量采用 BF16,建议激活也使用 BF16。

采样参数建议(Recommended Sampling Parameters)

推荐基线:temperature=1.0top_p=1.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/92605.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/92605.shtml
英文地址,请注明出处:http://en.pswp.cn/web/92605.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实现EtherNet/IP网络与Modbus TCP网络之间数据互通

硬件连接与配置使用工业以太网网关&#xff08;如ENE-350&#xff09;作为桥接设备&#xff0c;通过以太网交换机实现硬件互联。 网关需根据应用场景配置为EtherNet/IP从站或Modbus TCP主/从站模式。案例1&#xff1a;EtherNet IP主站PLC和Modbus TCP主站PLC的互联网关配置&…

zookeeper因jute.maxbuffer启动异常问题排查处理

#作者&#xff1a;程宏斌 文章目录一、前言二、问题描述三、定位过程四、问题根因五、解决方案根本解决方案应急处理方案调大参数可能出现的问题六、总结为什么超出会报错官方对于jute.maxbuffer的解释注意事项官方建议一、前言 在分布式系统中&#xff0c;ZooKeeper作为关键的…

Java基础十三: List

目录 1.Java LinkedList 的高级应用与示例 1.1 LinkedList的基本使用 基本操作示例 1.2 LinkedList独有的方法 特定方法示例 1.3 队列模式&#xff08;先进先出&#xff09; 队列模式示例 1.4 栈模式&#xff08;先进后出&#xff09; 栈模式示例 总结 2.Java Vecto…

[机器学习]03-基于核密度估计(KDE)的鸢尾花数据集分类

关键点&#xff1a;使用核密度估计&#xff08;KDE&#xff09; 估计类别条件概率密度&#xff08;高斯核&#xff0c;带宽0.2&#xff09;采用最大后验概率&#xff08;MAP&#xff09; 决策准则进行分类程序代码&#xff1a;import random import matplotlib from sklearn.ne…

jmeter怎么实现多个请求真正的同时发送

1.首先在插件管理器Plugins Manager中搜索插件Parallel Controller&Sampler&#xff0c;勾选上对应的插件后&#xff0c;在右下角点击Apply Changes and Restart JMeter&#xff0c;安装插件2.插件安装完毕后&#xff0c;然后在线程组上面右击&#xff0c;点击添加--逻辑控…

复杂环境下车牌识别准确率↑29%:陌讯动态特征融合算法实战解析

原创声明本文为原创技术解析&#xff0c;核心技术参数与架构设计引用自《陌讯技术白皮书》&#xff0c;转载需注明来源。一、行业痛点&#xff1a;车牌识别的现实挑战在智慧交通、停车场管理等场景中&#xff0c;车牌识别作为关键技术环节&#xff0c;长期面临多重环境干扰。据…

Express中间件和路由及响应方法

1.中间件分类 应用程序级别中间件 通过 app.use() 或 app.METHOD()&#xff08;如 app.get&#xff09;绑定的中间件&#xff0c;作用于整个应用程序。例如 记录请求日志、解析请求体等全局功能。例如&#xff1a; app.use((req, res, next) > {console.log(Request URL:…

Dokcer创建中间件环境

简而言之&#xff0c;用docker来搞中间件环境比价好使&#xff0c;不用关心各种环境了 rabbitmqsudo docker run -d \--name rabbitmq \-p 5672:5672 \-p 15672:15672 \rabbitmq:3.8-managementredis 5.0.3 docker start my-redisdocker run --name my-redis -d -p 6379:6379 \…

Linux高级编程-文件操作

1.Linux下的文件类型7种文件类型&#xff1a;b 块设备文件 -------> 存储类设备&#xff08;硬盘&#xff09; c 字符设备文件 ------->如输入输出设备&#xff08;鼠标键盘显示器...&#xff09; d 目录文件 ------->文件夹 - 普通文件 -------&g…

web:vue中import *** from 和import {***} from的区别

在Vue.js中,import语句用于导入模块、组件或变量等。使用带花括号{}和不带花括号的区别主要在于导入的内容是具名导出(named exports)还是默认导出(default export)。 默认导入 (Default Import) - 不带花括号 import Vue from vue; import MyComponent from ./MyCompone…

Mysql如何优化my.conf配置文件?

优化 MySQL 的 my.cnf 配置文件&#xff0c;可以显著提升数据库性能&#xff0c;特别是在高并发或大数据量场景下。以下是优化 my.cnf 的方法和建议&#xff0c;涵盖 常见配置项、参数说明 和 优化技巧。1. 优化前的准备工作在修改 my.cnf 之前&#xff0c;需了解以下内容&…

Cherryusb UAC例程对接STM32内置ADC和DAC播放音乐和录音(上)=>TIM+DAC+ADC+DMA正弦波回环测试

0. 概述 文本目标基于Cherryusb官方例程audio_v1_mic_speaker_multichan_template.c&#xff0c;底层对接STM32的内置ADC和DAC&#xff0c;实现录音和播放。通过电脑播放歌曲&#xff0c;板子发出声音。通过电脑录音机开启录音&#xff0c;板子作为麦克风采集声音&#xff0c;…

数模个人笔记

写在前面&#xff1a;不建议观看&#xff0c;会烂尾的1.马氏链&#xff1a;状态空间指的是随机变量的取值范围&#xff0c;xi称为一个状态&#xff0c;应用背景在现在的条件下下一状态发生的概率&#xff0c;比如退火&#xff0c;他的条件概率可化简为&#xff1a;且nm时刻的概…

Spring Boot自定义Starter:从原理到实战全解析

1. 背景与需求1.1 什么是Starter&#xff1f; Spring Boot的起步依赖&#xff08;Starter&#xff09;是一种特殊的依赖描述符&#xff0c;用于简化Spring应用的依赖管理和自动配置。官方文档将Starter定义为“一组方便的依赖描述符”&#xff0c;开发者只需引入对应的Starter&…

安宝特方案丨工业AR+AI质检方案:致力于提升检测精度与流程效率

据IDC预测&#xff0c;2025年中国工业AI质检市场规模将达62亿元&#xff0c;年复合增长率28.5%&#xff0c;新能源、消费电子、高端装备三大领域贡献超70%市场份额。这一数据印证了AI质检已从可选技术升级为制造业降本增效的生存刚需。当前制造业质检环节正面临&#xff1a;精度…

AudioLLM

参考链接&#xff1a;https://mp.weixin.qq.com/s/cscrUn7n_o6PdeQRzWpx8g 视频教程&#xff1a;https://www.bilibili.com/video/BV1LGbozkEDY 模型代码&#xff1a;https://github.com/boson-ai/higgs-audio 如果是两个模型加在一起&#xff1a;一个语言模型&#xff0c;一个…

基于 CEP 引擎的算法拆单与调度实践—基础篇

在金融市场中&#xff0c;大额订单的一次性交易可能会对市场价格产生较大冲击&#xff0c;导致交易成本增加。例如&#xff0c;大额买入订单可能会迅速推高股价&#xff0c;使后续买入成本上升&#xff1b;大额卖出订单则可能打压股价&#xff0c;造成资产贱卖。拆单算法通过将…

开源 C# TCP 通信框架 SocketDJ 发布:轻量、免费、可扩展

前言市面上的网络通信框架琳琅满目&#xff0c;功能强大者有之&#xff0c;但不少都存在功能闭源、商业收费、学习成本高等问题。作为一名热爱底层技术的开发者&#xff0c;我始终相信&#xff1a;基础通信能力应当简单、透明且免费。最近正好有项目需求&#xff0c;索性动手从…

移动机器人路径规划中ROS2中间件性能的研究综述

导读&#xff1a; 随着移动机器人在工业自动化、特种作业及智能服务领域的广泛应用&#xff0c;其路径规划能力越来越依赖机器人操作系统ROS2的通信性能。ROS2通过去中心化架构与数据分发服务中间件显著提升了系统可靠性&#xff0c;但动态复杂环境中路径规划对通信延迟、带宽…

【昇腾】Atlas 500 A2 智能小站制卡从M.2 SATA盘启动Ubuntu22.04系统,重新上电卡死没进系统问题处理_20250808

一、问题背景 Atlas 500 A2智能小站是华为基于20T 12G版本的Atlas 200I A2加速模块开发的面向广泛边缘应用场景的轻量边缘设备&#xff0c;具有超强计算性能、配置灵活、体积小、支持温度范围宽、环境适应性强、易于维护 管理等特点的产品。Atlas 500 A2智能小站主要应用在智能…