Visualisasikan hasil AI/ML model menggunakan Flask dan AWS Elastic Beanstalk - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Visualisasikan hasil AI/ML model menggunakan Flask dan AWS Elastic Beanstalk

Chris Caudill dan Durga Sury, Amazon Web Services

Ringkasan

Memvisualisasikan output dari layanan kecerdasan buatan dan pembelajaran mesin (AI/ML) seringkali membutuhkan panggilan API kompleks yang harus disesuaikan oleh pengembang dan teknisi Anda. Ini bisa menjadi kelemahan jika analis Anda ingin menjelajahi kumpulan data baru dengan cepat.

Anda dapat meningkatkan aksesibilitas layanan Anda dan memberikan bentuk analisis data yang lebih interaktif dengan menggunakan antarmuka pengguna berbasis web (UI) yang memungkinkan pengguna untuk mengunggah data mereka sendiri dan memvisualisasikan hasil model di dasbor.

Pola ini menggunakan Flask dan Plotly untuk mengintegrasikan Amazon Comprehend dengan aplikasi web khusus dan memvisualisasikan sentimen dan entitas dari data yang disediakan pengguna. Pola ini juga menyediakan langkah-langkah untuk menerapkan aplikasi dengan menggunakan AWS Elastic Beanstalk. Anda dapat menyesuaikan aplikasi dengan menggunakan layanan AI Amazon Web Services (AWS) atau dengan model terlatih khusus yang dihosting di titik akhir (misalnya, SageMaker titik akhir Amazon).

Prasyarat dan batasan

Prasyarat

Batasan

  • Aplikasi Flask pola ini dirancang untuk bekerja dengan file.csv yang menggunakan kolom teks tunggal dan dibatasi hingga 200 baris. Kode aplikasi dapat disesuaikan untuk menangani jenis file dan volume data lainnya.

  • Aplikasi tidak mempertimbangkan retensi data dan terus mengumpulkan file pengguna yang diunggah hingga dihapus secara manual. Anda dapat mengintegrasikan aplikasi dengan Amazon Simple Storage Service (Amazon S3) Simple Storage S3) untuk penyimpanan objek persisten atau menggunakan database seperti Amazon DynamoDB untuk penyimpanan nilai kunci tanpa server.

  • Aplikasi hanya mempertimbangkan dokumen dalam bahasa Inggris. Namun, Anda dapat menggunakan Amazon Comprehend untuk mendeteksi bahasa utama dokumen. Untuk informasi selengkapnya tentang bahasa yang didukung untuk setiap tindakan, lihat referensi API di dokumentasi Amazon Comprehend.

  • Daftar pemecahan masalah yang berisi kesalahan umum dan solusinya tersedia di bagian Informasi tambahan.

Arsitektur

Arsitektur aplikasi labu

Flask adalah kerangka kerja ringan untuk mengembangkan aplikasi web dengan Python. Ini dirancang untuk menggabungkan pemrosesan data Python yang kuat dengan UI web yang kaya. Aplikasi Flask pola menunjukkan cara membuat aplikasi web yang memungkinkan pengguna mengunggah data, mengirim data ke Amazon Comprehend untuk inferensi, dan kemudian memvisualisasikan hasilnya.   Aplikasi ini memiliki struktur sebagai berikut:

  • static— Berisi semua file statis yang mendukung UI web (misalnya JavaScript, CSS, dan gambar)

  • templates- Berisi semua halaman HTML aplikasi

  • userData— Menyimpan data pengguna yang diunggah

  • application.py— File aplikasi Flask

  • comprehend_helper.py— Fungsi untuk melakukan panggilan API ke Amazon Comprehend

  • config.py— File konfigurasi aplikasi

  • requirements.txt- Dependensi Python yang dibutuhkan oleh aplikasi

application.pyScript berisi fungsionalitas inti aplikasi web, yang terdiri dari empat rute Flask. Diagram berikut menunjukkan rute Flask ini.

Empat rute Flask yang membentuk fungsionalitas inti aplikasi web.

  • /adalah root aplikasi dan mengarahkan pengguna ke upload.html halaman (disimpan dalam templates direktori).

  • /saveFileadalah rute yang dipanggil setelah pengguna mengunggah file. Rute ini menerima POST permintaan melalui formulir HTML, yang berisi file yang diunggah oleh pengguna. File disimpan di userData direktori dan rute mengarahkan pengguna ke rute. /dashboard

  • /dashboardmengirim pengguna ke dashboard.html halaman. Dalam HTML halaman ini, ia menjalankan JavaScript kode static/js/core.js yang membaca data dari /data rute dan kemudian membangun visualisasi untuk halaman tersebut.

  • /dataadalah JSON API yang menyajikan data untuk divisualisasikan di dasbor. Rute ini membaca data yang disediakan pengguna dan menggunakan fungsi comprehend_helper.py untuk mengirim data pengguna ke Amazon Comprehend untuk analisis sentimen dan pengenalan entitas bernama (NER). Respons Amazon Comprehend diformat dan dikembalikan sebagai objek JSON.

Arsitektur penyebaran

Diagram arsitektur untuk menggunakan Flask dan Elastic AI/ML Beanstalk untuk memvisualisasikan hasil model.

Pertimbangan desain

Untuk informasi selengkapnya tentang pertimbangan desain untuk aplikasi yang digunakan menggunakan Elastic Beanstalk di AWS Cloud, lihat di dokumentasi AWS Elastic Beanstalk.

Tumpukan teknologi

  • Amazon Comprehend 

  • Elastic Beanstalk 

  • Flask 

Otomatisasi dan skala

Penerapan Elastic Beanstalk secara otomatis diatur dengan penyeimbang beban dan grup penskalaan otomatis. Untuk opsi konfigurasi lainnya, lihat Mengonfigurasi lingkungan Elastic Beanstalk dalam dokumentasi AWS Elastic Beanstalk.

Alat

  • AWS Command Line Interface (AWS CLI) adalah alat terpadu yang menyediakan antarmuka yang konsisten untuk berinteraksi dengan semua bagian AWS.

  • Amazon Comprehend menggunakan Natural Language Processing (NLP) untuk mengekstrak wawasan tentang isi dokumen tanpa memerlukan preprocessing khusus.

  • AWS Elastic Beanstalk membantu Anda menerapkan dan mengelola aplikasi dengan cepat di AWS Cloud tanpa harus mempelajari infrastruktur yang menjalankan aplikasi tersebut.

  • Elastic Beanstalk CLI (EB CLI) adalah antarmuka baris perintah untuk AWS Elastic Beanstalk yang menyediakan perintah interaktif untuk menyederhanakan pembuatan, pembaruan, dan pemantauan lingkungan dari repositori lokal.

  • Framework Flask melakukan pemrosesan data dan panggilan API menggunakan Python dan menawarkan visualisasi web interaktif dengan Plotly.

Kode

Kode untuk pola ini tersedia dalam hasil AI/ML model GitHub Visualize menggunakan repositori Flask dan AWS Elastic Beanstalk.

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Kloning GitHub repositori.

Tarik kode aplikasi dari hasil AI/ML model GitHub Visualize menggunakan repositori Flask dan AWS Elastic Beanstalk dengan menjalankan perintah berikut:

git clone git@github.com:aws-samples/aws-comprehend-elasticbeanstalk-for-flask.git

catatan

Pastikan Anda mengonfigurasi kunci SSH Anda dengan GitHub.

Developer

Instal modul Python.

Setelah Anda mengkloning repositori, aws-comprehend-elasticbeanstalk-for-flask direktori lokal baru dibuat. Dalam direktori itu, requirements.txt file berisi modul Python dan versi yang menjalankan aplikasi. Gunakan perintah berikut untuk menginstal modul:

cd aws-comprehend-elasticbeanstalk-for-flask

pip install -r requirements.txt

Pengembang Python

Uji aplikasi secara lokal.

Mulai server Flask dengan menjalankan perintah berikut:

python application.py

Ini mengembalikan informasi tentang server yang sedang berjalan. Anda harus dapat mengakses aplikasi dengan membuka browser dan mengunjungi http://localhost:5000

catatan

Jika Anda menjalankan aplikasi di AWS Cloud9 IDE, Anda perlu mengganti application.run() perintah dalam file dengan baris application.py berikut:

application.run(host=os.getenv('IP', '0.0.0.0'),port=int(os.getenv('PORT', 8080)))

