1. Google Cloud ML Engine是什么?
- Google Cloud Machine Learning (ML) Engine 是一项托管式服务,使开发者和数据科学家能够构建卓越的机器学习模型并将其运用到生产环境中。Cloud ML Engine 提供训练和预测服务,这些服务可以一起使用也可以单独使用。Cloud ML Engine 是经过实证的服务,被众多企业用来解决各种问题,包括识别卫星图像中的云、确保食品安全,以及快速回复客户电子邮件(回复速度可提升到原来的四倍)。
- 可以提供模型训练、预测(在线预测、批量预测)、部署多个框架(TF、sklearn、XGBoost、Keras)
- 参考文档:https://cloud.google.com/ml-engine/
2. 模型训练、预测流程
python代码形式;
数据和模型都存储在Cloud Storage bucket中;
-
生成py文件
- 导入依赖库;
- 从Cloud Storage中下载数据;
- 导入数据;
- 模型训练并保存;
- 导出模型至Cloud Storage;
- 模型格式:
- sklearn模型格式joblib和pkl(pickle),xgboost模型格式joblib、bst和pkl(pickle)
- 参考文档:https://cloud.google.com/ml-engine/docs/scikit/getting-started-training#create-model-training-code
-
打包模型
- 按照规定生成文件夹,并将上一步中生成的模型训练py代码放入文件夹中;
- 使用gcloud命令本地调试代码;
- 使用gcloud命令上传模型,需要配置相关参数(如:Cloud Storage、训练代码py文件名、python版本等);
- 在Cloud ML Engine上运行训练代码;
参考文档:https://cloud.google.com/ml-engine/docs/scikit/getting-started-training
-
模型在线预测(又称HTTP Prediction)
- 需要指定模型名称、输入文件、使用框架名称(运行某个模型并获取结果时可能需要定制化开发);
- 使用gcloud命令获取预测结果;
相当于需要进行预测时,就发一条请求;
请求中的输入文件为一个json(官网上为本地文件,不知道可否使用Cloud Storage中);
响应中为预测结果;
参考文档:https://cloud.google.com/ml-engine/docs/scikit/quickstart
-
模型批量预测
与模型预测类似
需要指定输入输出文件位置(输入文件需存储在Cloud Storage)、模型名称、使用的计算节点数(看起来可以使用分布式计算)等;
实时性低,不像在线预测那样,一个请求对应一个返回;
似乎没有看到什么定时器之类的功能,看起来Cloud ML Engine的batch prediction只是一次性的;
参考文档:https://cloud.google.com/ml-engine/docs/tensorflow/batch-predict
3. notebook中的思考🤔
- 如果想在notebook中做这件事(自学习、批量预估),有几个点值得思考;
- 数据从哪拿?直连hdfs拿、从pdms拿
- 任务的监控?
- 任务在哪里跑?直接在当前pod、另启一个新的
- 结果的输出?输出在ipynb文件中、直接输出到hdfs、输出在pdms