模型优化器更新日志 (Linux)
0.21 (2024-12-03)
向后不兼容的更改
支持 TensorRT-LLM 到 0.15。示例可能不完全兼容 TensorRT-LLM 0.14。
从
mt.export.export_tensorrt_llm_checkpointAPI中移除已弃用的参数export_npz弃用
mt.export.export_to_vllmAPI,改用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_checkpoint和mt.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_quantizeAPI 已更新。该 API 现在接受forward_step和forward_backward_step作为参数,而不是loss_func和collect_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模型中的自定义操作。 这需要安装
tensorrtpython包。将
jax替换为cupy以加快INT4 ONNX量化。mtq.auto_quantize现在支持基于搜索的自动量化,适用于NeMo和MCore模型(除了HuggingFace模型)。为NeMo / Megatron-core模型添加
num_layers和hidden_size剪枝支持。
0.17 (2024-09-11)
向后不兼容的更改
已弃用
torch<2.0支持。modelopt.torch.utils.dataset_utils.get_dataset_dataloader()现在返回一个键值对而不是张量。
新功能
新的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_pretrainedAPI 自动保存/恢复modelopt_state,例如transformers和diffusers。可以通过调用mto.enable_huggingface_checkpointing()来启用此功能。支持使用amax校准的ONNX FP8量化。
TensorRT-LLM 依赖已升级至 0.12.0。Huggingface 分词器文件现在也存储在引擎目录中。
统一的模型导出API
modelopt.torch.export.export_hf_checkpoint支持导出带有打包权重的fp8和int4_awq量化检查点,适用于命名与其原始检查点一致的Hugging Face模型。导出的fp8检查点可以部署在TensorRT-LLM和VLLM上。为FLUX.1-dev模型添加int8和fp8量化支持。
为扩散模型添加一个Python友好的TensorRT推理管道。
杂项
为
set_data_parallel_group和set_tensor_parallel_group添加了弃用警告。这些API在支持分布式数据和张量并行量化时不再需要。它们将在未来的版本中被移除。
0.15 (2024-07-25)
向后不兼容的更改
已弃用
QuantDescriptor。 使用QuantizerAttributeConfig来 配置TensorQuantizer。set_from_attribute_config可用于从配置类或属性字典中设置量化器属性。此更改仅适用于 后端 API。如果您仅使用mtq.quantizeAPI,则此更改是向后兼容的。
新功能
为torch
RNN, LSTM, GRU模块添加了量化支持。仅适用于torch>=2.0。modelopt.torch.quantization现在支持基于模块类的量化器属性设置,适用于mtq.quantizeAPI。为DBRX模型添加了新的LLM PTQ示例。
新增了对LLM(Gemma 2)PTQ和TensorRT-LLM检查点导出的支持。
为NVIDIA NeMo框架添加了新的LLM QAT示例。
TensorRT-LLM 依赖已升级至 0.11.0。
(实验性):
mtq.auto_quantizeAPI,通过搜索每层最佳量化格式来量化模型。(实验性):新增了带有NF4和INT4_AWQ量化的新LLM QLoRA示例。
(实验性):
modelopt.torch.export现在支持导出带有打包权重的量化检查点,适用于命名与其原始检查点一致的 Hugging Face 模型。(实验性)增加了对使用TensorRT插件进行ONNX模型量化的支持。
杂项
为
torch<2.0添加了弃用警告。支持将在下一个版本中停止。
0.13 (2024-06-14)
向后不兼容的更改
PTQ examples 已经升级到使用 TensorRT-LLM 0.10。
新功能
为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_group和modelopt.torch.utils.distributed.set_tensor_parallel_groupAPI 进行注册。 默认情况下,数据并行组设置为默认的分布式组,而张量并行组被禁用。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。