Gunakan algoritma XGBoost dengan Amazon SageMaker - Amazon SageMaker

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Gunakan algoritma XGBoost dengan Amazon SageMaker

XGBoost (Extreme Gradient Boosting) adalah implementasi open-source yang populer dan efisien dari algoritma gradient boosted trees. Peningkatan gradien adalah algoritma pembelajaran yang diawasi yang mencoba memprediksi variabel target secara akurat dengan menggabungkan beberapa perkiraan dari serangkaian model yang lebih sederhana. Algoritma XGBoost berkinerja baik dalam kompetisi pembelajaran mesin karena alasan berikut:

  • Penanganannya yang kuat dari berbagai tipe data, hubungan, distribusi.

  • Berbagai hiperparameter yang dapat Anda sesuaikan.

Anda dapat menggunakan XGBoost untuk regresi, klasifikasi (biner dan multiclass), dan masalah peringkat.

Anda dapat menggunakan rilis baru algoritma XGBoost sebagai:

  • Algoritma SageMaker bawaan Amazon.

  • Kerangka kerja untuk menjalankan skrip pelatihan di lingkungan lokal Anda.

Implementasi ini memiliki footprint memori yang lebih kecil, logging yang lebih baik, validasi hyperparameter yang lebih baik, dan set metrik yang lebih besar daripada versi aslinya. Ini menyediakan XGBoost estimator yang menjalankan skrip pelatihan di lingkungan XGBoost yang dikelola. Rilis SageMaker XGBoost saat ini didasarkan pada versi XGBoost asli 1.0, 1.2, 1.3, 1.5, dan 1.7.

Versi yang didukung

  • Mode kerangka kerja (sumber terbuka): 1.0-1, 1.2-1, 1.2-2, 1.3-1, 1.5-1, 1.7-1

  • Modus algoritma: 1.0-1, 1.2-1, 1.2-2, 1.3-1, 1.5-1, 1.7-1

Awas

Karena kapasitas komputasi yang diperlukan, SageMaker XGBoost versi 1.7-1 tidak kompatibel dengan instans GPU dari keluarga instans P2 untuk pelatihan atau inferensi.

penting

Saat Anda mengambil URI gambar SageMaker XGBoost, jangan gunakan :latest atau :1 untuk tag URI gambar. Anda harus menentukan salah satu Versi yang didukung untuk memilih wadah XGBoost SageMaker -managed dengan versi paket XGBoost asli yang ingin Anda gunakan. Untuk menemukan versi paket yang dimigrasikan ke wadah SageMaker XGBoost, lihat Docker Registry Paths dan Example Code. Kemudian pilih Anda Wilayah AWS, dan arahkan ke bagian XGBoost (algoritma).

Awas

Versi XGBoost 0.90 tidak digunakan lagi. Dukungan untuk pembaruan keamanan atau perbaikan bug untuk XGBoost 0.90 dihentikan. Kami sangat menyarankan Anda meningkatkan versi XGBoost ke salah satu versi yang lebih baru.

catatan

XGBoost v1.1 tidak didukung pada. SageMaker XGBoost 1.1 memiliki kemampuan rusak untuk menjalankan prediksi ketika input pengujian memiliki lebih sedikit fitur daripada data pelatihan dalam input LIBSVM. Kemampuan ini telah dipulihkan di XGBoost v1.2. Pertimbangkan untuk menggunakan SageMaker XGBoost 1.2-2 atau yang lebih baru.

Cara menggunakan SageMaker XGBoost

