Postingan blog ini ditulis bersama oleh Jonathan Lee, Nelson Leung, Paul Min, dan Troy Squillaci dari Intel.
In bagian 1 dari posting ini, kami membahas bagaimana Intel®3DAT berkolaborasi dengan Layanan Profesional Pembelajaran Mesin AWS (MLPS) untuk membangun aplikasi AI SaaS yang skalabel. 3DAT menggunakan visi komputer dan AI untuk mengenali, melacak, dan menganalisis lebih dari 1,000 titik data biomekanik dari video standar. Ini memungkinkan pelanggan untuk membuat produk berbasis biomekanik yang kaya dan kuat, seperti aplikasi web dan seluler dengan data kinerja terperinci dan visualisasi tiga dimensi.
Di Bagian 2 dari posting ini, kita menyelam lebih dalam ke setiap tahap arsitektur. Kami menjelajahi layanan AWS yang digunakan untuk memenuhi persyaratan desain 3DAT, termasuk Aliran Data Amazon Kinesis dan Layanan Amazon Elastic Kubernetes (Amazon EKS), untuk menerapkan model estimasi pose yang diperlukan secara skala besar untuk aplikasi perangkat lunak sebagai layanan (SaaS) ini.
Tinjauan arsitektur
Tujuan utama tim MLPS adalah untuk memproduksi model estimasi pose 2D dan 3D dan membuat aplikasi yang fungsional dan dapat diskalakan. Diagram berikut menggambarkan arsitektur solusi.
Arsitektur lengkap dipecah menjadi lima komponen utama:
- Lapisan antarmuka aplikasi pengguna
- Basis Data
- Orkestrasi alur kerja
- Pembuatan inferensi estimasi pose yang dapat diskalakan
- Pemantauan operasional
Mari kita masuk ke detail pada setiap komponen, interaksinya, dan alasan di balik pilihan desain.
Lapisan antarmuka aplikasi pengguna
Diagram berikut menunjukkan lapisan antarmuka aplikasi yang menyediakan akses pengguna dan kontrol aplikasi dan sumber dayanya.
Titik akses ini mendukung kasus penggunaan yang berbeda berdasarkan persona pelanggan yang berbeda. Misalnya, pengguna aplikasi dapat mengirimkan pekerjaan melalui CLI, sedangkan pengembang dapat membangun aplikasi menggunakan Python SDK dan menanamkan kecerdasan estimasi pose ke dalam aplikasi mereka. CLI dan SDK dibuat sebagai komponen modular—kedua lapisan tersebut merupakan pembungkus lapisan API, yang dibuat menggunakan Gerbang API Amazon untuk menyelesaikan panggilan API dan terkait AWS Lambda fungsi, yang menangani logika backend yang terkait dengan setiap panggilan API. Lapisan-lapisan ini merupakan komponen penting bagi tim Intel OTG karena lapisan ini membuka basis pelanggan yang luas yang dapat secara efektif menggunakan aplikasi SaaS ini.
lapisan API
Solusinya memiliki kumpulan inti sembilan API, yang sesuai dengan jenis objek yang beroperasi pada platform ini. Setiap API memiliki file Python yang mendefinisikan tindakan API yang dapat dijalankan. Pembuatan objek baru secara otomatis diberi ID objek secara berurutan. Atribut objek ini disimpan dan dilacak di Amazon Aurora Tanpa Server database menggunakan ID ini. Oleh karena itu, tindakan API mengikat kembali ke fungsi yang ditentukan dalam file pusat yang berisi logika backend untuk kueri database Aurora. Logika backend ini menggunakan Boto3 Klien Amazon RDS DataService untuk mengakses cluster database.
Satu-satunya pengecualian adalah /job
API, yang memiliki create_job
metode yang menangani pengiriman video untuk membuat pekerjaan pemrosesan baru. Metode ini memulai Fungsi Langkah AWS logika alur kerja untuk menjalankan pekerjaan. Dengan melewati job_id
, metode ini menggunakan Boto3 Langkah Fungsi klien untuk memanggil start_execution
metode untuk yang ditentukan stateMachineARN
(Nama Sumber Daya Amazon).
Delapan objek API memiliki metode dan pola akses serupa seperti yang dirangkum dalam tabel berikut.
Jenis Metode | Nama Fungsi | Deskripsi Produk |
DAPATKAN | list_[object_name]s |
Memilih semua objek jenis ini dari database dan menampilkannya. |
POST | create_[object] |
Menyisipkan catatan objek baru dengan input yang diperlukan ke dalam database. |
DAPATKAN | get_[object] |
Memilih atribut objek berdasarkan ID objek dari database dan menampilkannya. |
PUT | update_[object] |
Memperbarui rekaman objek yang ada dengan input yang diperlukan. |
DELETE | delete_[object] |
Menghapus rekaman objek yang ada dari database berdasarkan ID objek. |
Rincian kesembilan API tersebut adalah sebagai berikut:
- /pengguna – Pengguna adalah identitas seseorang yang berwenang untuk mengirimkan pekerjaan ke aplikasi ini. Pembuatan pengguna memerlukan nama pengguna, email pengguna, dan ID grup tempat pengguna tersebut berada.
- /grup pengguna – Grup pengguna adalah kumpulan pengguna. Setiap grup pengguna dipetakan ke satu proyek dan satu set parameter pipeline. Untuk memiliki tingkatan yang berbeda (dalam hal sumber daya infrastruktur dan parameter pipa), pengguna dibagi menjadi beberapa kelompok pengguna. Setiap pengguna hanya dapat menjadi bagian dari satu grup pengguna. Pembuatan grup pengguna memerlukan ID proyek, ID kumpulan parameter saluran, nama grup pengguna, dan deskripsi grup pengguna. Perhatikan bahwa grup pengguna berbeda dari peran pengguna yang ditentukan di akun AWS. Yang terakhir digunakan untuk memberikan tingkat akses yang berbeda berdasarkan peran akses mereka (misalnya admin).
- /proyek – Sebuah proyek digunakan untuk mengelompokkan berbagai sumber daya infrastruktur bersama-sama. Sebuah proyek dikaitkan dengan satu
project_cluster_url
(Cluster Aurora) untuk merekam pengguna, pekerjaan, dan metadata lainnya, aproject_queue_arn
(Kinesis Data Streams ARN), dan lingkungan runtime komputasi (saat ini dikontrol melalui Cortex) yang digunakan untuk menjalankan inferensi pada kumpulan bingkai atau pascapemrosesan pada video. Setiap grup pengguna dikaitkan ke satu proyek, dan mekanisme ini adalah bagaimana tingkatan yang berbeda diaktifkan dalam hal latensi dan daya komputasi untuk grup pengguna yang berbeda. Pembuatan proyek memerlukan nama proyek, URL cluster proyek, dan ARN antrian proyek. - /pipa – Pipeline dikaitkan dengan konfigurasi tunggal untuk urutan wadah pemrosesan yang melakukan pemrosesan video di klaster pembuatan inferensi Amazon EKS yang dikoordinasikan oleh Cortex (lihat bagian tentang pembuatan inferensi pemrosesan video untuk detail selengkapnya). Biasanya, ini terdiri dari tiga wadah: preprocessing dan decoding, deteksi objek, dan estimasi pose. Misalnya, langkah dekode dan deteksi objek sama untuk pipeline 2D dan 3D, tetapi menukar container terakhir menggunakan HRNet atau 3DMPPE menghasilkan set parameter untuk pipeline pemrosesan 2D vs. 3D. Anda dapat membuat konfigurasi baru untuk menentukan kemungkinan jalur pipa yang dapat digunakan untuk pemrosesan, dan ini memerlukan sebagai masukan file Python baru di repo Cortex yang merinci urutan panggilan titik akhir model yang menentukan jalur tersebut (lihat bagian tentang pembuatan inferensi pemrosesan video ). Titik akhir pipa adalah titik akhir Cortex yang dipanggil untuk memproses satu frame. Pembuatan pipa memerlukan nama pipa, deskripsi pipa, dan titik akhir pipa.
- /pipa_parameter_set – Kumpulan parameter pipeline adalah kumpulan JSON yang fleksibel dari beberapa parameter (runtime konfigurasi pipeline) untuk pipeline tertentu, dan ditambahkan untuk memberikan fleksibilitas untuk penyesuaian di masa mendatang ketika beberapa runtime konfigurasi pipeline diperlukan. Grup pengguna dapat dikaitkan dengan kumpulan parameter pipeline tertentu, dan tujuannya adalah untuk memiliki grup parameter yang berbeda per grup pengguna dan per pipeline. Ini adalah tambahan penting bagi Intel OTG untuk membangun kustomisasi yang mendukung portabilitas karena pelanggan yang berbeda, terutama ISV, mulai menggunakan aplikasi.
- /pipa_parameter – Kumpulan parameter pipeline tunggal adalah instantiasi dari set parameter pipeline. Ini menjadikannya pemetaan 1: banyak dari parameter pipa yang disetel ke parameter pipa. API ini memerlukan ID pipeline untuk dikaitkan dengan kumpulan parameter pipeline yang memungkinkan pembuatan pipeline untuk pemetaan parameter pipeline 1:1 ke pipeline. Input lain yang diperlukan oleh API ini adalah ID kumpulan parameter pipeline, nilai parameter pipeline, dan nama parameter pipeline.
- / video – Objek video digunakan untuk menentukan video individual yang membentuk paket .zip yang dikirimkan selama pekerjaan. File ini dipecah menjadi beberapa video setelah pengiriman. Sebuah video terkait dengan
job_id
untuk pekerjaan di mana paket .zip dikirimkan, dan Layanan Penyimpanan Sederhana Amazon (Amazon S3) untuk lokasi video mentah yang dipisahkan dan hasil pascapemrosesan setiap video. Objek video juga berisi persentase kemajuan video, yang diperbarui secara konsisten selama pemrosesan kumpulan bingkai individual dari video itu, serta tanda status video untuk selesai atau tidak selesai. Pembuatan video memerlukan ID pekerjaan, jalur video, jalur hasil video, persentase kemajuan video, dan status video. - /frame_batch - A
frame_batch
objek adalah kumpulan kecil bingkai yang dibuat dengan mengambil sampel satu video. Memisahkan video ke dalam kumpulan bingkai berukuran biasa memberikan tuas untuk menyetel latensi dan meningkatkan paralelisasi dan throughput. Ini adalah unit granular yang dijalankan melalui Kinesis Data Streams untuk inferensi. Pembuatan kumpulan bingkai memerlukan ID video, nomor awal kumpulan bingkai, nomor akhir kumpulan bingkai, jalur input kumpulan bingkai, jalur hasil kumpulan bingkai, dan status kumpulan bingkai. - /pekerjaan – API interaksi ini digunakan untuk pengiriman file untuk memulai pekerjaan pemrosesan. API ini memiliki fungsi yang berbeda dari API objek lain karena merupakan jalur langsung untuk berinteraksi dengan backend pemrosesan video, koordinasi alur kerja Step Functions dan klaster Amazon EKS. API ini memerlukan ID pengguna, ID proyek, ID saluran, ID kumpulan parameter saluran, parameter pekerjaan, dan status pekerjaan. Dalam parameter pekerjaan, jalur file input ditentukan, yang merupakan lokasi di Amazon S3 tempat paket .zip video yang akan diproses berada. Pengunggahan file ditangani dengan
upload_handler
metode, yang menghasilkan URL S3 yang telah ditentukan bagi pengguna untuk menempatkan file. WORKFLOW_STATEMACHINE_ARN adalah variabel lingkungan yang diteruskan kecreate_job
API untuk menentukan di mana paket .zip video dengan jalur file input dikirimkan untuk memulai pekerjaan.
Tabel berikut merangkum fungsi API.
Jenis Metode | fungsi | Deskripsi Produk |
DAPATKAN | list_jobs |
Memilih semua pekerjaan dari database dan menampilkannya. |
POST | create_ job |
Menyisipkan catatan pekerjaan baru dengan ID pengguna, ID proyek, ID pipa, ID kumpulan parameter pipa, jalur hasil pekerjaan, parameter pekerjaan, dan status pekerjaan. |
DAPATKAN | get_ job |
Memilih atribut pekerjaan berdasarkan ID pekerjaan dari database dan menampilkannya. |
DAPATKAN | upload_handler |
Menghasilkan URL S3 yang telah ditentukan sebelumnya sebagai lokasi untuk unggahan file .zip. Memerlukan nama bucket S3 dan mengharapkan jenis file aplikasi/zip. |
Lapisan Python SDK
Membangun di atas API, tim membuat pustaka klien Python SDK sebagai pembungkus untuk memudahkan pengembang mengakses metode API. Mereka menggunakan sumber terbuka Puisi, yang menangani pengemasan Python dan manajemen ketergantungan. Mereka menciptakan client.py
file yang berisi fungsi yang membungkus setiap API menggunakan Python requests
library untuk menangani permintaan dan pengecualian API.
Agar pengembang dapat meluncurkan Intel 3DAT SDK, mereka perlu menginstal dan membangun paket Poetry. Kemudian, mereka dapat menambahkan impor Python sederhana dari intel_3dat_sdk
ke kode Python apa pun.
Untuk menggunakan klien, Anda dapat membuat instance klien, dengan menetapkan titik akhir API:
Anda kemudian dapat menggunakan klien untuk memanggil metode individual seperti create_pipeline
metode (lihat kode berikut), dengan mengambil argumen yang tepat seperti nama pipa dan deskripsi pipa.
lapisan CLI
Demikian pula, tim membangun API untuk membuat antarmuka baris perintah bagi pengguna yang ingin mengakses metode API dengan antarmuka langsung tanpa perlu menulis kode Python. Mereka menggunakan paket Python open-source Klik (Perangkat Pembuatan Antarmuka Baris Perintah). Manfaat kerangka kerja ini adalah kumpulan perintah yang berubah-ubah, pembuatan halaman bantuan otomatis, dan dukungan pemuatan subperintah yang lambat saat runtime. Pada bagian yang sama client.py
file seperti di SDK, setiap metode klien SDK dibungkus menggunakan Klik dan argumen metode yang diperlukan dikonversi ke flag baris perintah. Input flag kemudian digunakan saat memanggil perintah SDK.
Untuk meluncurkan CLI, Anda dapat menggunakan CLI configure
memerintah. Anda diminta memasukkan URL titik akhir:
Sekarang Anda dapat menggunakan CLI untuk memanggil perintah berbeda yang terkait dengan metode API, misalnya:
Basis Data
Sebagai database, aplikasi ini menggunakan Aurora Tanpa Server untuk menyimpan metadata yang terkait dengan setiap API dengan MYSQL sebagai mesin database. Memilih layanan database Aurora Tanpa Server mematuhi prinsip desain untuk meminimalkan overhead infrastruktur dengan memanfaatkan layanan AWS tanpa server jika memungkinkan. Diagram berikut menggambarkan arsitektur ini.
Grafik mode mesin tanpa server memenuhi pola penggunaan intermiten karena aplikasi ini meningkatkan skala untuk pelanggan baru dan beban kerja masih belum pasti. Saat meluncurkan titik akhir database, ukuran instans DB tertentu tidak diperlukan, hanya rentang minimum dan maksimum untuk kapasitas cluster. Aurora Tanpa Server menangani penyediaan armada router yang sesuai dan mendistribusikan beban kerja di antara sumber daya. Aurora Tanpa Server secara otomatis melakukan penyimpanan cadangan selama minimal 1 hari hingga 35 hari. Tim mengoptimalkan keselamatan dengan menyetel default ke nilai maksimum 35.
Selain itu, tim menggunakan API Data untuk menangani akses ke klaster Aurora Tanpa Server, yang tidak memerlukan koneksi persisten, dan sebagai gantinya menyediakan titik akhir HTTP yang aman dan integrasi dengan AWS SDK. Fitur ini menggunakan Manajer Rahasia AWS untuk menyimpan kredensial basis data sehingga tidak perlu secara eksplisit memberikan kredensial. Skrip CREATE TABLE ditulis dalam file .sql untuk masing-masing dari sembilan tabel yang sesuai dengan sembilan API. Karena database ini berisi semua metadata dan status objek dalam sistem, metode API dijalankan menggunakan perintah SQL yang sesuai (misalnya select * from Job
untuk list_jobs
API) dan diteruskan ke execute_statement
metode dari klien Amazon RDS di Data API.
Orkestrasi alur kerja
Tulang punggung fungsional aplikasi ditangani menggunakan Step Functions untuk mengoordinasikan alur kerja, seperti yang ditunjukkan pada diagram berikut.
Mesin negara terdiri dari urutan empat fungsi Lambda, yang dimulai saat tugas dikirimkan menggunakan create_job
metode dari job
API. ID pengguna, ID proyek, ID saluran, ID kumpulan parameter saluran, jalur hasil pekerjaan, parameter pekerjaan, dan status pekerjaan diperlukan untuk pembuatan pekerjaan. Anda dapat terlebih dahulu mengunggah paket .zip file video menggunakan upload_handler
metode dari API pekerjaan untuk menghasilkan URL S3 yang telah ditentukan sebelumnya. Selama pengiriman pekerjaan, jalur file input dilewatkan melalui parameter pekerjaan, untuk menentukan lokasi file. Ini memulai menjalankan mesin status alur kerja, memicu empat langkah utama:
- Fungsi penginisialisasi Lambda
- Fungsi pengirim Lambda
- Penyelesaian Periksa fungsi Lambda
- Fungsi Kolektor Lambda
Fungsi penginisialisasi Lambda
Fungsi utama Penginisialisasi adalah untuk memisahkan paket .zip menjadi file video individual dan mempersiapkannya untuk Pengirim. Pertama, file .zip diunduh, lalu setiap file individual, termasuk file video, dibuka ritsletingnya dan diekstraksi. Video, sebaiknya dalam format .mp4, diunggah kembali ke dalam ember S3. Menggunakan create_video
metode dalam video
API, objek video dibuat dengan jalur video sebagai input. Ini memasukkan data pada setiap video ke dalam database Aurora. Jenis file lainnya, seperti file JSON, dianggap sebagai metadata dan diunggah dengan cara yang sama, tetapi tidak ada objek video yang dibuat. Daftar nama file dan file video yang diekstrak diteruskan ke langkah berikutnya.
Fungsi pengirim Lambda
Fungsi Pengirim mengambil file video yang diekstraksi oleh Penginisialisasi dan membuat kumpulan kecil bingkai video sebagai gambar. Sebagian besar model visi komputer saat ini dalam produksi telah dilatih pada gambar sehingga bahkan ketika video diproses, mereka terlebih dahulu dipisahkan menjadi bingkai gambar sebelum inferensi model. Solusi saat ini menggunakan model estimasi pose mutakhir tidak berbeda — kumpulan bingkai dari Pengirim diteruskan ke Kinesis Data Streams untuk memulai langkah pembuatan inferensi.
Pertama, file video diunduh oleh fungsi Lambda. Frame rate dan jumlah frame dihitung menggunakan FileVideoStream
modul dari imutils.video
perpustakaan pengolahan. Bingkai diekstraksi dan dikelompokkan menurut ukuran mini-batch yang ditentukan, yang merupakan salah satu parameter utama yang dapat disetel dari jalur pipa ini. Menggunakan pustaka acar Python, data diserialkan dan diunggah ke Amazon S3. Selanjutnya, objek kumpulan bingkai dibuat dan entri metadata dibuat di database Aurora. Fungsi Lambda ini dibangun menggunakan Dockerfile dengan ketergantungan pada opencv-python
, numpy
, dan imutils
perpustakaan.
Penyelesaian Periksa fungsi Lambda
Fungsi Pemeriksaan Penyelesaian melanjutkan kueri ke database Aurora untuk melihat, untuk setiap video dalam paket .zip untuk pekerjaan saat ini, berapa banyak kumpulan bingkai dalam status SELESAI. Ketika semua frame batch untuk semua video selesai, maka proses pemeriksaan ini selesai.
Fungsi Kolektor Lambda
Fungsi Kolektor mengambil output dari kesimpulan yang dilakukan pada setiap bingkai selama tahap Konsumen dan menggabungkannya di seluruh kumpulan bingkai dan di seluruh video. Data gabungan gabungan kemudian diunggah ke bucket S3. Fungsi tersebut kemudian memanggil API pascapemrosesan Cortex untuk pipeline ML tertentu untuk melakukan penghitungan pascapemrosesan apa pun, dan menambahkan hasil teragregasi melalui video ke bucket keluaran. Banyak dari metrik ini dihitung di seluruh bingkai, seperti kecepatan, akselerasi, dan sudut sambungan, sehingga penghitungan ini perlu dilakukan pada data gabungan. Keluaran utama meliputi data titik kunci tubuh (diagregasi ke dalam format CSV), perhitungan BMA (seperti akselerasi), dan hamparan visual dari titik-titik kunci yang ditambahkan ke setiap bingkai dalam file gambar.
Pembuatan inferensi estimasi pose yang dapat diskalakan
Mesin pemrosesan yang mendukung penskalaan inferensi ML terjadi pada tahap ini. Ini melibatkan tiga bagian utama, masing-masing memiliki tuas konkurensi sendiri yang dapat disetel untuk tradeoff latency (lihat diagram berikut).
Arsitektur ini memungkinkan eksperimen dalam menguji peningkatan latensi, serta fleksibilitas untuk masa depan ketika beban kerja dapat berubah dengan campuran segmen pengguna akhir yang berbeda yang mengakses aplikasi.
Aliran Data Kinesis
Tim memilih Kinesis Data Streams karena biasanya digunakan untuk menangani data streaming, dan dalam kasus ini sangat cocok karena dapat menangani kumpulan bingkai dengan cara yang serupa untuk menyediakan skalabilitas dan paralelisasi. Dalam fungsi Lambda Pengirim, klien Kinesis Boto3 digunakan, dengan put_record
metode yang meneruskan metadata yang terkait dengan kumpulan bingkai tunggal, seperti ID kumpulan bingkai, bingkai awal kumpulan bingkai, bingkai akhir kumpulan bingkai, bentuk gambar, kecepatan bingkai, dan ID video.
Kami mendefinisikan berbagai antrian pekerjaan dan konfigurasi aliran data Kinesis untuk mengatur tingkat throughput yang mengikat kembali ke tingkat prioritas kelompok pengguna yang berbeda. Akses ke tingkat daya pemrosesan yang berbeda dihubungkan dengan melewatkan ARN antrian proyek saat membuat proyek baru menggunakan project
API. Setiap grup pengguna kemudian ditautkan ke proyek tertentu selama pembuatan grup pengguna. Tiga konfigurasi aliran default didefinisikan di Model Aplikasi Tanpa Server AWS (AWS SAM) template infrastruktur:
- Standar -
JobStreamShardCount
- Prioritas -
PriorityJobStreamShardCount
- Prioritas utama -
HighPriorityJobStreamShardCount
Tim menggunakan beberapa tuas yang berbeda untuk membedakan kekuatan pemrosesan setiap aliran atau menyetel latensi sistem, seperti yang dirangkum dalam tabel berikut.
Tuas | Deskripsi Produk | Nilai standar |
Beling | Pecahan berasal dari Kinesis Data Streams; ini adalah unit dasar throughput untuk penyerapan. Standarnya adalah 1MB/detik, yang setara dengan 1,000 catatan data per detik. | 2 |
KinesisBatchSize |
Jumlah maksimum catatan yang diambil Kinesis Data Streams dalam satu kumpulan sebelum menjalankan fungsi Lambda konsumen. | 1 |
KinesisParallelizationFactor |
Jumlah batch untuk diproses dari setiap shard secara bersamaan. | 1 |
Fan-out yang ditingkatkan | Konsumen data yang telah mengaktifkan fan-out yang ditingkatkan memiliki throughput penyerapan khusus per konsumen (seperti 1MB/dtk default) alih-alih berbagi throughput di seluruh konsumen. | Off |
Fungsi Lambda Konsumen
Dari perspektif Kinesis Data Streams, konsumen data adalah layanan AWS yang mengambil data dari pecahan aliran data saat data dihasilkan dalam aliran. Aplikasi ini menggunakan fungsi Lambda Konsumen, yang dipanggil saat pesan diteruskan dari antrian aliran data. Setiap fungsi Konsumen memproses satu kumpulan bingkai dengan melakukan langkah-langkah berikut. Pertama, panggilan dilakukan ke API prosesor Cortex secara sinkron, yang merupakan titik akhir yang menghosting pipeline inferensi model (lihat bagian berikutnya mengenai Amazon EKS dengan Cortex untuk detail selengkapnya). Hasilnya disimpan di Amazon S3, dan pembaruan dibuat ke database dengan mengubah status batch bingkai yang diproses menjadi Complete
. Penanganan kesalahan dibangun untuk mengelola panggilan API Cortex dengan pengulangan percobaan untuk menangani kesalahan 504 dari kluster Cortex, dengan jumlah percobaan ulang diatur ke 5.
Amazon EKS dengan inferensi Cortex untuk ML
Tim menggunakan Amazon EKS, layanan Kubernetes terkelola di AWS, sebagai mesin komputasi untuk inferensi ML. Pilihan desain dibuat untuk menggunakan Amazon EKS untuk menghosting titik akhir ML, memberikan fleksibilitas menjalankan Kubernetes upstream dengan opsi cluster yang keduanya dikelola sepenuhnya di AWS melalui Fargate AWS, atau perangkat keras lokal melalui Amazon EKS Di Mana Saja. Ini adalah bagian penting dari fungsionalitas yang diinginkan oleh Intel OTG, yang menyediakan opsi untuk menghubungkan aplikasi ini ke perangkat keras lokal khusus, misalnya.
Tiga model ML yang menjadi blok pembangun untuk membangun saluran inferensi adalah model Yolo khusus (untuk deteksi objek), model HRNet khusus (untuk estimasi pose 2D), dan model 3DMPPE (untuk estimasi pose 3D) (lihat model sebelumnya bagian ML untuk lebih jelasnya). Mereka menggunakan sumber terbuka Lapisan luar library untuk menangani penerapan dan pengelolaan titik akhir pipeline inferensi ML, serta peluncuran dan penerapan klaster Amazon EKS. Masing-masing model ini dikemas ke dalam wadah Docker—file model disimpan di Amazon S3 dan gambar model disimpan di Registry Kontainer Elastis Amazon (Amazon ECR)—dan di-deploy sebagai Cortex Realtime API. Versi container model yang berjalan pada CPU dan GPU dibuat untuk memberikan fleksibilitas untuk jenis perangkat keras komputasi. Di masa mendatang, jika model atau pipeline model tambahan perlu ditambahkan, mereka cukup membuat API Cortex Realtime tambahan.
Mereka kemudian membangun pipa inferensi dengan menyusun bersama-sama API model Cortex Realtime ke dalam API pipa Cortex Realtime. API pipeline Realtime tunggal terdiri dari pemanggilan urutan API model Realtime. Fungsi Lambda Konsumen diperlakukan sebagai pipeline
API sebagai kotak hitam, menggunakan satu panggilan API untuk mengambil output inferensi akhir untuk sebuah gambar. Dua saluran pipa dibuat: pipa 2D dan pipa 3D.
Pipa 2D menggabungkan langkah pra-pemrosesan dekode, deteksi objek menggunakan model Yolo khusus untuk menemukan atlet dan menghasilkan kotak pembatas, dan terakhir model HRNet khusus untuk membuat poin kunci 2D untuk estimasi pose.
Pipeline 3D menggabungkan langkah pra-pemrosesan dekode, deteksi objek menggunakan model Yolo khusus untuk menemukan atlet dan menghasilkan kotak pembatas, dan terakhir model 3DMPPE untuk membuat poin kunci 3D untuk estimasi pose.
Setelah menghasilkan inferensi pada sekumpulan frame, setiap pipeline juga menyertakan endpoint Realtime Cortex pascapemrosesan terpisah yang menghasilkan tiga output utama:
- Data poin kunci tubuh teragregasi ke dalam satu file CSV
- Perhitungan BMA (seperti akselerasi)
- Hamparan visual dari poin-poin penting yang ditambahkan ke setiap bingkai dalam file gambar
Fungsi Kolektor Lambda mengirimkan metadata yang sesuai yang terkait dengan video tertentu, seperti ID bingkai dan lokasi S3 dari keluaran inferensi estimasi pose, ke titik akhir untuk menghasilkan keluaran pascapemrosesan ini.
Cortex dirancang untuk diintegrasikan dengan Amazon EKS, dan hanya memerlukan file konfigurasi klaster dan perintah sederhana untuk meluncurkan klaster Kubernetes:
Pengungkit lain untuk penyetelan kinerja adalah konfigurasi instans untuk kluster komputasi. Tiga tingkatan dibuat dengan berbagai campuran instans M5 dan G4dn, dikodifikasikan sebagai file .yaml dengan spesifikasi seperti nama klaster, Wilayah, serta konfigurasi dan campuran instans. Instans M5 berbasis CPU dengan biaya lebih rendah dan G4dn berbasis GPU dengan biaya lebih tinggi untuk memberikan beberapa pengorbanan biaya/kinerja.
Pemantauan operasional
Untuk mempertahankan standar logging operasional, semua fungsi Lambda menyertakan kode untuk merekam dan menyerap log melalui Firehose Data Amazon Kinesis. Misalnya, setiap kumpulan bingkai yang diproses dari fungsi Lambda Pengirim dicatat dengan stempel waktu, nama tindakan, dan respons fungsi Lambda JSON dan disimpan ke Amazon S3. Diagram berikut menggambarkan langkah ini dalam arsitektur.
Penyebaran
Penerapan ditangani menggunakan AWS SAM, kerangka kerja sumber terbuka untuk membangun aplikasi tanpa server di AWS. AWS SAM memungkinkan desain infrastruktur, termasuk fungsi, API, database, dan pemetaan sumber peristiwa untuk dikodifikasi dan diterapkan dengan mudah di lingkungan AWS baru. Selama penerapan, sintaks AWS SAM diterjemahkan menjadi Formasi AWS Cloud untuk menangani penyediaan infrastruktur.
A template.yaml
file berisi spesifikasi infrastruktur bersama dengan parameter yang dapat disesuaikan, seperti tuas latensi Kinesis Data Streams yang dirinci di bagian sebelumnya. A samconfig.toml
file berisi parameter penerapan seperti nama tumpukan, nama bucket S3 tempat file aplikasi seperti kode fungsi Lambda disimpan, dan tag sumber daya untuk biaya pelacakan. Hanya skrip shell deploy.sh dengan perintah sederhana yang diperlukan untuk membangun dan menerapkan seluruh template:
Alur kerja pengguna
Singkatnya, setelah infrastruktur diterapkan, Anda dapat mengikuti alur kerja ini untuk memulai:
- Buat klien Intel 3DAT menggunakan pustaka klien.
- Gunakan API untuk membuat instance baru dari pipeline yang sesuai dengan jenis pemrosesan yang diperlukan, seperti satu untuk estimasi pose 3D.
- Buat instance baru dari sebuah proyek, dengan meneruskan cluster ARN dan ARN antrian Kinesis.
- Buat instance baru dari kumpulan parameter pipeline.
- Buat instance baru parameter pipeline yang dipetakan ke set parameter pipeline.
- Buat grup pengguna baru yang terkait dengan ID proyek dan ID kumpulan parameter saluran.
- Buat pengguna baru yang terkait dengan grup pengguna.
- Unggah file .zip video ke Amazon S3 menggunakan URL S3 yang telah ditentukan sebelumnya yang dihasilkan oleh fungsi unggah di API pekerjaan.
- Kirimkan a
create_job
Panggilan API, dengan parameter tugas yang menentukan lokasi file video. Ini memulai pekerjaan pemrosesan.
Kesimpulan
Aplikasi ini sekarang hidup dan siap untuk diuji dengan atlet dan pelatih. Intel OTG bersemangat untuk membuat teknologi estimasi pose inovatif menggunakan visi komputer yang dapat diakses oleh berbagai pengguna, dari pengembang hingga atlet hingga mitra vendor perangkat lunak.
Tim AWS bersemangat membantu pelanggan seperti Intel OTG mempercepat perjalanan ML mereka, dari tahap ide dan penemuan dengan ML Solutions Lab hingga tahap pengerasan dan penerapan dengan AWS ML ProServe. Kita semua akan menonton dengan cermat di Olimpiade Tokyo 2021 musim panas ini untuk membayangkan semua kemajuan yang dapat dibuka ML dalam olahraga.
Mulailah hari ini! Jelajahi kasus penggunaan Anda dengan layanan yang disebutkan dalam posting ini dan banyak lainnya di Konsol Manajemen AWS.
Tentang Penulis
Han Man adalah Manajer Senior- Pembelajaran Mesin & AI di AWS yang berbasis di San Diego, CA. Dia memiliki gelar PhD di bidang teknik dari Northwestern University dan memiliki beberapa tahun pengalaman sebagai konsultan manajemen yang memberi nasihat kepada klien di bidang manufaktur, jasa keuangan, dan energi. Hari ini dia bekerja dengan penuh semangat dengan pelanggan dari berbagai industri untuk mengembangkan dan mengimplementasikan pembelajaran mesin & solusi AI di AWS. Dia menikmati mengikuti NBA dan bermain basket di waktu luangnya.
Iman Kamyabi adalah Insinyur ML dengan Layanan Profesional AWS. Dia telah bekerja dengan berbagai pelanggan AWS untuk memperjuangkan praktik terbaik dalam menyiapkan saluran ML yang dapat diulang dan andal.
Jonathan lee adalah Director of Sports Performance Technology, Olympic Technology Group di Intel. Dia mempelajari penerapan pembelajaran mesin untuk kesehatan sebagai sarjana di UCLA dan selama pekerjaan pascasarjana di Universitas Oxford. Karirnya berfokus pada pengembangan algoritma dan sensor untuk kesehatan dan kinerja manusia. Dia sekarang memimpin proyek Pelacakan Atlet 3D di Intel.
Nelson Leung adalah Arsitek Platform dalam Sports Performance CoE di Intel, di mana ia mendefinisikan arsitektur ujung-ke-ujung untuk produk-produk mutakhir yang meningkatkan kinerja atlet. Dia juga memimpin implementasi, penerapan, dan produksi solusi pembelajaran mesin ini dalam skala besar ke berbagai mitra Intel.
Troy Squillaci adalah seorang insinyur DecSecOps di Intel di mana ia memberikan solusi perangkat lunak profesional kepada pelanggan melalui praktik terbaik DevOps. Dia senang mengintegrasikan solusi AI ke dalam platform yang dapat diskalakan di berbagai domain.
Paulus Min adalah Associate Solutions Architect Intern di Amazon Web Services (AWS), di mana dia membantu pelanggan di berbagai vertikal industri memajukan misi mereka dan mempercepat adopsi cloud mereka. Sebelumnya di Intel, ia bekerja sebagai Software Engineering Intern untuk membantu mengembangkan 3D Athlete Tracking Cloud SDK. Di luar pekerjaan, Paul menikmati bermain golf dan dapat didengarkan bernyanyi.
- Coinsmart. Pertukaran Bitcoin dan Crypto Terbaik Eropa.
- Platoblockchain. Intelijen Metaverse Web3. Pengetahuan Diperkuat. AKSES GRATIS.
- CryptoHawk. Radar Altcoin. Uji Coba Gratis.
- Sumber: https://aws.amazon.com/blogs/machine-learning/the-intel3d-athlete-tracking-3dat-scalable-architecture-deploys-pose-estimation-models-using-amazon-kinesis-data-streams- dan-amazon-eks/
- "
- &
- 000
- 100
- 2021
- 3d
- Tentang Kami
- mempercepat
- mengakses
- dapat diakses
- Menurut
- Akun
- di seluruh
- Tindakan
- tindakan
- tambahan
- Tambahan
- admin
- Adopsi
- AI
- algoritma
- Semua
- Amazon
- Amazon Web Services
- diantara
- api
- Lebah
- Aplikasi
- aplikasi
- sesuai
- arsitektur
- argumen
- ditugaskan
- Menghubungkan
- atlet
- atribut
- secara otomatis
- AWS
- backup
- Bola basket
- sebelum
- Manfaat
- TERBAIK
- Praktik Terbaik
- Black
- Blog
- tubuh
- Kotak
- membangun
- Bangunan
- panggilan
- Kapasitas
- yang
- Lowongan Kerja
- kasus
- pusat
- juara
- perubahan
- pilihan
- klien
- awan
- kode
- koleksi
- pengumpul
- bergabung
- komponen
- menghitung
- komputer
- konfigurasi
- koneksi
- konsultan
- konsumen
- Konsumen
- Wadah
- Wadah
- mengandung
- terus
- kontrol
- mengkoordinasikan
- Core
- Sesuai
- membuat
- dibuat
- menciptakan
- membuat
- penciptaan
- Surat kepercayaan
- kritis
- sangat penting
- terbaru
- Sekarang
- adat
- pelanggan
- pelanggan
- canggih
- data
- Basis Data
- database
- hari
- dedicated
- lebih dalam
- memberikan
- menyebarkan
- dikerahkan
- penyebaran
- menyebarkan
- Mendesain
- dirancang
- rinci
- terperinci
- rincian
- Deteksi
- mengembangkan
- Pengembang
- pengembang
- Pengembangan
- berbeda
- membedakan
- langsung
- Kepala
- penemuan
- menampilkan
- Buruh pelabuhan
- Tidak
- domain
- turun
- selama
- mudah
- Titik akhir
- energi
- Mesin
- insinyur
- Teknik
- Lingkungan Hidup
- Acara
- contoh
- gembira
- ada
- mengharapkan
- pengalaman
- menyelidiki
- Fitur
- Akhirnya
- keuangan
- jasa keuangan
- Pertama
- cocok
- ARMADA KAPAL
- keluwesan
- fleksibel
- terfokus
- mengikuti
- berikut
- berikut
- format
- berwawasan ke depan
- FRAME
- Kerangka
- fungsi
- fungsionil
- fungsi
- fungsi
- masa depan
- menghasilkan
- menghasilkan
- generasi
- Pemberian
- tujuan
- baik
- GPU
- lulus
- Kelompok
- Grup
- menangani
- Penanganan
- Perangkat keras
- Kesehatan
- mendengar
- membantu
- membantu
- membantu
- di sini
- lebih tinggi
- Seterpercayaapakah Olymp Trade? Kesimpulan
- HTTPS
- manusia
- identitas
- gambar
- melaksanakan
- implementasi
- penting
- memasukkan
- termasuk
- Termasuk
- sendiri-sendiri
- industri
- industri
- Infrastruktur
- inovatif
- memasukkan
- Sisipan
- install
- terpadu
- integrasi
- Intel
- Intelijen
- interaksi
- Antarmuka
- IT
- Pekerjaan
- Jobs
- perjalanan
- kunci
- laboratorium
- jalankan
- peluncuran
- Memimpin
- pengetahuan
- Tingkat
- Perpustakaan
- baris
- Daftar
- pemuatan
- tempat
- lokasi
- mesin
- Mesin belajar
- terbuat
- memelihara
- utama
- MEMBUAT
- pria
- mengelola
- berhasil
- pengelolaan
- pabrik
- peta
- pemetaan
- tersebut
- metode
- Metrik
- minimum
- Misi
- ML
- mobil
- Aplikasi Seluler
- model
- model
- modular
- lebih
- paling
- beberapa
- nama
- NBA
- perlu
- kebutuhan
- jumlah
- olimpiade
- membuka
- beroperasi
- dioptimalkan
- pilihan
- urutan
- Lainnya
- sendiri
- Oxford
- paket
- bagian
- tertentu
- khususnya
- rekan
- Lewat
- bergairah
- pola
- persentase
- prestasi
- melakukan
- perspektif
- bagian
- Platform
- Platform
- bermain
- Puisi
- poin
- mungkin
- kekuasaan
- kuat
- Mempersiapkan
- sebelumnya
- primer
- prinsip
- prioritas
- proses
- proses
- pengolahan
- Prosesor
- menghasilkan
- Produksi
- Produk
- profesional
- proyek
- memberikan
- menyediakan
- tujuan
- jarak
- Mentah
- realtime
- mengenali
- catatan
- arsip
- mengenai
- dapat diandalkan
- permintaan
- membutuhkan
- wajib
- Persyaratan
- membutuhkan
- sumber
- Sumber
- tanggapan
- Hasil
- Run
- berjalan
- Safety/keselamatan
- San
- Skalabilitas
- terukur
- Skala
- skala
- SDK
- aman
- segmen
- Tanpa Server
- layanan
- Layanan
- set
- pengaturan
- Bentuknya
- berbagi
- Kulit
- ditunjukkan
- mirip
- Demikian pula
- Sederhana
- Ukuran
- So
- Perangkat lunak
- perangkat lunak sebagai layanan
- rekayasa Perangkat Lunak
- larutan
- Solusi
- beberapa
- Seseorang
- khusus
- spesifikasi
- kecepatan
- Olahraga
- tumpukan
- Tahap
- standar
- standar
- awal
- mulai
- dimulai
- Negara
- state-of-the-art
- Status
- penyimpanan
- menyimpan
- aliran
- Streaming
- disampaikan
- Kemudian
- musim panas
- mendukung
- Mendukung
- sistem
- pengambilan
- tim
- Teknologi
- pengujian
- karena itu
- Melalui
- TIE
- waktu
- hari ini
- bersama
- Tokyo
- jalur
- Pelacakan
- jenis
- khas
- ucla
- universitas
- University of Oxford
- membuka kunci
- Memperbarui
- menggunakan
- Pengguna
- Memanfaatkan
- nilai
- variasi
- berbagai
- vertikal
- Video
- Video
- penglihatan
- jaringan
- layanan web
- SIAPA
- tanpa
- Kerja
- bekerja
- kerja
- tahun