Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
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)
Topik
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/json
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 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: