Docker部署Xinference的教程

 更新时间:2025年03月28日 11:02:38   作者:学亮编程手记  
这篇文章主要介绍了Docker部署Xinference的教程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

Docker 镜像

Xinference 在 Dockerhub 和 阿里云容器镜像服务 中上传了官方镜像。

准备工作

  • Xinference 使用 GPU 加速推理,该镜像需要在有 GPU 显卡并且安装 CUDA 的机器上运行。
  • 保证 CUDA 在机器上正确安装。可以使用 nvidia-smi 检查是否正确运行。
  • 镜像中的 CUDA 版本为 12.4 。为了不出现预期之外的问题,请将宿主机的 CUDA 版本和 NVIDIA Driver 版本分别升级到 12.4550 以上。

Docker 镜像

当前,可以通过两个渠道拉取 Xinference 的官方镜像。

1. 在 Dockerhub 的 xprobe/xinference 仓库里。

2. Dockerhub 中的镜像会同步上传一份到阿里云公共镜像仓库中,供访问 Dockerhub 有困难的用户拉取。

拉取命令:

docker pull registry.cn-hangzhou.aliyuncs.com/xprobe_xinference/xinference:<tag> 

目前可用的标签包括:

  • nightly-main: 这个镜像会每天从 GitHub main 分支更新制作,不保证稳定可靠。
  • 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。

挂载模型目录

默认情况下,镜像中不包含任何模型文件,使用过程中会在容器内下载模型。

如果需要使用已经下载好的模型,需要将宿主机的目录挂载到容器内。

这种情况下,需要在运行容器时指定本地卷,并且为 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 目录是用的软链的方式存储模型,需要将原文件所在的目录也挂载到容器内。

例如你使用 huggingface 和 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

links:

Docker 镜像 — Xinference

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Docker+Nginx部署vue项目详细图文教程

    使用Docker+Nginx部署vue项目详细图文教程

    这篇文章主要给大家介绍了关于使用Docker+Nginx部署vue项目的相关资料,文中通过图文介绍的非常详细,对大家学习或者工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-09-09
  • docker swarm快速部署redis分布式集群的详细过程

    docker swarm快速部署redis分布式集群的详细过程

    这篇文章主要介绍了docker swarm快速部署redis分布式集群,只需要通过docker-compose.yml文件和一个启动命令就完成redis分布式部署的方式,让其分别部署在不同机器上,并实现集群搭建,需要的朋友可以参考下
    2022-10-10
  • Docker安装RabbitMQ AMQP协议及重要角色

    Docker安装RabbitMQ AMQP协议及重要角色

    这篇文章主要为大家介绍了Docker安装RabbitMQ AMQP协议和主要角色详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • docker搭建memcached的详细步骤

    docker搭建memcached的详细步骤

    Memcached 是一个通用的分布式内存缓存系统,它通常用于通过在 RAM 中缓存数据和对象来加速动态数据库驱动的网站,以减少必须读取外部数据源(例如数据库或 API)的次数,这篇文章主要介绍了docker搭建memcache,需要的朋友可以参考下
    2022-07-07
  • Docker部署前后端分离项目的三种方式小结

    Docker部署前后端分离项目的三种方式小结

    本文主要介绍了Docker部署前后端分离项目的三种方式小结,包含通过两个容器部署,通过compose编排容器自动部署和将前后端项目打成一个镜像部署的三种方式,具有一定的参考价值,感兴趣的可以了解一下
    2024-03-03
  • 腾讯云服务器docker开启端口后无法访问的解决方法

    腾讯云服务器docker开启端口后无法访问的解决方法

    本文主要介绍了腾讯云服务器docker开启端口后无法访问的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-06-06
  • Docker数据卷与拦截以及目录拦截详解

    Docker数据卷与拦截以及目录拦截详解

    在Docker中可以使用数据卷目录挂载来将主机上的目录与容器内的目录进行映射,下面这篇文章主要给大家介绍了关于Docker数据卷与拦截以及目录拦截的相关资料,需要的朋友可以参考下
    2024-01-01
  • docker安装Elasticsearch7.6集群并设置密码

    docker安装Elasticsearch7.6集群并设置密码

    这篇文章主要介绍了docker安装Elasticsearch7.6集群并设置密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • docker容器查看所有没使用的镜像并删除的实现

    docker容器查看所有没使用的镜像并删除的实现

    本文主要介绍了docker容器查看所有没使用的镜像并删除的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • Docker部署Laravel应用的实现示例

    Docker部署Laravel应用的实现示例

    这篇文章主要介绍了Docker部署Laravel应用的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论