Dengan SageMaker, Anda dapat menggunakan XGBoost sebagai algoritma atau kerangka kerja bawaan. Ketika XGBoost sebagai kerangka kerja, Anda memiliki lebih banyak fleksibilitas dan akses ke skenario yang lebih maju karena Anda dapat menyesuaikan skrip pelatihan Anda sendiri. Bagian berikut menjelaskan cara menggunakan XGBoost dengan Python SageMaker SDK. Untuk informasi tentang cara menggunakan XGBoost dari Amazon SageMaker Studio Classic UI, lihat. Melatih, menyebarkan, dan mengevaluasi model yang telah dilatih sebelumnya dengan SageMaker JumpStart

  • Gunakan XGBoost sebagai kerangka kerja

    Gunakan XGBoost sebagai kerangka kerja untuk menjalankan skrip pelatihan khusus Anda yang dapat menggabungkan pemrosesan data tambahan ke dalam pekerjaan pelatihan Anda. Dalam contoh kode berikut, SageMaker Python SDK menyediakan XGBoost API sebagai kerangka kerja. Fungsi ini mirip dengan bagaimana SageMaker menyediakan API kerangka kerja lainnya, seperti TensorFlow, MxNet, dan. PyTorch

    import boto3 import sagemaker from sagemaker.xgboost.estimator import XGBoost from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "verbosity":"1", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-framework' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-framework') # construct a SageMaker XGBoost estimator # specify the entry_point to your xgboost training script estimator = XGBoost(entry_point = "your_xgboost_abalone_script.py", framework_version='1.7-1', hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

    Untuk end-to-end contoh menggunakan SageMaker XGBoost sebagai kerangka kerja, lihat Regresi dengan Amazon XGBoost SageMaker

  • Gunakan XGBoost sebagai algoritma bawaan

    Gunakan algoritma bawaan XGBoost untuk membangun wadah pelatihan XGBoost seperti yang ditunjukkan pada contoh kode berikut. Anda dapat secara otomatis melihat URI gambar algoritma bawaan XGBoost menggunakan API. SageMaker image_uris.retrieve Jika menggunakan Amazon SageMaker Python SDK versi 1, gunakan API. get_image_uri Untuk memastikan bahwa image_uris.retrieve API menemukan URI yang benar, lihat Parameter umum untuk algoritme bawaan. Kemudian cari xgboost dari daftar lengkap URI gambar algoritme bawaan dan wilayah yang tersedia.

    Setelah menentukan URI gambar XGBoost, gunakan wadah XGBoost untuk membuat estimator menggunakan Estimator API dan memulai pekerjaan pelatihan SageMaker . Mode algoritma bawaan XGBoost ini tidak menggabungkan skrip pelatihan XGBoost Anda sendiri dan berjalan langsung pada kumpulan data input.

    penting

    Saat Anda mengambil URI gambar SageMaker XGBoost, jangan gunakan :latest atau :1 untuk tag URI gambar. Anda harus menentukan salah satu Versi yang didukung untuk memilih wadah XGBoost SageMaker -managed dengan versi paket XGBoost asli yang ingin Anda gunakan. Untuk menemukan versi paket yang dimigrasikan ke wadah SageMaker XGBoost, lihat Docker Registry Paths dan Example Code. Kemudian pilih Anda Wilayah AWS, dan arahkan ke bagian XGBoost (algoritma).

    import sagemaker import boto3 from sagemaker import image_uris from sagemaker.session import Session from sagemaker.inputs import TrainingInput # initialize hyperparameters hyperparameters = { "max_depth":"5", "eta":"0.2", "gamma":"4", "min_child_weight":"6", "subsample":"0.7", "objective":"reg:squarederror", "num_round":"50"} # set an output path where the trained model will be saved bucket = sagemaker.Session().default_bucket() prefix = 'DEMO-xgboost-as-a-built-in-algo' output_path = 's3://{}/{}/{}/output'.format(bucket, prefix, 'abalone-xgb-built-in-algo') # this line automatically looks for the XGBoost image URI and builds an XGBoost container. # specify the repo_version depending on your preference. xgboost_container = sagemaker.image_uris.retrieve("xgboost", region, "1.7-1") # construct a SageMaker estimator that calls the xgboost-container estimator = sagemaker.estimator.Estimator(image_uri=xgboost_container, hyperparameters=hyperparameters, role=sagemaker.get_execution_role(), instance_count=1, instance_type='ml.m5.2xlarge', volume_size=5, # 5 GB output_path=output_path) # define the data type and paths to the training and validation datasets content_type = "libsvm" train_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'train'), content_type=content_type) validation_input = TrainingInput("s3://{}/{}/{}/".format(bucket, prefix, 'validation'), content_type=content_type) # execute the XGBoost training job estimator.fit({'train': train_input, 'validation': validation_input})

    Untuk informasi selengkapnya tentang cara mengatur XGBoost sebagai algoritma bawaan, lihat contoh notebook berikut.

Antarmuka Input/Output untuk algoritma XGBoost

Peningkatan gradien beroperasi pada data tabular, dengan baris mewakili pengamatan, satu kolom mewakili variabel target atau label, dan kolom yang tersisa mewakili fitur.

SageMaker Implementasi XGBoost mendukung format data berikut untuk pelatihan dan inferensi:

  • teks/libsvm (default)

  • teks/csv

  • aplikasi/x-parket

  • aplikasi/ x-recordio-protobuf

catatan

Ada beberapa pertimbangan yang harus diperhatikan mengenai pelatihan dan input inferensi:

  • Untuk meningkatkan kinerja, sebaiknya gunakan XGBoost dengan mode File, di mana data Anda dari Amazon S3 disimpan pada volume instans pelatihan.

  • Untuk pelatihan dengan input kolumnar, algoritma mengasumsikan bahwa variabel target (label) adalah kolom pertama. Untuk inferensi, algoritma mengasumsikan bahwa input tidak memiliki kolom label.

  • Untuk data CSV, input tidak boleh memiliki catatan header.

  • Untuk pelatihan LIBSVM, algoritme mengasumsikan bahwa kolom berikutnya setelah kolom label berisi pasangan nilai indeks berbasis nol untuk fitur. Jadi setiap baris memiliki format:: <label><index0>: <value0><index1>:<value1>.

  • Untuk informasi tentang jenis instans dan pelatihan terdistribusi, lihatRekomendasi instans EC2 untuk algoritma XGBoost.

Untuk mode input pelatihan CSV, total memori yang tersedia untuk algoritme harus dapat menampung kumpulan data pelatihan. Total memori yang tersedia dihitung sebagaiInstance Count * the memory available in the InstanceType. Untuk mode input pelatihan libsvm, itu tidak diperlukan, tetapi kami merekomendasikannya.

Untuk v1.3-1 dan yang lebih baru, SageMaker XGBoost menyimpan model dalam format biner internal XGBoost, menggunakan. Booster.save_model Versi sebelumnya menggunakan modul acar Python untuk membuat serialisasi/deserialisasi model.

catatan

Perhatikan versi saat menggunakan model XGBoost di SageMaker XGBoost open source. Versi 1.3-1 dan yang lebih baru menggunakan format biner internal XGBoost sementara versi sebelumnya menggunakan modul acar Python.

Untuk menggunakan model yang dilatih dengan SageMaker XGBoost v1.3-1 atau yang lebih baru di XGBoost open source
  • Gunakan kode Python berikut:

    import xgboost as xgb xgb_model = xgb.Booster() xgb_model.load_model(model_file_path) xgb_model.predict(dtest)
Untuk menggunakan model yang dilatih dengan versi XGBoost sebelumnya di SageMaker XGBoost open source
  • Gunakan kode Python berikut:

    import pickle as pkl import tarfile t = tarfile.open('model.tar.gz', 'r:gz') t.extractall() model = pkl.load(open(model_file_path, 'rb')) # prediction with test data pred = model.predict(dtest)
Untuk membedakan pentingnya titik data berlabel, gunakan Instance Weight Supports
  • SageMaker XGBoost memungkinkan pelanggan untuk membedakan pentingnya titik data berlabel dengan menetapkan setiap instance nilai bobot. Untuk input teks/libsvm, pelanggan dapat menetapkan nilai bobot ke instance data dengan melampirkannya setelah label. Misalnya, label:weight idx_0:val_0 idx_1:val_1.... Untuk input teks/csv, pelanggan harus menyalakan csv_weights bendera di parameter dan melampirkan nilai bobot di kolom setelah label. Misalnya:label,weight,val_0,val_1,...).

Rekomendasi instans EC2 untuk algoritma XGBoost

SageMaker XGBoost mendukung pelatihan dan inferensi CPU dan GPU. Rekomendasi instans bergantung pada kebutuhan pelatihan dan inferensi, serta versi algoritma XGBoost. Pilih salah satu opsi berikut untuk informasi lebih lanjut:

Pelatihan

Algoritma SageMaker XGBoost mendukung pelatihan CPU dan GPU.

Pelatihan CPU

SageMaker XGBoost 1.0-1 atau sebelumnya hanya melatih menggunakan CPU. Ini adalah algoritma yang terikat memori (sebagai lawan dari compute-bound). Jadi, instance komputasi tujuan umum (misalnya, M5) adalah pilihan yang lebih baik daripada instance yang dioptimalkan komputasi (misalnya, C4). Selanjutnya, kami menyarankan Anda memiliki memori total yang cukup dalam instance yang dipilih untuk menyimpan data pelatihan. Ini mendukung penggunaan ruang disk untuk menangani data yang tidak sesuai dengan memori utama. Ini adalah hasil dari out-of-core fitur yang tersedia dengan modus input libsvm. Meski begitu, menulis file cache ke disk memperlambat waktu pemrosesan algoritma.

Pelatihan GPU

SageMaker XGBoost versi 1.2-2 atau yang lebih baru mendukung pelatihan GPU. Meskipun biaya per instans lebih tinggi, GPU berlatih lebih cepat, membuatnya lebih hemat biaya.

SageMaker XGBoost versi 1.2-2 atau yang lebih baru mendukung keluarga instans GPU P2, P3, G4dn, dan G5.

SageMaker XGBoost versi 1.7-1 atau yang lebih baru mendukung keluarga instans GPU P3, G4dn, dan G5. Perhatikan bahwa karena persyaratan kapasitas komputasi, versi 1.7-1 atau yang lebih baru tidak mendukung keluarga instans P2.

Untuk memanfaatkan pelatihan GPU:

  • Tentukan jenis instance sebagai salah satu instance GPU (misalnya, P3)

  • Setel tree_method hyperparameter ke gpu_hist dalam skrip XGBoost yang ada

Pelatihan terdistribusi

SageMaker XGBoost mendukung instance CPU dan GPU untuk pelatihan terdistribusi.

Pelatihan CPU terdistribusi

Untuk menjalankan pelatihan CPU pada beberapa instance, atur instance_count parameter untuk estimator ke nilai yang lebih besar dari satu. Data input harus dibagi antara jumlah total instance.

Bagilah data masukan di seluruh instance

Bagilah data input menggunakan langkah-langkah berikut:

  1. Pecah data input menjadi file yang lebih kecil. Jumlah file harus setidaknya sama dengan jumlah instance yang digunakan untuk pelatihan terdistribusi. Menggunakan beberapa file yang lebih kecil sebagai lawan dari satu file besar juga mengurangi waktu pengunduhan data untuk pekerjaan pelatihan.

  2. Saat membuat Anda TrainingInput, atur parameter distribusi keShardedByS3Key. Dengan ini, setiap instance mendapat sekitar 1/n dari jumlah file di S3 jika ada n instance yang ditentukan dalam pekerjaan pelatihan.

Pelatihan GPU terdistribusi

Anda dapat menggunakan pelatihan terdistribusi dengan instans GPU tunggal atau multi-GPU.

Pelatihan terdistribusi dengan instans GPU tunggal

SageMaker XGBoost versi 1.2-2 hingga 1.3-1 hanya mendukung pelatihan instans GPU tunggal. Ini berarti bahwa bahkan jika Anda memilih instance multi-GPU, hanya satu GPU yang digunakan per instance.

Anda harus membagi data input Anda antara jumlah total instance jika:

  • Anda menggunakan XGBoost versi 1.2-2 hingga 1.3-1.

  • Anda tidak perlu menggunakan instans multi-GPU.

Untuk informasi selengkapnya, lihat Bagilah data masukan di seluruh instance.

catatan

Versi 1.2-2 hingga 1.3-1 dari SageMaker XGBoost hanya menggunakan satu GPU per instans meskipun Anda memilih instans multi-GPU.

Pelatihan terdistribusi dengan instans multi-GPU

Dimulai dengan versi 1.5-1, SageMaker XGBoost menawarkan pelatihan GPU terdistribusi dengan Dask. Dengan Dask Anda dapat menggunakan semua GPU saat menggunakan satu atau lebih instance multi-GPU. Dask juga berfungsi saat menggunakan instance GPU tunggal.

Berlatih dengan Dask menggunakan langkah-langkah berikut:

  1. Entah menghilangkan distribution parameter di Anda TrainingInputatau mengaturnya keFullyReplicated.

  2. Saat mendefinisikan hyperparameters Anda, atur use_dask_gpu_training ke. "true"

penting

