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)
Topik
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/json
secara 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: