Gunakan titik akhir multi-kontainer dengan pemanggilan langsung - Amazon SageMaker

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

Gunakan titik akhir multi-kontainer dengan pemanggilan langsung

SageMaker titik akhir multi-kontainer memungkinkan pelanggan untuk menerapkan beberapa kontainer untuk menerapkan model yang berbeda pada titik akhir. SageMaker Anda dapat meng-host hingga 15 kontainer inferensi yang berbeda pada satu titik akhir. Dengan menggunakan pemanggilan langsung, Anda dapat mengirim permintaan ke wadah inferensi tertentu yang dihosting pada titik akhir multi-kontainer.

Memanggil titik akhir multi-kontainer dengan pemanggilan langsung

Untuk memanggil titik akhir multi-kontainer dengan pemanggilan langsung, panggil invoke_endpoint karena Anda akan memanggil titik akhir lainnya, dan tentukan wadah mana yang ingin Anda panggil dengan menggunakan parameter. TargetContainerHostname

Contoh berikut secara langsung memanggil titik akhir multi-kontainer untuk mendapatkan prediksi. secondContainer

import boto3 runtime_sm_client = boto3.Session().client('sagemaker-runtime') response = runtime_sm_client.invoke_endpoint( EndpointName ='my-endpoint', ContentType = 'text/csv', TargetContainerHostname='secondContainer', Body = body)

Untuk setiap permintaan pemanggilan langsung ke titik akhir multi-kontainer, hanya wadah yang TargetContainerHostname memproses permintaan pemanggilan. Anda akan mendapatkan kesalahan validasi jika Anda melakukan salah satu dari berikut:

  • Tentukan TargetContainerHostname yang tidak ada di titik akhir

  • Jangan tentukan nilai untuk TargetContainerHostname permintaan ke titik akhir yang dikonfigurasi untuk pemanggilan langsung

  • Tentukan nilai untuk TargetContainerHostname permintaan ke titik akhir yang tidak dikonfigurasi untuk pemanggilan langsung.

Keamanan dengan titik akhir multi-kontainer dengan pemanggilan langsung

Untuk titik akhir multi-kontainer dengan pemanggilan langsung, ada beberapa kontainer yang dihosting dalam satu instance dengan berbagi memori dan volume penyimpanan. Anda bertanggung jawab untuk menggunakan kontainer yang aman, memelihara pemetaan permintaan yang benar untuk menargetkan kontainer, dan memberi pengguna akses yang benar ke kontainer target. SageMakermenggunakan peran IAM untuk memberikan kebijakan berbasis identitas IAM yang Anda gunakan untuk menentukan apakah akses ke sumber daya diizinkan atau ditolak untuk peran itu, dan dalam kondisi apa. Untuk informasi tentang peran IAM, lihat peran IAM di AWS Identity and Access Management Panduan Pengguna. Untuk informasi tentang kebijakan berbasis identitas, lihat Kebijakan berbasis identitas dan kebijakan berbasis sumber daya.

Secara default, prinsipal IAM dengan InvokeEndpoint izin pada titik akhir multi-kontainer dengan pemanggilan langsung dapat memanggil penampung apa pun di dalam titik akhir dengan nama titik akhir yang Anda tentukan saat Anda memanggil. invoke_endpoint Jika Anda perlu membatasi invoke_endpoint akses ke kumpulan kontainer terbatas di dalam titik akhir multi-kontainer, gunakan kunci kondisi sagemaker:TargetContainerHostname IAM. Kebijakan berikut menunjukkan cara membatasi panggilan ke kontainer tertentu dalam titik akhir.

Kebijakan berikut hanya mengizinkan invoke_endpoint permintaan jika nilai TargetContainerHostname bidang cocok dengan salah satu ekspresi reguler yang ditentukan.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["customIps*", "common*"] } } } ] }

