HonestQiao · 8 小时前 · 北京

【星睿O6评测】从零玩转智谱AI全栈大模型之9-部署Web服务与OpenAI兼容API服务

🎯 本文目标:为llama.cpp和chatglm.cpp部署Web服务与OpenAI兼容API,构建完整的AI服务生态系统,实现真正的产品化部署,让星睿O6成为可访问的AI推理服务器。

经过查阅资料和深入学习,在星睿O6开发板上成功部署了智谱AI系列大模型,包括文本生成大模型、视觉大模型,以及代码生成大模型。

001.jpg

在学习研究的过程中,我做了详细的笔记,经过整理,成为本系列文章,分享给大家。

通过本系列文章,您将了解到:

  • 第一阶段:开发环境准备

    • 第一篇:星睿O6与智谱AI大模型概览
    • 第二篇:在PC上搭建llama.cpp推理环境
    • 第三篇:在PC上搭建chatglm.cpp推理环境
  • 第二阶段:环境迁移与部署

    • 第四篇:将llama.cpp环境部署至星睿O6
    • 第五篇:将chatglm.cpp环境部署至星睿O6
  • 第三阶段:大模型实战运行

    • 第六篇:在星睿O6上运行智谱AI文本大模型(基于llama.cpp)
    • 第七篇:在星睿O6上运行智谱AI文本大模型(基于chatglm.cpp)
    • 第八篇:在星睿O6上运行智谱AI视觉大模型
    • 第九篇:为llama.cpp与chatglm.cpp部署Web服务与OpenAI兼容API
  • 第四阶段:专项能力扩展

    • 第十篇:在星睿O6上部署CodeGeeX2实现智能代码生成

本文是第九篇:为llama.cpp与chatglm.cpp部署Web服务与OpenAI兼容API

为llama.cpp与chatglm.cpp都自带了Web服务以及OpenAI兼容API服务,可以方便快速使用,以及被其他工具调用。

🌐 开启WEB服务

❌ GLM-Edge模型【失败】

cd ~/Projects/llama.cpp
source .venv/bin/activate

export LLAMA_CPP_DIR=$(pwd)

# 文本大模型
model_group=ZhipuAI
model_name=glm-edge-1.5b-chat
# model_name=glm-edge-4b-chat
$LLAMA_CPP_DIR/build/bin/llama-server -m ./${model_group}/${model_name}-gguf/ggml-model-Q4_K_M.gguf --jinja -c 0 --host 0.0.0.0 --port 8048

# 视觉大模型
model_name=glm-edge-v-2b
# model_name=glm-edge-v-5b
$LLAMA_CPP_DIR/build/bin/llama-server -m ./${model_group}/${model_name}-gguf/ggml-model-Q4_K_M.gguf --mmproj ./${model_group}/${model_name}-gguf/mmproj-model-f16.gguf --jinja -c 0 --host 0.0.0.0 --port 8048

服务参数说明

  • --jinja:启用Jinja2模板,支持动态网页生成
  • -c 0:无限制上下文长度
  • --host 0.0.0.0:监听所有网络接口
  • --port 8048:服务端口,可根据需要调整

实际测试发现,虽然能够启动服务,但是实际访问失败:
002.jpg

003.jpg

✅ 使用llama.cpp转换的模型

  • glm-4-9b-chat-hf【失败】

    model_name=glm-4-9b-chat-hf
    $LLAMA_CPP_DIR/build/bin/llama-server -m models/${model_name}-Q4_K_M.gguf --jinja -c 0 --host 0.0.0.0 --port 8048

    错误状况与 GLM-Edge模型 类似。

  • chatglm3-6b

    model_name=chatglm3-6b
    $LLAMA_CPP_DIR/build/bin/llama-server -m models/${model_name}-Q4_K_M.gguf --jinja -c 0 --host 0.0.0.0 --port 8048

    004.jpg

  • GLM-4.6V-Flash

    model_name=GLM-4.6V-Flash
    $LLAMA_CPP_DIR/build/bin/llama-server -m models/${model_name}-Q4_K_M.gguf --jinja -c 0 --host 0.0.0.0 --port 8048

    005.jpg

从具体的返回可以看到,GLM-4.6V-Flash是带有深度思考功能的大模型。

行理解识别:
020.jpg

021.jpg

⚙️ llama.cpp 服务模式参数

# 配置参数
$LLAMA_CPP_DIR/build/bin/llama-server \
  -m models/${model_name}-Q4_K_M.gguf \
  --host 0.0.0.0 \
  --port 8048 \
  -c 16384 \                # 大上下文窗口
  -np 8 \                   # 高并发
  -b 2048 \                 # 大批次大小
  --ubatch-size 1024 \      # 物理批次大小
  --cont-batching \         # 连续批处理
  --cache-reuse 512 \       # 缓存重用
  --threads $(nproc) \      # 使用所有CPU核心
  --n-gpu-layers 99 \       # 最大GPU层数
  --split-mode layer \      # 多GPU分层
  --tensor-split 3,1 \      # GPU张量分割
  --metrics \               # 性能监控
  --slots                   # 槽位监控

