Bagi ilmuwan data, memindahkan model pembelajaran mesin (ML) dari bukti konsep ke produksi sering kali menghadirkan tantangan yang signifikan. Salah satu tantangan utama adalah menerapkan model yang dilatih secara lokal dan berkinerja baik ke cloud untuk inferensi dan digunakan di aplikasi lain. Mungkin sulit untuk mengelola prosesnya, tetapi dengan alat yang tepat, Anda dapat mengurangi upaya yang diperlukan secara signifikan.
inferensi Amazon SageMaker, yang tersedia secara umum pada bulan April 2022, memudahkan Anda menerapkan model ML ke dalam produksi untuk membuat prediksi dalam skala besar, menyediakan berbagai pilihan infrastruktur ML dan opsi penerapan model untuk membantu memenuhi semua jenis kebutuhan inferensi ML. Anda dapat gunakan Titik akhir Inferensi Tanpa Server SageMaker untuk beban kerja yang memiliki periode tidak aktif di antara lonjakan lalu lintas dan dapat menoleransi start dingin. Titik akhir diskalakan secara otomatis berdasarkan lalu lintas dan menghilangkan beban berat yang tidak dapat dibedakan dalam memilih dan mengelola server. Selain itu, Anda dapat menggunakan AWS Lambda langsung untuk mengekspos model Anda dan menerapkan aplikasi ML Anda menggunakan kerangka kerja sumber terbuka pilihan Anda, yang terbukti lebih fleksibel dan hemat biaya.
API Cepat adalah kerangka kerja web modern berkinerja tinggi untuk membangun API dengan Python. Ini menonjol dalam hal pengembangan aplikasi tanpa server dengan layanan mikro RESTful dan kasus penggunaan yang memerlukan inferensi ML dalam skala besar di berbagai industri. Kemudahan dan fungsionalitas bawaannya seperti dokumentasi API otomatis menjadikannya pilihan populer di antara para insinyur ML untuk menerapkan API inferensi performa tinggi. Anda dapat menentukan dan mengatur rute menggunakan fungsionalitas siap pakai dari FastAPI untuk memperluas dan menangani logika bisnis yang berkembang sesuai kebutuhan, menguji secara lokal dan menghostingnya di Lambda, lalu memaparkannya melalui gateway API tunggal, yang memungkinkan Anda untuk bawa kerangka kerja web sumber terbuka ke Lambda tanpa beban berat atau pemfaktoran ulang kode Anda.
Posting ini menunjukkan cara menerapkan dan menjalankan inferensi ML tanpa server dengan mudah dengan mengekspos model ML Anda sebagai titik akhir menggunakan FastAPI, Docker, Lambda, dan Gerbang API Amazon. Kami juga menunjukkan kepada Anda cara mengotomatiskan penerapan menggunakan Kit Pengembangan AWS Cloud (AWS-CDK).
Ikhtisar solusi
Diagram berikut menunjukkan arsitektur solusi yang kami terapkan di postingan ini.
Prasyarat
Anda harus memiliki prasyarat berikut:
- Python3 diinstal, bersama dengan
virtualenv
untuk membuat dan mengelola lingkungan virtual dengan Python - aws-cdk v2 terinstal di sistem Anda agar dapat menggunakan AWS CDK CLI
- Docker diinstal dan dijalankan di mesin lokal Anda
Uji apakah semua perangkat lunak yang diperlukan diinstal:
- Grafik Antarmuka Baris Perintah AWS (AWS CLI) diperlukan. Masuk ke akun Anda dan pilih Wilayah tempat Anda ingin menerapkan solusi.
- Gunakan kode berikut untuk memeriksa versi Python Anda:
- Periksa apakah
virtualenv
diinstal untuk membuat dan mengelola lingkungan virtual dengan Python. Sebenarnya, ini bukan persyaratan yang sulit, tetapi itu akan membuat hidup Anda lebih mudah dan membantu mengikuti posting ini dengan lebih mudah. Gunakan kode berikut: - Periksa apakah cdk diinstal. Ini akan digunakan untuk menerapkan solusi kami.
- Periksa apakah Docker diinstal. Solusi kami akan membuat model Anda dapat diakses melalui image Docker ke Lambda. Untuk membuat image ini secara lokal, kita membutuhkan Docker.
- Pastikan Docker aktif dan berjalan dengan kode berikut:
Cara menyusun proyek FastAPI Anda menggunakan AWS CDK
Kami menggunakan struktur direktori berikut untuk proyek kami (mengabaikan beberapa kode AWS CDK boilerplate yang tidak penting dalam konteks posting ini):
Direktori mengikuti struktur proyek AWS CDK yang direkomendasikan untuk Python.
Bagian terpenting dari repositori ini adalah fastapi_model_serving
direktori. Ini berisi kode yang akan menentukan tumpukan AWS CDK dan sumber daya yang akan digunakan untuk penyajian model.
Grafik fastapi_model_serving
direktori berisi model_endpoint
subdirektori, yang berisi semua aset yang diperlukan untuk membentuk titik akhir tanpa server kami, yaitu Dockerfile untuk membuat gambar Docker yang akan digunakan Lambda, kode fungsi Lambda yang menggunakan FastAPI untuk menangani permintaan inferensi dan merutekannya ke titik akhir yang benar, dan model artefak model yang ingin kita gunakan. model_endpoint
juga berisi sebagai berikut:
Docker
โ Subdirektori ini berisi yang berikut:Dockerfile
โ Ini digunakan untuk membuat gambar untuk fungsi Lambda dengan semua artefak (kode fungsi Lambda, artefak model, dan sebagainya) di tempat yang tepat sehingga dapat digunakan tanpa masalah.serving.api.tar.gz
โ Ini adalah tarball yang berisi semua aset dari folder runtime yang diperlukan untuk membuat image Docker. Kami membahas cara membuat.tar.gz
file nanti di posting ini.runtime
โ Subdirektori ini berisi yang berikut:serving_api
โ Kode untuk fungsi Lambda dan dependensinya ditentukan dalam file requirements.txt.custom_lambda_utils
โ Ini termasuk skrip inferensi yang memuat artefak model yang diperlukan sehingga model dapat diteruskan keserving_api
yang kemudian akan memaparkannya sebagai titik akhir.
Selain itu, kami memiliki direktori template, yang menyediakan template struktur folder dan file tempat Anda dapat menentukan kode dan API yang disesuaikan mengikuti contoh yang kami lalui sebelumnya. Direktori template berisi kode dummy yang dapat Anda gunakan untuk membuat fungsi Lambda baru:
dummy
โ Berisi kode yang mengimplementasikan struktur fungsi Lambda biasa menggunakan runtime Pythonapi
โ Berisi kode yang mengimplementasikan fungsi Lambda yang membungkus titik akhir FastAPI di sekitar gateway API yang ada
Terapkan solusinya
Secara default, kode diterapkan di dalam wilayah eu-west-1. Jika Anda ingin mengubah Wilayah, Anda dapat mengubah variabel konteks DEPLOYMENT_REGION di cdk.json
file.
Perlu diingat, bagaimanapun, bahwa solusi mencoba menerapkan fungsi Lambda di atas arsitektur arm64, dan fitur ini mungkin tidak tersedia di semua Wilayah. Dalam hal ini, Anda perlu mengubah parameter arsitektur di fastapi_model_serving_stack.py
file, serta baris pertama Dockerfile di dalam direktori Docker, untuk menghosting solusi ini pada arsitektur x86.
Untuk menerapkan solusi, selesaikan langkah-langkah berikut:
- Jalankan perintah berikut untuk mengkloning repositori GitHub:
git clone https://github.com/aws-samples/lambda-serverless-inference-fastapi
Karena kami ingin menunjukkan bahwa solusi dapat bekerja dengan artefak model yang Anda latih secara lokal, kami berisi contoh artefak model dari model yang telah dilatih sebelumnya. DistilasiBERT model di hub model Hugging Face untuk tugas menjawab pertanyaan diserving_api.tar.gz
mengajukan. Waktu pengunduhan dapat memakan waktu sekitar 3โ5 menit. Sekarang, mari kita atur lingkungannya. - Unduh model terlatih yang akan diterapkan dari hub model Hugging Face ke
./model_endpoint/runtime/serving_api/custom_lambda_utils/model_artifacts
direktori. Itu juga menciptakan lingkungan virtual dan menginstal semua dependensi yang diperlukan. Anda hanya perlu menjalankan perintah ini sekali:make prep
. Perintah ini dapat memakan waktu sekitar 5 menit (tergantung bandwidth internet Anda) karena perlu mengunduh artefak model. - Kemas artefak model di dalam a
.tar.gz
arsip yang akan digunakan di dalam image Docker yang dibuat di tumpukan AWS CDK. Anda perlu menjalankan kode ini setiap kali membuat perubahan pada artefak model atau API itu sendiri untuk selalu memiliki versi terbaru dari titik akhir penyajian Anda yang dipaketkan:make package_model
. Artefak semuanya ada di tempatnya. Sekarang kami dapat menerapkan tumpukan AWS CDK ke akun AWS Anda. - Jalankan cdk bootstrap jika ini pertama kalinya Anda menerapkan aplikasi AWS CDK ke lingkungan (kombinasi akun + Wilayah):
Tumpukan ini mencakup sumber daya yang diperlukan untuk pengoperasian toolkit. Misalnya, tumpukan menyertakan bucket Amazon Simple Storage Service (Amazon S3) yang digunakan untuk menyimpan template dan aset selama proses penerapan.
Karena kami membuat gambar Docker secara lokal dalam penerapan AWS CDK ini, kami perlu memastikan bahwa daemon Docker berjalan sebelum kami dapat menerapkan tumpukan ini melalui AWS CDK CLI.
- Untuk memeriksa apakah daemon Docker berjalan di sistem Anda atau tidak, gunakan perintah berikut:
Jika Anda tidak mendapatkan pesan kesalahan, Anda harus siap menerapkan solusinya.
- Terapkan solusi dengan perintah berikut:
Langkah ini dapat memakan waktu sekitar 5โ10 menit karena membangun dan mendorong image Docker.
Penyelesaian masalah
Jika Anda pengguna Mac, Anda mungkin mengalami kesalahan saat masuk Registry Kontainer Elastis Amazon (Amazon ECR) dengan login Docker, seperti Error saving credentials ... not implemented
. Sebagai contoh:
Sebelum Anda dapat menggunakan Lambda di atas kontainer Docker di dalam AWS CDK, Anda mungkin perlu mengubah ~/docker/config.json
mengajukan. Lebih khusus lagi, Anda mungkin harus mengubah parameter credsStore ~/.docker/config.json
ke osxkeychain. Itu memecahkan masalah login Amazon ECR di Mac.
Jalankan inferensi waktu-nyata
Setelah Anda Formasi AWS Cloud tumpukan berhasil digunakan, pergi ke Output tab untuk tumpukan Anda di konsol AWS CloudFormation dan buka URL titik akhir. Sekarang model kita dapat diakses melalui URL endpoint dan kita siap untuk menjalankan inferensi real-time.
Arahkan ke URL untuk melihat apakah Anda dapat melihat pesan "hello world" dan tambahkan /docs
ke alamat untuk melihat apakah Anda dapat melihat halaman UI angkuh interaktif dengan sukses. Mungkin ada waktu mulai yang dingin, jadi Anda mungkin perlu menunggu atau menyegarkan beberapa kali.
Setelah Anda masuk ke halaman arahan halaman UI angkuh FastAPI, Anda dapat menjalankan melalui root /
atau melalui /question
.
Dari /
, Anda dapat menjalankan API dan mendapatkan pesan "hello world".
Dari /question
, Anda dapat menjalankan API dan menjalankan inferensi ML pada model yang kami terapkan untuk kasus penjawab pertanyaan. Misalnya, kita menggunakan pertanyaan Apa warna mobil saya sekarang? dan konteksnya mobil saya dulu biru tapi saya cat merah.
Ketika Anda memilih Eksekusi, berdasarkan konteks yang diberikan, model akan menjawab pertanyaan dengan respons, seperti yang ditunjukkan pada tangkapan layar berikut.
Di badan respons, Anda dapat melihat jawaban dengan skor kepercayaan dari model. Anda juga dapat bereksperimen dengan contoh lain atau menyematkan API di aplikasi Anda yang sudah ada.
Atau, Anda dapat menjalankan inferensi melalui kode. Berikut adalah salah satu contoh yang ditulis dengan Python, menggunakan requests
Perpustakaan:
Kode menghasilkan string yang mirip dengan yang berikut:
Jika Anda tertarik untuk mengetahui lebih lanjut tentang penerapan AI Generatif dan model bahasa besar di AWS, lihat di sini:
- Menerapkan AI Generatif Tanpa Server di AWS Lambda dengan OpenLLaMa
- Terapkan model bahasa besar di AWS Inferentia2 menggunakan wadah inferensi model besar
Membersihkan
Di dalam direktori akar repositori Anda, jalankan kode berikut untuk membersihkan sumber daya Anda:
Kesimpulan
Dalam postingan ini, kami memperkenalkan cara menggunakan Lambda untuk menerapkan model ML terlatih Anda menggunakan framework aplikasi web pilihan Anda, seperti FastAPI. Kami menyediakan repositori kode mendetail yang dapat Anda terapkan, dan Anda mempertahankan fleksibilitas untuk beralih ke artefak model terlatih mana pun yang Anda proses. Performa dapat bergantung pada cara Anda menerapkan dan menerapkan model.
Anda dipersilakan untuk mencobanya sendiri, dan kami senang mendengar tanggapan Anda!
Tentang Penulis
Tingyi Li adalah Arsitek Solusi Perusahaan dari AWS yang berbasis di Stockholm, Swedia yang mendukung pelanggan Nordik. Dia senang membantu pelanggan dengan arsitektur, desain, dan pengembangan solusi infrastruktur yang dioptimalkan cloud. Dia berspesialisasi dalam AI dan Pembelajaran Mesin dan tertarik untuk memberdayakan pelanggan dengan kecerdasan dalam aplikasi AI/ML mereka. Di waktu luangnya, dia juga seorang ilustrator paruh waktu yang menulis novel dan memainkan piano.
Demir Catovic adalah Insinyur Pembelajaran Mesin dari AWS yang berbasis di Zurich, Swiss. Dia terlibat dengan pelanggan dan membantu mereka mengimplementasikan aplikasi ML yang dapat diskalakan dan berfungsi penuh. Dia bersemangat membangun dan memproduksi aplikasi pembelajaran mesin untuk pelanggan dan selalu tertarik untuk mengeksplorasi tren baru dan teknologi mutakhir di dunia AI/ML.
- 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/deploy-a-serverless-ml-inference-endpoint-of-large-language-models-using-fastapi-aws-lambda-and-aws-cdk/
- :adalah
- :bukan
- :Di mana
- $NAIK
- 1
- 10
- 100
- 13
- 2022
- 7
- 9
- a
- Sanggup
- Tentang Kami
- dapat diakses
- Akun
- di seluruh
- menambahkan
- Selain itu
- alamat
- AI
- AI / ML
- Semua
- memungkinkan
- sepanjang
- juga
- selalu
- Amazon
- Amazon Web Services
- diantara
- an
- dan
- menjawab
- Apa pun
- api
- Lebah
- aplikasi
- Aplikasi
- aplikasi
- April
- arsitektur
- arsip
- ADALAH
- sekitar
- AS
- Aktiva
- At
- mengotomatisasikan
- secara otomatis
- secara otomatis
- tersedia
- jauh
- AWS
- Formasi AWS Cloud
- AWS Lambda
- Backend
- Bandwidth
- berdasarkan
- BE
- karena
- sebelum
- antara
- Biru
- tubuh
- Bootstrap
- membawa
- luas
- membangun
- Bangunan
- dibangun di
- built-in
- bisnis
- tapi
- by
- CAN
- mobil
- kasus
- kasus
- menantang
- tantangan
- perubahan
- Perubahan
- memeriksa
- pilihan
- Pilih
- awan
- kode
- Kode
- dingin
- warna
- kombinasi
- datang
- lengkap
- konsep
- kepercayaan
- Terhubung
- koneksi
- konsul
- mengandung
- Wadah
- Wadah
- mengandung
- konteks
- benar
- hemat biaya
- bisa
- membuat
- menciptakan
- membuat
- Surat kepercayaan
- pelanggan
- disesuaikan
- canggih
- data
- Default
- Tergantung
- menyebarkan
- dikerahkan
- penggelaran
- penyebaran
- Mendesain
- terperinci
- berkembang
- Pengembangan
- langsung
- membahas
- Buruh pelabuhan
- dokumentasi
- Dont
- Download
- dua
- selama
- Terdahulu
- memudahkan
- mudah
- mudah
- Mudah
- usaha
- menanamkan
- memberdayakan
- akhir
- Titik akhir
- terlibat
- insinyur
- Insinyur
- memastikan
- Enterprise
- Lingkungan Hidup
- lingkungan
- kesalahan
- contoh
- contoh
- gembira
- menjalankan
- ada
- Exit
- eksperimen
- menyelidiki
- Menghadapi
- Fitur
- beberapa
- File
- File
- Pertama
- pertama kali
- keluwesan
- fleksibel
- mengikuti
- berikut
- berikut
- Untuk
- Kerangka
- dari
- fungsi
- fungsionalitas
- fungsi
- pintu gerbang
- umumnya
- generatif
- AI generatif
- mendapatkan
- GitHub
- diberikan
- Go
- akan
- Pertumbuhan
- menangani
- Sulit
- Memiliki
- he
- mendengar
- berat
- angkat berat
- membantu
- membantu
- membantu
- dia
- di sini
- kinerja tinggi
- tuan rumah
- Seterpercayaapakah Olymp Trade? Kesimpulan
- How To
- Namun
- HTML
- http
- HTTPS
- Pusat
- i
- Siaga
- if
- gambar
- gambar
- melaksanakan
- mengimplementasikan
- penting
- in
- Di lain
- termasuk
- industri
- Infrastruktur
- dalam
- diinstal
- Intelijen
- interaktif
- tertarik
- Internet
- ke
- diperkenalkan
- masalah
- IT
- NYA
- Diri
- json
- Tajam
- Mengetahui
- pendaratan
- bahasa
- besar
- kemudian
- pengetahuan
- Perpustakaan
- Hidup
- pengangkatan
- 'like'
- baris
- beban
- lokal
- lokal
- mencatat
- penebangan
- logika
- masuk
- mac
- mesin
- Mesin belajar
- terbuat
- Utama
- membuat
- MEMBUAT
- mengelola
- pelaksana
- Mungkin..
- Pelajari
- pesan
- microservices
- mungkin
- keberatan
- menit
- ML
- model
- model
- modern
- lebih
- paling
- bergerak
- beberapa
- harus
- my
- yaitu
- perlu
- Perlu
- dibutuhkan
- kebutuhan
- New
- sekarang
- of
- sering
- on
- sekali
- ONE
- hanya
- Buka
- open source
- operasi
- Opsi
- or
- urutan
- biasa
- Lainnya
- kami
- di luar
- dikemas
- halaman
- parameter
- bagian
- Lulus
- bergairah
- prestasi
- periode
- Tempat
- plato
- Kecerdasan Data Plato
- Data Plato
- memainkan
- Populer
- Pos
- Prediksi
- disukai
- prasyarat
- hadiah
- proses
- Produksi
- proyek
- memprojeksikan
- bukti
- bukti konsep
- Rasakan itu
- disediakan
- menyediakan
- menyediakan
- Mendorong
- Ular sanca
- pertanyaan
- siap
- real-time
- Merah
- menurunkan
- wilayah
- daerah
- gudang
- permintaan
- wajib
- kebutuhan
- Persyaratan
- Sumber
- tanggapan
- mengakibatkan
- menahan
- benar
- akar
- Rute
- rute
- Run
- berjalan
- pembuat bijak
- penghematan
- terukur
- Skala
- ilmuwan
- cakupan
- skor
- melihat
- memilih
- seleksi
- Tanpa Server
- Server
- layanan
- Layanan
- porsi
- set
- dia
- harus
- Menunjukkan
- menampilkan
- ditunjukkan
- Pertunjukkan
- penting
- signifikan
- mirip
- Sederhana
- tunggal
- So
- Perangkat lunak
- larutan
- Solusi
- Memecahkan
- beberapa
- berbicara
- khusus
- Secara khusus
- ditentukan
- tumpukan
- berdiri
- awal
- dimulai
- Status
- Langkah
- Tangga
- penyimpanan
- menyimpan
- menyimpan
- Tali
- struktur
- berhasil
- seperti itu
- pendukung
- Swedia
- Swiss
- sistem
- Mengambil
- tugas
- Teknologi
- Template
- template
- uji
- bahwa
- Grafik
- mereka
- Mereka
- kemudian
- Sana.
- mereka
- ini
- Melalui
- waktu
- kali
- untuk
- alat
- puncak
- lalu lintas
- Pelatihan VE
- terlatih
- Tren
- mencoba
- ui
- unix
- mutakhir
- URL
- menggunakan
- bekas
- Pengguna
- kegunaan
- menggunakan
- versi
- melalui
- maya
- menunggu
- ingin
- adalah
- we
- jaringan
- aplikasi web
- layanan web
- selamat datang
- BAIK
- pergi
- Apa
- Apa itu
- ketika
- kapan saja
- apakah
- yang
- SIAPA
- akan
- dengan
- tanpa
- Kerja
- dunia
- tertulis
- Kamu
- Anda
- diri
- zephyrnet.dll
- Zurich