# 第09章：企业级大模型的部署

讲师：尚硅谷-宋红康

欢迎访问尚硅谷官网（http://www.atguigu.com）获取更多学习资料

***

## 1、企业级大模型部署概述

### 1.1 为什么要部署？

企业部署大模型，不是为了解决“能不能用”，而是必须把敏感数据和服务的控制权牢牢掌握在自己手里。

|              | 第三方API                    | 企业级部署                              |
| ------------ | ---------------------------- | --------------------------------------- |
| **安全合规** | 敏感数据泄漏                 | 数据掌握在企业手中                      |
| **成本预算** | 高频调用成本不可控           | 成本可预测（服务器购买/租赁和运维成本） |
| **能力可控** | 黑箱与版本漂移               | 推理性能、模型版本可定制                |
| **可靠性**   | 延迟、吞吐不可控             | 内网低延迟、弹性扩缩容自由调整吞吐量    |
| **运维治理** | 模型服务透明，不利于定位故障 | 模型服务可观测，支持故障定位和治理      |

注：版本漂移是指第三方更改版本，系统行为发生不可控变化

### 1.2 技术架构

- **应用层**：
  - 使用 Dify 构建大模型应用
  - 提供统一的 Web UI 和 API 接口
- **模型推理层**：
  - 使用独立的推理框架托管大模型
  - 运行在云 GPU 服务器，提供高性能推理服务
- **连接方式**：
  - 通过标准 OpenAI-compatible API 进行调用

这种架构的优势在于：

① 技术解耦

- 模型可独立升级、替换
- 应用开发不依赖具体模型实现

② 有利于运营治理

- 统一入口（标准OpenAI-compatible API调用）可以做统一鉴权、限流、审计等
- 推理层可以被独立运维，单独监测QPS（Query Per Second）、TTFT（Time To First Token）、TPS（Token Per Second）、GPU利用率等指标

------

### 1.3 框架选型

#### 1.3.1 推理引擎

##### ① 本地开发 / 个人使用（最快跑起来、最少运维）

核心目标是：**上手简单、快速验证**，但通常**不擅长多租户/高并发/多卡**集群部署。

- **Ollama**：由Ollama Inc.公司开发，是部署大模型最简单的方式，但推理效率低，不适合高并发场景。 
- **llama.cpp**：由Georgi Gerganov，尤其适合 CPU/边缘设备/低成本部署。

------

##### ② 高并发推理引擎

这类引擎使用门槛稍高，但可以**充分发挥GPU性能**，适合企业**高并发**场景。

- **vLLM**：来自于加州大学伯克利分校的 Sky Computing 实验室，采用了**PagedAttention**、**P/D分离**等多种优化策略追求极致推理性能，支持英伟达GPU、AMD GPU和华为昇腾等多种硬件平台，支持多卡并行推理。**主要支持LLM**部署。
- **SGLang**：也是在Sky Computing 实验室诞生，同样采用了类似的优化策略，不同的是，SGLang面向**应用编排/结构化生成**，对同一个应用多次调用请求的场景做了优化，底层通过**合并**、**复用**、调度优化等策略**减少模型实际**进行的**推理次数**，进一步提升推理性能。

通常vLLM的性能就足够支撑企业高并发场景调用了。 

- **HuggingFace TEI（Text Embedding Inference）**：Huggingface官方推出的工具包，专为高效部署嵌入模型设计。

#### 1.3.2 模型托管平台

这类平台**把模型当成服务管理起来**，底层可以配置不同的推理引擎。

- **Xinference（Xorbits Inference）**：杭州未来速度科技有限公司的大模型管理和推理服务平台，致力于打造一体化解决方案。支持LLM、Embedding、Rerank等多种模型托管。

#### 1.3.3 选型

企业级部署不考虑Ollama和llama.cpp。

##### ① LLM

可以用vLLM、SGLang、或者Xinference+vLLM引擎部署。

##### ② 嵌入模型

