全部產品
Search
文件中心

Platform For AI:PS-SMART多分類

更新時間:Mar 13, 2025

參數伺服器PS(Parameter Server)致力於解決大規模的離線及線上訓練任務,SMART(Scalable Multiple Additive Regression Tree)是GBDT(Gradient Boosting Decision Tree)基於PS實現的迭代演算法。PS-SMART支援百億樣本及幾十萬特徵的訓練任務,可以在上千節點中運行。同時,PS-SMART支援多種資料格式及長條圖近似等最佳化技術。

使用限制

PS-SMART多分類組件的輸入資料需要滿足以下要求:

  • PS-SMART多分類組件的目標列僅支援數實值型別。如果MaxCompute表資料是STRING類型,則需要進行類型轉換。例如,分類目標是Good/Medium/Bad字串,需要轉換為0/1/2

  • 如果資料是KV格式,則特徵ID必須為正整數,特徵值必須為實數。如果特徵ID為字串類型,則需要使用序列化組件進行序列化。如果特徵值為類型字串,需要進行特徵離散化等特徵工程處理。

  • 雖然PS-SMART多分類組件支援數十萬特徵任務,但是消耗資源大且運行速度慢,可以使用GBDT類演算法進行訓練。GBDT類演算法適合直接使用連續特徵進行訓練,除需要對類別特徵進行One-Hot編碼(篩除低頻特徵)外,不建議對其他連續型數值特徵進行離散化。

  • PS-SMART演算法會引入隨機性。例如,data_sample_ratiofea_sample_ratio表示的資料和特徵採樣、演算法使用的長條圖近似最佳化及局部Sketch歸併為全域Sketch的順序隨機性。雖然多個Worker分布式執行時,樹結構不同,但是從理論上可以保證模型效果相近。如果您在訓練過程中,使用相同資料和參數,多次得到的結果不一致,屬於正常現象。

  • 如果需要加速訓練,可以增大計算核心數。因為PS-SMART演算法需要所有伺服器獲得資源後,才能開始訓練,所以叢集忙碌時,申請較多資源會增加等待時間。

注意事項

使用PS-SMART多分類組件時,需要注意以下事宜:

  • 雖然PS-SMART多分類組件支援數十萬特徵任務,但是消耗資源大且運行速度慢,可以使用GBDT類演算法進行訓練。GBDT類演算法適合直接使用連續特徵進行訓練,除需要對類別特徵進行One-Hot編碼(篩除低頻特徵)外,不建議對其他連續型數值特徵進行離散化。

  • PS-SMART演算法會引入隨機性。例如,data_sample_ratiofea_sample_ratio表示的資料和特徵採樣、演算法使用的長條圖近似最佳化及局部Sketch歸併為全域Sketch的順序隨機性。雖然多個Worker分布式執行時,樹結構不同,但是從理論上可以保證模型效果相近。如果您在訓練過程中,使用相同資料和參數,多次得到的結果不一致,屬於正常現象。

  • 如果需要加速訓練,可以增大計算核心數。因為PS-SMART演算法需要所有伺服器獲得資源後,才能開始訓練,所以叢集忙碌時,申請較多資源會增加等待時間。

配置組件

方式一:可視化方式

在Designer工作流程頁面添加PS-SMART多分類組件,並在介面右側配置相關參數:

參數類型

參數

描述

欄位設定

是否稀疏格式

稀疏格式的KV之間使用空格分隔,keyvalue之間使用英文冒號(:)分隔。例如1:0.3 3:0.9

選擇特徵列

輸入表中,用於訓練的特徵列。如果輸入資料是Dense格式,則只能選擇數值(BIGINT或DOUBLE)類型。如果輸入資料是Sparse KV格式,且keyvalue是數實值型別,則只能選擇STRING類型。

選擇標籤列

輸入表的標籤列,支援STRING及數實值型別。如果是內部儲存,則僅支援數實值型別。例如二分類中的01

選擇權重列

列可以對每行樣本進行加權,支援數實值型別。

參數設定

類別數

多分類的類別數量。如果類別數為n,則標籤列的取值為{0,1,2,...,n-1}

評估指標類型

支援multiclass negative log likelihood和multiclass classification error類型。

樹數量

需要配置為樹數量,正整數,樹數量和訓練時間成正比。

樹最大深度

預設值為5,即最多32個葉子節點。

資料採樣比例

構建每棵樹時,採樣部分資料進行學習,構建弱學習器,從而加快訓練。

特徵採樣比例

構建每棵樹時,採樣部分特徵進行學習,構建弱學習器,從而加快訓練。

L1懲罰項係數

控制葉子節點大小。該參數值越大,葉子節點規模分布越均勻。如果過擬合,則增大該參數值。

L2懲罰項係數

控制葉子節點大小。該參數值越大,葉子節點規模分布越均勻。如果過擬合,則增大該參數值。

學習速率

取值範圍為(0,1)

近似Sketch精度

構造Sketch的切割分位點閾值。該參數值越小,獲得的桶越多。一般使用預設值0.03,無需手動設定。

最小分裂損失變化

分裂節點所需要的最小損失變化。該參數值越大,分裂越保守。

特徵數量

特徵數量或最大特徵ID。如果需要估計使用資源,則必須手動設定該參數。

全域偏置項

所有樣本的初始預測值。

隨機數產生器種子

隨機數種子,整型。

