vllm本地部署bge-m3模型API服务实战教程

在这里插入图片描述

一、说明

本文主要介绍vllm本地部署bge-m3模型API服务实战教程

本文是在Ubuntu24.04+CUDA12.8+Python3.12环境下复现成功的

二、配置环境

2.1 安装虚拟环境

我使用的是mininconda3,如果还不会使用虚拟环境,可以参考Miniconda管理python环境 - CSDN App

创建虚拟环境:

conda create -n bge python=3.12

2.2 安装vllm

安装之前,我们先进入刚才创建的虚拟环境:

conda activate bge

在下载vllm:

pip install vllm

2.3 对应版本的pytorch安装

查看CUDA版本:

nvcc --version

我的CUDA版本:

nvcc: NVIDIA ® Cuda compiler driver
Copyright © 2005-2025 NVIDIA Corporation
Built on Wed_Jan_15_19:20:09_PST_2025
Cuda compilation tools, release 12.8, V12.8.61
Build cuda_12.8.r12.8/compiler.35404655_0

pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu128

2.4安装flash_attn

终端输入:

pip install flash-attn --no-build-isolation

flash_attn的安装非常慢,可能卡在下面的界面三小时左右,我就是三个小时加载出来的
在这里插入图片描述

2.5 下载模型

魔搭社区bge-m3
在下载前,请先通过如下命令安装ModelScope

pip install modelscope

命令行下载:
下载完整模型库

modelscope download --model BAAI/bge-m3

下载单个文件到指定本地文件夹(以下载README.md到当前路径下“dir”目录为例)

modelscope download --model BAAI/bge-m3 README.md --local_dir ./dir

三、运行代码

3.1启动服务

/root/.cache/huggingface/hub/models–BAAI–bge-m3/snapshots/5617a9f61b028005a4858fdac845db406aefb181是我的模型下载地址

nohup vllm serve /root/.cache/huggingface/hub/models--BAAI--bge-m3/snapshots/5617a9f61b028005a4858fdac845db406aefb181 --served-model-name bge-m3 --task embed --port 6342 > bge-m3-log.txt &

下载地址搞不清楚的可以通过下面的代码查询:

from huggingface_hub import hf_hub_download, snapshot_download
from transformers import AutoModel

# 查询特定模型的缓存路径(即使未下载也会返回预期路径)
model_id = "BAAI/bge-m3"
repo_cache_path = snapshot_download(model_id, local_files_only=True, ignore_patterns=["*.bin"])
print(f"{model_id} 的缓存路径: {repo_cache_path}")

3.2 调用代码验证

import requests
import json

url = "http://localhost:6342/v1/embeddings"
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer token-abc123"
}
data = {
    "model": "bge-m3",
    "input": ["你好,学不会就看"]
}

try:
    response = requests.post(url, headers=headers, data=json.dumps(data))
    response.raise_for_status()  # 检查HTTP响应状态码,如果状态码不是200,则抛出异常
    print(response.json())  # 打印响应的JSON内容
except requests.exceptions.RequestException as e:
    print(f"请求出错: {e}")
except json.JSONDecodeError as e:
    print(f"JSON解析出错: {e}, 响应内容: {response.text}")

在这里插入图片描述
在这里插入图片描述

### 部署 BGE-M3 模型使用 vLLM 的指南 为了成功部署 BGE-M3 模型并利用 vLLM 进行高效推理,以下是详细的说明: #### 1. 安装依赖项 在开始之前,确保已安装必要的工具和服务。可以通过以下命令全局安装 `deploy-cli-service` 工具[^3]: ```bash npm install deploy-cli-service -g ``` 此外,还需要配置 Docker 环境来运行 MySQL、Seilisearch 和 Milvus 数据库服务[^2]。 --- #### 2. 下载和准备 BGE-M3 模型 访问 ModelScope 平台获取最新的 BGE-M3 模型文件[^1]。下载完成后将其解压到指定目录,例如 `/models/bge-m3/`。 --- #### 3. 初始化 vLLM 环境 vLLM 是一种高效的大型语言模型推理框架,支持多种模型加载方式。初始化环境前需确认 Python 版本不低于 3.8,并通过 pip 安装 vLLM 库: ```bash pip install vllm ``` --- #### 4. 加载 BGE-M3 模型vLLM 创建一个脚本来启动 vLLM 推理服务器并将 BGE-M3 模型加载其中。示例代码如下: ```python from vllm import LLM, SamplingParams # 设置采样参数 sampling_params = SamplingParams(temperature=0.8, top_p=0.95) # 加载 BGE-M3 模型 model_path = "/models/bge-m3/" llm = LLM(model=model_path) # 测试生成功能 output = llm.generate(["你好,世界"], sampling_params=sampling_params) print(output) ``` 上述代码会加载本地路径中的 BGE-M3 模型,并测试其基本生成能力。 --- #### 5. 启动 vLLM HTTP API 服务 如果希望将模型作为 RESTful API 提供外部调用,则可以启用 vLLM 内置的 HTTP 服务。执行以下命令即可完成设置: ```bash vllm-serving --model /models/bge-m3/ ``` 此操作会在默认端口 (通常是 8000) 上暴露接口,允许客户端发送请求并与模型交互。 --- #### 6. 整合其他组件 对于更复杂的场景,可能需要结合 Seilisearch 或 Milvus 来管理向量数据库以及结构化数据存储。这些工具可通过 Docker Compose 文件轻松集成到现有架构中。 --- ### 注意事项 - **硬件需求**: 考虑到 BGE-M3 属于大规模预训练模型,在实际部署过程中应确保有足够的 GPU 显存资源可用。 - **性能优化**: 可尝试调整批处理大小(batch size),序列长度(sequence length)等超参以进一步提升吞吐率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值