Marlin:在 vLLM 框架下实现 4bit模型近乎理想的推理速度(每秒 1000+ token)

 大型语言模型(LLMs)通常体积过大,难以直接在消费级硬件上使用。为缩减其规模,业界提出了多种量化技术来降低 LLMs 的内存占用。虽然近期 4 bit量化算法常会附带发布优化过的 CUDA 内核,但量化后 LLMs 的推理吞吐量仍远未达到理想状态。

使用 4 位模型(如 INT4 数据类型)进行推理时,会涉及 INT4xFP16 运算,即便使用现代 GPU 也速度缓慢,因此需要优化 CUDA 内核。

INT4 × FP16 是一种在 混合精度计算中常见的运算策略,主要用于 加速大语言模型(LLMs)推理或微调,核心思想是:

将模型权重用 4 位整数(INT4)表示,但在计算时与半精度浮点数(FP16)进行乘法运算。

IST 团队提出的混合自回归线性内核(Marlin)是一种高度优化的 INT4xFP16 矩阵乘法内核,可实现接近理想值(4 倍)的推理速度。

本文将阐述 Marlin 如何实现这种加速效果,随后演示如何将现有 GPTQ 模型转换为 Marlin 格式。我选用 Mistral 7B 模型进行测试,并通过 vLLM 验证推理速度。

<think>我们参考了用户提供的引用内容,特别是引用[1]中提到了vLLM支持FP8量化,但用户现在询问的是FP4量化。 根据我们对vLLM的了解,目前官方文档和发布的版本中,vLLM主要支持FP16、BF16、INT8(如Marlin)和FP8量化。对于FP44位浮点)量化vLLM官方尚未正式支持。 然而,vLLM支持与AWQ(Activation-aware Weight Quantization)和GPTQ等量化方法集成。这些方法通常支持INT4量化4位整数),而不是FP4。INT4量化是一种常见的权重量化方法,但FP4则较少见。 因此,我们可以这样回答: 1. vLLM目前不支持原生的FP4量化推理。 2. 但是,vLLM支持INT4量化(例如通过AWQ或GPTQ),这同样可以减少模型内存占用并提高推理速度。 3. 如果用户坚持要用FP4,可能需要自行扩展vLLM量化支持,但这需要深入修改内核。 另外,引用[3]提到vLLM能够充分发挥Marlin(一种INT4 GPU内核)的性能潜力,说明INT4vLLM中可以得到较好的支持。 因此,我们可以建议用户考虑使用INT4量化作为替代方案。 回答结构: 1. 直接回答问题:目前不支持FP4。 2. 解释原因:vLLM官方支持的量化格式。 3. 提供替代方案:INT4量化(AWQ/GPTQ)。 4. 给出使用INT4量化的示例步骤(如果用户需要)。 5. 如果用户坚持FP4,说明需要自定义开发。 同时,根据用户之前的问题,他们可能是在WSL环境下运行,但这个问题与运行环境关系不大。 最后,生成相关问题。 </think>### vLLM 对 FP4 量化的支持分析 #### 1. **当前 FP4 支持状态** **vLLM 暂不支持原生 FP4 量化推理**。根据官方文档和公开资料: - vLLM 目前仅正式支持 **FP8(8-bit 浮点)** 和 **INT44-bit 整数)** 量化格式[^1][^4] - FP8 量化已在 H100/MI300x 等新一代 GPU 上验证可用,可将显存需求减半并提升 1.6 倍吞吐量[^1] - INT4 量化通过 **Marlin** 等方案实现,需依赖特定内核支持(如 Hopper GPU)[^3][^4] #### 2. **FP4 的潜在实现路径** 若需尝试 FP4 量化,需结合第三方方案: ##### (1) Hugging Face Transformers + 自定义量化 ```python from transformers import AutoModelForCausalLM, BitsAndBytesConfig # 配置 FP4 量化 (需 transformers ≥ 4.38) quant_config = BitsAndBytesConfig( load_in_4bit=True, bnb_4bit_quant_type="fp4", # 指定 FP4 格式 bnb_4bit_compute_dtype=torch.float16 ) model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-3-8B", quantization_config=quant_config) ``` > ⚠️ **限制**: > - 需手动集成到 vLLM 推理管道 > - FP4 精度损失显著(尤其小模型),需严格评估任务表现[^4] ##### (2) 社区扩展方案 - **AWQ(Activation-aware Weight Quantization)**:部分支持 FP4,需修改 vLLM 内核[^4] - **GPTQ 变体**:通过 `quantization="gptq"` 参数尝试 FP4,但兼容性未经验证[^3] #### 3. **推荐替代方案** | 量化类型 | 显存节省 | vLLM 支持 | 适用场景 | |----------|----------|-----------|------------------| | **FP8** | 2× | ✅ 官方 | H100/MI300x GPU | | **INT4** | 4× | ✅ 官方 | 通用 GPU | | **FP4** | 8× | ❌ 需扩展 | 实验性场景 | > 📌 建议优先使用 vLLM 原生支持的 **INT4Marlin)** 方案: > ```bash > # 使用 INT4 量化运行 Llama-3 > python -m vllm.entrypoints.openai.api_server \ > --model meta-llama/Llama-3-8B \ > --quantization marlin # 启用 INT4 推理 > ``` ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

runner000001

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值