Pelatihan terdistribusi dengan Dask hanya mendukung format input CSV dan Parket. Jika Anda menggunakan format data lain seperti LIBSVM atau PROTOBUF, pekerjaan pelatihan gagal.

Untuk data Parket, pastikan bahwa nama kolom disimpan sebagai string. Kolom yang memiliki nama tipe data lain akan gagal dimuat.

penting

Pelatihan terdistribusi dengan Dask tidak mendukung mode pipa. Jika mode pipa ditentukan, pekerjaan pelatihan gagal.

Ada beberapa pertimbangan yang harus diperhatikan saat melatih SageMaker XGBoost dengan Dask. Pastikan untuk membagi data Anda menjadi file yang lebih kecil. Dask membaca setiap file Parket sebagai partisi. Ada pekerja Dask untuk setiap GPU. Akibatnya, jumlah file harus lebih besar dari jumlah total GPU (jumlah instans* jumlah GPU per instance). Memiliki jumlah file yang sangat besar juga dapat menurunkan kinerja. Untuk informasi selengkapnya, lihat Praktik Terbaik Dask.

Variasi dalam output

tree_methodHyperparameter yang ditentukan menentukan algoritma yang digunakan untuk pelatihan XGBoost. Metode pohonapprox, hist dan semuanya gpu_hist merupakan metode perkiraan dan menggunakan sketsa untuk perhitungan kuantil. Untuk informasi selengkapnya, lihat Metode Pohon dalam dokumentasi XGBoost. Sketsa adalah algoritma perkiraan. Oleh karena itu, Anda dapat mengharapkan variasi dalam model tergantung pada faktor-faktor seperti jumlah pekerja yang dipilih untuk pelatihan terdistribusi. Signifikansi variasi bergantung pada data.

Inferensi

SageMaker XGBoost mendukung instance CPU dan GPU untuk inferensi. Untuk informasi tentang jenis instance untuk inferensi, lihat Jenis Instance SageMaker Amazon Amazon.

Contoh notebook XGBoost

Tabel berikut menguraikan berbagai contoh notebook yang membahas kasus penggunaan yang berbeda dari algoritma Amazon SageMaker XGBoost.

Judul Notebook Deskripsi

Cara Membuat wadah XGBoost Kustom?

Notebook ini menunjukkan cara membuat Wadah XGBoost kustom dengan Amazon SageMaker Batch Transform.

Regresi dengan XGBoost menggunakan Parket

Notebook ini menunjukkan cara menggunakan dataset Abalone di Parquet untuk melatih model XGBoost.

Bagaimana Melatih dan Menyelenggarakan Model Klasifikasi Multiclass?

Notebook ini menunjukkan cara menggunakan dataset MNIST untuk melatih dan meng-host model klasifikasi multiclass.

Bagaimana cara melatih Model untuk Prediksi Churn Pelanggan?

Notebook ini menunjukkan cara melatih model untuk Memprediksi Keberangkatan Pelanggan Seluler dalam upaya mengidentifikasi pelanggan yang tidak bahagia.

Pengantar infrastruktur Spot SageMaker Terkelola Amazon untuk Pelatihan XGBoost

Notebook ini menunjukkan cara menggunakan Instans Spot untuk pelatihan dengan XGBoost Container.

Bagaimana cara menggunakan Amazon SageMaker Debugger untuk men-debug Pekerjaan Pelatihan XGBoost?

Notebook ini menunjukkan cara menggunakan Amazon SageMaker Debugger untuk memantau pekerjaan pelatihan guna mendeteksi inkonsistensi menggunakan aturan debugging bawaan.

Untuk petunjuk tentang cara membuat dan mengakses instance notebook Jupyter yang dapat Anda gunakan untuk menjalankan contoh, lihat. SageMaker Instans SageMaker Notebook Amazon Setelah Anda membuat instance notebook dan membukanya, pilih tab SageMakerContoh untuk melihat daftar semua SageMaker sampel. Contoh buku catatan pemodelan topik menggunakan algoritme pembelajaran linier terletak di bagian Pengantar Algoritma Amazon. Untuk membuka buku catatan, pilih tab Use dan pilih Create copy.

Untuk informasi selengkapnya tentang algoritma Amazon SageMaker XGBoost, lihat posting blog berikut: