trtllm-build#

usage: trtllm-build [-h] [--checkpoint_dir CHECKPOINT_DIR] [--model_config MODEL_CONFIG]
                    [--build_config BUILD_CONFIG] [--model_cls_file MODEL_CLS_FILE]
                    [--model_cls_name MODEL_CLS_NAME] [--output_dir OUTPUT_DIR]
                    [--max_batch_size MAX_BATCH_SIZE] [--max_input_len MAX_INPUT_LEN]
                    [--max_seq_len MAX_SEQ_LEN] [--max_beam_width MAX_BEAM_WIDTH]
                    [--max_num_tokens MAX_NUM_TOKENS] [--opt_num_tokens OPT_NUM_TOKENS]
                    [--max_encoder_input_len MAX_ENCODER_INPUT_LEN]
                    [--max_prompt_embedding_table_size MAX_PROMPT_EMBEDDING_TABLE_SIZE]
                    [--kv_cache_type KV_CACHE_TYPE] [--paged_kv_cache PAGED_KV_CACHE]
                    [--input_timing_cache INPUT_TIMING_CACHE]
                    [--output_timing_cache OUTPUT_TIMING_CACHE]
                    [--profiling_verbosity {layer_names_only,detailed,none}] [--strip_plan]
                    [--weight_sparsity] [--weight_streaming] [--fast_build]
                    [--workers WORKERS]
                    [--log_level {internal_error,error,warning,info,verbose,debug}]
                    [--enable_debug_output] [--visualize_network VISUALIZE_NETWORK]
                    [--dry_run] [--monitor_memory] [--logits_dtype {float16,float32}]
                    [--gather_context_logits] [--gather_generation_logits]
                    [--gather_all_token_logits] [--lora_dir LORA_DIR [LORA_DIR ...]]
                    [--lora_ckpt_source {hf,nemo}]
                    [--lora_target_modules {attn_qkv,attn_q,attn_k,attn_v,attn_dense,mlp_h_to_4h,mlp_4h_to_h,mlp_gate,cross_attn_qkv,cross_attn_q,cross_attn_k,cross_attn_v,cross_attn_dense,moe_h_to_4h,moe_4h_to_h,moe_gate,moe_router,mlp_router,mlp_gate_up} [{attn_qkv,attn_q,attn_k,attn_v,attn_dense,mlp_h_to_4h,mlp_4h_to_h,mlp_gate,cross_attn_qkv,cross_attn_q,cross_attn_k,cross_attn_v,cross_attn_dense,moe_h_to_4h,moe_4h_to_h,moe_gate,moe_router,mlp_router,mlp_gate_up} ...]]
                    [--max_lora_rank MAX_LORA_RANK]
                    [--speculative_decoding_mode {draft_tokens_external,lookahead_decoding,medusa,explicit_draft_tokens,eagle}]
                    [--max_draft_len MAX_DRAFT_LEN] [--auto_parallel AUTO_PARALLEL]
                    [--gpus_per_node GPUS_PER_NODE]
                    [--cluster_key {A100-SXM-80GB,A100-SXM-40GB,A100-PCIe-80GB,A100-PCIe-40GB,H100-SXM,H100-PCIe,H20,H200-SXM,H200-NVL,A40,A30,A10,A10G,L40S,L40,L20,L4,L2}]
                    [--bert_attention_plugin {auto,float16,float32,bfloat16,int32,disable}]
                    [--gpt_attention_plugin {auto,float16,float32,bfloat16,int32,disable}]
                    [--gemm_plugin {auto,float16,float32,bfloat16,int32,fp8,nvfp4,disable}]
                    [--gemm_swiglu_plugin {fp8,disable}]
                    [--fp8_rowwise_gemm_plugin {auto,float16,float32,bfloat16,int32,disable}]
                    [--nccl_plugin {auto,float16,float32,bfloat16,int32,disable}]
                    [--lora_plugin {auto,float16,float32,bfloat16,int32,disable}]
                    [--dora_plugin {enable,disable}]
                    [--moe_plugin {auto,float16,float32,bfloat16,int32,disable}]
                    [--mamba_conv1d_plugin {auto,float16,float32,bfloat16,int32,disable}]
                    [--low_latency_gemm_plugin {fp8,disable}]
                    [--low_latency_gemm_swiglu_plugin {fp8,disable}]
                    [--gemm_allreduce_plugin {float16,bfloat16,disable}]
                    [--context_fmha {enable,disable}]
                    [--bert_context_fmha_fp32_acc {enable,disable}]
                    [--remove_input_padding {enable,disable}]
                    [--norm_quant_fusion {enable,disable}] [--reduce_fusion {enable,disable}]
                    [--user_buffer {enable,disable}] [--tokens_per_block TOKENS_PER_BLOCK]
                    [--use_paged_context_fmha {enable,disable}]
                    [--use_fp8_context_fmha {enable,disable}]
                    [--fuse_fp4_quant {enable,disable}]
                    [--multiple_profiles {enable,disable}] [--paged_state {enable,disable}]
                    [--streamingllm {enable,disable}] [--use_fused_mlp {enable,disable}]
                    [--pp_reduce_scatter {enable,disable}]

