Saat menerapkan model Deep Learning dalam skala besar, sangat penting untuk memanfaatkan perangkat keras yang mendasarinya secara efektif guna memaksimalkan kinerja dan manfaat biaya. Untuk beban kerja produksi yang membutuhkan throughput tinggi dan latensi rendah, pemilihan Cloud komputasi elastis Amazon (EC2), tumpukan penyajian model, dan arsitektur penyebaran sangat penting. Arsitektur yang tidak efisien dapat menyebabkan pemanfaatan akselerator yang tidak optimal dan biaya produksi yang terlalu tinggi.
Dalam postingan ini kami memandu Anda melalui proses penerapan server model FastAPI di perangkat AWS Inferentia (ditemukan di Amazon EC2 inf1 dan AmazonEC inf2 contoh). Kami juga mendemonstrasikan hosting model sampel yang diterapkan secara paralel di semua NeuronCore untuk pemanfaatan perangkat keras maksimum.
Ikhtisar solusi
FastAPI adalah kerangka kerja web sumber terbuka untuk melayani aplikasi Python yang jauh lebih cepat daripada kerangka kerja tradisional seperti Flask dan Django. Ini menggunakan Antarmuka Gerbang Server Asinkron (ASGI) bukan yang banyak digunakan Antarmuka Gerbang Server Web (WSGI). ASGI memproses permintaan yang masuk secara asinkron berbeda dengan WSGI yang memproses permintaan secara berurutan. Ini menjadikan FastAPI pilihan ideal untuk menangani permintaan sensitif latensi. Anda dapat menggunakan FastAPI untuk menerapkan server yang menghosting titik akhir pada instans Inferentia (Inf1/Inf2) yang mendengarkan permintaan klien melalui port yang ditentukan.
Tujuan kami adalah mencapai kinerja tertinggi dengan biaya terendah melalui penggunaan perangkat keras secara maksimal. Ini memungkinkan kami untuk menangani lebih banyak permintaan inferensi dengan lebih sedikit akselerator. Setiap perangkat AWS Inferentia1 berisi empat NeuronCores-v1 dan setiap perangkat AWS Inferentia2 berisi dua NeuronCores-v2. Itu Neuron AWS SDK memungkinkan kami menggunakan masing-masing NeuronCores secara paralel, yang memberi kami kontrol lebih besar dalam memuat dan menyimpulkan empat model atau lebih secara paralel tanpa mengorbankan throughput.
Dengan FastAPI, Anda memiliki pilihan server web Python (gunicorn, Uvicorn, hiperkorn, Daphne). Server web ini menyediakan dan lapisan abstraksi di atas model Machine Learning (ML) yang mendasarinya. Klien yang meminta memiliki keuntungan karena tidak menyadari model yang dihosting. Klien tidak perlu mengetahui nama atau versi model yang telah diterapkan di bawah server; nama titik akhir sekarang hanyalah proxy untuk fungsi yang memuat dan menjalankan model. Sebaliknya, dalam alat penyajian khusus framework, seperti TensorFlow Serving, nama dan versi model adalah bagian dari nama titik akhir. Jika model berubah di sisi server, klien harus mengetahui dan mengubah panggilan API-nya ke titik akhir yang baru. Oleh karena itu, jika Anda terus mengembangkan model versi, seperti dalam kasus pengujian A/B, menggunakan server web Python generik dengan FastAPI adalah cara yang nyaman untuk menyajikan model, karena nama titik akhir bersifat statis.
Peran server ASGI adalah menelurkan sejumlah pekerja tertentu yang mendengarkan permintaan klien dan menjalankan kode inferensi. Kemampuan penting dari server adalah memastikan jumlah pekerja yang diminta tersedia dan aktif. Jika pekerja terbunuh, server harus meluncurkan pekerja baru. Dalam konteks ini, server dan pekerja dapat diidentifikasi dengan ID proses Unix (PID) mereka. Untuk posting ini, kami menggunakan a hiperkorn server, yang merupakan pilihan populer untuk server web Python.
Dalam postingan ini, kami membagikan praktik terbaik untuk menerapkan model pembelajaran mendalam dengan FastAPI di AWS Inferentia NeuronCores. Kami menunjukkan bahwa Anda dapat menerapkan beberapa model pada NeuronCores terpisah yang dapat dipanggil secara bersamaan. Pengaturan ini meningkatkan throughput karena beberapa model dapat disimpulkan secara bersamaan dan pemanfaatan NeuronCore dioptimalkan sepenuhnya. Kode dapat ditemukan di GitHub repo. Gambar berikut menunjukkan arsitektur cara menyiapkan solusi pada instans EC2 Inf2.
Arsitektur yang sama berlaku untuk tipe instans EC2 Inf1 kecuali memiliki empat inti. Sehingga mengubah diagram arsitektur sedikit.
AWS Inferentia NeuronCore
Mari gali lebih dalam alat yang disediakan oleh AWS Neuron untuk terlibat dengan NeuronCores. Tabel berikut menampilkan jumlah NeuronCore di setiap jenis instans Inf1 dan Inf2. vCPU host dan memori sistem dibagikan di semua NeuronCore yang tersedia.
Ukuran Instance | # Akselerator Inferensia | # NeuronCores-v1 | vCPU | Memori (GiB) |
Inf1.xlarge | 1 | 4 | 4 | 8 |
Inf1.2xbesar | 1 | 4 | 8 | 16 |
Inf1.6xbesar | 4 | 16 | 24 | 48 |
Inf1.24xbesar | 16 | 64 | 96 | 192 |
Ukuran Instance | # Akselerator Inferensia | # NeuronCores-v2 | vCPU | Memori (GiB) |
Inf2.xlarge | 1 | 2 | 4 | 32 |
Inf2.8xbesar | 1 | 2 | 32 | 32 |
Inf2.24xbesar | 6 | 12 | 96 | 192 |
Inf2.48xbesar | 12 | 24 | 192 | 384 |
Instans Inf2 berisi NeuronCores-v2 baru dibandingkan dengan NeuronCore-v1 dalam instans Inf1. Meskipun inti lebih sedikit, instans ini mampu menawarkan throughput 4x lebih tinggi dan latensi 10x lebih rendah daripada instans Inf1. Instans Inf2 ideal untuk beban kerja Deep Learning seperti AI Generatif, Model Bahasa Besar (LLM) dalam keluarga OPT/GPT, dan transformator visi seperti Stable Diffusion.
Neuron Runtime bertanggung jawab untuk menjalankan model pada perangkat Neuron. Neuron Runtime menentukan NeuronCore mana yang akan menjalankan model mana dan bagaimana menjalankannya. Konfigurasi Neuron Runtime dikendalikan melalui penggunaan variabel lingkungan pada tingkat proses. Secara default, ekstensi kerangka Neuron akan menangani konfigurasi Neuron Runtime atas nama pengguna; namun, konfigurasi eksplisit juga memungkinkan untuk mencapai perilaku yang lebih optimal.
Dua variabel lingkungan yang populer adalah NEURON_RT_NUM_CORES
dan NEURON_RT_VISIBLE_CORES
. Dengan variabel lingkungan ini, proses Python dapat dikaitkan dengan NeuronCore. Dengan NEURON_RT_NUM_CORES
, sejumlah inti tertentu dapat dicadangkan untuk suatu proses, dan dengan NEURON_RT_VISIBLE_CORES
, berbagai NeuronCore dapat dipesan. Misalnya, NEURON_RT_NUM_CORES=2 myapp.py
akan memesan dua core dan NEURON_RT_VISIBLE_CORES=โ0-2โ myapp.py
akan mencadangkan nol, satu, dan dua inti untuk myapp.py
. Anda juga dapat memesan NeuronCore di seluruh perangkat (chip AWS Inferentia). Jadi, NEURON_RT_VISIBLE_CORES=โ0-5โ myapp.py
akan mencadangkan empat inti pertama device1
dan satu inti aktif device2
dalam tipe instans Ec2 Inf1. Demikian pula, pada jenis instans EC2 Inf2, konfigurasi ini akan mencadangkan dua inti device1
dan device2
dan satu inti aktif device3
. Tabel berikut merangkum konfigurasi variabel-variabel ini.
Nama | Deskripsi Produk | Tipe | Nilai yang Diharapkan | Nilai default | Versi RT |
NEURON_RT_VISIBLE_CORES |
Rentang NeuronCore spesifik yang dibutuhkan oleh proses | Rentang bilangan bulat (seperti 1-3) | Setiap nilai atau rentang antara 0 hingga Max NeuronCore dalam sistem | None | 2.0 + |
NEURON_RT_NUM_CORES |
Jumlah NeuronCore yang dibutuhkan oleh proses | Bilangan bulat | Nilai dari 1 hingga Max NeuronCore dalam sistem | 0, yang diartikan sebagai "semua" | 2.0 + |
Untuk daftar semua variabel lingkungan, lihat Konfigurasi Waktu Proses Neuron.
Secara default, saat memuat model, model dimuat ke NeuronCore 0 lalu NeuronCore 1 kecuali secara eksplisit dinyatakan oleh variabel lingkungan sebelumnya. Seperti yang ditentukan sebelumnya, NeuronCores berbagi vCPU host dan memori sistem yang tersedia. Oleh karena itu, model yang diterapkan pada setiap NeuronCore akan bersaing untuk mendapatkan sumber daya yang tersedia. Ini tidak akan menjadi masalah jika modelnya menggunakan NeuronCores secara luas. Tetapi jika model hanya berjalan sebagian di NeuronCores dan sisanya di vCPU host, maka mempertimbangkan ketersediaan CPU per NeuronCore menjadi penting. Ini juga memengaruhi pilihan instance.
Tabel berikut menunjukkan jumlah vCPU host dan memori sistem yang tersedia per model jika satu model diterapkan ke setiap NeuronCore. Bergantung pada penggunaan NeuronCore, vCPU, dan penggunaan memori aplikasi Anda, disarankan untuk menjalankan pengujian untuk mengetahui konfigurasi mana yang paling berperforma baik untuk aplikasi Anda. Itu Alat Neuron Top dapat membantu dalam memvisualisasikan penggunaan inti dan penggunaan memori perangkat dan host. Berdasarkan metrik ini, keputusan yang tepat dapat dibuat. Kami mendemonstrasikan penggunaan Neuron Top di akhir blog ini.
Ukuran Instance | # Akselerator Inferensia | # Model | vCPU/Model | Memori/Model (GiB) |
Inf1.xlarge | 1 | 4 | 1 | 2 |
Inf1.2xbesar | 1 | 4 | 2 | 4 |
Inf1.6xbesar | 4 | 16 | 1.5 | 3 |
Inf1.24xbesar | 16 | 64 | 1.5 | 3 |
Ukuran Instance | # Akselerator Inferensia | # Model | vCPU/Model | Memori/Model (GiB) |
Inf2.xlarge | 1 | 2 | 2 | 8 |
Inf2.8xbesar | 1 | 2 | 16 | 64 |
Inf2.24xbesar | 6 | 12 | 8 | 32 |
Inf2.48xbesar | 12 | 24 | 8 | 32 |
Untuk menguji sendiri fitur Neuron SDK, lihat yang terbaru Kemampuan neuron untuk PyTorch.
Pengaturan sistem
Berikut ini adalah pengaturan sistem yang digunakan untuk solusi ini:
Siapkan solusinya
Ada beberapa hal yang perlu kita lakukan untuk menyiapkan solusinya. Mulailah dengan membuat peran IAM yang akan diasumsikan oleh instans EC2 Anda yang memungkinkannya untuk didorong dan ditarik Registry Kontainer Elastis Amazon.
Langkah 1: Siapkan peran IAM
- Mulailah dengan masuk ke konsol dan mengakses IAM > Roles > Create Role
- Pilih Jenis entitas tepercaya
AWS Service
- Pilih EC2 sebagai layanan dalam kasus penggunaan
- Klik Selanjutnya dan Anda akan dapat melihat semua kebijakan yang tersedia
- Untuk tujuan solusi ini, kami akan memberikan instans EC2 kami akses penuh ke ECR. Saring untuk AmazonEC2ContainerRegistryAkses Penuh dan pilih itu.
- Tekan berikutnya dan beri nama peran
inf-ecr-access
Catatan: kebijakan yang kami lampirkan memberi instans EC2 akses penuh ke Amazon ECR. Kami sangat menyarankan untuk mengikuti kepala sekolah yang paling tidak diistimewakan untuk beban kerja produksi.
Langkah 2: Siapkan AWS CLI
Jika Anda menggunakan AMI Deep Learning yang ditentukan di atas, ini dilengkapi dengan AWS CLI terpasang. Jika Anda menggunakan AMI yang berbeda (Amazon Linux 2023, Base Ubuntu, dll.), instal alat CLI dengan mengikuti panduan ini.
Setelah Anda menginstal alat CLI, konfigurasikan CLI menggunakan perintah aws configure
. Jika Anda memiliki kunci akses, Anda dapat menambahkannya di sini tetapi tidak memerlukannya untuk berinteraksi dengan layanan AWS. Kami mengandalkan peran IAM untuk melakukannya.
Note: Kita harus memasukkan setidaknya satu nilai (wilayah default atau format default) untuk membuat profil default. Untuk contoh ini, kita akan pergi dengan us-east-2
sebagai daerah dan json
sebagai keluaran default.
Kloning repositori Github
Grafik GitHub repo menyediakan semua skrip yang diperlukan untuk menerapkan model menggunakan FastAPI pada NeuronCores pada instans AWS Inferentia. Contoh ini menggunakan wadah Docker untuk memastikan kami dapat membuat solusi yang dapat digunakan kembali. Termasuk dalam contoh ini adalah sebagai berikut config.properties file bagi pengguna untuk memberikan masukan.
File konfigurasi memerlukan awalan nama yang ditentukan pengguna untuk gambar Docker dan wadah Docker. Itu build.sh
naskah di fastapi
dan trace-model
folder menggunakan ini untuk membuat image Docker.
Kompilasi model di AWS Inferentia
Kita akan mulai dengan melacak model dan membuat file PyTorch Torchscript .pt. Mulailah dengan mengakses trace-model
direktori dan memodifikasi file .env. Bergantung pada jenis instans yang Anda pilih, ubah CHIP_TYPE
dalam .env
mengajukan. Sebagai contoh, kami akan memilih Inf2 sebagai panduan. Langkah yang sama berlaku untuk proses penerapan Inf1.
Selanjutnya atur wilayah default di file yang sama. Wilayah ini akan digunakan untuk membuat repositori ECR dan image Docker akan didorong ke repositori ini. Juga di folder ini, kami menyediakan semua skrip yang diperlukan untuk melacak a bert-base-uncased
model di AWS Inferentia. Skrip ini dapat digunakan untuk sebagian besar model yang tersedia di Wajah Memeluk. itu Dockerfile memiliki semua dependensi untuk menjalankan model dengan Neuron dan menjalankan jejak-model.py kode sebagai titik masuk.
Kompilasi neuron dijelaskan
API Neuron SDK sangat mirip dengan API PyTorch Python. Itu torch.jit.trace()
dari PyTorch mengambil model dan sampel input tensor sebagai argumen. Input sampel diumpankan ke model dan operasi yang dipanggil saat input tersebut melewati lapisan model dicatat sebagai Skrip obor. Untuk mempelajari lebih lanjut tentang Pelacakan JIT di PyTorch, lihat yang berikut ini dokumentasi.
Sama seperti torch.jit.trace()
, Anda dapat memeriksa apakah model Anda dapat dikompilasi di AWS Inferentia dengan kode berikut untuk instans inf1.
Untuk inf2, perpustakaan dipanggil torch_neuronx
. Inilah cara Anda dapat menguji kompilasi model Anda terhadap instans inf2.
Setelah membuat instance jejak, kita dapat meneruskan contoh input tensor seperti ini:
Dan terakhir simpan keluaran TorchScript yang dihasilkan pada disk lokal
Seperti yang ditunjukkan pada kode sebelumnya, Anda dapat menggunakan compiler_args
dan optimizations
untuk mengoptimalkan penyebaran. Untuk daftar rinci argumen untuk torch.neuron.trace
API, lihat PyTorch-Neuron melacak API python.
Ingatlah hal-hal penting berikut ini:
- Neuron SDK tidak mendukung bentuk tensor dinamis pada tulisan ini. Oleh karena itu, model harus dikompilasi secara terpisah untuk bentuk input yang berbeda. Untuk informasi selengkapnya tentang menjalankan inferensi pada bentuk masukan variabel dengan pengelompokan, lihat Menjalankan inferensi pada bentuk input variabel dengan bucketing.
- Jika Anda menghadapi masalah kehabisan memori saat mengompilasi model, coba kompilasi model pada instans AWS Inferentia dengan lebih banyak vCPU atau memori, atau bahkan instans c6i atau r6i besar karena kompilasi hanya menggunakan CPU. Setelah dikompilasi, model yang dilacak mungkin dapat dijalankan pada ukuran instans AWS Inferentia yang lebih kecil.
Membangun penjelasan proses
Sekarang kita akan membuat wadah ini dengan menjalankan membangun.sh. File skrip build hanya membuat image Docker dengan menarik Deep Learning Container Image dasar dan menginstal HuggingFace transformers
kemasan. Berdasarkan CHIP_TYPE
ditentukan dalam .env
file, file docker.properties
file memutuskan yang sesuai BASE_IMAGE
. Ini BASE_IMAGE
menunjuk ke Deep Learning Container Image untuk Neuron Runtime yang disediakan oleh AWS.
Ini tersedia melalui repositori ECR pribadi. Sebelum kami dapat menarik gambar, kami perlu masuk dan mendapatkan kredensial AWS sementara.
Note: kita perlu mengganti wilayah yang tercantum dalam perintah yang ditentukan oleh bendera wilayah dan di dalam URI repositori dengan wilayah yang kita tempatkan di .env file.
Untuk tujuan membuat proses ini lebih mudah, kita dapat menggunakan fetch-credentials.sh
mengajukan. Wilayah akan diambil dari file .env secara otomatis.
Selanjutnya, kami akan mendorong gambar menggunakan skrip dorong.sh. Skrip push membuat repositori di Amazon ECR untuk Anda dan mendorong image container.
Terakhir, saat image dibuat dan didorong, kita dapat menjalankannya sebagai container dengan menjalankan lari.sh dan ekor menjalankan log dengan log.sh. Di log kompiler (lihat tangkapan layar berikut), Anda akan melihat persentase operator aritmatika yang dikompilasi di Neuron dan persentase sub-grafik model yang berhasil dikompilasi di Neuron. Tangkapan layar menunjukkan log kompiler untuk bert-base-uncased-squad2
model. Log menunjukkan bahwa 95.64% dari operator aritmatika dikompilasi, dan juga memberikan daftar operator yang dikompilasi di Neuron dan yang tidak didukung.
Ini daftar dari semua operator yang didukung dalam paket PyTorch Neuron terbaru. Demikian pula, ini dia daftarnya dari semua operator yang didukung dalam paket PyTorch Neuronx terbaru.
Terapkan model dengan FastAPI
Setelah model dikompilasi, model yang ditelusuri akan ada di trace-model
map. Dalam contoh ini, kami telah menempatkan model yang ditelusuri untuk ukuran batch 1. Kami mempertimbangkan ukuran batch 1 di sini untuk memperhitungkan kasus penggunaan tersebut di mana ukuran batch yang lebih tinggi tidak layak atau diperlukan. Untuk kasus penggunaan yang membutuhkan ukuran batch yang lebih tinggi, the obor.neuron.DataParalel (untuk Inf1) atau obor.neuronx.DataParallel (untuk Inf2) API juga dapat berguna.
Grafik api cepat folder menyediakan semua skrip yang diperlukan untuk menerapkan model dengan FastAPI. Untuk menerapkan model tanpa perubahan apa pun, jalankan saja menyebarkan.sh skrip dan itu akan membangun gambar wadah FastAPI, menjalankan wadah pada jumlah inti yang ditentukan, dan menerapkan jumlah model yang ditentukan per server di setiap server model FastAPI. Folder ini juga berisi a .env
file, modifikasi untuk mencerminkan yang benar CHIP_TYPE
dan AWS_DEFAULT_REGION
.
Note: Skrip FastAPI mengandalkan variabel lingkungan yang sama yang digunakan untuk membuat, mendorong, dan menjalankan gambar sebagai wadah. Skrip penerapan FastAPI akan menggunakan nilai terakhir yang diketahui dari variabel ini. Jadi, jika Anda menelusuri model untuk jenis instans Inf1 terakhir, model tersebut akan diterapkan melalui skrip ini.
Grafik fastapi-server.py file yang bertanggung jawab untuk menghosting server dan mengirim permintaan ke model melakukan hal berikut:
- Membaca jumlah model per server dan lokasi model yang dikompilasi dari file properti
- Menetapkan NeuronCore yang terlihat sebagai variabel lingkungan ke wadah Docker dan membaca variabel lingkungan untuk menentukan NeuronCores mana yang akan digunakan
- Menyediakan API inferensi untuk
bert-base-uncased-squad2
model - Dengan
jit.load()
, memuat jumlah model per server sebagaimana ditentukan dalam konfigurasi dan menyimpan model serta tokenizer yang diperlukan dalam kamus global
Dengan pengaturan ini, akan relatif mudah untuk mengatur API yang mencantumkan model mana dan berapa banyak model yang disimpan di setiap NeuronCore. Demikian pula, API dapat ditulis untuk menghapus model dari NeuronCores tertentu.
Grafik Dockerfile untuk membangun wadah FastAPI dibangun di atas gambar Docker yang kami buat untuk melacak model. Inilah mengapa buruh pelabuhan.properti file menentukan jalur ECR ke gambar Docker untuk melacak model. Dalam penyiapan kami, wadah Docker di semua NeuronCore serupa, sehingga kami dapat membuat satu gambar dan menjalankan banyak wadah dari satu gambar. Untuk menghindari kesalahan titik masuk, kami tentukan ENTRYPOINT ["/usr/bin/env"]
di Dockerfile sebelum menjalankan startup.sh
script, yang terlihat seperti hypercorn fastapi-server:app -b 0.0.0.0:8080
. Skrip startup ini sama untuk semua container. Jika Anda menggunakan gambar dasar yang sama seperti untuk model pelacakan, Anda dapat membuat penampung ini cukup dengan menjalankan skrip build.sh. Itu push.sh
skrip tetap sama seperti sebelumnya untuk menelusuri model. Gambar Docker yang dimodifikasi dan nama kontainer disediakan oleh docker.properties
file.
Grafik run.sh file
melakukan hal berikut:
- Membaca gambar Docker dan nama kontainer dari properties file, yang pada gilirannya membaca
config.properties
file, yang memilikinum_cores
pengaturan pengguna - Mulai loop dari 0 hingga
num_cores
dan untuk setiap inti:- Menetapkan nomor port dan nomor perangkat
- Setel
NEURON_RT_VISIBLE_CORES
variabel lingkungan - Menentukan dudukan volume
- Menjalankan wadah Docker
Untuk lebih jelasnya, perintah Docker run untuk penerapan di NeuronCore 0 untuk Inf1 akan terlihat seperti kode berikut:
Perintah jalankan untuk menerapkan di NeuronCore 5 akan terlihat seperti kode berikut:
Setelah wadah dikerahkan, kami menggunakan jalankan_apis.py skrip, yang memanggil API dalam utas paralel. Kode diatur untuk memanggil enam model yang digunakan, satu di setiap NeuronCore, tetapi dapat dengan mudah diubah ke pengaturan yang berbeda. Kami memanggil API dari sisi klien sebagai berikut:
Memantau NeuronCore
Setelah server model dikerahkan, untuk memantau pemanfaatan NeuronCore, kami dapat menggunakan neuron-top
untuk mengamati secara real time persentase penggunaan setiap NeuronCore. neuron-atas adalah alat CLI di Neuron SDK untuk memberikan informasi seperti NeuronCore, vCPU, dan penggunaan memori. Di terminal terpisah, masukkan perintah berikut:
Output Anda harus serupa dengan gambar berikut. Dalam skenario ini, kami telah menetapkan untuk menggunakan dua NeuronCore dan dua model per server pada instans Inf2.xlarge. Tangkapan layar berikut menunjukkan bahwa dua model berukuran masing-masing 287.8MB dimuat pada dua NeuronCores. Dengan total 4 model dimuat, Anda dapat melihat memori perangkat yang digunakan adalah 1.3 GB. Gunakan tombol panah untuk berpindah di antara NeuronCores pada perangkat yang berbeda
Demikian pula, pada jenis instans Inf1.16xlarge kami melihat total 12 model (2 model per inti lebih dari 6 inti) dimuat. Total memori 2.1GB dikonsumsi dan setiap model berukuran 177.2MB.
Setelah Anda menjalankan jalankan_apis.py skrip, Anda dapat melihat persentase penggunaan masing-masing dari enam NeuronCore (lihat tangkapan layar berikut). Anda juga dapat melihat penggunaan vCPU sistem dan penggunaan vCPU runtime.
Tangkapan layar berikut menunjukkan persentase penggunaan inti instans Inf2.
Demikian pula, tangkapan layar ini menunjukkan pemanfaatan inti dalam jenis instans inf1.6xlarge.
Membersihkan
Untuk membersihkan semua kontainer Docker yang Anda buat, kami menyediakan a pembersihan.sh skrip yang menghapus semua wadah yang berjalan dan berhenti. Skrip ini akan menghapus semua wadah, jadi jangan gunakan itu jika Anda ingin beberapa wadah tetap berjalan.
Kesimpulan
Beban kerja produksi sering kali memiliki throughput tinggi, latensi rendah, dan persyaratan biaya. Arsitektur yang tidak efisien yang memanfaatkan akselerator secara kurang optimal dapat menyebabkan biaya produksi yang terlalu tinggi. Dalam posting ini, kami menunjukkan cara memanfaatkan NeuronCores secara optimal dengan FastAPI untuk memaksimalkan throughput pada latensi minimum. Kami telah menerbitkan instruksi pada kami GitHub repo. Dengan arsitektur solusi ini, Anda dapat menggunakan beberapa model di setiap NeuronCore dan mengoperasikan beberapa model secara paralel di NeuronCore yang berbeda tanpa kehilangan performa. Untuk informasi selengkapnya tentang cara menerapkan model dalam skala besar dengan layanan seperti Layanan Amazon Elastic Kubernetes (Amazon EKS), lihat Sajikan 3,000 model pembelajaran mendalam di Amazon EKS dengan AWS Inferentia dengan harga di bawah $50 per jam.
Tentang penulis
Ankur Srivastava adalah Sr. Solutions Architect di ML Frameworks Team. Dia berfokus untuk membantu pelanggan dengan pelatihan terdistribusi yang dikelola sendiri dan inferensi dalam skala besar di AWS. Pengalamannya meliputi pemeliharaan prediktif industri, kembar digital, optimisasi desain probabilistik dan telah menyelesaikan studi doktoralnya dari Teknik Mesin di Rice University dan penelitian pasca-doktoral dari Massachusetts Institute of Technology.
KC Tung adalah Arsitek Solusi Senior di AWS Annapurna Labs. Dia berspesialisasi dalam pelatihan dan penerapan model deep learning berskala besar di cloud. Dia memiliki gelar Ph.D. dalam biofisika molekuler dari University of Texas Southwestern Medical Center di Dallas. Dia telah berbicara di AWS Summits dan AWS Reinvent. Hari ini dia membantu pelanggan melatih dan menerapkan model PyTorch dan TensorFlow besar di AWS cloud. Dia adalah penulis dua buku: Pelajari Perusahaan TensorFlow dan TensorFlow 2 Referensi Saku.
Pronoy Chopra adalah Arsitek Solusi Senior dengan tim Startups Generative AI di AWS. Dia berspesialisasi dalam merancang dan mengembangkan solusi IoT dan Machine Learning. Dia telah ikut mendirikan dua perusahaan rintisan di masa lalu dan senang terlibat langsung dengan proyek-proyek di domain IoT, AI/ML, dan Tanpa Server.
- Konten Bertenaga SEO & Distribusi PR. Dapatkan Amplifikasi Hari Ini.
- PlatoData.Jaringan Vertikal Generatif Ai. Berdayakan Diri Anda. Akses Di Sini.
- PlatoAiStream. Intelijen Web3. Pengetahuan Diperkuat. Akses Di Sini.
- PlatoESG. Otomotif / EV, Karbon, teknologi bersih, energi, Lingkungan Hidup, Tenaga surya, Penanganan limbah. Akses Di Sini.
- BlockOffset. Modernisasi Kepemilikan Offset Lingkungan. Akses Di Sini.
- Sumber: https://aws.amazon.com/blogs/machine-learning/optimize-aws-inferentia-utilization-with-fastapi-and-pytorch-models-on-amazon-ec2-inf1-inf2-instances/
- :memiliki
- :adalah
- :bukan
- :Di mana
- $NAIK
- 000
- 1
- 1.3
- 10
- 100
- 12
- 13
- 15%
- 2023
- 7
- 8
- 91
- a
- Sanggup
- Tentang Kami
- atas
- abstraksi
- akselerator
- mengakses
- mengakses
- demikian
- Akun
- Mencapai
- di seluruh
- aktif
- menambahkan
- terhadap
- AI
- AI / ML
- Semua
- mengizinkan
- memungkinkan
- juga
- Amazon
- Amazon EC2
- Amazon Web Services
- an
- dan
- Apa pun
- api
- Lebah
- aplikasi
- Aplikasi
- aplikasi
- Mendaftar
- sesuai
- arsitektur
- ADALAH
- argumen
- AS
- menganggap
- At
- penulis
- secara otomatis
- tersedianya
- tersedia
- menghindari
- AWS
- Inferensi AWS
- mendasarkan
- berdasarkan
- BE
- karena
- menjadi
- menjadi
- sebelum
- nama
- laku
- makhluk
- manfaat
- Manfaat
- TERBAIK
- Praktik Terbaik
- antara
- Biofisika
- Bit
- Blog
- Buku-buku
- membangun
- Bangunan
- dibangun di
- tapi
- by
- panggilan
- bernama
- Panggilan
- CAN
- kemampuan
- kemampuan
- yang
- kasus
- kasus
- pusat
- perubahan
- berubah
- Perubahan
- memeriksa
- Keripik
- pilihan
- Pilih
- memilih
- kejelasan
- klien
- rapat
- awan
- kode
- datang
- perbandingan
- bersaing
- Lengkap
- menghitung
- konfigurasi
- Mempertimbangkan
- mengingat
- konsul
- dikonsumsi
- mengandung
- Wadah
- Wadah
- mengandung
- konteks
- terus menerus
- kontras
- kontrol
- dikendalikan
- Mudah
- Core
- benar
- Biaya
- Biaya
- bisa
- sepasang
- membuat
- dibuat
- menciptakan
- membuat
- Surat kepercayaan
- sangat penting
- pelanggan
- Dallas
- keputusan
- mendalam
- belajar mendalam
- lebih dalam
- Default
- mendemonstrasikan
- Tergantung
- menyebarkan
- dikerahkan
- penggelaran
- penyebaran
- Mendesain
- ditunjuk
- Meskipun
- terperinci
- ditentukan
- berkembang
- alat
- Devices
- berbeda
- Difusi
- DIG
- digital
- Kembar digital
- didistribusikan
- pelatihan terdistribusi
- Django
- do
- Buruh pelabuhan
- tidak
- Tidak
- domain
- Dont
- dinamis
- setiap
- Terdahulu
- mudah
- mudah
- Mudah
- EC
- efektif
- akhir
- Titik akhir
- mengikutsertakan
- Teknik
- memastikan
- Enter
- entitas
- masuk
- Lingkungan Hidup
- kesalahan
- dll
- Bahkan
- Setiap
- berkembang
- contoh
- Kecuali
- pengalaman
- ekstensi
- Menghadapi
- keluarga
- lebih cepat
- layak
- Fitur
- Fed
- sedikit
- Angka
- File
- menyaring
- Akhirnya
- Menemukan
- Pertama
- berfokus
- berikut
- berikut
- Untuk
- format
- ditemukan
- empat
- Kerangka
- kerangka
- dari
- penuh
- sepenuhnya
- fungsi
- pintu gerbang
- generatif
- AI generatif
- mendapatkan
- GitHub
- Memberikan
- memberikan
- Aksi
- akan
- membimbing
- menangani
- hands-on
- Perangkat keras
- Memiliki
- he
- membantu
- membantu
- membantu
- di sini
- High
- lebih tinggi
- paling tinggi
- -nya
- tuan rumah
- host
- tuan
- host
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- Namun
- HTML
- http
- HTTPS
- MemelukWajah
- ID
- ideal
- diidentifikasi
- if
- gambar
- gambar
- mengimpor
- penting
- in
- termasuk
- termasuk
- masuk
- Meningkatkan
- industri
- tidak efisien
- informasi
- informasi
- memasukkan
- input
- install
- diinstal
- Instalasi
- contoh
- sebagai gantinya
- Lembaga
- instruksi
- berinteraksi
- ke
- dipanggil
- idiot
- isu
- masalah
- IT
- NYA
- JIT
- jpg
- hanya
- Menjaga
- kunci-kunci
- Tahu
- dikenal
- Labs
- bahasa
- besar
- Terakhir
- Latensi
- Terbaru
- jalankan
- lapisan
- lapisan
- memimpin
- BELAJAR
- pengetahuan
- Tingkat
- Perpustakaan
- 'like'
- linux
- Daftar
- Daftar
- sedikit
- sedikit lebih dalam
- LLM
- pemuatan
- beban
- lokal
- tempat
- penebangan
- masuk
- melihat
- terlihat seperti
- TERLIHAT
- kehilangan
- Rendah
- menurunkan
- terendah
- mesin
- Mesin belajar
- terbuat
- pemeliharaan
- membuat
- MEMBUAT
- Membuat
- banyak
- massachusetts
- Institut Teknologi Massachusetts
- max
- Maksimalkan
- maksimum
- Mungkin..
- mekanis
- medis
- Memori
- Metrik
- keberatan
- minimum
- ML
- model
- model
- dimodifikasi
- memodifikasi
- molekuler
- Memantau
- lebih
- paling
- pindah
- banyak
- beberapa
- harus
- nama
- perlu
- perlu
- Perlu
- dibutuhkan
- kebutuhan
- New
- berikutnya
- sekarang
- jumlah
- tujuan
- mengamati
- of
- menawarkan
- sering
- on
- sekali
- ONE
- hanya
- ke
- open source
- beroperasi
- Operasi
- operator
- menentang
- optimasi
- Optimize
- dioptimalkan
- or
- kami
- di luar
- keluaran
- lebih
- paket
- Paralel
- bagian
- lulus
- lalu
- path
- untuk
- persentase
- prestasi
- plato
- Kecerdasan Data Plato
- Data Plato
- Titik
- poin
- Kebijakan
- kebijaksanaan
- Populer
- mungkin
- Pos
- praktek
- menyajikan
- swasta
- mungkin
- proses
- proses
- memproduksi
- Produksi
- Profil
- memprojeksikan
- properties
- memberikan
- disediakan
- menyediakan
- wakil
- diterbitkan
- menarik
- tujuan
- Dorong
- terdorong
- mendorong
- menempatkan
- Ular sanca
- pytorch
- jarak
- nyata
- real-time
- sarankan
- direkomendasikan
- tercatat
- mencerminkan
- wilayah
- relatif
- mengandalkan
- mengandalkan
- sisa
- menghapus
- menggantikan
- gudang
- permintaan
- wajib
- Persyaratan
- penelitian
- menyerupai
- Cadangan
- dilindungi
- Sumber
- tanggapan
- tanggung jawab
- ISTIRAHAT
- dihasilkan
- dapat digunakan kembali
- Beras
- Peran
- peran
- Run
- berjalan
- berjalan
- berkorban
- sama
- Save
- Skala
- skenario
- script
- SDK
- melihat
- seleksi
- mengirim
- senior
- peka
- terpisah
- Tanpa Server
- Server
- layanan
- Layanan
- porsi
- set
- pengaturan
- penyiapan
- bentuk
- Share
- berbagi
- harus
- Menunjukkan
- menunjukkan
- ditunjukkan
- Pertunjukkan
- sisi
- mirip
- Demikian pula
- hanya
- ENAM
- Ukuran
- ukuran
- lebih kecil
- So
- larutan
- Solusi
- beberapa
- spesialisasi
- tertentu
- ditentukan
- lisan
- stabil
- tumpukan
- awal
- startup
- Startups
- menyatakan
- Tangga
- terhenti
- tersimpan
- toko
- sangat
- studi
- berhasil
- seperti itu
- Summits
- mendukung
- Didukung
- yakin
- sistem
- tabel
- Mengambil
- diambil
- Dibutuhkan
- tim
- Teknologi
- sementara
- tensorflow
- terminal
- uji
- pengujian
- tes
- texas
- dari
- bahwa
- Grafik
- mereka
- Mereka
- kemudian
- karena itu
- Ini
- mereka
- hal
- ini
- itu
- Melalui
- keluaran
- Terjalin
- waktu
- untuk
- hari ini
- alat
- alat
- puncak
- obor
- Total
- Jejak
- jiplakan
- tradisional
- Pelatihan VE
- Pelatihan
- transformer
- Terpercaya
- mencoba
- MENGHIDUPKAN
- Kembar
- dua
- mengetik
- Ubuntu
- bawah
- pokok
- universitas
- unix
- tidak perlu
- atas
- us
- penggunaan
- menggunakan
- bekas
- Pengguna
- Pengguna
- kegunaan
- menggunakan
- Penggunaan
- memanfaatkan
- Memanfaatkan
- nilai
- Nilai - Nilai
- versi
- sangat
- terlihat
- penglihatan
- volume
- ingin
- adalah
- Cara..
- we
- jaringan
- web server
- layanan web
- BAIK
- adalah
- ketika
- yang
- mengapa
- sangat
- akan
- dengan
- dalam
- tanpa
- pekerja
- pekerja
- akan
- penulisan
- tertulis
- Kamu
- Anda
- diri
- zephyrnet.dll
- nol