本地部署 Xinference v1.14.0 + Docker Compose + 自动加载模型

本地部署 Xinference v1.14.0 + Docker Compose + 自动加载模型

什么是 Xinference

Xinference 是一个开源的大模型推理框架,支持本地部署各类开源大模型,包括 LLM、Embedding、Rerank 等模型类型。它提供类似 OpenAI API 的接口,方便与现有应用集成。

本文介绍如何通过 Docker Compose 在本地部署 Xinference v1.14.0,并配置开机自动加载常用模型。

Docker Compose 配置

首先创建目录结构:

mkdir -p xinference/data/xinference xinference/data/huggingface xinference/data/modelscope

编写 docker-compose.yaml

services:
  inference:
    volumes:
      - ./data/xinference:/root/.xinference
      - ./data/huggingface:/root/.cache/huggingface
      - ./data/modelscope:/root/.cache/modelscope
    container_name: inference
    restart: unless-stopped
    image: xprobe/xinference:v1.14.0
    ports:
      - '9997:9997'
    environment:
      - XINFERENCE_MODEL_SRC=modelscope
    deploy:
      resources:
        reservations:
          devices:
            - driver: nvidia
              count: all
              capabilities: [gpu]
    command: sh /root/.xinference/startup.sh

关键配置说明

  • GPU 支持:通过 deploy.resources.reservations.devices 配置 NVIDIA GPU 直通,让容器可以使用本地显卡进行推理
  • 模型源:设置 XINFERENCE_MODEL_SRC=modelscope 使用 ModelScope 作为默认模型下载源(国内访问更快)
  • 端口映射:将容器的 9997 端口映射到宿主机的 9997
  • 持久化:将模型缓存目录映射到宿主机,避免重启后重复下载

自动加载模型脚本

创建 data/xinference/startup.sh

#!/bin/bash
# 启动 Xinference 服务(后台运行)
xinference-local -H 0.0.0.0 --port 9997 &

# 检测服务是否启动成功
while true; do
  if curl -s "http://localhost:9997" > /dev/null; then
    break
  else
    sleep 1
  fi
done

# 自动加载 bge-m3  embedding 模型
xinference launch --model-name bge-m3 --model-type embedding --replica 1 --n-gpu auto &

# 自动加载 bge-reranker-large  重排序模型
xinference launch --model-name bge-reranker-large --model-type rerank --replica 1 --n-gpu auto &

# 自动加载 qwen3  大语言模型
xinference launch --model-name qwen3 --model-type LLM --model-engine Transformers --model-format pytorch --size-in-billions 8 --quantization none --n-gpu auto --replica 1 --n-worker 1 --enable-thinking true --reasoning-content false &

# 等待所有后台任务结束
wait

启动脚本说明

  1. 启动 xinference-local 服务进程
  2. 通过轮询检测服务是否就绪
  3. 自动加载三个常用模型(全部后台执行,不阻塞启动流程):
    • bge-m3:文本 Embedding 模型,用于文本向量化
    • bge-reranker-large:重排序模型,用于优化搜索结果
    • qwen3:通义千问大语言模型,支持思考模式

记得给脚本添加执行权限:

chmod +x data/xinference/startup.sh

启动服务

docker compose up -d
docker compose ps

服务启动后,访问 http://localhost:9997 可打开 Xinference Web UI 进行模型管理。

常用模型启动命令参考

启动 LLM 模型

xinference launch --model-name deepseek-r1-distill-qwen --model-type LLM --model-engine Transformers --model-format pytorch --size-in-billions 1_5 --quantization none --n-gpu auto --replica 1 --n-worker 1 --reasoning-content false

启动 Embedding 模型

xinference launch --model-name bge-m3 --model-type embedding --replica 1 --n-gpu auto

启动 Rerank 模型

xinference launch --model-name bge-reranker-large --model-type rerank --replica 1 --n-gpu auto

常见问题

模型下载慢

确保设置了 XINFERENCE_MODEL_SRC=modelscope,国内访问 ModelScope 比 HuggingFace 快很多。也可以提前手动下载模型到对应缓存目录。

GPU 未被识别

检查宿主机 NVIDIA 驱动和 Docker NVIDIA Container Toolkit 是否正确安装:

nvidia-smi
docker run --rm --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 nvidia-smi

模型加载失败

检查日志排查问题:

docker logs -f inference

阅读更多

Skills系统:可扩展AI能力设计

Skills系统:可扩展AI能力设计

概述 Skills系统是AI-Native架构中的重要组件,它允许通过声明式配置扩展AI的能力。本文将介绍Skills系统的设计与实现,让大模型能够像人类专家一样具备特定领域的能力。 什么是Skills系统 概念 Skills(技能)是一种声明式的AI能力扩展机制,类似于人类的"专业技能": 与Function Calling的区别 特性 Skills Function Calling 目的 改变AI的"思维"方式 扩展AI的"工具"能力 实现 系统提示词注入 API调用 持久性 会话级别 单次调用 复杂度 简单(配置) 复杂(开发) 灵活性 高(声明式) 低(编程式) 系统设计 架构 SKILL.

By 菱角
插件化架构设计模式

插件化架构设计模式

概述 插件化架构是一种将核心功能与扩展功能分离的设计模式,允许系统在运行时动态加载和卸载功能模块。本文将介绍如何在微服务平台中设计和实现插件化架构。 为什么需要插件化 插件化优势 1. 模块化:功能独立,边界清晰 2. 可扩展:按需加载,动态增删 3. 隔离性:插件间互不干扰 4. 可维护:独立开发、测试、部署 5. 可定制:用户按需选择功能 核心设计 架构概览 核心组件实现 1. 插件接口定义 // core/plugin.interface.ts // 插件接口 export interface IPlugin { // 插件名称 readonly name: string // 插件版本 readonly version: string // 插件配置 getConfig(): PluginConfig // 插件清单

By 菱角
gRPC服务通信设计与实践

gRPC服务通信设计与实践

概述 在微服务架构中,服务间通信是关键环节。相比REST API,gRPC提供了更高的性能和更强的类型安全。本文将介绍如何在微服务平台中设计和实现gRPC服务通信。 为什么选择gRPC gRPC vs REST对比 特性 gRPC REST 协议 HTTP/2 HTTP/1.1 序列化 Protocol Buffers (二进制) JSON (文本) 性能 高(二进制+压缩) 中(文本开销) 类型安全 强(代码生成) 弱(运行时检查) 流式通信 原生支持(双向流) 需额外实现(SSE/WebSocket) 代码生成 自动生成 手动编写 浏览器支持 需gRPC-Web 原生支持 调试难度

By 菱角
多语言微服务架构:Node.js与Python协作

多语言微服务架构:Node.js与Python协作

概述 在微服务架构中,根据场景选择最适合的编程语言是最佳实践。本文将介绍如何在微服务平台中实现Node.js与Python的协作,发挥各自技术优势。 技术选型策略 为什么混合使用 服务划分 Node.js服务(7个) 服务 功能 选择Node.js的原因 llm.api 大模型服务 高并发SSE流式响应 ucenter.api 用户中心 RESTful API标准实践 doc.api 文件服务 流式上传下载处理 resource.api 资源管理 gRPC高性能通信 rag.api 知识库服务 MongoDB集成便利 statistic.api 统计分析 事件驱动架构 pptonline.api PPT服务 与前端技术栈统一 Python服务(1个) 服务 功能 选择Python的原因

By 菱角