调用API
本文档主要说明定制化模型本地部署后,如何使用本地API。如还未训练模型,请先前往EasyDL 文本分类-单标签 进行训练。
如有疑问可以通过以下方式联系我们:
- 在百度云控制台内提交工单
- 进入EasyDL社区交流 ,与其他开发者进行互动
- 加入EasyDL官方QQ群(群号:868826008)联系群管
部署包使用说明
部署方法
EasyDL定制化文本分类模型的本地部署通过EasyPack实现,目前提供单机一键部署的方式。
在EasyDL申请、下载部署包后,在本地服务器新建目录(建议目录命名规则:easyDL_服务名称_模型版本号), 将软件包上传至该目录。请参考EasyPack-单机一键部署 使用python2 版本来部署,部署成功后,启动服务,即可调用与在线API功能类似的接口。
运维检查
EasyDL服务器API部署应用健康检查(或故障排查)脚本:trouble_shooting.tar
脚本能力:鉴权服务健康检测、容器状态检查、端口探活、网络联通性测试、容器关键报错日志输出等
使用方法: 将脚本上传至服务器任意目录(或在服务器直接下载),并解压后运行。
# 解压
tar vxf trouble_shooting.tar
# 执行
bash trouble_shooting.sh
授权说明
本地部署包根据服务器硬件(CPU单机或GPU单卡)进行授权,只能在申请时提交的硬件指纹所属的硬件上使用。
部署包测试期为1个月,如需购买永久授权,可提交工单咨询
API参考
请求说明
请求示例
HTTP 方法:POST
请求URL:请首先在EasyDL进行自定义模型训练,完成训练后申请本地部署,本地部署成功后拼接url。
请求URL: http://{IP}:{PORT}/{DEPLOY_NAME}/TextClassification
- IP:服务本地部署所在机器的ip地址
- PORT:服务部署后获取的端口
- DEPLOY_NAME:申请时填写的本地服务名称
Header如下:
参数 | 值 |
---|---|
Content-Type | application/json |
Body请求示例:
{
"text": "<UTF-8编码数据>",
"top_num": 5
}
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
text | 是 | string | - | 文本数据,UTF-8编码。最大长度4096汉字 |
top_num | 否 | number | - | 返回分类数量,默认为6个 |
返回说明
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
log_id | 是 | number | 唯一的log id,用于问题定位 |
results | 否 | array(object) | 分类结果数组 |
+name | 否 | string | 分类名称 |
+score | 否 | number | 置信度 |
错误码
若请求错误,服务器将返回的JSON文本包含以下参数:
- error_code:错误码。
- error_msg:错误描述信息,帮助理解和解决发生的错误。
例如缺少必要出入参时返回:
{
"error_code": 336001,
"error_msg": "Invalid Argument"
}
错误码 | 错误信息 | 描述 |
---|---|---|
336000 | Internal error | 服务器内部错误,请再次请求, 如果持续出现此类错误,请通过QQ群(868826008)或工单联系技术支持团队 |
336001 | Invalid Argument | 入参格式有误,比如缺少必要参数、文本的编码UTF-8等问题。有疑问请通过QQ群(868826008)或工单联系技术支持团队 |
336002 | JSON不合法 | 入参格式或调用方式有误,比如缺少必要参数代码格式是否有误。有疑问请通过QQ群(868826008)或工单联系技术支持团队 |
336003 | Base64解码失败 | 图片/音频/文本格式有误或base64编码有误,请根据接口文档检查格式,base64编码请求时注意要去掉头部。有疑问请通过QQ群(868826008)或工单联系技术支持团队 |
336004 | 输入文件大小不合法 | 文本大小不合法,目前支持文本文件类型为支持txt,文本文件大小限制长度最大1024 UTF-8字符。有疑问请通过QQ群(868826008)或工单联系技术支持团队 |
336005 | 解码失败 | 文本编码错误(不是utf-8),目前支持文本文件类型为支持txt。如果遇到请重试,如反复失败,请在百度云控制台内提交工单反馈 |
336006 | 缺失必要参数 | 未上传文本文件 |
336100 | model temporarily unavailable | 遇到该错误码请等待1分钟后再次请求,可恢复正常,若反复重试依然报错或有疑问请通过QQ群(868826008)或工单联系技术支持团队 |
337000 | Auth check failed | 离线鉴权调用失败 |
模型更新/回滚操作说明
模型更新
1、在EasyDL-纯离线服务发布页面,找到您的服务器API发布记录,点击【更新版本】,选择「更新包」或「完整包」来发布。 两者区别:
包类型 | 描述 |
---|---|
更新包 | 仅包含最新的模型应用,需执行download.sh脚本下载所需镜像等依赖文件 |
完整包 | 包含模型应用和其他鉴权服务,需执行download.sh脚本下载所需完整依赖文件 |
2、(CPU模型可忽略
)如果您训练的模型为GPU版本,系统会生成多份下载链接。请在GPU服务器执行 nvidia-smi
命令,根据返回的Cuda Version来选择对应的部署包链接下载。
3、在服务器新建目录(建议标记对应模型的版本号,便于区分不同模型版本),如easydl_${DEPLOY_NAME}_v2
${DEPLOY_NAME}
:申请时填写的服务名称
以如下场景举例说明:模型版本从V1升级至V2
##### 1.新模型准备
# 创建指定版本的目录
mkdir easedl_${DEPLOY_NAME}_v2
cd easedl_${DEPLOY_NAME}_v2
# 将部署包上传至服务器该目录并解压
tar zvxf xx.tar.gz
# 解压后,进入指定目录执行download脚本下载模型所依赖文件
cd original && bash download.sh
##### 2.旧模型备份
# 历史模型备份
cp -r /home/baidu/work/${DEPLOY_NAME} /home/baidu/work/${DEPLOY_NAME}_V1
# 记录当前模型的端口号
docker ps -a |grep ${DEPLOY_NAME}
##### 3.模型升级
cd package/Install
# 卸载当前已安装的旧的easyDL服务:${DEPLOY_NAME} ,前面已备份
python2 install.py remove ${DEPLOY_NAME}
# 安装当前部署包内新的EasyDL服务:${DEPLOY_NAME}
python2 install.py install ${DEPLOY_NAME}
# (可选操作) 更新证书
python2 install.py lu
模型回滚
以如下场景举例说明:模型版本从V2回滚至V1
方法一:
## 重命名当前v2模型目录名称
mv /home/baidu/work/${DEPLOY_NAME} /home/baidu/work/${DEPLOY_NAME}_V2
# 使用V1版本
cp -r /home/baidu/work/${DEPLOY_NAME}_V1 /home/baidu/work/${DEPLOY_NAME}
# 停止当前模型容器
docker ps -a |grep ${DEPLOY_NAME}
docker rm -f ${容器名}
# 创建新的容器
cd /home/baidu/work/${DEPLOY_NAME} && bash start/start-1.sh
# (可选操作)进入V1版本部署包所在目录执行license更新操作,假如部署包在/opt目录下,以您实际目录为准
cd /opt/easydl_${DEPLOY_NAME}_V1/original/package/Install && python2 install.py lu
方法二:
进入模型V1所在目录,参考上述【模型更新】步骤,执行模型升级操作(即先卸载v2,后升级为v1)