Anda harus mengembalikan perubahan ini sebelum penerapan.

Pengembang Python
TugasDeskripsiKeterampilan yang dibutuhkan

Luncurkan aplikasi Elastic Beanstalk.

Untuk meluncurkan proyek Anda sebagai aplikasi Elastic Beanstalk, jalankan perintah berikut dari direktori root aplikasi Anda:

eb init -p python-3.6 comprehend_flask --region us-east-1

penting

  • comprehend_flaskadalah nama aplikasi Elastic Beanstalk dan dapat diubah sesuai dengan kebutuhan Anda. 

  • Anda dapat mengganti Wilayah AWS dengan Wilayah pilihan Anda. Wilayah default di AWS CLI digunakan jika Anda tidak menentukan Wilayah.

  • Aplikasi ini dibangun dengan Python versi 3.6. Anda mungkin mengalami kesalahan jika Anda menggunakan versi Python lainnya.

Jalankan eb init -i perintah untuk opsi konfigurasi penerapan lainnya.

Arsitek, Pengembang

Menyebarkan lingkungan Elastic Beanstalk.

Jalankan perintah berikut dari direktori root aplikasi:

eb create comprehend-flask-env

catatan

comprehend-flask-envadalah nama lingkungan Elastic Beanstalk dan dapat diubah sesuai dengan kebutuhan Anda. Nama hanya dapat berisi huruf, angka, dan tanda hubung.

Arsitek, Pengembang

Otorisasi penerapan Anda untuk menggunakan Amazon Comprehend.

Meskipun aplikasi Anda mungkin berhasil di-deploy, Anda juga harus menyediakan penerapan Anda dengan akses ke Amazon Comprehend. ComprehendFullAccessadalah kebijakan terkelola AWS yang menyediakan aplikasi yang diterapkan dengan izin untuk melakukan panggilan API ke Amazon Comprehend.

Lampirkan ComprehendFullAccess kebijakan ke aws-elasticbeanstalk-ec2-role (peran ini dibuat secara otomatis untuk instance Amazon Elastic Compute Cloud EC2 (Amazon) penerapan Anda) dengan menjalankan perintah berikut:

aws iam attach-role-policy --policy-arn arn:aws:iam::aws:policy/ComprehendFullAccess --role-name aws-elasticbeanstalk-ec2-role

penting

aws-elasticbeanstalk-ec2-roledibuat saat aplikasi Anda di-deploy. Anda harus menyelesaikan proses penerapan sebelum dapat melampirkan kebijakan AWS Identity and Access Management (IAM).

Pengembang, Arsitek keamanan

Kunjungi aplikasi yang Anda gunakan.

Setelah aplikasi Anda berhasil menyebarkan, Anda dapat mengunjunginya dengan menjalankan eb open perintah.

Anda juga dapat menjalankan eb status perintah untuk menerima detail tentang penerapan Anda. URL penyebaran tercantum di bawahCNAME.

Arsitek, Pengembang
TugasDeskripsiKeterampilan yang dibutuhkan

Otorisasi Elastic Beanstalk untuk mengakses model baru.

Pastikan Elastic Beanstalk memiliki izin akses yang diperlukan untuk titik akhir model baru Anda. Misalnya, jika Anda menggunakan SageMaker titik akhir Amazon, penerapan Anda harus memiliki izin untuk memanggil titik akhir. 

Untuk informasi selengkapnya tentang ini, lihat InvokeEndpointdi SageMaker dokumentasi Amazon.

Pengembang, Arsitek keamanan

Kirim data pengguna ke model baru.

Untuk mengubah model HTML yang mendasari dalam aplikasi ini, Anda harus mengubah file berikut:

  • comprehend_helper.py— Ini adalah skrip Python yang terhubung dengan Amazon Comprehend, memproses respons, dan mengembalikan hasil akhir ke aplikasi. Dalam skrip ini, Anda dapat merutekan data ke layanan AI lain di AWS Cloud atau Anda dapat mengirim data ke titik akhir model khusus. Kami menyarankan Anda juga memformat hasil dalam skrip ini untuk pemisahan logis dan kegunaan kembali pola ini.

  • application.py— Jika Anda mengubah nama comprehend_helper.py skrip atau fungsi, Anda perlu memperbarui application.py skrip aplikasi untuk mencerminkan perubahan tersebut.

