八卡A100-40G 运行Qwen2.5-7B效果检验

一、目标:

我有一台机器,有八颗A100-40G可用

拟部署Qwen2.5-7B,

使用vllm部署怎么才能尽可能的发挥性能,并支持尽可能多的吞吐量。

二、vllm的一些参数的说明和比较

1)参数 --task auto 和 --task generate 会导致哪些差别

--task 有如下参数

auto :自动选择模型支持的任务类型。

generate :用于文本生成任务。

embedding 或 embed:将输入文本转换为嵌入向量。

classify:用于文本分类任务。

score:用于计算句子对的相似性分数

reward : 用于强化学习或奖励建模任务,例如评估生成文本的质量。

transcription :用于语音转录任务。

--task auto:在模型仅支持一个任务时,性能与显式指定任务类似。但如果模型支持多种任务,可能会因为自动选择任务而引入额外的判断开销。

--task generate:显式指定任务可以避免自动选择任务的开销,通常在生成任务场景下表现更优

综上

我们选用参数

--task generate

2)--tokenizer

的使用

Tokenizer 是自然语言处理(NLP)中用于将文本数据转换为模型可理解的输入格式的重要工具  。

它主要负责以下任务:

2.1)  分词(Tokenization):将输入文本拆分为一个个的 token(词元)。  

2.2)  编码(Encoding):将分词后的 token 转换为模型能够理解的数字 ID  。  

2.3)  解码(Decoding):将模型生成的数字 ID 转换回文本  。  

为什么需要指定 Tokenizer? 不同的模型可能需要不同的 Tokenizer,因为它们的词汇表(Vocabulary)和分词规则可能不同  。通过指定 --tokenizer,可以确保使用与模型匹配的 Tokenizer,从而提高模型的性能和准确性

--tokenizer  /path/to/token

3)

--trust-remote-code

信任来自 huggingface 的远程代码。

我们需要这个

故增加

--trust-remote-code

4)--load-format

可选值:auto, pt, safetensors, npcache, dummy, tensorizer, sharded_state, gguf, bitsandbytes, mistral, runai_streamer

让 vLLM 使用 GGUF 格式加载模型,需要显式指定 --load-format gguf 参数

我原来使用vllm启动gguf有的时候遇到报:找不到模型权重,后面可以加这个参数再试试。

5)--dtype

可选值:auto, half, float16, bfloat16, float, float32

模型权重和激活的数据类型。

“auto” 将为 FP32 和 FP16 模型使用 FP16 精度,为 BF16 模型使用 BF16 精度。

“half” 用于 FP16。推荐用于 AWQ 量化。

“float16” 与 “half” 相同。

“bfloat16” 用于在精度和范围之间取得平衡。

“float” 是 FP32 精度的简写。

“float32” 用于 FP32 精度。

拟用默认值 auto

6)

--max-model-len

模型上下文长度。如果未指定,将自动从模型配置中派生。

拟设置

--max-model-len 128000

这是 Qwen2.5-7B 模型支持的最大长度


 

7)--tensor-parallel-size

张量并行将模型的张量(如矩阵)分割成更小的块,分配到多个 GPU 上并行计算。

在单台机器上,一般建议有几个卡就设置这个数为几,故设置为8

--tensor-parallel-size  8


 

8)  --pipeline-parallel-size

管道并行(通过 --pipeline-parallel-size 参数设置)是将模型的不同层分配到不同的 GPU 上进行计算

一般用于多组机器,分层计算。


 

9)--max-parallel-loading-workers

以多个批次顺序加载模型,以避免在使用张量并行和大型模型时出现 RAM OOM。

默认值:如果不指定该参数,vLLM 会使用默认值(通常是 1 或 2,具体取决于 vLLM 的版本)

这个参数表示一次最多加载几个张量。如果你的主机内存较大(如 64GB 或更高),可以设置为 4 或 8。

如果主机内存较小(如 32GB 或更低),建议设置为 2 或 4。

我们机器一般内存都比较大,这个参数拟设置为4.

--max-parallel-loading-workers 4

10)--block-size

可选值:8, 16, 32, 64, 128

不同的块大小会对显存占用、计算效率和通信开销产生影响。

参数的作用

张量分割:

在张量并行中,模型的权重和激活函数会被分割成多个块(block),然后分配到不同的 GPU 上。

--block-size 指定了每个块的大小,单位是元素数量(通常是 token 的数量)。

显存管理:

较小的块大小(如 8 或 16)可以减少单个 GPU 的显存占用,但可能会增加通信开销。

较大的块大小(如 64 或 128)可以减少通信开销,但可能会增加单个 GPU 的显存占用。

性能优化:

通过调整块大小,可以在显存占用和通信开销之间找到平衡,从而优化推理性能。

可选值

--block-size 的可选值通常为 2 的幂,常见的值包括:

8

16

32

64

128

不同块大小的影响

较小的块大小(如 8 或 16):

优点:

更低的显存占用,适合显存较小的 GPU。

更灵活的资源分配,适合动态调整 GPU 资源的场景。

缺点:

增加通信开销,因为需要在 GPU 之间频繁交换数据。

可能会降低计算效率,因为每个 GPU 上的计算负载较小。

较大的块大小(如 64 或 128):

优点:

减少通信开销,因为每个块包含更多的数据,减少了通信次数。

提高计算效率,因为每个 GPU 上的计算负载较大。

缺点:

显存占用较高,可能需要更多的 GPU 资源。

如果显存不足,可能会导致显存溢出(OOM)。

如何选择合适的块大小

选择合适的 --block-size 需要考虑以下因素:

显存容量:

如果你的 GPU 显存较大(如 A100-40G),可以选择较大的块大小(如 64 或 128)。

如果显存较小(如 16GB),建议选择较小的块大小(如 16 或 32)。

模型大小:

对于较大的模型(如 7B 或更大),较大的块大小可以减少通信开销。

对于较小的模型,较小的块大小可以更灵活地利用资源。

推理需求:

如果需要高吞吐量,较大的块大小可以提高计算效率。

如果需要低延迟,较小的块大小可以减少显存占用。

拟设置

--block-size  128

11)--swap-space

每个 GPU 的 CPU 交换空间大小 (GiB)。

默认值:4

交换空间可以避免显存溢出,但频繁使用交换空间可能会导致性能下降。

先用默认值

12)--cpu-offload-gb

要卸载到 CPU 的空间(GiB),每个 GPU。默认为 0,表示不卸载。直观地看,此参数可以被视为增加 GPU 内存大小的虚拟方式。例如,如果您有一个 24 GB 的 GPU 并将其设置为 10,实际上您可以将其视为 34 GB 的 GPU。

先用默认值


 

13)--gpu-memory-utilization

用于模型执行器的 GPU 内存 比率,范围可以从 0 到 1。例如,值为 0.6 意味着 60% 的 GPU 内存利用率。

剩下的GPU留给其他进程使用。

默认值:0.9

先用默认值


 

14)--max-num-batched-tokens

每次迭代的最大批处理令牌数。

较小的批处理大小可以减少单次推理的延迟,适合对实时性要求较高的场景

默认值:2048

拟设置为 2048*8

--max-num-batched-tokens 16384  

15)--max-num-partial-prefills

对于分块预填充,并发部分预填充的最大数量。默认为 1

默认值为 1,表示每次只处理一个块。如果将该值设置得更高(例如 2 或 4),可以提高吞吐量,但可能会增加延迟,因为更多的块需要同时占用显存

默认值:1

该参数通常与 --max-long-partial-prefills 和 --long-prefill-token-threshold 配合使用。例如,--max-long-partial-prefills 用于控制长序列的并发预填充数量,而 --long-prefill-token-threshold 用于定义“长序列”的长度

