Bagaimana Amazon Search mengurangi biaya inferensi ML sebesar 85% dengan AWS Inferentia

Mesin pencari produk Amazon mengindeks miliaran produk, melayani ratusan juta pelanggan di seluruh dunia, dan merupakan salah satu layanan yang paling banyak digunakan di dunia. Tim Amazon Search mengembangkan teknologi machine learning (ML) yang mendukung Amazon.com mesin pencari dan membantu pelanggan mencari dengan mudah. Untuk memberikan pengalaman pelanggan yang luar biasa dan beroperasi pada skala besar yang dibutuhkan oleh Amazon.com mesin pencari, tim ini selalu mencari cara untuk membangun sistem yang lebih hemat biaya dengan persyaratan latensi dan throughput waktu nyata. Tim terus-menerus mengeksplorasi perangkat keras dan kompiler yang dioptimalkan untuk pembelajaran mendalam guna mempercepat pelatihan dan inferensi model, sekaligus mengurangi biaya operasional secara menyeluruh.

Dalam posting ini, kami menjelaskan bagaimana Amazon Search menggunakan Inferensi AWS, tujuan akselerator performa tinggi yang dibuat oleh AWS untuk mempercepat beban kerja inferensi pembelajaran mendalam. Tim menjalankan inferensi ML latensi rendah dengan model NLP berbasis Transformer di berbasis AWS Inferentia Cloud komputasi elastis Amazon (Amazon EC2) Inf1, dan menghemat hingga 85% dalam biaya infrastruktur sambil mempertahankan kinerja throughput dan latensi yang kuat.

Pembelajaran mendalam untuk duplikat dan prediksi niat kueri

Mencari di Amazon Marketplace adalah masalah multi-tugas, multi-modal, berurusan dengan beberapa input seperti ASIN (Amazon Standard Identification Number, 10 digit nomor alfanumerik yang secara unik mengidentifikasi produk), gambar produk, deskripsi tekstual, dan kueri. Untuk menciptakan pengalaman pengguna yang disesuaikan, prediksi dari banyak model digunakan untuk berbagai aspek penelusuran. Ini merupakan tantangan karena sistem pencarian memiliki ribuan model dengan puluhan ribu transaksi per detik (TPS) pada beban puncak. Kami fokus pada dua komponen dari pengalaman itu:

  • Prediksi duplikat yang dirasakan pelanggan โ€“ Untuk menampilkan daftar produk paling relevan yang cocok dengan kueri pengguna, penting untuk mengidentifikasi produk yang sulit dibedakan oleh pelanggan
  • Prediksi niat kueri โ€“ Untuk menyesuaikan halaman pencarian dan tata letak produk agar lebih sesuai dengan apa yang dicari pelanggan, penting untuk memprediksi maksud dan jenis kueri pengguna (misalnya, kueri terkait media, kueri bantuan, dan jenis kueri lainnya)

Kedua prediksi tersebut dibuat dengan menggunakan arsitektur model Transformer yaitu model berbasis BERT. Faktanya, keduanya berbagi model berbasis BERT yang sama sebagai basis, dan masing-masing menumpuk kepala klasifikasi/regresi di atas tulang punggung ini.

Prediksi duplikat mengambil berbagai fitur tekstual untuk sepasang produk yang dievaluasi sebagai input (seperti jenis produk, judul, deskripsi, dan sebagainya) dan dihitung secara berkala untuk kumpulan data besar. Model ini dilatih dari ujung ke ujung secara multi-tugas. Pekerjaan Pemrosesan Amazon SageMaker digunakan untuk menjalankan beban kerja batch ini secara berkala untuk mengotomatiskan peluncurannya dan hanya membayar untuk waktu pemrosesan yang digunakan. Untuk kasus penggunaan beban kerja batch ini, persyaratan untuk throughput inferensi adalah 8,800 total TPS.

Prediksi maksud menggunakan kueri tekstual pengguna sebagai masukan dan diperlukan secara real time untuk melayani lalu lintas harian secara dinamis dan meningkatkan pengalaman pengguna di Amazon Marketplace. Model dilatih pada tujuan klasifikasi multi-kelas. Model ini kemudian di-deploy pada Layanan Kontainer Amazon Elastic (Amazon ECS), yang memungkinkan penskalaan otomatis cepat dan definisi dan manajemen penyebaran yang mudah. Karena ini adalah kasus penggunaan waktu nyata, latensi P99 harus di bawah 10 milidetik untuk memastikan pengalaman pengguna yang menyenangkan.

AWS Inferentia dan AWS Neuron SDK

