Docker 映像#

Xinference 在 Dockerhub 和 阿里雲容器鏡像服務 中上傳了官方鏡像。

在 v2.0 版的變更: Xinference v2.0 開始,如果要使用cuda版本的映像檔,cuda版本最低要達到 CUDA 12.9

準備工作#

  • Xinference 使用 GPU 加速推理,該鏡像需要在有 GPU 顯示卡且安裝 CUDA 的機器上運行。

  • 保證 CUDA 在機器上正確安裝。可以使用 nvidia-smi 檢查是否正確執行。

  • 對於 CUDA 版本 >= 12.9,Docker 映像中使用的 CUDA 版本為 12.9。主機上的 CUDA 版本需為 12.9 或以上,同時 NVIDIA 驅動程式版本需為 575 或以上。

  • 請確保已安裝 NVIDIA Container Toolkit

Docker 映像#

Xinference 官方映像已發布在 DockerHub 上的 xprobe/xinference 倉庫中。當前可用的標籤包括:

  • nightly-main: 此映像會每日從 GitHub 主分支更新建立,不保證穩定性與可靠性。

  • v<release version>:這個映像檔會在 Xinference 每次發布時製作,通常可以認為是穩定可靠的。

  • latest:此映像檔會在 Xinference 發佈時指向最新的發行版本。

  • 對於 CPU 版本,增加 -cpu 後綴,如 nightly-main-cpu

自訂映像檔#

如果需要安裝額外的依賴,可以參考 xinference/deploy/docker/Dockerfile 。請確保使用 Dockerfile 製作映像檔時在 Xinference 專案的根目錄下。例如:

git clone https://github.com/xorbitsai/inference.git
cd inference
docker build --progress=plain -t test -f xinference/deploy/docker/Dockerfile .

使用鏡像#

你可以使用以下方式在容器內啟動 Xinference,同時將 9997 連接埠對應到宿主機的 9998 連接埠,並指定日誌層級為 DEBUG,也可以指定所需的環境變數。

docker run -e XINFERENCE_MODEL_SRC=modelscope -p 9998:9997 --gpus all xprobe/xinference:v<your_version> xinference-local -H 0.0.0.0 --log-level debug

警告

  • --gpus 必須指定,正如前文所述,鏡像必須運行在有 GPU 的機器上,否則會出現錯誤。

  • -H 0.0.0.0 也是必須指定的,否則在容器外無法連線到 Xinference 服務。

  • 可以指定多個 -e 選項來賦值多個環境變數。

當然,也可以運行容器後,進入容器內手動拉起 Xinference。

備註

對於多張 GPU,確保設置共享記憶體大小,例如:docker run --shm-size=128g ...

掛載模型目錄#

預設情況下,映像檔中不包含任何模型檔案,使用過程中會在容器內下載模型。如果需要使用已經下載好的模型,需要將宿主機的目錄掛載到容器內。在這種情況下,需要在執行容器時指定本地磁碟區,並為 Xinference 配置環境變數。

docker run -v </on/your/host>:</on/the/container> -e XINFERENCE_HOME=</on/the/container> -p 9998:9997 --gpus all xprobe/xinference:v<your_version> xinference-local -H 0.0.0.0

上述命令的原理是將主機上指定的目錄掛載到容器中,並設定 XINFERENCE_HOME 環境變數指向容器內的該目錄。如此一來,所有下載的模型檔案將儲存在您在主機上指定的目錄中。您無需擔心在 Docker 容器停止時遺失這些檔案,下次執行容器時,您可以直接使用現有的模型,無需重複下載。

如果你在宿主機使用預設路徑下載的模型,由於 xinference cache 目錄是使用軟鏈結的方式儲存模型,需要將原始檔案所在的目錄也掛載到容器內。例如你使用 Hugging Face 和 ModelScope 作為模型倉庫,那麼需要將這兩個對應的目錄掛載到容器內,一般對應的 cache 目錄分別在 <home_path>/.cache/huggingface 和 <home_path>/.cache/modelscope,使用的指令如下:

docker run \
  -v </your/home/path>/.xinference:/root/.xinference \
  -v </your/home/path>/.cache/huggingface:/root/.cache/huggingface \
  -v </your/home/path>/.cache/modelscope:/root/.cache/modelscope \
  -p 9997:9997 \
  --gpus all \
  xprobe/xinference:v<your_version> \
  xinference-local -H 0.0.0.0