Kebijakan berikut menolak invoke_endpoint permintaan jika nilai TargetContainerHostname bidang cocok dengan salah satu ekspresi reguler yang ditentukan dalam Deny pernyataan.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Allow", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["*"] } } }, { "Action": [ "sagemaker:InvokeEndpoint" ], "Effect": "Deny", "Resource": "arn:aws:sagemaker:region:account-id:endpoint/endpoint_name", "Condition": { "StringLike": { "sagemaker:TargetContainerHostname": ["special*"] } } } ] }

Untuk informasi tentang kunci SageMaker kondisi, lihat Condition Keys untuk SageMaker di Panduan AWS Identity and Access Management Pengguna.

Metrik untuk titik akhir multi-kontainer dengan pemanggilan langsung

Selain metrik titik akhir yang tercantum, SageMaker juga menyediakan metrik per Pantau Amazon SageMaker dengan Amazon CloudWatch kontainer.

Metrik per kontainer untuk titik akhir multi-kontainer dengan pemanggilan langsung ditempatkan dan dikategorikan ke dalam dua ruang nama: CloudWatch dan. AWS/SageMaker aws/sagemaker/Endpoints AWS/SageMakerNamespace mencakup metrik terkait pemanggilan, dan aws/sagemaker/Endpoints namespace mencakup metrik pemanfaatan memori dan CPU.

Tabel berikut mencantumkan metrik per kontainer untuk titik akhir multi-kontainer dengan pemanggilan langsung. Semua metrik menggunakan dimensi [EndpointName, VariantName, ContainerName], yang memfilter metrik pada titik akhir tertentu, untuk varian tertentu dan sesuai dengan wadah tertentu. Metrik ini memiliki nama metrik yang sama seperti pada pipeline inferensi, tetapi pada tingkat per kontainer []. EndpointName, VariantName, ContainerName

Nama Metrik Deskripsi Dimensi NameSpace
Invocations Jumlah InvokeEndpoint permintaan yang dikirim ke kontainer di dalam titik akhir. Untuk mendapatkan jumlah total permintaan yang dikirim ke wadah itu, gunakan Sum statistik. Unit: Tidak Ada Statistik yang valid:Sum, Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation4XX Errors Jumlah InvokeEndpoint permintaan yang dikembalikan model kode respons 4xx HTTP pada wadah tertentu. Untuk setiap 4xx tanggapan, SageMaker kirimkan a1. Unit: Tidak Ada Statistik yang valid:Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
Invocation5XX Errors Jumlah InvokeEndpoint permintaan yang dikembalikan model kode respons 5xx HTTP pada wadah tertentu. Untuk setiap 5xx tanggapan, SageMaker kirimkan a1. Unit: Tidak Ada Statistik yang valid:Average, Sum EndpointName, VariantName, ContainerName AWS/SageMaker
ContainerLatency Waktu yang dibutuhkan wadah target untuk merespons seperti yang dilihat dari SageMaker. ContainerLatencytermasuk waktu yang dibutuhkan untuk mengirim permintaan, untuk mengambil respons dari wadah model, dan untuk menyelesaikan inferensi dalam wadah. Unit: Mikrodetik Statistik yang valid:Average,,Sum,Min, Max Sample Count EndpointName, VariantName, ContainerName AWS/SageMaker
OverheadLatency Waktu ditambahkan ke waktu yang dibutuhkan untuk menanggapi permintaan klien dengan biaya SageMaker overhead. OverheadLatencydiukur dari waktu yang SageMaker menerima permintaan hingga mengembalikan respons ke klien, dikurangiModelLatency. Latensi overhead dapat bervariasi tergantung pada ukuran payload permintaan dan respons, frekuensi permintaan, dan otentikasi atau otorisasi permintaan, di antara faktor-faktor lainnya. Unit: Mikrodetik Statistik yang valid:Average,, Sum MinMax, `Jumlah Sampel ` EndpointName, VariantName, ContainerName AWS/SageMaker
CPUUtilization Persentase unit CPU yang digunakan oleh setiap kontainer yang berjalan pada sebuah instance. Nilainya berkisar dari 0% hingga 100%, dan dikalikan dengan jumlah CPU. Misalnya, jika ada empat CPU, CPUUtilization dapat berkisar dari 0% hingga 400%. Untuk titik akhir dengan pemanggilan langsung, jumlah metrik CPUUutilization sama dengan jumlah kontainer di titik akhir tersebut. Unit: Persen EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints
MemoryUtilizaton Persentase memori yang digunakan oleh setiap kontainer yang berjalan pada sebuah instance. Nilai ini berkisar dari 0% hingga 100%. Mirip dengan CPUUutilization, di titik akhir dengan pemanggilan langsung, jumlah MemoryUtilization metrik sama dengan jumlah kontainer di titik akhir tersebut. Unit: Persen EndpointName, VariantName, ContainerName aws/sagemaker/Endpoints

