Format Inferensi DeepAR - Amazon SageMaker

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

Format Inferensi DeepAR

Format Permintaan DeepAR JSON

Kueri model terlatih dengan menggunakan titik akhir model. Titik akhir mengambil format permintaan JSON berikut.

Dalam permintaan, instances bidang sesuai dengan deret waktu yang harus diramalkan oleh model.

Jika model dilatih dengan kategori, Anda harus memberikan a cat untuk setiap contoh. Jika model dilatih tanpa cat lapangan, itu harus dihilangkan.

Jika model dilatih dengan fitur kustom time series (dynamic_feat), Anda harus memberikan jumlah dynamic_feat nilai yang sama untuk setiap instance. Masing-masing harus memiliki panjang yang diberikan olehlength(target) + prediction_length, di mana prediction_length nilai terakhir sesuai dengan titik waktu di masa depan yang akan diprediksi. Jika model dilatih tanpa deret waktu fitur khusus, bidang tidak boleh dimasukkan dalam permintaan.

{ "instances": [ { "start": "2009-11-01 00:00:00", "target": [4.0, 10.0, "NaN", 100.0, 113.0], "cat": [0, 1], "dynamic_feat": [[1.0, 1.1, 2.1, 0.5, 3.1, 4.1, 1.2, 5.0, ...]] }, { "start": "2012-01-30", "target": [1.0], "cat": [2, 1], "dynamic_feat": [[2.0, 3.1, 4.5, 1.5, 1.8, 3.2, 0.1, 3.0, ...]] }, { "start": "1999-01-30", "target": [2.0, 1.0], "cat": [1, 3], "dynamic_feat": [[1.0, 0.1, -2.5, 0.3, 2.0, -1.2, -0.1, -3.0, ...]] } ], "configuration": { "num_samples": 50, "output_types": ["mean", "quantiles", "samples"], "quantiles": ["0.5", "0.9"] } }

configurationBidang ini opsional. configuration.num_samplesmenetapkan jumlah jalur sampel yang dihasilkan model untuk memperkirakan mean dan kuantil. configuration.output_typesmenjelaskan informasi yang akan dikembalikan dalam permintaan. Nilai yang valid adalah "mean" "quantiles" dan"samples". Jika Anda menentukan"quantiles", masing-masing nilai kuantil di configuration.quantiles dikembalikan sebagai deret waktu. Jika Anda menentukan"samples", model juga mengembalikan sampel mentah yang digunakan untuk menghitung output lainnya.

Format Respons DeepAR JSON

Berikut ini adalah format respons, di [...] mana array angka:

{ "predictions": [ { "quantiles": { "0.9": [...], "0.5": [...] }, "samples": [...], "mean": [...] }, { "quantiles": { "0.9": [...], "0.5": [...] }, "samples": [...], "mean": [...] }, { "quantiles": { "0.9": [...], "0.5": [...] }, "samples": [...], "mean": [...] } ] }

DeepAR memiliki batas waktu respons 60 detik. Saat melewati beberapa deret waktu dalam satu permintaan, perkiraan dihasilkan secara berurutan. Karena perkiraan untuk setiap deret waktu biasanya memakan waktu sekitar 300 hingga 1000 milidetik atau lebih, tergantung pada ukuran model, melewatkan terlalu banyak deret waktu dalam satu permintaan dapat menyebabkan waktu habis. Lebih baik mengirim lebih sedikit deret waktu per permintaan dan mengirim lebih banyak permintaan. Karena algoritma DeepAR menggunakan beberapa pekerja per instance, Anda dapat mencapai throughput yang jauh lebih tinggi dengan mengirimkan beberapa permintaan secara paralel.

Secara default, DeepAR menggunakan satu pekerja per CPU untuk inferensi, jika ada cukup memori per CPU. Jika modelnya besar dan tidak ada cukup memori untuk menjalankan model pada setiap CPU, jumlah pekerja berkurang. Jumlah pekerja yang digunakan untuk inferensi dapat ditimpa menggunakan variabel lingkungan MODEL_SERVER_WORKERS Misalnya, dengan menyetelMODEL_SERVER_WORKERS=1) saat memanggil API. SageMaker CreateModel

Transformasi Batch dengan Algoritma DeepAR

Peramalan DeepAR mendukung mendapatkan kesimpulan dengan menggunakan transformasi batch dari data menggunakan format JSON Lines. Dalam format ini, setiap rekaman direpresentasikan pada satu baris sebagai objek JSON, dan garis dipisahkan oleh karakter baris baru. Formatnya identik dengan format JSON Lines yang digunakan untuk pelatihan model. Untuk informasi, lihat Antarmuka Input/Output untuk Algoritma DeepAR. Sebagai contoh:

{"start": "2009-11-01 00:00:00", "target": [4.3, "NaN", 5.1, ...], "cat": [0, 1], "dynamic_feat": [[1.1, 1.2, 0.5, ..]]} {"start": "2012-01-30 00:00:00", "target": [1.0, -5.0, ...], "cat": [2, 3], "dynamic_feat": [[1.1, 2.05, ...]]} {"start": "1999-01-30 00:00:00", "target": [2.0, 1.0], "cat": [1, 4], "dynamic_feat": [[1.3, 0.4]]}
catatan

Saat membuat pekerjaan transformasi dengan CreateTransformJob, setel BatchStrategy nilainya ke SingleRecord dan setel SplitType nilai dalam TransformInputkonfigurasiLine, karena nilai default saat ini menyebabkan kegagalan runtime.

Mirip dengan format permintaan inferensi titik akhir yang dihosting, cat dan dynamic_feat bidang untuk setiap instance diperlukan jika kedua hal berikut ini benar:

  • Model dilatih pada kumpulan data yang berisi bidang cat dan dynamic_feat bidang.

  • num_dynamic_featNilai yang sesuai cardinality dan yang digunakan dalam pekerjaan pelatihan tidak diatur ke "".

Tidak seperti inferensi titik akhir yang dihosting, bidang konfigurasi disetel sekali untuk seluruh pekerjaan inferensi batch menggunakan variabel lingkungan bernama. DEEPAR_INFERENCE_CONFIG Nilai DEEPAR_INFERENCE_CONFIG dapat diteruskan saat model dibuat dengan memanggil CreateTransformJobAPI. Jika DEEPAR_INFERENCE_CONFIG tidak ada di lingkungan penampung, wadah inferensi menggunakan default berikut:

{ "num_samples": 100, "output_types": ["mean", "quantiles"], "quantiles": ["0.1", "0.2", "0.3", "0.4", "0.5", "0.6", "0.7", "0.8", "0.9"] }

Outputnya juga dalam format JSON Lines, dengan satu baris per prediksi, dalam urutan yang identik dengan urutan instance dalam file input yang sesuai. Prediksi dikodekan sebagai objek yang identik dengan yang dikembalikan oleh respons dalam mode inferensi online. Sebagai contoh:

{ "quantiles": { "0.1": [...], "0.2": [...] }, "samples": [...], "mean": [...] }

Perhatikan bahwa dalam TransformInputkonfigurasi SageMaker CreateTransformJobpermintaan, klien harus secara eksplisit menetapkan nilainyaLine, karena AssembleWith nilai default None menggabungkan semua objek JSON pada baris yang sama.

Misalnya, berikut adalah SageMaker CreateTransformJobpermintaan untuk pekerjaan DeepAR dengan kustom: DEEPAR_INFERENCE_CONFIG

{ "BatchStrategy": "SingleRecord", "Environment": { "DEEPAR_INFERENCE_CONFIG" : "{ \"num_samples\": 200, \"output_types\": [\"mean\"] }", ... }, "TransformInput": { "SplitType": "Line", ... }, "TransformOutput": { "AssembleWith": "Line", ... }, ... }