【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载本文基于 Model Optimizer 官方部署文档 docs/source/deployment/2_onnxruntime.rst 编写。当你在 Windows 上用 ModelOpt-Windows 对 ONNX FP16 模型完成量化后本文将带你完成量化 ONNX 模型在ONNX Runtime GenAI与ONNX Runtime两大框架上的部署包括 CUDA / DirectML / TensorRT-RTX / CPU 四种 Execution ProviderEP的选型、TensorRT-RTX legacy 与 ABI 两种后端的校准与部署差异、EP 兼容性约束以及 ORT 手动管理 KV cache 的生成循环写法并深入底层源码modelopt/onnx/quantization/ort_utils.py与配套示例examples/windows/onnx_ptq/genai_llm/README.md验证实际调用关系。部署前置条件量化产物与 ONNX Runtime 的对接量化产物的来源与 opset 约束本文讨论的部署对象是ModelOpt-Windows 量化后的 ONNX 模型。完整的链路是先准备一个 ONNX FP16 基座模型可通过torch.onnx.export、HuggingFace-Optimum、ONNX Runtime GenAI 的 model-builder 或 Olive 等工具导出再调用 ModelOpt-Windows 的 ONNX PTQ API如modelopt.onnx.quantization.int4.quantize完成量化最后把量化模型交给 ONNX Runtime 系框架推理。在进入部署之前有一条硬性约束必须检查ONNX 模型的 opset 版本。ModelOpt-Windows 使用 ONNX 的Q/DQQuantizeLinear / DequantizeLinear节点表达量化与反量化而不同数据类型进入Q/DQ节点的 opset 门槛不同FP8需要opset 19FP8 数据类型在Q/DQ节点中的支持始于 opset-19INT4需要opset 21INT4 支持始于 opset-21。这是量化模型能在 onnxruntime例如 ORT-DirectML 后端上正常部署的必要条件。详见 docs/source/guides/windows_guides/_ONNX_PTQ_guide.rst 中 Upgrade opset of the model 一节。如果导出工具支持的最大 opset 不够则需要手工修补模型元数据中的 opset 字段_ONNX_PTQ_guide.rst提供了检查与升级 opset 的示例代码onnx.load→ 遍历model.opset_import→ 用onnx.helper.make_model重建 opset_importsGenAI 产出的模型通常可直接应用该补丁。与部署相关的支持矩阵Windows 侧 ONNX 量化格式与部署后端的关系记录在 docs/source/guides/0_support_matrix.rst 的 Windows 页签中可作为部署后端选型的依据量化格式说明可用部署后端W4A16仅 INT4 权重Block-wise INT4 权重 FP16 激活AWQ 算法Ampere 及以后 GPUORT-DML、ORT-CUDA、ORT-TRT-RTX、TensorRT*、TensorRT-LLM*W4A8INT4 权重 FP8 激活Block-wise INT4 权重 Per-Tensor FP8 激活AWQ 算法Ada 及以后 GPUTensorRT-LLM*FP8Per-Tensor 激活 Per-Channel 权重ONNXMax 校准Ada 及以后 GPUTensorRT*、TensorRT-LLM*、ORT-CUDAINT8Per-Channel INT8 权重 Per-Tensor INT8 激活Max 校准ONNXAda 及以后 GPUTensorRT*、TensorRT-LLM*、ORT-CUDA其中带*的条目为实验性支持ORT-CUDA、ORT-DML、ORT-TRT-RTX分别对应 CUDA、DirectML、TensorRT-RTX 三种 ONNX Runtime Execution Provider。同时注意 Windows ARM64 支持目前处于实验阶段取决于各 Python 包与执行提供器是否有原生 ARM64 构建。认识 ONNX Runtime 的四种 Execution ProviderONNX Runtime 通过Execution ProviderEP把模型调度到不同的硬件后端上高效执行。量化模型部署的第一步就是根据硬件与性能需求选定 EP。文档列出了四种主流 EPEP适用场景说明CUDA EP面向 NVIDIA GPU借助 CUDA 与 cuDNN 库获得高速推理DirectML EP面向广泛的 GPU 生态可部署到多种 GPU 硬件跨 IHV 兼容性好TensorRT-RTX EP面向 NVIDIA RTX GPU基于 TensorRT 做进一步的推理优化CPU EP兜底方案专用硬件不可用时回退到 CPU 推理选择哪个 EP取决于你的模型、硬件以及部署约束三者之间的匹配。对应到 ModelOpt-Windows 的安装环境各 EP 由不同的 onnxruntime 包提供详见 docs/source/getting_started/windows/_installation_standalone.rstonnxruntime-directml→ DirectML EPonnxruntime-trt-rtx→ TensorRT-RTX EPonnxruntime-ep-nv-tensorrt-rtx-cu13→ TensorRT-RTX EP 的 ABI 插件独立包不与onnxruntime-gpu互斥可共存onnxruntime-gpu→ CUDA EPModelOpt-Windows x64 默认安装此包自 v1.19.0 起默认面向 CUDA 12.xonnxruntime→ CPU EP。注意同一时刻只应保留一个主 onnxruntime 运行时包directml / trt-rtx / gpu / cpu 四选一否则会因 EP 冲突导致 import 或运行异常而onnxruntime-ep-nv-tensorrt-rtx-cu13是插件安装它是为了补充 ABI EP不会替代onnxruntime-gpu。量化与部署中的 EP 角色差异EP 在量化链路里其实出现两次含义不同需要区分校准阶段的校准 EPcalibration EPPTQ 需要把基座模型跑一遍校准数据来统计激活分布此时使用的 EP 由calibration_eps参数指定如[dml, cpu]或[cuda, cpu]。在命令行入口 modelopt/onnx/quantization/main.py 中--calibration_eps的默认值是[cpu, cuda:0, trt]支持NvTensorRtRtx、trt、cuda:x、dml:x、cpu的任意子集如果模型里检测到自定义算子trt会被自动追加到 EP 列表首位以规避回退问题。部署阶段的推理 EP即本文讨论的 CUDA / DirectML / TensorRT-RTX / CPU EP决定量化模型最终跑在哪个后台上。TensorRT-RTX EP校准与部署的完整方案legacy 与 ABI 两种后端的关系ModelOpt 当前在校准阶段默认使用 legacy TensorRT-RTX EP。legacy 包onnxruntime-trt-rtx自带内置了该 EP 的 ONNX Runtime 构建而ABI EP使用标准 ONNX Runtime 包 单独注册的插件将成为未来版本的默认方案。若现在就想在校准阶段切换到 ABI EP需要同时传入两个参数--calibration_eps NvTensorRtRtx --trt_rtx_backend abiCUDA EP 校准则始终独立可用不依赖上述选择。在底层实现 modelopt/onnx/quantization/ort_utils.py 中_prepare_ep_list对ep NvTensorRtRtx的两种后端做了分支处理legacy 路径调用_check_for_nv_tensorrt_rtx_libs()在 Windows 上按tensorrt_rtx*.dll模式扫描PATH环境变量中的 TensorRT-RTX 动态库找不到会抛出FileNotFoundError找到后把NvTensorRTRTXExecutionProvider追加进 provider 列表。ABI 路径import_module(onnxruntime_ep_nv_tensorrt_rtx)导入插件若未安装会抛出ImportError提示安装onnxruntime-ep-nv-tensorrt-rtx-cu13随后调用ort.register_execution_provider_library(ep_name, trt_rtx_ep.get_library_path())注册插件并枚举get_ep_devices()中的设备。ort_utils.py还明确抛出了NotImplementedError(NvTensorRtRtx EP on Linux is not yet supported.)即NvTensorRtRtx EP 目前仅支持 Windows源码以platform.system() ! Windows作为守卫。这两个分支的行为在 tests/unit/onnx/quantization/test_ort_utils.py 中有对应的单元测试覆盖ABI 路径会为 provider 附带nv_profile_min_shapes等输入形状 profile 选项、已注册的插件不会被重复注册而传trt_rtx_backendinvalid会分别触发NotImplementedError与ValueError校验。部署路径一Legacy TensorRT-RTX EP先安装 legacy 包并确保所需 TensorRT-RTX 库在PATH中可被找到python -m pip install onnxruntime-trt-rtx随后直接用内置的 provider 名创建推理会话import onnxruntime as ort session ort.InferenceSession( model.onnx, providers[NvTensorRTRTXExecutionProvider], )部署路径二TensorRT-RTX ABI EPABI 路径需要两个组件标准 ONNX Runtime要求 1.24 及以上 面向 CUDA 13 的独立插件包python -m pip install onnxruntime1.24 onnxruntime-ep-nv-tensorrt-rtx-cu13创建会话前要依次完成注册插件 → 从ort.get_ep_devices()中筛出该 EP 的设备 → 把设备挂到SessionOptions上import onnxruntime as ort import onnxruntime_ep_nv_tensorrt_rtx as trt_rtx_ep ep_name trt_rtx_ep.get_ep_name() ort.register_execution_provider_library(ep_name, trt_rtx_ep.get_library_path()) trt_rtx_devices [device for device in ort.get_ep_devices() if device.ep_name ep_name] if not trt_rtx_devices: raise RuntimeError(No TensorRT-RTX ABI EP device was found) session_options ort.SessionOptions() session_options.add_provider_for_devices(trt_rtx_devices, {}) session ort.InferenceSession(model.onnx, sess_optionssession_options) # 释放所有使用该插件的会话之后才能注销插件 del session ort.unregister_execution_provider_library(ep_name)两点实践提醒生命周期管理del session之后再调用unregister_execution_provider_library顺序不可颠倒否则插件正在被会话使用时注销会失败。设备选择get_ep_devices()返回的列表中可能混入 CPU 等其他 EP 的设备必须用device.ep_name ep_name精确过滤出 TensorRT-RTX 设备。关于 legacy 与 ABI 路径共享的 provider 选项可参考 ONNX Runtime TensorRT-RTX EP 官方文档ABI 兼容性、打包细节与更完整的示例可参考 NVIDIA TensorRT-RTX EP ABI 文档与 TensorRT-RTX ABI 插件包页面。关键限制DirectML 不支持 8-bit 精度官方文档明确标注了一条部署红线当前 DirectML 后端不支持 8-bit 精度。因此8-bit 量化模型如 INT8、FP8应部署到其他后端例如ORT-CUDAINT4 量化模型则可以走 DirectML 路径DML path 支持 INT4。在 docs/source/guides/0_support_matrix.rst 的 Windows 支持矩阵中也能看到这种分化W4A16 的部署后端列表包含 ORT-DML而 FP8 与 INT8 的 ONNX 部署后端列表只有 ORT-CUDA以及 TensorRT*、TensorRT-LLM*。部署方式一ONNX Runtime GenAIONNX Runtime GenAI是面向生成式 AI 模型的一站式部署方案在性能与功能上做了针对性优化。对于 ModelOpt-Windows 量化产物来说这是最高效的部署入口特别是针对 LLM。核心能力增强优化Enhanced Optimizations针对生成式 AI 提供专项优化包括高效的KV cache 管理与logits 处理灵活的采样方式Flexible Sampling Methods内置 greedy search、beam search、top-p / top-k 采样等多种采样策略适配不同部署需求控制选项Control Options既可以用高层generate()方法快速部署也可以在循环中逐 iteration 执行模型以获得细粒度控制多语言 APIMulti-Language API提供 Python、C#、C/C 等多语言接口便于跨应用集成。关键兼容性约束EP 绑定ONNX Runtime GenAI 模型通常与构建它时所使用的 EP例如 CUDA 或 DirectML绑定——为某个 EP 导出的模型一般不与其他 EP 兼容。若要在不同后端上推理需要针对目标 EP 重新导出或转换模型。这意味着校准/导出用的 EP与部署用的 GenAI 后端需要保持一致。配套示例 examples/windows/onnx_ptq/genai_llm/README.md 中还有一个相关细节GenAI 构建的 LLM 模型的输入绑定因 EP 而异——用 DML EP 构建的模型带有position_ids输入而用 CUDA EP 或 NvTensorRtRtx EP 构建的模型没有。因此若基座模型需要量化时须加--add_position_ids以在校准数据中生成 position_ids 输入否则会出现 Invalid Position-IDs input 类错误。从基座模型到 GenAI 部署的完整链路以examples/windows/onnx_ptq/genai_llm/README.md为例全流程如下1. 用 ORT-GenAI model-builder 准备 GenAI 兼容的基座 ONNX 模型python -m onnxruntime_genai.models.builder -m meta-llama/Meta-Llama-3-8B -p fp16 -e dml -o E:\llama3-8b-fp16-dml-genai2. 运行量化脚本INT4 AWQ 示例python quantize.py --model_namemeta-llama/Meta-Llama-3-8B \ --onnx_pathE:\model_store\genai\llama3-8b-fp16-dml-genai\opset_21\model.onnx \ --output_pathE:\model_store\genai\llama3-8b-fp16-dml-genai\opset_21\cnn_32_lite_0.1_16\model.onnx \ --calib_size32 --algoawq_lite --datasetcnn量化脚本关键参数完整参数可用python quantize.py --help查看参数取值说明--calib_size32、64、128默认校准数据规模--datasetcnn默认、pilevel校准数据集cnn_dailymail 或 pile-val--algoawq_lite默认、awq_clip、rtn、rtn_dq量化算法见下方说明--onnx_path.onnx 文件路径输入 ONNX 模型--output_path.onnx 文件路径量化模型保存路径--use_zero_point默认关闭启用基于 zero-point 的量化--block-size32、64、128默认AWQ 的 block size--calibration_epsdml、cuda、cpu、NvTensorRtRtx默认[cuda,cpu]校准阶段使用的执行提供器列表--trt_rtx_backendlegacy默认、abiTensorRT-RTX 后端实现与calibration_eps含 NvTensorRtRtx 时配合使用--enable_mixed_quant默认关闭启用混合精度量化INT4INT8--add_position_ids默认关闭需要时为校准数据加入 position_ids 输入算法说明awq_lite执行核心 AWQ 尺度搜索 INT4 量化awq_clip主要做权重裁剪 INT4 量化rtn为 INT4 RTN 量化权重带 Q→DQ 节点rtn_dq为仅含 DQ 节点的 INT4 RTN 量化。注意RTN 算法不需要校准数据。3. 部署量化完成后即可用 ORT-GenAI 或 ORT 加载推理。具体推理脚本可参考 ORT GenAI 官方 examples 仓库中的 Python 示例单函数调用生成输出序列以及 ORT GenAI 的 DirectML 推理教程如 Phi3 教程。部署方式二ONNX Runtime低层 API如果不想引入 GenAI 层也可以直接使用ONNX Runtime加载量化模型。代价是需要手动管理模型输入——包括在每个生成 iteration 内自行维护 KV cache 输入与 attention mask。import onnxruntime as ort session ort.InferenceSession( model.onnx, providers[CUDAExecutionProvider, CPUExecutionProvider], ) # 在生成循环中每次迭代手动传入/更新 KV cache、attention mask 等输入这种方式的灵活性更高可以完全掌控每次 forward 的输入输出但相应地要求你对模型图输入结构如input_ids、position_ids、past_key_values、attention_mask等有清晰的了解并自行实现 beam search / top-p 等采样逻辑。ONNX Runtime 的 Python API 文档提供了更详细的用法与示例。预制优化模型NVIDIA 官方 ONNX 模型集合如果你不想从头走导出 → 量化 → 部署的链路可以直接下载 NVIDIA 官方发布的、已部署就绪的优化 ONNX 模型。ModelOpt-Windows 产出的预制模型发布在 HuggingFace 的 NVIDIA 集合optimized-onnx-models-for-nvidia-rtx-gpus中模型页面会附带对应的部署说明按说明操作即可这些模型通常面向 DirectML 后端部署。该集合在 examples/windows/README.md 中亦有同步说明。部署决策速查决策点建议通用 NVIDIA GPU 部署优先 CUDA EP支持 INT4 / INT8 / FP8 量化模型RTX GPU 深度优化TensorRT-RTX EPlegacy 包开箱即用ABI 路径按本文步骤注册插件注意当前仅支持 Windows跨厂商 GPU / 生态兼容DirectML EP但仅支持 INT4 量化模型8-bit 不支持生成式 AILLM部署首选 ONNX Runtime GenAI注意模型与 EP 绑定跨 EP 需重新导出低层精细控制原生 ONNX Runtime手动管理 KV cache 与 attention mask现成模型直接下载 NVIDIA 官方优化 ONNX 模型集合按模型页说明部署需要再次强调两点硬性前提其一校准用 EP 与部署后端需在能力上匹配例如 8-bit 模型勿选 DirectML其二部署前确认模型 opset 满足数据类型要求FP8 需 19INT4 需 21这两条贯穿本文所有部署路径也是量化模型能否在 onnxruntime 系框架上稳定运行的关键。若需要从零开始量化自己的 ONNX 模型请先阅读 docs/source/guides/windows_guides/_ONNX_PTQ_guide.rst 与 examples/windows/onnx_ptq/genai_llm/README.md再回到本文按 EP 完成部署。赞分享【免费下载链接】Model-OptimizerA unified library of SOTA model optimization techniques like quantization, distillation, pruning, neural architecture search, speculative decoding, etc. It compresses deep learning models for downstream deployment frameworks like TensorRT-LLM, TensorRT, vLLM, etc. to optimize inference speed.项目地址https://gitcode.com/GitHub_Trending/te/Model-Optimizer点击查看免费下载相关推荐Model-Optimizer ONNX 后训练量化PTQ实战指南从 INT8/FP8/INT4 量化到 TensorRT 部署Model Optimizer ONNX 后训练量化PTQ实战指南从 INT8/FP8/INT4 量化到 TensorRT 部署 导读 本文围绕 examJAX模型量化部署实战TensorRT与ONNX Runtime双引擎加速指南JAX模型量化部署实战TensorRT与ONNX Runtime双引擎加速指南 你还在为JAX模型部署速度慢、显存占用高而烦恼吗本文将带你掌握量化技术与双引机器学习深度学习Model Optimizer 扩散模型量化部署实战ONNX 导出与 TensorRT 引擎构建完整指南Model Optimizer 扩散模型量化部署实战ONNX 导出与 TensorRT 引擎构建完整指南 本篇指南基于 Model Optimizer 仓库中创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
2026年AI生成PPT工具实测:开题答辩选哪款不翻车 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:06:03
库存数据迁移实战:从清洗、方案到核对的完整指南 1. 背景:为什么会有“古早库存”,以及它带来的问题看到这个标题,很多做后台开发或者数据治理的同学应该会心一笑。“古早库存”,翻译过来就是老系统里遗留了很久的历史数据;“搬家”,放到工程语境里&#x… · 2026/9/26 2:05:56
ZEBASE光学设计库:高效复用验证结构的工程实践指南 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:05:56
Python股市情感分析实战:从股吧评论到情绪指数与行情验证 简介:股市情感分析源代码,以Python编写,面向普通投资者、量化研究爱好者以及金融领域的Python开发者,旨在从互联网评论中提取投资者情绪,构建情绪指数,为买卖决策提供量化参考。资源总计16个文件࿰… · 2026/9/26 2:37:32
初学c语言的感受 今天是我跟着鹏哥学习c语言的第一节课 老实说 很多内容对我来说都很抽象 只是知道有这么个东西 但是不了解他们的真正用途和背后含义 今天主要讲了数据类型和真正写代码前的一些准备和铺垫 但是我相信有志者事竟成 只要坚持学下去 一定会学好c语言的 · 2026/9/26 2:37:32
LangGraph工作流编排实操:状态设计、人工介入与生产稳定性 写这个系列到第7篇,我明显感觉关注点变了:从"怎么写一个节点"变成了"整个工作流怎么组织才不会崩"。用LangGraph做AI工作流编排,玩到后面拼的根本不是提示词,而是状态管理、流程控制、人工介入和生产稳定性这… · 2026/9/26 2:37:26
Python轻量级农作物病虫害识别模型实战 简介:本资源是一套完整的Python毕业设计项目,面向计算机、农业信息化及相关专业本科生,解决农作物病虫害图像智能识别与分类的实际问题。项目基于深度学习技术构建端到端识别系统,涵盖数据采集规范、图像预处理流程、CNN模型搭建&… · 2026/9/26 2:37:26
用LangFlow搭建流量包推荐智能客服:RAG与对话记忆实战 简介:基于LangFlow框架的零代码大模型应用开发平台项目包,面向希望快速搭建智能客服与RAG应用的开发者、产品经理及运维人员。项目以“流量包推荐智能客服”为实战场景,完整演示对话记忆、检索增强生成(RAG)和多种模型… · 2026/9/26 2:37:20
游戏加加监控配置与帧数显示排查全攻略:从原理到实战 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:37:20
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍 简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置 /* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践 一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46