使用Infinity部署Embedding和Reranking模型
說明:
- 首次發表日期:2024-08-06
- Infinity Github 倉庫: https://github.com/michaelfeil/infinity
- Infinity 官方文件: https://michaelfeil.github.io/infinity/
下載權重
pip install -U "huggingface_hub[cli]"
export HF_ENDPOINT=https://hf-mirror.com
huggingface-cli download BAAI/bge-m3
huggingface-cli download BAAI/bge-reranker-v2-m3
使用 hf-mirror.com 的映象,下載模型權重
模型權重預設快取到了$HOME/.cache
下,使用tree
命令檢查下:
~/.cache$ tree -L 3 .
.
├── huggingface
│ └── hub
│ ├── huggingface
│ ├── models--BAAI--bge-m3
│ ├── models--BAAI--bge-reranker-v2-m3
│ └── version.txt
執行Docker容器
docker run 啟動infinity容器:
docker run -it --gpus all \
--env HF_ENDPOINT=https://hf-mirror.com \
-v $HOME/.cache:/app/.cache \
-p 7997:7997 \
michaelf34/infinity:latest \
v2 \
--model-id BAAI/bge-m3 \
--model-id BAAI/bge-reranker-v2-m3 \
--port 7997
其中
-it
: 互動式執行容器,分配一個偽終端。(如果要在後臺執行,將-it
改為-d
)-v $HOME/.cache:/app/.cache
:將本地下載的模型權重對映到Docker容器中了
啟動完成後,可以看到以下日誌:
INFO 2024-08-06 03:52:57,665 infinity_emb INFO:
♾️ Infinity - Embedding Inference Server
MIT License; Copyright (c) 2023 Michael Feil
Version 0.0.53
Open the Docs via Swagger UI:
http://0.0.0.0:7997/docs
Access model via 'GET':
curl http://0.0.0.0:7997/models
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:7997 (Press CTRL+C to quit)
開啟 http://xx.xx.xx.xx:7997/docs
,可以看到 API 文件。(其中 xx.xx.xx.xx
代指 IP 地址)
呼叫測試
Embedding模型:
curl --location 'http://xx.xx.xx.xx:7997/embeddings' \
--header 'Content-Type: application/json' \
--data '{
"input": "喝水吃餅乾",
"model": "BAAI/bge-m3"
}'
Reranking模型:
curl -X 'POST' \
'http://xx.xx.xx.xx:7997/rerank' \
-H 'accept: application/json' \
-H 'Content-Type: application/json' \
-d '{
"query": "like it",
"documents": [
"like", "hate", "sky"
],
"return_documents": false,
"model": "BAAI/bge-reranker-v2-m3"
}'