Satu aspek senario ialah mencipta model pembelajaran mesin. Ia mesti boleh digunakan dalam dunia sebenar dan tersedia kepada pengguna dan pembangun.
Cara paling mudah dan paling popular untuk menggunakan model pembelajaran mesin adalah dengan menyertakannya dalam API REST.
Dengan perpustakaan popular yang dipanggil FastAPI, itulah yang akan kami capai hari ini.
Tapi, apalah FastAPI?
Rangka kerja web FastAPI Python dicipta dari bawah untuk memanfaatkan keupayaan Python kontemporari.
Untuk komunikasi serentak dan tak segerak dengan pelanggan, ia mematuhi piawaian ASGI, sementara ia juga mampu menggunakan WSGI.
Titik akhir dan laluan boleh menggunakan fungsi async. Selain itu, FastAPI membolehkan penciptaan apl web yang produktif dalam kod Python kontemporari yang dibayangkan, bersih dan kontemporari.
Kes penggunaan utama FastAPI ialah, seperti namanya, mencipta titik akhir API.
Menggunakan standard OpenAPI, yang termasuk UI Swagger interaktif, atau menyediakan data kamus Python sebagai JSON ialah kedua-dua cara mudah untuk mencapai ini. Walau bagaimanapun, FastAPI bukan sahaja untuk API.
Ia boleh digunakan untuk menawarkan halaman web standard menggunakan enjin templat Jinja2 dan untuk menyediakan aplikasi yang menggunakan WebSockets, sebagai tambahan kepada hampir semua perkara lain yang boleh dilakukan oleh rangka kerja web.
Dalam artikel ini, kami akan membangunkan model pembelajaran mesin yang mudah dan kemudian menggunakan FastAPI untuk menggunakan model tersebut. Mari kita mulakan.
Pemasangan FastAPI dan penciptaan API pertama
Memasang perpustakaan dan pelayan ASGI diperlukan terlebih dahulu; sama ada Uvuicorn atau Hypercorn akan berfungsi. Ia berfungsi dengan memasukkan arahan berikut ke dalam Terminal:
Memandangkan API telah dibuat, anda boleh menggunakan editor kod pilihan anda dan menyemak imbasnya. Buat skrip Python yang dipanggil ml_model.py untuk bermula. Anda dialu-alukan untuk memberikan nama anda yang berbeza, tetapi demi siaran ini, saya akan merujuk fail ini sebagai ml_model.py.
Untuk mencipta API mudah dengan dua titik akhir, anda mesti menyelesaikan tugasan berikut:
- Import pustaka FastAPI dan Uvicorn.
- Sediakan contoh kelas FastAPI.
- Isytiharkan laluan pertama, yang, pada halaman indeks, menghasilkan objek JSON yang mudah.
- Isytiharkan laluan kedua, yang menyediakan objek JSON yang mudah dengan mesej tersuai. Parameter nama diambil terus dari URL (contohnya, https://127.0.0.1:8000/Jay).
- Gunakan Uvicorn untuk menjalankan API.
Melaksanakan lima peringkat ini ditunjukkan dalam bit kod berikut iaitu. mencipta API mudah
Semua selesai! Mari lancarkan API kami dengan segera. Buka tetingkap Terminal di sebelah fail model.py ml untuk mencapai ini. Seterusnya, masukkan yang berikut:
kekunci Enter. Sebelum meneruskan, mari kita menafikan dakwaan ini. Apl pertama menggunakan nama fail Python sahaja, tanpa sambungan. Apl kedua mesti mempunyai nama yang sama dengan tika FastAPI anda.
Dengan menggunakan -reload, anda memberitahu API bahawa anda mahu ia memuat semula secara automatik apabila anda menyimpan fail dan bukannya bermula dari awal.
Sekarang lancarkan penyemak imbas dan navigasi ke https://127.0.0.1:8000; hasilnya akan kelihatan seperti berikut:
Anda kini memahami cara mencipta API mudah menggunakan FastAPI.
Membina dan melatih model Pembelajaran Mesin
Tanpa mengumpul atau menganalisis sebarang data, kami hanya akan melatih model mudah. Ini tidak berkaitan dengan penggunaan model dan tidak penting untuk topik yang sedang dibincangkan.
Model berdasarkan set data Iris boleh dipasang menggunakan model yang sama rangkaian neural kaedah pemasangan.
Dan kami akan melakukannya: muat turun Dataset Iris dan melatih model. Itu tidak akan mudah. Untuk memulakan, buat fail bernama jaysmlmodel.py.
Di dalamnya, anda akan melakukan perkara berikut:
- Import — Anda memerlukan panda, scikit-RandomForecastClassifier, belajar BaseModel pydantic (anda akan mengetahui sebabnya dalam langkah berikut), dan joblib untuk menyimpan dan memuatkan model.
- Isytiharkan kelas IrisSpecies yang mewarisi daripada model asas. Kelas ini hanya mengandungi medan yang diperlukan untuk meramalkan satu spesies bunga (lebih lanjut mengenainya dalam bahagian seterusnya)
- Buat kelas. IrisModel ialah alat latihan dan ramalan model.
- Isytihar kaedah bernama _train model dalam IrisModel. Ia digunakan untuk melatih model menggunakan teknik Hutan Rawak. Model terlatih dikembalikan mengikut prosedur.
- Isytiharkan fungsi spesies yang diramalkan di dalam IrisModel. Ia digunakan untuk meramal berdasarkan 4 faktor input (ukuran bunga). Kedua-dua ramalan (spesies bunga) dan kebarangkalian ramalan dikembalikan oleh algoritma.
- Tukar pembina dalam IrisModel supaya ia memuatkan set data Iris dan melatih model jika ia tiada daripada folder. Ini menyelesaikan masalah berulang kali melatih model baharu. Pustaka joblib digunakan untuk memuatkan dan menyimpan model.
Berikut ialah keseluruhan kod:
Saya harap senarai di atas dan komen menjadikannya mudah untuk difahami walaupun ini adalah jumlah kod yang cukup besar untuk dibuat. Memandangkan model ini telah dibangunkan, mari terbitkan keupayaan ramalannya lebih daripada satu REST API.
Membina API REST penuh
Kembali ke fail ml_model.py dan bersihkan semua data. Plat dandang pada dasarnya adalah sama seperti yang anda miliki sebelum ini, tetapi kita harus memulakan semula dengan fail kosong.
Anda hanya akan menentukan satu titik akhir kali ini, iaitu yang digunakan untuk menentukan jenis bunga. IrisModel.predict species(), yang telah diisytiharkan dalam bahagian sebelumnya, dipanggil oleh titik akhir ini untuk melaksanakan ramalan.
Jenis permintaan adalah perubahan besar yang lain. Untuk menghantar parameter dalam JSON dan bukannya URL, adalah disyorkan agar anda menggunakan POST semasa menggunakan pembelajaran mesin API.
Ayat di atas mungkin kedengaran seperti omong kosong jika anda seorang saintis data, tetapi tidak mengapa. Untuk mereka bentuk dan menggunakan model, seseorang tidak semestinya perlu menjadi pakar dalam permintaan HTTP dan REST API.
Tugas untuk ml model.py adalah sedikit dan mudah:
- Anda mesti mengimport yang berikut daripada fail jaymlmodel.py yang dibuat sebelum ini: uvicorn, FastAPI, IrisModel dan IrisSpecies.
- Buat contoh FastAPI dan IrisModel.
- Isytihar fungsi di https://127.0.0.1:8000/predict untuk membuat ramalan.
- Kaedah IrisModel.predict species() menerima objek jenis IrisSpecies, mengubahnya kepada kamus, dan kemudian mengembalikannya. Pulangan ialah kelas yang dijangkakan dan kebarangkalian yang diramalkan.
- Gunakan uvicorn untuk melaksanakan API.
Sekali lagi, berikut ialah keseluruhan kod fail bersama dengan ulasannya:
Itu sahaja yang anda perlu lakukan. Dalam langkah seterusnya, mari kita uji API.
Menguji API
Masukkan semula baris berikut ke dalam Terminal untuk melaksanakan API: uvicorn ml_model:app –reload
Beginilah cara halaman dokumentasi muncul:
Jadi itu sahaja untuk hari ini. Pada bahagian selepas ini, mari kita simpulkan.
Kesimpulan
Hari ini, anda mempelajari apa itu FastAPI dan cara menggunakannya, menggunakan contoh API mudah dan contoh pembelajaran mesin ringkas. Anda juga telah mempelajari cara membuat dan melihat dokumentasi API, serta cara mengujinya.
Itu banyak untuk satu bahagian, jadi jangan terkejut jika ia memerlukan beberapa bacaan untuk memahami dengan betul.
Selamat pengekodan.
Sila tinggalkan balasan anda