liuqianglong.com

Xinference 本地运行大模型

本文介绍了如何使用 Docker 部署 Xinference 推理框架,并演示了启动和运行多种大模型的过程,包括大语言模型、图像生成模型以及多模态模型。同时,还提供了关于嵌入和重排模型的启动指导,为后续 Dify 调用这些模型打下基础。

一、Xinference 简介

Xorbits Inference (Xinference) 是一个开源分布式推理框架,专为执行大规模模型推理而设计。它支持广泛的模型类型,如大语言模型(LLM)、多模态模型和语音识别模型等。Xinference 的主要特性如下:

  • 简化部署:一键式操作简化了各类复杂模型的部署流程。

  • 前沿模型内置:用户可以轻松下载并部署诸如 Qwen2chatglm2 等众多前沿开源模型。

  • 硬件兼容性:支持在CPU与GPU上进行高效推理,以提高集群性能并减少延迟。

  • API灵活性:提供RPC及RESTful API等多种接口,且兼容OpenAI协议,便于系统集成。

  • 分布式的架构:允许跨设备与服务器间的分布式部署,支持高并发请求处理,并简化了扩展和缩减规模的操作。

  • 第三方服务整合:能够与LangChain等流行的开发库无缝对接,加速基于人工智能应用的构建。

二、通过Docker部署Xinference

请注意,由于docker镜像文件较大,下载过程可能需要较长时间,请耐心等待。

docker pull xprobe/xinference  

查看xinference docker镜像文件,目前大小为17.7GB。

root@ip-172-31-83-158:~# docker images  
REPOSITORY          TAG       IMAGE ID       CREATED         SIZE  
xprobe/xinference   latest    96b2be814b0f   2 days ago     17.6GB  

创建一个目录,用与存放xinference缓存文件和日志文件。

mkdir -p /xinference/data  

启动容器时,镜像默认不包含模型文件,需在容器内下载。若要使用已下载的模型,须将宿主机目录挂载至容器,并配置Xinference环境变量:

  1. XINFERENCE_MODEL_SRC: 设置模型下载仓库,默认为’huggingface’,可改为’modelscope’。
  2. XINFERENCE_HOME: 指定Xinference存储模型和日志等文件的目录,默认为<HOME>/.xinference(其中<HOME>为主目录)。
docker run -d \  
  --name xinference \  
  -v /xinference/data/.xinference:/root/.xinference \  
  -v /xinference/data/.cache/huggingface:/root/.cache/huggingface \  
  -v /xinference/data/.cache/modelscope:/root/.cache/modelscope \  
  -v /xinference/log:/workspace/xinference/logs \  
  -e XINFERENCE_HOME=/xinference \  
  -p 9997:9997 \  
  --gpus all \  
  xprobe/xinference:latest \  
  xinference-local -H 0.0.0.0 --log-level debug  

三、Xinference 本地运行大模型

容器启动后,访问公网地址加上9997端口,启动qwen2-instruct模型。

使用Xinference自带的图形化聊天界面。

聊天测试。

测试图片生成模型,启动sd-trubo图片生成模型,模型下载和启动的时间较长,需要多等待一会,运行大概需要12G GPU。

启动图形化聊天界面。

使用提示词cartoon cloud生成图片,设置分辨率为512*512,点击Generate生成图片。图片像素设置的越大,生成的时间越长,占用的GPU越多,设置1024 * 1024像素,大致需要占用6G GPU。


Xinference 目前不支持同时运行多个大型模型。若要测试新的多模态模型,比如启动qwen-vl-chat视觉聊天模型,则需要先停止当前正在运行的任何模型。

  • 启动和下载qwen-vl-chat模型可能耗时较长。

  • 运行该模型至少需要20G GPU内存。

  • 推荐使用g5.xlarge实例(配备24G GPU)以满足运行需求。

  • g4dn.xlarge实例由于只提供16G GPU内存,不足以运行此模型。

请确保选择合适的硬件配置来避免因资源不足而导致的问题。

上传图片聊天测试。

四、Xinference 启动嵌入和重排模型

在使用Xinference时,系统限制为只能同时激活一个语音模型、一个图片模型以及一个文本模型。然而,对于嵌入(embedding)模型与重排(reranking)模型,则允许同时启动多个实例。

嵌入模型

  • 模型名称bge-m3

重排模型

  • 模型名称bge-reranker-v2-m3

以上配置确保了用户能够在处理特定任务时,利用多样的嵌入功能来丰富数据表示,并通过先进的重排技术提高结果的相关性与准确性。

启动bge-m3嵌入模型,ollama后续可以调用这个模型。

模型正常启动,后续Dify可以调用此嵌入模型。

启动bge-reranker-v2-m3重排模型,ollama 后续可以调用这个模型。

模型正常启动,后续Dify可以调用此重排模型。

五、文档链接

  • [1] Xinference Github主页:
  • [2] Xinference 环境变量:
  • [3] Xinference Docker安装文档:
  • [4] 嵌入模型bge-m3:
  • [5] 重排模型bge-reranker-v2-m3: