Gunakan Amazon SageMaker Elastic Inference (EI) - Amazon SageMaker

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

Gunakan Amazon SageMaker Elastic Inference (EI)

Mulai 15 April 2023, tidak AWS akan memasukkan pelanggan baru ke Amazon Elastic Inference (EI), dan akan membantu pelanggan saat ini memigrasikan beban kerja mereka ke opsi yang menawarkan harga dan kinerja yang lebih baik. Setelah 15 April 2023, pelanggan baru tidak akan dapat meluncurkan instans dengan akselerator Amazon EI di Amazon, Amazon ECS, atau SageMaker Amazon EC2.

Machine learning (ML) on AWS membantu Anda berinovasi lebih cepat dengan rangkaian layanan dan infrastruktur ML terlengkap yang tersedia dalam model as-you-go penggunaan berbayar berbiaya rendah. AWS terus memberikan infrastruktur berkinerja lebih baik dan biaya lebih rendah untuk beban kerja inferensi ML. AWS meluncurkan Amazon Elastic Inference (EI) pada tahun 2018 untuk memungkinkan pelanggan melampirkan akselerasi bertenaga GPU berbiaya rendah ke Amazon EC2, SageMaker instans Amazon, atau Amazon Elastic Container Service (ECS) untuk mengurangi biaya menjalankan inferensi pembelajaran mendalam hingga 75% dibandingkan dengan instans berbasis GPU mandiri seperti Amazon EC2 P4d dan Amazon EC2 G5. Pada tahun 2019, AWS meluncurkan AWS Inferentia, silikon khusus pertama Amazon yang dirancang untuk mempercepat beban kerja pembelajaran mendalam dengan memberikan inferensi kinerja tinggi di cloud. Instans Amazon EC2 Inf1 berdasarkan chip AWS Inferentia menghasilkan throughput 2,3x lebih tinggi dan biaya per inferensi hingga 70% lebih rendah daripada instans Amazon EC2 berbasis GPU generasi saat ini yang sebanding. Dengan ketersediaan opsi komputasi baru yang dipercepat seperti instans AWS Inferentia dan Amazon EC2 G5, manfaat melampirkan GPU fraksional ke instans host CPU menggunakan Amazon EI telah berkurang. Misalnya, pelanggan yang menghosting model di Amazon EI yang pindah ke ml.inf1.xlarge instans bisa mendapatkan penghematan biaya hingga 56% dan peningkatan kinerja 2x.

Pelanggan dapat menggunakan Amazon SageMaker Inference Recommender untuk membantu mereka memilih instans alternatif terbaik untuk Amazon EI untuk menerapkan model ML-nya.

Pertanyaan yang sering diajukan

  1. Mengapa Amazon mendorong pelanggan untuk memindahkan beban kerja dari Amazon Elastic Inference (EI) ke opsi akselerasi perangkat keras yang lebih baru seperti Inferentia? AWS

    Pelanggan mendapatkan kinerja yang lebih baik dengan harga yang jauh lebih baik daripada Amazon EI dengan opsi akselerator perangkat keras baru seperti AWS Inferentia untuk beban kerja inferensi mereka. AWS Inferentia dirancang untuk memberikan inferensi kinerja tinggi di cloud, untuk menurunkan total biaya inferensi, dan untuk memudahkan pengembang mengintegrasikan pembelajaran mesin ke dalam aplikasi bisnis mereka. Untuk memungkinkan pelanggan mendapatkan keuntungan dari akselerator perangkat keras generasi baru tersebut, kami tidak akan memasukkan pelanggan baru ke Amazon EI setelah 15 April 2023.

  2. AWS Layanan apa yang terpengaruh oleh langkah untuk menghentikan orientasi pelanggan baru ke Amazon Elastic Inference (EI)?

    Pengumuman ini akan memengaruhi akselerator Amazon EI yang melekat pada tugas Amazon EC2, instans SageMaker Amazon, atau Amazon Elastic Container Service (ECS). Di Amazon SageMaker, ini berlaku untuk titik akhir dan kernel notebook menggunakan akselerator Amazon EI.

  3. Apakah saya dapat membuat akselerator Amazon Elastic Inference (EI) baru setelah 15 April 2023?

    Tidak, jika Anda adalah pelanggan baru dan belum menggunakan Amazon EI dalam 30 hari terakhir, maka Anda tidak akan dapat membuat instans Amazon EI baru di AWS akun Anda setelah 15 April 2023. Namun, jika Anda telah menggunakan akselerator Amazon EI setidaknya sekali dalam 30 hari terakhir, Anda dapat memasang akselerator Amazon EI baru ke instans Anda.

  4. Bagaimana cara mengevaluasi opsi instans alternatif untuk Titik Akhir SageMaker Inferensi Amazon saya saat ini?

    Amazon SageMaker Inference Recommender dapat membantu Anda mengidentifikasi penerapan hemat biaya untuk memigrasikan beban kerja yang ada dari Amazon Elastic Inference (EI) ke instans ML yang sesuai yang didukung oleh. SageMaker

  5. Bagaimana cara mengubah jenis instans untuk titik akhir saya yang ada di Amazon? SageMaker

    Anda dapat mengubah jenis instans untuk titik akhir yang ada dengan melakukan hal berikut:

    1. Pertama, buat baru EndpointConfig yang menggunakan tipe instance baru. Jika Anda memiliki kebijakan penskalaan otomatis, hapus kebijakan penskalaan otomatis yang ada.

    2. Panggil UpdateEndpointsambil menentukan yang baru Anda buat EndpointConfig.

    3. Tunggu hingga titik akhir Anda mengubah status menjadiInService. Ini akan memakan waktu sekitar 10-15 menit.

    4. Terakhir, jika Anda memerlukan penskalaan otomatis untuk titik akhir baru Anda, buat kebijakan penskalaan otomatis baru untuk titik akhir baru ini dan. ProductionVariant

  6. Bagaimana cara mengubah jenis instans untuk Instans SageMaker Notebook Amazon yang sudah ada menggunakan Amazon Elastic Inference (EI)?

    Pilih instance Notebook di SageMaker konsol, lalu pilih Instans Notebook yang ingin Anda perbarui. Pastikan Instance Notebook memiliki Stopped status. Terakhir, Anda dapat memilih Edit dan mengubah jenis instans Anda. Pastikan bahwa, ketika Instans Notebook Anda dimulai, Anda memilih kernel yang tepat untuk instans baru Anda.

  7. Apakah ada jenis instance tertentu yang merupakan alternatif yang baik untuk Amazon Elastic Inference (EI)?

    Setiap beban kerja pembelajaran mesin adalah unik. Sebaiknya gunakan Amazon SageMaker Inference Recommender untuk membantu Anda mengidentifikasi jenis instans yang tepat untuk beban kerja, persyaratan kinerja, dan anggaran Anda. AWS Inferentia, khususnyainf1.xlarge, adalah alternatif kinerja tinggi dan biaya rendah terbaik untuk pelanggan Amazon EI.

Bermigrasi dari Amazon Elastic Inference ke instans lain

Informasi berikut dapat membantu Anda memigrasikan titik akhir yang SageMaker di-host dari instans yang menggunakan akselerator Amazon Elastic Inference ke instans lain. Saran bervariasi tergantung pada kerangka kerja Anda.

PyTorch

Jika Anda bermigrasi dari PyTorch, gunakan panduan berikut.

1. Pilih jenis instans yang tepat

Setiap beban kerja pembelajaran mesin adalah unik. Sebaiknya gunakan Amazon SageMaker Inference Recommender untuk membantu Anda mengidentifikasi jenis instans yang tepat untuk beban kerja, persyaratan kinerja, dan anggaran Anda. AWS Inferentia, khususnyainf1.xlarge, adalah alternatif kinerja tinggi dan biaya rendah terbaik untuk pelanggan Amazon Elastic Inference.

