参数 | 说明 | 默认值 |
---|---|---|
-m vllm.entrypoints.openai.api_server | 使用vLLM的OpenAI API服务器入口 | 无 |
-h | 显示帮助信息 | 无 |
--model MODEL | Hugging Face模型的名称或路径 | "facebook/opt-125m" |
--tokenizer TOKENIZER | Hugging Face分词器的名称或路径,如果未指定则使用模型名称或路径 | 无 |
--skip-tokenizer-init | 跳过分词器和反分词器的初始化 | 无 |
--revision REVISION | 特定模型版本的使用,可以是分支名称、标签名称或提交ID | 使用默认版本 |
--code-revision CODE_REVISION | 模型代码的特定修订版本,可以是分支名称、标签名称或提交ID | 使用默认版本 |
--tokenizer-revision TOKENIZER_REVISION | 分词器的修订版本,可以是分支名称、标签名称或提交ID | 使用默认版本 |
--tokenizer-mode {auto,slow} | 分词器模式,"auto"使用快速分词器(如果可用),"slow"始终使用慢速分词器 | "auto" |
--trust-remote-code | 信任来自Hugging Face的远程代码 | 无 |
--download-dir DOWNLOAD_DIR | 权重下载和加载的目录,默认为Hugging Face的默认缓存目录 | 无 |
--load-format {auto,pt,safetensors,npcache,dummy,tensorizer,bitsandbytes} | 模型权重加载的格式 | "auto" |
--dtype {auto,half,float16,bfloat16,float,float32} | 模型权重和激活的数据类型 | "auto" |
--kv-cache-dtype {auto,fp8,fp8_e5m2,fp8_e4m3} | KV缓存存储的数据类型,如果"auto",将使用模型数据类型 | "auto" |
--quantization-param-path QUANTIZATION_PARAM_PATH | 包含KV缓存缩放因子的JSON文件路径 | 无 |
--max-model-len MAX_MODEL_LEN | 模型上下文长度,如果未指定,将自动从模型配置中推导 | 无 |
--guided-decoding-backend {outlines,lm-format-enforcer} | 用于引导解码的引擎,支持outlines-dev/outlines和noamgat/lm-format-enforcer | "outlines" |
--distributed-executor-backend {ray,mp} | 分布式服务的后端,多GPU时自动设置为"ray"(如果安装)或"mp"(多进程) | 无 |
--worker-use-ray | 已弃用,请使用--distributed-executor-backend=ray | 无 |
--pipeline-parallel-size, -pp | 流水线阶段的数量 | 1 |
--tensor-parallel-size, -tp | 张量并行副本的数量 | 1 |
--max-parallel-loading-workers MAX_PARALLEL_LOADING_WORKERS | 并行加载模型时使用的多个批次,以避免使用张量并行和大型模型时的RAM OOM | 无 |
--ray-workers-use-nsight | 如果指定,使用nsight分析Ray工作进程 | 无 |
--block-size {8,16,32} | 连续令牌块的令牌块大小 | 16 |
--enable-prefix-caching | 启用自动前缀缓存 | 无 |
--disable-sliding-window | 禁用滑动窗口,限制为滑动窗口大小 | 无 |
--use-v2-block-manager | 使用BlockSpaceManagerV2 | 无 |
--num-lookahead-slots NUM_LOOKAHEAD_SLOTS | 推测性解码的实验性调度配置,将来将被推测性配置替代 | 0 |
--seed SEED | 操作的随机种子 | 0 |
--swap-space SWAP_SPACE | 每个GPU的CPU交换空间大小(GiB) | 4 |
--gpu-memory-utilization GPU_MEMORY_UTILIZATION | 用于模型执行器的GPU内存分数,范围0到1 | 0.9 |
--num-gpu-blocks-override NUM_GPU_BLOCKS_OVERRIDE | 忽略GPU分析结果并使用指定数量的GPU块,用于测试抢占 | 无 |
--max-num-batched-tokens MAX_NUM_BATCHED_TOKENS | 每次迭代中批量令牌的最大数量 | 无 |
--max-num-seqs MAX_NUM_SEQS | 每次迭代中序列的最大数量 | 256 |
--max-logprobs MAX_LOGPROBS | SamplingParams中指定的返回logprobs的最大数量 | 20 |
--disable-log-stats | 禁用日志统计 | 无 |
--quantization, -q {aqlm,awq,deepspeedfp,fp8,marlin,gptq_marlin_24,gptq_marlin,gptq,squeezellm,compressed-tensors,bitsandbytes, None} | 权重量化的方法,如果为None,则检查模型配置文件中的quantization_config属性,如果也为None,则假设模型权重未量化,并使用dtype确定权重的数据类型 | None |
--rope-scaling ROPE_SCALING | RoPE缩放配置,JSON格式,例如{“type”:“dynamic”,“factor”:2.0} | 无 |
--rope-theta ROPE_THETA | RoPE theta,与rope_scaling一起使用,在某些情况下,更改RoPE theta可以提高缩放模型的性能 | 无 |
--enforce-eager | 始终使用急切模式PyTorch,如果为False,则在混合模式下使用急切模式和CUDA图以获得最大性能和灵活性 | 无 |
--max-context-len-to-capture MAX_CONTEXT_LEN_TO_CAPTURE | CUDA图覆盖的最大上下文长度,当序列的上下文长度大于这个值时,回退到急切模式 | 已弃用 |
--max-seq-len-to-capture MAX_SEQ_LEN_TO_CAPTURE | CUDA图覆盖的最大序列长度,当序列的上下文长度大于这个值时,回退到急切模式 | 8192 |
--disable-custom-all-reduce | 查看ParallelConfig | 无 |
--tokenizer-pool-size TOKENIZER_POOL_SIZE | 用于异步分词的分词器池的大小,如果为0,则使用同步分词 | 0 |
--tokenizer-pool-type TOKENIZER_POOL_TYPE | 用于异步分词的分词器池的类型,如果tokenizer_pool_size为0则忽略 | “ray” |
--tokenizer-pool-extra-config TOKENIZER_POOL_EXTRA_CONFIG | 分词器池的额外配置,应为JSON字符串并解析为字典,如果tokenizer_pool_size为0则忽略 | 无 |
--enable-lora | 如果为True,启用LoRA适配器处理 | 无 |
--max-loras MAX_LORAS | 单个批次中LoRAs的最大数量 | 1 |
--max-lora-rank MAX_LORA_RANK | 最大LoRA秩 | 16 |
--lora-extra-vocab-size LORA_EXTRA_VOCAB_SIZE | LoRA适配器中可以存在的额外词汇表的最大大小(添加到基础模型词汇表中) | 256 |
--lora-dtype {auto,float16,bfloat16,float32} | LoRA的数据类型,如果auto,则默认为基础模型的数据类型 | “auto” |
--long-lora-scaling-factors LONG_LORA_SCALING_FACTORS | 指定多个缩放因子(可以与基础模型的缩放因子不同 - 例如Long LoRA),允许同时使用那些缩放因子训练的多个LoRA适配器 | 无 |
--max-cpu-loras MAX_CPU_LORAS | 在CPU内存中存储的LoRAs的最大数量,必须大于等于max_num_seqs,默认为max_num_seqs | 无 |
--fully-sharded-loras | 默认情况下,只有一半的LoRA计算与张量并行分片,启用此选项将使用完全分片层,在高序列长度、最大秩或张量并行大小时,这可能更快 | 无 |
--device {auto,cuda,neuron,cpu,tpu,xpu} | vLLM执行的设备类型 | “auto” |
--image-input-type {pixel_values,image_features} | 传递给vLLM的图像输入类型 | 无 |
--image-token-id IMAGE_TOKEN_ID | 图像标记的输入ID | 无 |
--image-input-shape IMAGE_INPUT_SHAPE | 给定输入类型的最大图像输入形状(对内存占用最不利),仅用于vLLM的profile_run | 无 |
--image-feature-size IMAGE_FEATURE_SIZE | 沿上下文维度的图像特征大小 | 无 |
--image-processor IMAGE_PROCESSOR | 使用的Hugging Face图像处理器的名称或路径,如果未指定则使用模型名称或路径 | 无 |
--image-processor-revision IMAGE_PROCESSOR_REVISION | Hugging Face图像处理器版本的修订版本,可以是分支名称、标签名称或提交ID | 使用默认版本 |
SamplingParams()重要传参
● temperature:temperature参数是文本生成模型中用于控制生成文本的随机性和创造性的一个重要超参数。其值越大,生成的文本越具有随机性和创造性;值越小,生成的文本越具有确定性和可预测性。通常情况下,temperature参数的值设置在0.1到1.0之间。
● top_k:表示模型预测的前k个最可能的下一个词。在生成文本时,模型会根据当前上下文和top_k参数的值,从候选词中选择出最可能的k个词作为下一个词的候选集合。
● max_tokens:表示模型生成的最大长度。在生成文本时,如果生成的文本长度超过了max_tokens的值,那么模型将会停止生成。
● stop:生成模型停止生成的符号。
LLM()中重要传参
● model:LLM模型路径。
● tensor_parallel_size:并行处理的大小。
● gpu_memory_utilization:默认为0.9, cpu_swap_space默认4个G。若gpu_memory_utilization参数过小(分配的内存大小低于模型使用内存)或者过大(接近1.0)时,代码会崩溃。
● request_rate:请求速率
吞吐量和时延调优
改善 vLLM 的吞吐量(throughput)和时延(latency),可以调整以下几个关键参数和设置 :
- max_num_seqs(最大并发序列数) : 控制并发处理的序列数量。提高此值可以增加吞吐量,但可能会增加显存的压力和响应延迟。
- batch_size(批处理大小) : 控制每次推理时处理的输入数量。较大的 batch_size 通常可以提高吞吐量,但也可能增加首 token 的延迟。
- max_input_length 和 max_output_length(最大输入和输出长度) : 限制输入和输出序列的最大长度。较长的序列会增加计算时间,影响时延和吞吐量。
- num_beams(Beam Search 宽度) :Beam Search 的宽度会影响生成过程的复杂度。较大的 num_beams 会增加生成时间。
精度调优
- temperature(温度系数) : 控制模型输出的多样性。较低的温度会使模型生成更加确定性的回答,而较高的温度则会增加生成结果的多样性。 如果回答太随机且不准确,可以尝试降低 temperature(接近 0),使模型更加倾向于生成高概率的词汇,从而提高精度。
- top_k(前 K 个候选词) : 控制生成时从概率最高的前 K 个候选词中进行选择。较小的 top_k 值会限制生成结果,使其更精确,而较大的值则允许更多的词汇参与生成。
- top_p(核采样,p值) : 核采样控制从概率分布中选择前 P% 的词汇进行采样。较低的 top_p 值会限制生成结果的多样性,使模型更加专注于高概率的选项。 若回答不够精确,可以降低 top_p,如设置为 0.9 或更小值,以优先选择概率较高的词汇。
- num_beams(Beam Search 宽度) : Beam Search 在生成过程中通过探索多个候选路径来增加输出质量。增大 num_beams 可以提高生成的精确性,但会增加计算复杂度和时延。 如果模型生成效果不理想,可以增加 num_beams,如设置为 3 或 5,以扩展搜索空间,提升生成效果。
- max_length 和 min_length(输出长度控制) :限制生成文本的长度,避免回答过短或过长影响结果质量。
- repetition_penalty(重复惩罚) : 防止模型生成重复的词汇或短语。增大该值可以减少重复,从而提高回答质量 。 如果模型回答中出现重复,可以提高 repetition_penalty,如设置为 1.2 或 1.5,惩罚重复词汇的生成,促使生成更多新内容。
- length_penalty(长度惩罚) : 对较长的生成序列施加惩罚,避免模型生成过长的答案。 如果模型生成过长且质量不高,可以适当增加 length_penalty,如设置为 1.0 或 1.5,抑制冗长回答,提升内容精度