发布说明
发布说明中所有已发布的功能均已通过全面测试和验证,并记录了已知的限制。要分享关于此版本的反馈,请访问我们的NVIDIA Developer Forum。
TensorRT-LLM 发布 0.16.0
主要功能与增强
添加了使用XGrammar后端的引导解码支持。
为RecurrentGemma添加了量化支持。请参考
examples/recurrentgemma/README.md。增加了ulysses上下文并行支持。请参考在
examples/llama/README.md中使用2路张量并行和2路上下文并行构建LLaMA 7B的示例。在Ada(SM89)上为BF16模型添加了W4A8量化支持。
为FP8 GEMM插件添加了PDL支持。
添加了一个运行时
max_num_tokens动态调优功能,可以通过将--enable_max_num_tokens_tuning设置为gptManagerBenchmark来启用。为EAGLE添加了典型的验收支持。
支持分块上下文和滑动窗口注意力一起启用。
为XQA内核增加了头大小64的支持。
向LLM API添加了以下功能:
前瞻解码。
DeepSeek V1 支持。
Medusa 支持。
max_num_tokens和max_batch_size参数用于控制运行时参数。extended_runtime_perf_knob_config用于启用各种性能配置。
为Qwen模型添加了LogN缩放支持。
为Qwen添加了
AutoAWQ检查点支持。请参考examples/qwen/README.md中的“INT4-AWQ”部分。为LLaMA添加了
AutoAWQ和AutoGPTQHugging Face检查点支持。(#2458)在C++的
Request类中添加了allottedTimeMs以支持每个请求的超时。[重大变更] 移除了NVIDIA V100 GPU支持。
API变更
[重大变更] 从
trtllm-build中移除了enable_xqa参数。[重大变更] 当在非基于RNN的模型上启用KV缓存和分页上下文FMHA时,默认启用分块上下文。
[重大变更] 在可能的情况下自动启用嵌入共享,并从转换检查点脚本中移除标志
--use_embedding_sharing。[重大变更] 使用
LLMAPI时,无论是单GPU还是多GPU情况,都需要if __name__ == "__main__"入口点。[重大变更] 取消的请求现在返回空结果。
在
LLMAPI的LlmArgs中添加了enable_chunked_prefill标志。将BERT和RoBERTa模型集成到
trtllm-build命令中。
模型更新
增加了Qwen2-VL支持。请参考
examples/multimodal/README.md中的“Qwen2-VL”部分。增加了多模态评估示例。请参考
examples/multimodal。增加了Stable Diffusion XL支持。请参考
examples/sdxl/README.md。感谢@Zars19在#1514中的贡献。
已修复的问题
修复了不必要的批量logits后处理器调用。(#2439)
修复了错误信息中的一个拼写错误。(#2473)
修复了在平滑量化中使用原地钳位操作的问题。感谢@StarrickLiu在#2485中的贡献。
修复了
sampling_params仅在end_id为None且tokenizer不为None时在LLMAPI中设置的问题。感谢@mfuntowicz在#2573中的贡献。
基础设施变更
更新了TensorRT-LLM的基础Docker镜像为
nvcr.io/nvidia/pytorch:24.11-py3。更新了TensorRT-LLM Backend的基础Docker镜像为
nvcr.io/nvidia/tritonserver:24.11-py3。更新至 TensorRT v10.7。
已更新至CUDA v12.6.3。
在PyPI上为TensorRT-LLM Python轮子增加了对Python 3.10和3.12的支持。
已更新至适用于Linux平台的ModelOpt v0.21,而Windows平台仍使用v0.17。
已知问题
在基于AMD的CPU平台上,NCCL 2.23.4存在一个已知的AllReduce性能问题,可以通过
export NCCL_P2P_LEVEL=SYS来解决。
TensorRT-LLM 发布 0.15.0
主要功能与增强
增加了对EAGLE的支持。请参考
examples/eagle/README.md。增加了对GH200系统的功能支持。
增加了AutoQ(混合精度)支持。
添加了一个
trtllm-serve命令来启动基于FastAPI的服务器。为Nemotron NAS 51B添加了FP8支持。请参考
examples/nemotron_nas/README.md。为GPTQ量化添加了INT8支持。
增加了对INT8平滑量化的TensorRT原生支持。
为Exaone模型添加了量化支持。请参考
examples/exaone/README.md。为Qwen2模型启用了Medusa。请参考
examples/medusa/README.md中的“Medusa with Qwen2”部分。为Mixtral模型优化了管道并行性,使用了ReduceScatter和AllGather。
增加了对
Qwen2ForSequenceClassification模型架构的支持。添加了Python插件支持以简化插件开发工作。请参考
examples/python_plugin/README.md。在使用Hugging Face格式时,为LoRA模块添加了不同的排名维度支持。感谢@AlessioNetti在#2366中的贡献。
默认启用嵌入共享。有关嵌入共享所需条件的信息,请参阅
docs/source/performance/perf-best-practices.md中的“嵌入并行性、嵌入共享和查找插件”部分。在Ada上增加了对每个令牌每个通道FP8(即行式FP8)的支持。
将最大支持的
beam_width扩展到256。为InternVL2-4B变体(仅限LLM模型)添加了FP8和INT8 SmoothQuant量化支持。请参考
examples/multimodal/README.md。增加了对prompt-lookup推测解码的支持。请参考
examples/prompt_lookup/README.md。集成了QServe的w4a8逐组/逐通道量化。请参考
examples/llama/README.md中的“w4aINT8量化(QServe)”部分。添加了一个使用
executorAPI进行快速logits计算的C++示例。请参考examples/cpp/executor/README.md中的“executorExampleFastLogits”部分。[重大变更] 在此版本及未来版本中,移除了对NVIDIA Volta GPU的支持。
对LLM API进行了以下增强:
[重大变更] 为了在没有预热的情况下获得更好的生成性能,已将运行时初始化从第一次调用
LLM.generate移至LLM.__init__。向
SamplingParams类添加了n和best_of参数。这些参数使得可以为单个请求返回多个生成结果。向
SamplingParams类添加了ignore_eos、detokenize、skip_special_tokens、spaces_between_special_tokens和truncate_prompt_tokens参数。这些参数使得对分词器行为的控制更加精细。增加了对增量去标记化的支持,以提高流生成时的去标记化性能。
向
LLM类添加了enable_prompt_adapter参数,并为LLM.generate方法添加了prompt_adapter_request参数。这些参数启用了提示调优。
增加了对
gpt_variant参数的支持,该参数位于examples/gpt/convert_checkpoint.py文件中。此增强功能使得能够转换更多GPT模型变体的检查点。感谢@tonylek在#2352中的贡献。
API变更
[重大变更] 已将
trtllm-build命令中的builder_force_num_profiles标志移至BUILDER_FORCE_NUM_PROFILES环境变量。[重大变更] 修改了
BuildConfig类的默认值,使其与trtllm-build命令保持一致。[重大变更] 移除了
GptManager的 Python 绑定。[重大变更]
auto被用作量化和检查点转换脚本中--dtype选项的默认值。[重大变更] 在
gptManagerBenchmark中弃用了gptManagerAPI 路径。[重大变更] 在LLM API中,已弃用
SamplingParams类中的beam_width和num_return_sequences参数。请改用n、best_of和use_beam_search参数。向OpenAI API服务器暴露了
--trust_remote_code参数。(#2357)
模型更新
增加了对Llama 3.2和llama 3.2-Vision模型的支持。有关llama 3.2-Vision模型的更多详细信息,请参阅
examples/mllama/README.md。增加了对Deepseek-v2的支持。请参考
examples/deepseek_v2/README.md。增加了对Cohere Command R模型的支持。请参考
examples/commandr/README.md。增加了对Falcon 2的支持,请参考
examples/falcon/README.md,感谢@puneeshkhanna在#1926中的贡献。增加了对InternVL2的支持。请参考
examples/multimodal/README.md。增加了对Qwen2-0.5B和Qwen2.5-1.5B模型的支持。(#2388)
增加了对Minitron的支持。请参考
examples/nemotron。添加了一个GPT变体 - Granite(20B和34B)。请参考
examples/gpt/README.md中的“GPT变体 - Granite”部分。增加了对LLaVA-OneVision模型的支持。请参考
examples/multimodal/README.md中的“LLaVA, LLaVa-NeXT, LLaVA-OneVision和VILA”部分。
已修复的问题
修复了前向函数中的一个切片错误。(#1480)
修复了构建BERT时出现的问题。(#2373)
修复了构建BERT时模型未加载的问题。(2379)
修复了损坏的执行器示例。(#2294)
修复了当专家数量不是2的幂时,内核
moeTopK()无法找到正确专家的问题。感谢@dongjiyingdjy报告此错误。修复了在
crossKvCacheFraction上的断言失败问题。(#2419)修复了在使用smoothquant量化Qwen2模型时的问题。(#2370)
修复了
docs/source/performance/perf-benchmarking.md中的一个PDL拼写错误,感谢@MARD1NO在#2425中指出。
基础设施变更
TensorRT-LLM 的基础 Docker 镜像已更新为
nvcr.io/nvidia/pytorch:24.10-py3。TensorRT-LLM Backend 的基础 Docker 镜像已更新为
nvcr.io/nvidia/tritonserver:24.10-py3。依赖的TensorRT版本已更新至10.6。
依赖的CUDA版本已更新至12.6.2。
依赖的PyTorch版本已更新至2.5.1。
Linux平台上的依赖ModelOpt版本已更新至0.19,而Windows平台仍使用0.17版本。
文档
为文档中的代码片段添加了复制按钮。(#2288)
TensorRT-LLM 发布 0.14.0
主要功能与增强
增强了LLM API中的
LLM类。增加了对离线数据集校准的支持。
增加了对Mamba2的支持。
增加了对
finish_reason和stop_reason的支持。
为CodeLlama添加了FP8支持。
为类
Module添加了__repr__方法,感谢 @1ytic 在 #2191 中的贡献。为融合门控MLP添加了BFloat16支持。
更新了ReDrafter的束搜索逻辑以匹配Apple ReDrafter v1.1。
改进了
customAllReduce的性能。草稿模型现在可以在
orchestrator模式下通过MPI直接将logits复制到目标模型的进程中。这种快速的logits复制减少了草稿令牌生成和目标模型推理开始之间的延迟。NVIDIA Volta GPU 支持已被弃用,并将在未来的版本中移除。
API变更
[重大变更]
trtllm-build命令的默认max_batch_size设置为2048。[重大变更] 从
BuildConfig类和trtllm-build命令中移除builder_opt。为
ModelRunnerCpp类添加logits后处理器支持。在C++的
ExecutorAPI中添加了isParticipant方法,用于检查当前进程是否是执行器实例的参与者。
模型更新
增加了对NemotronNas的支持,请参见
examples/nemotron_nas/README.md。增加了对Deepseek-v1的支持,请参见
examples/deepseek_v1/README.md。增加了对Phi-3.5模型的支持,请参见
examples/phi/README.md。
已修复的问题
修复了
tensorrt_llm/models/model_weights_loader.py中的一个拼写错误,感谢@wangkuiyi在#2152中的贡献。修复了在
tensorrt_llm/runtime/generation.py中重复导入模块的问题,感谢@lkm2835在#2182中的贡献。启用了
share_embedding用于在旧版检查点转换路径中没有lm_head的模型,感谢@lkm2835在#2232中的贡献。修复了Python基准测试中的
kv_cache_type问题,感谢@qingquansong在#2219中的贡献。修复了使用自定义数据集进行SmoothQuant校准的问题。感谢@Bhuvanesh09在#2243中的贡献。
修复了关于
trtllm-build --fast-build使用虚假或随机权重的问题。感谢@ZJLi2013在#2135中标记了这个问题。修复了从字典构造
BuildConfig时缺少use_fused_mlp的问题,感谢@ethnzhng在#2081中的修复。修复了
numNewTokensCumSum的前瞻批次布局。(#2263)
基础设施变更
依赖的ModelOpt版本已更新至v0.17。
文档
@Sherlock113 在 #2169 的最新消息中添加了一篇技术博客,感谢贡献。
已知问题
Replit Code 不支持 transformers 4.45+
TensorRT-LLM 发布 0.13.0
主要功能与增强
支持前瞻解码(实验性),请参阅
docs/source/speculative_decoding.md。对
ModelWeightsLoader进行了一些增强(一个统一的检查点转换器,参见docs/source/architecture/model-weights-loader.md)。支持的Qwen模型。
支持在INT4-wo/INT8-wo/INT4-GPTQ中不可分割的TP形状的自动填充。
提高了
*.bin和*.pth的性能。
在C++运行时中支持OpenAI Whisper。
对
LLM类进行了一些增强。支持的LoRA。
支持使用虚拟重量构建引擎。
支持从Hugging Face Hub下载的自定义模型和分词器的
trust_remote_code。
支持流式模式的束搜索。
支持Mamba2的张量并行。
支持在流模式下返回生成的对数概率。
为
ReDrafter添加了curand和bfloat16支持。为MoE模型添加了稀疏混合器归一化模式。
在FP8 FMHA中添加了对QKV缩放的支持。
支持MoE LoRA的FP8。
支持KV缓存重用于P-Tuning和LoRA。
支持CogVLM模型的飞行中批处理。
支持的LoRA用于
ModelRunnerCpp类。支持FMHA内核的
head_size=48情况。为DiT模型添加了FP8示例,请参见
examples/dit/README.md。支持带有编码器输入特征的解码器,适用于C++
executorAPI。
API变更
[重大变更] 默认将
use_fused_mlp设置为True。[重大变更] 默认启用了
multi_block_mode。[重大变更] 在
builderAPI 中默认启用了strongly_typed。[重大变更] 将
maxNewTokens、randomSeed和minLength重命名为maxTokens、seed和minTokens,以遵循 OpenAI 的风格。LLM类[重大变更] 更新了
LLM.generate参数,以包含PromptInputs和tqdm。
C++
executorAPI[重大变更] 添加了
LogitsPostProcessorConfig。将
FinishReason添加到Result中。
模型更新
支持Gemma 2,请参阅
examples/gemma/README.md中的“运行Gemma 2”部分。
已修复的问题
修复了在启用交叉注意力去除填充问题时出现的精度问题。(#1999)
修复了在使用
smoothquant时转换qwen2-0.5b-instruct失败的问题。(#2087)在
convert_utils.py中匹配了exclude_modules模式与quantize.py中的更改。(#2113)修复了当设置
FORCE_NCCL_ALL_REDUCE_STRATEGY时的构建引擎错误。修复了
gpt_attention量化模式中的意外截断问题。修复了取消请求时由于竞争条件导致的挂起问题。
修复了
LoraConfig的默认工厂。(#1323)
基础设施变更
TensorRT-LLM 的基础 Docker 镜像已更新为
nvcr.io/nvidia/pytorch:24.07-py3。TensorRT-LLM 后端的 Docker 基础镜像已更新为
nvcr.io/nvidia/tritonserver:24.07-py3。依赖的TensorRT版本已更新至10.4.0。
依赖的CUDA版本已更新至12.5.1。
依赖的PyTorch版本已更新至2.4.0。
依赖的 ModelOpt 版本已更新至 v0.15。
TensorRT-LLM 发布 0.12.0
主要功能与增强
支持的LoRA用于MoE模型。
ModelWeightsLoader已为 LLaMA 系列模型启用(实验性),请参阅docs/source/architecture/model-weights-loader.md。支持NVIDIA Ada Lovelace架构的FP8 FMHA。
支持GPT-J、Phi、Phi-3、Qwen、GPT、GLM、Baichuan、Falcon和Gemma模型用于
LLM类。支持FP8开箱即用的MoE。
支持的Starcoder2 SmoothQuant。(#1886)
支持ReDrafter推测解码,请参阅
docs/source/speculative_decoding.md中的“ReDrafter”部分。支持BERT的填充移除,感谢@Altair-Alpha在#1834中的贡献。
为GLM 10B模型添加了飞行中批处理支持。
支持
gelu_pytorch_tanh激活函数,感谢 @ttim 在 #1897 中的贡献。在Whisper中添加了
chunk_length参数,感谢@MahmoudAshraf97在#1909中的贡献。为
gptManagerBenchmark添加了concurrency参数。Executor API 支持不同波束宽度的请求,请参阅
docs/source/executor.md#sending-requests-with-different-beam-widths。向
trtllm-build命令添加了--fast_build标志(实验性)。
API变更
[重大变更]
max_output_len已从trtllm-build命令中移除,如果你想在引擎构建阶段限制序列长度,请指定max_seq_len。[重大变更]
use_custom_all_reduce参数已从trtllm-build中移除。[重大变更]
multi_block_mode参数从构建阶段(trtllm-build和 builder API)移至运行时。[重大变更] 构建时参数
context_fmha_fp32_acc已移至解码器模型的运行时。[重大变更] 参数
tp_size,pp_size和cp_size已从trtllm-build命令中移除。C++ 批处理管理器 API 已被弃用,推荐使用 C++
executorAPI,并且它将在未来的 TensorRT-LLM 版本中被移除。在C++库中添加了一个版本API,将会生成一个
cpp/include/tensorrt_llm/executor/version.h文件。
模型更新
支持的LLaMA 3.1模型。
支持的Mamba-2模型。
支持的EXAONE模型,请参见
examples/exaone/README.md。支持的Qwen 2模型。
支持的GLM4模型,请参见
examples/chatglm/README.md。增加了LLaVa-1.6(LLaVa-NeXT)多模态支持,请参阅
examples/multimodal/README.md中的“LLaVA, LLaVa-NeXT and VILA”部分。
已修复的问题
修复了CodeQwen模型的错误填充标记。(#1953)
修复了在
tensorrt_llm/auto_parallel/cluster_info.py中定义的cluster_infos中的拼写错误,感谢@saeyoonoh在#1987中的贡献。在
docs/source/reference/troubleshooting.md中移除了命令中的重复标志,感谢@hattizai在#1937中的贡献。修复了TopP采样层中的分段错误,感谢@akhoroshev在#2039中的贡献。(#2040)
修复了在转换Mistral Nemo模型的检查点时失败的问题。(#1985)
将
exclude_modules传播到仅权重量化,感谢@fjosw在#2056中的贡献。修复了README中的错误链接,感谢@Tayef-Shah在#2028中的贡献。
修复了文档中的一些拼写错误,感谢@lfz941在#1939中的贡献。
修复了当推导出的
max_seq_len不是整数时引擎构建失败的问题。(#2018)
基础设施变更
TensorRT-LLM 的基础 Docker 镜像已更新为
nvcr.io/nvidia/pytorch:24.07-py3。TensorRT-LLM 后端的 Docker 基础镜像已更新为
nvcr.io/nvidia/tritonserver:24.07-py3。依赖的TensorRT版本已更新至10.3.0。
依赖的CUDA版本已更新至12.5.1。
依赖的PyTorch版本已更新至2.4.0。
依赖的ModelOpt版本已更新至v0.15.0。
已知问题
在Windows上,TensorRT-LLM的安装可能会成功,但在Python中导入库时可能会遇到
OSError: exception: access violation reading 0x0000000000000000。请参阅Installing on Windows以获取解决方法。
TensorRT-LLM 发布 0.11.0
主要功能与增强
支持LLaMA的超长上下文(参见
examples/llama/README.md中的“长上下文评估”部分)。低延迟优化
添加了一个reduce-norm功能,旨在将AllReduce之后的ResidualAdd和LayerNorm内核融合为单个内核,建议在批量大小较小且生成阶段时间占主导时启用。
为GEMM插件添加了FP8支持,这在批量大小小于4的情况下特别有益。
为SM90上的FP8添加了融合的GEMM-SwiGLU插件。
LoRA 增强
支持使用FP16 LoRA检查点运行FP8 LLaMA。
增加了对量化基础模型和FP16/BF16 LoRA的支持。
SQ OOTB (- INT8 A/W) + FP16/BF16/FP32 LoRA
INT8/ INT4 仅权重 (INT8 /W) + FP16/BF16/FP32 LoRA
仅权重分组 + FP16/BF16/FP32 LoRA
为Qwen2添加了LoRA支持,请参见
examples/qwen/README.md中的“使用LoRA运行模型”部分。增加了对Phi-3-mini/small FP8基础+FP16/BF16 LoRA的支持,请参阅
examples/phi/README.md中的“使用LoRA运行Phi-3”部分。增加了对starcoder-v2 FP8基础+FP16/BF16 LoRA的支持,请参阅
examples/gpt/README.md中的“使用LoRA运行StarCoder2”部分。
编码器-解码器模型的C++运行时增强
支持分页KV缓存和飞行中批处理。(#800)
支持的张量并行。
支持INT8量化,但排除嵌入层。
已将Whisper的默认模型更新为
distil-whisper/distil-large-v3,感谢@IbrahimAmin1在#1337中的贡献。支持HuggingFace模型自动下载的Python高级API。
支持用于飞行中批处理的显式草稿令牌。
支持本地自定义校准数据集,感谢@DreamGenX在#1762中的贡献。
添加了批量logits后处理器。
已将Hopper qgmma内核添加到XQA JIT代码路径中。
支持张量并行和专家并行同时启用,适用于MoE。
支持了当层数不能被PP大小整除时的管道并行情况。
在executor API的迭代统计日志中添加了
numQueuedRequests。在executor API的迭代统计日志中添加了
iterLatencyMilliSec。从社区添加HuggingFace模型库,感谢@matichon-vultureprime在#1674中的贡献。
API变更
[重大变更]
trtllm-build命令已将Whisper迁移到统一工作流(
trtllm-build命令),请参阅文档:examples/whisper/README.md。max_batch_size在trtllm-build命令中默认切换为 256。max_num_tokens在trtllm-build命令中默认切换为 8192。已弃用
max_output_len并添加了max_seq_len。从
trtllm-build命令中移除了不必要的--weight_only_precision参数。从
trtllm-build命令中移除了attention_qk_half_accumulation参数。从
trtllm-build命令中移除了use_context_fmha_for_generation参数。从
trtllm-build命令中移除了strongly_typed参数。max_seq_len的默认值现在从HuggingFace模式配置中读取。
C++ 运行时
[重大变更] 将
ModelRunnerCpp中的free_gpu_memory_fraction重命名为kv_cache_free_gpu_memory_fraction。[重大变更] 重构了
GptManagerAPI将
maxBeamWidth移动到TrtGptModelOptionalParams中。将
schedulerConfig移动到TrtGptModelOptionalParams中。
向
ModelRunnerCpp添加了更多选项,包括max_tokens_in_paged_kv_cache、kv_cache_enable_block_reuse和enable_chunked_context。
[重大变更] Python 高级 API
移除了
ModelConfig类,所有选项都移至LLM类。重构了
LLM类,请参考examples/high-level-api/README.md将最常用的选项移动到显式参数列表中,并将专家选项隐藏在kwargs中。
暴露的
model可以接受 HuggingFace 模型名称或本地的 HuggingFace 模型/TensorRT-LLM 检查点/TensorRT-LLM 引擎。支持从HuggingFace模型中心下载模型,目前仅支持Llama变体。
支持通过设置环境变量
TLLM_LLMAPI_BUILD_CACHE=1或传递enable_build_cache=True给LLM类来重用构建的TensorRT-LLM引擎。暴露了低级别的选项,包括
BuildConfig、SchedulerConfig等在 kwargs 中,理想情况下,您应该能够配置有关构建和运行时阶段的详细信息。
重构了
LLM.generate()和LLM.generate_async()API。移除了
SamplingConfig。添加了
SamplingParams,包含更多扩展参数,请参见tensorrt_llm/llmapi/utils.py。新的
SamplingParams包含并管理来自SamplingConfig、OutputConfig等Python绑定的字段。
重构了
LLM.generate()输出为RequestOutput,请参见tensorrt_llm/llmapi/llm.py。
更新了
apps示例,特别是通过使用LLMAPI重写了chat.py和fastapi_server.py,详情请参考examples/apps/README.md。更新了
chat.py以支持多轮对话,允许用户在终端中与模型聊天。修复了
fastapi_server.py,并在多GPU场景中消除了对mpirun的需求。
[重大变更] 推测解码配置统一
介绍
SpeculativeDecodingMode.h以选择不同的推测解码技术。介绍用于推测解码技术的
SpeculativeDecodingModule.h基类。移除了
decodingMode.h。
gptManagerBenchmark[重大变更]
api在gptManagerBenchmark命令中现在默认是executor。添加了一个运行时
max_batch_size。添加了一个运行时
max_num_tokens。
[重大变更] 向
LayerNorm模块添加了一个bias参数,并支持无偏置的层归一化。[重大变更] 移除了
GptSessionPython 绑定。
模型更新
支持的Jais,请参见
examples/jais/README.md。支持的DiT,请参见
examples/dit/README.md。支持VILA 1.5。
支持的视频NeVA,请参见
Video NeVA部分在examples/multimodal/README.md中。支持 Grok-1,请参阅
examples/grok/README.md。支持Qwen1.5-110B的FP8 PTQ。
支持带有块稀疏注意力的Phi-3小型模型。
支持InternLM2 7B/20B,感谢@RunningLeon在#1392中的贡献。
支持的Phi-3-medium模型,请参见
examples/phi/README.md。支持Qwen1.5 MoE A2.7B。
支持phi 3视觉多模态。
已修复的问题
修复了当批量大小大于1时输出错误的问题。(#1539)
修复了
executor.py中的top_k类型,感谢@vonjackustc在#1329中的贡献。修复了Python运行时中的停止词和敏感词列表指针偏移问题,感谢@fjosw在#1486中的贡献。
修复了Whisper模型中的一些拼写错误,感谢@Pzzzzz5142在#1328中的贡献。
修复了在CUDA驱动版本小于526且pynvml版本大于等于11.5.0时的导出失败问题,感谢@CoderHam在#1537中的贡献。
修复了NMT权重转换中的一个问题,感谢@Pzzzzz5142在#1660中的贡献。
修复了LLaMA平滑量化转换,感谢@lopuhin在#1650中的贡献。
修复了Qwen1.5-32B的
qkv_bias形状问题(#1589),感谢@Tlntin在#1637中的贡献。修复了
fpA_intB的Ada特性错误,感谢@JamesTheZ在#1583中的贡献。更新
examples/qwenvl/requirements.txt,感谢 @ngoanpv 在 #1248 中的贡献。修复了
lora_manager中的rsLoRA缩放问题,感谢@TheCodeWrangler在#1669中的贡献。修复了Qwen1.5检查点转换失败的问题 #1675。
修复了Medusa safetensors和AWQ转换,感谢@Tushar-ml在#1535中的贡献。
修复了
convert_hf_mpt_legacy在非全局作用域调用时失败的问题,感谢@bloodeagle40234在#1534中的贡献。修复了
use_fp8_context_fmha输出错误的问题 (#1539)。修复了NMT模型的预归一化权重转换问题,感谢@Pzzzzz5142在#1723中的贡献。
修复了随机种子初始化问题,感谢@pathorn在#1742中的贡献。
修复了Python绑定中的停用词和不良词汇。(#1642)
修复了在转换Mistral 7B v0.3的检查点时的问题,感谢@Ace-RR的贡献:#1732。
修复了fp8 Llama和Mixtral的飞行中批处理问题,感谢@bprus的贡献:#1738
修复了当
quantize.py将数据导出到config.json时失败的问题,感谢@janpetrov的贡献:#1676当autopp检测到不支持的quant插件时,引发错误 #1626。
修复了在加载Gemma #1799时未设置
shared_embedding_table的问题,感谢@mfuntowicz的贡献。修复了
ModelRunner的停止词和不良词列表连续性问题 #1815,感谢@Marks101的贡献。修复了
FAST_BUILD缺少注释的问题,感谢@lkm2835在#1851中的支持。修复了Top-P采样偶尔生成无效令牌的问题。#1590
修复了 #1424。
修复了 #1529。
修复了
benchmarks/cpp/README.md以解决#1562和#1552问题。修复了死链接,感谢 @DefTruth、@buvnswrn 和 @sunjiabin17 在以下链接中的帮助:https://github.com/triton-inference-server/tensorrtllm_backend/pull/478, https://github.com/triton-inference-server/tensorrtllm_backend/pull/482 和 https://github.com/triton-inference-server/tensorrtllm_backend/pull/449。
基础设施变更
TensorRT-LLM 的基础 Docker 镜像已更新为
nvcr.io/nvidia/pytorch:24.05-py3。TensorRT-LLM 后端的 Docker 基础镜像已更新为
nvcr.io/nvidia/tritonserver:24.05-py3。依赖的TensorRT版本已更新至10.2.0。
依赖的CUDA版本已更新至12.4.1。
依赖的PyTorch版本已更新至2.3.1。
依赖的ModelOpt版本已更新至v0.13.0。
已知问题
在Windows的conda环境中,TensorRT-LLM的安装可能会成功。然而,当在Python中导入该库时,您可能会收到
OSError: exception: access violation reading 0x0000000000000000的错误信息。此问题正在调查中。
TensorRT-LLM 发布 0.10.0
公告
TensorRT-LLM 支持 TensorRT 10.0.1 和 NVIDIA NGC 24.03 容器。
主要功能与增强
Python 高级 API
增加了嵌入并行、嵌入共享和融合MLP支持。
启用了
executorAPI的使用。
添加了一个新的
trtllm-refit命令,用于权重剥离功能。更多信息,请参考examples/sample_weight_stripping/README.md。添加了一个权重流功能。更多信息,请参考
docs/source/advanced/weight-streaming.md。增强了多配置文件功能;
--multiple_profiles参数在trtllm-build命令中现在构建了更多的优化配置文件,以提高性能。为Mixtral添加了FP8量化支持。
增加了对GPT管道并行性的支持。
通过避免重新计算优化了
applyBiasRopeUpdateKVCache内核。减少了TensorRT引擎
enqueue调用之间的开销。增加了对编码-解码模型的分页KV缓存的支持。该支持仅限于波束宽度为1的情况。
为NVIDIA Ada Lovelace架构添加了W4A(fp)8 CUTLASS内核。
添加了调试选项(
--visualize_network和--dry_run)到trtllm-build命令中,以便在引擎构建之前可视化 TensorRT 网络。集成了新的NVIDIA Hopper XQA内核,适用于LLaMA 2 70B模型。
在启用飞行中批处理时,改进了管道并行的性能。
支持的Nemotron模型量化。
为Mixtral和Qwen添加了LoRA支持。
为ChatGLM模型添加了飞行中批处理支持。
增加了对
ModelRunnerCpp的支持,使其能够与executorAPI一起运行,适用于IFB兼容模型。通过添加启发式方法增强了自定义
AllReduce;当硬件要求不满足时,回退使用原生NCCL内核以获得最佳性能。优化了LLaMA检查点转换过程的性能。
基准测试
[重大变更] 已将请求速率生成参数和逻辑从准备数据集脚本移至
gptManagerBenchmark。启用了流式传输并支持
Time To the First Token (TTFT)延迟和Inter-Token Latency (ITL)指标用于gptManagerBenchmark。向
gptManagerBenchmark添加了--max_attention_window选项。
API变更
[重大变更] 将
trtllm-build命令的默认tokens_per_block参数设置为 64 以提高性能。[重大变更] 已将编码-解码模型迁移到统一的工作流程中。
[重大变更] 将
GptModelConfig重命名为ModelConfig。[重大变更] 向构建器API添加了推测解码模式。
[重大变更] 重构调度配置
统一了
batch_scheduler和executor中同名的SchedulerPolicy,并将其重命名为CapacitySchedulerPolicy。将现有的配置调度策略从
SchedulerPolicy扩展到了SchedulerConfig,以增强可扩展性。后者还引入了一种基于块的配置,称为ContextChunkingPolicy。
[重大变更] 在
generate()和generate_async()API中,输入提示已从生成输出中移除。例如,当给定提示为A B时,原始生成结果可能是,其中只有AB C D EC D E是实际输出,而现在的结果是C D E。[重大变更] 在TensorRT-LLM后端中,默认的
add_special_token已切换为True。已弃用
GptSession和TrtGptModelV1。
模型更新
支持 DBRX
支持Qwen2
支持 CogVLM
支持ByT5
支持LLaMA 3
支持Arctic(带FP8)
支持Fuyu
支持柿子
支持部署
支持具有长Rope的Phi-3-Mini
支持Neva
支持 Kosmos-2
支持 RecurrentGemma
已修复的问题
修复了beam search和early stopping中的一些意外行为,使得输出更加准确。
修复了使用管道并行和
gather_all_token_logits时的分段错误。(#1284)移除了XQA中不必要的检查,以修复代码Llama 70b Triton崩溃的问题。(#1256)
修复了BF16 LoRA不支持的ScalarType问题。(https://github.com/triton-inference-server/tensorrtllm_backend/issues/403)
在多模态中消除了提示表的加载和保存。(https://github.com/NVIDIA/TensorRT-LLM/discussions/1436)
修复了在转换Qwen 72B INT4-GPTQ模型权重时出现的错误。(#1344)
修复了Medusa在飞行批处理情况下的早期停止和失败问题。(#1449)
增加了对更多NVLink版本的支持,以实现自动并行化。(#1467)
修复了由采样配置默认值引起的断言失败问题。(#1447)
修复了Windows上对nvidia-cudnn-cu12的需求规范。(#1446)
修复了在
gpt_attention_plugin中针对编码-解码模型的MMHA相对位置计算错误。(#1343)
基础设施变更
TensorRT-LLM 的基础 Docker 镜像已更新为
nvcr.io/nvidia/pytorch:24.03-py3。TensorRT-LLM 后端的 Docker 基础镜像已更新为
nvcr.io/nvidia/tritonserver:24.03-py3。依赖的TensorRT版本已更新至10.0.1。
依赖的CUDA版本已更新至12.4.0。
依赖的PyTorch版本已更新至2.2.2。
TensorRT-LLM 发布 0.9.0
公告
TensorRT-LLM 需要 TensorRT 9.3 和 24.02 容器。
主要功能与增强
[重大变更] 默认启用了使用确定性AIR TopP算法的TopP采样优化
[重大变更] 添加了对Gemma嵌入分享的支持
增加了对上下文分块的支持,以便与KV缓存重用一起工作
为Medusa启用了每个序列的不同回退令牌
增加了BART LoRA支持(仅限于Python运行时)
为BART LoRA启用了多LoRA功能
在C++运行时的beam search中添加了对
early_stopping=False的支持为批处理管理器添加了对logits后处理器的支持
增加了对导入和转换HuggingFace Gemma检查点的支持
增加了从HuggingFace加载Gemma的支持
增加了对高级API和统一构建器工作流的自动并行规划器的支持
增加了在不使用OpenMPI的情况下运行
GptSession的支持增加了对Medusa IFB的支持
[实验性] 增加了对FP8 FMHA的支持,请注意性能尚未达到最佳,我们将继续优化
为类似LLaMA的模型增加了更多头大小的支持
NVIDIA Ampere (SM80, SM86), NVIDIA Ada Lovelace (SM89), NVIDIA Hopper (SM90) 都支持头大小 [32, 40, 64, 80, 96, 104, 128, 160, 256]
增加了对OOTB功能的支持
T5
Mixtral 8x7B
基准特性
在
gptManagerBenchmark中添加了模拟的静态批处理为C++基准测试添加了对来自HuggingFace的任意数据集的支持
将百分位延迟报告添加到
gptManagerBenchmark
性能特点
优化了
gptDecoderBatch以支持批量采样为BART、Whisper和NMT系列模型启用了FMHA
移除了路由器张量并行性以提高MoE模型的性能
改进的自定义全归约内核
基础设施特性
TensorRT-LLM 的基础 Docker 镜像已更新为
nvcr.io/nvidia/pytorch:24.02-py3依赖的PyTorch版本已更新至2.2
TensorRT-LLM 后端的 Docker 基础镜像已更新为
nvcr.io/nvidia/tritonserver:24.02-py3依赖的CUDA版本已更新至12.3.2(12.3更新2)
API变更
添加了C++
executorAPI添加了Python绑定
为
executorC++ API的Python绑定添加了高级和多GPU示例添加了C++
executorAPI的文档将Mixtral迁移到高级API并统一了构建器工作流程
[重大变更] 将LLaMA转换检查点脚本从示例目录移动到核心库中
增加了对
LLM()API的支持,以接受由trtllm-build命令构建的引擎[重大变更] 从
gptManagerBenchmark和gptSessionBenchmark中移除了model参数[重大变更] 重构了GPT,采用统一的构建工作流程
[重大变更] 重构了Qwen模型以符合统一的构建工作流程
[重大变更] 从
convert_checkpoint.py脚本中移除了所有与LoRA相关的标志,并将检查点内容移至trtllm-build命令,以便更好地将该功能推广到更多模型。[重大变更] 移除了
use_prompt_tuning标志,从convert_checkpoint.py脚本中移除了选项,并移除了检查点内容,以便更好地将该功能推广到更多模型。请使用trtllm-build --max_prompt_embedding_table_size代替。[重大变更] 将
trtllm-build --world_size标志更改为--auto_parallel标志。该选项仅用于自动并行规划器。[重大变更]
AsyncLLMEngine已被移除。tensorrt_llm.GenerationExecutor类已重构,以支持在应用层使用mpirun显式启动,并接受由mpi4py创建的 MPI 通信器。[重大变更]
examples/server已被移除。[重大变更] 从转换检查点脚本中移除了与LoRA相关的参数。
[重大变更] 简化了Qwen转换检查点脚本。
[重大变更] 重用了
QuantConfig在trtllm-build工具中使用的配置,以支持更广泛的量化功能。增加了对TensorRT-LLM检查点作为模型输入的支持。
在
LLM.generate或LLM.generate_asyncAPI中使用的改进的SamplingConfig,支持束搜索、多种惩罚机制以及更多功能。增加了对
StreamingLLM功能的支持。通过设置LLM(streaming_llm=...)来启用它。
模型更新
增加了对distil-whisper的支持
增加了对HuggingFace StarCoder2的支持
增加了对VILA的支持
增加了对Smaug-72B-v0.1的支持
将BLIP-2示例迁移到
examples/multimodal
限制
openai-triton示例在Windows上不受支持。
已修复的问题
修复了Whisper的仅权重量化错误,确保
encoder_input_len_range不为0。(#992)修复了Python运行时未返回日志概率的问题。(#983)
多GPU修复用于多模态示例。(#1003)
修复了Qwen的
end_id错误问题。(#987)修复了一个无法停止生成的问题。(#1118, #1123)
修复了
examples/mixtral/README.md中的一个错误链接。(#1181)修复了当启用INT8键值缓存和每通道INT8仅权重时,LLaMA2-7B结果不佳的问题。(#967)
修复了从HuggingFace Hub导入Gemma模型时错误的
head_size。(#1148)修复了ChatGLM2-6B在INT8上的构建失败问题。(#1239)
修复了百川文档中错误的相对路径。(#1242)
修复了
ModelRunnerCpp中一个错误的SamplingConfig张量。(#1183)修复了在转换SmoothQuant LLaMA时的错误。(#1267)
修复了
examples/run.py只从--input_file加载一行的问题。修复了
ModelRunnerCpp未正确传输SamplingConfig张量字段的问题。(#1183)
TensorRT-LLM 发布 0.8.0
主要功能与增强
分块上下文支持(参见 docs/source/advanced/gpt-attention.md#chunked-context)
LoRA 对 C++ 运行时的支持(参见 docs/source/lora.md)
Medusa解码支持(参见examples/medusa/README.md)
支持仅限于Ampere或更新版本的GPU上的Python运行时,具有fp16和bf16精度,并且采样配置的
temperature参数应为0
StreamingLLM 对 LLaMA 的支持(参见 docs/source/advanced/gpt-attention.md#streamingllm)
支持批处理管理器从上下文和/或生成阶段返回logits
在Triton后端中包含支持
支持AWQ和GPTQ用于QWEN
支持ReduceScatter插件
支持结合
repetition_penalty和presence_penalty#274支持
frequency_penalty#275开箱即用功能支持:
百川
InternLM
Qwen
BART
LLaMA
支持启用INT4-AWQ以及FP8 KV缓存
支持BF16仅用于权重插件
百川
P-tuning 支持
INT4-AWQ 和 INT4-GPTQ 支持
解码器迭代级别的性能分析改进
为建模添加
masked_select和cumsum函数ChatGLM2-6B / ChatGLM3-6B / ChatGLM2-6B-32K 的平滑量化支持
为Whisper添加仅权重支持 #794,感谢@Eddie-Wang1120的贡献
在NVIDIA V100 GPU上支持FP16 fMHA
注意
某些功能并未为examples文件夹中列出的所有模型启用。
模型更新
Phi-1.5/2.0
Mamba 支持(参见 examples/mamba/README.md)
支持仅限于波束宽度 = 1 和单节点单GPU
Nougat 支持(参见 examples/multimodal/README.md#nougat)
Qwen-VL 支持(参见 examples/qwenvl/README.md)
RoBERTa 支持,感谢 @erenup 的贡献
Skywork模型支持
添加多模态模型的示例(BLIP与OPT或T5,LlaVA)
请参考软件部分以获取支持的模型列表。
API
添加一组用于端到端生成任务的LLM API(参见examples/llm-api/README.md)
[重大变更] 将模型迁移到新的构建工作流,包括LLaMA、Mistral、Mixtral、InternLM、ChatGLM、Falcon、GPT-J、GPT-NeoX、Medusa、MPT、Baichuan和Phi(参见docs/source/new_workflow.md)
[重大变更] 弃用
LayerNorm和RMSNorm插件,并移除相应的构建参数[重大变更] 移除GPT管理器中的可选参数
maxNumSequences
已修复的问题
修复了当启用
--gather_all_token_logits时第一个令牌异常的问题 #639修复启用LoRA的LLaMA构建失败 #673
修复 InternLM SmoothQuant 构建失败 #705
修复 Bloom int8_kv_cache 功能 #741
修复了
gptManagerBenchmark中的崩溃问题 #649修复Blip2构建错误 #695
为
InferenceRequest添加pickle支持 #701修复 Mixtral-8x7b 使用 custom_all_reduce 时的构建失败问题 #825
修复 INT8 GEMM 形状 #935
小错误修复
性能
[重大变更] 将默认的
freeGpuMemoryFraction参数从 0.85 增加到 0.9,以提高吞吐量[重大变更] 默认情况下禁用GPT管理器的
enable_trt_overlap参数波束搜索内核的性能优化
为优化的生成MQA/GQA内核添加bfloat16和分页kv缓存支持
自定义AllReduce插件的性能优化
Top-P采样性能优化
LoRA性能优化
通过引入乒乓缓冲区来优化自定义allreduce性能,以避免额外的同步成本
集成XQA内核用于GPT-J(beamWidth=4)
文档
批处理管理器参数文档更新
添加关于优化TensorRT-LLM性能的最佳实践的文档(参见docs/source/perf_best_practices.md)
添加Falcon AWQ支持的文档(参见examples/falcon/README.md)
更新到
docs/source/new_workflow.md文档更新GPT-J的AWQ INT4仅权重量化文档
添加博客:使用TRT-LLM中的SOTA量化技术加速推理
优化 TensorRT-LLM 后端 README 结构 #133
拼写错误修复 #739
TensorRT-LLM 发布 0.7.1
主要功能与增强
推测解码(预览)
为
GptManager添加了Python绑定添加了一个Python类
ModelRunnerCpp,它封装了C++的gptSession系统提示缓存
启用了仅用于权重的cutlass内核的split-k
XQA内核的FP8 KV缓存支持
支持在Python生成API中使用
StoppingCriteria和LogitsProcessorFHMA 支持分块注意力和分页KV缓存
性能增强包括:
MMHA优化用于MQA和GQA
LoRA优化:cutlass分组GEMM
优化Hopper warp专用内核
优化
AllReduce以在 Falcon 和 GPT-J 上进行并行注意力处理当SM>=75时,为仅权重的cutlass内核启用split-k
添加了工作流文档
模型更新
BART 和 mBART 在编码器-解码器模型中的支持
FairSeq 神经机器翻译 (NMT) 系列
Mixtral-8x7B 模型
支持加载HuggingFace Mixtral模型的权重
OpenAI Whisper
专家混合支持
MPT - Int4 AWQ / SmoothQuant 支持
百川 FP8 量化支持
已修复的问题
修复了在
quantize.py中的分词器使用问题 #288修复了LLaMa与LoRA的错误
修复了LLaMA GPTQ的故障
修复了InferenceRequest问题的Python绑定
修复了CodeLlama SQ准确性问题
已知问题
在问题#149中报告的挂起现象尚未被TensorRT-LLM团队复现。如果这是由TensorRT-LLM中的错误引起的,那么该错误可能存在于该版本中。