Semua metrik di tabel sebelumnya khusus untuk titik akhir multi-kontainer dengan pemanggilan langsung. Selain metrik per-kontainer khusus ini, ada juga metrik pada tingkat varian dengan dimensi [EndpointName, VariantName] untuk semua metrik dalam tabel yang diharapkan. ContainerLatency

Titik akhir multi-kontainer skala otomatis

Jika Anda ingin mengonfigurasi penskalaan otomatis untuk titik akhir multi-kontainer menggunakan InvocationsPerInstance metrik, kami menyarankan agar model di setiap kontainer menunjukkan pemanfaatan dan latensi CPU yang serupa pada setiap permintaan inferensi. Ini direkomendasikan karena jika lalu lintas ke titik akhir multi-kontainer bergeser dari model pemanfaatan CPU rendah ke model pemanfaatan CPU yang tinggi, tetapi volume panggilan keseluruhan tetap sama, titik akhir tidak skala dan mungkin tidak ada cukup contoh untuk menangani semua permintaan ke model pemanfaatan CPU tinggi. Untuk informasi tentang penskalaan titik akhir secara otomatis, lihat. Secara Otomatis Menskalakan SageMaker Model Amazon

Memecahkan masalah titik akhir multi-kontainer

Bagian berikut dapat membantu Anda memecahkan masalah kesalahan dengan titik akhir multi-kontainer.

Kesalahan Pemeriksaan Kesehatan Ping

Dengan beberapa kontainer, memori endpoint dan CPU berada di bawah tekanan yang lebih tinggi selama pembuatan endpoint. Secara khusus, CPUUtilization metrik MemoryUtilization dan lebih tinggi daripada titik akhir kontainer tunggal, karena tekanan pemanfaatan sebanding dengan jumlah kontainer. Karena itu, kami menyarankan Anda memilih jenis instance dengan memori dan CPU yang cukup untuk memastikan bahwa ada cukup memori pada instance agar semua model dimuat (panduan yang sama berlaku untuk menerapkan pipeline inferensi). Jika tidak, pembuatan titik akhir Anda mungkin gagal dengan kesalahan sepertiXXX did not pass the ping health check.

Hilang accept-bind-to-port =true label Docker

Kontainer dalam titik akhir multi-kontainer mendengarkan pada port yang ditentukan dalam variabel SAGEMAKER_BIND_TO_PORT lingkungan, bukan port 8080. Ketika sebuah kontainer berjalan di titik akhir multi-kontainer, SageMaker secara otomatis menyediakan variabel lingkungan ini ke wadah. Jika variabel lingkungan ini tidak ada, kontainer default menggunakan port 8080. Untuk menunjukkan bahwa kontainer Anda mematuhi persyaratan ini, gunakan perintah berikut untuk menambahkan label ke Dockerfile Anda:

LABEL com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true

Jika tidak, Anda akan melihat pesan kesalahan seperti Your Ecr Image XXX does not contain required com.amazonaws.sagemaker.capabilities.accept-bind-to-port=true Docker label(s).

Jika kontainer Anda perlu mendengarkan pada port kedua, pilih port dalam rentang yang ditentukan oleh variabel SAGEMAKER_SAFE_PORT_RANGE lingkungan. Tentukan nilai sebagai rentang inklusif dalam format XXXX - YYYY, di mana XXXX dan YYYY adalah bilangan bulat multi-digit. SageMaker memberikan nilai ini secara otomatis saat Anda menjalankan wadah di titik akhir multi-kontainer.