本地部署 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

阅读更多

Ghost 邮箱订阅功能在中国大陆的困境:Mailgun 注册受阻实录

Ghost 邮箱订阅功能在中国大陆的困境:Mailgun 注册受阻实录

本文记录了 Ghost 博客邮箱订阅功能因 Mailgun 在中国大陆无法注册而被迫关闭的完整过程,包括注册尝试、工单沟通及最终应对方案。 一、背景:Ghost 与 Mailgun Ghost 博客平台内置了邮箱订阅(Newsletter)功能,读者可以通过输入邮箱地址订阅博客更新,Ghost 会自动将新文章以邮件形式推送给订阅者。这一功能的邮件发送能力依赖于第三方邮件服务——Mailgun。 Ghost 官方推荐使用 Mailgun 作为邮件传输层,配置方式如下: 配置项 说明 示例值 mail.from 发件人地址 newsletter@yourdomain.com mail.transport 传输协议 SMTP mail.options.host SMTP 主机 smtp.mailgun.org mail.options.port

By 菱角
Kubernetes 全栈监控体系:kube-prometheus-stack + 7 大 Exporter 生产实践

Kubernetes 全栈监控体系:kube-prometheus-stack + 7 大 Exporter 生产实践

本文基于 kube-prometheus-stack Helm Chart 在 Kubernetes 上构建完整监控体系的实战,覆盖 Prometheus、Grafana、Alertmanager 及 7 个专用 Exporter 的部署与配置。 一、监控体系全景架构 整套监控以 kube-prometheus-stack 为核心,通过 ServiceMonitor CRD 自动发现并采集 7 大数据源,配合 Alertmanager 分级告警与 Grafana 可视化: 组件 版本 作用 Prometheus v2.45.0 指标采集与存储,10 天数据保留 Alertmanager v0.25.0 告警路由与邮件推送,2 副本 HA

By 菱角
基于 Docker Compose 部署 Apache APISIX:全栈 API 网关实践

基于 Docker Compose 部署 Apache APISIX:全栈 API 网关实践

本文基于 APISIX 3.9.1 + Dashboard 3.0.1 + etcd 3.5.15 + Prometheus + Grafana 的生产级 Docker Compose 部署实践。 一、整体架构 本次部署采用 Docker Compose 编排五大组件,形成从配置管理到流量监控的完整闭环: 组件 版本 作用 端口 APISIX 3.9.1-debian API 网关核心,路由转发、插件执行 9080/9443 Dashboard 3.0.1-alpine 可视化配置管理界面 9000 etcd 3.5.15

By 菱角
在 Kubernetes 上部署 Apache Flink:生产实战指南

在 Kubernetes 上部署 Apache Flink:生产实战指南

本文基于 Flink 1.15.2 + Kubernetes 的生产环境部署实践。 一、架构概览 Flink 在 Kubernetes 上采用经典的 JobManager + TaskManager 主从架构,JobManager 负责作业调度与协调,TaskManager 承载实际的计算任务。 资源分配一览 组件 作用 副本数 Task Slots 内存配置 JobManager 作业调度、Checkpoint 管理、协调 1 — 8G TaskManager 执行计算任务 3 80/Pod 48G 总计 — 4 240 — 二、Namespace 隔离 为 Flink 创建独立 Namespace,

By 菱角