閱讀444 返回首頁    go 阿裏雲 go 技術社區[雲棲]


關於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

修改起來會更方便,也不容易出錯。

最後更新:2017-08-20 07:02:15

  上一篇:go  人工智能對人的影響
  下一篇:go  手把手教你創建ClassicLinkVPC