关于PAI平台的几点建议-阿里云开发者社区

开发者社区> 人工智能> 正文
登录阅读全文

关于PAI平台的几点建议

简介:
接触PAI平台也快1年了,感觉PAI平台应用起来很强大,很方便。而且2017 年 3 月 29 日,阿里云重磅推出升级版的机器学习平台 PAI 2.0,可以大幅度降低人工智能门槛以及开发成本。PAI 2.0 提供 100 余种算法组件,涵盖了分类、回归、聚类等常用场景,还针对主流的算法应用场景,提供了偏向业务的算法,包含文本分析、关系分析、推荐三种类别。
PAI 2.0 新增了参数服务器(Parameter Server)架构的算法。不仅能进行数据并行,同时还可将模型分片,把大的模型分为多个子集,每个参数服务器只存一个子集,全部的参数服务器聚合在一起拼凑成一个完整的模型。其创新点还在于失败重试的功能。在分布式系统上,成百上千个节点协同工作时,经常会出现一个或几个节点挂掉的情况,如果没有失败重试机制,任务就会有一定的几率失败,需要重新提交任务到集群调度。PS 算法支持千亿特征、万亿模型和万亿样本直至 PB 级的数据训练,适合于电商、广告等数据规模巨大的推荐场景。
从操作界面来看,PAI 没有繁琐的公式和复杂的代码逻辑,用户看到的是各种分门别类被封装好的算法组件。每一个实验步骤都提供可视化的监控页面,在深度学习黑箱透明化方面,PAI 也同时集成了各种可视化工具。
PAI平台现在用起来已经很方便了,不过我希望最好还能增加以下一些优化的小功能。
1,图形界面的算法导出代码,或者查看界面的代码的功能。图形界面虽然操作起来很方便,可是如果是需要经常变换特征,调整参数等工作,用图形界面要挨个点每个控件,操作起来比较繁琐。而如果直接写代码的话,则需要查找每个空间的名称,参数等等,也比较繁琐。所以如果能先用图形界面建立算法,然后导出成代码,在IDE里面慢慢调整特征、参数,应该是比较理想的一种做法。
2,希望能支持简单的变量。一个简单的例子,对于如下代码:
--模型训练
drop offlinemodel if exists  GBDT_test_model_v1;
drop table if exists GBDT_test_model_Importance;

PAI -name gbdt_lr -project algo_public -DfeatureSplitValueMaxSize="500" -DrandSeed="0" -Dshrinkage="0.05" -DmaxLeafCount="32" -DlabelColName="lable" 
-DinputTableName="portscan_train" 
-DoutputImportanceTableName="GBDT_test_model_Importance" 
-DminLeafSampleCount="500" -DsampleRatio="0.6" -DmaxDepth="6" -DmetricType="0" 
-DmodelName="GBDT_test_model_v1" 
-DfeatureRatio="0.6" -DtestRatio="0" 
-DfeatureColNames="sip_client_ip_n,sip_client_ip_dn_cnt,sip_connect_n,sip_connect_n_max,sip_hashuserid_dn,sip_connect_n_avg,port" 
-DtreeCount="250";

--模型预测
drop table if exists portscan_pre_result;
PAI -name prediction -project algo_public -DdetailColName="prediction_detail" -DappendColNames="client_port,source_ip,ds" 
-DmodelName="GBDT_test_model_v1" 
-DitemDelimiter="," -DresultColName="prediction_result" -Dlifecycle="28" 
-DoutputTableName="portscan_pre_result" 
-DscoreColName="prediction_score" -DkvDelimiter=":" 
-DfeatureColNames="port,sip_client_ip_n,sip_client_ip_dn_cnt,sip_connect_n,sip_connect_n_max,sip_hashuserid_dn,sip_connect_n_avg" 
-DinputTableName="portscan_test" 
-DenableSparse="false";


模型和预测都要用到特征列名称,如果能定义变量,比如:
DEF FeatureCols="port,sip_client_ip_n,sip_client_ip_dn_cnt,sip_connect_n,sip_connect_n_max,sip_hashuserid_dn,sip_connect_n_avg" 

那么这个算法后面每个需要特征列的地方都可以直接用:
-DfeatureColNames=FeatureCols

修改起来会更方便,也不容易出错。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
人工智能
使用钉钉扫一扫加入圈子
+ 订阅

了解行业+人工智能最先进的技术和实践,参与行业+人工智能实践项目

其他文章
最新文章
相关文章