onnxruntime-genai
onnxruntime-genai 是微软推出的开源扩展库,旨在让开发者能够轻松、高效地在本地设备上运行生成式 AI 模型(如大语言模型)。它基于成熟的 ONNX Runtime 构建,将复杂的模型推理流程封装为简洁的 API,涵盖了从输入预处理、核心推理、日志处理到搜索采样、键值缓存管理及语法约束等全链路环节。
这一工具主要解决了大模型在边缘设备部署难、推理优化复杂的问题。通过提供统一的接口,它屏蔽了底层硬件差异,让同一套代码能在 Windows、Linux、macOS、Android 等多种操作系统上流畅运行,并自动适配 CPU、CUDA、DirectML、WebGPU 等多种硬件加速后端。目前,它已广泛应用于 Foundry Local、Windows ML 及 VS Code AI 工具箱等实际产品中。
onnxruntime-genai 特别适合 AI 应用开发者、算法工程师及研究人员使用。无论是希望在个人电脑或移动设备上离线部署智能助手,还是需要集成多 LoRA 适配、连续解码及受限解码等高级功能,都能从中获益。其独特的亮点在于对 Llama、Phi、Qwen、Gemma 等主流模型架构的广泛支持,以及提供 Python、C#、C/C++ 和 Java 等多语言绑定,极大地降低了高性能生成式 AI 应用的开发门槛。
使用场景
某初创团队希望将智能客服助手部署在用户的本地笔记本电脑上,以确保数据隐私并降低云端推理成本。
没有 onnxruntime-genai 时
- 开发复杂度极高:工程师需要手动拼凑预处理、KV 缓存管理、Logits 处理和搜索采样等底层逻辑,代码冗长且极易出错。
- 跨平台适配困难:为了让模型同时支持 Windows、Linux 和 macOS,甚至不同的 CPU 架构,需要为每种环境单独编写和优化推理后端。
- 资源占用不可控:缺乏统一的显存与内存优化机制,导致大模型在普通消费级硬件上运行缓慢或直接因内存溢出而崩溃。
- 功能迭代缓慢:若要添加约束解码(如强制输出特定 JSON 格式)或工具调用功能,需从头研发算法,严重拖慢产品上线节奏。
使用 onnxruntime-genai 后
- 一站式生成循环:直接调用其封装好的 API,自动处理从 Token 编码、推理执行到流式解码的全流程,核心代码缩减至几十行。
- 无缝多端部署:凭借对 x86、ARM64 及 CUDA、DirectML 等多种硬件加速的后端支持,同一套代码即可在用户不同的设备上高效运行。
- 极致性能优化:内置高效的 KV 缓存管理和量化模型支持,使 Phi-3 等模型在本地笔记本上也能实现低延迟的流畅对话。
- 高级特性即插即用:原生支持约束解码和语法指定,轻松实现结构化数据输出和工具调用,无需重复造轮子。
onnxruntime-genai 通过屏蔽底层推理细节并提供高性能的生成式 AI 原语,让开发者能专注于业务逻辑,真正实现大模型在终端设备上的普惠落地。
运行环境要求
- Linux
- Windows
- macOS
- Android
- 非必需(支持 CPU)
- 若需加速,支持 NVIDIA GPU (CUDA, TRT-RTX), AMD GPU (开发中), Intel GPU (OpenVINO), Qualcomm NPU (QNN) 或 WebGPU
- 具体显存大小和 CUDA 版本取决于所选的后端及运行的模型规模,文中未明确指定统一最低要求
未说明(取决于运行的模型大小,示例中使用的是量化后的 Phi-3 模型以适应移动端/低资源环境)