Instance EC2 Inf1 didukung oleh AWS Inferentia, tujuan akselerator ML pertama yang dibuat oleh AWS untuk mempercepat beban kerja inferensi pembelajaran mendalam. Instans Inf1 menghasilkan throughput hingga 2.3 kali lebih tinggi dan biaya per inferensi hingga 70% lebih rendah daripada instans EC2 berbasis GPU yang sebanding. Anda dapat terus melatih model Anda menggunakan kerangka kerja pilihan Anda (PyTorch, TensorFlow, MXNet), lalu menerapkannya dengan mudah di AWS Inferentia untuk mendapatkan manfaat dari pengoptimalan kinerja bawaan. Anda dapat menerapkan berbagai jenis model menggunakan instans Inf1, mulai dari pengenalan gambar, deteksi objek, pemrosesan bahasa alami (NLP), dan model rekomendasi modern.

Neuron AWS adalah software development kit (SDK) yang terdiri dari compiler, runtime, dan alat pembuatan profil yang mengoptimalkan kinerja inferensi ML dari instans EC2 Inf1. Neuron terintegrasi secara bawaan dengan kerangka kerja ML populer seperti TensorFlow dan PyTorch. Oleh karena itu, Anda dapat menerapkan model pembelajaran mendalam di AWS Inferentia dengan API familiar yang sama yang disediakan oleh kerangka kerja pilihan Anda, dan mendapat manfaat dari peningkatan kinerja dan biaya per inferensi terendah di cloud.

Sejak diluncurkan, Neuron SDK terus meningkatkan cakupan model yang didukungnya sambil terus meningkatkan kinerja dan mengurangi biaya inferensi. Ini termasuk model NLP (BERT), model klasifikasi gambar (ResNet, VGG), dan model deteksi objek (OpenPose dan SSD).

Terapkan pada instans Inf1 untuk latensi rendah, throughput tinggi, dan penghematan biaya

Tim Amazon Search ingin menghemat biaya sekaligus memenuhi persyaratan throughput tinggi mereka pada prediksi duplikasi, dan persyaratan latensi rendah pada prediksi maksud kueri. Mereka memilih untuk menerapkan pada instans Inf1 berbasis AWS Inferentia dan tidak hanya memenuhi persyaratan kinerja tinggi, tetapi juga menghemat biaya inferensi hingga 85%.

Prediksi duplikat yang dirasakan pelanggan

Sebelum penggunaan Inf1, layanan khusus Amazon ESDM cluster berjalan menggunakan instans berbasis CPU. Tanpa mengandalkan akselerasi perangkat keras, sejumlah besar instans diperlukan untuk memenuhi persyaratan throughput yang tinggi yaitu 8,800 total transaksi per detik. Tim beralih ke instans inf1.6xlarge, masing-masing dengan 4 akselerator AWS Inferentia, dan 16 NeuronCore (4 core per chip AWS Inferentia). Mereka menelusuri model berbasis Transformer untuk satu NeuronCore dan memuat satu mode per NeuronCore untuk memaksimalkan throughput. Dengan memanfaatkan 16 NeuronCore yang tersedia, mereka menurunkan biaya inferensi sebesar 85% (berdasarkan harga on-demand Amazon EC2 publik saat ini).

Prediksi niat kueri

Mengingat persyaratan latensi P99 10 milidetik atau kurang, tim memuat model ke setiap NeuronCore yang tersedia pada instans inf1.6xlarge. Anda dapat dengan mudah melakukan ini dengan PyTorch Neuron menggunakan obor.neuron.DataParalel API. Dengan penerapan Inf1, latensi model adalah 3 milidetik, latensi ujung ke ujung sekitar 10 milidetik, dan throughput maksimum pada beban puncak mencapai 16,000 TPS.

Mulai dengan kompilasi sampel dan kode penerapan

Berikut adalah beberapa contoh kode untuk membantu Anda memulai instans Inf1 dan mewujudkan kinerja dan manfaat biaya seperti tim Amazon Search. Kami menunjukkan cara mengkompilasi dan melakukan inferensi dengan model PyTorch, menggunakan Neuron PyTorch.

Pertama, model dikompilasi dengan torch.neuron.trace():

m = torch.jit.load(f="./cpu_model.pt", map_location=torch.device('cpu'))
m.eval()
model_neuron = torch.neuron.trace(
    m,
    inputs,
    compiler_workdir="work_" + str(cores) + "_" + str(batch_size),
    compiler_args=[
        '--fp32-cast=all', '--neuroncore-pipeline-cores=' + str(cores)
    ])
model_neuron.save("m5_batch" + str(batch_size) + "_cores" + str(cores) +
                  "_with_extra_op_and_fp32cast.pt")

Untuk daftar lengkap kemungkinan argumen untuk trace metode, lihat PyTorch-Neuron melacak Python API. Seperti yang terlihat, argumen penyusun dapat diteruskan ke torch.neuron API secara langsung. Semua operator FP32 dilemparkan ke BF16 with --fp32-cast=all, memberikan kinerja tertinggi sambil mempertahankan rentang dinamis. Lebih banyak opsi casting tersedia untuk memungkinkan Anda mengontrol kinerja untuk memodelkan trade-off presisi. Model yang digunakan untuk kedua kasus penggunaan dikompilasi untuk satu NeuronCore (tidak ada perpipaan).

