1. TEI 简介
Text Embeddings Inference,简称TEI,是一个用于部署开源文本嵌入及序列分类模型的工具集。TEI为当前最流行的模型(包括FlagEmbedding、Ember、GTE和E5等)提供高性能的向量提取能力。
特点:
- 无需模型图编译步骤
- 支持Mac本地运行的Metal加速
- 轻量化Docker镜像与极速启动——真正实现无服务器化部署
- 基于令牌的动态批处理技术
- 采用Flash Attention、Candle及cuBLASLt优化的Transformer推理代码
- 支持Safetensors权重加载
- 兼容ONNX权重加载
- 生产级就绪(集成Open Telemetry分布式追踪和Prometheus指标监控)
网站:TEI
2. 安装 TEI
这里采用Docker的方式来安装TEI,这种方式比较快捷。
Docker镜像列表如下:
Architecture | Image |
---|---|
CPU | ghcr.io/huggingface/text-embeddings-inference:cpu-1.7 |
Volta | NOT SUPPORTED |
Turing (T4, RTX 2000 series, …) | ghcr.io/huggingface/text-embeddings-inference:turing-1.7 (experimental) |
Ampere 80 (A100, A30) | ghcr.io/huggingface/text-embeddings-inference:1.7 |
Ampere 86 (A10, A40, …) | ghcr.io/huggingface/text-embeddings-inference:86-1.7 |
Ada Lovelace (RTX 4000 series, …) | ghcr.io/huggingface/text-embeddings-inference:89-1.7 |
Hopper (H100) | ghcr.io/huggingface/text-embeddings-inference:hopper-1.7 (experimental) |
依据服务器的配置选择相应的镜像进行安装。
2.1 在线安装
直接使用docker命令拉取相应的镜像,比如CPU版本的
docker pull ghcr.io/huggingface/text-embeddings-inference:cpu-1.7
2.2 离线安装
如果服务器不能拉取镜像,可以采用手动上传镜像的方式来完成离线安装。
- 在能拉取镜像的机器上先拉取镜像
docker pull ghcr.io/huggingface/text-embeddings-inference:cpu-1.7
- 导出镜像,并上传到服务器
docker save -o text-embeddings-inference.tar ghcr.io/huggingface/text-embeddings-inference:cpu-1.7
# 压缩
gzip text-embeddings-inference.tar
- 在服务器上导入镜像
gzip -d text-embeddings-inference.tar.gz
docker load -i text-embeddings-inference.tar
3. 部署大模型
3.1 部署BAAI/bge-reranker-large
3.1.1 搜索模型
在huggingface上搜索模型
3.1.2 在线安装
- 在服务器上编写一个shell脚本,比如 run_bge-reranker-large.sh
model=BAAI/bge-reranker-large
volume=$PWD/data # share a volume with the Docker container to avoid downloading weights every run
docker run -d --gpus all -p 8080:80 -v $volume:/data ghcr.io/huggingface/text-embeddings-inference:1.7 --model-id $model
- 直接运行 run_bge-reranker-large.sh
sh ./run_bge-reranker-large.sh
3.1.3 离线安装
- 在能够联网的机器上下载模型,下载后模型的所有文件都保存在目录bge-reranker-large中
# 因为有大文件,所以这里需用到gitlfs
git lfs install
git clone https://huggingface.co/BAAI/bge-reranker-large
- 编写启动脚本 run-bge-reranker-large.sh
volume=$PWD # share a volume with the Docker container to avoid downloading weights every run
sudo docker run -d -p 8080:80 -v $volume:/data --name bge-rerank-large ghcr.io/huggingface/text-embeddings-inference:cpu-1.7 --model-id /data/bge-reranker-large
- 上传文件夹bge-reranker-large和脚本run-bge-reranker-large.sh到服务器,放在相同目录下
- 直接运行 run_bge-reranker-large.sh
sh ./run_bge-reranker-large.sh
3.1.4 测试模型
curl 127.0.0.1:8080/rerank \
-X POST \
-d '{"query": "中国国庆节是哪一天?", "texts": ["国庆节是10月1日", "端午节是5月1日", "美国国庆节是3月1日"]}' \
-H 'Content-Type: application/json'; echo