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 untuk Python (Boto3) AWS CLI,, atau konsol SageMaker AI.
Untuk membuat SageMaker Neo-compiled model, Anda memerlukan yang berikut:
-
Gambar Docker URI Amazon ECR. Anda dapat memilih salah satu yang memenuhi kebutuhan Anda dari daftar ini.
-
File skrip titik masuk:
-
Untuk PyTorch dan model MXnet:
Jika Anda melatih model Anda menggunakan SageMaker AI, skrip pelatihan harus menerapkan fungsi yang dijelaskan di bawah ini. Skrip pelatihan berfungsi sebagai skrip titik masuk selama inferensi. Dalam contoh yang dirinci dalam Pel atihan, Kompilasi dan Penerapan MNIST dengan Modul MXnet 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 SageMaker Python SDK untuk MxNet atau Struktur DirektoriModel untuk. PyTorch Saat menggunakan gambar Neo Inference Optimized Container dengan PyTorch dan MXNet pada tipe instance CPU dan GPU, skrip inferensi harus mengimplementasikan fungsi-fungsi berikut:
-
model_fn: Memuat model. (Opsional) -
input_fn: Mengkonversi payload permintaan masuk menjadi array numpy. -
predict_fn: Melakukan prediksi. -
output_fn: Mengkonversi output prediksi menjadi payload respons. -
Atau, Anda dapat menentukan
transform_fnuntuk menggabungkaninput_fn,predict_fn, danoutput_fn.
Berikut ini adalah contoh
inference.pyskrip dalam direktori bernamacode(code/inference.py) untuk PyTorch dan MXnet (Gluon dan Module). Contoh pertama memuat model dan kemudian menyajikannya pada data gambar pada GPU: -
-
Untuk instans inf1 atau onnx, xgboost, gambar wadah keras
Untuk semua gambar Inference-optimized wadah Neo lainnya, atau tipe instance inferentia, skrip titik masuk harus mengimplementasikan fungsi berikut untuk Neo Deep Learning Runtime:
-
neo_preprocess: Mengkonversi payload permintaan masuk menjadi array numpy. -
neo_postprocess: Mengkonversi 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 Sampel 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.pyfile skrip titik masuk yang dapat digunakan pada saat inferensi. Skrip harus mengimplementasikan baik sepasangoutput_handlerfungsiinput_handlerdan atau fungsi handler tunggal.catatan
Perhatikan bahwa jika fungsi handler diimplementasikan,
input_handlerdanoutput_handlerdiabaikan.Berikut ini adalah contoh kode
inference.pyskrip yang dapat Anda kumpulkan dengan model kompilasi untuk melakukan pra- dan pasca-pemrosesan kustom pada model klasifikasi gambar. Klien SageMaker AI mengirimkan file gambar sebagai jenisapplication/x-imagekonten keinput_handlerfungsi, 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_typeJika tidak ada pra atau pasca-pemrosesan khusus, klien SageMaker AI mengonversi gambar file ke JSON dengan cara yang sama sebelum mengirimkannya ke titik akhir SageMaker AI.
Untuk informasi selengkapnya, lihat Menye barkan ke Titik TensorFlow Akhir Melayani di SageMaker Python SDK.
-
-
URI bucket Amazon S3 yang berisi artefak model yang dikompilasi.