调用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": "电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性",
"analyse_object": "小丽 ",
"analyse_type ":1
}
Body中放置请求参数,参数详情如下:
请求参数
参数 | 是否必选 | 类型 | 可选值范围 | 说明 |
---|---|---|---|---|
text | 是 | string | - | 超过512个token将被截断 |
analyse_object | 否 | string | - | 评论实体对象 |
analyse_type | 是 | int | 1/2/3/4 | 只能选择枚举值的一个 |
返回说明
返回参数
字段 | 是否必选 | 类型 | 说明 |
---|---|---|---|
analyse_type | 是 | int | 1代表评价片段,2代表评价维度,3代表评价观点词,4代表评价情感倾向;示例:analyse_type:"1"或analyse_type:"4",每次请求仅为单值; |
log_id | 是 | number | 唯一的log id,用于问题定位 |
result | 是 | array(object) | 需要计算的评价对象数组,元素为字典 |
+start_offset | 是 | int | 开始位置 |
+prob | 是 | float | 置信度 |
+end_offset | 是 | int | 结束位置 |
+text | 是 | string | 抽取文本 |
text | 是 | string | 输入文本,超过512个token将被截断 |
返回示例
{
"analyse_type": 1,
"log_id": 7000918336750814000,
"result": [
{
"start_offset": 10,
"prob": 0.4721265733242,
"end_offset": 24,
"text": "但是小丽的演技一如既往的不错"
}
],
"text": "电影故事结构很松散,但是小丽的演技一如既往的不错,配合她的男演员挺好的,比如说小杰,他在对手戏中有很强的互动性"
}
错误码
若请求错误,服务器将返回的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)