使用vLLM运行微调后的Gemma-2-2b-it的详细步骤

在这里分享一下我运行微调后的Gemma-2-2b-it模型并使用vLLM的步骤,希望对其他人有所帮助。本文将详细介绍安装过程、环境配置以及常见问题的解决方法。

安装和验证vLLM

首先,确保安装并验证vLLM的版本是0.5.3。

  1. 安装vLLM:

    1
    pip install vllm==0.5.3
  2. 验证安装:

    1
    2
    3
    import vllm
    print(vllm.__version__)
    # 输出: 0.5.3

安装Flashinfer

按照以下步骤安装Flashinfer,并确保您的torch版本和CUDA兼容性。

  1. 检查torch版本和CUDA兼容性:

    1
    2
    3
    import torch
    print(torch.__version__) # 应输出: 2.3.1+cu121
    print(torch.version.cuda) # 应输出: 12.1
  2. 安装Flashinfer:
    根据文档,Gemma运行在版本0.08。vLLM需要FlashInfer v0.0.8(请参阅vLLM版本和Flashinfer文档中关于Gemma 2的部分)。

    1
    !pip install flashinfer==0.0.8 -i https://flashinfer.ai/whl/cu121/torch2.3/

更新环境中的VLLM后端变量

确保设置Flashinfer为vLLM的注意力机制后端:

1
2
import os
os.environ["VLLM_ATTENTION_BACKEND"] = "FLASHINFER"

测试vLLM

以下是使用vLLM生成文本的测试代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
from vllm import LLM, SamplingParams
import random

llm = LLM(model="gemma-2-2b-model", trust_remote_code=True)

sampling_params = SamplingParams(
temperature=0.8,
max_tokens=512,
top_p=0.95,
top_k=1,
)

# 示例测试数据
test_data = [{"text": "输入测试文本1"}, {"text": "输入测试文本2"}]

prompts = [
test_data[random.randint(0, len(test_data) - 1)]["text"],
]

outputs = llm.generate(
prompts,
sampling_params
)

# 预期输出:
# Processed prompts: 100%|██████████| 1/1 [00:01<00:00, 1.24s/it, est. speed input: 991.44 toks/s, output: 87.79 toks/s]

通过上述步骤,您应该能够成功运行微调后的Gemma-2-2b-it模型。

常见错误及解决方法

在运行过程中,可能会遇到以下常见错误:

  1. RuntimeError: CHECK_EQ(paged_kv_indptr.size(0), batch_size + 1) failed. 1 vs 257

    • 原因:Flashinfer版本错误。
    • 解决方法:请确保安装了正确版本的Flashinfer。
  2. TypeError: 'NoneType' object is not callable

    • 原因:没有安装Flashinfer。
    • 解决方法:按照上述步骤安装Flashinfer。
  3. ValueError: Please use Flashinfer backend for models with logits_soft_cap (i.e., Gemma-2). Otherwise, the output might be wrong. Set Flashinfer backend by export VLLM_ATTENTION_BACKEND=FLASHINFER.

    • 原因:未设置Flashinfer后端。
    • 解决方法:设置环境变量VLLM_ATTENTION_BACKENDFLASHINFER

通过上述详细步骤和解决方法,您应该能够成功运行并调试微调后的Gemma-2-2b-it模型。如果您在任何一步遇到问题,请参考相应的文档或在社区中寻求帮助。