时间可能不存在

没有追求的灵魂会很无趣

用户工具

站点工具


vllm

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录前一修订版
后一修订版
前一修订版
vllm [2026/08/26 06:48] – chenyangvllm [2026/08/26 06:54] (当前版本) – chenyang
行 2: 行 2:
  
  
-## 参数解读+## 🧾一、参数解读
  
 vLLM 是用于 LLM 高效推理和服务的高性能框架。以下是其关键启动参数(`vllm serve` 或 `python -m vllm.entrypoints.openai.api_server`)的分类详解: vLLM 是用于 LLM 高效推理和服务的高性能框架。以下是其关键启动参数(`vllm serve` 或 `python -m vllm.entrypoints.openai.api_server`)的分类详解:
行 75: 行 75:
  
 ``` ```
-## 张量并行参数取值范围+ 
 +## 📝二、张量并行参数取值范围 
  
 `--tensor-parallel-size`(简称 `-tp`)的取值主要受以下 3 个核心规则限制: `--tensor-parallel-size`(简称 `-tp`)的取值主要受以下 3 个核心规则限制:
行 104: 行 106:
  
  
 +## 🤴三、注意力头(Attention Head)
 +
 +
 +**注意力头(Attention Head)** 是 Transformer 模型中 Self-Attention(自注意力机制)的核心组成模块。
 +
 +如果把模型注意力机制比作“看文章”,单个注意力头只能从一种视角去理解文本(例如关注词语之间的**语法关系**);而**多头注意力(Multi-Head Attention)** 允许模型并行使用多个“头”,同时从不同的维度观察上下文(例如头 A 关注**主谓关系**,头 B 关注**代词指代**,头 C 关注**远距离语义关联**)。最后将所有头的输出拼接在一起,形成对文本更全面的理解。
 +
 +---
 +
 +### 1. 为什么张量并行(`-tp`)与头数绑定?
 +
 +在 GPU 矩阵计算中,多头注意力机制的权重矩阵是**按头(Head)切分**并分配给不同 GPU 的。
 +
 +* 每个 GPU 必须分到**完整数量**的头。
 +* 例如:模型有 32 个头,如果 `-tp 4`,则每张 GPU 分配得到 $32 \div 4 = 8$ 个头。
 +* 如果设置 `-tp 3`,32 无法被 3 整除,GPU 将无法对齐计算矩阵,因此启动会直接报错。
 +
 +---
 +
 +### 2. 如何获取模型的注意力头数?
 +
 +不需要加载完整模型权重,有以下几种快速获取方式:
 +
 +#### 方法一:直接查看模型的配置文件(最快、最常用)
 +
 +在 Hugging Face 或本地模型目录中,找到 `config.json` 文件:
 +
 +1. 打开 `config.json`。
 +2. 查找以下两个核心字段:
 +* **`num_attention_heads`**(或 `n_head`):模型的总注意力头数(Q 头数)。
 +* **`num_key_value_heads`**:KV 头数(**针对 GQA/MQA 模型,`-tp` 必须能被此参数整除**)。
 +
 +
 +
 +*例如(Llama-3-8B 的 `config.json` 截取):*
 +
 +```json
 +{
 +  "num_attention_heads": 32,
 +  "num_key_value_heads": 8
 +}
 +
 +```
 +
 +*在此配置下,`-tp` 的取值必须能够被 `8` 整除(即可以取 1、2、4、8)。*
 +
 +---
 +
 +#### 方法二:使用 Python 代码读取 Config
 +
 +无需下载几百吉字节的模型权重文件,只需加载配置对象即可:
 +
 +```python
 +from transformers import AutoConfig
 +
 +# 替换为你的模型名称或本地路径
 +config = AutoConfig.from_pretrained("meta-llama/Meta-Llama-3-8B-Instruct")
 +
 +# 获取总 Attention 头数 (Query Heads)
 +num_heads = getattr(config, "num_attention_heads", None)
 +
 +# 获取 KV 头数 (Key/Value Heads, GQA 模型关键参数)
 +num_kv_heads = getattr(config, "num_key_value_heads", num_heads)
 +
 +print(f"总注意力头数 (num_attention_heads): {num_heads}")
 +print(f"KV 注意力头数 (num_key_value_heads): {num_kv_heads}")
 +
 +```
 +
 +---
 +
 +#### 方法三:通过 vLLM 启动日志查看
 +
 +如果你直接运行 `vllm serve` 命令,当设置的 `-tp` 无法整除头数时,vLLM 会在终端控制台报错并直接打印出模型的头数信息:
 +
 +```bash
 +ValueError: Total number of attention heads (32) must be divisible by tensor parallel size (3).
 +```
  
vllm.1787726907.txt.gz · 最后更改: 由 chenyang