命名参数#

--checkpoint_dir

包含 TensorRT-LLM 检查点的目录路径。

--model_config

保存 TensorRT-LLM 检查点配置的文件路径。

--build_config

保存 TensorRT-LLM 构建配置的文件路径。

--model_cls_file

定义自定义 TensorRT-LLM 模型的文件路径。

--model_cls_name

自定义 TensorRT-LLM 模型类名。

--output_dir

保存序列化引擎文件和引擎配置文件的目录路径。

默认值:'engine_outputs'

--max_batch_size

引擎可以调度的最大请求数。

默认值:2048

--max_input_len

一个请求的最大输入长度。

默认值:1024

--max_seq_len, --max_decoder_seq_len

一个请求的最大总长度,包括提示和输出。 如果未指定,则该值从模型配置中推导得出。

--max_beam_width

用于束搜索解码的最大束数。

默认值:1

--max_num_tokens

在每个批次中移除填充后,批处理输入 tokens 的最大数量。 目前,默认情况下会移除输入填充;您可以通过指定 --remove_input_padding disable 显式禁用它。

默认值:8192

--opt_num_tokens

在每个批次中移除填充后,批处理输入 tokens 的最佳数量。它默认为 max_batch_size * max_beam_width,将此值设置为尽可能接近您工作负载上的实际 tokens 数量。请注意,此参数将来可能会被删除。

--max_encoder_input_len

用于 enc-dec 模型的最长编码器输入长度。设置 max_input_len 为 1 以从长度为 1 的 decoder_start_token_id 开始生成。

默认值:1024

--max_prompt_embedding_table_size, --max_multimodal_len

用于提示调整的最大提示嵌入表大小,或用于多模态模型的多模态最大输入大小。 设置大于 0 的值会启用提示调整或多模态输入。

默认值:0

--kv_cache_type

设置 KV 缓存类型(连续、分页或禁用)。对于禁用情况,KV 缓存被禁用,并且仅允许上下文阶段。

--paged_kv_cache

已弃用。 对于基于 Transformer 的模型,启用此选项等同于 --kv_cache_type paged

--input_timing_cache

读取计时缓存的文件路径。 如果该文件不存在,则忽略此选项。

--output_timing_cache

写入计时缓存的文件路径。

默认值:'model.cache'

--profiling_verbosity

可能的值:layer_names_only、detailed、none

生成的 TensorRT 引擎的性能分析详细程度。 设置为 detailed 允许检查策略选择和内核参数。

默认值:'layer_names_only'

--strip_plan

启用从最终 TensorRT 引擎中剥离权重,假设重拟合权重与构建时提供的权重相同。

默认值:False

--weight_sparsity

启用权重稀疏性。

默认值:False

--weight_streaming

启用将权重卸载到 CPU 并在运行时流式加载。

默认值:False

--fast_build

启用用于更快引擎构建的功能。 这可能会导致一些性能下降,并且当前与没有插件的 int8/int4 量化不兼容。

默认值:False

--workers

用于并行构建的工作人员数量。

默认值:1

--log_level

可能的值:internal_error、error、warning、info、verbose、debug

日志记录级别。

默认值:'info'

--enable_debug_output

启用调试输出。

默认值:False

--visualize_network

将 TensorRT 网络导出为 ONNX 的目录路径,以便在引擎构建之前进行调试。

--dry_run

运行整个构建过程,除了实际的引擎构建,用于调试。

默认值:False

--monitor_memory

在引擎构建期间启用内存监视器。

默认值:False

Logits 参数#

--logits_dtype

可能的值:float16、float32

logits 的数据类型。

--gather_context_logits

启用收集上下文 logits。

默认值:False

--gather_generation_logits

启用收集生成 logits。

默认值:False

--gather_all_token_logits

同时启用 gather_context_logitsgather_generation_logits

默认值:False

LoRA 参数#

--lora_dir

LoRA 权重的目录。 如果提供多个目录,则第一个目录用于配置。

--lora_ckpt_source

可能的值:hf、nemo

LoRA 检查点的来源类型。

默认值:'hf'

--lora_target_modules

可能的值:attn_qkv、attn_q、attn_k、attn_v、attn_dense、mlp_h_to_4h、mlp_4h_to_h、mlp_gate、cross_attn_qkv、cross_attn_q、cross_attn_k、cross_attn_v、cross_attn_dense、moe_h_to_4h、moe_4h_to_h、moe_gate、moe_router、mlp_router、mlp_gate_up

应用 LoRA 的目标模块名称。 仅当启用 lora_plugin 时有效。

--max_lora_rank

不同 LoRA 模块的最大 LoRA 秩。 它用于计算 LoRA 插件的工作空间大小。

默认值:64

推测性解码参数#

--speculative_decoding_mode

可能的值:draft_tokens_external、lookahead_decoding、medusa、explicit_draft_tokens、eagle

推测性解码模式。

--max_draft_len

用于推测性解码目标模型的最长草稿 tokens 长度。

默认值:0

自动并行参数#

--auto_parallel

用于自动并行的 MPI 世界大小。

默认值:1

--gpus_per_node

在多节点设置中,每个节点拥有的 GPU 数量。 这是一个集群规范,可以大于/小于世界大小。 此选项仅用于通过 --auto_parallel 指定的自动并行。

默认值:8

--cluster_key

可能的值:A100-SXM-80GB、A100-SXM-40GB、A100-PCIe-80GB、A100-PCIe-40GB、H100-SXM、H100-PCIe、H20、H200-SXM、H200-NVL、A40、A30、A10、A10G、L40S、L40、L20、L4、L2

目标 GPU 类型的唯一名称。 如果未指定,则从当前 GPU 类型推断。 此选项仅用于通过 --auto_parallel 指定的自动并行。

插件配置参数#

--bert_attention_plugin

可选选项: auto, float16, float32, bfloat16, int32, disable

该插件使用高效内核,并为类 BERT 编码器模型的注意力层启用 KV 缓存的原地更新。

默认值: 'auto'

--gpt_attention_plugin

可选选项: auto, float16, float32, bfloat16, int32, disable

该插件使用高效内核,并为类 GPT 解码器模型的注意力层启用 KV 缓存的原地更新。

默认值: 'auto'

--gemm_plugin

可选选项: auto, float16, float32, bfloat16, int32, fp8, nvfp4, disable

GEMM 插件利用 NVIDIA cuBLASLt 来执行 GEMM 操作。注意:它只对非量化的 gemm 操作有效(FP8 除外)。注意:对于 FP8,它还需要检查点中的相同校准。

--gemm_swiglu_plugin

可选选项: fp8, disable

Gated-MLP 中的 GEMM + SwiGLU 融合将两个 Matmul 操作和一个 SwiGLU 操作组合到一个内核中。目前,这仅支持 Hopper 上的 FP8 精度。

默认值: 'disable'

--fp8_rowwise_gemm_plugin

可选选项: auto, float16, float32, bfloat16, int32, disable

用于 fp8 的量化 GEMM,它对激活使用每个 token 的动态缩放,对权重使用每个通道的静态缩放。注意:它还需要检查点中的相同校准。

默认值: 'disable'

--nccl_plugin

可选选项: auto, float16, float32, bfloat16, int32, disable

