当前位置: 首页 > news >正文

零基础实战:用 Docker 和 vLLM 本地部署 BGE-M3 文本嵌入模型

沉湎过往,恐惧将来,都不如珍惜眼前。 往昔是烟,明日是雾,当下才是实实在在的生活。

一、BGE-M3 模型

BGE-M3(BAAI General Embedding-M3)是北京智源人工智能研究院(BAAI)推出的多语言、多功能文本嵌入模型,支持稠密检索、稀疏检索和多向量检索三种模式。该模型基于大规模预训练,适用于跨语言语义匹配、信息检索等任务,在 MTEB 等基准测试中表现优异。

二、Docker 与 vLLM 的作用

Docker 提供容器化环境,解决依赖冲突和部署一致性问题,适合快速部署复杂模型。
vLLM 是高效推理框架,针对大语言模型优化,支持高吞吐量推理和显存管理,能加速 BGE-M3 这类大规模模型的本地运行。

三、本地运行的核心优势

  1. 隐私保护:数据无需上传云端,适合敏感场景。
  2. 定制化:可调整模型参数或微调以适应特定任务。
  3. 成本可控:长期使用比云服务成本更低。

此方案适合开发者、研究人员快速验证 BGE-M3 能力,或集成到本地 NLP pipeline 中。

四、Docker 安装与配置

下载并执行 Docker 官方安装脚本:

curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh# 启动Docker服务
sudo systemctl start docker
sudo systemctl enable docker

配置国内 Docker 镜像源与 GPU:

vim /etc/docker/daemon.json
{"dns": ["8.8.8.8","8.8.4.4"],"registry-mirrors": ["https://docker.m.daocloud.io/","https://huecker.io/","https://dockerhub.timeweb.cloud","https://noohub.ru/","https://dockerproxy.com","https://docker.mirrors.ustc.edu.cn","https://docker.nju.edu.cn","https://registry.docker-cn.com","http://hub-mirror.c.163.com"],"runtimes": {"nvidia": {"args": [],"path": "nvidia-container-runtime"}}
}

五、使用 vLLM 官方 Docker 镜像

vLLM 提供了用于部署的官方 Docker 镜像,该镜像可用于运行与 OpenAI 兼容的服务器,官方示例脚本如下:

docker run --runtime nvidia --gpus all \-v ~/.cache/huggingface:/root/.cache/huggingface \--env "HUGGING_FACE_HUB_TOKEN=<secret>" \-p 8000:8000 \--ipc=host \vllm/vllm-openai:latest \--model mistralai/Mistral-7B-v0.1

官方脚本从 huggingface 下载模型,可能会遇到网络问题,因此我们从 modelscope 下载 bge-m3,对脚本修改一点点细节:

docker run --name bge-m3 -d --runtime nvidia --gpus all \-v ~/.cache/modelscope:/root/.cache/modelscope \--env "VLLM_USE_MODELSCOPE=True" \-p 8000:8000 \--ipc=host \vllm/vllm-openai:latest \--model BAAI/bge-m3  \--gpu_memory_utilization 0.9

这里我们可以使用 ipc=host 标志或 --shm-size 标志来允许容器访问主机的共享内存。vLLM 使用 PyTorch,它在底层使用共享内存来在进程之间共享数据,特别是对于张量并行推理。镜像标签 (vllm/vllm-openai:latest) 之后添加引擎参数 (engine-args)。

在这里插入图片描述

六、文本嵌入测试

from langchain_community.document_loaders import PyPDFLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_openai import OpenAIEmbeddings
from langchain_core.vectorstores import InMemoryVectorStore
import os# 设置环境变量
os.environ["OPENAI_BASE_URL"] = "http://localhost:8000/v1"
os.environ["OPENAI_API_KEY"] = "EMPTY"# 加载文档
file_path = "../langchain/data/0001.pdf"
loader = PyPDFLoader(file_path)
docs = loader.load()
print(f"文档页数:{len(docs)} 页")# 切割文档
text_splitter = RecursiveCharacterTextSplitter(chunk_size=500, chunk_overlap=100, add_start_index=True
)
all_splits = text_splitter.split_documents(docs)len(all_splits)# 嵌入模型
embeddings = OpenAIEmbeddings(model="BAAI/bge-m3")# 向量存储
vector_store = InMemoryVectorStore(embeddings)
ids = vector_store.add_documents(documents=all_splits)#向量查询
results = vector_store.similarity_search("混凝土"
)print(results[0])

运行效果:

在这里插入图片描述

七、GPU 使用情况

nvidia-smi

在这里插入图片描述

参考文档

  • https://docs.vllm.com.cn/en/latest/deployment/docker.html
  • https://modelscope.cn/models/BAAI/bge-m3/summary
  • https://www.runoob.com/docker/ubuntu-docker-install.html
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.dtcms.com/a/248042.html

相关文章:

  • NAS 年中成果汇报:从入门到高阶的影视/音乐/小说/资源下载 等好玩Docker 全集合
  • 通过XML方式在Word段落前添加空白段落
  • Linux搭建爬虫ip与私有IP池教程
  • Power BI Streaming dataset - 模拟监测水库的水位情况
  • WPF加载文本文件时如何设置WebBrowser的字体
  • dsp28335
  • Prompt从入门到抄作业
  • 如何轻松实现多源混算报表
  • Linux运维-ansible-python开发-获取inventroy信息
  • CodeRider插件配置指南二
  • CVPR 2025现场直击
  • 【Docker基础】Docker核心概念:命名空间(Namespace)详解
  • Vue中v-if条件渲染的常见陷阱:以金额显示为例
  • 工业协议转换新标杆:三格电子 Profinet IO-Link 主站网关赋能智能工厂
  • 【解决方案】Kali 2022.3修复仓库密钥无交互一键安装docker,docker compose
  • iOS Alamofire库的使用
  • Rethinking Coarse-to-Fine Approach in Single Image Deblurring论文阅读
  • 商业智能BI 企业提高数据质量,应该怎样保障数据治理有效性
  • 【AI News | 20250613】每日AI进展
  • 练习小项目11:鼠标跟随小圆点
  • PROFINET主站S7-1500通过协议网关集成欧姆龙NJ系列TCP/IP主站
  • 健康管理实训室协同育人模式的实践与探索
  • 使用 Higress AI 网关代理 vLLM 推理服务
  • 浏览器播放监控画面
  • 【图纸管理教程-3】编码统一,效率倍增!解决一物多码问题
  • 【知识图谱构建系列2】LLM4KGC项目安装运行
  • 无人机噪音处理模块技术分析
  • 全新NVIDIA Llama Nemotron Nano视觉语言模型在OCR基准测试中准确率夺冠
  • 机器翻译指标:BLEU
  • Linux内核网络协议注册与初始化:从proto_register到tcp_v4_init_sock的深度解析