可以用Huggingface TEI和Xinference部署。

##### ③ 重排序模型

目前调研的产品，除了Ollama和llama.cpp，只有Xinference支持这类模型的部署。

##### ④ 最终选型

我们需要部署LLM、嵌入模型和重排序模型。最终选定XInference平台部署，原因如下。

① 可以向外提供统一的OpenAI API接口，像大模型厂商那样一个链接管理多个模型。

② 结合vLLM引擎部署LLM，可以获得极高的推理性能。

③ 嵌入模型和重排序模型只需要一次前向，和逐token生成的LLM相比，资源开销要小得多，因此对性能要求不高，XInference也支持这两种模型部署，这样我们可以用一个平台管理所有模型，运维成本低。

综上，我们选择 **Xinference 作为模型托管与推理服务框架**，并将其作为Dify的模型后端。

![image-20260108151939890](images/image-20260108151939890.png)

------

## 2、Dify平台私有化部署

### 2.1 Dify平台的介绍(复习)

Dify 作为一个综合性的 LLM 应用开发平台，内置了构建现代生成式 AI 应用所需的几乎所有关键技术栈。

它的具体功能如下：

- 基于Agent架构构建智能体应用
- 基于RAG构建私有知识库应用
- 基于Workflow构建智能工作流应用

Dify 是当今最优雅、门槛最低、最受欢迎、效果最好的大模型开发平台之一。

> 无论是经验丰富的程序员还是初涉AI领域的团队（如产品经理、运营人员），都能够快速、高效地搭建并运营生产级别的生成式 AI 应用。

官网：https://dify.ai/zh

文档说明：https://github.com/langgenius/dify/blob/main/README_CN.md

> 说明：访问Dify官网需要魔法（或梯子、科学上网）

### 2.2 租赁Dify服务器：腾讯云

企业用户可以选择租用云服务器，或者在本地的服务器中部署Dify。因为Dify所需的资源很小，一个轻量级的服务器足以支持运行。

我们需要租赁一个云服务器去运行Dify服务：腾讯云。

官网：https://cloud.tencent.com/

#### ① 基础配置

https://buy.cloud.tencent.com/cvm

如果是企业中使用或者个人资金充裕且业务稳定的话，可以选择长租使用。期望优惠的话，可以选择竞价实例。竞价实例，在性能和稳定性上，与按量计费模式没有差别。

> 竞价实例，只要有人租长期的服务器就有可能把你的服务器踢掉，实例被竞价释放也是有解决办法的，后续会去讲。

![image-20250624110356161](./images/image-20250624110356161.png)

地域选择：没有要求，自己根据需要选即可。

实例配置：根据自己需求选择，无具体要求。这里我选择4核8GB。

![image-20250624110821097](./images/image-20250624110821097.png)

镜像：选择CentOS、Ubuntu都可以，这里使用了Ubuntu。选择后点击下一步。

![image-20250624110837216](./images/image-20250624110837216.png)

![image-20250715145801269](images/image-20250715145801269.png)

#### ② 设置网络和主机

拉满带宽上限，新建安全组，把常用的端口都开启

![image-20250624110900269](./images/image-20250624110900269.png)

命名实例，设置密码，进行下一步

![image-20251120144226628](images/image-20251120144226628.png)

开通

![image-20250624110916265](./images/image-20250624110916265.png)

#### ③ 登录(使用Xshell或finalshell或windTerm)

![image-20250715151147907](images/image-20250715151147907.png)

创建好了，通过这个公网IP，端口使用22，账号ubuntu，密码使用你设置的密码。使用你的远程连接工具XShell 或 final shell 连接即可。

XShell界面如下：

![image-20250715151404191](images/image-20250715151404191.png)

### 2.3 部署Docker

部署dify平台，需要基于docker环境，而腾讯云新建的云平台上默认是没有docker的。接着，需要在腾讯云租用的服务器中部署Docker。