Dalam pengujian beban kami dengan Inference Recommender, g4dn.xlarge instans berkinerja lebih baik daripada m5.large instance dengan lampiran. eia.2large Dengan Amazon Elastic Inference, Anda harus membayar biaya tambahan instans ML tempat akselerator terpasang. Amazon Elastic Inference juga hanya mendukung PyTorch 1,5 dan TensorFlow 2,3. Jika Anda bermigrasi ke ml.g4dn instance, Anda dapat menggunakan versi terbaru PyTorch 1.11 dan 2.9. TensorFlow Selain itu, ml.g4dn dan AWS Inferensia tersedia di semua AWS Wilayah, sedangkan Amazon Elastic Inference hanya tersedia di 6 Wilayah. Baik AWS Inferentia dan ml.g4dn menawarkan kinerja yang lebih baik dengan harga lebih rendah untuk sebagian besar beban kerja inferensi ML.

2. Memodifikasi inference.py

Ubah inference.py file Anda untuk menghapus perubahan yang diperlukan khusus Inferensi Elastis dan gunakan penangan default. Berdasarkan kasus pengguna yang berbeda, Anda mungkin memiliki penangan input dan output yang berbeda, tetapi perubahan utama yang harus Anda lakukan ada dalam fungsi model_fn handler pemuatan model dan. predict_fn Hapus pengendali prediksi khusus Inferensi Elastis predict_fn dan kembalikan handler pemuatan model ke format model_fn default. Contoh berikut menunjukkan bagaimana melakukan ini, dengan bagian-bagian yang harus Anda hapus dari inference.py komentar:

from __future__ import print_function import os import torch import torch.nn as nn import torch.nn.functional as F import numpy as np def model_fn(model_dir, context): model = {customer_model} # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # loaded_model = loaded_model.eval() # loaded_model = torcheia.jit.attach_eia(loaded_model, 0) with open(os.path.join(model_dir, 'model.pth'), 'rb') as f: model.load_state_dict(torch.load(f)) return model # def predict_fn(input_data, model): # logger.info( # "Performing EIA inference with Torch JIT context with input of size {}".format( # input_data.shape # ) # ) # device = torch.device("cuda" if torch.cuda.is_available() else "cpu") # input_data = input_data.to(device) # with torch.no_grad(): # if torch.__version__ in VERSIONS_USE_NEW_API: # import torcheia # # torch._C._jit_set_profiling_executor(False) # with torch.jit.optimized_execution(True): # return model.forward(input_data) # else: # with torch.jit.optimized_execution(True, {"target_device": "eia:0"}): # return model(input_data) def predict_fn(input_data, model): return model(input_data)

3. Buat model

Buat model baru yang menunjuk ke inference.py file Anda yang dimodifikasi. Anda dapat menyimpan inference.py file secara lokal dan mengarahkannya dengan menentukan source_dir dan entry_point atau memasukkan inference.py file ke dalam model tarball. Contoh berikut menunjukkan kasus sebelumnya:

from sagemaker.pytorch import PyTorchModel pytorch = PyTorchModel( model_data={model_data_url}, role=role, entry_point="inference.py", source_dir="code", framework_version="1.5.1", py_version="py3", sagemaker_session=sagemaker_session, )

4. Terapkan model ke titik akhir dan panggil

Anda dapat menggunakan salah satu opsi berikut untuk menerapkan model Anda setelah membuat perubahan sebelumnya.

Opsi 1: Menyebarkan dari awal

Anda dapat menerapkan model ke titik akhir baru dengan instance yang direkomendasikan dari kategori Accelerated Computing, seperti G4.

predictor = pytorch.deploy( ... # instance_type = "ml.c5.xlarge", instance_type="ml.g4dn.2xlarge", ... response = predictor.predict(payload)

Opsi 2: Perbarui titik akhir yang ada

Selesaikan langkah-langkah berikut untuk memperbarui titik akhir yang ada:

  1. Panggilan CreateEndpointConfig untuk membuat baru EndpointConfig yang menggunakan jenis instance baru. Jika Anda memiliki kebijakan penskalaan otomatis, hapus kebijakan penskalaan otomatis yang ada.

    endpoint_config_response = sagemaker_client.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { "VariantName": "variant1", # The name of the production variant. "ModelName": model_name, # The name of new created model "InstanceType": instance_type, # Specify the right-sized instance type. "InitialInstanceCount": 1 # Number of instances to launch initially. } ] )
  2. Panggil UpdateEndpoint dan tentukan yang baru Anda buatEndpointConfig.

    endpoint_config_response = sagemaker_client.update_endpoint( EndpointConfigName=endpoint_config_name, # The name of the new endpoint config just created EndpointName=endpoint_name # The name of the existing endpoint you want to update )
  3. Tunggu hingga titik akhir Anda mengubah status menjadiInService. Ini membutuhkan waktu sekitar 10-15 menit.

  4. Terakhir, jika Anda memerlukan penskalaan otomatis untuk titik akhir baru Anda, buat kebijakan penskalaan otomatis baru untuk titik akhir baru Anda dan. ProductionVariant

TensorFlow

Jika Anda bermigrasi dari TensorFlow, gunakan panduan berikut.

1. Pilih jenis instans yang tepat

Lihat 1. Pilih panduan jenis instans yang tepat di PyTorch bagian ini.

2. Terapkan model ke titik akhir dan panggil

Anda dapat menggunakan salah satu opsi berikut untuk menerapkan model Anda.

Opsi 1: Menyebarkan dari awal

Anda dapat bermigrasi dari Elastic Inference dengan menerapkan ulang model ke titik akhir baru dengan menghapus accelerator_type bidang dan menentukan jenis instance berukuran tepat dari kategori Accelerated Computing, seperti G4. Dalam contoh berikut, baris komentar menyebabkan Anda menerapkan tanpa menggunakan akselerator Elastic Inference.

predictor = tensorflow_model.deploy( ... instance_type="ml.g4dn.2xlarge" # instance_type="ml.c5.xlarge", # accelerator_type="ml.eia1.medium" ... )

Opsi 2: Perbarui titik akhir yang ada

Lihat Opsi 2. Perbarui panduan titik akhir yang ada di Langkah 4 PyTorch bagian.

MXNet

Jika Anda bermigrasi dari MxNet, gunakan panduan berikut.

1. Pilih jenis instans yang tepat

Lihat 1. Pilih panduan jenis instans yang tepat di PyTorch bagian ini.

2. Terapkan model ke titik akhir dan panggil

Anda dapat menggunakan salah satu opsi berikut untuk menerapkan model Anda.

Opsi 1: Menyebarkan dari awal

Anda dapat bermigrasi dari Elastic Inference dengan menerapkan ulang model ke titik akhir baru dengan menghapus accelerator_type bidang dan menentukan jenis instance berukuran tepat dari kategori Accelerated Computing, seperti G4. Dalam contoh berikut, baris komentar menyebabkan Anda menerapkan tanpa menggunakan akselerator Elastic Inference.

predictor = mxnet_model.deploy( ... # instance_type="ml.c5.xlarge", instance_type="ml.g4dn.2xlarge" ... )

Opsi 2: Perbarui titik akhir yang ada

Lihat Opsi 2: Perbarui panduan titik akhir yang ada di Langkah 4 PyTorch bagian.

Pilih Jenis Akselerator EI

Pertimbangkan faktor-faktor berikut saat memilih jenis akselerator untuk model yang dihosting:

  • Model, tensor input, dan ukuran batch memengaruhi jumlah memori akselerator yang Anda butuhkan. Mulailah dengan jenis akselerator yang menyediakan setidaknya memori sebanyak ukuran file model terlatih Anda. Faktor bahwa model mungkin menggunakan memori secara signifikan lebih banyak daripada ukuran file saat runtime.

  • Tuntutan pada sumber daya komputasi CPU, memori sistem utama, dan akselerasi berbasis GPU dan memori akselerator bervariasi secara signifikan antara berbagai jenis model pembelajaran mendalam. Persyaratan latensi dan throughput aplikasi juga menentukan jumlah komputasi dan akselerasi yang Anda butuhkan. Uji secara menyeluruh berbagai konfigurasi tipe instans dan ukuran akselerator EI untuk memastikan Anda memilih konfigurasi yang paling sesuai dengan kebutuhan kinerja aplikasi Anda.

Untuk informasi selengkapnya tentang memilih akselerator EI, lihat:

Menggunakan EI dalam Instance SageMaker Notebook

Biasanya, Anda membuat dan menguji model pembelajaran mesin di buku SageMaker catatan sebelum Anda menerapkannya untuk produksi. Anda dapat melampirkan EI ke instance notebook saat membuat instance notebook. Anda dapat menyiapkan titik akhir yang di-host secara lokal pada instance notebook dengan menggunakan mode lokal yang didukung oleh, TensorFlow MXNet, serta PyTorch estimator serta model di Amazon SageMaker Python SDK untuk menguji kinerja inferensi. Elastic Inference diaktifkan saat PyTorch ini tidak didukung pada instance notebook. Untuk petunjuk tentang cara melampirkan EI ke instance notebook dan menyiapkan titik akhir lokal untuk inferensi, lihat. Lampirkan EI ke Instance Notebook Ada juga kernel SageMaker Notebook Jupyter yang mendukung Inference Elastic untuk versi Elastic Inference-enabled dan Apache MXNet. TensorFlow Untuk informasi tentang menggunakan instance SageMaker notebook, lihat Menggunakan Instans SageMaker Notebook Amazon

Gunakan EI pada Endpoint yang Dihosting

Ketika Anda siap untuk menerapkan model Anda untuk produksi untuk memberikan kesimpulan, Anda membuat titik akhir yang SageMaker dihosting. Anda dapat melampirkan EI ke instance tempat titik akhir Anda di-host untuk meningkatkan kinerjanya dalam memberikan kesimpulan. Untuk petunjuk tentang cara melampirkan EI ke instance endpoint yang dihosting, lihatGunakan EI di Titik Akhir yang SageMaker Dihosting Amazon.

Framework yang Mendukung EI

Amazon Elastic Inference dirancang untuk digunakan dengan versi Apache MXNet TensorFlow, atau kerangka kerja pembelajaran mesin yang AWS disempurnakan. PyTorch Versi kerangka kerja yang disempurnakan ini secara otomatis dibangun ke dalam wadah saat Anda menggunakan Amazon SageMaker Python SDK, atau Anda dapat mengunduhnya sebagai file biner dan mengimpornya di wadah Docker Anda sendiri.

Anda dapat mengunduh file TensorFlow biner berkemampuan EI dari bucket Amazon S3 amazonei-tensorflow publik ke wadah penyajian. TensorFlow Untuk informasi selengkapnya tentang membuat container yang menggunakan versi EI-enabled TensorFlow, lihat Amazon Elastic TensorFlow Inference with in. SageMaker

Anda dapat mengunduh file biner MXNet berkemampuan EI dari bucket Amazon S3 amazonei-apachemxnet publik ke wadah penyajian MXNet. Untuk informasi selengkapnya tentang membuat container yang menggunakan MxNet versi EI-enabled, lihat Amazon Elastic Inference with MxNet in. SageMaker

Anda dapat mengunduh biner yang diaktifkan Elastic Inference untuk. PyTorch Untuk informasi selengkapnya tentang membuat container yang menggunakan versi EI-enabled PyTorch, lihat Amazon Elastic PyTorch Inference with in. SageMaker

Untuk menggunakan Elastic Inference di endpoint yang di-host, Anda dapat memilih salah satu kerangka kerja berikut tergantung pada kebutuhan Anda.

Jika Anda perlu membuat wadah khusus untuk menerapkan model Anda yang kompleks dan memerlukan ekstensi ke kerangka kerja yang tidak didukung oleh kontainer SageMaker pra-bangun, gunakan AWS SDK tingkat rendah untuk Python (Boto 3).

Gunakan EI dengan Algoritma SageMaker Built-in

Saat ini, algoritma Klasifikasi Gambar - MXNet dan Deteksi Objek - MxNet built-in mendukung EI. Untuk contoh yang menggunakan algoritma Klasifikasi Gambar dengan EI, lihat Contoh Klasifikasi Gambar Multiclass End-to-End.

Contoh Notebook EI

Contoh notebook berikut memberikan contoh penggunaan EI di SageMaker: