网络技巧
本指南展示如何在受限或慢速网络环境中构建和运行,而无需修改仓库文件。您将使用小型本地覆盖文件和 compose 覆盖,以保持代码库整洁。
本文将解决:
- Hugging Face 模型下载被阻止/缓慢
- Docker 构建期间 Go 模块获取被阻止
- mock-vLLM 测试镜像的 PyPI 访问
TL;DR:选择您的路径
- 最快且最可靠:使用
./models中的本地模型,完全跳过 HF 网络。 - 否则:通过 compose 覆盖挂载 HF 缓存 + 设置镜像环境变量。
- 构建时:使用覆盖 Dockerfile 设置 Go 镜像(提供示例)。
- mock-vllm:使用覆盖 Dockerfile 设置 pip 镜像(提供示例)。
您可以根据情况混合使用这些方法。
1. Hugging Face 模型
除非您在本地提供模型,否则路由将在首次运行时下载嵌入模型。如果可能,优先选择方案 A。
方案 A — 使用本地模型(无外部网络)
-
使用任何可达的方法(VPN/离线)将所需模型下载到仓库的
./models文件夹中。示例布局:models/all-MiniLM-L12-v2/models/category_classifier_modernbert-base_model
-
在
config/config.yaml中,指向本地路径。示例:bert_model:
# 指向 /app/models 下的本地文件夹(已由 compose 挂载)
model_id: /app/models/all-MiniLM-L12-v2 -
无需额外环境变量。
deploy/docker-compose/docker-compose.yml已挂载./models:/app/models:ro。
方案 B — 使用 HF 缓存 + 镜像
创建 compose 覆盖以持久化缓存并使用区域镜像(以下示例使用中国镜像)。保存为仓库根目录的 docker-compose.override.yml(当您同时指定两者时,Compose 将自动与 deploy/docker-compose/docker-compose.yml 合并):
services:
semantic-router:
volumes:
- ~/.cache/huggingface:/root/.cache/huggingface
environment:
- HUGGINGFACE_HUB_CACHE=/root/.cache/huggingface
- HF_HUB_ENABLE_HF_TRANSFER=1
- HF_ENDPOINT=https://hf-mirror.com # 示例镜像端点(中国)
可选:在宿主机上预热缓存(仅当您安装了 huggingface_hub 时):
python -m pip install -U huggingface_hub
python - <<'PY'
from huggingface_hub import snapshot_download
snapshot_download(repo_id="sentence-transformers/all-MiniLM-L6-v2", local_dir="~/.cache/huggingface/hub/models--sentence-transformers--all-MiniLM-L6-v2")
PY