Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI kompleks menggunakan Amazon SageMaker

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI kompleks menggunakan Amazon SageMaker

Posting ini ditulis bersama oleh Christopher Diaz, Sam Kinard, Jaime Hidalgo dan Daniel Suarez dari CCC Intelligent Solutions.

Pada postingan kali ini kita akan membahas caranya Solusi Cerdas CCC (CCC) digabungkan Amazon SageMaker dengan layanan AWS lainnya untuk membuat solusi khusus yang mampu menghosting jenis model kecerdasan buatan (AI) kompleks yang dibayangkan. CCC adalah platform perangkat lunak sebagai layanan (SaaS) terkemuka untuk properti multi-triliun dolar dan ekonomi asuransi kecelakaan yang menggerakkan operasi untuk perusahaan asuransi, bengkel, pembuat mobil, pemasok suku cadang, pemberi pinjaman, dan banyak lagi. Teknologi cloud CCC menghubungkan lebih dari 30,000 bisnis dengan mendigitalkan alur kerja, perdagangan, dan pengalaman pelanggan yang sangat penting. Sebagai pemimpin tepercaya dalam AI, Internet of Things (IoT), pengalaman pelanggan, serta manajemen jaringan dan alur kerja, CCC menghadirkan inovasi yang membuat kehidupan orang terus maju di saat yang paling penting.

Tantangan

CCC memproses lebih dari $1 triliun transaksi klaim setiap tahunnya. Karena perusahaan terus berevolusi untuk mengintegrasikan AI ke dalam katalog produk yang sudah ada dan yang baru, hal ini memerlukan pendekatan canggih untuk melatih dan menerapkan model ansambel machine learning (ML) multimodal untuk menyelesaikan kebutuhan bisnis yang kompleks. Ini adalah kelas model yang merangkum algoritme kepemilikan dan keahlian domain materi pelajaran yang telah diasah CCC selama bertahun-tahun. Model ini harus dapat menyerap lapisan baru dari data bernuansa dan aturan pelanggan untuk membuat hasil prediksi tunggal. Dalam postingan blog ini, kita akan mempelajari bagaimana CCC memanfaatkan hosting Amazon SageMaker dan layanan AWS lainnya untuk menerapkan atau menghosting beberapa model multi-modal ke dalam pipeline inferensi ansambel.

Seperti yang ditunjukkan pada diagram berikut, ansambel adalah kumpulan dari dua atau lebih model yang diatur untuk dijalankan secara linier atau nonlinier untuk menghasilkan prediksi tunggal. Ketika ditumpuk secara linier, model individual dari ansambel dapat langsung dipanggil untuk prediksi dan kemudian dikonsolidasikan untuk penyatuan. Kadang-kadang, model ansambel juga dapat diimplementasikan sebagai pipa inferensi serial.

Untuk kasus penggunaan kami, pipa ansambel benar-benar nonlinier, seperti yang digambarkan dalam diagram berikut. Pipa ansambel nonlinier secara teoritis adalah grafik asiklik langsung (DAG). Untuk kasus penggunaan kami, pipeline DAG ini memiliki model independen yang dijalankan secara paralel (Layanan B, C) dan model lain yang menggunakan prediksi dari langkah sebelumnya (Layanan D).

Praktik yang muncul dari budaya berbasis penelitian di CCC adalah peninjauan terus menerus terhadap teknologi yang dapat dimanfaatkan untuk memberikan nilai lebih bagi pelanggan. Saat CCC menghadapi tantangan ansambel ini, pimpinan meluncurkan inisiatif proof-of-concept (POC) untuk menilai secara menyeluruh penawaran dari AWS untuk menemukan, khususnya, apakah Amazon SageMaker dan alat AWS lainnya dapat mengelola hosting model AI individual dalam kompleks, nonlinier ansambel.

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Ensemble menjelaskan: Dalam konteks ini, ansambel adalah sekelompok 2 model AI atau lebih yang bekerja sama untuk menghasilkan 1 prediksi keseluruhan.

Pertanyaan yang mendorong penelitian