快速开始
ONNX Runtime GenAI
状态
描述
使用 ONNX Runtime 运行生成式 AI 模型。该 API 提供了一种简单、灵活且高效的在设备上运行 LLM 的方式。它为 ONNX 模型实现了生成式 AI 循环,包括预处理和后处理、使用 ONNX Runtime 进行推理、logits 处理、搜索与采样、KV 缓存管理,以及用于工具调用的语法规范。
ONNX Runtime GenAI 为 Foundry Local、Windows ML 和 Visual Studio Code AI 工具包提供支持。
更多详细信息请参阅 ONNX Runtime 官网 的文档。
| 支持矩阵 | 当前支持 | 开发中 | 路线图 |
|---|---|---|---|
| 模型架构 | AMD OLMo ChatGLM DeepSeek ERNIE 4.5 Fara Gemma gpt-oss Granite InternLM2 Llama Mistral Nemotron Phi (语言 + 视觉) Qwen (语言 + 视觉) SmolLM3 Whisper |
Stable diffusion | 多模态模型 |
| API | Python C# C/C++ Java ^ |
Objective-C | |
| 操作系统 | Linux Windows Mac Android |
iOS | |
| 架构 | x86 x64 arm64 |
||
| 硬件加速 | CPU CUDA DirectML NvTensorRtRtx (TRT-RTX) OpenVINO QNN WebGPU |
AMD GPU | |
| 特性 | Multi-LoRA 连续解码 约束解码 |
推测解码 |
^ 需要从源代码构建
安装
Phi-3 的 Python 示例代码
下载模型
huggingface-cli download microsoft/Phi-3-mini-4k-instruct-onnx --include cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4/* --local-dir .安装 API
pip install numpy pip install --pre onnxruntime-genai运行模型
import onnxruntime_genai as og model = og.Model('cpu_and_mobile/cpu-int4-rtn-block-32-acc-level-4') tokenizer = og.Tokenizer(model) stream = tokenizer.create_stream() # 默认设置一个合理的最大长度, # 否则它将被设置为整个上下文长度 search_options = {} search_options['max_length'] = 2048 search_options['batch_size'] = 1 chat_template = '<|user|>\n{input} <|end|>\n<|assistant|>' text = input("Input: ") if not text: print("Error, input cannot be empty") exit() prompt = f'{chat_template.format(input=text)}' input_tokens = tokenizer.encode(prompt) params = og.GeneratorParams(model) params.set_search_options(**search_options) generator = og.Generator(model, params) print("Output: ", end='', flush=True) try: generator.append_tokens(input_tokens) while not generator.is_done(): generator.generate_next_token() new_token = generator.get_next_tokens()[0] print(stream.decode(new_token), end='', flush=True) except KeyboardInterrupt: print(" --control+c pressed, aborting generation--") print() del generator
选择正确的示例版本
由于该项目仍在不断发展并持续添加新功能,main 分支中的示例可能并不总是与最新的稳定版完全一致。本节介绍了如何确保示例与相应版本之间的兼容性。
稳定版
按照 安装说明 安装软件包。例如,安装 Python 包:
pip install onnxruntime-genai
获取软件包版本:
Linux/Mac:
pip list | grep onnxruntime-genai
Windows:
pip list | findstr "onnxruntime-genai"
然后检出与该版本对应的示例分支:
# 克隆仓库
git clone https://github.com/microsoft/onnxruntime-genai.git && cd onnxruntime-genai
# 检出您正在使用的版本分支
git checkout v0.11.5
cd examples
夜间版(main 分支)
检出仓库的 main 分支:
git clone https://github.com/microsoft/onnxruntime-genai.git && cd onnxruntime-genai
按照这些 说明 从源代码构建。例如,构建 Python wheel:
python build.py
导航到 main 分支中的示例文件夹:
cd examples
安装夜间版 Python 构建:
# 将 onnxruntime-genai 替换为您想要安装的 Python 包
pip install --index-url https://aiinfra.pkgs.visualstudio.com/PublicPackages/_packaging/ORT-Nightly/pypi/simple/ onnxruntime-genai
路线图
请查看 讨论区,以请求新功能或为现有请求投票。
贡献
本项目欢迎贡献和建议。大多数贡献都需要您同意一份贡献者许可协议 (CLA),声明您有权并将您的贡献权利授予我们。有关详情,请访问 https://cla.opensource.microsoft.com。
当您提交拉取请求时,CLA 机器人会自动判断您是否需要提供 CLA,并相应地标记 PR(例如状态检查、评论)。只需按照机器人提供的指示操作即可。对于使用我们 CLA 的所有仓库,您只需执行一次此操作。
本项目已采用 微软开源行为准则。更多信息请参阅 行为准则常见问题解答,或如有任何其他疑问或意见,请联系 opencode@microsoft.com。
代码检查
本项目启用了 lintrunner 进行代码检查。您可以安装依赖项并初始化:
pip install -r requirements-lintrunner.txt
lintrunner init
这将在您的系统上安装 lintrunner,并下载所有必要的依赖项,以便在本地运行 linter。
格式化本地更改:
lintrunner -a
格式化所有文件:
lintrunner -a --all-files
商标
本项目可能包含项目、产品或服务的商标或标识。对微软商标或标识的授权使用须遵守并依据微软商标与品牌指南。在本项目的修改版本中使用微软商标或标识时,不得造成混淆或暗示微软的赞助关系。任何对第三方商标或标识的使用均应遵循该第三方的相关政策。
版本历史
v0.12.22026/03/27v0.12.12026/03/02v0.12.02026/02/13v0.11.42025/12/12v0.11.32025/12/08v0.11.22025/11/18v0.11.12025/11/17v0.11.02025/11/14v0.10.02025/10/10v0.9.22025/09/16v0.9.12025/09/09v0.9.02025/08/06v0.8.32025/07/03v0.8.22025/06/05v0.8.12025/05/30v0.8.02025/05/30v0.7.12025/04/22v0.7.02025/03/28v0.6.02025/02/14v0.5.22024/11/26常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备