View a markdown version of this page

Cara menggunakan SageMaker AI XGBoost - Amazon SageMaker AI

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

Cara menggunakan SageMaker AI XGBoost

Dengan SageMaker AI, 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 SageMaker Python SDK, dan input/output antarmuka untuk algoritma XGBoost. Untuk informasi tentang cara menggunakan XGBoost dari Amazon SageMaker Studio Classic UI, lihat. SageMaker JumpStart model terlatih

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 AI 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 AI 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 contoh ujung ke ujung menggunakan SageMaker AI XGBoost sebagai kerangka kerja, lihat Regresi dengan Amazon AI 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 SageMaker AI image_uris.retrieve API. 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 SageMaker AI Estimator API dan memulai pekerjaan pelatihan. 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 AI XGBoost, jangan gunakan :latest atau :1 untuk tag URI gambar. Anda harus menentukan salah satu Versi yang didukung untuk memilih wadah SageMaker AI-managed XGBoost dengan versi paket XGBoost asli yang ingin Anda gunakan. Untuk menemukan versi paket yang dimigrasikan ke kontainer SageMaker AI 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 AI 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.

Input/Output antarmuka 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.

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

  • text/libsvm (default)

  • text/csv

  • application/x-parket

  • application/x-protobuf rekaman

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 AI XGBoost menyimpan model dalam format biner internal XGBoost, menggunakan. Booster.save_model Versi sebelumnya menggunakan modul acar Python ke serialize/deserialize model.

catatan

Perhatikan versi saat menggunakan model SageMaker AI XGBoost di 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 AI 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 SageMaker AI XGBoost sebelumnya di 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 AI XGBoost memungkinkan pelanggan untuk membedakan pentingnya titik data berlabel dengan menetapkan setiap instance nilai bobot. Untuk text/libsvminput, pelanggan dapat menetapkan nilai bobot ke instance data dengan melampirkannya setelah label. Misalnya, label:weight idx_0:val_0 idx_1:val_1.... Untuk text/csvinput, pelanggan perlu menyalakan csv_weights bendera di parameter dan melampirkan nilai bobot di kolom setelah label. Misalnya:label,weight,val_0,val_1,...).