恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Dify 服务器:Ollama 模型迁移 + Xinference 接入实录
首页
资讯中心
/
Dify 服务器:Ollama 模型迁移 + Xinference 接入实录
Dify 服务器:Ollama 模型迁移 + Xinference 接入实录
发布时间:2026/8/29 4:48:53
Dify 服务器Ollama 模型迁移 Xinference 接入实录1. 架构目标A服务器 ├── Dify └── OllamaLLM B服务器 └── Xinference ├── Embedding └── Rerank第一部分Ollama 模型迁移到/data2. 系统盘 99%A 服务器最初系统盘 / 48G已用 45G99% 数据盘 /data 49G几乎空闲排查【无需切 Conda 环境】dockerinfo--formatDocker目录: {{.DockerRootDir}}dockersystemdfdu-sh/var/lib/docker2/dev/nulldu-sh/root/.ollama2/dev/nulldu-sh/usr/share/ollama/.ollama2/dev/nulldu-xhd1/2/dev/null|sort-h实际DockerRootDir: /var/lib/docker /var/lib/docker 约 27G /usr/share/ollama/.ollama 约 17G结论docker system prune只能回收约 180MB先迁移 Ollama 模型。3. 检查 Ollama 配置echo Ollama 服务配置 systemctlcatollamaecho Ollama 服务运行用户 systemctl show ollama-pUserecho Ollama 模型目录详情 du-h--max-depth2/usr/share/ollama/.ollama2/dev/null|sort-h|tail-20echo Ollama 当前模型 ollama list实际配置ExecStart/usr/local/bin/ollama serve Userollama Groupollama EnvironmentOLLAMA_HOST0.0.0.0:8891ollama list当时失败是因为服务监听 8891。验证systemctl status ollama --no-pager ss-lntp|grep8891curl-shttp://127.0.0.1:8891/api/tagsOLLAMA_HOSThttp://127.0.0.1:8891 ollama list4. 正式迁移【无需切 Conda 环境】echo 1. 停止 Ollama systemctl stop ollamaechoecho 2. 创建新的模型目录 mkdir-p/data/ollama/modelsechoecho 3. 复制现有 17G 模型到数据盘 cp-a/usr/share/ollama/.ollama/models/. /data/ollama/models/echoecho 4. 修正目录权限 chown-Rollama:ollama /data/ollamaechoecho 5. 对比迁移前后文件数量 echo旧目录文件数find/usr/share/ollama/.ollama/models-typef|wc-lecho新目录文件数find/data/ollama/models-typef|wc-lechoecho 6. 对比迁移前后容量 du-sh/usr/share/ollama/.ollama/modelsdu-sh/data/ollama/modelsechoecho 7. 配置 Ollama 使用新模型目录 mkdir-p/etc/systemd/system/ollama.service.dcat/etc/systemd/system/ollama.service.d/override.confEOF [Service] EnvironmentOLLAMA_MODELS/data/ollama/models EOFechoecho 8. 重新加载并启动 Ollama systemctl daemon-reload systemctl start ollamasleep5echoecho 9. 检查 Ollama 服务 systemctl is-active ollama systemctl is-enabled ollamaechoecho 10. 确认 OLLAMA_MODELS 已生效 systemctl show ollama-pEnvironmentechoecho 11. 检查 8891 ss-lntp|grep8891echoecho 12. 从新目录读取模型列表 curl-shttp://127.0.0.1:8891/api/tagsechoecho 13. 最后检查磁盘 df-h/ /data迁移后OLLAMA_MODELS/data/ollama/models 旧目录约 17G 新目录约 17G 旧目录文件数 6 新目录文件数 6 qwen3.8:latest 仍能看到5. 实际推理验证curl--max-time300-sShttp://127.0.0.1:8891/api/generate-HContent-Type: application/json-d{ model: qwen3.8:latest, prompt: 请只回答Ollama模型迁移测试成功, stream: false }systemctl is-active ollama nvidia-smi journalctl-uollama-n30--no-pagerdf-h/ /data实际response: Ollama模型迁移测试成功 done: true POST /api/generate - 2006. 删除旧模型副本确认/data/ollama/models实际推理成功后使用systemctl show ollama-pEnvironment --no-pager|tr |grep-EOLLAMA_HOST|OLLAMA_MODELSsystemctl stop ollamarm-rf/usr/share/ollama/.ollama/modelsif[!-e/usr/share/ollama/.ollama/models];thenecho旧模型目录已删除 ✅elseecho旧模型目录仍然存在 ❌fidu-sh/data/ollama/modelsfind/data/ollama/models-typef|wc-lsystemctl start ollamasleep5systemctl is-active ollama systemctl is-enabled ollama ss-lntp|grep8891curl-shttp://127.0.0.1:8891/api/tagsdf-h/ /data后续诊断时系统盘已确认降到48G 总量29G 已用17G 可用64%第二部分Xorbits Inference 插件安装7. 第一次安装失败错误failed to launch plugin failed to install dependencies signal: killed init process exited due to no activity for 120 seconds failed to init environment日志显示仍从files.pythonhosted.org下载依赖120 秒后被终止。8. 诊断 plugin_daemonecho 1. 当前磁盘 df-h/ /dataechoecho 2. 找到 plugin_daemon 容器 dockerps--formattable {{.Names}} {{.Image}} {{.Status}}|grep-Eiplugin|NAMEechoecho 3. 获取 plugin_daemon 容器 ID PLUGIN_CID$(dockerps-q--filternameplugin_daemon|head-1)echoPLUGIN_CID$PLUGIN_CIDechoecho 4. 检查是不是 OOM 被杀 dockerinspect$PLUGIN_CID--formatOOMKilled{{.State.OOMKilled}} Status{{.State.Status}} ExitCode{{.State.ExitCode}}echoecho 5. 查看当前插件安装超时和镜像配置 dockerexec$PLUGIN_CIDsh-lc env | grep -E PYTHON_ENV_INIT_TIMEOUT|PIP_MIRROR|PLUGIN_IGNORE_UV_LOCK|UV_HTTP|UV_INDEX|UV_DEFAULT | sort echoecho 6. 查看 Dify docker-compose 所在目录 dockerinspect$PLUGIN_CID--format{{ index .Config.Labels com.docker.compose.project.working_dir }}echoecho 7. 最近插件守护进程日志 dockerlogs--tail80$PLUGIN_CID21实际系统盘 64% OOMKilledfalse PIP_MIRROR_URL PLUGIN_PYTHON_ENV_INIT_TIMEOUT120 PYTHON_ENV_INIT_TIMEOUT120 /data/dify/dify/docker9. 修复 plugin_daemon 国内下载与超时cd/data/dify/dify/docker||exit1cp.env.env.bak.$(date%Y%m%d_%H%M%S)sed-i/^PLUGIN_PYTHON_ENV_INIT_TIMEOUT/d.envsed-i/^PIP_MIRROR_URL/d.envsed-i/^PLUGIN_IGNORE_UV_LOCK/d.envsed-i/^PYTHON_COMPILE_ALL_EXTRA_ARGS/d.envcat.envEOF # Plugin Daemon 中国大陆依赖安装优化 PLUGIN_PYTHON_ENV_INIT_TIMEOUT1200 PIP_MIRROR_URLhttps://mirrors.aliyun.com/pypi/simple/ PLUGIN_IGNORE_UV_LOCKtrue PYTHON_COMPILE_ALL_EXTRA_ARGS-x \.venv EOFgrep-E^(PLUGIN_PYTHON_ENV_INIT_TIMEOUT|PIP_MIRROR_URL|PLUGIN_IGNORE_UV_LOCK|PYTHON_COMPILE_ALL_EXTRA_ARGS).envdockercompose up-d--force-recreate plugin_daemonsleep8dockercomposepsplugin_daemonPLUGIN_CID$(dockercomposeps-qplugin_daemon)dockerexec$PLUGIN_CIDsh-lc env | grep -E PYTHON_ENV_INIT_TIMEOUT|PIP_MIRROR_URL|PLUGIN_IGNORE_UV_LOCK|PYTHON_COMPILE_ALL_EXTRA_ARGS | sort dockerlogs--tail40$PLUGIN_CID21确认PIP_MIRROR_URLhttps://mirrors.aliyun.com/pypi/simple/ PLUGIN_IGNORE_UV_LOCKtrue PLUGIN_PYTHON_ENV_INIT_TIMEOUT1200 PYTHON_COMPILE_ALL_EXTRA_ARGS-x \.venv PYTHON_ENV_INIT_TIMEOUT1200之后重新安装Xorbits Inference成功。10. 安装 Xorbits Inference 供应商Dify - 集成 - 模型供应商 - 安装 - 搜索 Xorbits Inference第三部分Dify 配置 Xinference11. Xinference 侧创建 Dify 用户和 API Key用户dify 权限查看模型列表、读取模型信息在 API Key 管理中创建属于dify的 API Key。12. Dify 添加bge-m3模型名称bge-m3 模型类型Text Embedding / 文本嵌入 凭据名称xinference-bge-m3 服务器URLhttp://140.210.92.250:15790 模型UIDbge-m3 API密钥dify 用户的完整 API Key 调用超时时间60 调用重试次数313. 故障401 Could not validate credentials第一次添加时get xinference model extra parameter failed status code: 401 {detail:Could not validate credentials}A 服务器测试IFSread-r-s-p请粘贴完整 API Key然后按回车: XINF_KEYechoechoKey长度:${#XINF_KEY}curl-sS-w HTTP_STATUS%{http_code} http://140.210.92.250:15790/v1/models-HAuthorization: Bearer${XINF_KEY}curl-sS-w HTTP_STATUS%{http_code} http://140.210.92.250:15790/v1/models/bge-m3-HAuthorization: Bearer${XINF_KEY}unsetXINF_KEY首次实际结果Key长度: 4 HTTP_STATUS401原因粘贴的不是完整 API Key。重新从 Xinference API Key 管理复制完整 Key 后再填 Dify。14.bge-m3已成功加入 Dify最终页面Xorbits Inference └── bge-m3 TEXT EMBEDDING 已启用15.bge-reranker-v2-m3配置参数本次对话中已明确参数但截至当前消息没有确认最终添加成功因此只记录参数不写成已完成模型名称bge-reranker-v2-m3 模型类型Rerank / 重排序 凭据名称xinference-rerank 服务器URLhttp://140.210.92.250:15790 模型UIDbge-reranker-v2-m3 API密钥与 bge-m3 相同的 dify API Key 调用超时时间60 调用重试次数3最终已确认状态A服务器 ├── Dify ├── Ollama │ ├── OLLAMA_HOST0.0.0.0:8891 │ ├── OLLAMA_MODELS/data/ollama/models │ └── qwen3.8:latest 实际推理成功 └── Xorbits Inference 插件已安装 └── bge-m3 已成功配置为 TEXT EMBEDDING B服务器 └── Xinference ├── http://140.210.92.250:15790 - 8890 ├── bge-m3 └── bge-reranker-v2-m3故障处理汇总问题实际原因实际处理A 服务器系统盘 99%Docker Ollama 模型占系统盘将 Ollama 17G 模型迁到/data/ollama/models实际推理后删除旧副本ollama list连接失败Ollama 服务监听 8891用curl http://127.0.0.1:8891/api/tags或指定OLLAMA_HOSTXorbits 插件安装 120 秒被 killplugin_daemon 无国内镜像且超时 120 秒配置阿里云源、1200 秒超时、PLUGIN_IGNORE_UV_LOCKtrue后重建 plugin_daemonDify 添加 bge-m3 返回 401实际粘贴的 Key 长度只有 4重新复制完整 API Key 后添加成功