Skip to content

Commit 682cdcf

Browse files
committed
update-2024-10-24_20:18:08
1 parent 3915db1 commit 682cdcf

File tree

4 files changed

+76
-4
lines changed

4 files changed

+76
-4
lines changed

README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -190,13 +190,14 @@
190190
- [TensorRT-LLM保姆级教程(二)-离线环境搭建、模型量化及推理](https://zhuanlan.zhihu.com/p/667572720)
191191
- [TensorRT-LLM保姆级教程(三)-使用Triton推理服务框架部署模型](https://juejin.cn/post/7398122968200593419)
192192
- TensorRT-LLM保姆级教程(四)-新模型适配
193-
193+
- vLLM
194+
- LightLLM
194195

195196

196197

197198
### LLM推理优化技术
198199

199-
- [LLM推理优化技术概述]()
200+
- [LLM推理优化技术-概述]()
200201
- [大模型推理优化技术-KV Cache](https://www.zhihu.com/question/653658936/answer/3569365986)
201202
- [大模型推理服务调度优化技术-Continuous batching](https://zhuanlan.zhihu.com/p/719610083)
202203
- [大模型底显存推理优化-Offload技术](https://juejin.cn/post/7405158045628596224)

ai-framework/vllm/.DS_Store

-6 KB
Binary file not shown.

llm-inference/vllm/服务启动参数.md

+43-2
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,46 @@ max-num-batched-tokens:很重要的配置,比如你配置了 max-num-batched
2727
--enable-prefix-caching
2828
Enables automatic prefix caching.
2929

30-
--enable-chunked-prefill
31-
如果设置,预填充请求可以根据 max_num_batched_tokens 进行分块。
30+
31+
32+
33+
34+
35+
```
36+
--served-model-name:API 中使用的模型名称。如果提供了多个名称,服务将响应任何提供的名称。
37+
--device:vLLM 执行的设备类型。默认值:auto,可能的选择有:auto、cuda、neuron、cpu、openvino、tpu、xpu。
38+
--model:要使用的 Huggingface 模型的名称或路径。默认值:"facebook/opt-125m"。
39+
--tokenizer:要使用的 Huggingface 分词器的名称或路径。如果未指定,将使用模型名称或路径。
40+
--trust-remote-code:信任来自 Huggingface 的远程代码。默认值:false。
41+
--download-dir:下载和加载权重的目录,默认为huggingface的默认缓存目录。
42+
--load-format:要加载的模型权重的格式。可能的选择:auto、pt、safetensors、npcache、dummy、tensorizer、sharded_state、gguf、bitsandbytes、mistral。默认值:auto,将尝试以 safetensors 格式加载权重,如果 safetensors 格式不可用,则回退到 pytorch bin 格式。
43+
--dtype:模型权重和激活的数据类型。可能的选择:auto、half、float16、bfloat16、float、float32。
44+
--kv-cache-dtype:kv缓存存储的数据类型。可能的选择:auto、fp8、fp8_e5m2、fp8_e4m3,如果为auto,将使用模型数据类型。
45+
--max-model-len:模型上下文长度。如果未指定,将自动从模型配置中派生。
46+
--pipeline-parallel-size, -pp:流水线并行大小。默认值:1。
47+
--tensor-parallel-size, -tp:张量并行大小。默认值:1。
48+
--enable-prefix-caching:启用自动前缀缓存。默认值:false。
49+
--gpu-memory-utilization:用于模型执行的 GPU 内存比例,范围为 0 到 1。例如:值 0.5 表示 GPU 内存利用率为 50%。如果未指定,将使用默认值 0.9。
50+
--disable-custom-all-reduce:禁用自定义all-reduce Kernel并回退到使用NCCL。
51+
--max-num-batched-tokens:每次迭代的最大批处理Token数。
52+
--enable-chunked-prefill:如果设置,预填充请求可以根据 max_num_batched_tokens 进行分块。
53+
--max-num-seqs:每次迭代的最大序列数。默认值:256。
54+
```
55+
56+
57+
```
58+
--kv-cache-dtype:kv缓存存储的数据类型。可能的选择:auto、fp8、fp8_e5m2、fp8_e4m3,如果为auto,将使用模型数据类型。
59+
--quantization, -q:用于量化权重的方法。可能的选择:aqlm、awq、deepspeedfp、tpu_int8、fp8、fbgemm_fp8、modelopt、marlin、gguf、gptq_marlin_24、gptq_marlin、awq_marlin、gptq、compressed-tensors、bitsandbytes、qqq、experts_int8、neuron_quant、ipex、None。如果为None,首先检查模型配置文件中的quantization_config属性;如果为 None,先假设模型权重未量化,并使用dtype来确定权重的数据类型。
60+
```
61+
62+
63+
64+
65+
66+
67+
68+
69+
70+
71+
72+

paper/PagedAttention.md

+30
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
2+
3+
4+
5+
6+
7+
8+
9+
10+
11+
12+
13+
14+
许多LLM的参数大小超过了单个GPU的容量,因此有必要将它们跨分布式GPU进行分割在以模型并行方式下执行。这就要求内存管理器能够处理分布式内存。vLLM通过支持Megatron-LM风格的张量模型并行策略来在分布式设置中有效工作。这种策略遵循SPMD(单程序多数据)执行计划,其中线性层被分割以执行块矩阵乘法,并且GPU通过allreduce操作不断同步中间结果。具体来说,注意力运算在注意力头维度上被分割,每个SPMD进程处理多头注意力中的一个子集。
15+
16+
我们观察到,即使在模型并行执行的情况下,每个模型分片仍然处理相同的输入Token集,因此需要相同位置的KV缓存。因此,vLLM在调度器内设置了一个单一的KV缓存管理器,如图4所示。
17+
不同的GPU workers 共享管理器以及从逻辑块到物理块的映射。这个共同的映射允许 GPU workers 使用调度器为每个输入请求提供的物理块来执行模型。虽然每个GPU worker 有相同的物理块ID,但worker只存储其相应注意力头的KV缓存的一部分。
18+
19+
在每一步中,调度器首先为每个请求准备包含输入Token ID的消息,以及每个请求的块表。
20+
接下来,调度器将此控制消息广播给GPU workers。然后,GPU工作器开始使用输入Token ID执行模型。在注意力层中,GPU工作器根据控制消息中的块表读取KV缓存。在执行过程中,GPU工作器使用all-reduce通信原语同步中间结果,而不需要调度器的协调。最后,GPU工作器将本次迭代的采样Token发送回调度器。总之,GPU工作器不需要在内存管理上进行同步,它们只需要在每个解码迭代开始时以及步骤输入时接收所有的内存管理信息即可。
21+
22+
23+
24+
25+
26+
27+
28+
29+
30+

0 commit comments

Comments
 (0)