OneAPI无法访问xinference,报网络错误 #374

Closed
opened 2024-11-13 09:09:42 +08:00 by 12657640418cs · 1 comment

一、服务器环境:Ubuntu20.4, CUDA11.4, 显卡是Tesla P4,服务器未限制端口,未启用防火墙(局域网使用)。

二、测试服务器:另外一台windows 2012用于测试大模型架设情况。

布署说明:

  1. 在本地使用docker-compose.yml布署了fastGPT,OneAPI,PG,MySQL,MogoDB正常启动,并且在测试服务器中可以通过地址正常访问。
  2. 使用docker run xxxx直接运行安装的xinference,安装运行成功后,本地布署了qwen2.5-instruct模型,并且在windows上通过地址访问xinference进行了大模型的测试,没有问题。
  3. 从Linux服务器上使用127.0.0.1访问xinference的9997端口也可以正常访问到大模型。

问题描述:布署完成后,在windows服务器上可以访问fastGPT,oneapi,xinference。并且在xinference中测试大模型也可以正常访问。但在配置使用oneAPI访问xinference的时候报网络错误,报错如下:

错误:do request failed: Post "http://192.168.1.200:9997/v1/chat/completions": dial tcp 192.168.1.200:9997: i/o timeout

附docker-compose.yml文件内容如下:

version: '3.3'
services:
pg:
#image: pgvector/pgvector:0.7.0-pg15 # docker hub
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云
container_name: pg
restart: always
ports: # 生产环境建议不要暴露
- 5432:5432
networks:
- fastgpt
environment:
# 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果
- POSTGRES_USER=username
- POSTGRES_PASSWORD=password
- POSTGRES_DB=postgres
volumes:
- ./pg/data:/var/lib/postgresql/data
mongo:
#image: mongo:5.0.18 # dockerhub
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云
# image: mongo:4.4.29 # cpu不支持AVX时候使用
container_name: mongo
restart: always
ports:
- 27017:27017
networks:
- fastgpt
command: mongod --keyFile /data/mongodb.key --replSet rs0
environment:
- MONGO_INITDB_ROOT_USERNAME=myusername
- MONGO_INITDB_ROOT_PASSWORD=mypassword
volumes:
- ./mongo/data:/data/db
entrypoint:
- bash
- -c
- |
openssl rand -base64 128 > /data/mongodb.key
chmod 400 /data/mongodb.key
chown 999:999 /data/mongodb.key
echo 'const isInited = rs.status().ok === 1
if(!isInited){
rs.initiate({
_id: "rs0",
members: [
{ _id: 0, host: "mongo:27017" }
]
})
}' > /data/initReplicaSet.js
# 启动MongoDB服务
exec docker-entrypoint.sh "$$@" &

    # 等待MongoDB服务启动
    until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do
      echo "Waiting for MongoDB to start..."
      sleep 2
    done

    # 执行初始化副本集的脚本
    mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js

    # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程
    wait $$!

fastgpt

sandbox:
container_name: sandbox
# image: ghcr.io/labring/fastgpt-sandbox:latest # git
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:latest # 阿里云
networks:
- fastgpt
restart: always
fastgpt:
container_name: fastgpt
# image: ghcr.io/labring/fastgpt:v4.8.8-fix2 # git
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.8-fix2 # 阿里云
ports:
- 3000:3000
networks:
- fastgpt
depends_on:
- mongo
- pg
- sandbox
restart: always
environment:
# root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。
- DEFAULT_ROOT_PSW=1234
# AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。
- OPENAI_BASE_URL=http://oneapi:3000/v1
# AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改)
- CHAT_API_KEY=sk-fastgpt
# 数据库最大连接数
- DB_MAX_LINK=30
# 登录凭证密钥
- TOKEN_KEY=any
# root的密钥,常用于升级时候的初始化请求
- ROOT_KEY=root_key
# 文件阅读加密
- FILE_TOKEN_KEY=filetoken
# MongoDB 连接参数. 用户名myusername,密码mypassword。
- MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin
# pg 连接参数
- PG_URL=postgresql://username:password@pg:5432/postgres
# sandbox 地址
- SANDBOX_URL=http://sandbox:3000
# 日志等级: debug, info, warn, error
- LOG_LEVEL=info
- STORE_LOG_LEVEL=warn
volumes:
- ./config.json:/app/data/config.json

oneapi

mysql:
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云
# image: mysql:8.0.36
container_name: mysql
restart: always
ports:
- 3306:3306
networks:
- fastgpt
command: --default-authentication-plugin=mysql_native_password
environment:
# 默认root密码,仅首次运行有效
MYSQL_ROOT_PASSWORD: oneapimmysql
MYSQL_DATABASE: oneapi
volumes:
- ./mysql:/var/lib/mysql
oneapi:
container_name: oneapi
# image: ghcr.io/songquanpeng/one-api:v0.6.7
image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云
ports:
- 3001:3000
depends_on:
- mysql
networks:
- fastgpt
restart: always
environment:
# mysql 连接参数
- SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi
# 登录凭证加密密钥
- SESSION_SECRET=oneapikey
# 内存缓存
- MEMORY_CACHE_ENABLED=true
# 启动聚合更新,减少数据交互频率
- BATCH_UPDATE_ENABLED=true
# 聚合更新时长
- BATCH_UPDATE_INTERVAL=10
# 初始化的 root 密钥(建议部署完后更改,否则容易泄露)
- INITIAL_ROOT_TOKEN=fastgpt
volumes:
- ./oneapi:/data
networks:
fastgpt:

附docker运行安装xinference命令如下:
docker run
-d
-e XINFERENCE_MODEL_SRC=modelscope
-v $(pwd)/.xinference:/root/.xinference
-v /home/security/.cache/huggingface:/root/.cache/huggingface
-v /home/security/.cache/modelscope:/root/.cache/modelscope
-p 9997:9997
--gpus all
registry.cn-hangzhou.aliyuncs.com/xprobe_xinference/xinference
xinference-local -H 0.0.0.0

附OneAPI渠道配置如下:

image

附使用xinference中的swagger文件测试如下:

image

问题可能原因

根据报错的方向排查,可能就是网络访问不可达,但是从本机和windows测试服务器上访问都是可以的,所以怀疑是docker内部的环境问题,后面发现通过docker inspect xxxx查docker中运行的各个镜像容器发现用docker-compose.yml文件安装的fastGPT\oneAPI在docker内部是172.18.0.x的网段。而通过docker run运行的xinference的docker内部IP是172.17.0.X的网段。如下:

Xinference配置:
image

OneAPI配置:
image

### 一、服务器环境:Ubuntu20.4, CUDA11.4, 显卡是Tesla P4,服务器未限制端口,未启用防火墙(局域网使用)。 ### 二、测试服务器:另外一台windows 2012用于测试大模型架设情况。 ### 布署说明: 1. 在本地使用docker-compose.yml布署了fastGPT,OneAPI,PG,MySQL,MogoDB正常启动,并且在测试服务器中可以通过地址正常访问。 2. 使用docker run xxxx直接运行安装的xinference,安装运行成功后,本地布署了qwen2.5-instruct模型,并且在windows上通过地址访问xinference进行了大模型的测试,没有问题。 3. 从Linux服务器上使用127.0.0.1访问xinference的9997端口也可以正常访问到大模型。 ### 问题描述:布署完成后,在windows服务器上可以访问fastGPT,oneapi,xinference。并且在xinference中测试大模型也可以正常访问。但在配置使用oneAPI访问xinference的时候报网络错误,报错如下: 错误:do request failed: Post "http://192.168.1.200:9997/v1/chat/completions": dial tcp 192.168.1.200:9997: i/o timeout **附docker-compose.yml文件内容如下:** > version: '3.3' services: pg: #image: pgvector/pgvector:0.7.0-pg15 # docker hub image: registry.cn-hangzhou.aliyuncs.com/fastgpt/pgvector:v0.7.0 # 阿里云 container_name: pg restart: always ports: # 生产环境建议不要暴露 - 5432:5432 networks: - fastgpt environment: # 这里的配置只有首次运行生效。修改后,重启镜像是不会生效的。需要把持久化数据删除再重启,才有效果 - POSTGRES_USER=username - POSTGRES_PASSWORD=password - POSTGRES_DB=postgres volumes: - ./pg/data:/var/lib/postgresql/data mongo: #image: mongo:5.0.18 # dockerhub image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mongo:5.0.18 # 阿里云 # image: mongo:4.4.29 # cpu不支持AVX时候使用 container_name: mongo restart: always ports: - 27017:27017 networks: - fastgpt command: mongod --keyFile /data/mongodb.key --replSet rs0 environment: - MONGO_INITDB_ROOT_USERNAME=myusername - MONGO_INITDB_ROOT_PASSWORD=mypassword volumes: - ./mongo/data:/data/db entrypoint: - bash - -c - | openssl rand -base64 128 > /data/mongodb.key chmod 400 /data/mongodb.key chown 999:999 /data/mongodb.key echo 'const isInited = rs.status().ok === 1 if(!isInited){ rs.initiate({ _id: "rs0", members: [ { _id: 0, host: "mongo:27017" } ] }) }' > /data/initReplicaSet.js # 启动MongoDB服务 exec docker-entrypoint.sh "$$@" & # 等待MongoDB服务启动 until mongo -u myusername -p mypassword --authenticationDatabase admin --eval "print('waited for connection')" > /dev/null 2>&1; do echo "Waiting for MongoDB to start..." sleep 2 done # 执行初始化副本集的脚本 mongo -u myusername -p mypassword --authenticationDatabase admin /data/initReplicaSet.js # 等待docker-entrypoint.sh脚本执行的MongoDB服务进程 wait $$! # fastgpt sandbox: container_name: sandbox # image: ghcr.io/labring/fastgpt-sandbox:latest # git image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt-sandbox:latest # 阿里云 networks: - fastgpt restart: always fastgpt: container_name: fastgpt # image: ghcr.io/labring/fastgpt:v4.8.8-fix2 # git image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.8-fix2 # 阿里云 ports: - 3000:3000 networks: - fastgpt depends_on: - mongo - pg - sandbox restart: always environment: # root 密码,用户名为: root。如果需要修改 root 密码,直接修改这个环境变量,并重启即可。 - DEFAULT_ROOT_PSW=1234 # AI模型的API地址哦。务必加 /v1。这里默认填写了OneApi的访问地址。 - OPENAI_BASE_URL=http://oneapi:3000/v1 # AI模型的API Key。(这里默认填写了OneAPI的快速默认key,测试通后,务必及时修改) - CHAT_API_KEY=sk-fastgpt # 数据库最大连接数 - DB_MAX_LINK=30 # 登录凭证密钥 - TOKEN_KEY=any # root的密钥,常用于升级时候的初始化请求 - ROOT_KEY=root_key # 文件阅读加密 - FILE_TOKEN_KEY=filetoken # MongoDB 连接参数. 用户名myusername,密码mypassword。 - MONGODB_URI=mongodb://myusername:mypassword@mongo:27017/fastgpt?authSource=admin # pg 连接参数 - PG_URL=postgresql://username:password@pg:5432/postgres # sandbox 地址 - SANDBOX_URL=http://sandbox:3000 # 日志等级: debug, info, warn, error - LOG_LEVEL=info - STORE_LOG_LEVEL=warn volumes: - ./config.json:/app/data/config.json # oneapi mysql: image: registry.cn-hangzhou.aliyuncs.com/fastgpt/mysql:8.0.36 # 阿里云 # image: mysql:8.0.36 container_name: mysql restart: always ports: - 3306:3306 networks: - fastgpt command: --default-authentication-plugin=mysql_native_password environment: # 默认root密码,仅首次运行有效 MYSQL_ROOT_PASSWORD: oneapimmysql MYSQL_DATABASE: oneapi volumes: - ./mysql:/var/lib/mysql oneapi: container_name: oneapi # image: ghcr.io/songquanpeng/one-api:v0.6.7 image: registry.cn-hangzhou.aliyuncs.com/fastgpt/one-api:v0.6.6 # 阿里云 ports: - 3001:3000 depends_on: - mysql networks: - fastgpt restart: always environment: # mysql 连接参数 - SQL_DSN=root:oneapimmysql@tcp(mysql:3306)/oneapi # 登录凭证加密密钥 - SESSION_SECRET=oneapikey # 内存缓存 - MEMORY_CACHE_ENABLED=true # 启动聚合更新,减少数据交互频率 - BATCH_UPDATE_ENABLED=true # 聚合更新时长 - BATCH_UPDATE_INTERVAL=10 # 初始化的 root 密钥(建议部署完后更改,否则容易泄露) - INITIAL_ROOT_TOKEN=fastgpt volumes: - ./oneapi:/data networks: fastgpt: **附docker运行安装xinference命令如下:** docker run \ -d \ -e XINFERENCE_MODEL_SRC=modelscope \ -v $(pwd)/.xinference:/root/.xinference \ -v /home/security/.cache/huggingface:/root/.cache/huggingface \ -v /home/security/.cache/modelscope:/root/.cache/modelscope \ -p 9997:9997 \ --gpus all \ registry.cn-hangzhou.aliyuncs.com/xprobe_xinference/xinference \ xinference-local -H 0.0.0.0 **附OneAPI渠道配置如下:** ![image](/attachments/a7c802c3-b0bb-4976-a733-04627a51a5ad) **附使用xinference中的swagger文件测试如下:** ![image](/attachments/836b6155-caeb-4101-9a0e-109c98f31c2b) ### 问题可能原因 根据报错的方向排查,可能就是网络访问不可达,但是从本机和windows测试服务器上访问都是可以的,所以怀疑是docker内部的环境问题,后面发现通过docker inspect xxxx查docker中运行的各个镜像容器发现用docker-compose.yml文件安装的fastGPT\oneAPI在docker内部是172.18.0.x的网段。而通过docker run运行的xinference的docker内部IP是172.17.0.X的网段。如下: Xinference配置: ![image](/attachments/5e616163-4fc5-403d-b810-415c27caaec7) OneAPI配置: ![image](/attachments/92a0391c-2159-4859-9b08-05950ef84493)
Author

已解决,服务器防火墙端口未开启。

已解决,服务器防火墙端口未开启。
Sign in to join this conversation.
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: HswOAuth/llm_course#374
No description provided.