欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 【个人开发】cuda12.6安装vllm安装实践【内含踩坑经验】

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

2025/2/21 2:47:37 来源:https://blog.csdn.net/weixin_44505713/article/details/145557117  浏览:    关键词:【个人开发】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 outputsif __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.promptgenerated_text = output.outputs[0].textprint(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 requestsheaders = {'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 部署调用

以上,结束。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词