Pelatihan menggunakan algoritma XGBoost bawaan yang terdistribusi

Pelatihan dengan algoritma bawaan di Pelatihan AI Platform memungkinkan Anda mengirim set data dan melatih model tanpa menulis kode pelatihan apa pun. Halaman ini menjelaskan cara kerja algoritma XGBoost terdistribusi bawaan, dan cara menggunakannya.

Ringkasan

Algoritma XGBoost bawaan yang terdistribusi adalah wrapper untuk algoritma XGBoost yang kompatibel untuk dijalankan di AI Platform Training.

Tidak seperti algoritma XGBoost replika tunggal, algoritme ini memungkinkan Anda menggunakan beberapa mesin virtual secara paralel untuk berlatih pada set data besar. Algoritma ini juga memungkinkan Anda menggunakan GPU untuk pelatihan, yang dapat mempercepat proses pelatihan.

AI Platform Training menjalankan pelatihan menggunakan algoritma XGBoost terdistribusi berdasarkan set data Anda dan parameter model yang Anda berikan. Implementasi saat ini didasarkan pada versi 0.81 XGBoost.

Batasan

Fitur berikut tidak didukung untuk pelatihan dengan algoritma XGBoost bawaan yang terdistribusi:

  • Prapemrosesan. Algoritme ini tidak mendukung pra-pemrosesan otomatis. Anda harus menyiapkan data pelatihan dan validasi secara manual ke dalam beberapa grup file terpisah yang memenuhi persyaratan yang dijelaskan di bagian berikut tentang memformat data input.
  • Pelatihan replika tunggal. Algoritma ini dirancang untuk menggunakan beberapa mesin virtual untuk pelatihan. Gunakan algoritma XGBoost replikasi tunggal jika Anda ingin berlatih menggunakan satu mesin virtual.

Jenis mesin yang didukung

Anda dapat menggunakan tingkat skala Pelatihan AI Platform atau kombinasi jenis mesin yang valid dengan algoritme ini, selama konfigurasi Anda memenuhi persyaratan berikut:

  • Tentukan pekerja master dan setidaknya satu pekerja.
  • Untuk performa terbaik, tentukan jenis mesin yang sama untuk pekerja master dan pekerja.
  • Jangan tentukan server parameter apa pun.
  • Pastikan total memori virtual machine yang Anda tentukan setidaknya 20% lebih besar dari total ukuran file data pelatihan Anda. Dengan begitu, virtual machine dapat memuat semua data pelatihan ke dalam memori dan juga menggunakan memori tambahan untuk pelatihan.
  • Jika Anda menggunakan GPU, pastikan setiap mesin virtual hanya menggunakan satu GPU, dan gunakan jenis GPU yang sama untuk pekerja master dan untuk beberapa pekerja. Pastikan jenis mesin yang telah Anda tentukan mendukung konfigurasi GPU.
  • Jangan gunakan TPU apa pun.

Memformat data input

Algoritma XGBoost terdistribusi bawaan yang berfungsi pada data tabel numerik. Setiap baris set data mewakili satu instance, dan setiap kolom set data mewakili satu nilai fitur. Kolom target mewakili nilai yang ingin Anda prediksi.

Menyiapkan file CSV

Data input Anda harus berupa satu atau beberapa file CSV dengan encoding UTF-8. Setiap file harus memenuhi persyaratan berikut:

  • File CSV tidak boleh memiliki baris header. Jika file CSV Anda memiliki baris header yang melabeli setiap kolom, hapus baris pertama tersebut dari setiap file.
  • Kolom target harus berupa kolom pertama.
  • Untuk tugas pelatihan klasifikasi, kolom target dapat berisi nilai non-numerik. Semua kolom lainnya hanya boleh berisi data angka.
  • Untuk tugas pelatihan regresi, normalisasi nilai target Anda sehingga setiap nilai berada di antara 0 dan 1. Semua kolom lainnya hanya boleh berisi data numerik.

Data terpisah untuk pelatihan terdistribusi

Untuk menyediakan data dari beberapa file CSV saat Anda mengirimkan tugas pelatihan, gunakan karakter pengganti di jalur Cloud Storage yang Anda tentukan untuk argumen training_data_path dan validation_data_path. Semua file CSV harus menggunakan skema kolom yang sama, yang memenuhi persyaratan yang dijelaskan di bagian sebelumnya.

Algoritma XGBoost bawaan yang terdistribusi mendistribusikan data pelatihan Anda di seluruh virtual machine dengan salah satu cara berikut:

  • Jika jumlah file CSV lebih besar atau sama dengan jumlah mesin virtual, maka algoritme akan mendistribusikan data berdasarkan file dalam urutan round robin. Dengan kata lain, pekerja master memuat file CSV pertama, pekerja pertama memuat file CSV kedua, dan seterusnya. Metode penetapan loop file ini, sehingga setiap mesin virtual memuat jumlah file yang kurang lebih sama.

  • Jika jumlah file CSV kurang dari jumlah mesin virtual, algoritma akan mendistribusikan data berdasarkan instance dalam urutan round robin. Dengan kata lain, pekerja master memuat baris pertama dari setiap file CSV, pekerja pertama memuat baris kedua dari setiap file CSV, dan seterusnya. Metode penetapan loop instance sehingga setiap mesin virtual memuat jumlah instance yang kurang lebih sama.

Jika Anda menentukan argumen validation_data_path, algoritme juga akan memuat data validasi dengan salah satu cara berikut. Namun, perhatikan bahwa algoritme memuat data pelatihan dan data validasi secara independen. Misalnya, jika Anda menyediakan banyak file data pelatihan, tetapi hanya satu file data validasi, algoritme mungkin memuat data pelatihan berdasarkan file dan memuat data validasi berdasarkan instance.

Untuk mendapatkan performa terbaik, bagi data pelatihan menjadi beberapa file CSV yang memenuhi panduan berikut:

  • Setiap file berukuran kurang dari 1 GB.
  • Setiap file berisi jumlah instance yang kurang lebih sama.
  • Jumlah file yang dapat dibagi dengan jumlah total mesin virtual. Misalnya, jika Anda melatih dengan master dan dua pekerja, jumlah filenya adalah kelipatan 3.

Memeriksa izin bucket Cloud Storage

Untuk menyimpan data Anda, gunakan bucket Cloud Storage di project Google Cloud yang sama dengan yang Anda gunakan untuk menjalankan tugas Pelatihan AI Platform. Jika tidak, berikan AI Platform akses ke bucket Cloud Storage tempat data Anda disimpan.

Menggunakan GPU

Seperti yang dijelaskan di bagian sebelumnya tentang jenis mesin, algoritma XGBoost bawaan yang terdistribusi mendukung penggunaan satu GPU per mesin virtual untuk pelatihan.

Untuk memanfaatkan GPU, tetapkan hyperparameter tree_method ke gpu_exact atau gpu_hist saat Anda mengirimkan tugas pelatihan.

Pelajari lebih lanjut dukungan XGBoost untuk GPU.

Mengirim tugas pelatihan XGBoost yang didistribusikan

Bagian ini menjelaskan cara mengirimkan tugas pelatihan XGBoost bawaan yang terdistribusi. Gunakan konsol Google Cloud atau Google Cloud CLI untuk mengirimkan tugas Anda.

Anda dapat menemukan deskripsi komprehensif tentang hyperparameter dan argumen lain yang dapat Anda sesuaikan untuk algoritma ini dalam referensi untuk algoritma XGBoost bawaan yang terdistribusi.

Contoh berikut mengasumsikan bahwa Anda melatih pengklasifikasi pada data Sensus yang telah Anda bagi menjadi tiga file data pelatihan dan tiga file data validasi:

  • train-0.csv
  • train-1.csv
  • train-2.csv
  • eval-0.csv
  • eval-1.csv
  • eval-2.csv

Asumsikan tidak satu pun dari file tersebut yang memiliki baris header dan Anda telah menguploadnya ke Cloud Storage. Contoh ini membuat tugas pelatihan yang menggunakan tiga virtual machine, yang masing-masing menggunakan GPU NVIDIA Tesla P100. Tugas berjalan di region us-central1.

