拓冰建站拓冰建站
首页 / 资讯中心 / 正文

FlagEmbedding 容器化部署:从镜像构建到检索服务上线的 3 步实操

FlagEmbedding 容器化部署从镜像构建到检索服务上线的 3 步实操【免费下载链接】FlagEmbeddingRetrieval and Retrieval-augmented LLMs项目地址: https://gitcode.com/GitHub_Trending/fl/FlagEmbeddingFlagEmbedding 是 BAAI 开源的密集检索与检索增强 LLM 框架核心是 BGE 系列嵌入模型与 BGE Reranker 重排模型常见于 RAG 系统和语义搜索。把它容器化本质上只解决一件事让「推理服务」和「微调训练」在任意一台有 GPU 的机器上用同一套依赖跑通。先想清楚这个场景值不值得容器化典型的痛点长这样一台新 GPU 机器上pip install之后torch 和 CUDA 版本对不上换一台机器重跑transformers 版本漂移导致FlagModel加载直接报错团队里三台机器的 HF 缓存各不相同模型下载反复发生。如果命中任意一条就该做容器。适合容器化的场景对外提供 RAG 检索/重排服务需要固定依赖版本、稳定重启分布式微调examples/finetune/下的脚本依赖 deepspeed、多卡 torchrun环境最容易被污染多机团队一台机器 build其余机器 pull省去重复配环境。不必容器化的场景单机 CPU 上跑一次小规模评估、用 Jupyter 交互探索 Tutorials/quick_start.ipynb、或者只是读文档写代码。这些场景直接pip install -U FlagEmbedding就够了套容器只会增加维护成本。部署前置检查清单动手 build 之前把下面三张清单过一遍避免镜像 build 到一半才发现问题。硬件与驱动1 块 NVIDIA GPU推理 8GB 显存起步微调 16GB 更稳宿主机 NVIDIA 驱动版本 ≥ 镜像内 CUDA 版本如镜像用 CUDA 11.7驱动 450 即可磁盘预留 ≥ 20GB基础镜像 模型缓存软件Docker 20.10且已安装 NVIDIA Container Toolkit验证docker run --rm --gpus all nvidia/cuda:11.7.1-base-ubuntu22.04 nvidia-smi能输出显卡信息Git网络能访问 PyPI 与 Hugging Face模型权重下载走HF_HUB_CACHE内网环境建议提前把bge-large-en-v1.5等权重拉到宿主机再挂载见下文最小闭环Dockerfile 关键段 build runDockerfile 只保留四段基础镜像、装依赖、引入代码、设缓存目录。完整文件见仓库 setup.py 里的install_requires核心依赖就 torch、transformers、datasets、accelerate、sentence_transformers 这几组。FROM nvidia/cuda:11.7.1-cudnn8-devel-ubuntu22.04 WORKDIR /app RUN apt-get update apt-get install -y --no-install-recommends git python3 python3-pip \ rm -rf /var/lib/apt/lists/* RUN git clone https://gitcode.com/GitHub_Trending/fl/FlagEmbedding . \ pip3 install --no-cache-dir -e . \ pip3 install --no-cache-dir deepspeed ENV HF_HUB_CACHE/app/hf_cache ENV PYTHONPATH/app CMD [bash]⚠️deepseed/flash-attn只在做微调时才需要对应setup.py的extras_require.finetune纯推理镜像可以砍掉这一行能显著缩短 build 时间。构建与验证只需两条命令docker build -t flagembedding:1.4 . docker run --rm --gpus all flagembedding:1.4 \ python -c from FlagEmbedding import FlagModel, FlagReranker; print(ok)第二段命令的作用是确认推理入口能正常导入——FlagEmbedding/inference/ 里的FlagAutoModel、FlagAutoReranker都从这里导出。打印ok即代表最小闭环打通。验证通过后再挂缓存跑一次真实评估例如 MSMARCOdocker run --rm --gpus all \ -v $PWD/hf_cache:/app/hf_cache \ -v $PWD/data:/app/data \ flagembedding:1.4 bash examples/evaluation/msmarco/eval_msmarco.sh 宿主机预先把模型权重放进$PWD/hf_cache即镜像内/app/hf_cache容器内就不会重复下载这是最省时间的一步。上线调优四个常用旋钮模型缓存共享HF_HUB_CACHE用 bind mount 挂到宿主机固定目录。推理、评估、微调共用一份权重多容器部署时所有实例都指过去。GPU 指定单卡服务用--gpus device0显式指定避免多卡机器上误占训练卡容器内用CUDA_VISIBLE_DEVICES进一步收敛。批处理与显存微调时改 examples/finetune/embedder/encoder_only/base.sh 里的per_device_train_batch_size和num_gpus。显存不够时优先调小 batch size其次打开脚本里已有的--gradient_checkpointing。量化FlagEmbedding 本身不做权重量化int8/int4 这类优化放在推理框架层如 ONNX Runtime、TensorRT 部署量化后的 checkpoint镜像里不用为此加依赖。排障速查表现象可能原因处置docker build卡在下载基础镜像镜像源网络慢配置国内 registry mirror或在有网机器 build 后docker save导出容器内nvidia-smi无输出NVIDIA Container Toolkit 未装或未重启 dockerd宿主机执行 toolkit 安装后sudo systemctl restart dockerimport torch报 CUDA 版本不匹配镜像 CUDA 与宿主机驱动版本倒挂换更低 CUDA 的基础镜像或升级宿主机驱动模型加载反复超时容器内无 HF 缓存且网络受限权重预拉到宿主机挂载为/app/hf_cache并设HF_HUB_CACHE微调 OOMbatch size 偏大或多进程占卡调小per_device_train_batch_size确认--gpus deviceN没和别的容器抢卡微调脚本找不到 deepspeed镜像按纯推理构建未装 extras重新 build 时加上pip3 install deepspeed资源索引与自检按用途分三类都给了相对路径直接进仓库翻入门与原理Tutorials/quick_start.ipynb5 分钟跑通嵌入、Tutorials/1_Embedding/、Tutorials/5_Reranking/、Tutorials/6_RAG/可运行脚本examples/inference/嵌入与重排推理、examples/evaluation/MSMARCO/BEIR/MTEB 评估、examples/finetune/微调含 ds_stage1.json 等 deepspeed 配置参考文档docs/source/API、FAQ、BGE 模型系列说明上线自检三条docker run --gpus all 镜像 python -c from FlagEmbedding import FlagModel能过评估脚本在挂载缓存的前提下不再触发模型下载容器 kill 后重启服务行为与第一次启动一致。三条都满足镜像就可以进生产环境了。【免费下载链接】FlagEmbeddingRetrieval and Retrieval-augmented LLMs项目地址: https://gitcode.com/GitHub_Trending/fl/FlagEmbedding创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门