ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Model Optimizer 端到端示例测试指南:从运行到编写 tests/examples 全覆盖

Model Optimizer 端到端示例测试指南:从运行到编写 tests/examples 全覆盖 人工智能大模型模型优化模型量化模型压缩【免费下载链接】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 仓库中 tests/examples/README.md 为骨架系统讲解端到端示例测试体系如何基于官方 Docker 镜像快速运行任意示例测试、如何通过环境变量控制模型数据来源、如何为新的示例编写符合规范且足够快的测试并结合 tests/examples 下的真实测试文件与 _test_utils 辅助工具深入剖析 tiny 模型夹具、HuggingFace 瞬态错误重试、多 GPU 与多后端测试等底层机制。读完本文你将掌握 Model Optimizer 示例测试的完整闭环——定位、运行、调试与新增。一、tests/examples 是什么为 examples 保驾护航的端到端测试tests/examples/README.md 开宗明义该目录存放 Model Optimizer 针对 examples 中全部官方示例的端到端End-to-End测试。与侧重单模块单元逻辑的tests/unit、tests/gpu不同这里的每个测试都真实地拉起示例脚本如python hf_ptq.py、python quantize.py、torchrun quantize.py走完命令行参数解析 → 模型加载 → 量化/稀疏/蒸馏 → 结果校验 → 导出的完整链路从而确保仓库中的示例在真实用户的使用方式下是可运行、可复现的。从目录清单看测试覆盖了仓库示例的几乎全部技术方向测试目录覆盖的示例主要验证点tests/examples/alpamayoexamples/alpamayoparquet 数据读取、QAD 消息构造、量化脚本tests/examples/hf_ptqexamples/hf_ptq多模型多精度的 PTQ、VLM 量化、mxfp4→nvfp4 转换、TensorRT-LLM 部署tests/examples/llm_qatexamples/llm_qatQAT/QAD/QLoRA 在 fsdp2、ddp、deepspeed 多后端下的训练与导出tests/examples/llm_sparsityexamples/llm_sparsity权重稀疏化sparsegpt / sparse_magnitude与稀疏模型微调tests/examples/llm_distillexamples/llm_distill大模型蒸馏主流程tests/examples/megatron_bridgeexamples/megatron_bridgeMegatron 量化/剪枝/蒸馏与统一 HF 导出tests/examples/speculative_decodingexamples/speculative_decodingEAGLE 离线 PTQ 数据、hidden states 收集、vLLM/SGLang 服务tests/examples/diffusersexamples/diffusers扩散模型 cache diffusion、sparsity、HF 权重导出tests/examples/vllm_serveexamples/vllm_serve稀疏注意力校准、vLLM MLflow 工具tests/examples/onnx_ptq.shexamples/onnx_ptqONNX 模型 fp8/int8 端到端量化与 ImageNet 评估二、运行测试从 Docker 镜像到一条 pytest 命令README 给出的标准运行流程分三步第一步基于官方安装文档的推荐 Docker 镜像。仓库内对应的安装说明位于 docs/getting_started/2_installation.rstLinux 安装细节见 docs/getting_started/_installation_for_Linux.rst。之所以推荐容器环境是因为端到端测试涉及 CUDA 内核如 fp8/int4 量化扩展、TensorRT-LLM、vLLM 等大量系统级依赖容器可以保证环境一致性。第二步把本地仓库挂载进容器。将你的 modelopt 目录挂载到/workspace/Model-Optimizerdocker run -it --gpus all \ -v /path/to/Model-Optimizer:/workspace/Model-Optimizer \ 推荐的 Model Optimizer 镜像 bash第三步从仓库根目录安装依赖并运行指定测试。cd /workspace/Model-Optimizer pip install -e .[all,dev-test] pytest tests/examples/$TEST其中$TEST是tests/examples下的具体路径例如pytest tests/examples/hf_ptq/test_llm_ptq.py。pip install -e .[all,dev-test]中的dev-testextra 在 pyproject.toml 中定义包含pytest~9.1.0、pytest-cov、pytest-instafail、pytest-timeout~2.4.0、nox、uv以及测试专用依赖timm、torchprofile、torchvision、torch-geometric等all则聚合了onnx、hf、puzzletron等特性依赖见 pyproject.toml。完整开发环境可通过.[dev]一次性安装pyproject.toml。提示pytest-timeout默认对每个测试施加 300 秒超时如 tests/examples/megatron_bridge/test_quantize_export.py 中显式标注pytest.mark.timeout(360)的用例即突破了默认值。README 中15 分钟以内的时长建议正是为了让测试在 CI 超时窗口内完成。三、环境变量MODELOPT_LOCAL_MODEL_ROOT 控制模型来源README 定义了一个关键环境变量MODELOPT_LOCAL_MODEL_ROOT设置后测试将使用该本地目录中的模型而不再从互联网HuggingFace Hub下载。默认不设置即测试会从网上拉取模型。这个变量的实际意义在于隔离网络依赖CI 或离线环境无法访问 HuggingFace 时可以预先将测试用模型下载到本地缓存目录再通过该变量指向缓存让测试完全离线运行。在离线环境下还需要配合 tests/_test_utils/examples/run_command.py 内置的瞬态错误重试机制使用见下节。四、测试运行机制剖析tiny 模型夹具与容错重试4.1 会话级 tiny 模型夹具tests/examples/conftest.py 为整个示例测试套件提供三个会话级scopesession夹具tiny_llama_path、tiny_qwen3_path、tiny_gpt_oss_path。它们通过 _test_utils/torch/transformers_models 中的构造函数动态生成微型模型目录pytest.fixture(scopesession) def tiny_llama_path(tmp_path_factory): model_dir create_tiny_llama_dir( tmp_path_factory.mktemp(tiny_llama), with_tokenizerTrue, hidden_size512, intermediate_size512, ) with assert_unmodified_tree(model_dir) as path: yield str(path)关键设计有二微型化hidden_size512、intermediate_size512gpt-oss 仅 2 层的 tiny 模型足以驱动整条示例流程但训练/推理开销极小这正是 README用尽量小的模型和尽量少的数据要求的实现。共享目录保护夹具用assert_unmodified_tree包裹实现见 tests/_test_utils/fs_utils.py它在夹具创建时记录目录内每个文件的(size, mtime_ns)清单退出时对比一旦发现任何文件被增删改就会抛错。这是因为会话级目录被多个测试共享某个测试若往里写文件会悄悄改变后续所有测试看到的模型状态。该工具专门针对 CI 以 root 运行root 拥有CAP_DAC_OVERRIDEchmod 只读拦不住的场景通过 teardown 时校验来兜底。4.2 示例命令执行器与 HuggingFace 瞬态错误重试所有测试最终都通过 run_example_command 执行示例脚本。该函数有两个值得关注的设计瞬态网络错误自动重试_HF_TRANSIENT_MARKERS罗列了 20 余种 HuggingFace Hub/数据集访问的瞬态失败特征HfHubHTTPError、Too Many Requests、5xx、ConnectionError、DNS 解析失败等。默认最多重试 1 次、间隔 10 秒将 CI 中常见的网络抖动与真实代码故障区分开避免误报。进程组管理子进程以start_new_sessionTrue启动成为独立进程组组长配合os.waitid(os.WNOWAIT)非回收式等待在超时中断时用os.killpg连后代进程一起清理避免泄漏孤儿进程占住输出管道run_command.py。4.3 参数化命令封装对需要频繁以不同参数调用同一示例的测试仓库封装了extend_cmd_parts将kwargs转为--key value命令行片段与run_hf_ptq_commandrun_command.py把scripts/huggingface_example.sh的调用参数化。hf_ptq 测试还定义了PTQCommanddataclasstests/_test_utils/examples/hf_ptq_utils.py统一管理quant/recipe/calib/kv_cache_quant/tp/pp/min_sm等参数并在运行前根据 GPU 计算能力min_sm与 GPU 数量min_gpu自动pytest.skip保证用例只在硬件满足的平台上执行。五、源码级视野端到端测试到底覆盖了什么5.1 hf_ptq一张庞大的量化模式矩阵tests/examples/hf_ptq/test_llm_ptq.py 是覆盖面最广的量化测试之一用 tiny_llama 跑通训练后量化int8_smoothquant含 TP2/PP2 张量并行变体、int8_weight_only、int4_awq、w4a8_awq_beta、nvfp4、nvfp4_awq_lite、fp8、mxfp8要求 sm≥100recipe 驱动general/ptq/iq1_s、general/ptq/iq2_xxs、general/ptq/iq2_xsGGML IQ 权重仅编码1.56~2.31 bits/权重要求输入维度为 256 的倍数、general/auto_quantize/nvfp4_fp8_at_5p4bitsautoquantKV Cache 量化kv_cache_quantnvfp4、fp8_cast、fp8与 autoquant 组合多卡与硬件门槛fp8/nvfp4 的多 GPU 变体、按min_sm门槛跳过不适配架构的用例。另有 test_hf_ptq_args.py、test_vlm_ptq.pyVLM 量化、test_cast_mxfp4_to_nvfp4.py精度转换等文件共同覆盖 examples/hf_ptq 的各个入口。5.2 llm_qat多后端训练矩阵与导出校验tests/examples/llm_qat/test_llm_qat.py 演示了如何将同一示例跑在多套分布式后端上通过BACKEND_CONFIGS映射到configs/accelerate/{fsdp2,ddp,deepspeed}.yaml并对 ddp/deepspeed 追加--gradient_checkpointing True。测试链路依次为python quantize.py用general/ptq/nvfp4_default-kv_fp8recipe 得到 NVFP4 PTQ 权重accelerate launch训练QAT / QAD 蒸馏 / QLoRApython export.py导出统一 HF checkpoint并断言导出物结构NVFP4 需同时存在 packed weight 与weight_scale、weight_scale_2两个 scalehf_quant_config.json中quant_algo NVFP4且base_layer/lora权重不出现在 base model 中。5.3 megatron_bridge真实 torchrun 多进程链路tests/examples/megatron_bridge/test_quantize_export.py 用torchrun --nproc_per_node{num_gpus}拉起 examples/megatron_bridge/quantize.py以general/ptq/fp8_default-kv_fp8recipe 完成量化并断言latest_checkpointed_iteration.txt与modelopt_state的存在再调用export_quantized_megatron_to_hf.py导出统一 HF checkpoint。参数化覆盖了 MoEqwen3_moe、VLMqwen3vl仅量化语言模型、视觉部分透传与 Mamba 混合nemotron_h三类架构同时通过setup_free_portTrue让每次运行获得独立MASTER_PORT。5.4 纯 CPU 单元级验证与 shell 级端到端值得注意的是tests/examples并非全是 GPU 用例tests/examples/alpamayo/test_quantize.py 仅用 CPU 验证 examples/alpamayo/quantize.py 中的纯函数parquet 去重保序、QAD 消息结构、轨迹 token 数量并通过pytest.importorskip在依赖缺失时跳过收集。而 ONNX 方向的 tests/examples/test_onnx_ptq.sh 则以 bash 脚本形式完成端到端验证先nvidia-smi读取 CUDA 计算能力能力 ≥ 8.9 才纳入 fp8 模式否则仅 int8/int8_iq随后为每个.onnx模型准备校准数据calib_size1、以python -m modelopt.onnx.quantization --quantize_modefp8|int8 --calibration_epscuda量化并在--eval模式下用 ImageNet 数据评估精度与延迟--engine_precisionstronglyTyped/best/fp16最后汇总为 CSV。该脚本可直接执行./tests/examples/test_onnx_ptq.sh --eval /path/to/models /path/to/timing_cache六、为示例新增测试实践规范与模板README 明确了新增测试的两条铁律结合仓库现有代码可进一步细化目录跟随示例在tests/examples下新建与示例同名的目录参考现有测试组织方式。典型做法是每个测试文件内部sys.path指向对应示例目录如 tests/examples/alpamayo/test_quantize.py或通过 run_example_command 以example_path参数指定examples/dir作为工作目录run_command.py。快是硬约束尽量使用最小模型优先复用conftest.py的 tiny 模型夹具或create_tiny_*_dir系列构造函数和最少量数据除非必要测试应控制在 15 分钟以内且需适配pytest-timeout的 300 秒默认超时。复用辅助工具命令拼装用extend_cmd_parts需要网络容错用run_example_command分布式用例用setup_free_portTrue硬件门槛用min_sm/min_gpu的 skip 模式tests/_test_utils/examples/hf_ptq_utils.py。断言产物而非日志端到端测试的价值在最终产物。参考 test_llm_qat.py 对导出的model.safetensors做张量级比对scale 是否保留、packed 权重是否成对或 test_quantize_export.py 对 checkpoint 标记文件的存在性断言。七、调试与常见问题网络相关失败如果失败信息含 429/5xx/ConnectionError 等瞬态特征run_example_command已自动重试一次若仍失败且为离线环境请设置MODELOPT_LOCAL_MODEL_ROOT指向预下载的本地模型目录。超时失败默认 300 秒超时。若新增流程确实更慢如多步 quantizeexport可用pytest.mark.timeout(N)显式放宽参考 test_quantize_export.py否则应缩减模型/数据规模。共享目录被改动报错信息会列出added/removed/changed文件清单说明某个用例写入了会话级 fixture 目录应把输出改写到tmp_path。残留进程测试异常中断后如有孤儿进程占住输出管道执行器会在下一轮以进程组 SIGKILL 清理但建议在本地用ps检查是否还有遗留的示例子进程。综上tests/examples 不仅是一套测试更是示例可用性的可执行说明书它以真实命令驱动 examples 全流程用 tiny 模型换取速度用产物断言保证质量并通过环境变量与容错重试适配了联网与离线两种运行场景。无论是想快速验证某个示例还是为新的示例补齐测试本文的目录图谱与机制解读都能帮助你直接上手。赞分享人工智能大模型模型优化模型量化模型压缩【免费下载链接】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点击查看免费下载相关推荐Presto 原生端到端测试模块presto-native-tests实战指南用 Presto C Worker 运行全套 SQL 覆盖测试Presto 原生端到端测试模块presto native tests实战指南用 Presto C Worker 运行全套 SQL 覆盖测试 本篇技术大数据数据库后端eSearch 完整指南截屏、离线 OCR 与录屏如何串成一条工作流eSearch 完整指南截屏、离线 OCR 与录屏如何串成一条工作流 想把屏幕上的文字变成可编辑内容时你是否也卡在截图、OCR 网站、复制、翻译这一连串跳转桌面应用OCR屏幕录制视频处理图像处理Cypress system-tests端到端系统测试框架的架构、编写与运行实战指南Cypress system tests端到端系统测试框架的架构、编写与运行实战指南 导读 system tests内部包名为 tooling/syste测试质量保障前端接口测试创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表