Text Embedding Inference(TEI)是Huggingface发布的一个用于部署和服务开源Text Embedding、Sequence Classification 和 Re-Ranking模型的工具包。相较于原生Transformers它可显著提升推理速度,并便于部署为推理服务。目前支持的模型也比较多,详见下图:
根据硬件的不同,目前支持多种硬件架构下的推理,,包括CPU和不同型号的GPU,且针对不同的硬件提供了相应的docker安装包,如下图:
1. TEI Docker部署
本部分介绍在CPU环境下的Docker部署方案。
- step1:创建共享目录data,为便于模型管理,需要创建模型存储目录,避免每次都重新从Huggingface上拉取。也可以使用自己微调后的模型。
- 拉取镜像并启动容器
# 使用cpu版本
docker run -p 10088:80 -v ${models}/data:/data ghcr.io/huggingface/text-embeddings-inference:cpu-1.5 --model-id /data/gte-large-zh-onnx
在上述命令中奖docker容器的80端口映射到宿主机的10088端口 ,并主机的${models}/data目录挂在到容器的/data目录下,这样避免重复下载模型,如果想要下载最新的镜像可以添加参数“--pull always”
--model-id 后可以为huggingface模型库中的模型名字或本地容器内路径,会优先找本地容器内路径,没有找到则会从huggingface 模型库中下载。如果上诉路径模型不存在,则会报错。在第二节中会介绍模型下载及模型格式转换。
模型启动后如下图所示
2.模型格式转换
使用TEI 加载模型时,需要提供onnx格式的模型,而很多模型只有Transformers的.bin格式的模型文件,所以需要自行进行转换。如Embedding 模型 ABBI/bge-base-en-v1.5中含有onnx格式的模型。
Embedding模型 lier007/xiaobu-embedding-v2 中没有onnx格式的模型。
以下说明如何进行格式转换。
- step1:使用conda创建python虚拟环境
conda create -n model_trans python==3.10 -y
conda activate model_trans
- step2: 安装依赖包
pip install optimum[onnxruntime]
- step3:格式转换,以gte-large-zh模型为例,使用如下命令进行转换:
optimum-cli export onnx --model E:/models/gte-large-zh/ --task feature-extraction E:/models/gte-large-zh-onnx
转换后在生成的目录下回出现model.onnx文件 将生成的model.onnx复制到目录{path}/gte-large-zh/onnx/目录下。
3.模型应用
在网页上登录swagger页面,查看接口信息:http://{ip}/{port}/docs