Dapatkah Amazon SageMaker digunakan untuk menghosting ansambel kompleks model AI yang bekerja sama untuk memberikan satu prediksi keseluruhan? Jika demikian, dapatkah SageMaker menawarkan manfaat lain yang sudah jadi, seperti peningkatan otomatisasi, keandalan, pemantauan, penskalaan otomatis, dan tindakan penghematan biaya?

Menemukan cara alternatif untuk menerapkan model AI CCC menggunakan kemajuan teknologi dari penyedia cloud akan memungkinkan CCC menghadirkan solusi AI ke pasar lebih cepat daripada pesaingnya. Selain itu, memiliki lebih dari satu arsitektur penerapan memberikan fleksibilitas saat menemukan keseimbangan antara biaya dan kinerja berdasarkan prioritas bisnis.

Berdasarkan persyaratan kami, kami menyelesaikan daftar fitur berikut sebagai daftar periksa untuk arsitektur penerapan tingkat produksi:

  • Dukungan untuk ansambel yang kompleks
  • Jaminan uptime untuk semua komponen
  • Penskalaan otomatis yang dapat disesuaikan untuk model AI yang diterapkan
  • Pelestarian input dan output model AI
  • Metrik dan log penggunaan untuk semua komponen
  • Mekanisme penghematan biaya

Dengan sebagian besar solusi AI CCC yang mengandalkan model computer vision, diperlukan arsitektur baru untuk mendukung file gambar dan video yang resolusinya terus meningkat. Ada kebutuhan yang kuat untuk merancang dan mengimplementasikan arsitektur ini sebagai model asinkron.

Setelah siklus penelitian dan upaya pembandingan awal, CCC memutuskan bahwa SageMaker sangat cocok untuk memenuhi sebagian besar persyaratan produksi mereka, terutama jaminan waktu aktif SageMaker yang disediakan untuk sebagian besar komponen inferensinya. Fitur default titik akhir Amazon SageMaker Asynchronous Inference menyimpan input/output di Amazon S3 menyederhanakan tugas menjaga data yang dihasilkan dari ansambel kompleks. Selain itu, dengan setiap model AI dihosting oleh endpoint-nya sendiri, mengelola kebijakan penskalaan otomatis pada level model atau endpoint menjadi lebih mudah. Dengan menyederhanakan manajemen, potensi penghematan biaya dari hal ini adalah tim pengembangan dapat mengalokasikan lebih banyak waktu untuk menyempurnakan kebijakan penskalaan guna meminimalkan penyediaan sumber daya komputasi yang berlebihan.

Setelah memutuskan untuk melanjutkan menggunakan SageMaker sebagai komponen penting arsitektur, kami juga menyadari bahwa SageMaker dapat menjadi bagian dari arsitektur yang lebih besar, dilengkapi dengan banyak layanan lain yang dikelola AWS tanpa server. Pilihan ini diperlukan untuk memfasilitasi orkestrasi tingkat tinggi dan kebutuhan observasi dari arsitektur yang kompleks ini.

Pertama, untuk menghapus batasan ukuran payload dan sangat mengurangi risiko timeout selama skenario lalu lintas tinggi, CCC mengimplementasikan arsitektur yang menjalankan prediksi secara asinkron menggunakan Titik akhir Inferensi Asinkron SageMaker ditambah dengan layanan yang dikelola AWS lainnya sebagai blok penyusun inti. Selain itu, antarmuka pengguna untuk sistem mengikuti pola desain api-dan-lupakan. Dengan kata lain, setelah pengguna mengunggah input mereka ke sistem, tidak ada lagi yang perlu dilakukan. Mereka akan diberi tahu saat prediksi tersedia. Gambar di bawah mengilustrasikan ikhtisar tingkat tinggi dari arsitektur berbasis peristiwa asinkron kami. Di bagian yang akan datang, mari kita selami lebih dalam aliran eksekusi dari arsitektur yang dirancang.

Solusi langkah demi langkah

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.

Langkah 1

Klien membuat permintaan ke Gerbang API AWS titik akhir. Isi permintaan berisi nama layanan AI yang memerlukan prediksi dan metode pemberitahuan yang diinginkan.

Permintaan ini diteruskan ke a Lambda fungsi yang disebut Prediksi Baru, yang tugas utamanya adalah:

  • Periksa apakah layanan yang diminta oleh klien tersedia.
  • Tetapkan ID prediksi unik untuk permintaan tersebut. ID prediksi ini dapat digunakan oleh pengguna untuk memeriksa status prediksi selama keseluruhan proses.
  • Hasilkan Amazon S3 URL yang telah ditandatangani sebelumnya yang harus digunakan pengguna pada langkah berikutnya untuk mengupload konten input dari permintaan prediksi.
  • Buat entri di Amazon DynamoDB dengan informasi permintaan yang diterima.

Fungsi Lambda kemudian akan mengembalikan respons melalui titik akhir API Gateway dengan pesan yang menyertakan ID prediksi yang ditetapkan untuk permintaan dan URL Amazon S3 yang telah ditandatangani sebelumnya.

Langkah 2

Klien dengan aman mengunggah konten input prediksi ke bucket S3 menggunakan URL yang telah ditandatangani sebelumnya yang dihasilkan pada langkah sebelumnya. Konten input bergantung pada layanan AI dan dapat terdiri dari gambar, data tabular, atau kombinasi keduanya.

Langkah 3

Bucket S3 dikonfigurasi untuk memicu peristiwa saat pengguna mengunggah konten input. Notifikasi ini dikirim ke antrean Amazon SQS dan ditangani oleh fungsi Lambda yang dipanggil Masukan Proses. itu Masukan Proses Lambda akan mendapatkan informasi yang terkait dengan ID prediksi tersebut dari DynamoDB untuk mendapatkan nama layanan yang akan dibuat permintaannya.

Layanan ini dapat berupa model AI tunggal, dalam hal ini Masukan Proses Lambda akan membuat permintaan ke titik akhir SageMaker yang menghosting model tersebut (Langkah 3-A), atau dapat berupa layanan AI ansambel yang mana Masukan Proses Lambda akan membuat permintaan ke mesin status dari fungsi step yang menghosting logika ansambel (Langkah 3-B).

Dalam salah satu opsi (model AI tunggal atau layanan ansambel AI), saat prediksi akhir siap, prediksi tersebut akan disimpan di bucket S3 yang sesuai, dan penelepon akan diberi tahu melalui metode yang ditentukan di Langkah 1 (detail lebih lanjut tentang notifikasi di Langkah 4).

Langkah 3-A

Jika ID prediksi dikaitkan dengan satu model AI, maka Masukan Proses Lambda akan membuat permintaan ke titik akhir SageMaker yang melayani model tersebut. Dalam sistem ini, dua jenis titik akhir SageMaker didukung:

  • Asinkron: Para Masukan Proses Lambda membuat permintaan ke titik akhir asinkron SageMaker. Respons langsung mencakup lokasi S3 tempat SageMaker akan menyimpan keluaran prediksi. Permintaan ini asinkron, mengikuti pola tembak-dan-lupakan, dan tidak memblokir alur eksekusi fungsi Lambda.
  • Sinkronis: Para Masukan Proses Lambda membuat permintaan ke titik akhir sinkron SageMaker. Karena ini adalah permintaan sinkron, Input Proses menunggu respons, dan setelah diperoleh, ia menyimpannya di S3 dengan cara analog yang akan dilakukan titik akhir asinkron SageMaker.

Dalam kedua kasus (titik akhir sinkron atau asinkron), prediksi diproses dengan cara yang setara, menyimpan output dalam bucket S3. Saat titik akhir SageMaker asinkron menyelesaikan prediksi, peristiwa Amazon SNS dipicu. Perilaku ini juga direplikasi untuk titik akhir sinkron dengan logika tambahan di fungsi Lambda.

Langkah 3-B

