模型优化器更新日志 (Linux)

0.21 (2024-12-03)

向后不兼容的更改

  • 支持 TensorRT-LLM 到 0.15。示例可能不完全兼容 TensorRT-LLM 0.14。

  • mt.export.export_tensorrt_llm_checkpoint API中移除已弃用的参数export_npz

  • 弃用 mt.export.export_to_vllm API,改用 mt.export.export_hf_checkpoint

  • llm_ptq中的解码器类型gptnext重命名为gpt,以与TensorRT-LLM模型定义保持一致。

新功能

  • 为NVIDIA NeMo框架中的Minitron剪枝和蒸馏添加了新的教程笔记本。

  • 为NeMo 2.0 GPT模型添加了Minitron剪枝支持。

  • llm_ptq示例中支持的新模型:Minitron, Phi3.5 MOE。

  • 新模型在vlm_ptq示例中的支持:Llama3.2(Mllama)

  • mt.export.export_tensorrt_llm_checkpointmt.export.export_hf_checkpoint 不再需要 dtype 参数。

  • 添加了一个示例,用于在TensorRT和vLLM上部署和运行来自HuggingFace modelopt模型中心的量化fp8 llama3.1 8B指令模型。

错误修复

  • 通过避免在重要性计算中可能的bf16溢出以及对hidden_size重要性排名的微小更改,提高Minitron修剪质量。

杂项

  • 为Python 3.8、torch 2.0和CUDA 11.x添加了弃用警告。支持将在下一个版本中停止。

0.19 (2024-10-23)

向后不兼容的更改

  • 弃用了llm_ptq示例中的summarize任务。

  • huggingface_example.sh中弃用了type标志

  • ONNX 中已弃用的 Python 插件支持。

  • 支持 TensorRT-LLM 0.13。示例与 TensorRT-LLM 0.12 不兼容。

  • mtq.auto_quantize API 已更新。该 API 现在接受 forward_stepforward_backward_step 作为参数,而不是 loss_funccollect_func。请参阅 API 文档以获取更多详细信息。

新功能

  • ModelOpt 现在兼容 SBSA aarch64(例如 GH200)! 除了不支持带有插件的 ONNX PTQ。

  • 添加 effective_bits 作为 mtq.auto_qauntize 的约束。

  • lm_evaluation_harness 已完全集成到由 TensorRT-LLM 支持的 modelopt 中。 lm_evaluation_harness 基准测试现在可用于 LLM 准确性评估的示例中。

  • modelopt_to_tensorrt_llm.py示例中引入了一个新的--perf标志,用于构建具有最大性能的引擎。

  • 用户可以选择执行提供程序在ONNX量化中运行校准。

  • 添加了使用TensorRT插件自动检测ONNX模型中的自定义操作。 这需要安装tensorrt python包。

  • jax替换为cupy以加快INT4 ONNX量化。

  • mtq.auto_quantize 现在支持基于搜索的自动量化,适用于NeMo和MCore模型(除了HuggingFace模型)。

  • 为NeMo / Megatron-core模型添加num_layershidden_size剪枝支持。

0.17 (2024-09-11)

向后不兼容的更改

新功能

  • 新的API和示例:modelopt.torch.prune 用于修剪NVIDIA Megatron-core GPT风格模型(例如Llama 3)、PyTorch计算机视觉模型和HuggingFace Bert/GPT-J模型的Conv、Linear和Attention头。

  • 新API:modelopt.torch.distill 用于知识蒸馏,附带指南和示例。

  • 新示例:HF BERT 剪枝、蒸馏与量化 展示了如何通过剪枝、蒸馏和量化来在给定模型上实现最佳性能。

  • 为ONNX模型添加了仅支持INT8/FP8 DQ的功能。

  • 新API:modelopt.torch.speculative 用于端到端支持Medusa模型。

  • 添加了Medusa QAT和端到端示例。

  • Modelopt 现在支持通过 Huggingface 库中的 .save_pretrained.from_pretrained API 自动保存/恢复 modelopt_state,例如 transformersdiffusers。可以通过调用 mto.enable_huggingface_checkpointing() 来启用此功能。

  • 支持使用amax校准的ONNX FP8量化。

  • TensorRT-LLM 依赖已升级至 0.12.0。Huggingface 分词器文件现在也存储在引擎目录中。

  • 统一的模型导出API modelopt.torch.export.export_hf_checkpoint 支持导出带有打包权重的 fp8int4_awq 量化检查点,适用于命名与其原始检查点一致的Hugging Face模型。导出的 fp8 检查点可以部署在TensorRT-LLM和VLLM上。

  • 为FLUX.1-dev模型添加int8和fp8量化支持。

  • 为扩散模型添加一个Python友好的TensorRT推理管道。

杂项

0.15 (2024-07-25)

向后不兼容的更改

  • 已弃用 QuantDescriptor。 使用 QuantizerAttributeConfig 来 配置 TensorQuantizerset_from_attribute_config 可用于从配置类或属性字典中设置量化器属性。此更改仅适用于 后端 API。如果您仅使用 mtq.quantize API,则此更改是向后兼容的。

新功能

  • 为torch RNN, LSTM, GRU模块添加了量化支持。仅适用于torch>=2.0

  • modelopt.torch.quantization 现在支持基于模块类的量化器属性设置,适用于 mtq.quantize API。

  • 为DBRX模型添加了新的LLM PTQ示例。

  • 新增了对LLM(Gemma 2)PTQ和TensorRT-LLM检查点导出的支持。

  • 为NVIDIA NeMo框架添加了新的LLM QAT示例。

  • TensorRT-LLM 依赖已升级至 0.11.0。

  • (实验性): mtq.auto_quantize API,通过搜索每层最佳量化格式来量化模型。

  • (实验性):新增了带有NF4和INT4_AWQ量化的新LLM QLoRA示例。

  • (实验性): modelopt.torch.export 现在支持导出带有打包权重的量化检查点,适用于命名与其原始检查点一致的 Hugging Face 模型。

  • (实验性)增加了对使用TensorRT插件进行ONNX模型量化的支持。

杂项

  • torch<2.0添加了弃用警告。支持将在下一个版本中停止。

0.13 (2024-06-14)

向后不兼容的更改

新功能

  • 为Medusa解码添加TensorRT-LLM检查点导出支持(官方MedusaModel和Megatron CoreGPTModel)。

  • PTQ示例中启用对mixtral、recurrentgemma、starcoder、qwen的支持。

  • 为稀疏模型添加TensorRT-LLM检查点导出和引擎构建支持。

  • 从TensorRT校准缓存中导入尺度并将其用于量化。

  • (实验性)当原始模型大小不适合GPU内存时,为Hugging Face模型启用低GPU内存FP8校准。

  • (实验性)支持将FP8校准模型导出到VLLM部署。

  • (实验性)增加了对Python 3.12的支持。

0.11 (2024-05-07)

向后不兼容的更改

  • [!!!] 该软件包已从ammo更名为modelopt。新的完整产品名称是Nvidia TensorRT 模型优化器。请将所有引用从ammo更改为modelopt,包括任何路径和链接!

  • 默认安装 pip install nvidia-modelopt 现在只会安装最核心的依赖项。根据使用的功能,以下可选依赖项可用:[deploy], [onnx], [torch], [hf]。要安装所有依赖项,请使用 pip install "nvidia-modelopt[all]"

  • 已弃用 inference_gpus 参数在 modelopt.torch.export.model_config_export.torch_to_tensorrt_llm_checkpoint 中。用户应改用 inference_tensor_parallel

  • 实验性的 modelopt.torch.deploy 模块现在可以作为 modelopt.torch._deploy 使用。

新功能

  • modelopt.torch.sparsity 现在支持稀疏感知训练(SAT)。无论是SAT还是训练后稀疏化都支持与其他模式结合使用,例如 SAT + QAT。

  • modelopt.torch.quantization 原生支持在估计量化参数时使用分布式数据和张量并行。 数据和张量并行组需要通过 modelopt.torch.utils.distributed.set_data_parallel_groupmodelopt.torch.utils.distributed.set_tensor_parallel_group API 进行注册。 默认情况下,数据并行组设置为默认的分布式组,而张量并行组被禁用。

  • modelopt.torch.opt 现在支持链式应用多种优化技术,每种技术都需要对同一模型进行修改,例如,您现在可以同时稀疏化和量化模型。

  • modelopt.onnx.quantization 支持使用分布校准算法的FLOAT8量化格式。

  • 原生支持modelopt.torch.opt与FSDP(完全分片数据并行)用于torch>=2.1。这包括稀疏性、量化以及任何其他模型修改和优化。

  • modelopt.onnx.quantization中添加了FP8 ONNX量化支持。

  • 为ModelOpt发布的轮子增加了Windows (win_amd64)支持。目前仅支持modelopt.onnx子模块。

错误修复

  • 修复了modelopt.torch.sparsity与FSDP的兼容性问题。

  • 修复了在使用随机校准数据时modelopt.onnx.quantization中动态维度处理的问题。

  • 修复了在opset转换操作后的图节点命名问题。

  • 修复了在使用随机校准数据时,modelopt.onnx.quantization中类似动态维度的负维度处理问题。

  • 修复了允许接受.pb文件作为输入文件的问题。

  • 修复了将额外数据复制到临时文件夹的问题,适用于ONNX PTQ。