Format Data Umum untuk Inferensi - Amazon SageMaker

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

Format Data Umum untuk Inferensi

SageMaker Algoritma Amazon menerima dan menghasilkan beberapa jenis MIME yang berbeda untuk muatan HTTP yang digunakan dalam mengambil prediksi online dan mini-batch. Anda dapat menggunakan berbagai AWS layanan untuk mengubah atau memproses catatan sebelum menjalankan inferensi. Minimal, Anda perlu mengonversi data sebagai berikut:

  • Serialisasi permintaan inferensi (ditangani oleh Anda)

  • Deserialisasi permintaan inferensi (ditangani oleh algoritma)

  • Serialisasi respons inferensi (ditangani oleh algoritma)

  • Deserialisasi respons inferensi (ditangani oleh Anda)

Konversi Data untuk Serialisasi Permintaan Inferensi

Opsi jenis konten untuk permintaan inferensi SageMaker algoritme Amazon meliputi:text/csv,application/json, danapplication/x-recordio-protobuf. Algoritma yang tidak mendukung semua jenis ini dapat mendukung jenis lain. XGBoost, misalnya, hanya mendukung text/csv dari daftar ini, tetapi juga mendukung. text/libsvm

Untuktext/csv, nilai argumen Body invoke_endpoint harus berupa string dengan koma yang memisahkan nilai untuk setiap fitur. Misalnya, rekaman untuk model dengan empat fitur mungkin terlihat seperti1.5,16.0,14,23.0. Setiap transformasi yang dilakukan pada data pelatihan juga harus dilakukan pada data sebelum mendapatkan inferensi. Urutan fitur penting dan harus tetap tidak berubah.

application/jsonsecara signifikan lebih fleksibel dan menyediakan beberapa format yang mungkin bagi pengembang untuk digunakan dalam aplikasi mereka. Pada tingkat tinggi, di JavaScript, payload mungkin terlihat seperti berikut:

let request = { // Instances might contain multiple rows that predictions are sought for. "instances": [ { // Request and algorithm specific inference parameters. "configuration": {}, // Data in the specific format required by the algorithm. "data": { "<field name>": dataElement } } ] }

Anda memiliki opsi berikut untuk menentukan: dataElement

Protokol buffer setara

// Has the same format as the protocol buffers implementation described for training. let dataElement = { "keys": [], "values": [], "shape": [] }

vektor numerik sederhana

// An array containing numeric values is treated as an instance containing a // single dense vector. let dataElement = [1.5, 16.0, 14.0, 23.0] // It will be converted to the following representation by the SDK. let converted = { "features": { "values": dataElement } }

Untuk beberapa catatan

let request = { "instances": [ // First instance. { "features": [ 1.5, 16.0, 14.0, 23.0 ] }, // Second instance. { "features": [ -2.0, 100.2, 15.2, 9.2 ] } ] }

Konversi Data untuk Deserialisasi Respon Inferensi

SageMaker Algoritma Amazon mengembalikan JSON dalam beberapa tata letak. Pada tingkat tinggi, strukturnya adalah:

let response = { "predictions": [{ // Fields in the response object are defined on a per algorithm-basis. }] }

Bidang yang disertakan dalam prediksi berbeda di seluruh algoritme. Berikut ini adalah contoh output untuk algoritma k-means.

Inferensi rekor tunggal

let response = { "predictions": [{ "closest_cluster": 5, "distance_to_cluster": 36.5 }] }

Inferensi multi-rekam

let response = { "predictions": [ // First instance prediction. { "closest_cluster": 5, "distance_to_cluster": 36.5 }, // Second instance prediction. { "closest_cluster": 2, "distance_to_cluster": 90.3 } ] }

Inferensi multi-rekam dengan input protobuf

{ "features": [], "label": { "closest_cluster": { "values": [ 5.0 ] // e.g. the closest centroid/cluster was 1.0 }, "distance_to_cluster": { "values": [ 36.5 ] } }, "uid": "abc123", "metadata": "{ "created_at": '2017-06-03' }" }

SageMaker algoritma juga mendukung format JSONLINES, di mana konten respons per rekaman sama dengan yang ada dalam format JSON. Struktur multi-record adalah rangkaian objek respons per rekaman yang dipisahkan oleh karakter baris baru. Konten respons untuk algoritma KMeans bawaan untuk 2 titik data input adalah:

{"distance_to_cluster": 23.40593910217285, "closest_cluster": 0.0} {"distance_to_cluster": 27.250282287597656, "closest_cluster": 0.0}

Saat menjalankan transformasi batch, kami merekomendasikan menggunakan tipe jsonlines respons dengan menyetel Accept bidang di CreateTransformJobRequest toapplication/jsonlines.

Format Permintaan Umum untuk Semua Algoritma

Sebagian besar algoritma menggunakan beberapa format permintaan inferensi berikut.

Format Permintaan JSON

Jenis konten: Aplikasi/JSON

Format padat

let request = { "instances": [ { "features": [1.5, 16.0, 14.0, 23.0] } ] } let request = { "instances": [ { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } } ] }

Format jarang

{ "instances": [ {"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }, {"data": {"features": { "keys": [0, 182, 232, 243, 431], "shape": [2000], "values": [13, 1, 1, 4, 1] } } }, ] }

Format Permintaan JSONLINES

Jenis konten: Aplikasi/JSONlines

Format padat

Sebuah catatan tunggal dalam format padat dapat direpresentasikan sebagai:

{ "features": [1.5, 16.0, 14.0, 23.0] }

atau:

{ "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } }

Format Jarang

Sebuah catatan tunggal dalam format jarang direpresentasikan sebagai:

{"data": {"features": { "keys": [26, 182, 232, 243, 431], "shape": [2000], "values": [1, 1, 1, 4, 1] } } }

Beberapa catatan direpresentasikan sebagai rangkaian representasi rekaman tunggal di atas, dipisahkan oleh karakter baris baru:

{"data": {"features": { "keys": [0, 1, 3], "shape": [4], "values": [1, 4, 1] } } } { "data": { "features": { "values": [ 1.5, 16.0, 14.0, 23.0] } } { "features": [1.5, 16.0, 14.0, 23.0] }

Format Permintaan CSV

Jenis konten: teks/CSV; label_size = 0

catatan

Dukungan CSV tidak tersedia untuk mesin faktorisasi.

Format Permintaan RECORDIO

Jenis konten: aplikasi/ x-recordio-protobuf

Gunakan Transformasi Batch dengan Algoritma Bawaan

Saat menjalankan transformasi batch, sebaiknya gunakan tipe respons JSONLINES alih-alih JSON, jika didukung oleh algoritme. Ini dicapai dengan mengatur Accept bidang di CreateTransformJobRequest toapplication/jsonlines.

Ketika Anda membuat pekerjaan transformasi, SplitType harus diatur sesuai dengan ContentType data input. Demikian pula, tergantung pada Accept bidang diCreateTransformJobRequest, AssembleWith harus diatur sesuai. Silakan gunakan tabel berikut untuk membantu mengatur bidang ini dengan tepat:

ContentType Direkomendasikan SplitType
application/x-recordio-protobuf RecordIO
text/csv Line
application/jsonlines Line
application/json None
application/x-image None
image/* None
Menerima Direkomendasikan AssembleWith
application/x-recordio-protobuf None
application/json None
application/jsonlines Line

Untuk informasi selengkapnya tentang format respons untuk algoritme tertentu, lihat berikut ini: