如何使用vllm在服务器上部署模型并调用

前言

📢博客主页:程序源⠀-优快云博客
📢欢迎点赞👍收藏⭐留言📝如有错误敬请指正!

 一、前期准备

环境准备:python3.10,cuda12.1

安装vllm:

Installation — vLLM

# (Recommended) Create a new conda environment.
conda create -n myenv python=3.10 -y
conda activate myenv

# Install vLLM with CUDA 12.1.
pip install vllm

二、模型下载、启动服务

在魔塔社区找到自己要下载的模型。复制模型名称

魔搭社区

 直接用这个命令

vllm serve NousResearch/Meta-Llama-3-8B-Instruct --dtype auto --api-key token-abc123

如果没有下载模型,会先下载模型的。

如果网络超时或者报错。可以选择从魔塔社区下载,vllm默认是从huggingface去下载的。

要设置环境变量

export VLLM_USE_MODELSCOPE=True

三、调用服务

api_key是启动命令行里面下自己定义的

和openAI一样的调用方式

from openai import OpenAI
client = OpenAI(
    base_url="http://localhost:8000/v1",
    api_key="token-abc123",
)

completion = client.chat.completions.create(
  model="NousResearch/Meta-Llama-3-8B-Instruct",
  messages=[
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message)

### 使用 vLLM 部署 DeepSeek 的过程 #### 安装必要的依赖库 为了确保环境配置无误,在Ubuntu服务器上需先安装`vllm`。通过指定国内镜像源可以加速下载速度: ```bash pip install vllm -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple [^1] ``` #### 环境验证 完成上述软件包的安装之后,应当确认PyTorch已成功安装能识别CUDA资源。这一步骤对于后续加载模型至关重要。 执行如下Python脚本片段来检验PyTorch的状态以及CUDA支持情况: ```python import torch print(torch.__version__) print(torch.cuda.is_available()) ``` 如果输出显示CUDA可用,则表明当前环境中GPU计算功能正常开启[^2]。 #### 加载预训练模型DeepSeek-70B 针对大型语言模型如DeepSeek系列中的成员——DeepSeek-70B而言,其部署涉及多个方面考量,包括但不限于硬件性能需求评估、内存优化策略制定等实际因素。然而具体到操作层面,主要围绕着利用`transformers`库加载目标模型权重文件展开工作。考虑到该模型体积庞大,建议预先规划好存储空间,根据官方文档指导调整参数设置以适应本地算力条件。 ```python from transformers import AutoModelForCausalLM, AutoTokenizer model_name_or_path = "path_to_deepseek_70b_model" tokenizer = AutoTokenizer.from_pretrained(model_name_or_path) model = AutoModelForCausalLM.from_pretrained(model_name_or_path) # 将模型移动至GPU设备(如果有) if torch.cuda.is_available(): model.to('cuda') ``` 以上代码展示了如何基于Hugging Face Transformers加载特定路径下的DeepSeek-70B模型实例化对象,尝试将其迁移到GPU上运行以便提高推理效率。 #### 启动服务接口 最后,借助于`vllm`框架所提供的API构建对外提供预测能力的服务端点。这里仅给出概念性的实现方式示意;实际项目开发过程中可能还需要考虑更多细节问题比如安全性加固措施、发请求处理机制等方面的设计。 ```python from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class InputText(BaseModel): text: str @app.post("/predict/") async def predict(input_text: InputText): inputs = tokenizer(input_text.text, return_tensors="pt").to(model.device) outputs = model.generate(**inputs) result = tokenizer.decode(outputs[0], skip_special_tokens=True) return {"prediction": result} ``` 此部分创建了一个简单的RESTful API用于接收输入文本通过调用之前准备好的大模型来进行响应生成任务。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值