Imagem Docker#

Xinference enviou imagens oficiais para o Dockerhub e o Alibaba Cloud Container Image Service.

Alterado na versão v2.0: A partir do Xinference v2.0, para usar a imagem da versão CUDA, a versão CUDA deve ser no mínimo CUDA 12.9.

Preparação#

  • Xinference utiliza aceleração de inferência por GPU. Essa imagem precisa ser executada em máquinas que possuam placa GPU e tenham o CUDA instalado.

  • Garanta que o CUDA esteja corretamente instalado na máquina. Use o comando nvidia-smi para verificar se está funcionando corretamente.

  • Para versões CUDA >= 12.9, a versão CUDA usada na imagem Docker é 12.9. A versão CUDA na máquina hospedeira deve ser 12.9 ou superior, e a versão do driver NVIDIA deve ser 575 ou superior.

  • Certifique-se de que o NVIDIA Container Toolkit está instalado.

Imagem Docker.#

A imagem oficial do Xinference foi publicada no repositório xprobe/xinference no DockerHub. As tags atualmente disponíveis incluem:

  • nightly-main: Esta imagem é atualizada diariamente a partir da branch main do GitHub, sem garantia de estabilidade ou confiabilidade.

  • v<release version>: Esta imagem é criada sempre que o Xinference é lançado e geralmente pode ser considerada estável e confiável.

  • latest: Esta imagem apontará para a versão mais recente do lançamento quando o Xinference for publicado.

  • Para a versão CPU, adicione o sufixo -cpu, como nightly-main-cpu.

Imagem personalizada#

Se precisar instalar dependências adicionais, consulte o xinference/deploy/docker/Dockerfile. Certifique-se de estar no diretório raiz do projeto Xinference ao criar a imagem usando o Dockerfile. Por exemplo:

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

Use a imagem.#

Você pode iniciar o Xinference dentro do contêiner da seguinte forma, mapeando a porta 9997 para a porta 9998 do host, definindo o nível de log como DEBUG e também especificando as variáveis de ambiente necessárias.

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

Aviso

  • --gpus deve ser especificado, conforme descrito anteriormente, a imagem deve ser executada em uma máquina com GPU, caso contrário, ocorrerá um erro.

  • -H 0.0.0.0 também deve ser especificado, caso contrário não será possível conectar ao serviço Xinference de fora do contêiner.

  • É possível especificar múltiplas opções -e para atribuir várias variáveis de ambiente.

Claro, também é possível executar o contêiner e, em seguida, acessá-lo manualmente para iniciar o Xinference.

Nota

Para múltiplas GPUs, certifique-se de definir o tamanho da memória compartilhada, por exemplo: docker run –shm-size=128g …

Montar o diretório do modelo#

Por padrão, a imagem não contém nenhum arquivo de modelo, e o download do modelo será feito dentro do contêiner durante o uso. Caso precise utilizar modelos já baixados, é necessário montar o diretório do host no contêiner. Nesse caso, é preciso especificar o volume local ao executar o contêiner e configurar variáveis de ambiente para o 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

O princípio do comando acima é montar o diretório especificado no host no contêiner e definir a variável de ambiente XINFERENCE_HOME para apontar para esse diretório dentro do contêiner. Dessa forma, todos os arquivos de modelo baixados serão armazenados no diretório que você especificou no host. Você não precisa se preocupar em perder esses arquivos quando o contêiner Docker for interrompido; na próxima vez que executar o contêiner, poderá usar diretamente os modelos existentes, sem precisar baixá-los novamente.

Se você baixou o modelo usando o caminho padrão no host, como o diretório de cache do xinference armazena modelos por meio de links simbólicos, é necessário montar também o diretório onde o arquivo original está localizado no contêiner. Por exemplo, se você usa huggingface e modelscope como repositórios de modelos, precisará montar os diretórios correspondentes desses dois no contêiner. Geralmente, os diretórios de cache correspondentes estão em <home_path>/.cache/huggingface e <home_path>/.cache/modelscope. O comando usado é o seguinte:

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