Jika ID prediksi dikaitkan dengan ansambel AI, maka Masukan Proses Lambda akan membuat permintaan ke fungsi step yang terkait dengan AI Ensemble tersebut. Seperti disebutkan di atas, AI Ensemble adalah arsitektur yang didasarkan pada sekelompok model AI yang bekerja sama untuk menghasilkan satu prediksi keseluruhan. Orkestrasi ansambel AI dilakukan melalui fungsi langkah.

Fungsi langkah memiliki satu langkah per layanan AI yang terdiri dari ansambel. Setiap langkah akan memanggil fungsi Lambda yang akan menyiapkan input layanan AI terkait menggunakan kombinasi berbeda dari konten output dari panggilan layanan AI sebelumnya dari langkah sebelumnya. Itu kemudian membuat panggilan ke setiap layanan AI yang dalam konteks ini, dapat menjadi model AI tunggal atau ansambel AI lainnya.

Fungsi Lambda yang sama, disebut DapatkanTransformCall digunakan untuk menangani prediksi perantara AI Ensemble yang digunakan di seluruh fungsi langkah, tetapi dengan parameter input yang berbeda untuk setiap langkah. Masukan ini menyertakan nama layanan AI yang akan dipanggil. Ini juga mencakup definisi pemetaan untuk membangun input untuk layanan AI yang ditentukan. Hal ini dilakukan dengan menggunakan sintaks khusus yang dapat didekode oleh Lambda, yang secara ringkas, adalah kamus JSON di mana nilainya harus diganti dengan konten dari prediksi AI sebelumnya. Lambda akan mengunduh prediksi sebelumnya ini dari Amazon S3.

Dalam setiap langkah, DapatkanTransformCall Lambda membaca dari Amazon S3 keluaran sebelumnya yang diperlukan untuk membangun masukan dari layanan AI yang ditentukan. Ini kemudian akan memanggil Prediksi Baru Kode Lambda sebelumnya digunakan di Langkah 1 dan menyediakan nama layanan, metode panggilan balik (“fungsi langkah”), dan token yang diperlukan untuk panggilan balik dalam payload permintaan, yang kemudian disimpan di DynamoDB sebagai rekaman prediksi baru. Lambda juga menyimpan input yang dibuat dari tahapan tersebut dalam bucket S3. Bergantung pada apakah tahapan tersebut merupakan model AI tunggal atau ansambel AI, Lambda membuat permintaan ke titik akhir SageMaker atau fungsi langkah lain yang mengelola ansambel AI yang merupakan dependensi ansambel induk.

Setelah permintaan dibuat, fungsi step memasuki status pending hingga menerima token panggilan balik yang menunjukkan bahwa ia dapat berpindah ke tahapan berikutnya. Tindakan pengiriman token callback dilakukan oleh fungsi Lambda yang dipanggil pemberitahuan (lebih detail di Langkah 4) saat prediksi perantara sudah siap. Proses ini diulangi untuk setiap tahap yang ditentukan dalam fungsi langkah hingga prediksi akhir siap.

Langkah 4

Saat prediksi siap dan disimpan di bucket S3, notifikasi SNS dipicu. Peristiwa ini dapat dipicu dengan berbagai cara bergantung pada alurnya:

  1. Secara otomatis saat titik akhir asinkron SageMaker menyelesaikan prediksi.
  2. Sebagai langkah terakhir dari fungsi langkah.
  3. By Masukan Proses or DapatkanTransformCall Lambda saat titik akhir SageMaker sinkron telah menampilkan prediksi.

Untuk B dan C, kami membuat pesan SNS yang mirip dengan yang dikirim otomatis oleh A.

Fungsi Lambda yang disebut notifikasi berlangganan ke topik SNS ini. Notifikasi Lambda akan mendapatkan informasi terkait ID prediksi dari DynamoDB, memperbarui entri dengan nilai status menjadi "selesai" atau "kesalahan", dan melakukan tindakan yang diperlukan bergantung pada mode panggilan balik yang disimpan dalam catatan database.

Jika prediksi ini adalah prediksi perantara ansambel AI, seperti yang dijelaskan pada langkah 3-B, mode panggilan balik yang terkait dengan prediksi ini akan menjadi "fungsi langkah", dan rekaman basis data akan memiliki token panggilan balik yang terkait dengan langkah spesifik di fungsi langkah. Notifikasi Lambda akan melakukan panggilan ke AWS Step Functions API menggunakan metode "SendTaskSuccess" atau "SendTaskFailure". Ini akan memungkinkan fungsi langkah untuk melanjutkan ke langkah berikutnya atau keluar.

Jika prediksi adalah hasil akhir dari fungsi langkah dan mode panggilan balik adalah "Webhook" [atau email, perantara pesan (Kafka), dll.], maka pemberitahuan Lambda akan memberi tahu klien dengan cara yang ditentukan. Kapan saja, pengguna dapat meminta status prediksi mereka. Permintaan harus menyertakan ID prediksi yang ditetapkan pada Langkah 1 dan mengarah ke URL yang benar dalam API Gateway untuk merutekan permintaan ke fungsi Lambda yang disebut hasil.

Hasilnya Lambda akan membuat permintaan ke DynamoDB, mendapatkan status permintaan dan mengembalikan informasi ke pengguna. Jika status prediksi adalah kesalahan, maka detail yang relevan tentang kegagalan akan disertakan dalam respons. Jika status prediksi adalah sukses, URL pra-tanda tangan S3 akan dikembalikan kepada pengguna untuk mengunduh konten prediksi.

Hasil

Hasil pengujian kinerja awal menjanjikan dan mendukung kasus CCC untuk memperluas penerapan arsitektur penerapan baru ini.

Pengamatan penting:

  • Pengujian mengungkapkan kekuatan dalam memproses permintaan batch atau serentak dengan throughput tinggi dan tingkat kegagalan 0 persen selama skenario lalu lintas tinggi.
  • Antrean pesan memberikan stabilitas dalam sistem selama aliran permintaan tiba-tiba hingga pemicu penskalaan dapat menyediakan sumber daya komputasi tambahan. Saat meningkatkan lalu lintas sebanyak 3x, latensi permintaan rata-rata hanya meningkat sebesar 5 persen.
  • Harga stabilitas meningkat latensi karena overhead komunikasi antara berbagai komponen sistem. Saat lalu lintas pengguna berada di atas ambang dasar, latensi tambahan dapat dikurangi sebagian dengan menyediakan lebih banyak sumber daya komputasi jika kinerja lebih diprioritaskan daripada biaya.
  • Titik akhir inferensi asinkron SageMaker memungkinkan jumlah instans diskalakan ke nol sambil menjaga titik akhir tetap aktif untuk menerima permintaan. Fungsionalitas ini memungkinkan penerapan untuk terus berjalan tanpa menimbulkan biaya komputasi dan meningkatkan skala dari nol saat diperlukan dalam dua skenario: penerapan layanan yang digunakan di lingkungan pengujian yang lebih rendah dan penerapan yang memiliki lalu lintas minimal tanpa memerlukan pemrosesan segera.

Kesimpulan

Seperti yang diamati selama proses POC, desain inovatif yang dibuat bersama oleh CCC dan AWS memberikan landasan yang kuat untuk menggunakan Amazon SageMaker dengan layanan terkelola AWS lainnya untuk menghosting ansambel AI multimodal yang kompleks dan mengatur pipeline inferensi secara efektif dan mulus. Dengan memanfaatkan fungsionalitas out-of-the-box Amazon SageMaker seperti Asynchronous Inference, CCC memiliki lebih banyak kesempatan untuk fokus pada tugas khusus bisnis penting. Dalam semangat budaya CCC yang digerakkan oleh penelitian, arsitektur baru ini akan terus berkembang seiring CCC memimpin, bersama AWS, dalam mengeluarkan solusi AI baru yang kuat untuk klien.

Untuk langkah detail tentang cara membuat, memanggil, dan memantau titik akhir inferensi asinkron, lihat dokumentasi, yang juga mengandung a buku catatan sampel untuk membantu Anda memulai. Untuk informasi harga, kunjungi Harga Amazon SageMaker.

Untuk contoh penggunaan inferensi asinkron dengan data tidak terstruktur seperti visi komputer dan pemrosesan bahasa alami (NLP), lihat Jalankan inferensi visi komputer pada video besar dengan titik akhir asinkron Amazon SageMaker dan Tingkatkan penelitian bernilai tinggi dengan Hugging Face dan titik akhir inferensi asinkron Amazon SageMaker, Masing-masing.


Tentang Penulis

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Christopher Diazo adalah Lead R&D Engineer di CCC Intelligent Solutions. Sebagai anggota tim R&D, dia telah mengerjakan berbagai proyek mulai dari perkakas ETL, pengembangan web backend, berkolaborasi dengan peneliti untuk melatih model AI pada sistem terdistribusi, dan memfasilitasi penyampaian layanan AI baru antara tim riset dan operasi. Fokusnya baru-baru ini adalah meneliti solusi perkakas cloud untuk meningkatkan berbagai aspek siklus hidup pengembangan model AI perusahaan. Di waktu luangnya, dia senang mencoba restoran baru di kampung halamannya di Chicago dan mengumpulkan set LEGO sebanyak yang bisa ditampung di rumahnya. Christopher memperoleh gelar Bachelor of Science di bidang Ilmu Komputer dari Northeastern Illinois University.

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Pemenang Penghargaan Emmy Sam Kinard adalah Manajer Senior Rekayasa Perangkat Lunak di CCC Intelligent Solutions. Berbasis di Austin, Texas, dia berselisih dengan AI Runtime Team, yang bertanggung jawab untuk melayani produk AI CCC dengan ketersediaan tinggi dan skala besar. Di waktu luangnya, Sam menikmati kurang tidur karena dua anaknya yang luar biasa. Sam memiliki gelar Bachelor of Science di bidang Ilmu Komputer dan Bachelor of Science di bidang Matematika dari University of Texas di Austin.

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Jaime Hidalgo adalah Insinyur Sistem Senior di CCC Intelligent Solutions. Sebelum bergabung dengan tim riset AI, dia memimpin migrasi global perusahaan ke Arsitektur Layanan Mikro, merancang, membangun, dan mengotomatiskan infrastruktur di AWS untuk mendukung penerapan produk dan layanan cloud. Saat ini, dia membangun dan mendukung klaster pusat data di tempat yang dibangun untuk pelatihan AI dan juga merancang dan membangun solusi cloud untuk penelitian dan penerapan AI di masa depan perusahaan.

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Daniel Suarez adalah Insinyur Ilmu Data di CCC Intelligent Solutions. Sebagai anggota tim Teknik AI, dia mengerjakan otomatisasi dan persiapan Model AI dalam produksi, evaluasi, dan pemantauan metrik serta aspek lain dari operasi ML. Daniel menerima gelar Magister Ilmu Komputer dari Institut Teknologi Illinois dan Magister dan Sarjana Teknik Telekomunikasi dari Universidad Politecnica de Madrid.

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Arunprasath Shankar adalah Arsitek Solusi Spesialis AI/ML Senior dengan AWS, membantu pelanggan global menskalakan solusi AI mereka secara efektif dan efisien di cloud. Di waktu luangnya, Arun senang menonton film sci-fi dan mendengarkan musik klasik.

Bagaimana CCC Intelligent Solutions menciptakan pendekatan khusus untuk menghosting model AI yang kompleks menggunakan Amazon SageMaker PlatoBlockchain Data Intelligence. Pencarian Vertikal. Ai.Justin McWhirter adalah Manajer Arsitek Solusi di AWS. Dia bekerja dengan tim Arsitek Solusi luar biasa yang membantu pelanggan mendapatkan pengalaman positif saat mengadopsi platform AWS. Saat tidak bekerja, Justin menikmati bermain video game dengan kedua putranya, hoki es, dan off-road dengan Jeep-nya.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS