Parameter Server (PS) dirancang untuk tugas pelatihan offline dan online berskala besar. Scalable Multiple Additive Regression Tree (SMART) adalah algoritma iteratif berbasis Gradient Boosting Decision Tree (GBDT) yang diimplementasikan pada PS. PS-SMART mendukung pelatihan dengan puluhan miliar sampel dan ratusan ribu fitur, serta dapat berjalan pada ribuan node. Komponen ini juga mendukung berbagai format data dan teknik optimasi, seperti histogram approximation.
Batasan
Data masukan untuk komponen PS-SMART klasifikasi multikelas harus memenuhi persyaratan berikut:
-
Kolom target hanya mendukung tipe numerik. Jika data dalam tabel MaxCompute bertipe STRING, Anda harus mengonversi tipe datanya. Misalnya, jika target klasifikasi berupa string Good/Medium/Bad, Anda harus mengonversinya menjadi 0/1/2.
-
Jika data dalam format KV, ID fitur harus berupa bilangan bulat positif dan nilai fitur harus berupa bilangan real. Jika ID fitur berupa string, Anda dapat menggunakan komponen serialize untuk melakukan serialisasi. Jika nilai fitur berupa string kategorikal, Anda dapat melakukan rekayasa fitur, seperti diskretisasi fitur.
-
Komponen PS-SMART klasifikasi multikelas mendukung tugas dengan ratusan ribu fitur. Namun, tugas semacam ini mengonsumsi sumber daya secara signifikan dan berjalan lambat. Algoritma GBDT cocok untuk pelatihan langsung dengan fitur kontinu. Oleh karena itu, kecuali untuk melakukan one-hot encoding pada fitur kategorikal guna menyaring fitur dengan frekuensi rendah, hindari diskretisasi pada fitur numerik kontinu lainnya.
-
Algoritma PS-SMART memperkenalkan elemen keacakan, seperti pengambilan sampel data dan fitur yang dikendalikan oleh parameter data_sample_ratio dan fea_sample_ratio, optimasi histogram approximation yang digunakan algoritma, serta urutan acak saat menggabungkan local sketch menjadi global sketch. Meskipun struktur pohon mungkin berbeda ketika beberapa worker berjalan secara terdistribusi, performa model secara teoretis tetap serupa. Oleh karena itu, wajar jika hasil yang diperoleh tidak konsisten dalam beberapa kali eksekusi meskipun menggunakan data dan parameter yang sama.
-
Untuk mempercepat pelatihan, Anda dapat menambahkan number of computing cores. Namun, algoritma PS-SMART hanya akan memulai pelatihan setelah semua server mendapatkan sumber daya yang diperlukan. Akibatnya, permintaan sumber daya tambahan saat kluster sedang sibuk akan meningkatkan waktu tunggu.
Catatan
Perhatikan hal-hal berikut saat menggunakan komponen PS-SMART klasifikasi multikelas:
-
Komponen PS-SMART klasifikasi multikelas mendukung tugas dengan ratusan ribu fitur. Namun, tugas semacam ini mengonsumsi sumber daya secara signifikan dan berjalan lambat. Algoritma GBDT cocok untuk pelatihan langsung dengan fitur kontinu. Oleh karena itu, kecuali untuk melakukan one-hot encoding pada fitur kategorikal guna menyaring fitur dengan frekuensi rendah, hindari diskretisasi pada fitur numerik kontinu lainnya.
-
Algoritma PS-SMART memperkenalkan elemen keacakan, seperti pengambilan sampel data dan fitur yang dikendalikan oleh parameter data_sample_ratio dan fea_sample_ratio, optimasi histogram approximation yang digunakan algoritma, serta urutan acak saat menggabungkan local sketch menjadi global sketch. Meskipun struktur pohon mungkin berbeda ketika beberapa worker berjalan secara terdistribusi, performa model secara teoretis tetap serupa. Oleh karena itu, wajar jika hasil yang diperoleh tidak konsisten dalam beberapa kali eksekusi meskipun menggunakan data dan parameter yang sama.
-
Anda dapat menambahkan number of computing cores untuk mempercepat pelatihan. Namun, algoritma PS-SMART hanya memulai pelatihan setelah semua server mendapatkan sumber daya yang diperlukan. Akibatnya, permintaan sumber daya tambahan saat kluster sedang sibuk akan meningkatkan waktu tunggu.
Konfigurasi komponen
Metode 1: Gunakan GUI
Dalam alur kerja Designer, tambahkan komponen PS-SMART multiclass classification dan konfigurasikan parameternya di panel sebelah kanan:
|
Tipe parameter |
Parameter |
Deskripsi |
|
Pengaturan kolom |
Is sparse format |
Untuk format sparse, gunakan spasi untuk memisahkan pasangan KV dan tanda titik dua (:) untuk memisahkan key dan value. Contoh: 1:0.3 3:0.9. |
|
Feature columns |
Kolom fitur dari tabel input yang digunakan untuk pelatihan. Jika data input dalam format dense, Anda hanya dapat memilih kolom bertipe numerik (BIGINT atau DOUBLE). Jika data input dalam format sparse KV dan baik key maupun value bertipe numerik, Anda hanya dapat memilih kolom bertipe STRING. |
|
|
Label column |
Kolom label dari tabel input. Tipe STRING dan numerik didukung. Untuk penyimpanan internal, hanya tipe numerik yang didukung. Contohnya, 0 dan 1 dalam klasifikasi biner. |
|
|
Weight column |
Kolom yang digunakan untuk memberi bobot pada setiap baris sampel. Hanya tipe numerik yang didukung. |
|
|
Pengaturan parameter |
Number of classes |
Jumlah kelas untuk klasifikasi multikelas. Jika jumlah kelas adalah n, nilai dalam kolom label harus berupa {0,1,2,...,n-1}. |
|
Evaluation metric type |
Tipe yang didukung adalah multiclass negative log likelihood dan multiclass classification error. |
|
|
Number of trees |
Jumlah pohon. Nilai ini harus berupa bilangan bulat positif. Waktu pelatihan sebanding dengan jumlah pohon. |
|
|
Maximum tree depth |
Nilai default adalah 5, yang berarti maksimal 32 leaf node. |
|
|
Data sampling ratio |
Saat membangun setiap pohon, ambil sebagian data untuk membangun weak learner dan mempercepat pelatihan. |
|
|
Feature sampling ratio |
Saat membangun setiap pohon, ambil sebagian fitur untuk membangun weak learner dan mempercepat pelatihan. |
|
|
L1 penalty coefficient |
Mengontrol ukuran leaf node. Nilai yang lebih besar menghasilkan distribusi ukuran leaf node yang lebih merata. Tingkatkan nilai ini jika terjadi overfitting. |
|
|
L2 penalty coefficient |
Mengontrol ukuran leaf node. Nilai yang lebih besar menghasilkan distribusi ukuran leaf node yang lebih merata. Tingkatkan nilai ini jika terjadi overfitting. |
|
|
Learning rate |
Nilai harus berada dalam rentang (0,1). |
|
|
Approximate sketch precision |
Ambang batas kuantil untuk membangun sketch. Nilai yang lebih kecil menghasilkan lebih banyak bucket. Biasanya, gunakan nilai default 0.03. Tidak perlu dikonfigurasi secara manual. |
|
|
Minimum split loss change |
Perubahan loss minimum yang diperlukan untuk membagi sebuah node. Nilai yang lebih besar membuat pembagian lebih konservatif. |
|
|
Number of features |
Jumlah fitur atau ID fitur maksimum. Anda harus mengonfigurasi parameter ini untuk memperkirakan penggunaan resource. |
|
|
Global bias |
Nilai prediksi awal untuk semua sampel. |
|
|
Random number generator seed |
Seed bilangan acak. Harus berupa bilangan bulat. |
|
|
Feature importance type |
Nilainya dapat berupa salah satu dari berikut:
|
|
|
Execution tuning |
Number of cores |
Secara default, sistem secara otomatis mengalokasikan core. |
|
Memory size per core |
Memori yang digunakan oleh satu core, dalam MB. Biasanya tidak perlu dikonfigurasi secara manual. Sistem mengalokasikan memori secara otomatis. |
Metode 2: Gunakan perintah PAI
Anda dapat menggunakan komponen skrip SQL untuk memanggil perintah PAI dan mengonfigurasi parameter komponen PS-SMART multiclass classification. Untuk informasi selengkapnya, lihat Skenario 4: Eksekusi perintah PAI dalam komponen skrip SQL.
--Train
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"
--Predict
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"
|
Modul |
Parameter |
Wajib |
Nilai default |
Deskripsi |
|
Parameter data |
featureColNames |
Ya |
Tidak ada |
Kolom fitur dari tabel input yang digunakan untuk pelatihan. Jika tabel input dalam format dense, Anda hanya dapat memilih kolom bertipe numerik (BIGINT atau DOUBLE). Jika tabel input dalam format sparse KV dan key serta value dalam format KV bertipe numerik, Anda hanya dapat memilih kolom bertipe STRING. |
|
labelColName |
Ya |
Tidak ada |
Kolom label dari tabel input. Tipe STRING dan numerik didukung. Untuk penyimpanan internal, hanya tipe numerik yang didukung. Misalnya, untuk klasifikasi multikelas, nilainya dapat berupa {0,1,2,…,n-1}, dengan n sebagai jumlah kelas. |
|
|
weightCol |
Tidak |
Tidak ada |
Kolom yang digunakan untuk memberi bobot pada setiap baris sampel. Hanya tipe numerik yang didukung. |
|
|
enableSparse |
Tidak |
false |
Menentukan apakah data dalam format sparse. Nilai yang valid adalah {true,false}. Untuk format sparse, gunakan spasi untuk memisahkan pasangan KV dan tanda titik dua (:) untuk memisahkan key dan value. Contoh: 1:0.3 3:0.9. |
|
|
inputTableName |
Ya |
Tidak ada |
Nama tabel input. |
|
|
modelName |
Ya |
Tidak ada |
Nama model output. |
|
|
outputImportanceTableName |
Tidak |
Tidak ada |
Nama tabel output untuk feature importance. |
|
|
inputTablePartitions |
Tidak |
Tidak ada |
Formatnya adalah ds=1/pt=1. |
|
|
outputTableName |
Tidak |
Tidak ada |
Tabel output di MaxCompute. Formatnya biner dan tidak dapat dibaca langsung. Hanya dapat diakses oleh komponen SMART prediction. |
|
|
lifecycle |
Tidak |
3 |
Siklus hidup tabel output. |
|
|
Parameter algoritma |
classNum |
Ya |
Tidak ada |
Jumlah kelas untuk klasifikasi multikelas. Jika jumlah kelas adalah n, nilai dalam kolom label harus berupa {0,1,2,...,n-1}. |
|
objective |
Ya |
Tidak ada |
Tipe fungsi objektif. Untuk pelatihan klasifikasi multikelas, pilih multi:softprob. |
|
|
metric |
Tidak |
Tidak ada |
Tipe metrik evaluasi untuk set data pelatihan. Output ditulis ke stdout di area Coordinator file Logview. Tipe yang didukung meliputi:
|
|
|
treeCount |
Tidak |
1 |
Jumlah pohon. Waktu pelatihan sebanding dengan nilai ini. |
|
|
maxDepth |
Tidak |
5 |
Kedalaman maksimum pohon. Nilai harus berada dalam rentang 1 hingga 20. |
|
|
sampleRatio |
Tidak |
1.0 |
Rasio pengambilan sampel data. Nilai harus berada dalam rentang (0,1]. Nilai 1.0 berarti tidak ada pengambilan sampel. |
|
|
featureRatio |
Tidak |
1.0 |
Rasio pengambilan sampel fitur. Nilai harus berada dalam rentang (0,1]. Nilai 1.0 berarti tidak ada pengambilan sampel. |
|
|
l1 |
Tidak |
0 |
Koefisien penalti L1. Nilai yang lebih besar menghasilkan distribusi leaf node yang lebih merata. Tingkatkan nilai ini jika terjadi overfitting. |
|
|
l2 |
Tidak |
1.0 |
Koefisien penalti L2. Nilai yang lebih besar menghasilkan distribusi leaf node yang lebih merata. Tingkatkan nilai ini jika terjadi overfitting. |
|
|
shrinkage |
Tidak |
0.3 |
Nilai harus berada dalam rentang (0,1). |
|
|
sketchEps |
Tidak |
0.03 |
Ambang batas kuantil untuk membangun sketch. Jumlah bucket adalah O(1.0/sketchEps). Nilai yang lebih kecil menghasilkan lebih banyak bucket. Biasanya, gunakan nilai default. Tidak perlu dikonfigurasi secara manual. Nilai harus berada dalam rentang (0,1). |
|
|
minSplitLoss |
Tidak |
0 |
Perubahan loss minimum yang diperlukan untuk membagi sebuah node. Nilai yang lebih besar membuat pembagian lebih konservatif. |
|
|
featureNum |
Tidak |
Tidak ada |
Jumlah fitur atau ID fitur maksimum. Anda harus mengonfigurasi parameter ini untuk memperkirakan penggunaan resource. |
|
|
baseScore |
Tidak |
0.5 |
Nilai prediksi awal untuk semua sampel. |
|
|
randSeed |
Tidak |
Tidak ada |
Seed bilangan acak. Harus berupa bilangan bulat. |
|
|
featureImportanceType |
Tidak |
gain |
Tipe pentingnya fitur yang akan dihitung. Meliputi:
|
|
|
Parameter tuning |
coreNum |
Tidak |
Dialokasikan sistem |
Jumlah core. Nilai yang lebih besar membuat algoritma berjalan lebih cepat. |
|
memSizePerCore |
Tidak |
Dialokasikan sistem |
Memori yang digunakan oleh setiap core, dalam MB. |
Penerapan model
Untuk menerapkan model yang dihasilkan oleh komponen PS-SMART sebagai layanan online, tambahkan komponen General-purpose Model Export di downstream komponen PS-SMART. Konfigurasikan parameter komponen tersebut sebagaimana pada komponen seri PS lainnya. Untuk informasi selengkapnya, lihat General-purpose Model Export.
Setelah eksekusi berhasil, buka halaman PAI-EAS Model Online Service untuk menerapkan layanan model. Untuk informasi selengkapnya, lihat Deploy a service in the console.