Gunakan Private Docker Registry untuk Wadah Inferensi Real-Time - Amazon SageMaker

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

Gunakan Private Docker Registry untuk Wadah Inferensi Real-Time

SageMaker Hosting Amazon memungkinkan Anda menggunakan gambar yang disimpan di Amazon ECR untuk membuat kontainer Anda untuk inferensi waktu nyata secara default. Secara opsional, Anda dapat membangun kontainer untuk inferensi real-time dari gambar di registri Docker pribadi. Registri pribadi harus dapat diakses dari VPC Amazon di akun Anda. Model yang Anda buat berdasarkan gambar yang disimpan di registri Docker pribadi Anda harus dikonfigurasi untuk terhubung ke VPC yang sama di mana registri Docker pribadi dapat diakses. Untuk informasi tentang menghubungkan model Anda ke VPC, lihat. Berikan Akses Endpoint yang SageMaker Dihosting ke Sumber Daya di Amazon Anda VPC

Registri Docker Anda harus diamankan dengan sertifikat TLS dari otoritas sertifikat publik (CA) yang dikenal.

catatan

Registri Docker pribadi Anda harus mengizinkan lalu lintas masuk dari grup keamanan yang Anda tentukan dalam konfigurasi VPC untuk model Anda, sehingga SageMaker hosting dapat menarik gambar model dari registri Anda.

SageMaker dapat menarik gambar model dari DockerHub jika ada jalur ke internet terbuka di dalam VPC Anda.

Simpan Gambar di Private Docker Registry selain Amazon Elastic Container Registry

Untuk menggunakan registri Docker pribadi untuk menyimpan gambar Anda untuk inferensi SageMaker waktu nyata, buat registri pribadi yang dapat diakses dari VPC Amazon Anda. Untuk informasi tentang membuat registri Docker, lihat Menerapkan server registri di dokumentasi Docker. Registri Docker harus mematuhi yang berikut:

  • Registri harus berupa registri Docker Registry HTTP API V2.

  • Registri Docker harus dapat diakses dari VPC yang sama yang Anda tentukan dalam parameter VpcConfig yang Anda tentukan saat Anda membuat model.

Gunakan Gambar dari Private Docker Registry untuk Inferensi Real-time

Saat Anda membuat model dan menerapkannya ke SageMaker hosting, Anda dapat menentukan bahwa ia menggunakan gambar dari registri Docker pribadi Anda untuk membangun wadah inferensi. Tentukan ini dalam ImageConfig objek dalam PrimaryContainer parameter yang Anda berikan ke panggilan ke fungsi create_model.

Untuk menggunakan gambar yang disimpan di registri Docker pribadi Anda untuk wadah inferensi Anda
  1. Buat objek konfigurasi gambar dan tentukan nilai Vpc untuk RepositoryAccessMode bidang.

    image_config = { 'RepositoryAccessMode': 'Vpc' }
  2. Jika registri Docker pribadi Anda memerlukan otentikasi, tambahkan RepositoryAuthConfig objek ke objek konfigurasi gambar. Untuk RepositoryCredentialsProviderArn bidang RepositoryAuthConfig objek, tentukan Nama Sumber Daya Amazon (ARN) dari AWS Lambda fungsi yang menyediakan kredensyal yang memungkinkan SageMaker untuk mengautentikasi ke Docker Registry pribadi Anda. Untuk informasi tentang cara membuat fungsi Lambda untuk menyediakan otentikasi, lihat. Izinkan SageMaker untuk mengautentikasi ke registri Docker pribadi

    image_config = { 'RepositoryAccessMode': 'Vpc', 'RepositoryAuthConfig': { 'RepositoryCredentialsProviderArn': 'arn:aws:lambda:Region:Acct:function:FunctionName' } }
  3. Buat objek kontainer utama yang ingin Anda lewaticreate_model, menggunakan objek konfigurasi gambar yang Anda buat pada langkah sebelumnya.

    Berikan gambar Anda dalam bentuk intisari. Jika Anda memberikan gambar Anda menggunakan :latest tag, ada risiko yang SageMaker menarik versi gambar yang lebih baru daripada yang dimaksudkan. Menggunakan formulir intisari memastikan bahwa SageMaker menarik versi gambar yang dimaksud.

    primary_container = { 'ContainerHostname': 'ModelContainer', 'Image': 'myteam.myorg.com/docker-local/my-inference-image:<IMAGE-TAG>', 'ImageConfig': image_config }
  4. Tentukan nama model dan peran eksekusi yang ingin Anda berikancreate_model.

    model_name = 'vpc-model' execution_role_arn = 'arn:aws:iam::123456789012:role/SageMakerExecutionRole'
  5. Tentukan satu atau beberapa grup keamanan dan subnet untuk konfigurasi VPC untuk model Anda. Registri Docker pribadi Anda harus mengizinkan lalu lintas masuk dari grup keamanan yang Anda tentukan. Subnet yang Anda tentukan harus dalam VPC yang sama dengan registri Docker pribadi Anda.

    vpc_config = { 'SecurityGroupIds': ['sg-0123456789abcdef0'], 'Subnets': ['subnet-0123456789abcdef0','subnet-0123456789abcdef1'] }
  6. Dapatkan klien Boto3 SageMaker .

    import boto3 sm = boto3.client('sagemaker')
  7. Buat model dengan memanggilcreate_model, menggunakan nilai yang Anda tentukan dalam langkah sebelumnya untuk VpcConfig parameter PrimaryContainer dan.

    try: resp = sm.create_model( ModelName=model_name, PrimaryContainer=primary_container, ExecutionRoleArn=execution_role_arn, VpcConfig=vpc_config, ) except Exception as e: print(f'error calling CreateModel operation: {e}') else: print(resp)
  8. Terakhir, panggil create_endpoint_config dan create_endpoint untuk membuat endpoint hosting, menggunakan model yang Anda buat pada langkah sebelumnya.

    endpoint_config_name = 'my-endpoint-config' sm.create_endpoint_config( EndpointConfigName=endpoint_config_name, ProductionVariants=[ { 'VariantName': 'MyVariant', 'ModelName': model_name, 'InitialInstanceCount': 1, 'InstanceType': 'ml.t2.medium' }, ], ) endpoint_name = 'my-endpoint' sm.create_endpoint( EndpointName=endpoint_name, EndpointConfigName=endpoint_config_name, ) sm.describe_endpoint(EndpointName=endpoint_name)