# 实际运行命令:
$LLAMA_CPP_DIR/build/bin/llama-server \
  -m models/${model_name}-Q4_K_M.gguf \
  --host 0.0.0.0 \
  --port 8048 \
  -c 16384 \
  -np 8 \
  -b 2048 \
  --ubatch-size 1024 \
  --cont-batching \
  --cache-reuse 512 \
  --threads $(nproc) \
  --n-gpu-layers 99 \
  --split-mode layer \
  --tensor-split 3,1 \
  --metrics \
  --slots

006.jpg

参数优化说明

  • -c 16384:支持长上下文对话
  • -np 8:支持8个并发请求
  • -b 2048:提高吞吐量
  • --threads $(nproc):使用所有CPU核心
  • --metrics:启用性能监控,便于调优

💻 chatglm开启Web服务

cd ~/Projects/chatglm.cpp
source .venv/bin/activate

export LLAMA_CPP_DIR=$(pwd)

pip install "gradio<6"
export GRADIO_SERVER_PORT=8048
export GRADIO_SERVER_NAME=0.0.0.0

#model_name=chatglm
model_name=chatglm3-6b
#model_name=glm-4-9b-chat
#model_name=glm-4v-9b
python $LLAMA_CPP_DIR/examples/web_demo.py -m ./models/${model_name}-ggml.bin

007.jpg

开启后,通过浏览器打开网页界面:
008.jpg

chatglm.cpp的Web服务,是使用Gradio编写的一个基础Demo,可以根据自己的需要进行调整。

🔌 OpenAI兼容Api服务

llama.cpp和chatglm.cpp都可以开启openai兼容api服务,从而让其他WEBUI或者桌面工具调用。

💻 llama.cpp开启openai兼容Api服务

当使用 llama-server 开启Web服务后,就自动对外提供openai兼容服务。

支持的API端点

  • /v1/models - 获取模型列表
  • /v1/chat/completions - 聊天补全
  • /v1/completions - 文本补全
  • /v1/embeddings - 文本嵌入

💻 chatglm.cpp开启openai兼容服务

cd ~/Projects/chatglm.cpp
source .venv/bin/activate

export LLAMA_CPP_DIR=$(pwd)
pip install openai pydantic_settings sse_starlette
MODEL=models/chatglm3-6b-ggml.bin uvicorn chatglm_cpp.openai_api:app --host 192.168.1.160 --port 8048

009.jpg

chatglm.cpp的api服务,使用fastapi编写,也可以根据自己的需要进行修改。

FastAPI优势

  • 异步处理,提高并发性能
  • 自动API文档生成
  • 良好的错误处理机制
  • 支持WebSocket实时通信

🧪 API测试验证

🖥️ 命令行测试验证

开启openai兼容api服务后,可用通过下面的指令进行测试:

  • 查看模型列表

    llm_host=192.168.1.160
    llm_port=8048
    
    curl http://$llm_host:$llm_port/v1/models

    010.jpg

  • 聊天补全

    curl http://$llm_host:$llm_port/v1/chat/completions \
    -H "Content-Type: application/json" \
    -H "Authorization: Bearer your-api-key" \
    -d '{
      "model": "chatglm3-6b",
      "messages": [
        {"role": "system", "content": "你是一个排忧解难的好助手"},
        {"role": "user", "content": "你好,请介绍一下你自己"}
      ],
      "temperature": 0.7,
      "max_tokens": 512
    }'

    011.jpg

  • 文本补全

    curl http://$llm_host:$llm_port/v1/completions \
    -H "Content-Type: application/json" \
    -d '{
      "model": "chatglm3-6b",
      "prompt": "人工智能的未来发展",
      "max_tokens": 100,
      "temperature": 0.8
    }'

    012.jpg

🌐 使用Page Assist调用OpenAI兼容Api服务

Page Assist是一个浏览器插件,可以浏览器中运行一个大模型的图形界面,并通过openai接口,来调用本地大模型。Page Assist能够支持常见的浏览器,如Chrome、Firefox、Edge等。

在浏览器中,访问网址:https://pageassist.xyz/,安装Page Assist插件:
013.jpg

然后进入插件设置界面,进入OpenAI兼容API管理:
014.jpg

根据自己运行的服务,添加对应的服务提供商设置:

  • llama.cpp服务
    015.jpg
  • chatglm.cpp服务
    016.jpg

添加完成后,点击新聊天:
017.jpg

选择大模型,即可开始对话:
018.jpg

019.jpg

Page Assist优势

  • 无需安装桌面应用
  • 支持多种浏览器
  • 界面简洁易用
  • 自动适配OpenAI兼容API

✅ Web服务部署完成

通过完整的Web服务和API部署,星睿O6成为了一个功能完整的AI推理服务器,可以为各种应用提供大模型服务。

🔗 下一篇文章预告
在最后一篇文章中,我们将部署CodeGeeX2实现智能代码生成,完成整个智谱AI全栈大模型生态系统的构建,让星睿O6成为真正的AI开发工作站。

推荐阅读
关注数
1
内容数
11
此芯AI PC开发套件瑞莎“星睿O6”评测
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息