Ilmuwan data

Perbarui visualisasi dasbor.

Biasanya, menggabungkan model ML baru berarti visualisasi harus diperbarui untuk mencerminkan hasil baru. Perubahan ini dibuat dalam file-file berikut:

  • templates/dashboard.html— Aplikasi prebuilt hanya menyumbang dua visualisasi dasar. Seluruh tata letak halaman dapat disesuaikan dalam file ini.

  • static/js/core.js— Skrip ini menangkap output yang diformat dari /data rute server Flask dan menggunakan Plotly untuk membuat visualisasi. Anda dapat menambahkan atau memperbarui grafik halaman.

Pengembang web
TugasDeskripsiKeterampilan yang dibutuhkan

Perbarui file persyaratan aplikasi Anda.

Sebelum mengirim perubahan ke Elastic Beanstalk, requirements.txt perbarui file untuk mencerminkan modul Python baru dengan menjalankan perintah berikut di direktori root aplikasi Anda:

pip freeze > requirements.txt

Pengembang Python

Pasang kembali lingkungan Elastic Beanstalk.

Untuk memastikan bahwa perubahan aplikasi Anda tercermin dalam penyebaran Elastic Beanstalk Anda, navigasikan ke direktori root aplikasi Anda dan jalankan perintah berikut:

eb deploy

Ini mengirimkan versi terbaru dari kode aplikasi ke penyebaran Elastic Beanstalk Anda yang ada.

Administrator sistem, Arsitek

Sumber daya terkait

Informasi tambahan

Daftar pemecahan masalah

Berikut ini adalah enam kesalahan umum dan solusinya.

Kesalahan 1

Unable to assume role "arn:aws:iam::xxxxxxxxxx:role/aws-elasticbeanstalk-ec2-role". Verify that the role exists and is configured correctly.

Solusi: Jika kesalahan ini terjadi saat Anda menjalankaneb create, buat contoh aplikasi di konsol Elastic Beanstalk untuk membuat profil instance default. Untuk informasi selengkapnya tentang ini, lihat Membuat lingkungan Elastic Beanstalk di dokumentasi AWS Elastic Beanstalk.

Kesalahan 2

Your WSGIPath refers to a file that does not exist.

Solusi: Kesalahan ini terjadi di log penerapan karena Elastic Beanstalk mengharapkan kode Flask diberi nama. application.py Jika Anda memilih nama yang berbeda, jalankan eb config dan edit WSGIPath seperti yang ditunjukkan pada contoh kode berikut:

aws:elasticbeanstalk:container:python: NumProcesses: '1' NumThreads: '15' StaticFiles: /static/=static/ WSGIPath: application.py

Pastikan Anda mengganti application.py dengan nama file Anda.

Anda juga dapat memanfaatkan Gunicorn dan Procfile. Untuk informasi selengkapnya tentang pendekatan ini, lihat Mengonfigurasi server WSGI dengan Procfile dalam dokumentasi AWS Elastic Beanstalk.

Kesalahan 3

Target WSGI script '/opt/python/current/app/application.py' does not contain WSGI application 'application'.

Solusi: Elastic Beanstalk mengharapkan variabel yang mewakili aplikasi Flask Anda diberi nama. application Pastikan bahwa application.py file menggunakan application sebagai nama variabel:

application = Flask(__name__)

Kesalahan 4

The EB CLI cannot find your SSH key file for keyname

Solusi: Gunakan EB CLI untuk menentukan key pair mana yang akan digunakan atau untuk membuat key pair untuk instance deployment EC2 Anda. Untuk mengatasi kesalahan, jalankan eb init -i dan salah satu opsi akan bertanya:

Do you want to set up SSH for your instances?

Tanggapi dengan Y membuat key pair atau menentukan key pair yang ada.

Kesalahan 5

Saya telah memperbarui kode saya dan menerapkan kembali tetapi penerapan saya tidak mencerminkan perubahan saya.

Solusi: Jika Anda menggunakan repositori Git dengan penerapan Anda, pastikan bahwa Anda menambahkan dan mengkomit perubahan Anda sebelum menerapkan ulang.

Kesalahan 6

Anda melihat pratinjau aplikasi Flask dari AWS Cloud9 IDE dan mengalami kesalahan.

Solusi: Untuk informasi selengkapnya tentang hal ini, lihat Mempratinjau aplikasi yang sedang berjalan di AWS Cloud9 IDE dalam dokumentasi AWS Cloud9.

Pemrosesan bahasa alami menggunakan Amazon Comprehend

Dengan memilih untuk menggunakan Amazon Comprehend, Anda dapat mendeteksi entitas kustom dalam dokumen teks individual dengan menjalankan analisis real-time atau pekerjaan batch asinkron. Amazon Comprehend juga memungkinkan Anda untuk melatih pengenalan entitas kustom dan model klasifikasi teks yang dapat digunakan secara real time dengan membuat titik akhir.

Pola ini menggunakan pekerjaan batch asinkron untuk mendeteksi sentimen dan entitas dari file input yang berisi beberapa dokumen. Contoh aplikasi yang disediakan oleh pola ini dirancang bagi pengguna untuk mengunggah file.csv yang berisi satu kolom dengan satu dokumen teks per baris. comprehend_helper.pyFile dalam hasil AI/ML model GitHub Visualize menggunakan repositori Flask dan AWS Elastic Beanstalk membaca file input dan mengirimkan input ke Amazon Comprehend untuk diproses.

BatchDetectEntities

Amazon Comprehend memeriksa teks kumpulan dokumen untuk entitas bernama dan mengembalikan entitas yang terdeteksi, lokasi, jenis entitas, dan skor yang menunjukkan tingkat kepercayaan Amazon Comprehend. Maksimal 25 dokumen dapat dikirim dalam satu panggilan API, dengan setiap dokumen berukuran lebih kecil dari 5.000 byte. Anda dapat memfilter hasil untuk hanya menampilkan entitas tertentu berdasarkan kasus penggunaan. Misalnya, Anda dapat melewati tipe ‘quantity’ entitas dan menetapkan skor ambang batas untuk entitas yang terdeteksi (misalnya, 0,75). Kami menyarankan Anda menjelajahi hasil untuk kasus penggunaan spesifik Anda sebelum memilih nilai ambang batas. Untuk informasi selengkapnya tentang ini, lihat BatchDetectEntitiesdi dokumentasi Amazon Comprehend.

BatchDetectSentiment

Amazon Comprehend memeriksa sekumpulan dokumen yang masuk dan mengembalikan sentimen yang berlaku untuk setiap dokumen (,,, atau). POSITIVE NEUTRAL MIXED NEGATIVE Maksimal 25 dokumen dapat dikirim dalam satu panggilan API, dengan setiap dokumen berukuran lebih kecil dari 5.000 byte. Menganalisis sentimen sangat mudah dan Anda memilih sentimen dengan skor tertinggi untuk ditampilkan dalam hasil akhir. Untuk informasi selengkapnya tentang ini, lihat BatchDetectSentimentdi dokumentasi Amazon Comprehend.

 

Penanganan konfigurasi labu

Server Flask menggunakan serangkaian variabel konfigurasi untuk mengontrol bagaimana server berjalan. Variabel ini dapat berisi output debug, token sesi, atau pengaturan aplikasi lainnya. Anda juga dapat menentukan variabel kustom yang dapat diakses saat aplikasi sedang berjalan. Ada beberapa pendekatan untuk mengatur variabel konfigurasi.

Dalam pola ini, konfigurasi didefinisikan config.py dan diwariskan di dalamapplication.py.

  • catatan

    config.pyberisi variabel konfigurasi yang diatur pada startup aplikasi. Dalam aplikasi ini, DEBUG variabel didefinisikan untuk memberitahu aplikasi untuk menjalankan server dalam modus debug. : Mode debug tidak boleh digunakan saat menjalankan aplikasi di lingkungan produksi. UPLOAD_FOLDERadalah variabel kustom yang didefinisikan untuk direferensikan nanti dalam aplikasi dan menginformasikannya di mana data pengguna yang diunggah harus disimpan.

  • application.pymemulai aplikasi Flask dan mewarisi pengaturan konfigurasi yang didefinisikan dalam. config.py Ini dilakukan oleh kode berikut:

application = Flask(__name__) application.config.from_pyfile('config.py')