Konsol Google Cloud

  1. Buka halaman Tugas Pelatihan AI Platform di konsol Google Cloud:

    Halaman Tugas Pelatihan AI Platform

  2. Klik tombol Tugas pelatihan baru. Dari opsi yang ditampilkan di bawah, klik Pelatihan algoritme bawaan.

  3. Di halaman Create a new training job, buka menu drop-down Select anAlgorithm, lalu pilih Distributed XGBoost. Klik Next.

  4. Di bagian Data pelatihan, pilih Use multiple files saved in one Cloud Storage directory dari menu drop-down. Gunakan kolom Directory path untuk memilih direktori Cloud Storage yang berisi file pelatihan Anda. Di kolom Nama karakter pengganti, masukkan train-*.csv.

  5. Di bagian Data validasi (Opsional), pilih Gunakan beberapa file yang disimpan di satu direktori Cloud Storage dari menu drop-down. Gunakan kolom Directory path untuk memilih direktori Cloud Storage yang berisi file validasi Anda. Di kolom Nama karakter pengganti, masukkan eval-*.csv.

  6. Di bagian Output pelatihan, gunakan kolom Direktori Output untuk memilih direktori terpisah di bucket Cloud Storage untuk menyimpan output pelatihan. Klik Next.

  7. Sesuaikan Argumen algoritma untuk tugas pelatihan Anda atau pertahankan nilai default. Untuk mempelajari argumen lebih lanjut, buka link di Konsol Google Cloud dan lihat referensi XGBoost bawaan yang terdistribusi. Klik Next.

  8. Masukkan nama pilihan Anda di kolom ID Pekerjaan. Dari menu drop-down Region, pilih us-central1.

    Dalam menu drop-down Scale tier, pilih CUSTOM. Di bagian Custom cluster configuration, pilih standard_p100 di menu drop-down Master type dan Worker type. Di kolom Jumlah pekerja, masukkan 2. Klik Done.

  9. Di halaman Tugas, klik ID tugas baru Anda untuk melihat halaman Detail Tugas. Kemudian, klik View Logs untuk melihat log pelatihan.

Alat gcloud

  1. Tetapkan variabel lingkungan untuk tugas Anda, dengan mengganti BUCKET dengan nama bucket Cloud Storage dan DATA_DIRECTORY dengan jalur ke direktori dalam bucket yang berisi data Anda:

    # Specify the Docker container for your built-in algorithm selection.
    IMAGE_URI='gcr.io/cloud-ml-algos/xgboost_dist:latest'
    
    # Specify the Cloud Storage wildcard paths to your training and validation data.
    TRAINING_DATA='gs://BUCKET/DATA_DIRECTORY/train-*.csv'
    VALIDATION_DATA='gs://BUCKET/DATA_DIRECTORY/eval-*.csv'
    
    # Variables for constructing descriptive names for JOB_ID and JOB_DIR
    DATASET_NAME='census'
    ALGORITHM='xgboost_dist'
    MODEL_TYPE='classification'
    DATE='date '+%Y%m%d_%H%M%S''
    MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
    
    # Specify an ID for this job
    JOB_ID="${MODEL_NAME}_${DATE}"
    
    # Specify the directory where you want your training outputs to be stored
    JOB_DIR="gs://BUCKET/algorithm_training/${MODEL_NAME}/${DATE}"
    
  2. Kirim tugas pelatihan menggunakan perintah gcloud ai-platform jobs training submit:

    gcloud ai-platform jobs submit training $JOB_ID \
      --region=us-central1 \
      --master-image-uri=$IMAGE_URI \
      --job-dir=$JOB_DIR \
      --scale-tier=CUSTOM \
      --master-machine-type=n1-standard-4 \
      --master-accelerator count=1,type=nvidia-tesla-p100 \
      --worker-machine-type=n1-standard-4 \
      --worker-count=2 \
      --worker-accelerator count=1,type=nvidia-tesla-p100 \
      -- \
      --training_data_path=$TRAINING_DATA \
      --validation_data_path=$VALIDATION_DATA \
      --objective=binary:logistic \
      --tree_method=gpu_hist
    
  3. Pantau status tugas pelatihan Anda dengan melihat log menggunakan gcloud. Lihat gcloud ai-platform jobs describe dan gcloud ai-platform jobs stream-logs.

    gcloud ai-platform jobs describe ${JOB_ID}
    gcloud ai-platform jobs stream-logs ${JOB_ID}
    

Langkah selanjutnya