Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Prasyarat
catatan
Ikuti petunjuk di bagian ini jika Anda mengkompilasi model menggunakan AWS SDK for Python (Boto3), AWS CLI, atau konsol SageMaker AI.
Untuk membuat model yang SageMaker dikompilasi NEO, Anda memerlukan yang berikut ini:
-
Gambar Docker Amazon ECR URI. Anda dapat memilih salah satu yang memenuhi kebutuhan Anda dari daftar ini.
-
File skrip titik masuk:
-
Untuk PyTorch dan MXNet model:
Jika Anda melatih model Anda menggunakan SageMaker AI, skrip pelatihan harus mengimplementasikan fungsi yang dijelaskan di bawah ini. Skrip pelatihan berfungsi sebagai skrip titik masuk selama inferensi. Dalam contoh yang dirinci dalam Pelatihan MNIST, Kompilasi dan Penerapan dengan MXNet Modul dan SageMaker Neo
, skrip pelatihan ( mnist.py
) mengimplementasikan fungsi yang diperlukan.Jika Anda tidak melatih model Anda menggunakan SageMaker AI, Anda perlu menyediakan file entry point script (
inference.py
) yang dapat digunakan pada saat inferensi. Berdasarkan kerangka kerja— MXNet atau PyTorch —lokasi skrip inferensi harus sesuai dengan Struktur Direktori Model SDK SageMaker Python untuk atau Struktur Direktori Model untuk MxNet. PyTorch Saat menggunakan gambar Neo Inference Optimized Container dengan PyTorchdan MXNetpada tipe instance CPU dan GPU, skrip inferensi harus mengimplementasikan fungsi-fungsi berikut:
-
model_fn
: Memuat model. (Opsional) -
input_fn
: Mengkonversi payload permintaan masuk ke array numpy. -
predict_fn
: Melakukan prediksi. -
output_fn
: Mengkonversi output prediksi ke payload respon. -
Atau, Anda dapat menentukan
transform_fn
untuk menggabungkaninput_fn
,predict_fn
, danoutput_fn
.
Berikut ini adalah contoh
inference.py
skrip dalam direktori bernamacode
(code/inference.py
) untuk PyTorch dan MXNet (Gluon dan Modul). Contoh pertama memuat model dan kemudian menyajikannya pada data gambar pada GPU: -
-
Untuk instance inf1 atau onnx, xgboost, gambar kontainer keras
Untuk semua gambar kontainer yang dioptimalkan Neo Inference lainnya, atau jenis instance inferentia, skrip titik masuk harus mengimplementasikan fungsi berikut untuk Neo Deep Learning Runtime:
-
neo_preprocess
: Mengkonversi payload permintaan masuk ke array numpy. -
neo_postprocess
: Mengonversi output prediksi dari Neo Deep Learning Runtime menjadi badan respons.catatan
Dua fungsi sebelumnya tidak menggunakan salah satu fungsi, MXNet, PyTorch atau. TensorFlow
Untuk contoh cara menggunakan fungsi-fungsi ini, lihat Notebook Contoh Kompilasi Model Neo.
-
-
Untuk TensorFlow model
Jika model Anda memerlukan logika pra-dan pasca-pemrosesan khusus sebelum data dikirim ke model, maka Anda harus menentukan
inference.py
file skrip titik masuk yang dapat digunakan pada saat inferensi. Script harus mengimplementasikan baik sepasanginput_handler
danoutput_handler
fungsi atau fungsi handler tunggal.catatan
Perhatikan bahwa jika fungsi handler diimplementasikan,
input_handler
danoutput_handler
diabaikan.Berikut ini adalah contoh kode
inference.py
skrip yang dapat Anda kumpulkan dengan model kompilasi untuk melakukan pra-dan sesudah pemrosesan khusus pada model klasifikasi gambar. Klien SageMaker AI mengirimkan file gambar sebagai tipeapplication/x-image
konten keinput_handler
fungsi, di mana ia dikonversi ke JSON. File gambar yang dikonversi kemudian dikirim ke Tensorflow Model Server (TFX)menggunakan REST API. import json import numpy as np import json import io from PIL import Image def input_handler(data, context): """ Pre-process request input before it is sent to TensorFlow Serving REST API Args: data (obj): the request data, in format of dict or string context (Context): an object containing request and configuration details Returns: (dict): a JSON-serializable dict that contains request body and headers """ f = data.read() f = io.BytesIO(f) image = Image.open(f).convert('RGB') batch_size = 1 image = np.asarray(image.resize((512, 512))) image = np.concatenate([image[np.newaxis, :, :]] * batch_size) body = json.dumps({"signature_name": "serving_default", "instances": image.tolist()}) return body def output_handler(data, context): """Post-process TensorFlow Serving output before it is returned to the client. Args: data (obj): the TensorFlow serving response context (Context): an object containing request and configuration details Returns: (bytes, string): data to return to client, response content type """ if data.status_code != 200: raise ValueError(data.content.decode('utf-8')) response_content_type = context.accept_header prediction = data.content return prediction, response_content_type
Jika tidak ada pra-atau pasca-pemrosesan khusus, klien SageMaker AI mengonversi gambar file ke JSON dengan cara yang sama sebelum mengirimnya ke titik akhir AI. SageMaker
Untuk informasi selengkapnya, lihat Deploying to TensorFlow Serving Endpoints di Python SageMaker SDK
.
-
-
URI bucket Amazon S3 yang berisi artefak model yang dikompilasi.