Sophon LLM_api_server开发
一、 简介
LLM_api_server 例程是一个基于BM1684X构建的一个类Openai_api的LLM服务,目前支持ChatGLM3、Qwen、Qwen1.5、Qwen2。
1、特性
- 支持BM1684X(PCIe、SoC)、BM1688(SoC)。
- 支持openai库进行调用。
- 支持web接口调用。
2、工程目录
LLM_api_server
├── models
│ ├── BM1684X
│ │ ├── chatglm3-6b_int4.bmodel # BM1684X chatglm3-6b模型
│ │ ├── qwen2-7b_int4_seq512_1dev.bmodel # BM1684X qwen2-7b模型
├── python
│ ├── utils # 工具库
│ ├── api_server.py # 服务启动程序
│ └── config.yaml # 服务配置文件
│ └── request.py # 请求示例程序
│ └── requirements.txt # python依赖
└── scripts
├── download_model.sh # 模型下载脚本
├── download_tokenizer.sh # tokenizer下载脚本
二、运行步骤
1、准备数据与模型
1.1 复制算能官方的sophon_demo工程目录(或者复制后将LLM_api_server上传到盒子中的/data下)
git clone https://github.com/sophgo/sophon-demo.git
cd sophon-demo/appliction/LLM_api_server
cd /data/LLM_api_server ##如果只上传了LLM_api_server,则只需进入此目录下
1.2 安装unzip以及其他环境,若已安装请跳过,非ubuntu系统视情况使用yum或其他方式安装
sudo apt-get update
sudo apt-get install pybind11-dev
pip3 install sentencepiece transformers==4.30.2
pip3 install gradio==3.39.0 mdtex2html==1.2.0 dfss
sudo apt install unzip
chmod -R +x scripts/
./scripts/download_tokenizer.sh ##下载tokenizer
./scripts/download_model.sh ##下载模型文件
2、python例程
2.1 环境准备
pip3 install -r python/requirements.txt
##由于本例程需要的sophon-sail版本较新,这里提供一个可用的sophon-sail whl包,SoC环境可以通过下面的命令下载
python3 -m dfss --url=open@sophgo.com:sophon-demo/Qwen/sophon_arm-3.8.0-py3-none-any.whl
python3 -m dfss --install sail ##安装sophon_sail
2.2 启动服务
参数说明
api_server.py使用config.yaml配置文件进行参数配置。
config.yaml内容如下
models: # 模型列表
- name: qwen # 模型名称,可选qwen/chatglm3
bmodel_path: ../models/BM1684X/qwen2-7b_int4_seq512_1dev.bmodel # 模型路径,根据实际情况修改
token_path: ./utils/qwen/token_config # tokenizer 路径
dev_id: 0 # tpu id
port: 18080 # 服务端口
使用方式
cd python ##切换工作目录
python3 api_server.py --config ./config.yaml
三、服务调用
1、可以使用OpenAI库进行调用
python3 request.py ##想对模型使用不同的Q&A,就更改request.py内messages.["content"]的内容
2、使用http接口调用
接口信息在request.py中,可以根据对其进行修改(如ip等)
接口url: ip:port/v1/chat/completions,例如: 172.26.13.98:18080/v1/chat/completions

接口参数(json格式)
{
"model": "qwen",
"messages": [
{"role": "user", "content": "你好"}
],
"stream": true
}
可以使用postman测试接口
下载地址:(https://www.postman.com/downloads/)
使用示例
!!!其中ip地址要写盒子的IP!!!
