Menerapkan model machine learning (ML) terlatih berkualitas tinggi untuk melakukan inferensi batch atau real-time adalah bagian penting dalam memberikan nilai kepada pelanggan. Namun, proses eksperimentasi ML bisa jadi membosankanโada banyak pendekatan yang membutuhkan banyak waktu untuk diterapkan. Itu sebabnya model ML terlatih seperti yang disediakan di Kebun Binatang Model PyTorch sangat membantu. Amazon SageMaker menyediakan antarmuka terpadu untuk bereksperimen dengan model ML yang berbeda, dan Kebun Binatang Model PyTorch memungkinkan kita untuk dengan mudah menukar model kita dengan cara standar.
Posting blog ini menunjukkan cara melakukan inferensi ML menggunakan model deteksi objek dari Kebun Binatang Model PyTorch di dalam SageMaker. Model ML terlatih dari PyTorch Model Zoo siap pakai dan dapat dengan mudah digunakan sebagai bagian dari aplikasi ML. Menyiapkan model ML ini sebagai titik akhir SageMaker atau Transformasi Batch SageMaker pekerjaan untuk inferensi online atau offline mudah dengan langkah-langkah yang diuraikan dalam posting blog ini. Kami akan menggunakan a Lebih cepat R-CNN model deteksi objek untuk memprediksi kotak pembatas untuk kelas objek yang telah ditentukan sebelumnya.
Kami menelusuri contoh ujung ke ujung, mulai dari memuat bobot model deteksi objek R-CNN yang Lebih Cepat, hingga menyimpannya ke Layanan Penyimpanan Sederhana Amazon (Amazon S3) bucket, dan untuk menulis file entrypoint dan memahami parameter kunci di API PyTorchModel. Terakhir, kita akan menerapkan model ML, melakukan inferensi menggunakan SageMaker Batch Transform, dan memeriksa output model ML serta mempelajari cara menginterpretasikan hasilnya. Solusi ini dapat diterapkan ke model terlatih lainnya di Kebun Binatang Model PyTorch. Untuk daftar model yang tersedia, lihat Dokumentasi Kebun Binatang Model PyTorch.
Ikhtisar solusi
Posting blog ini akan berjalan melalui langkah-langkah berikut. Untuk versi kerja penuh dari semua langkah, lihat create_pytorch_model_sagemaker.ipynb
- Langkah 1: Pengaturan
- Langkah 2: Memuat model ML dari PyTorch Model Zoo
- Langkah 3 Simpan dan unggah artefak model ML ke Amazon S3
- Langkah 4: Membuat skrip inferensi model ML
- Langkah 5: Meluncurkan tugas transformasi batch SageMaker
- Langkah 6: Memvisualisasikan hasil
Diagram arsitektur
Struktur direktori
Kode untuk blog ini dapat ditemukan di sini Repositori GitHub. Codebase berisi semua yang kami perlukan untuk membuat artefak model ML, meluncurkan tugas transformasi, dan memvisualisasikan hasil.
Ini adalah alur kerja yang kami gunakan. Semua langkah berikut akan mengacu pada modul dalam struktur ini.
Grafik sagemaker_torch_model_zoo
folder harus berisi inference.py
sebagai file entrypoint, dan create_pytorch_model_sagemaker.ipynb untuk memuat dan menyimpan bobot model, membuat objek model SageMaker, dan terakhir meneruskannya ke tugas transformasi batch SageMaker. Untuk menghadirkan model ML Anda sendiri, ubah jalur di Langkah 1: bagian penyiapan notebook dan muat model baru di Langkah 2: Memuat Model ML dari bagian Kebun Binatang Model PyTorch. Langkah-langkah selanjutnya di bawah ini akan tetap sama.
Langkah 1: Pengaturan
Peran IAM
SageMaker menjalankan operasi pada infrastruktur yang dikelola oleh SageMaker. SageMaker hanya dapat melakukan tindakan yang diizinkan sebagaimana ditentukan dalam peran eksekusi IAM yang menyertai notebook untuk SageMaker. Untuk dokumentasi yang lebih mendetail tentang cara membuat peran IAM dan mengelola izin IAM, lihat Dokumentasi peran AWS SageMaker. Kita bisa membuat peran baru, atau kita bisa mendapatkan Buku catatan SageMaker (Studio).peran eksekusi default dengan menjalankan baris kode berikut:
Kode di atas mendapatkan peran eksekusi SageMaker untuk instans notebook. Ini adalah peran IAM yang kami buat untuk instans notebook SageMaker atau SageMaker Studio.
Parameter yang dapat dikonfigurasi pengguna
Berikut adalah semua parameter yang dapat dikonfigurasi yang diperlukan untuk membangun dan meluncurkan tugas transformasi batch SageMaker kami:
Langkah 2: Memuat model ML dari PyTorch Model Zoo
Selanjutnya, kita menentukan model deteksi objek dari PyTorch Model Zoo dan menyimpan bobot model ML-nya. Biasanya, kami menyimpan model PyTorch menggunakan ekstensi file .pt atau .pth. Cuplikan kode di bawah mengunduh model Faster R-CNN ResNet50 ML pra-pelatihan dari PyTorch Model Zoo:
model = torchvision.models.detection.fasterrcnn_resnet50_fpn(pretrained=True)
Transformasi batch SageMaker memerlukan beberapa bobot model sebagai input, jadi kami akan menyimpan model ML yang telah dilatih sebelumnya sebagai model.pt. Jika kami ingin memuat model khusus, kami dapat menyimpan bobot model dari model PyTorch lain sebagai model.pt.
Langkah 3: Simpan dan unggah artefak model ML ke Amazon S3
Karena kita akan menggunakan SageMaker untuk inferensi ML, kita perlu mengunggah bobot model ke bucket S3. Kita dapat melakukannya dengan menggunakan perintah berikut atau dengan mengunduh dan cukup menyeret dan menjatuhkan file langsung ke S3. Perintah berikut pertama-tama akan memampatkan grup file di dalamnya model.pt
ke tarball dan salin bobot model dari mesin lokal kami ke bucket S3.
Note: Untuk menjalankan perintah berikut, Anda harus memiliki Antarmuka Baris Perintah AWS (AWS CLI) diinstal.
Selanjutnya, kami menyalin gambar masukan kami ke S3. Di bawah ini adalah jalur S3 lengkap untuk gambar tersebut.
Kami dapat menyalin gambar ini ke S3 dengan perintah aws s3 cp lainnya.
Langkah 4: Membuat skrip inferensi model ML
Sekarang kita akan membahas file entrypoint kita, inference.py
modul. Kita bisa menerapkan model PyTorch yang dilatih di luar SageMaker menggunakan kelas PyTorchModel. Pertama, kita membuat instance objek PyTorchModelZoo. Kemudian kita akan membuat file entrypoint inference.py untuk melakukan inferensi ML menggunakan transformasi batch SageMaker pada data sampel yang dihosting di Amazon S3.
Memahami objek PyTorchModel
Grafik Model PyTorch kelas dalam SageMaker Python API memungkinkan kita melakukan inferensi ML menggunakan artefak model yang diunduh.
Untuk memulai kelas PyTorchModel, kita perlu memahami parameter input berikut:
name
: Nama model; sebaiknya gunakan nama model + waktu tanggal, atau string acak + waktu tanggal untuk keunikan.model_data
: URI S3 artefak model ML terpaket.entry_point
: File Python yang ditentukan pengguna untuk digunakan oleh gambar Docker inferensi untuk menentukan penangan untuk permintaan yang masuk. Kode mendefinisikan pemuatan model, prapemrosesan masukan, logika prediksi, dan pascapemrosesan keluaran.framework_version
: Perlu disetel ke versi 1.2 atau lebih tinggi untuk mengaktifkan pengemasan ulang model PyTorch otomatis.source_dir
: Direktori file entry_point.role
: Peran IAM untuk membuat permintaan layanan AWS.image_uri
: Gunakan gambar kontainer Amazon ECR Docker ini sebagai dasar untuk lingkungan komputasi model ML.sagemaker_session
: Sesi SageMaker.py_version
: Versi Python yang akan digunakan
Cuplikan kode berikut memberi contoh kelas PyTorchModel untuk melakukan inferensi menggunakan model PyTorch yang telah dilatih sebelumnya:
Memahami file entrypoint (inference.py)
Parameter entry_point menunjuk ke file Python bernama inference.py
. Titik masuk ini menentukan pemuatan model, prapemrosesan masukan, logika prediksi, dan pascapemrosesan keluaran. Ini melengkapi kode penyajian model ML di PyTorch prebuilt Wadah Pembelajaran Mendalam SageMaker gambar.
Inference.py
akan berisi fungsi-fungsi berikut. Dalam contoh kami, kami menerapkan model_fn
, input_fn
, predict_fn
dan output_fn
fungsi untuk menimpa penangan inferensi PyTorch default.
model_fn
: Mengambil direktori yang berisi pos pemeriksaan model statis dalam gambar inferensi. Membuka dan memuat model dari jalur yang ditentukan dan mengembalikan model PyTorch.input_fn
: Mengambil payload dari permintaan masuk (request_body) dan tipe konten dari permintaan masuk (request_content_type) sebagai input. Menangani decoding data. Fungsi ini perlu disesuaikan dengan input yang diharapkan model.predict_fn
: Memanggil model pada data yang dideserialisasi di input_fn. Melakukan prediksi pada objek deserialized dengan model ML yang dimuat.output_fn
: Membuat serial hasil prediksi ke dalam jenis konten respons yang diinginkan. Mengonversi prediksi yang diperoleh dari fungsi predict_fn ke format JSON, CSV, atau NPY.
Langkah 5: Meluncurkan tugas transformasi batch SageMaker
Untuk contoh ini, kita akan mendapatkan hasil inferensi ML melalui tugas transformasi batch SageMaker. Pekerjaan transformasi batch paling berguna saat kita ingin mendapatkan inferensi dari kumpulan data satu kali, tanpa memerlukan titik akhir yang persisten. Kami instantiate a sagemaker.transformer.Transformer untuk membuat dan berinteraksi dengan tugas transformasi batch SageMaker.
Lihat dokumentasi untuk membuat tugas transformasi batch di BuatTransformJob.
Langkah 6: Memvisualisasikan hasil
Setelah tugas transformasi batch SageMaker selesai, kita dapat memuat output inferensi ML dari Amazon S3. Untuk ini, navigasikan ke Konsol Manajemen AWS dan cari Amazon SageMaker. Di panel kiri, di bawah Kesimpulan, Lihat Pekerjaan transformasi batch.
Setelah memilih Transformasi batch, lihat halaman web yang mencantumkan semua pekerjaan transformasi batch SageMaker. Kami dapat melihat kemajuan pelaksanaan pekerjaan terbaru kami.
Pertama, pekerjaan akan berstatus "InProgress". Setelah selesai, lihat perubahan status menjadi Selesai.
Setelah status ditandai sebagai selesai, kita dapat mengklik pekerjaan untuk melihat hasilnya. Halaman web ini berisi ringkasan pekerjaan, termasuk konfigurasi pekerjaan yang baru saja kami jalankan.
Bawah Konfigurasi data keluaran, kita akan melihat jalur keluaran S3. Di sinilah kita akan menemukan output inferensi ML kita.
Pilih jalur keluaran S3 dan lihat file [image_name].[file_type].out dengan data keluaran kami. File keluaran kami akan berisi daftar pemetaan. Contoh keluaran:
Selanjutnya, kami memproses file keluaran ini dan memvisualisasikan prediksi kami. Di bawah ini kami menentukan ambang kepercayaan kami. Kami mendapatkan daftar kelas dari Pemetaan objek set data COCO. Selama inferensi, model hanya memerlukan tensor input dan menampilkan prediksi pasca-proses sebagai List[Dict[Tensor]], satu untuk setiap gambar input. Bidang Dict adalah sebagai berikut, di mana N adalah jumlah deteksi:
- kotak (FloatTensor[N, 4]): kotak yang diprediksi masuk
[x1, y1, x2, y2]
format, dengan0 <= x1 < x2 <= W and 0 <= y1 < y2 <= H
, Di manaW
adalah lebar gambar danH
adalah tinggi bayangan - label (
Int64Tensor[N]
): label yang diprediksi untuk setiap deteksi - skor (
Tensor[N]
): skor prediksi untuk setiap deteksi
Untuk detail lebih lanjut tentang output, lihat Dokumentasi FPN R-CNN PyTorch Lebih Cepat.
Keluaran model berisi kotak pembatas dengan skor kepercayaan masing-masing. Kami dapat mengoptimalkan tampilan positif palsu dengan menghapus kotak pembatas yang modelnya tidak percaya diri. Cuplikan kode berikut memproses prediksi dalam file keluaran dan menggambar kotak pembatas pada prediksi yang skornya di atas ambang keyakinan kami. Kami menetapkan ambang probabilitas, CONF_THRESH
, hingga 75 untuk contoh ini.
Terakhir, kami memvisualisasikan pemetaan ini untuk memahami keluaran kami.
Note: jika gambar tidak ditampilkan di buku catatan Anda, harap cari di pohon direktori di sisi kiri JupyterLab dan buka dari sana.
Menjalankan kode contoh
Untuk contoh yang berfungsi penuh, tiru kode di amazon-sagemaker-contoh GitHub dan menjalankan sel di create_pytorch_model_sagemaker.ipynb
buku catatan.
Kesimpulan
Dalam postingan blog ini, kami memamerkan contoh end-to-end melakukan inferensi ML menggunakan model deteksi objek dari PyTorch Model Zoo menggunakan transformasi batch SageMaker. Kita membahas pemuatan bobot model deteksi objek R-CNN yang Lebih Cepat, menyimpannya ke bucket S3, menulis file entrypoint, dan memahami parameter kunci di API PyTorchModel. Terakhir, kami menerapkan model dan melakukan inferensi model ML, memvisualisasikan output model, dan mempelajari cara menginterpretasikan hasilnya.
Tentang Penulis
Dipika Khular adalah Insinyur ML di Lab Solusi Amazon ML. Dia membantu pelanggan mengintegrasikan solusi ML untuk menyelesaikan masalah bisnis mereka. Baru-baru ini, dia telah membangun jalur pelatihan dan inferensi untuk pelanggan media dan model prediktif untuk pemasaran.
Marcelo Aberle adalah Insinyur ML di organisasi AWS AI. Dia memimpin upaya MLOps di Lab Solusi Amazon ML, membantu pelanggan merancang dan mengimplementasikan sistem ML yang dapat diskalakan. Misinya adalah memandu pelanggan dalam perjalanan ML perusahaan mereka dan mempercepat jalur ML mereka menuju produksi.
Ninad Kulkarni adalah Ilmuwan Terapan di Lab Solusi Amazon ML. Dia membantu pelanggan mengadopsi ML dan AI dengan membangun solusi untuk mengatasi masalah bisnis mereka. Baru-baru ini, dia telah membuat model prediktif untuk pelanggan olahraga, otomotif, dan media.
Yash Shah adalah Manajer Sains di Lab Solusi Amazon ML. Dia dan timnya yang terdiri dari ilmuwan terapan dan teknisi ML mengerjakan berbagai kasus penggunaan ML mulai dari perawatan kesehatan, olahraga, otomotif, dan manufaktur.
- AI
- ai seni
- generator seni ai
- punya robot
- Pembelajaran Mesin Amazon
- Lab Solusi Amazon ML
- Amazon SageMaker
- kecerdasan buatan
- sertifikasi kecerdasan buatan
- kecerdasan buatan dalam perbankan
- robot kecerdasan buatan
- robot kecerdasan buatan
- perangkat lunak kecerdasan buatan
- Pembelajaran Mesin AWS
- blockchain
- konferensi blockchain
- kecerdasan
- kecerdasan buatan percakapan
- konferensi kripto
- dall's
- belajar mendalam
- google itu
- Mesin belajar
- plato
- plato ai
- Kecerdasan Data Plato
- Permainan Plato
- Data Plato
- permainan plato
- skala ai
- sintaksis
- Petunjuk Teknis
- zephyrnet.dll