ninfer让1张5090跑Qwen3.8-27B全量大模型
bug反馈可以加入科哥专属群交流➕ 广告勿进!


【插入一个小广告 给需要做ai视频,图片,短剧等多一个选择】:
✅主打廉价稳定模型中转站推荐:https://vip.kegeai.top
✅推荐一个在线AIGC生成的平台:支持无限画布,智能体,API接口,3D导演台等
✅功能趋于libTV,关键是模型众多,价格美丽!
✅国内外模型全部具备,aigc创多不可多得
在线图片、视频生成网站哈基米AI聚合平台:https://link8.lk888.ai/
✅杀疯了!!!在线sd2.5模型最低6毛钱一秒!!!
✅ai大模型:gpt,claude,gemini,deepseek...数百种主流模型
✅最新图片模型:gpt-image2,香蕉2,香蕉pro,即梦,豆包,万相...
✅最新视频模型:sd2,快乐马,grok,veo3,sora2,vidu,可灵...
✅并发高,收费合理(价格优先速度优先)
以上模型均支持API,龙虾CLI接入,web浏览器在线使用!
✅Seedance火山引擎-企业API可以私
咨询问题前请注意:
1.先说明哪个镜像,发镜像链接和名称,例如:
千问图像2.1最新模型量化版破限工作流大集合
2.先拿到运行报错的log日志或者截图:
没有上面的信息我也没有办法帮到你的,因为镜像比较多,我不清楚你问的哪个镜像的
感谢使用!感谢理解! 感谢支持!
本手册面向已经拿到可用环境的用户,只讲启动之后怎么用,不包含安装、编译和模型转换步骤。
当前默认部署包含:
| 服务 | 默认地址 | 用途 |
|---|---|---|
| OpenWebUI | http://<服务器IP>:7860 | 浏览器对话界面 |
| NInfer API | http://<服务器IP>:8080/v1 | OpenAI / Anthropic 兼容接口 |
| NInfer Monitor | http://<服务器IP>:8899 | 性能与请求监控 |
当前加载的模型:
模型 ID:qwen3.8-flash-next
最大上下文:8192 tokens
下文用 10.60.10.226 作为示例服务器 IP,请替换成你自己的地址。
在项目根目录执行:
cd /root/Qwen3.8-Flash-Next-NInfer
./start_app.sh
脚本会:
8080、8899、7860 是否被占用。注意:
./start_app.sh,否则会杀掉当前进程并重新加载。终端出现类似下面的日志后,表示三个服务都已经启动:
start_app: monitor listening on 0.0.0.0:8899
start_app: OpenWebUI listening on 0.0.0.0:7860
start_app: starting NInfer Serve; press Ctrl-C to stop all services
主程序加载完成后,可以用下面的命令确认:
curl --noproxy '*' http://127.0.0.1:8080/health
正常返回:
{"status":"ok"}
如果返回 503 或连接失败,说明模型还没有加载完,继续等待终端进度。
7860。8080。8899。在浏览器访问:
http://10.60.10.226:7860
首次使用时会显示登录/注册页面:
如果页面提示需要管理员创建账号,请联系环境管理员。
进入对话页面后,在输入框附近找到模型选择器,选择:
qwen3.8-flash-next
如果没有看到模型:
/health 已经返回 200。示例问题:
用三句话解释什么是 KV Cache。
在对话输入框附近通常有“参数/控制”面板,可以调整:
temperature:随机性。越低越稳定,越高越发散。max tokens:本次回答的最大生成长度。system prompt:系统提示词,用于设定角色和回答风格。当前模型默认开启思考模式,因此:
max tokens 也会被思考内容消耗。max tokens。Qwen3.8-Flash-Next 默认会先思考再回答:
content 中。当前启动配置下:
vision = false)。speculative.backend = "none")。如果上传图片或视频,接口会返回 400 vision_disabled,这是配置限制,不是页面故障。
Base URL:http://10.60.10.226:8080/v1
模型 ID:qwen3.8-flash-next
当前默认配置没有设置 API Key,因此可以直接访问。如果管理员通过 NINFER_API_KEY 启动了服务,则请求需要带:
Authorization: Bearer <你的密钥>
curl --noproxy '*' http://127.0.0.1:8080/health
返回 {"status":"ok"} 表示可以接收请求;返回 503 表示引擎不可用。
curl --noproxy '*' http://127.0.0.1:8080/v1/models
返回示例:
{
"object": "list",
"data": [
{
"id": "qwen3.8-flash-next",
"object": "model",
"owned_by": "ninfer",
"max_model_len": 8192
}
]
}
curl --noproxy '*' http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.8-flash-next",
"messages": [
{"role": "system", "content": "回答要简洁。"},
{"role": "user", "content": "用一句话解释前缀缓存。"}
],
"max_tokens": 256
}'
返回中常见字段:
choices[0].message.content:最终答案。choices[0].message.reasoning_content:思考内容(如果模型产生)。usage:token 用量。timings:NInfer 扩展的耗时统计。curl --noproxy '*' -N http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.8-flash-next",
"messages": [
{"role": "user", "content": "写一个 5 行的 Python 示例。"}
],
"max_tokens": 512,
"stream": true,
"stream_options": {"include_usage": true}
}'
服务端使用 SSE 返回:
data: [DONE]。include_usage 后,最后会有一个包含用量信息的空 choices 数据块。先安装并确认你的 Python 环境有 openai 包,然后:
from openai import OpenAI
client = OpenAI(
base_url="http://10.60.10.226:8080/v1",
api_key="ninfer-local", # 服务未启用鉴权时,任意非空字符串即可
)
response = client.chat.completions.create(
model="qwen3.8-flash-next",
messages=[
{"role": "system", "content": "回答要简洁。"},
{"role": "user", "content": "介绍一下你自己。"},
],
max_tokens=256,
)
message = response.choices[0].message
print(message.content)
# reasoning_content 是兼容扩展字段,部分 SDK 版本需要从 model_extra 读取
extra = getattr(message, "model_extra", None) or {}
print(extra.get("reasoning_content", ""))
说明:
api_key 不能为空字符串;服务未启用鉴权时传 ninfer-local 即可。NINFER_API_KEY,这里要换成真实密钥。NInfer 还提供:
| 协议 | 路径 |
|---|---|
| OpenAI Responses | POST /v1/responses |
| OpenAI Responses 输入 token 计数 | POST /v1/responses/input_tokens |
| Responses 状态查询 | GET /v1/responses/{id} |
| Responses 输入项查询 | GET /v1/responses/{id}/input_items |
| Anthropic Messages | POST /v1/messages |
| Anthropic 输入 token 计数 | POST /v1/messages/count_tokens |
Anthropic 风格示例:
curl --noproxy '*' http://127.0.0.1:8080/v1/messages \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.8-flash-next",
"max_tokens": 256,
"messages": [
{"role": "user", "content": "用一句话说明什么是 MoE。"}
]
}'
Responses 风格示例:
curl --noproxy '*' http://127.0.0.1:8080/v1/responses \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.8-flash-next",
"input": "用一句话说明什么是张量并行。",
"max_output_tokens": 256
}'
不同协议的请求字段和返回结构不同,接第三方客户端时以对应协议文档为准。
当前模型默认开启思考。Chat Completions 支持:
{
"reasoning_effort": "low"
}
可选值:
low:较少思考。medium:中等思考。xhigh:更多思考。none:关闭思考(Qwen 系列)。也可以使用:
{
"enable_thinking": false
}
或:
{
"preserve_thinking": true
}
注意:
max_tokens 包含思考内容和最终答案。none 的支持不同,GLM 会拒绝关闭思考。{
"response_format": {"type": "json_object"}
}
{
"response_format": {
"type": "json_schema",
"json_schema": {
"name": "answer",
"schema": {
"type": "object",
"properties": {
"answer": {"type": "integer"}
},
"required": ["answer"],
"additionalProperties": false
},
"strict": true
}
}
}
使用 NInfer 扩展字段 structured_outputs,每次只能给一个:
{"structured_outputs": {"choice": ["positive", "neutral", "negative"]}}
{"structured_outputs": {"regex": "(BUG|TASK)-[0-9]{4}"}}
{"structured_outputs": {"grammar": "root ::= \"yes\" | \"no\""}}
注意:
400。Chat Completions 支持 OpenAI 风格的 function tools:
{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string"}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto"
}
工作方式:
tool 消息放回对话,再次请求模型。NInfer 只负责生成工具调用,不会替你执行工具,也不会访问外部系统。
| 状态 | 含义 | 建议 |
|---|---|---|
200 | 成功 | — |
400 | 请求字段错误或能力不支持 | 查看错误代码和字段 |
401/403 | 鉴权失败 | 检查 Authorization |
429 | 服务过载,等待队列已满 | 降低并发,稍后重试 |
503 | 引擎不可用或排队超时 | 检查 /health,稍后重试 |
529 | Anthropic 协议的本地过载 | 降低并发 |
当前配置:
因此多人同时使用时,后到的请求会排队;排队过久会返回 503 request_queue_timeout。
curl --noproxy '*' http://127.0.0.1:8080/metrics
适合接入 Prometheus/Grafana。普通用户一般只需要监控面板 8899。
访问:
http://10.60.10.226:8899
主要页面和功能:
Pause 只冻结页面显示,后台采集不会停止。说明:
Upstream: fetch failed,这是正常的;加载完成后会自动恢复。—,例如未启用 GPU timing 时的细粒度 GPU 数据。回到运行 start_app.sh 的终端,按:
Ctrl-C
脚本会依次停止 OpenWebUI、监控和 NInfer。确认端口释放:
ss -ltnp | rg ':(8080|8899|7860)\b' || true
如果终端已经丢失:
pgrep -af 'bash ./start_app.sh'
kill -TERM <start_app_pid>
不要使用 kill -9 杀启动脚本,否则子进程可能残留并继续占用端口。
再次执行:
./start_app.sh
脚本会自动清理旧端口。注意:重启会重新加载模型,通常需要约 8 分钟。
日志直接显示在运行脚本的终端:
[monitor]:监控面板日志。[openwebui]:OpenWebUI 日志。如果终端输出太快,可以在另一个终端查看进程和端口:
ps -eo pid,etime,cmd | rg 'ninfer-serve|open-webui|dashboard/dist/server'
ss -ltnp | rg ':(8080|8899|7860)\b'
确认服务监听在 0.0.0.0:
ss -ltnp | rg ':(8080|8899|7860)\b'
从其他设备访问:
http://<服务器IP>:7860
http://<服务器IP>:8899
http://<服务器IP>:8080/v1/models
如果本机能访问、其他设备不能访问,检查:
默认没有 API Key。若需要鉴权,用环境变量启动:
NINFER_API_KEY='请换成足够长的随机字符串' ./start_app.sh
之后 API 请求需要:
Authorization: Bearer 请换成足够长的随机字符串
OpenWebUI 会自动使用同一个 Key 连接 NInfer。
7860 怎么办?按顺序检查:
ss -ltnp | rg ':7860\b'
curl --noproxy '*' http://127.0.0.1:7860/health
curl 正常、其他设备打不开:检查防火墙/安全组。[openwebui] 的报错。8080、7860、8899 分别是什么?7860:给人用的 OpenWebUI 网页。8080:给程序用的 API。8899:监控面板。不要用 7860 拼 API 路径,也不要用 8080 打开网页。
大概率不是。模型有 70.2 GiB 权重,加载通常需要约 8 分钟。看终端里的 loading weights 进度是否在增加。只要进度在动就继续等。
curl 返回 502,但服务明明在运行?当前环境的代理会拦截 loopback 请求。给 curl 加:
--noproxy '*'
例如:
curl --noproxy '*' http://127.0.0.1:8080/health
程序里访问本机 API 时,也要设置 NO_PROXY=127.0.0.1,localhost。
说明服务启用了 API Key,但请求没有带或带错了:
Authorization: Bearer <正确密钥>
如果不知道密钥,查看启动命令中的 NINFER_API_KEY。默认配置没有 Key,不应该出现 401。
model not found 或类似错误?请求里的 model 必须与 /v1/models 返回的 ID 完全一致:
qwen3.8-flash-next
不要写成 Qwen3.8-Flash-Next、qwen3.8_flash_next 或其他别名。
400 vision_disabled?当前启动配置是 vision = false,不支持媒体输入。需要启用 Vision 并重启服务,属于部署配置变更。
通常是 max_tokens 太小,或者上下文超过 8192。处理:
max_tokens。server_overloaded 怎么办?同时请求太多,等待队列已满。降低并发,等当前请求结束后重试。当前只允许 1 个活跃请求、16 个等待请求。
request_queue_timeout 怎么办?请求在 30 秒内没有排到执行机会。降低并发或稍后重试;如果是持续高负载,需要调整部署配置。
curl --noproxy '*' http://127.0.0.1:8080/v1/models 正常。qwen3.8-flash-next。Upstream: fetch failed?模型还在加载或 API 暂时不可用时会出现。等 /health 返回 200 后会自动恢复。如果加载完成后仍持续出现,检查 dashboard/config.local.json 里的 engine_url 是否指向正确的 8080。
—?对应测量没有开启或该时间窗口没有样本。例如 GPU timing 未启用时,细粒度 GPU 区间不可用。— 不代表服务故障。
正常。start_app.sh 是前台运行,终端关闭或按 Ctrl-C 都会停止服务。需要长期运行时,请让管理员用 tmux/systemd 等方式托管,或保持终端会话不关闭。
脚本只处理 8080、8899、7860 这三个端口的占用进程,并且会直接终止,不会二次确认。运行前请确认这三个端口上没有其他重要服务。
OpenWebUI 可以创建多个账号,但当前引擎活跃并发为 1,额外请求会排队,最多 16 个。多人同时使用时回答会变慢,排队过久会超时。
OpenWebUI 自己保存对话历史,位置由它的数据目录决定。监控面板不保存提示词和生成文本,只保存指标和请求摘要。
当前部署固定使用 qwen3.8-flash-next。切换模型需要更换模型产物并修改启动配置,属于部署操作,不在本手册范围内。不要只改请求里的 model 字段,服务不会动态加载新模型。
看监控面板的 Live/Details 页面,或执行:
nvidia-smi
NInfer 启动日志也会打印设备、显存和上下文容量信息。监控面板中的 GPU 数据取决于是否开启 GPU timing。
请提供:
7860 / 8080 / 8899)。curl --noproxy '*' http://127.0.0.1:8080/health 的结果。# 启动
cd /root/Qwen3.8-Flash-Next-NInfer
./start_app.sh
# 健康检查
curl --noproxy '*' http://127.0.0.1:8080/health
# 模型列表
curl --noproxy '*' http://127.0.0.1:8080/v1/models
# 端口检查
ss -ltnp | rg ':(8080|8899|7860)\b'
# 停止:在运行脚本的终端按 Ctrl-C
# 找不到终端时
pgrep -af 'bash ./start_app.sh'
kill -TERM <start_app_pid>
访问地址:
OpenWebUI:http://<服务器IP>:7860
API: http://<服务器IP>:8080/v1
监控: http://<服务器IP>:8899
默认模型:
qwen3.8-flash-next