特徵重要性類型

取值:

  • 模型中,該特徵做為分裂特徵的次數

  • 模型中,該特徵帶來的資訊增益

  • 模型中,該特徵在分裂節點覆蓋的樣本數

執行調優

核心數

預設為系統自動分配。

每個核的記憶體大小

單個核心使用的記憶體,單位為MB。通常無需手動設定,系統自動分配。

方式二:PAI命令方式

使用PAI命令配置PS-SMART多分類組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見情境4:在SQL指令碼組件中執行PAI命令

--訓練
PAI -name ps_smart
    -project algo_public
    -DinputTableName="smart_multiclass_input"
    -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
    -DoutputTableName="pai_temp_24515_545859_2"
    -DoutputImportanceTableName="pai_temp_24515_545859_3"
    -DlabelColName="label"
    -DfeatureColNames="features"
    -DenableSparse="true"
    -Dobjective="multi:softprob"
    -Dmetric="mlogloss"
    -DfeatureImportanceType="gain"
    -DtreeCount="5"
    -DmaxDepth="5"
    -Dshrinkage="0.3"
    -Dl2="1.0"
    -Dl1="0"
    -Dlifecycle="3"
    -DsketchEps="0.03"
    -DsampleRatio="1.0"
    -DfeatureRatio="1.0"
    -DbaseScore="0.5"
    -DminSplitLoss="0"
--預測
PAI -name prediction
    -project algo_public
    -DinputTableName="smart_multiclass_input";
    -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
    -DoutputTableName="pai_temp_24515_545860_1"
    -DfeatureColNames="features"
    -DappendColNames="label,features"
    -DenableSparse="true"
    -DkvDelimiter=":"
    -Dlifecycle="28"

模組

參數

是否必選

預設值

描述

資料參數

featureColNames

輸入表中,用於訓練的特徵列。如果輸入表是Dense格式,則只能選擇數值(BIGINT或DOUBLE)類型。如果輸入表是Sparse KV格式,且KV格式中keyvalue是數實值型別,則只能選擇STRING類型。

labelColName

輸入表的標籤列,支援STRING及數實值型別。如果是內部儲存,則僅支援數實值型別。例如多分類的{0,1,2,…,n-1},其中n表示類別數量。

weightCol

列可以對每行樣本進行加權,支援數實值型別。

enableSparse

false

是否為稀疏格式,取值範圍為{true,false}。稀疏格式的KV之間使用空格分隔,keyvalue之間使用英文冒號(:)分隔。例如1:0.3 3:0.9

inputTableName

輸入表的名稱。

modelName

輸出的模型名稱。

outputImportanceTableName

輸出特徵重要性的表名。

inputTablePartitions

格式為ds=1/pt=1

outputTableName

輸出至MaxCompute的表,二進位格式,不支援讀取,只能通過SMART的預測組件擷取。

lifecycle

3

輸出表的生命週期。

演算法參數

classNum

多分類的類別數量。如果類別數量為n,則標籤列取值為{0,1,2,...,n-1}

objective

目標函數類型。如果進行多分類訓練,則選擇multi:softprob

metric

訓練集的評估指標類型,輸出在Logview檔案Coordinator地區的stdout。支援以下類型:

  • mlogloss:對應可視化方式的multiclass negative log likelihood類型。

  • merror:對應可視化方式中的multiclass classification error類型。

treeCount

1

樹數量,與訓練時間成正比。

maxDepth

5

樹的最大深度,取值範圍為1~20。

sampleRatio

1.0

資料採樣比例,取值範圍為(0,1]。如果取值為1.0,則表示不採樣。

featureRatio

1.0

特徵採樣比例,取值範圍為(0,1]。如果取值為1.0,則表示不採樣。

l1

0

L1懲罰項係數。該參數值越大,葉子節點分布越均勻。如果過擬合,則增大該參數值。

l2

1.0

L2懲罰項係數。該參數值越大,葉子節點分布越均勻。如果過擬合,則增大該參數值。

shrinkage

0.3

取值範圍為(0,1)

sketchEps

0.03

構造Sketch的切割分位點閾值,桶數為O(1.0/sketchEps)。該參數值越小,獲得的桶越多。一般使用預設值,無需手動設定。取值範圍為(0,1)

minSplitLoss

0

分裂節點所需要的最小損失變化。該參數值越大,分裂越保守。

featureNum

特徵數量或最大特徵ID。如果需要估計使用資源,則必須手動設定該參數。

baseScore

0.5

所有樣本的初始預測值。

randSeed

隨機數種子,整型。

featureImportanceType

gain

計算特徵重要性的類型,包括:

  • weight:在模型中,該特徵作為分裂特徵的次數。

  • gain:在模型中,該特徵帶來的資訊增益。

  • cover:在模型中,該特徵在分裂節點覆蓋的樣本數。

調優參數

coreNum

系統自動分配

核心數量,該參數值越大,演算法運行越快。

memSizePerCore

系統自動分配

每個核心使用的記憶體,單位為MB。

PS-SMART模型部署說明

如果您需要將PS-SMART組件產生的模型部署為線上服務,您需要在該組件的下遊接入通用模型匯出組件,並按照PS系列組件的使用方式配置組件參數,詳情請參見通用模型匯出

組件運行成功後,您可以前往PAI EAS模型線上服務頁面,部署模型服務,詳情請參見服務部署:控制台