Izinkan SageMaker untuk mengautentikasi ke registri Docker pribadi

Untuk menarik gambar inferensi dari registri Docker pribadi yang memerlukan autentikasi, buat AWS Lambda fungsi yang menyediakan kredensyal, dan berikan Nama Sumber Daya Amazon (ARN) fungsi Lambda saat Anda memanggil create_model. Saat SageMaker berjalancreate_model, ia memanggil fungsi Lambda yang Anda tentukan untuk mendapatkan kredensyal untuk diautentikasi ke registri Docker Anda.

Buat fungsi Lambda

Buat AWS Lambda fungsi yang mengembalikan respons dengan formulir berikut:

def handler(event, context): response = { "Credentials": {"Username": "username", "Password": "password"} } return response

Bergantung pada cara Anda mengatur otentikasi untuk registri Docker pribadi Anda, kredensyal yang dikembalikan oleh fungsi Lambda Anda dapat berarti salah satu dari yang berikut:

  • Jika Anda mengatur registri Docker pribadi Anda untuk menggunakan otentikasi dasar, berikan kredensyal masuk untuk mengautentikasi ke registri.

  • Jika Anda mengatur registri Docker pribadi Anda untuk menggunakan otentikasi token pembawa, kredensyal masuk dikirim ke server otorisasi Anda, yang mengembalikan token Bearer yang kemudian dapat digunakan untuk mengautentikasi ke registri Docker pribadi.

Berikan izin peran eksekusi Anda ke Lambda

Peran eksekusi yang Anda gunakan untuk memanggil create_model harus memiliki izin untuk memanggil AWS Lambda fungsi. Tambahkan yang berikut ini ke kebijakan izin peran eksekusi Anda.

{ "Effect": "Allow", "Action": [ "lambda:InvokeFunction" ], "Resource": [ "arn:aws:lambda:*:*:function:*myLambdaFunction*" ] }

Di myLambdaFunctionmana nama fungsi Lambda Anda. Untuk informasi tentang mengedit kebijakan izin peran, lihat Memodifikasi kebijakan izin peran (konsol) di Panduan Pengguna.AWS Identity and Access Management

catatan

Peran eksekusi dengan kebijakan AmazonSageMakerFullAccess terkelola yang dilampirkan padanya memiliki izin untuk memanggil fungsi Lambda apa pun dengan SageMakernamanya.

Buat titik akhir VPC antarmuka untuk Lambda

Buat titik akhir antarmuka sehingga VPC Amazon Anda dapat berkomunikasi dengan fungsi AWS Lambda Anda tanpa mengirim lalu lintas melalui internet. Untuk informasi tentang cara melakukannya, lihat Mengonfigurasi titik akhir VPC antarmuka untukAWS Lambda Lambda di Panduan Pengembang.

SageMaker hosting mengirimkan permintaan melalui VPC Anda kelambda.region.amazonaws.com, untuk memanggil fungsi Lambda Anda. Jika Anda memilih Nama DNS Pribadi saat membuat titik akhir antarmuka, Amazon Route 53 merutekan panggilan ke titik akhir antarmuka Lambda. Jika Anda menggunakan penyedia DNS yang berbeda, pastikan untuk memetakan lambda.region.amazonaws.com ke titik akhir antarmuka Lambda Anda.