【个人开发】cuda12.6安装vllm安装实践【内含踩坑经验】

1. 背景

vLLM是一个快速且易于使用的LLM推理和服务库。企业级应用比较普遍,尝试安装相关环境,尝试使用。

2. 环境

模块版本
python3.10
CUDA12.6
torch2.5.1
xformers0.0.28.post3
flash_attn2.7.4
vllm0.6.4.post1

2.1 安装flash_attn

具体选择什么版本,可参考:flash-attention保姆级安装教程
基于cuda跟torch的版本考虑,笔者选择如下版本

flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

安装命令

wget https://github.com/Dao-AILab/flash-attention/releases/download/v2.7.4.post1/flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl
MAX_JOBS=4 
pip install flash_attn-2.7.4.post1+cu12torch2.5cxx11abiFALSE-cp310-cp310-linux_x86_64.whl

2.2 安装vllm

参考:vLLM环境安装与运行实例【最新版(0.6.4.post1)】

pip3 install vllm==0.6.4.post1 --extra-index-url https://download.pytorch.org/whl/cu121 -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2.1 坑1: 报错:libcudart.so.11.0: cannot open shared object file: No such file or directory

在这里插入图片描述

这个文件应该指向的是cuda的文件。到cuda的路径看看【笔者cuda的路径为:/usr/local/cuda/lib64】

在这里插入图片描述
发现确实只有libcudart.so.12。没有libcudart.so.11。
那么这里只有两种解决方案,要么重装cuda,要么重装vllm。

借鉴楼上大佬的经验参考,将vllm 版本降至0.6.4.post1即可解决。

3. 启动服务

3.1 vllm启动服务

使用vllm启动模型/root/Qwen2.5-7B-Instruct。

参考文章:使用 vllm 搭建推理加速大模型服务

python -m vllm.entrypoints.openai.api_server --model /root/Qwen2.5-7B-Instruct  --served-model-name Qwen2.5-7B-Instruct --max-model-len=2048

在这里插入图片描述

3.2 vllm一次性调用

# vllm_model.py
from vllm import LLM, SamplingParams
from transformers import AutoTokenizer
import os
import json

# 自动下载模型时,指定使用modelscope。不设置的话,会从 huggingface 下载
os.environ['VLLM_USE_MODELSCOPE']='True'

def get_completion(prompts, model, tokenizer=None, max_tokens=512, temperature=0.8, top_p=0.95, max_model_len=2048):
    stop_token_ids = [151329, 151336, 151338]
    # 创建采样参数。temperature 控制生成文本的多样性,top_p 控制核心采样的概率
    sampling_params = SamplingParams(temperature=temperature, top_p=top_p, max_tokens=max_tokens, stop_token_ids=stop_token_ids)
    # 初始化 vLLM 推理引擎
    llm = LLM(model=model, tokenizer=tokenizer, max_model_len=max_model_len,trust_remote_code=True)
    outputs = llm.generate(prompts, sampling_params)
    return outputs


if __name__ == "__main__":    
    # 初始化 vLLM 推理引擎
    model='/root/Qwen2.5-7B-Instruct' # 指定模型路径
    # model="qwen/Qwen2-7B-Instruct" # 指定模型名称,自动下载模型
    tokenizer = None
    # 加载分词器后传入vLLM 模型,但不是必要的。
    # tokenizer = AutoTokenizer.from_pretrained(model, use_fast=False) 
    
    text = ["你好,帮我介绍一下什么是大语言模型。",
            "可以给我将一个有趣的童话故事吗?"]
    # messages = [
    #     {"role": "system", "content": "你是一个有用的助手。"},
    #     {"role": "user", "content": prompt}
    # ]
    # 作为聊天模板的消息,不是必要的。
    # text = tokenizer.apply_chat_template(
    #     messages,
    #     tokenize=False,
    #     add_generation_prompt=True
    # )

    outputs = get_completion(text, model, tokenizer=tokenizer, max_tokens=512, temperature=1, top_p=1, max_model_len=2048)

    # 输出是一个包含 prompt、生成文本和其他信息的 RequestOutput 对象列表。
    # 打印输出。
    for output in outputs:
        prompt = output.prompt
        generated_text = output.outputs[0].text
        print(f"Prompt: {prompt!r}, Generated text: {generated_text!r}")

效果如下:
在这里插入图片描述

4. 模型调用

curl http://localhost:8000/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
        "model": "Qwen2.5-7B-Instruct",
        "prompt": "请基于如下的知识点,帮忙总结一下该病例的关键信息点。

        ",
        "max_tokens": 50,
        "temperature": 0
    }'

在这里插入图片描述
python调用

import requests

headers = {
    'Content-Type': 'application/json',
}

base_prompt = [
    {
        "role": "system",
        "content": "You are a helpful Assistant.",
    },
    {"role": "user", "content": "你好"},
]

json_data = {
    'model': 'Qwen2.5-14B-Instruct',
    'prompt': base_prompt,
    'top_p': '0.9',
    'temperature': '0.7',
}

response = requests.post('http://localhost:8002/v1/completions', headers=headers, json=json_data)

print(response.json())


参考文章:
1.flash-attention保姆级安装教程
2.vLLM环境安装与运行实例【最新版(0.6.4.post1)】
3.使用 vllm 搭建推理加速大模型服务
4.[大模型]Qwen2-7B-Instruct vLLM 部署调用

以上,结束。

### CUDA 12.6 下载与安装指南 #### 下载 CUDA 12.6 NVIDIA 开发者网站提供了 CUDA Toolkit 12.6 Update 3 的下载链接[^1]。访问该页面可以选择适合的操作系统、架构和其他必要参数来获取对应的安装包。 #### 安装 CUDA 12.6 对于 Ubuntu 系统下的具体操作流程如下: - **准备工作** - 更新现有软件包列表并升级已安装的软件包。 ```bash sudo apt-get update && sudo apt-get upgrade ``` - **安装依赖项** 需要先确保系统中有必要的开发工具和库,比如 `build-essential` 和 `libssl-dev` 等。 ```bash sudo apt-get install build-essential libssl-dev ``` - **添加 NVIDIA 软件源** 可以通过官方提供的 .deb 文件或者直接使用命令行方式加入 PPA 源。 ```bash distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update ``` - **实际安装过程** 使用 APT 命令来进行 CUDA 工具链的整体部署。 ```bash sudo apt-get install cuda ``` 完成上述步骤之后,还需要设置环境变量以便于后续调用 CUDA 编译器 nvcc 或其他组件。这通常涉及到修改用户的 `.bashrc` 文件,在其中追加路径声明语句[^2]。 ```bash export PATH=/usr/local/cuda-12.6/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-12.6/lib64\ ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} ``` 最后重启计算机使更改生效,并验证安装情况。 ```bash nvcc --version ``` 如果一切正常,则会显示当前使用的 CUDA 版本号为 12.6。 #### 关联 PyTorch 的注意事项 值得注意的是,PyTorch 对 CUDA 存在一定的向下兼容特性;也就是说,较高版本的 CUDA 支持较低版本编译构建出来的 PyTorch 库。因此,当本地已经存在较新的 CUDA 12.6 时,可以选择安装支持更低 CUDA 版本(如 CUDA 11.x)的 PyTorch 发布版而不必担心不匹配的问题[^3]。为了确认 GPU 加速功能是否可用,可以在 Python 解释器内部执行简单的测试脚本来检查 `torch.cuda.is_available()` 函数的结果,若返回 True 则表明配置无误[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值