Langkah 5: Menyebarkan Model ke Amazon EC2 - Amazon SageMaker

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

Langkah 5: Menyebarkan Model ke Amazon EC2

Untuk mendapatkan prediksi, terapkan model Anda ke Amazon EC2 menggunakan Amazon. SageMaker

Menyebarkan Model ke SageMaker Layanan Hosting

Untuk meng-host model melalui Amazon EC2 menggunakan Amazon SageMaker, terapkan model yang Anda latih Membuat dan Menjalankan Training Job dengan memanggil deploy metode estimator. xgb_model Ketika Anda memanggil deploy metode, Anda harus menentukan nomor dan jenis instance EC2 MLyang ingin Anda gunakan untuk hosting endpoint.

import sagemaker from sagemaker.serializers import CSVSerializer xgb_predictor=xgb_model.deploy( initial_instance_count=1, instance_type='ml.t2.medium', serializer=CSVSerializer() )
  • initial_instance_count(int) — Jumlah instance untuk menyebarkan model.

  • instance_type(str) - Jenis instance yang ingin Anda operasikan model yang Anda gunakan.

  • serializer(int) - Serialisasi data input dari berbagai format ( NumPy array, daftar, file, atau buffer) ke string berformat CSV. Kami menggunakan ini karena algoritma XGBoost menerima file input dalam format CSV.

deployMetode ini membuat model deployable, mengkonfigurasi endpoint layanan SageMaker hosting, dan meluncurkan endpoint untuk meng-host model. Untuk informasi selengkapnya, lihat metode class penerapan Estimator SageMaker generik di Amazon Python SageMaker SDK. Untuk mengambil nama endpoint yang dihasilkan oleh deploy metode, jalankan kode berikut:

xgb_predictor.endpoint_name

Ini harus mengembalikan nama titik akhir dari. xgb_predictor Format nama endpoint adalah"sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS". Endpoint ini tetap aktif dalam instance ML, dan Anda dapat membuat prediksi seketika kapan saja kecuali jika Anda mematikannya nanti. Salin nama titik akhir ini dan simpan untuk digunakan kembali dan buat prediksi real-time di tempat lain di instance SageMaker Studio atau SageMaker notebook.

Tip

Untuk mempelajari lebih lanjut tentang mengompilasi dan mengoptimalkan model Anda untuk penerapan ke instans Amazon EC2 atau perangkat edge, lihat Mengompilasi dan Menerapkan Model dengan Neo.

(Opsional) Gunakan SageMaker Prediktor untuk Menggunakan Kembali Titik Akhir yang Dihosting

Setelah menerapkan model ke titik akhir, Anda dapat menyiapkan SageMaker prediktor baru dengan memasangkan titik akhir dan terus membuat prediksi waktu nyata di buku catatan lain. Kode contoh berikut menunjukkan bagaimana menggunakan kelas SageMaker Predictor untuk mengatur objek prediktor baru menggunakan titik akhir yang sama. Gunakan kembali nama endpoint yang Anda gunakan untuk. xgb_predictor

import sagemaker xgb_predictor_reuse=sagemaker.predictor.Predictor( endpoint_name="sagemaker-xgboost-YYYY-MM-DD-HH-MM-SS-SSS", sagemaker_session=sagemaker.Session(), serializer=sagemaker.serializers.CSVSerializer() )

xgb_predictor_reusePrediktor berperilaku persis sama dengan aslinya. xgb_predictor Untuk informasi selengkapnya, lihat kelas SageMaker Prediktor di Amazon SageMaker Python SDK.

(Opsional) Buat Prediksi dengan Batch Transform

Alih-alih menghosting titik akhir dalam produksi, Anda dapat menjalankan pekerjaan inferensi batch satu kali untuk membuat prediksi pada kumpulan data pengujian menggunakan transformasi batch. SageMaker Setelah pelatihan model Anda selesai, Anda dapat memperluas estimator ke transformer objek, yang didasarkan pada kelas SageMakerTransformer. Trafo batch membaca data input dari bucket S3 tertentu dan membuat prediksi.

Untuk menjalankan pekerjaan transformasi batch
  1. Jalankan kode berikut untuk mengonversi kolom fitur kumpulan data pengujian menjadi file CSV dan unggah ke bucket S3:

    X_test.to_csv('test.csv', index=False, header=False) boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'test/test.csv')).upload_file('test.csv')
  2. Tentukan URI bucket S3 dari input dan output untuk pekerjaan transformasi batch seperti yang ditunjukkan berikut:

    # The location of the test dataset batch_input = 's3://{}/{}/test'.format(bucket, prefix) # The location to store the results of the batch transform job batch_output = 's3://{}/{}/batch-prediction'.format(bucket, prefix)
  3. Buat objek transformator yang menentukan jumlah minimal parameter: instance_count dan instance_type parameter untuk menjalankan pekerjaan transformasi batch, dan output_path untuk menyimpan data prediksi seperti yang ditunjukkan berikut:

    transformer = xgb_model.transformer( instance_count=1, instance_type='ml.m4.xlarge', output_path=batch_output )
  4. Memulai pekerjaan transformasi batch dengan mengeksekusi transform() metode transformer objek seperti yang ditunjukkan berikut:

    transformer.transform( data=batch_input, data_type='S3Prefix', content_type='text/csv', split_type='Line' ) transformer.wait()
  5. Saat pekerjaan transformasi batch selesai, SageMaker buat data test.csv.out prediksi yang disimpan di batch_output jalur, yang seharusnya dalam format berikut:s3://sagemaker-<region>-111122223333/demo-sagemaker-xgboost-adult-income-prediction/batch-prediction. Jalankan yang berikut ini AWS CLI untuk mengunduh data keluaran dari pekerjaan transformasi batch:

    ! aws s3 cp {batch_output} ./ --recursive

    Ini harus membuat test.csv.out file di bawah direktori kerja saat ini. Anda akan dapat melihat nilai float yang diprediksi berdasarkan regresi logistik dari pekerjaan pelatihan XGBoost.