先用默认值

14)--max-long-partial-prefills

对于分块预填充,将并发预填充的最大提示数(超过 –long-prefill-token-threshold)。将此值设置小于 –max-num-partial-prefills 将允许较短的提示在某些情况下跳过较长提示之前的队列 。默认为 1。

默认值:1

短的提示词优先。

15)--long-prefill-token-threshold

对于分块预填充,如果提示长度超过此令牌数,则请求被认为是长的。默认为模型上下文长度的 4%。

例如,如果模型的上下文长度为 2048 个令牌,则长序列的阈值为 82 个令牌(2048 × 4%)

你可以强制--long-prefill-token-threshold 100 则 长序列的阀值为 100个令牌

先用默认值

16)--max-num-seqs

每次迭代的最大序列数。

在推理过程中,vLLM 会将输入的文本分割成多个序列(sequence),每个序列对应一个推理请求。

--max-num-seqs 参数限制了每次迭代中可以同时处理的最大序列数。

增大 --max-num-seqs 的值可以提高系统的吞吐量,因为更多的序列可以并行处理。

例如,在多 GPU 环境下,适当增加该值可以更好地利用 GPU 资源。

影响延迟:

如果设置得过高,可能会导致显存占用增加,甚至出现显存不足(OOM)。

同时,过多的并发序列可能会增加平均延迟,因为每个序列的处理时间会变长。

默认值:

默认值为 256。但在某些场景下,根据模型大小和硬件配置,可能需要调整该值

拟设置为 512

--max-num-seqs 512

17)--max-logprobs

要返回的最大 log probs 数,logprobs 在 SamplingParams 中指定。

默认值:20

这些对数概率表示在给定上下文下,每个 token 出现的可能性,帮助用户评估模型的置信度

默认值为 20,表示每个 token 位置返回最多 20 个最可能的 token 及其对数概率

没看懂,拟用默认值

18)

--disable-log-stats

禁用日志统计信息。

拟用默认值

19)--quantization, -q

可选值:aqlm, awq, deepspeedfp, tpu_int8, fp8, ptpc_fp8, fbgemm_fp8, modelopt, marlin, gguf, gptq_marlin_24, gptq_marlin, awq_marlin, gptq, compressed-tensors, bitsandbytes, qqq, hqq, experts_int8, neuron_quant, ipex, quark, moe_wna16, None

默认值 None

    19.1). aqlm  

    - Asymmetric Quantization for Language Models:一种非对称量化方法,适用于语言模型。

    19.2). awq  

    - Adaptive Weight Quantization:自适应权重量化,动态调整量化参数以优化性能。

    19.3). deepspeedfp  

    - DeepSpeed FP:使用 DeepSpeed 的量化方法,通常结合浮点计算优化推理。

    19.4). tpu_int8  

    - TPU INT8:针对 Google TPU 的 INT8 量化,优化在 TPU 上的推理。

    19.5). fp8  

    - FP8:使用 8 位浮点数进行量化,适用于某些硬件加速器。

    19.6). ptpc_fp8  

    - PTPC FP8:特定于 PyTorch 的 FP8 量化方法。

    19.7). fbgemm_fp8  

    - FBGEMM FP8:使用 Facebook 的 FBGEMM 库进行 FP8 量化。

    19.8). modelopt  

    - Model Optimization:一种通用的模型优化方法,可能结合多种量化技术。

    19.9). marlin  

    - Marlin:一种高效的量化方法,通常结合特定硬件优化。

    19.10). gguf  

        - GGUF:一种高效的量化格式,支持多种量化类型,适用于通用硬件。

    19.11). gptq_marlin_24  

        - GPTQ Marlin 24:结合 GPTQ(GPT Quantization)和 Marlin 的量化方法,优化 24 位精度。

    19.12). gptq_marlin  

        - GPTQ Marlin:结合 GPTQ 和 Marlin 的量化方法。

    19.13). awq_marlin  

        - AWQ Marlin:结合自适应权重量化和 Marlin 的量化方法。

    19.14). gptq  

        - GPT Quantization:一种针对 GPT 模型的量化方法。

    19.15). compressed-tensors  

        - Compressed Tensors:使用压缩技术减少张量大小。

    19.16). bitsandbytes  

        - Bits and Bytes:一种低精度量化方法,通常结合 8 位或更低精度。

    19.17). qqq  

        - QQQ:一种特定的量化方法,可能用于特定硬件优化。

    19.18). hqq  

        - HQQ:另一种量化方法,可能用于特定硬件优化。

    19.19). experts_int8  

        - Experts INT8:针对特定专家模型的 INT8 量化。

    19.20). neuron_quant  

        - Neuron Quantization:针对特定硬件(如 AWS Neuron)的量化方法。

    19.21). ipex  

        - Intel Optimization for PyTorch:使用 Intel 的优化技术进行量化。

    19.22). quark  

        - Quark:一种特定的量化方法,可能用于特定硬件优化。

    19.23). moe_wna16  

        - Mixture of Experts Weighted Normalized 16:结合混合专家模型的量化方法。

    19.24). None  

        - 无量化:不进行量化,使用原始浮点精度。

       

拟用默认值。

20)--enforce-eager 参数用于控制是否始终使用 PyTorch 的 Eager 模式。Eager 模式是一种即时执行模式,其中操作会立即计算结果,而不是构建静态计算图。

Eager 模式:

在 Eager 模式下,PyTorch 会立即执行操作并返回结果。

这种模式的优点是调试方便,代码更直观,但可能会牺牲一些性能。

CUDA 图(CUDA Graph):

CUDA 图是一种优化技术,通过将多个操作打包成一个图来减少内核启动开销和同步时间。

使用 CUDA 图可以显著提高推理性能,但需要更复杂的设置和调试。

参数行为

--enforce-eager True:

始终使用 Eager 模式,不使用 CUDA 图。

适用于调试和开发阶段,因为 Eager 模式更直观,调试更方便。

性能可能不如混合模式(Eager + CUDA 图)。

--enforce-eager False(默认值):

混合使用 Eager 模式和 CUDA 图。

对于较短的序列,使用 CUDA 图以优化性能。

对于较长的序列,回退到 Eager 模式以避免 CUDA 图的限制。

拟用默认值

21)--max-seq-len-to-capture

CUDA 图覆盖的最大序列长度。当序列的上下文长度大于此值时,我们将回退到 eager 模式。此外,对于编码器-解码器模型,如果编码器输入的序列长度大于此值,我们将回退到 eager 模式。

默认值:8192

拟用默认值

21)下面多个是关于模型微调的,我不会,拟用默认值。

--enable-lora

如果为 True,则启用 LoRA 适配器的处理。

--enable-lora-bias

如果为 True,则为 LoRA 适配器启用偏置。

--max-loras

单个批次中 LoRA 的最大数量。

默认值:1

--max-lora-rank

最大 LoRA 秩。

默认值:16

--lora-extra-vocab-size

LoRA 适配器中可能存在的额外词汇的最大大小(添加到基本模型词汇表)。

默认值:256

--lora-dtype

可选值:auto, float16, bfloat16

LoRA 的数据类型。如果为 auto,将默认为基本模型 dtype。

默认值:“auto”

--long-lora-scaling-factors

指定多个缩放因子(可以与基本模型缩放因子不同 - 请参阅例如 Long LoRA),以允许多个使用这些缩放因子训练的 LoRA 适配器同时使用。如果未指定,则仅允许使用基本模型缩放因子训练的适配器。

--max-cpu-loras

要存储在 CPU 内存中的 LoRA 的最大数量。必须 >= max_loras。默认为 max_loras。

--fully-sharded-loras

默认情况下,只有一半的 LoRA 计算使用张量并行进行分片。启用此选项将使用完全分片层。在高序列长度、最大秩或张量并行大小下,这可能更快。

22)下面三个是关于预定义提示词的,咱们应该不用,拟用默认值

--enable-prompt-adapter

如果为 True,则启用 PromptAdapters 的处理。

--max-prompt-adapters

批次中 PromptAdapters 的最大数量。

默认值:1

--max-prompt-adapter-token

PromptAdapters 令牌的最大数量

默认值:0

23) --device 参数的可选值及其含义:

auto(默认值):

自动检测可用的硬件设备,并选择最适合的设备进行推理。

如果检测到 GPU,则使用 GPU(cuda);如果没有 GPU,则回退到 CPU。

cuda:

强制使用 NVIDIA GPU(通过 CUDA)进行推理。

适用于大多数深度学习任务,尤其是需要高性能计算的场景。

cpu:

强制使用 CPU 进行推理。

适用于没有 GPU 或其他加速硬件的环境,或者在 CPU 上进行推理的场景。

tpu:

强制使用 Google TPU 进行推理。

适用于 Google Cloud 或其他支持 TPU 的环境。

openvino:

强制使用 Intel OpenVINO 进行推理。

适用于 Intel 硬件平台,尤其是需要优化推理性能的场景。

neuron:

强制使用 AWS Inferentia(通过 Neuron SDK)进行推理。

适用于 AWS 云环境中的推理任务。

hpu:

强制使用 Habana Gaudi(通过 HPU)进行推理。

适用于 Habana Gaudi 硬件平台。

xpu:

强制使用 Intel XPU 进行推理。

适用于 Intel XPU 硬件平台

拟指定使用 GPU计算

--device cuda

24)

--num-scheduler-steps

每个调度器调用的最大前向步骤数。

默认值:1

控制前向步骤数量:

在推理过程中,模型会逐步生成输出。每个前向步骤通常对应于生成一个或多个输出令牌(token)。

--num-scheduler-steps 参数限制了每次调度器调用时允许执行的最大前向步骤数。

优化调度策略:

调度器负责管理模型的推理过程,包括何时生成新的输出、何时处理新的输入等。

通过限制每个调度器调用的前向步骤数,可以更好地控制推理过程的粒度,从而优化性能和资源利用。

灵活性和性能平衡:

较小的值(如 1)表示每次调度器调用只执行一个前向步骤,这可以提高调度的灵活性,但可能会增加调度开销。

较大的值(如 4 或 8)表示每次调度器调用可以执行多个前向步骤,这可以减少调度开销,但可能会降低调度的灵活性。

默认值:1

含义:每次调度器调用时,最多执行一个前向步骤。

优点:

提高调度的灵活性,适合动态调整推理过程。

适合需要频繁交互的场景,如实时对话系统。

缺点:

增加调度开销,可能会降低整体推理速度。

参数的影响

性能:

较大的值可以减少调度开销,从而提高推理速度。

较小的值可以提高调度的灵活性,但可能会增加调度开销。

资源利用:

较大的值可以更好地利用 GPU 资源,减少显存碎片化。

较小的值可以更灵活地处理动态输入,但可能会增加显存占用。

参数调整建议

吞吐量优先:

如果应用场景对吞吐量要求较高,可以尝试增加 --num-scheduler-steps 的值(如 4 或 8)

拟设置为4

 --num-scheduler-steps 4

25)草稿模型推测解码,我不会,拟用默认值

推测解码是一种技术,通过使用一个轻量级的“草稿模型”来提前预测可能的输出,从而减少计算开销并提高推理速度

--speculative-model

要在推测解码中使用的草稿模型的名称。

--speculative-model-quantization

