Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menangkap data dari titik akhir waktu nyata
catatan
Untuk mencegah dampak pada permintaan inferensi, Data Capture berhenti menangkap permintaan pada tingkat penggunaan disk yang tinggi. Disarankan agar penggunaan disk Anda tetap di bawah 75% untuk memastikan pengambilan data terus menangkap permintaan.
Untuk menangkap data untuk titik akhir real-time Anda, Anda harus menerapkan model menggunakan SageMaker layanan hosting. Ini mengharuskan Anda membuat SageMaker model, menentukan konfigurasi titik akhir, dan membuat titik HTTPS akhir.
Langkah-langkah yang diperlukan untuk mengaktifkan pengambilan data serupa apakah Anda menggunakan AWS SDK for Python (Boto) atau SageMaker PythonSDK. Jika Anda menggunakan AWS SDK, tentukan DataCaptureConfigkamus, bersama dengan bidang wajib, dalam CreateEndpointConfigmetode untuk mengaktifkan pengambilan data. Jika Anda menggunakan SageMaker PythonSDK, impor DataCaptureConfigDataCaptureConfig
parameter dalam sagemaker.model.Model.deploy()
metode.
Untuk menggunakan cuplikan kode yang sedang berjalan, ganti italicized
placeholder text
dalam kode contoh dengan informasi Anda sendiri.
Cara mengaktifkan pengambilan data
Tentukan konfigurasi pengambilan data. Anda dapat menangkap payload permintaan, payload respons, atau keduanya dengan konfigurasi ini. Cuplikan kode yang sedang berlangsung menunjukkan cara mengaktifkan pengambilan data menggunakan dan AWS SDK for Python (Boto) Python. SageMaker SDK
catatan
Anda tidak perlu menggunakan Model Monitor untuk menangkap permintaan atau muatan respons.
Terapkan model Anda
Terapkan model Anda dan buat HTTPS titik akhir dengan DataCapture
diaktifkan.
Lihat Data yang Ditangkap
Buat objek prediktor dari SageMaker SDK PythonPredictor
Kelas untuk memanggil endpoint Anda di langkah masa depan. Berikan nama titik akhir Anda (didefinisikan sebelumnya sebagaiendpoint_name
), bersama dengan objek serializer dan deserializer untuk serializer dan deserializer, masing-masing. Untuk informasi tentang jenis serializer, lihat Kelas Serializers
from sagemaker.predictor import Predictor from sagemaker.serializers import
<Serializer>
from sagemaker.deserializers import<Deserializers>
predictor = Predictor(endpoint_name=endpoint_name, serializer =<Serializer_Class>
, deserializer =<Deserializer_Class>
) # Example #from sagemaker.predictor import Predictor #from sagemaker.serializers import CSVSerializer #from sagemaker.deserializers import JSONDeserializer #predictor = Predictor(endpoint_name=endpoint_name, # serializer=CSVSerializer(), # deserializer=JSONDeserializer())
Dalam skenario contoh kode lanjutan, kami memanggil titik akhir dengan data validasi sampel yang telah kami simpan secara lokal dalam file bernama. CSV validation_with_predictions
Set validasi sampel kami berisi label untuk setiap masukan.
Beberapa baris pertama dari pernyataan with pertama membuka CSV file set validasi, kemudian membagi setiap baris dalam file dengan karakter koma","
, dan kemudian menyimpan dua objek yang dikembalikan ke dalam label dan variabel input_cols. Untuk setiap baris, input (input_cols
) diteruskan ke metode Predictor.predict()
bawaan objek variabel prediktor (predictor
).
Misalkan model mengembalikan probabilitas. Probabilitas berkisar antara nilai integer 0 dan 1.0. Jika probabilitas yang dikembalikan oleh model lebih besar dari 80% (0,8) kami menetapkan prediksi label nilai integer 1. Jika tidak, kita menetapkan prediksi label nilai integer dari 0.
from time import sleep validate_dataset = "validation_with_predictions.csv" # Cut off threshold of 80% cutoff = 0.8 limit = 200 # Need at least 200 samples to compute standard deviations i = 0 with open(f"test_data/{validate_dataset}", "w") as validation_file: validation_file.write("probability,prediction,label\n") # CSV header with open("test_data/validation.csv", "r") as f: for row in f: (label, input_cols) = row.split(",", 1) probability = float(predictor.predict(input_cols)) prediction = "1" if probability > cutoff else "0" baseline_file.write(f"{probability},{prediction},{label}\n") i += 1 if i > limit: break print(".", end="", flush=True) sleep(0.5) print() print("Done!")
Karena Anda mengaktifkan pengambilan data pada langkah sebelumnya, payload permintaan dan respons, bersama dengan beberapa data meta tambahan, disimpan di lokasi Amazon S3 yang Anda tentukan. DataCaptureConfig
Pengiriman data pengambilan ke Amazon S3 dapat memerlukan beberapa menit.
Lihat data yang diambil dengan mencantumkan file pengambilan data yang disimpan di Amazon S3. Format jalur Amazon S3 adalah:. s3:///
{endpoint-name}/{variant-name}/yyyy/mm/dd/hh/filename
.jsonl
Berharap untuk melihat file yang berbeda dari periode waktu yang berbeda, diatur berdasarkan jam ketika pemanggilan terjadi. Jalankan yang berikut ini untuk mencetak konten file tangkapan tunggal:
print("\n".join(capture_file[-3:-1]))
Ini akan mengembalikan file berformat JSON -line SageMaker tertentu. Berikut ini adalah contoh respons yang diambil dari titik akhir real-time yang kami panggil menggunakan csv/text
data:
{"captureData":{"endpointInput":{"observedContentType":"text/csv","mode":"INPUT", "data":"69,0,153.7,109,194.0,105,256.1,114,14.1,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0\n", "encoding":"CSV"},"endpointOutput":{"observedContentType":"text/csv; charset=utf-8","mode":"OUTPUT","data":"0.0254181120544672","encoding":"CSV"}}, "eventMetadata":{"eventId":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","inferenceTime":"2022-02-14T17:25:49Z"},"eventVersion":"0"} {"captureData":{"endpointInput":{"observedContentType":"text/csv","mode":"INPUT", "data":"94,23,197.1,125,214.5,136,282.2,103,9.5,5,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,1,0,1,0,1\n", "encoding":"CSV"},"endpointOutput":{"observedContentType":"text/csv; charset=utf-8","mode":"OUTPUT","data":"0.07675473392009735","encoding":"CSV"}}, "eventMetadata":{"eventId":"aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee","inferenceTime":"2022-02-14T17:25:49Z"},"eventVersion":"0"}
Dalam contoh proses, capture_file
objek adalah tipe daftar. Indeks elemen pertama dari daftar untuk melihat permintaan inferensi tunggal.
# The capture_file object is a list. Index the first element to view a single inference request print(json.dumps(json.loads(capture_file[0]), indent=2))
Ini akan mengembalikan respons yang mirip dengan yang berikut ini. Nilai yang dikembalikan akan berbeda berdasarkan konfigurasi titik akhir, SageMaker model, dan data yang diambil:
{ "captureData": { "endpointInput": { "observedContentType": "text/csv", # data MIME type "mode": "INPUT", "data": "50,0,188.9,94,203.9,104,151.8,124,11.6,8,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,0\n", "encoding": "CSV" }, "endpointOutput": { "observedContentType": "text/csv; charset=character-encoding", "mode": "OUTPUT", "data": "0.023190177977085114", "encoding": "CSV" } }, "eventMetadata": { "eventId": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee", "inferenceTime": "2022-02-14T17:25:06Z" }, "eventVersion": "0" }