NCCL 插件包装 NCCL 运算符以支持多 GPU 甚至多节点。

默认值: 'auto'

--lora_plugin

可选选项: auto, float16, float32, bfloat16, int32, disable

启用 LoRA。

默认值: 'disable'

--dora_plugin

可选选项: enable, disable

启用 DoRA。

默认值: 'disable'

--moe_plugin

可选选项: auto, float16, float32, bfloat16, int32, disable

启用一些自定义内核以加速 MoE 模型的 MoE 层。

默认值: 'auto'

--mamba_conv1d_plugin

可选选项: auto, float16, float32, bfloat16, int32, disable

启用自定义内核以加速 Mamba 的 conv1d 运算符。

默认值: 'auto'

--low_latency_gemm_plugin

可选选项: fp8, disable

专为低延迟场景优化的 GEMM 插件。

默认值: 'disable'

--low_latency_gemm_swiglu_plugin

可选选项: fp8, disable

专为低延迟场景优化的 GEMM + SwiGLU 融合插件。

默认值: 'disable'

--gemm_allreduce_plugin

可选选项: float16, bfloat16, disable

GEMM + AllReduce 内核融合插件。

默认值: 'disable'

--context_fmha

可选选项: enable, disable

在上下文阶段启用融合多头注意力,将触发使用单个内核执行 MHA/MQA/GQA 块的内核。

默认值: 'enable'

--bert_context_fmha_fp32_acc

可选选项: enable, disable

为 bert_attention_plugin 中的上下文 FMHA 启用 FP32 累加器。 如果禁用,则使用 FP16,预计性能更好,但准确性可能更差。

默认值: 'disable'

--remove_input_padding

可选选项: enable, disable

将不同的 token 打包在一起,从而减少计算量和内存消耗。

默认值: 'enable'

--norm_quant_fusion

可选选项: enable, disable

将 LayerNorm 和量化内核融合到单个内核中,从而提高端到端性能。

默认值: 'disable'

--reduce_fusion

可选选项: enable, disable

将 AllReduce 后的 ResidualAdd 和 LayerNorm 内核融合到单个内核中,从而提高端到端性能。

默认值: 'disable'

--user_buffer

可选选项: enable, disable

消除通信内核中从本地缓冲区到共享缓冲区的额外复制,从而提高端到端性能。此功能必须与 –reduce_fusion enable 一起启用,并且目前仅支持 FP8 LLAMA 模型。

默认值: 'disable'

--tokens_per_block

定义每个分页 kv 缓存块中包含多少个 token。

默认值: 32

--use_paged_context_fmha

可选选项: enable, disable

允许高级功能,如 KV 缓存重用和分块上下文。

默认值: 'enable'

--use_fp8_context_fmha

可选选项: enable, disable

当 FP8 量化被激活时,可以通过启用 FP8 Context FMHA 来进一步加速注意力机制

默认值: 'enable'

--fuse_fp4_quant

可选选项: enable, disable

是否将 FP4 量化融合到注意力内核中。

默认值: 'disable'

--multiple_profiles

可选选项: enable, disable

在构建的引擎中启用多个 TensorRT 优化配置文件,当禁用 GEMM 插件时,这将有利于性能,因为更多的优化配置文件有助于 TensorRT 有更多机会选择更好的内核。 注意:此功能会增加引擎构建时间,但预计不会有其他不利影响。

默认值: 'disable'

--paged_state

可选选项: enable, disable

启用分页状态,这有助于更有效地管理 RNN 状态的内存。

默认值: 'enable'

--streamingllm

可选选项: enable, disable

启用 [StreamingLLM](https://arxiv.org/abs/2309.17453),它使用窗口注意力机制在长文本上执行高效且稳定的 LLM。

默认值: 'disable'

--use_fused_mlp

可选选项: enable, disable

在 Gated-MLP 中启用水平融合,该融合将两个 Matmul 操作组合成一个操作,然后是一个单独的 SwiGLU 内核。

默认值: 'enable'

--pp_reduce_scatter

可选选项: enable, disable

启用具有 ReduceScatter + AllGather 的流水线并行优化,针对大型 MoE 模型。

默认值: 'disable'