可选值:aqlm, awq, deepspeedfp, tpu_int8, fp8, ptpc_fp8, fbgemm_fp8, modelopt, marlin, gguf, gptq_marlin_24, gptq_marlin, awq_marlin, gptq, compressed-tensors, bitsandbytes, qqq, hqq, experts_int8, neuron_quant, ipex, quark, moe_wna16, None


 

--num-speculative-tokens

在推测解码中从草稿模型中采样的推测令牌数。

--speculative-disable-mqa-scorer

如果设置为 True,则 MQA scorer 将在推测中禁用,并回退到批次扩展

--speculative-draft-tensor-parallel-size, -spec-draft-tp

推测解码中草稿模型的张量并行副本数。

--speculative-max-model-len

草稿模型支持的最大序列长度。超过此长度的序列将跳过推测。

--speculative-disable-by-batch-size

如果入队请求数大于此值,则禁用新传入请求的推测解码。

--ngram-prompt-lookup-max

推测解码中 ngram 提示查找的最大窗口大小。

--ngram-prompt-lookup-min

推测解码中 ngram 提示查找的最小窗口大小。

--spec-decoding-acceptance-method

可选值:rejection_sampler, typical_acceptance_sampler

指定在推测解码中草稿令牌验证期间使用的接受方法。支持两种类型的接受例程:1) RejectionSampler,它不允许更改草稿令牌的接受率,2) TypicalAcceptanceSampler,它是可配置的,允许更高的接受率,但代价是质量较低,反之亦然。

默认值:“rejection_sampler”

--typical-acceptance-sampler-posterior-threshold

设置令牌被接受的后验概率的下限阈值。此阈值由 TypicalAcceptanceSampler 用于在推测解码期间做出采样决策。默认为 0.09


 

--typical-acceptance-sampler-posterior-alpha

TypicalAcceptanceSampler 中基于熵的令牌接受阈值的缩放因子。通常默认为 –typical-acceptance-sampler-posterior-threshold 的平方根,即 0.3

--disable-logprobs-during-spec-decoding

如果设置为 True,则在推测解码期间不返回令牌 log 概率。如果设置为 False,则根据 SamplingParams 中的设置返回 log 概率。如果未指定,则默认为 True。在推测解码期间禁用 log 概率会通过跳过提案采样、目标采样以及确定接受令牌后的 logprob 计算来减少延迟。


 

26)--model-loader-extra-config

模型加载器的额外配置。这将传递给与所选 load_format 对应的模型加载器。这应该是一个 JSON 字符串,将被解析为字典。

--model-loader-extra-config 参数在 vLLM 中用于为模型加载器提供额外的配置信息。这些配置信息将传递给与所选 load_format 对应的模型加载器。该参数的值应该是一个 JSON 字符串,它会被解析为字典  。

参数的作用

26.1)  提供额外的加载配置: ◦  不同的模型加载器可能需要额外的配置参数来优化加载过程或适配特定的模型格式。  ◦  通过 --model-loader-extra-config,用户可以为特定的加载器提供这些额外的配置信息。    

26.2).  灵活性和扩展性: ◦  该参数允许用户根据具体的模型加载需求进行定制化配置,增加了 vLLM 在处理不同模型时的灵活性和扩展性

不会,拟用默认值

27)--ignore-patterns

加载模型时要忽略的模式。默认为 original/**/*,以避免重复加载 llama 的检查点。

默认值:[]

拟用默认值

28)--preemption-mode

如果为 “recompute”,当高优先级任务插入时,推理引擎会通过重新计算当前任务的部分或全部内容来执行抢占。;

如果为 “swap”,则引擎通过块交换执行抢占。这意味着引擎会将当前任务的部分计算结果暂存到其他存储空间(如 CPU 内存或显存),然后切换到高优先级任务。

默认值 recompute

拟用默认值

29)

--served-model-name

API 中使用的模型名称。如果提供了多个名称,则服务器将响应任何提供的名称。响应的模型字段中的模型名称将是列表中的第一个名称。如果未指定,则模型名称将与 --model 参数相同。请注意,此名称也将用于 prometheus 指标的 model_name 标签内容中,如果提供了多个名称,则指标标签将采用第一个名称。

--served-model-name Qwen2.5-7B

30)下面这些应该和性能没关系,拟用默认值

--otlp-traces-endpoint

OpenTelemetry 跟踪将发送到的目标 URL。

--collect-detailed-traces

有效选项为 model,worker,all。仅当设置了 --otlp-traces-endpoint 时,设置此选项才有意义。如果设置,它将收集指定模块的详细跟踪。这涉及使用可能代价高昂和/或阻塞的操作,因此可能会对性能产生影响。

--disable-async-output-proc

禁用异步输出处理。这可能会导致性能降低。

--scheduling-policy

可选值:fcfs, priority

要使用的调度策略。“fcfs”(先到先服务,即请求按到达顺序处理;默认值)或 “priority”(请求根据给定的优先级(值越低表示越早处理)和到达时间来处理,以决定任何平局)。

默认值:“fcfs”

--scheduler-cls

要使用的调度器类。“vllm.core.scheduler.Scheduler” 是默认调度器。可以直接是类,也可以是 “mod.custom_class” 形式的类路径。

默认值:“vllm.core.scheduler.Scheduler”

--override-neuron-config

覆盖或设置 neuron 设备配置。例如 {"cast_logits_dtype": "bloat16"}。

--override-pooler-config

覆盖或设置池化模型的池化方法。例如 {"pooling_type": "mean", "normalize": false}。

--compilation-config, -O

模型的 torch.compile 配置。当它是一个数字(0, 1, 2, 3)时,它将被解释为优化级别。注意:级别 0 是没有任何优化的默认级别。级别 1 和 2 仅用于内部测试。级别 3 是推荐的生产级别。要指定完整的编译配置,请使用 JSON 字符串。按照传统编译器的约定,也支持使用 -O 而不带空格。 -O3 等同于 -O 3。

--kv-transfer-config

分布式 KV 缓存传输的配置。应为 JSON 字符串。


 

31)

--worker-cls

用于分布式执行的工作节点类。

默认值:“auto”

认情况下,vLLM 使用内置的工作节点类进行分布式执行。  ◦  用户可以通过 --worker-cls 参数指定一个自定义的工作节点类,以实现更高效的分布式推理或适配特定的硬件环境

我不会,拟用默认值

32)--generation-config

生成配置的文件夹路径。默认为 None,不加载生成配置,将使用 vLLM 默认值。如果设置为 “auto”,则将从模型路径加载生成配置。如果设置为文件夹路径,则将从指定的文件夹路径加载生成配置。如果在生成配置中指定了 max_new_tokens,则它会为所有请求设置服务器范围的输出令牌数量限制。

拟用默认值

33)

--enable-sleep-mode

为引擎启用睡眠模式。(仅支持 cuda 平台)

参数用于启用 vLLM 引擎的睡眠模式,该模式仅支持 CUDA 平台。启用睡眠模式后,引擎可以在空闲时进入低功耗状态,从而节省资源

默认值:False,即睡眠模式默认是关闭的

我们暂不需要节约这个,拟用默认值

三、整体命令行拟使用为:

vllm serve Qwen/Qwen2.5-7B-Instruct --task generate --tokenizer  /path/to/token  --trust-remote-code  --max-model-len 128000 --tensor-parallel-size 8  --max-parallel-loading-workers 4 --block-size  128 --max-num-batched-tokens 16384   --max-num-seqs 512  --device cuda   --num-scheduler-steps 4  --served-model-name Qwen2.5-7B

 四、其他

 设置

 CUDA_VISIBLE_DEVICES=0,1,2,3,4,5,6,7

 五、实践结果

 待续

<think>好的,我现在需要在Linux服务器上部署Qwen2.5-VL 7B模型。首先,我应该回忆一下之前看到的关于本地部署这个模型的步骤。记得引用[1]中提到需要创建模型文件夹,使用modelscope下载模型到指定目录。那首先得确认服务器上是否安装了Python环境,因为根据引用[2],Python 3.8或更高版本是必须的。 接下来,可能需要安装ModelScope的库,这样才可以用他们的工具下载模型。安装的时候可能会用到pip命令,比如pip install modelscope。然后按照引用[1]的步骤,创建目录/data/qwen2.5/Qwen2.5-VL-7B-Instruct,并进入该目录下载模型。不过要注意,是否需要有足够的存储空间,因为7B的模型可能比较大,可能需要几十GB的空间? 另外,硬件配置方面,引用[2]提到需要一定的硬件资源,比如GPU。所以需要确认服务器是否有NVIDIA的显,安装了合适的驱动和CUDA工具包。可能还需要安装PyTorch的GPU版本,这样模型才能利用GPU加速。 然后,下载模型时使用的命令是modelscope download --model Qwen/Qwen2.5-VL-7B-Instruct --local_dir ./Qwen2.5-VL-7B-Instruct。这一步是否正确?有没有可能路径需要调整?比如是否应该先进入/data/qwen2.5目录再执行下载? 另外,部署完成后,如何测试模型是否正常工作?可能需要编写一个简单的Python脚本,加载模型并进行推理。比如使用ModelScope的pipeline功能,或者根据官方文档提供的示例代码。 还有依赖项的问题,除了modelscope,可能还需要安装其他库,比如transformers、torch等。需要检查这些依赖是否已经安装,版本是否兼容。 可能遇到的问题包括权限问题,比如创建目录时是否需要sudo权限,或者下载模型时网络连接问题。另外,如果服务器在防火墙后面,可能需要配置代理才能下载模型。 总结步骤应该是:安装Python环境和依赖库,创建目录,下载模型,配置运行环境,测试模型。每一步都需要仔细检查,确保命令正确,路径无误。</think>### Linux服务器部署Qwen2.5-VL 7B模型步骤 1. **准备Python环境** - 安装Python 3.8+: ```bash sudo apt update && sudo apt install python3.9 python3.9-venv ``` - 创建虚拟环境(可选但推荐): ```bash python3.9 -m venv qwen_env && source qwen_env/bin/activate ``` 2. **安装依赖库** - 安装ModelScope和PyTorch(GPU版本需预装CUDA 11.7+): ```bash pip install modelscope torch>=2.0.1 transformers>=4.37.0 ``` 3. **下载模型** - 创建存储目录并下载模型: ```bash mkdir -p /data/qwen2.5/Qwen2.5-VL-7B-Instruct cd /data/qwen2.5 modelscope download --model Qwen/Qwen2.5-VL-7B-Instruct --local_dir ./Qwen2.5-VL-7B-Instruct ``` - 下载完成后,模型文件将保存在`/data/qwen2.5/Qwen2.5-VL-7B-Instruct`中[^1]。 4. **验证部署** - 编写测试脚本`test_inference.py`: ```python from modelscope import AutoModelForCausalLM, AutoTokenizer model_dir = "/data/qwen2.5/Qwen2.5-VL-7B-Instruct" tokenizer = AutoTokenizer.from_pretrained(model_dir) model = AutoModelForCausalLM.from_pretrained(model_dir, device_map="auto") inputs = tokenizer("法国的首都是哪里?", return_tensors="pt").to("cuda") outputs = model.generate(**inputs, max_new_tokens=50) print(tokenizer.decode(outputs[0], skip_special_tokens=True)) ``` - 运行测试: ```bash python test_inference.py ``` 5. **硬件配置建议** - GPU要求:至少16GB显存(如NVIDIA A10G/V100/A100- 内存要求:建议32GB以上 - 磁盘空间:模型文件约15GB,需预留30GB空间[^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值