Pelatihan menggunakan algoritma XGBoost terdistribusi bawaan

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

Ringkasan

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

Tidak seperti algoritma XGBoost bawaan replika tunggal, algoritma ini memungkinkan Anda menggunakan beberapa virtual machine secara paralel untuk melakukan pelatihan 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 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 terdistribusi bawaan:

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

Jenis mesin yang didukung

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

  • Tentukan pekerja master dan minimal 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. Hal ini memungkinkan virtual machine memuat semua data pelatihan ke dalam memori dan juga menggunakan memori tambahan untuk pelatihan.
  • Jika Anda menggunakan GPU, pastikan setiap virtual machine hanya menggunakan satu GPU, dan gunakan jenis GPU yang sama untuk pekerja master dan pekerja. Pastikan jenis mesin yang telah Anda tentukan mendukung konfigurasi GPU.
  • Jangan gunakan TPU apa pun.

Memformat data input

Algoritma XGBoost terdistribusi bawaan berfungsi pada data tabel numerik. Setiap baris set data mewakili satu instance, dan setiap kolom set data mewakili 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 ini 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 numerik.
  • Untuk tugas pelatihan regresi, normalkan nilai target Anda sehingga setiap nilai antara 0 dan 1. Semua kolom lainnya hanya boleh berisi data numerik.

Membagi data untuk pelatihan terdistribusi

Untuk memberikan 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.

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

  • Jika jumlah file CSV lebih besar dari atau sama dengan jumlah virtual machine, algoritma 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 file ini akan berulang sehingga setiap virtual machine memuat jumlah file yang kira-kira sama.

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

Jika Anda menentukan argumen validation_data_path, algoritma juga akan memuat data validasi dengan salah satu cara berikut. Namun, perlu diperhatikan bahwa algoritma memuat data pelatihan dan data validasi secara independen. Misalnya, jika Anda menyediakan banyak file data pelatihan, tetapi hanya satu file data validasi, algoritma 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 kira-kira sama.
  • Jumlah file dapat dibagi dengan jumlah total virtual machine. Misalnya, jika Anda berlatih dengan master dan dua pekerja, jumlah file adalah kelipatan 3.

Memeriksa izin bucket Cloud Storage

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

Menggunakan GPU

Seperti yang dijelaskan di bagian sebelumnya tentang jenis mesin, algoritma XGBoost terdistribusi bawaan mendukung penggunaan satu GPU per virtual machine 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 terdistribusi

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

Anda dapat menemukan deskripsi komprehensif tentang hyperparameter dan argumen lainnya yang dapat disesuaikan untuk algoritma ini di referensi untuk algoritma XGBoost terdistribusi bawaan.

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 bahwa tidak ada file 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 AI Platform Training 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 an algorithm, lalu pilih Distributed XGBoost. Klik Next.

  4. Di bagian Training data, pilih Use multiple files stored 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 Validation data (Optional), pilih Use multiple files stored in one Cloud Storage directory 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 Output directory untuk memilih direktori terpisah di bucket Cloud Storage Anda guna menyimpan output pelatihan. Klik Berikutnya.

  7. Sesuaikan Argumen algoritma untuk tugas pelatihan Anda atau biarkan nilai default seperti apa adanya. Untuk mempelajari argumen lebih lanjut, ikuti link di konsol Google Cloud dan lihat referensi XGBoost terdistribusi bawaan. Klik Berikutnya.

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

    Di 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 Selesai.

  9. Di halaman Tugas, klik ID tugas baru Anda untuk melihat halaman Detail Tugas. Kemudian, klik Lihat Log 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 di bucket Anda 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 dengan 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