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
Prasyarat dan batasan
Prasyarat
Akun AWS yang aktif.
AWS Command Line Interface (AWS CLI), diinstal dan dikonfigurasi pada mesin lokal Anda. Untuk informasi selengkapnya tentang ini, lihat Dasar-dasar konfigurasi dalam dokumentasi AWS CLI. Anda juga dapat menggunakan lingkungan pengembangan terintegrasi AWS Cloud9 (IDE); untuk informasi selengkapnya tentang ini, lihat tutorial Python untuk AWS Cloud9 dan Mempratinjau aplikasi yang sedang berjalan di AWS Cloud9 IDE dalam dokumentasi AWS Cloud9.
Pemberitahuan: AWS Cloud9 tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS Cloud9 dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya
Pemahaman tentang kerangka aplikasi web Flask. Untuk informasi selengkapnya tentang Flask, lihat Quickstart dalam dokumentasi
Flask. Python versi 3.6 atau yang lebih baru, diinstal dan dikonfigurasi. Anda dapat menginstal Python dengan mengikuti petunjuk dari Menyiapkan lingkungan pengembangan Python Anda di dokumentasi AWS Elastic Beanstalk.
Elastic Beanstalk Command Line Interface (EB CLI), diinstal dan dikonfigurasi. Untuk informasi selengkapnya tentang ini, lihat Menginstal CLI EB dan Mengonfigurasi CLI EB dari dokumentasi AWS Elastic Beanstalk.
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 aplikasiuserData— Menyimpan data pengguna yang diunggahapplication.py— File aplikasi Flaskcomprehend_helper.py— Fungsi untuk melakukan panggilan API ke Amazon Comprehendconfig.py— File konfigurasi aplikasirequirements.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.

/adalah root aplikasi dan mengarahkan pengguna keupload.htmlhalaman (disimpan dalamtemplatesdirektori)./saveFileadalah rute yang dipanggil setelah pengguna mengunggah file. Rute ini menerimaPOSTpermintaan melalui formulir HTML, yang berisi file yang diunggah oleh pengguna. File disimpan diuserDatadirektori dan rute mengarahkan pengguna ke rute./dashboard/dashboardmengirim pengguna kedashboard.htmlhalaman. Dalam HTML halaman ini, ia menjalankan JavaScript kodestatic/js/core.jsyang membaca data dari/datarute 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 fungsicomprehend_helper.pyuntuk 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

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
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Kloning GitHub repositori. | Tarik kode aplikasi dari hasil AI/ML model GitHub Visualize menggunakan repositori Flask dan AWS Elastic Beanstalk
catatanPastikan Anda mengonfigurasi kunci SSH Anda dengan GitHub. | Developer |
Instal modul Python. | Setelah Anda mengkloning repositori,
| Pengembang Python |
Uji aplikasi secara lokal. | Mulai server Flask dengan menjalankan perintah berikut:
Ini mengembalikan informasi tentang server yang sedang berjalan. Anda harus dapat mengakses aplikasi dengan membuka browser dan mengunjungi http://localhost:5000 catatanJika Anda menjalankan aplikasi di AWS Cloud9 IDE, Anda perlu mengganti
Anda harus mengembalikan perubahan ini sebelum penerapan. | Pengembang Python |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Luncurkan aplikasi Elastic Beanstalk. | Untuk meluncurkan proyek Anda sebagai aplikasi Elastic Beanstalk, jalankan perintah berikut dari direktori root aplikasi Anda:
penting
Jalankan | Arsitek, Pengembang |
Menyebarkan lingkungan Elastic Beanstalk. | Jalankan perintah berikut dari direktori root aplikasi:
catatan
| 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. Lampirkan
penting
| Pengembang, Arsitek keamanan |
Kunjungi aplikasi yang Anda gunakan. | Setelah aplikasi Anda berhasil menyebarkan, Anda dapat mengunjunginya dengan menjalankan Anda juga dapat menjalankan | Arsitek, Pengembang |
| Tugas | Deskripsi | Keterampilan 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:
| 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:
| Pengembang web |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Perbarui file persyaratan aplikasi Anda. | Sebelum mengirim perubahan ke Elastic Beanstalk,
| 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:
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
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
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,DEBUGvariabel 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.pyIni dilakukan oleh kode berikut:
application = Flask(__name__) application.config.from_pyfile('config.py')