**什么是Docker？**

 <img src="images/image-20250811175107285.png" alt="image-20250811175107285" style="zoom:50%;" />

Docker是一种容器化技术，相较于传统的通过虚拟机技术实现的虚拟化方案来说，Docker是⼀种更加轻量级的虚拟化解决方案。

**它可以将应用程序及其依赖项打包成一个独立的容器，并在不同的环境中运行。**通过Docker容器， 开发者可以轻松地构建、部署和运行应用程序，而无需担心环境配置和依赖问题。

![image-20251129114916299](images/image-20251129114916299.png)

**使用Docker的好处：**

- `一次构建，到处运行`：你在自己电脑上开发测试好的程序，打成 Docker 镜像后，可以保证在生产服务器上跑起来的效果一模一样。再也不会出现“在我电脑上是好的啊！”这种问题。
- `环境隔离`：你可以同时运行一个项目的 Python 2 版本和 Python 3 版本，它们互不影响。
- `快速部署与扩展`：因为容器非常轻量，你可以瞬间启动成百上千个一样的容器来应对高流量（比如双十一抢购）。
- `简化配置`：环境配置都写在了“材料包”（镜像）里，新人接手项目时，不需要花几天时间配环境，直接一条命令就能让程序跑起来。

**场景：**

假设你开发了一个网站。

- **传统方式：** 你需要给运维人员一份长长的《环境配置手册》：“请先安装 CentOS 7，然后安装 Python 3.8.2，再安装 Nginx 1.18.0，配置如下……”。步骤繁琐，极易出错。
- **Docker 方式：** 你直接把整个网站和环境打包成一个 Docker 镜像。运维人员只需要执行一句简单的命令：`docker run [你的镜像名]`，一个完整、可运行的网站环境就在一秒内启动了。

按照下面的指令一步一步进行操作

```bash
#更新软件包
sudo apt update

sudo apt upgrade

#安装docker依赖
sudo apt install software-properties-common

sudo apt-get install ca-certificates curl gnupg lsb-release

#添加Docker官方GPG密钥
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

#添加Docker软件源（输入后根据提示按Enter）
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

#安装docker（输入后根据提示输入 y ）
sudo apt-get install docker-ce docker-ce-cli containerd.io --fix-missing
```

执行`sudo apt upgrade`的时候会出现这个界面，按回车即可

![image-20250811091630148](./images/image-20250811091630148.png)	

之后如果在这个界面卡住，按几下回车即可

![image-20250811091816244](./images/image-20250811091816244.png)

安装完毕，启动docker，并查看状态

```bash
sudo systemctl start docker

sudo systemctl status docker
```

如图所示即为启动成功

![image-20250715154645265](images/image-20250715154645265.png)

> 看到running状态说明docker已经正常启动

**注意：安装过程中如果报错如下：**

![image-20251117140452058](images/image-20251117140452058.png)

可以按如下操作步骤执行：

| 步骤                          | 关键检查点/操作                                              | 预期结果/说明                                                |
| :---------------------------- | :----------------------------------------------------------- | :----------------------------------------------------------- |
| 1. 验证Docker安装状态         | 运行 sudo systemctl status docker                            | 确认Docker服务当前的状态和错误日志。                         |
| 2. 检查并取消服务屏蔽         | 执行 sudo systemctl unmask docker.service                    | 解决服务被意外“屏蔽”导致无法启动的问题。                     |
| 3. 检查依赖服务状态           | 运行 systemctl list-dependencies docker.service.<br>如果containerd服务异常，尝试启动它：sudo systemctl start containerd | 查看Docker依赖的服务（如containerd）是否正常。<br>如果启动失败，进入第4步 |
| 4. 修复containerd（关键步骤） | 执行：① sudo apt-get update<br>② sudo apt-get install --reinstall containerd.io | 重新安装Docker的核心运行时依赖。                             |

如果以上步骤均无效，可以考虑彻底清理Docker及其相关组件后重新安装。这是解决文件损坏或版本冲突的可靠方法。

彻底卸载Docker：

```bash
sudo apt-get purge docker-ce docker-ce-cli containerd.io
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
```

### 2.4 部署Dify

官网：https://github.com/langgenius/dify

文档：https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose

安装 Dify 之前, 请确保你的机器已满足最低安装要求：

- CPU >= 2 Core
- RAM >= 4 GiB

#### ① 下载

> 注意：新版本Dify本地部署可能会出现各种兼容问题，强烈推荐**0.15.5**版本，稳定，功能效果一致！
>

在`/opt`下创建一个dify目录，用于存储dify源码：

```cmd
cd /opt
sudo mkdir dify #用于存储dify源码包
```

##### 方式1：离线下载包(推荐)

**离线下载源码包**（科学上网）

下载地址：https://github.com/langgenius/dify/releases/tag/0.15.5

![1763090017313](images/1763090017313.png)

> 注意：网不好同学，已经提前下载好，放在课程资料中！
>

利用远程连接工具（比如：XFTP）将dify源码包传递到服务器 /opt/dify文件夹中，并解压即可：

![image-20251120214856130](images/image-20251120214856130.png)

上传可能失败（因为默认ubuntu用户权限不足），解决办法如下

```bash
# 方式1：赋予指定用户指定目录的完全权限（使用777）
# 在Ubuntu终端xshell执行：sudo chmod -R 777 /目标目录的完整路径
sudo chmod -R 777 /opt/dify

# 方式2：先将文件上传到您的用户主目录（如 /home/ubuntu），这个目录通常有写入权限
# 然后使用XShell或终端，通过命令移动文件：sudo mv /home/ubuntu/文件名 /目标/path/
```

进行解压：

```cmd
#进入dify目录,在opt目录下执行：
cd ./dify
#解压
sudo tar -zxvf dify-0.15.5.tar.gz

cd /opt/dify/dify-0.15.5

pwd # 输出 /opt/dify/dify-0.15.5
```

![1763091789868](images/1763091789868.png)

##### 方式2：Gitee下载

如果使用github下载过慢，还可以使用码云（Gitee）或镜像网站替代 GitHub 直接下载，利用国内服务器加速。

操作步骤：

1）注册码云账号（[https://gitee.com ](https://gitee.com/)）。

2）在码云新建仓库，选择「导入GitHub仓库」，粘贴 `https://github.com/langgenius/dify.git ` 的链接 。

3）导入完成后，使用码云生成的仓库地址克隆：

```bash
sudo git clone https://gitee.com/你的用户名/dify.git
```

这里大家也可以直接使用我的链接：

```bash
sudo git clone https://gitee.com/shkstart/dify.git
```

![image-20250716231626295](./images/image-20250716231626295.png)

#### ② 使用docker启动Dify

1. 进入 Dify 源代码的 Docker 目录：

   ```cmd
   cd /opt/dify/dify-0.15.5/docker
   ```

2. 复制环境配置文件

   ```bash
   sudo cp .env.example .env
   ```

3. 启动 Docker 容器

   根据你系统上的 Docker Compose 版本，选择合适的命令来启动容器。你可以通过 ` docker compose version` 命令检查版本，详细说明请参考 [Docker 官方文档](https://docs.docker.com/compose/#compose-v2-and-the-new-docker-compose-command)：

   - 如果版本是 Docker Compose V2，使用以下命令（课程对应版本）：

     ```bash
     sudo docker compose up -d
     ```

   - 如果版本是 Docker Compose V1，使用以下命令：

     ```bash
     sudo docker-compose up -d
     ```

   说明：Docker 会自动帮你：拉取需要的镜像 → 创建容器 → 按顺序启动所有服务 → 后台运行。

4. 运行命令后，你应该会看到类似以下的输出，显示所有容器的状态和端口映射：

   注意：第一次拉取镜像，时间可能会很！！！

   ```cmd
   [+] Running 11/11
    ✔ Network docker_ssrf_proxy_network  Created                                         
    ✔ Network docker_default             Created                                         
    ✔ Container docker-redis-1           Started                                         
    ✔ Container docker-ssrf_proxy-1      Started                                         
    ✔ Container docker-sandbox-1         Started                                         
    ✔ Container docker-web-1             Started                                         
    ✔ Container docker-weaviate-1        Started                                         
    ✔ Container docker-db-1              Started                                         
    ✔ Container docker-api-1             Started                                         
    ✔ Container docker-worker-1          Started                                         
    ✔ Container docker-nginx-1           Started                                         
   ```

5. 最后检查是否所有容器都正常运行：

   ```cmd
   sudo docker compose ps
   ```

   在这个输出中，你应该可以看到包括 3 个业务服务 `api / worker / web`，以及 6 个基础组件 `weaviate / db / redis / nginx / ssrf_proxy / sandbox` 。

   ![image-20251117162409929](images/image-20251117162409929.png)

6. 停止Dify运行 

```cmd
#一键关停所有相关容器，干净不残留
docker compose down
```

7. 同步环境变量配置（重要！）

- 如果 `.env.example` 文件有更新，请务必同步修改你本地的 `.env` 文件。


- 检查 `.env` 文件中的所有配置项，确保它们与你的实际运行环境相匹配。你可能需要将 `.env.example` 中的新变量添加到 `.env` 文件中，并更新已更改的任何值。

#### ③ 常见问题解决

**问题1：安装 Dify常见问题和解决方案**

```cmd
sudo docker compose up -d
```

执行失败，大概率会由于网络问题或镜像缺失问题发生报错。

![image-20250715173421518](images/image-20250715173421518.png)

![image-20250605110352485](images/image-20250605110352485.png)

进行镜像源的配置

```bash
sudo vi /etc/docker/daemon.json
```

添加下面的配置

```bash
{
    "registry-mirrors": [
    "https://docker.unsee.tech",
    "https://dockerpull.org",
    "https://docker.1panel.live",
    "https://dockerhub.icu",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://registry.docker-cn.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com",
    "https://5tqw56kt.mirror.aliyuncs.com",
    "https://docker.hpcloud.cloud",
    "http://mirrors.ustc.edu.cn",
    "https://docker.chenby.cn",
    "https://docker.ckyl.me",
    "http://mirror.azure.cn",
    "https://hub.rat.dev"]
}
```

保存，然后在终端重新启动一下docker

```bash
# 重新登陆，需要输入密码
systemctl daemon-reload

systemctl restart docker
```

重新执行

```bash
sudo docker compose up -d
```

开始正常下载了

![image-20250605111023405](images/image-20250605111023405.png)

**问题2：可能出现报错，报错如下**

![image-20250605111647894](images/image-20250605111647894.png)

于是根据报错信息检查

```bash
sudo vi /etc/apparmor.d/tunables/home.d/ubuntu
```

删除掉报错信息中第七行的多余字符即可

![image-4f93a9cc-8b68-4b18-b9c2-bdab0b7c7902](images/image-4f93a9cc-8b68-4b18-b9c2-bdab0b7c7902-1749093640045-3.png)

重新运行，成功

![image-20250605112103687](./images/image-20250605112103687.png)

#### ④ 访问

你可以先前往管理员初始化页面设置设置管理员账户：

```bash
# 本地环境
http://localhost/install

# 服务器环境
http://your_server_ip/install
```

![image-20250717082751916](images/image-20250717082751916.png)

如图所示为成功访问，进行注册登陆即可

![image-20250717082902281](images/image-20250717082902281.png)

**注意：如果一直无法加载进去，则需要重启docker再次尝试**

#### ⑤ 设置镜像

为避免案例中的竞价实例被释放，可以在控制台中的快照中设置快照策略，即使被释放了也能保存快照，从而快速恢复

![image-20250624135512109](./images/image-20250624135512109.png)

![image-20250624135549495](./images/image-20250624135549495.png)

![image-20250624135559773](./images/image-20250624135559773.png)

再次进入定期快照策略可发现已设置成功

### 2.5 配置在线大模型

如果想调用线上的LLM，则可以用Dify选择线上的模型运营商。比如说可以在模型运营商中选择Deepseek

![image-20250606150306743](images/image-20250606150306743.png)

DeepSeek官网地址：https://www.deepseek.com/，在官网获取自己的API即可配置后使用

![image-20251120152435639](images/image-20251120152435639.png)

在这里我们可以使用提供的在线大模型运营商，但是为了考虑到可能存在的数据安全问题，所以我们自己部署Ollama和Xinference，进而部署私有的大模型。

![image-20250605135524234](images/image-20250605135524234.png)

## 3、模型部署

### 3.1 租赁GPU服务器：AutoDL

**AutoDL介绍**

这里我们选用AutoDL平台租赁服务器。这是一款面向开发者和企业的云计算平台，主要提供高性价比的`GPU算力资源`，支持AIGC、深度学习、云游戏、渲染测绘、元宇宙、HPC等应用。

**平台地址：**https://www.autodl.com/

> AutoDL服务器的资源比较紧俏，且比较贵
>
> - 一台机器开机一个小时平均花费2元
> - `建议`：一般早上开始工作的时候开机，在结束一天工作的时候关机。
>

#### ① 配置服务器+镜像

选择服务器：

这里可以选择西北B区的单卡4090作为我们的服务器，我们需要租赁两台服务器，一台部署Ollama，另一台部署Xinference。

注意：在AutoDL平台上，只提供了6006端口进行开放。

![image-20250623091017210](./images/image-20250623091017210.png)

> 注意：
>
> 1、这里推荐“西北地区”，因为会提供公网ip，其它地区不确定。
>
> 2、GPU推荐 RTX4090，3090等，其它显卡可能会出现后续不兼容情况。

选择镜像版本：

![image-20250623091120043](./images/image-20250623091120043.png)

#### ② XShell连接登录

复制该服务器的登录指令，通过远程连接工具进行登录

![image-20251117171226626](images/image-20251117171226626.png)

![image-20251117171604345](images/image-20251117171604345.png)

测试连接：

> 默认的用户名：root

![image-20250715171002228](images/image-20250715171002228.png)

连接成功

#### ③ 克隆实例

在关机状态下，进行实例克隆，创建出一个副本。

![image-20250624104356190](./images/image-20250624104356190.png)

设置一下备注名称

![image-20250624115829581](./images/image-20250624115829581.png)

#### ④ 开启学术资源加速

为下载一些外网的资源（比如Github、HuggingFace等），需要在**当前终端中**开启`学术资源加速`

> 免不了我们要在这个系统上安装一些软件。这些软件可能来自于如下的红框的位置。默认是下载不了的。那么就需要魔法或科学上网。这里我们称为：学术加速。

https://www.autodl.com/docs/network_turbo/

![image-20250623092008610](./images/image-20250623092008610.png)

将框选住的一行复制到终端输入即可

```bash
source /etc/network_turbo
```

![image-20250715171206300](images/image-20250715171206300.png)

### 3.2 部署Xinference

#### 1.准备conda环境

##### ① 创建conda环境

AutoDL的系统盘大小为30GB，数据盘大小为50GB，conda的默认工作路径在系统盘下，Xinference全家桶需要的空间比较大，可能导致系统盘被占满，因此，通过将环境文件放在数据盘下。

```shell
conda create -p /root/autodl-tmp/conda_envs/xinfer_env python=3.10
```

##### ② 初始化conda环境

```shell
conda init bash
source ~/.bashrc
```

##### ③ 激活conda环境

```shell
conda deactivate
conda activate /root/autodl-tmp/conda_envs/xinfer_env
```

##### ④ 验证conda是否创建成功

python和pip命令的路径在conda环境文件下，则创建成功。

```shell
which python
which pip
```

![image-20260108191249504](images/image-20260108191249504.png)

#### 2.部署Xinference

AutoDL学术加速默认用阿里云作为PyPi源，镜像中不包含XInference全家桶的num2words，会报错，所以将清华源作为备用源。

```shell
pip install "xinference[vllm,embedding,rerank,transformers]==1.16.0" \
--extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple
```

可以把安装服务放在后台

```shell
nohup pip install "xinference[vllm,embedding,rerank,transformers]==1.16.0" --extra-index-url https://pypi.tuna.tsinghua.edu.cn/simple >xinfer_install.log 2>&1 &
```

日志记录在xinfer_install.log，执行以下命令可以监听日志

```shell
tail -F xinfer_install.log
```

#### 3.启动XInference服务端

```shell
XINFERENCE_MODEL_SRC=modelscope xinference-local --host 0.0.0.0 --port 6006
```

XINFERENCE_MODEL_SRC=modelscope的作用是将默认的模型仓库从**Huggingface**更换为**魔搭**。

--host：指定监听网卡，0.0.0.0表示监听所有网卡的请求

--port：指定服务端口，默认9997

#### 4.访问XInference WebUI

##### ① 查看AutoDL自定义服务地址

![image-20260108211510204](images\image-20260108211510204.png)

![image-20260108211550310](images\image-20260108211550310.png)

AutoDL的云GPU服务器默认会将6006和6008映射为服务，XInference服务端监听了6006端口，访问对应链接即可访问Xinference的WebUI。

##### ② 访问Xinference的WebUI

![image-20260108211759797](images\image-20260108211759797.png)

### 3.3 部署LLM

#### 1.部署

##### ① 云端模型

我们可以让XInference平台帮我们从模型仓库下载并启动模型，前提是该模型被官方收录并支持。

以Qwen3-0.6B为例，参考官方文档

> https://inference.readthedocs.io/zh-cn/latest/models/builtin/llm/qwen3.html

![image-20260108170929872](images/image-20260108170929872.png)

Xinference把模型分成了很多模型族，每个模型族都包含一系列不同规模的模型，通过不同的属性配置区分。Qwen3-0.6B的模型族为qwen3，配置如上图所示。

启动命令如下

```shell
xinference launch \
  --model-engine vllm \
  --model-name qwen3 \
  --size-in-billions 0_6 \
  --model-format pytorch \
  --quantization none \
  --model-uid Qwen3-0.6B \
  --gpu_memory_utilization 0.6 \
  --max_model_len 1024 \
  --endpoint http://localhost:6006
```

`--model-engine vllm`：底层推理引擎

`--model-name qwen3`：模型族

`--size-in-billions 0_6`：模型规模，以10亿为单位

`--model-format pytorch`：权重文件格式

`--quantization none`：是否量化

`--model-uid Qwen3-0.6B`：模型uid，用于在Xinference中唯一区分模型，可以省略，有系统生成

`--gpu_memory_utilization 0.3`：vllm参数，模型占用GPU显存的百分比

`--max_model_len 1024`：vllm参数，模型支持的上下文长度

`--endpoint`：Xinference服务端入口

此时服务端可以看到模型正在下载。

![image-20260108212118040](images\image-20260108212118040.png)

模型部署完成

![image-20260108212536644](images\image-20260108212536644.png)

##### ② 本地模型文件

如果模型权重已被预下载到本地，可以执行以下命令。

```shell
xinference launch \
  --model-engine vllm \
  --model-name qwen3 \
  --size-in-billions 0_6 \
  --model-format pytorch \
  --quantization none \
  --model-path "{your_model_dir}" \
  --model-uid Qwen3-0.6B \
  --gpu_memory_utilization 0.6 \
  --max_model_len 1024 \
  --endpoint http://localhost:6006
```

`--model-path`：模型权重本地存储路径。

#### 2.测试

##### ① 查看模型部署情况

```shell
xinference list \
  --endpoint http://localhost:6006
```

![image-20260108212714979](images\image-20260108212714979.png)

##### ② WebUI

![image-20260108212753295](images\image-20260108212753295.png)

##### ③ 发送请求

```shell
curl http://localhost:6006/v1/chat/completions -H "Content-Type: application/json" -d '{
        "model": "Qwen3-0.6B",
        "messages": [
                {"role": "system", "content": "你是个乐于助人的助理。"},
                {"role": "user", "content": "你好啊"}
        ]
}'
```

响应如下

![image-20260108212842703](images\image-20260108212842703.png)

### 3.4 部署Embedding模型

#### 1.部署

##### ① 云端模型

```shell
xinference launch \
  --model-name bge-small-zh-v1.5 \
  --model-type embedding \
  --endpoint http://localhost:6006
```

`--model-name`：模型名称

`--model-type`：模型类型

正在下载

![image-20260108212906353](images\image-20260108212906353.png)

部署完成

![image-20260108212945656](images\image-20260108212945656.png)

##### ② 本地文件

```shell
xinference launch \
  --model-name bge-small-zh-v1.5 \
  --model-type embedding \
  --model-path "${your_model_path}" \
  --endpoint http://localhost:6006
```

`--model-path`：模型下载路径

#### 2.测试

##### ① 查看模型部署情况

```shell
xinference list \
  --endpoint http://localhost:6006
```

![image-20260108213004437](images\image-20260108213004437.png)

##### ② WebUI

![image-20260108213032943](images\image-20260108213032943.png)

##### ③ 发送请求

```shell
curl http://localhost:6006/v1/embeddings \
  -H "Content-Type: application/json" \
  -d '{
    "model": "bge-small-zh-v1.5",
    "input": "这是一个用于测试的中文句子"
  }'
```

响应如下

![image-20260108213047825](images\image-20260108213047825.png)

### 3.5 部署Rerank模型

#### 1.部署

```shell
xinference launch \
  --model-name bge-reranker-base \
  --model-type rerank \
  --endpoint http://localhost:6006
```

正在下载

![image-20260108213110855](images\image-20260108213110855.png)

部署完成

![image-20260108213504120](images\image-20260108213504120.png)

#### 2.测试

##### ① 查看模型部署情况

```shell
xinference list \
  --endpoint http://localhost:6006
```

![image-20260108213539125](images\image-20260108213539125.png)

##### ② WebUI

![image-20260108213552663](images\image-20260108213552663.png)

##### ③ 发送请求

```shell
curl http://localhost:6006/v1/rerank \
  -H 'Content-Type: application/json' \
  -d '
{
  "model": "bge-reranker-base",
  "query": "Apple",
  "documents": [
    "鸡蛋",
    "苹果",
    "iPhone",
    "香蕉"
  ],
  "instruction": "基于查询结果重排序",
  "top_n": 4
}
'
```

响应如下

![image-20260108213620574](images\image-20260108213620574.png)

### 3.6 Dify对接Xinference

#### 1. 安装XInference插件

![image-20260108213219258](images\image-20260108213219258.png)

搜索Xinference

![image-20260109095722398](images/image-20260109095722398.png)

安装插件

![image-20260109095752614](images/image-20260109095752614.png)

![image-20260109095805171](images/image-20260109095805171.png)

安装完成后即可看到XInference

![image-20260109100028045](images/image-20260109100028045.png)

#### 2. 添加LLM

![image-20260109100003190](images/image-20260109100003190.png)

![image-20260108214024621](images\image-20260108214024621.png)

在XInference插件下可以看到模型，则配置成功

![image-20260108214056901](images\image-20260108214056901.png)

#### 3. 添加Embedding模型

![image-20260108214231692](images\image-20260108214231692.png)

![image-20260108214300630](images\image-20260108214300630.png)

#### 4. 添加Rerank模型

![image-20260108214414548](images\image-20260108214414548.png)

![image-20260108214432430](images\image-20260108214432430.png)
