自然语言处理: 第十四章Xinference部署

项目地址: Xorbitsai/inference

理论基础

正如同Xorbits Inference(Xinference)官网介绍是一个性能强大且功能全面的分布式推理框架。可用于大语言模型(LLM),语音识别模型,多模态模型等各种模型的推理。通过 Xorbits Inference,你可以轻松地一键部署你自己的模型或内置的前沿开源模型。无论你是研究者,开发者,或是数据科学家,都可以通过 Xorbits Inference 与最前沿的 AI 模型,发掘更多可能。

介绍这个项目主要是为了后面在dify能够快速部署接入API。

在这里插入图片描述

下图是xinference的与其他开源集成大模型框架的对比,可以看到xinference相比于其他开源框架还是有很多有点的。而且本人使用下来发现确实上手简单,

在这里插入图片描述



本地搭建

本人使用的是autodl上,所以相对应的无论是在linxu还是windows系统都差不多

1 安装

安装的时候由于xinference直接安装的时候会装pytorch的cpu版本,所以装完之后还需要重新装一下GPU版本的torch

# 新建环境
conda create -n xinference python=3.10

# 激活环境
conda activate xinference

# 安装xinference所有包
pip3 in
<think>嗯,用户之前已经问过如何用docker-compose部署Xinference并使用多GPU,现在他们给了一个docker run命令,想把它转换成docker-compose文件。首先,我需要仔细分析用户提供的docker run命令中的各个参数,然后对应到docker-compose的语法里。 用户提供的命令是: docker run -d --name xinference --gpus all -v E:/docker/xinference/models:/root/models -v E:/docker/xinference/.xinference:/root/.xinference -v E:/docker/xinference/.cache/huggingface:/root/.cache/huggingface -e XINFERENCE_HOME=/root/models -p 9997:9997 xprobe/xinference:latest xinference-local -H 0.0.0.0 首先,分解每个参数: - -d:后台运行,对应docker-compose中的restart策略或者直接detached模式。 - --name:服务名称,在docker-compose中就是service的名字。 - --gpus all:使用所有GPU,这在docker-compose中需要指定runtime为nvidia,并且在deploy.reservations下配置。 - -v 挂载卷:三个卷挂载,分别对应模型目录、配置目录和缓存目录。需要注意路径是否正确,尤其是用户使用的是E盘,可能是在Windows系统,但docker-compose通常用于Linux,可能需要检查路径格式是否正确,或者用户是否实际在WSL环境下运行。 - -e 环境变量:设置XINFERENCE_HOME为/root/models。 - -p 端口映射:将宿主机的9997映射到容器的9997。 - 镜像和命令:使用xprobe/xinference:latest,并运行xinference-local -H 0.0.0.0。 接下来,转换这些参数到docker-compose.yml的结构中。需要确保语法正确,特别是GPU的配置部分,因为在docker-compose中,GPU的设置不同于docker run的--gpus all。根据之前的回答,用户可能已经安装了NVIDIA Container Toolkit,所以需要确认runtime: nvidia,并在deploy部分配置devices。 另外,注意到用户提供的挂载路径是Windows风格的E:/docker...,这可能存在问题,因为在Linux环境下,路径应该为/mnt/e/docker...之类的。不过用户可能在WSL中使用Docker,或者在Windows Docker Desktop中配置了卷挂载。需要提醒用户注意路径的正确性,尤其是在不同操作系统下的路径转换。 环境变量XINFERENCE_HOME的设置是否正确,是否应该指向挂载的模型目录?用户可能希望将模型存储在宿主机上,所以挂载到容器内的/root/models,并且设置该环境变量,这样Xinference会使用该目录作为模型存储位置。需要确认这个环境变量的作用是否与挂载点一致。 端口映射部分比较简单,直接映射9997:9997即可,但需要确保宿主机的端口未被占用。 最后,命令部分在docker-compose中使用command字段,传递xinference-local -H 0.0.0.0,确保服务监听所有接口。 可能需要检查用户是否在Windows上使用Docker,如果是的话,路径中的E盘可能需要转换为适用于Docker的路径,比如在Docker Desktop中设置卷挂载时可能需要使用Linux风格的路径或者配置共享驱动器。这时候可能需要提醒用户注意路径的问题,避免挂载失败。 总结步骤: 1. 创建docker-compose.yml文件,版本至少3.8以支持deploy配置。 2. 定义服务xinference,设置镜像、容器名称、运行时、部署资源、卷挂载、环境变量、端口和命令。 3. 确保GPU配置正确,使用nvidia运行时,并暴露所有GPU。 4. 检查卷挂载路径是否正确,特别是Windows路径可能需要转换。 5. 确认环境变量和命令参数正确无误。 6. 提供启动和验证步骤,帮助用户测试转换后的配置是否有效。</think>以下是将您的 `docker run` 命令转换为 `docker-compose.yml` 的完整实现及详细说明: --- ### **一、转换后的 docker-compose.yml** ```yaml version: "3.8" services: xinference: image: xprobe/xinference:latest container_name: xinference runtime: nvidia # 启用NVIDIA GPU支持 deploy: resources: reservations: devices: - driver: nvidia count: all # 使用全部GPU capabilities: [gpu] volumes: - "E:/docker/xinference/models:/root/models" # 模型存储目录 - "E:/docker/xinference/.xinference:/root/.xinference" # 配置目录 - "E:/docker/xinference/.cache/huggingface:/root/.cache/huggingface" # HuggingFace缓存 environment: XINFERENCE_HOME: "/root/models" # 指定模型根目录 ports: - "9997:9997" # 端口映射 command: xinference-local -H 0.0.0.0 # 启动命令 ``` --- ### **二、关键配置解析** #### 1. **GPU支持** - `runtime: nvidia`:启用 NVIDIA 容器运行时(需提前安装 [NVIDIA Container Toolkit](https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html))。 - `count: all`:容器可使用所有 GPU,等同于 `--gpus all`。 #### 2. **卷挂载** - **模型目录**: `E:/docker/xinference/models`(宿主机) → `/root/models`(容器) 通过 `XINFERENCE_HOME` 环境变量指定模型存储位置。 - **配置目录**: `E:/docker/xinference/.xinference` → `/root/.xinference` 持久化 Xinference 配置(如日志、临时文件)。 - **HuggingFace缓存**: `E:/docker/xinference/.cache/huggingface` → `/root/.cache/huggingface` 避免重复下载模型。 #### 3. **网络与端口** - `ports: "9997:9997"`:将容器端口 9997 映射到宿主机 9997。 #### 4. **启动命令** - `command: xinference-local -H 0.0.0.0`:启动服务并监听所有网络接口。 --- ### **三、操作步骤** 1. **创建配置文件**: 将上述内容保存为 `docker-compose.yml`,注意检查路径是否符合实际环境(Windows路径需确保 Docker Desktop 已启用共享驱动器)。 2. **启动服务**: ```bash docker-compose up -d ``` 3. **验证部署**: - 检查容器状态: ```bash docker ps | grep xinference ``` - 查看 GPU 是否生效: ```bash docker exec xinference nvidia-smi ``` - 访问 API: ```bash curl http://localhost:9997/v1/models ``` --- ### **四、注意事项** 1. **Windows路径问题**: 若使用 Docker Desktop,需在设置中共享 `E` 盘(Settings → Resources → File Sharing)。 2. **权限问题**: 若出现权限错误,尝试赋予宿主机目录写入权限: ```bash icacls "E:\docker\xinference" /grant "Everyone:(OI)(CI)F" # Windows # 或 Linux/WSL: chmod -R 777 /mnt/e/docker/xinference ``` 3. **GPU限制**: 若需指定部分 GPU,修改配置: ```yaml deploy: resources: reservations: devices: - driver: nvidia device_ids: ["0", "1"] # 使用 GPU 0 和 1 capabilities: [gpu] ``` --- ### **五、与原命令对比** | Docker Run 参数 | Docker Compose 等效配置 | |--------------------------|----------------------------------| | `--name xinference` | `container_name: xinference` | | `--gpus all` | `runtime: nvidia` + `deploy.reservations.devices` | | `-v E:/...` | `volumes` 映射 | | `-e XINFERENCE_HOME=...` | `environment` 字段 | | `-p 9997:9997` | `ports` 映射 | | `xinference-local -H ...`| `command` 字段 | 通过此配置,您可以直接使用 `docker-compose` 管理服务启停,无需记忆复杂命令行参数。
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

曼城周杰伦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值