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 MIME jenis HTTP muatan yang berbeda yang digunakan dalam mengambil prediksi online dan mini-batch. Anda dapat menggunakan beberapa AWS layanan untuk mengubah atau memproses catatan sebelum menjalankan inferensi. Minimal, Anda perlu mengonversi data untuk yang 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)

Mengkonversi 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 mendukungtext/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/jsonlebih 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 respons inferensi

SageMaker Algoritma Amazon kembali 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 JSONLINES format, di mana konten respons per rekaman sama dengan yang ada dalam format. JSON Struktur multi-record adalah kumpulan objek respons per rekaman yang dipisahkan oleh karakter baris baru. Konten respons untuk KMeans algoritme 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 algoritme

Sebagian besar algoritma menggunakan banyak format permintaan inferensi berikut.

JSONformat permintaan

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] } } }, ] }

JSONLINESformat permintaan

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 kumpulan representasi rekaman tunggal, 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] }

CSVformat permintaan

Jenis konten: teks/CSV; label_size = 0

catatan

CSVdukungan tidak tersedia untuk mesin faktorisasi.

RECORDIOformat permintaan

Jenis konten: aplikasi/ x-recordio-protobuf

Gunakan transformasi batch dengan algoritme bawaan

Saat menjalankan transformasi batch, sebaiknya gunakan tipe JSONLINES respons alih-alihJSON, jika didukung oleh algoritme. Untuk melakukan ini, atur Accept bidang CreateTransformJobRequest keapplication/jsonlines.

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

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: