Xinference 安装与使用指南
Xinference 提供了一套统一的推理服务平台,能够在同一环境中灵活集成多种后端引擎(如 vLLM、SGLang、Transformers 等),支持多类型模型(大语言模型、Embedding、Reranker、Diffusion 等)的加载与调用,提供 OpenAI 兼容接口和可视化管理界面。
本教程将描述如何在 AIStudio 「开发机」和「推理服务」中使用 Xinference。
Xinference 官方镜像
部分用户参照 Xinference 官方文档的指导,尝试使用官方 Docker 镜像 在 AIStudio 中启动 4090 机型的开发机,发现存在异常报错。错误信息如下:
2024-11-01 18:39:10 /usr/local/lib/python3.10/dist-packages/torch/cuda/__init__.py:128: UserWarning: CUDA initialization: Unexpected error from cudaGetDeviceCount(). Did you run some cuda functions before calling NumCudaDevices() that might have already set an error? Error 804: forward compatibility was attempted on non supported HW (Triggered internally at ../c10/cuda/CUDAFunctions.cpp:108.)以上错误可能是因为 Nvidia Driver 兼容性的问题,可尝试更换为 Driver 版本更高的算力规格(需要自行检查,平台不支持用户自行安装 Nvidia Driver)。为了更好的平台兼容性,建议不要使用 Xinference 官方镜像。
在开发机中使用 Xinference
本节描述如何在开发机中安装 Xinference v1.12.0(不含 SGLang 引擎)。
注意
由于 vllm 和 sglang 在包依赖上无法调和,Xinference 从 v1.8.1 版本开始,从 all 里移除了 sglang。
Step 0 获取系统级 CUDA 环境
由于 Llama.cpp 引擎 依赖系统级 CUDA 环境,因此需要事先安装 CUDA 环境。
不建议在开发机中手动安装 CUDA Toolkit。您可以前往镜像中心,使用基于 Dockerfile 的构建方式,填入我们提供的 CUDA 12.4 Dockerfile,手动构建一个符合条件的系统级 CUDA 镜像。
注意
- 构建自定义镜像时,请确保在镜像构建资源池中选择与开发机相同的可用区。
- 如果您不清楚什么是系统级 CUDA,请查看教程 NVIDIA CUDA Toolkit 与 PyTorch 安装中的 CUDA 的区别。
Step 1 安装 Xinference
等待自定义镜像构建完毕后,使用自定义镜像创建开发机。请注意选择上一步自定义镜像所在可用区的算力规格。
登录开发机后,用以下命令安装 Xinference。该方式将安装推理所有支持的模型需要的依赖:
export PIP_INDEX_URL=https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
python3 -m pip install "xinference[all]"安装完毕后,新开 tmux 会话,设置必要的环境变量,然后启动 Xinference 服务:
# 指定从 ModelScope 中下载模型:
export XINFERENCE_MODEL_SRC=modelscope
# 指定 HuggingFace 镜像网站
export HF_ENDPOINT=https://hf-mirror.com
# 默认情况下,Xinference 会使用 <HOME>/.xinference 作为主目录来存储一些必要的信息,比如日志文件和模型文件,其中 <HOME> 就是当前用户的主目录。
# 由于 AIStudio 开发机本地 rootfs 容量为 100GiB,如果已购买共享文件存储,或开发机已挂载大容量云盘或,建议修改主目录
# 比如修改主目录指向共享文件存储中的特定目录(请提前创建目录)
export XINFERENCE_HOME=/mnt/public/xinference
# 又或者修改主目录指向云盘的特定目录(请提前创建目录)
export XINFERENCE_HOME=/datadisk/xinference启动 Xinference
xinference-local --host 0.0.0.0 --port 9997恭喜!您已经在本地拉起了 Xinference 服务。一旦 Xinference 服务运行起来,即可加载模型,提供 API 服务。
根据 Xinference 官方提供的模型列表,尝试启动一个 JINA AI 向量嵌入模型 jina-embeddings-v2-base-zh。
先 CTRL+B + D 分离 tmux 会话,执行以下命令:
xinference launch --model-name jina-embeddings-v2-base-zh --model-type embedding输出如下:
root@is-dacvkncuymixgg4v-devmachine-0:~# xinference launch --model-name jina-embeddings-v2-base-zh --model-type embedding
Launch model name: jina-embeddings-v2-base-zh with kwargs: {}
Model uid: jina-embeddings-v2-base-zhStep 2 后续步骤
- 您可以遵循 Xinference 官方文档的使用方式来使用 Xinference API,包括使用网页、cURL 命令、命令行或者是 Xinference 的 Python SDK。
- 利用开发机提供的 SSH 服务和 SSH 端口转发功能,将开发机内网端口映射到本地电脑,从而实现从公网直接访问开发机内部服务。 配置方法详见 SSH 端口转发:公网访问开发机内 HTTP 服务。
- 您可以将开发机保存为镜像,以便后续使用该镜像创建开发机、推理服务等。请访问 AIStudio 平台镜像中心,在上方页面点击构建镜像按钮,选择基于运行中的开发机构建镜像。
使用 Xinference 部署推理服务
以使用 vLLM 引擎为例。
Step 0 构建自定义 Xinference 镜像
您可以前往镜像中心,使用基于 Dockerfile 的构建方式,填入我们提供的 Xinference(vllm) Dockerfile,手动构建一个使用 vLLM 引擎的 Xinference 镜像
等待自定义镜像构建完成,即可在 AIStudio 平台使用该镜像创建开发机、推理服务等。使用 Dockerfile 构建的镜像体积将更加小,启动速度更快。
Step 1 准备模型文件
由于 Xinference 提供 WebUI,可以方便地从网页端操作并直接下载模型,因此您可以跳过此步骤。
如果您希望自主下载模型,可将需要部署的模型文件上传至共享高性能存储。建议通过 AICoder 上传或下载模型。
Step 1 创建推理服务
使用 AIStudio 预置推理镜像部署服务,主要遵循以下步骤:
选择合适的算力资源与实例规格。如需帮助,详见推理服务标准部署流程。
选择之前构建的 Xinference 自定义镜像。
配置启动命令,启动命令的核心作用是启动 Xinference(必须保持在前台运行)。
shellexport XINFERENCE_MODEL_SRC=modelscope export HF_ENDPOINT=https://hf-mirror.com # 指定下载模型的位置为高性能存储(强烈推荐) # 否则会下载模型至推理服务容器系统盘,推理服务系统盘不支持持久化存储,重启服务后模型需要重新下载。 # export XINFERENCE_HOME=/mnt/empty_example echo "正在启动 Xinference 服务..." # 将xinference-local作为主进程运行,而不是放在后台 xinference-local --host 0.0.0.0 --port 9997注意
Xinference 服务
--port参数指定了 9997 端口,相应地,推理服务内网配置区域应作如下配置:- 监听端口
9997 - 调用端口
80
- 监听端口
配置存储时,请务必挂载共享高性能存储,确保启动命令可访问
XINFERENCE_HOME指定的目录。如需帮助,详见推理服务标准部署流程。填写外网配置和内网配置。内网监听端口号必须于
--port参数值一致。如需帮助,详见推理服务标准部署流程。
确认创建后,平台根据配置拉取镜像、启动实例并运行启动命令。部署成功后,即可通过配置的网络地址访问服务。
Step 2 访问 Xinference Web UI
进入推理服务详情页,找到外网访问地址,打开弹窗。
在弹窗中点击直接访问地址旁的跳转链接,可直接访问 Xinference Web UI 页面。
在 Xinference Web UI 页面左侧找到启动模型,搜索
qwen2.5-instruct,部署一个 0.5B 模型。- 模型引擎:vLLM
- 模型格式:Pytorch
- 模型大小:0.5
具体操作可参考 Xinference。