Kami kemudian memuat model pada Inferentia dengan torch.jit.load, dan menggunakannya untuk prediksi. Itu Waktu kerja neuron secara otomatis memuat model ke NeuronCores.

cm_cpd_preprocessing_jit = torch.jit.load(f=CM_CPD_PROC,
                                          map_location=torch.device('cpu'))
cm_cpd_preprocessing_jit.eval()
m5_model = torch.jit.load(f=CM_CPD_M5)
m5_model.eval()

input = get_input()
with torch.no_grad():
    batch_cm_cpd = cm_cpd_preprocessing_jit(input)
    input_ids, attention_mask, position_ids, valid_length, token_type_ids = (
        batch_cm_cpd['input_ids'].type(torch.IntTensor),
        batch_cm_cpd['attention_mask'].type(torch.HalfTensor),
        batch_cm_cpd['position_ids'].type(torch.IntTensor),
        batch_cm_cpd['valid_length'].type(torch.IntTensor),
        batch_cm_cpd['token_type_ids'].type(torch.IntTensor))
    model_res = m5_model(input_ids, attention_mask, position_ids, valid_length,
                         token_type_ids)

Kesimpulan

Tim Amazon Search mampu mengurangi biaya inferensi mereka sebesar 85% menggunakan instans Inf1 berbasis AWS Inferentia, di bawah lalu lintas padat dan persyaratan kinerja yang menuntut. AWS Inferentia dan Neuron SDK memberi tim fleksibilitas untuk mengoptimalkan proses penerapan secara terpisah dari pelatihan, dan mengedepankan kurva pembelajaran yang dangkal melalui alat yang lengkap dan API kerangka kerja yang sudah dikenal.

Anda dapat membuka kunci kinerja dan manfaat biaya dengan memulai dengan kode contoh yang disediakan di pos ini. Juga, periksa ujung ke ujung tutorial untuk menjalankan model ML di Inferentia dengan PyTorch dan TensorFlow.


Tentang penulis

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Joรฃo Moura adalah Arsitek Solusi Spesialis AI/ML di Amazon Web Services. Dia sebagian besar berfokus pada kasus penggunaan NLP dan membantu pelanggan mengoptimalkan pelatihan dan penerapan model pembelajaran mendalam. Dia juga merupakan pendukung aktif perangkat keras khusus ML dan solusi ML kode rendah.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Wei Qi Zhang adalah Manajer Rekayasa Perangkat Lunak di Search M5, tempat dia bekerja untuk memproduksi model skala besar untuk aplikasi pembelajaran mesin Amazon. Minatnya meliputi pencarian informasi dan infrastruktur pembelajaran mesin.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Jason Carlson adalah Insinyur Perangkat Lunak untuk mengembangkan alur pembelajaran mesin guna membantu mengurangi jumlah tayangan penelusuran yang dicuri karena duplikat yang dirasakan pelanggan. Dia sebagian besar bekerja dengan Apache Spark, AWS, dan PyTorch untuk membantu menyebarkan dan memberi makan/memproses data untuk model ML. Di waktu luangnya, dia suka membaca dan berlari.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Shaohui Xi adalah SDE di tim Search Query Understanding Infra. Dia memimpin upaya untuk membangun layanan inferensi online deep learning berskala besar dengan latensi rendah dan ketersediaan tinggi. Di luar pekerjaan, ia menikmati bermain ski dan menjelajahi makanan enak.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Zhuo Qi Zhang adalah Software Development Engineer di tim Search Query Understanding Infra. Dia bekerja membangun kerangka kerja penyajian model untuk meningkatkan latensi dan throughput untuk layanan inferensi online pembelajaran mendalam. Di luar pekerjaan, dia suka bermain basket, snowboarding, dan mengemudi.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Hao Wei Sun adalah seorang insinyur perangkat lunak di tim Search Query Understanding Infra. Dia bekerja merancang API dan infrastruktur yang mendukung layanan inferensi online pembelajaran mendalam. Minatnya meliputi desain API layanan, penyiapan infrastruktur, dan pemeliharaan. Di luar pekerjaan, dia suka berlari, hiking, dan bepergian.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Jaspreet Singh adalah Ilmuwan Terapan di tim M5, di mana ia bekerja pada model fondasi skala besar untuk meningkatkan pengalaman berbelanja pelanggan. Minat penelitiannya meliputi pembelajaran multi-tugas, pencarian informasi, dan pembelajaran representasi.

How Amazon Search reduced ML inference costs by 85% with AWS Inferentia PlatoBlockchain Data Intelligence. Vertical Search. Ai.Shruti Koparkar adalah Manajer Pemasaran Produk Senior di AWS. Dia membantu pelanggan mengeksplorasi, mengevaluasi, dan mengadopsi infrastruktur komputasi yang dipercepat EC2 untuk kebutuhan pembelajaran mesin mereka.

Stempel Waktu:

Lebih dari Pembelajaran Mesin AWS