Model Serving¶
推荐使用阿里云上的模型在线服务(PAI-EAS)预置的EasyRecProcessor 来部署在线推理服务。EasyRec Processor(阿里云文档)针对推荐模型做了多种优化, 相比tensorflow serving和TensorRT方式部署具有显著的性能优势。
命令行部署¶
命令行部署适合Dataworks, Kubernetes pipelines等需要例行调度的场景.
#!/bin/bash
bizdate=$1
cat << EOF > alirec_rank.json
{
"name": "alirec_rank",
"generate_token": "true",
"processor": "easyrec-1.5",
"metadata":{
"instance": 1,
"cpu": 16,
"gpu": 0,
"memory": 8000,
"rpc": {
"enable_jemalloc": 1,
"max_queue_size": 256,
"worker_threads": 20
}
},
"model_config": {
"fg_mode": "bypass",
"save_req": false
},
"storage": [
{
"mount_path": "/home/admin/docker_ml/workspace/model/",
"oss": {
"path": "oss://easyrec-bj/alirec_rank/20230819/export/final/",
"readOnly": false
},
"properties": {
"resource_type": "code"
}
}
],
"warm_up_data_path": "oss://easyrec-bj/alirec_rank/warmup.bin"
}
EOF
### 打印配置
cat alirec_rank.json
### 创建服务
eascmd -i <AccessKeyID> -k <AccessKeySecret> -e <EndPoint> create alirec_rank.json
### 更新服务
echo "-------------------更新服务-------------------"
eascmd -i <AccessKeyID> -k <AccessKeySecret> -e <EndPoint> modify alirec_rank -s alirec_rank.json
status=$?
### 查看服务
echo "-------------------查看服务-------------------"
eascmd -i <AccessKeyID> -k <AccessKeySecret> -e <EndPoint> desc alirec_rank
配置文件(alirec_rank.json)解析:
processor: easyrec-2.0, 更多版本可以参考文档
storage: 挂载oss模型目录
warm_up_data_path: PAI-EAS服务启动之前会使用warmup_data_path指定的请求数据预热服务
文件格式参考TensorFlow服务请求
建议使用线上真实的请求来warmup, 能够显著降低初始请求的延迟
model_config
fg_mode: bypass模式表示不使用fg(Feature generation)功能, 如需要使用FG请参考文档RTP FG.
save_req: 保存请求到挂载模型目录下(以.pb结尾), 可以重命名以后(.bin)作为warmup文件.
faiss_ivf_nprobe: 向量召回模型向量检索参数(IVFFlat索引), 默认值为100
其它参数是所有EAS服务通用的, 请参考EAS文档.
界面部署¶
请参考EAS部署文档.
客户端请求¶
请求的格式请参考文档TensorFlow服务请求.
建议通过PAI-EAS提供的SDK构造请求和调用服务
特征工程 + 模型服务¶
EasyRec Processor支持在线做特征工程(如显示交叉特征和Sequence特征), 通过将特征工程和模型推理整合在同一个tensorflow图里面, 实现了特征工程和模型推理的overlap执行和联合优化, 已经上线的模型最多特征数达到2000+. 如果您需要用到特征工程的部分,可以参考文档RTP FG
推荐引擎¶
PAI-REC是Aliyun PAI开发的高性能推荐引擎框架, 支持通过配置的方式构建推荐全链路pipeline, 包括召回、过滤、排序、多样性等, 如果需要用到PaiRec进行在线推荐服务, 可以参考: 入门介绍 项目示例 EAS部署