Menerapkan Model Terkompilasi Menggunakan SageMaker SDK - Amazon SageMaker

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

Menerapkan Model Terkompilasi Menggunakan SageMaker SDK

Anda harus memenuhi bagian prasyarat jika model dikompilasi menggunakan AWS SDK for Python (Boto3),, AWS CLI atau konsol Amazon. SageMaker Ikuti salah satu kasus penggunaan berikut untuk menerapkan model yang dikompilasi dengan SageMaker Neo berdasarkan cara Anda mengkompilasi model Anda.

Jika Anda mengkompilasi model menggunakan SageMaker SDK

Pegangan objek SageMaker.model untuk model yang dikompilasi menyediakan fungsi deploy (), yang memungkinkan Anda membuat titik akhir untuk menyajikan permintaan inferensi. Fungsi ini memungkinkan Anda mengatur jumlah dan jenis instance yang digunakan untuk titik akhir. Anda harus memilih contoh yang telah Anda kompilasi model Anda. Misalnya, dalam pekerjaan yang dikompilasi di bagian Compile a Model (Amazon SageMaker SDK), ini adalah. ml_c5

predictor = compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.c5.4xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)

Jika Anda mengkompilasi model Anda menggunakan MXNet atau PyTorch

Buat SageMaker model dan terapkan menggunakan deploy () API di bawah API Model khusus kerangka kerja. Untuk MXNet, ini adalah NetModel MX dan PyTorch untuk, memang begitu. PyTorchModel Saat Anda membuat dan menerapkan SageMaker model, Anda harus mengatur variabel MMS_DEFAULT_RESPONSE_TIMEOUT lingkungan ke 500 dan menentukan entry_point parameter sebagai skrip inferensi (inference.py) dan source_dir parameter sebagai lokasi direktori (code) dari skrip inferensi. Untuk menyiapkan skrip inferensi (inference.py) ikuti langkah Prasyarat.

Contoh berikut menunjukkan cara menggunakan fungsi-fungsi ini untuk menyebarkan model yang dikompilasi menggunakan SageMaker SDK untuk Python:

MXNet
from sagemaker.mxnet import MXNetModel # Create SageMaker model and deploy an endpoint sm_mxnet_compiled_model = MXNetModel( model_data='insert S3 path of compiled MXNet model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.8.0', py_version='py3', image_uri='insert appropriate ECR Image URI for MXNet', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) # Replace the example instance_type below to your preferred instance_type predictor = sm_mxnet_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
PyTorch 1.4 and Older
from sagemaker.pytorch import PyTorchModel # Create SageMaker model and deploy an endpoint sm_pytorch_compiled_model = PyTorchModel( model_data='insert S3 path of compiled PyTorch model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.4.0', py_version='py3', image_uri='insert appropriate ECR Image URI for PyTorch', env={'MMS_DEFAULT_RESPONSE_TIMEOUT': '500'}, ) # Replace the example instance_type below to your preferred instance_type predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
PyTorch 1.5 and Newer
from sagemaker.pytorch import PyTorchModel # Create SageMaker model and deploy an endpoint sm_pytorch_compiled_model = PyTorchModel( model_data='insert S3 path of compiled PyTorch model archive', role='AmazonSageMaker-ExecutionRole', entry_point='inference.py', source_dir='code', framework_version='1.5', py_version='py3', image_uri='insert appropriate ECR Image URI for PyTorch', ) # Replace the example instance_type below to your preferred instance_type predictor = sm_pytorch_compiled_model.deploy(initial_instance_count = 1, instance_type = 'ml.p3.2xlarge') # Print the name of newly created endpoint print(predictor.endpoint_name)
catatan

AmazonS3ReadOnlyAccessKebijakan AmazonSageMakerFullAccess dan kebijakan harus dilampirkan pada peran AmazonSageMaker-ExecutionRole IAM.

Jika Anda mengkompilasi model Anda menggunakan Boto3, SageMaker konsol, atau CLI untuk TensorFlow

Buat TensorFlowModel objek, lalu panggil deploy:

role='AmazonSageMaker-ExecutionRole' model_path='S3 path for model file' framework_image='inference container arn' tf_model = TensorFlowModel(model_data=model_path, framework_version='1.15.3', role=role, image_uri=framework_image) instance_type='ml.c5.xlarge' predictor = tf_model.deploy(instance_type=instance_type, initial_instance_count=1)

Lihat Menerapkan langsung dari artefak model untuk informasi selengkapnya.

Anda dapat memilih gambar Docker Amazon ECR URI yang memenuhi kebutuhan Anda dari daftar ini.

Untuk informasi selengkapnya tentang cara membuat TensorFlowModel objek, lihat SageMaker SDK.

catatan

Permintaan inferensi pertama Anda mungkin memiliki latensi tinggi jika Anda menerapkan model Anda pada GPU. Ini karena kernel komputasi yang dioptimalkan dibuat pada permintaan inferensi pertama. Kami menyarankan Anda membuat file pemanasan permintaan inferensi dan menyimpannya di samping file model Anda sebelum mengirimkannya ke TFX. Ini dikenal sebagai “pemanasan” model.

Cuplikan kode berikut menunjukkan cara menghasilkan file pemanasan untuk contoh klasifikasi gambar di bagian prasyarat:

import tensorflow as tf from tensorflow_serving.apis import classification_pb2 from tensorflow_serving.apis import inference_pb2 from tensorflow_serving.apis import model_pb2 from tensorflow_serving.apis import predict_pb2 from tensorflow_serving.apis import prediction_log_pb2 from tensorflow_serving.apis import regression_pb2 import numpy as np with tf.python_io.TFRecordWriter("tf_serving_warmup_requests") as writer: img = np.random.uniform(0, 1, size=[224, 224, 3]).astype(np.float32) img = np.expand_dims(img, axis=0) test_data = np.repeat(img, 1, axis=0) request = predict_pb2.PredictRequest() request.model_spec.name = 'compiled_models' request.model_spec.signature_name = 'serving_default' request.inputs['Placeholder:0'].CopyFrom(tf.compat.v1.make_tensor_proto(test_data, shape=test_data.shape, dtype=tf.float32)) log = prediction_log_pb2.PredictionLog( predict_log=prediction_log_pb2.PredictLog(request=request)) writer.write(log.SerializeToString())

Untuk informasi lebih lanjut tentang cara “menghangatkan” model Anda, lihat halaman TensorFlow TFX.