Stsenariyning bir jihati mashinani o'rganish modelini yaratishdir. U haqiqiy dunyoda ishlatilishi va iste'molchilar va ishlab chiquvchilar uchun mavjud bo'lishi kerak.
Mashinani o'rganish modellarini joylashtirishning eng oddiy va eng mashhur usuli ularni REST API-ga qo'shishdir.
FastAPI deb nomlangan mashhur kutubxona bilan bugungi kunda aynan shu narsaga erishamiz.
Lekin, nima FastAPI?
FastAPI Python veb ramkasi zamonaviy Python imkoniyatlaridan foydalanish uchun boshidan yaratilgan.
Mijozlar bilan asinxron, bir vaqtda muloqot qilish uchun u ASGI standartiga amal qiladi, shu bilan birga u WSGI dan foydalanishga qodir.
Oxirgi nuqtalar va marshrutlar asinxron funksiyalardan foydalanishi mumkin. Bundan tashqari, FastAPI veb-ilovalarni turiga ishora qilingan, toza, zamonaviy Python kodida samarali yaratish imkonini beradi.
FastAPI-ning asosiy foydalanish holati, nomidan ko'rinib turibdiki, API so'nggi nuqtalarini yaratishdir.
Interaktiv Swagger UI-ni o'z ichiga olgan OpenAPI standartidan foydalanish yoki Python lug'at ma'lumotlarini JSON sifatida taqdim etish bunga erishishning oddiy usullaridir. Biroq, FastAPI nafaqat API uchun.
U Jinja2 shablon mexanizmidan foydalangan holda standart veb-sahifalarni taklif qilish va WebSockets-dan foydalanadigan ilovalarga xizmat ko'rsatish uchun ishlatilishi mumkin, bundan tashqari, veb-ramka qila oladigan deyarli hamma narsa.
Ushbu maqolada biz to'g'ridan-to'g'ri mashinani o'rganish modelini ishlab chiqamiz va keyin uni joylashtirish uchun FastAPI dan foydalanamiz. Keling, boshlaymiz.
FastAPI-ni o'rnatish va birinchi API-ni yaratish
Avval kutubxona va ASGI serverini o'rnatish talab qilinadi; Uvuicorn yoki Hypercorn ishlaydi. U terminalga quyidagi buyruqni kiritish orqali ishlaydi:
Endi API yaratilgan, siz o'zingiz yoqtirgan kod muharriridan foydalanishingiz va uni ko'rib chiqishingiz mumkin. Boshlash uchun ml_model.py deb nomlangan Python skriptini yarating. Siz o'zingiznikiga boshqa nom berishingiz mumkin, ammo bu xabar uchun men ushbu faylga ml_model.py deb murojaat qilaman.
Ikki so'nggi nuqtaga ega oddiy API yaratish uchun siz quyidagi vazifalarni bajarishingiz kerak:
- FastAPI va Uvicorn kutubxonalarini import qiling.
- FastAPI sinf namunasini o'rnating.
- Indeks sahifasida to'g'ridan-to'g'ri JSON ob'ektini ishlab chiqaradigan birinchi marshrutni e'lon qiling.
- Oddiy JSON ob'ektini moslashtirilgan xabar bilan ta'minlaydigan ikkinchi marshrutni e'lon qiling. Name parametri to'g'ridan-to'g'ri URL manzilidan olinadi (masalan, https://127.0.0.1:8000/Jay).
- API-ni ishga tushirish uchun Uvicorn-dan foydalaning.
Ushbu besh bosqichni amalga oshirish quyidagi kod bitida ko'rsatilgan, ya'ni. oddiy API yaratish
Hammasi tayyor! Keling, darhol API-ni ishga tushiraylik. Buni amalga oshirish uchun ml model.py fayli yonidagi Terminal oynasini oching. Keyin quyidagilarni kiriting:
Enter tugmasi. Davom etishdan oldin, keling, ushbu tasdiqni rad etaylik. Birinchi ilova kengaytmasiz faqat Python fayl nomidan foydalanadi. Ikkinchi ilova FastAPI namunangiz bilan bir xil nomga ega bo'lishi kerak.
-reload-dan foydalanib, siz API-ga faylni noldan boshlashdan ko'ra, faylni saqlaganingizda uni avtomatik ravishda qayta yuklashni xohlayotganingizni bildirasiz.
Endi brauzerni ishga tushiring va https://127.0.0.1:8000 manziliga o'ting; natija quyidagicha ko'rinishi kerak:
Endi FastAPI yordamida oddiy API yaratishni tushunasiz.
Machine Learning modelini yaratish va o'rgatish
Hech qanday ma'lumot to'plamasdan yoki tahlil qilmasdan, biz oddiy modelni o'rgatamiz. Bular modellarni joylashtirish bilan bog'liq emas va ko'rib chiqilayotgan mavzu uchun muhim emas.
Iris ma'lumotlar to'plamiga asoslangan model xuddi shu yordamida o'rnatilishi mumkin neyron tarmoq o'rnatish usuli.
Va biz buni qilamiz: yuklab oling Iris ma'lumotlar to'plami va modelni o'rgatish. Bu oddiy bo'lmaydi. Boshlash uchun jaysmlmodel.py nomli fayl yarating.
Unda siz quyidagilarni bajarasiz:
- Importlar — Sizga pandalar, scikit-RandomForecastClassifier, Learn’s pydantic’ning BaseModel’i (sababini keyingi bosqichda bilib olasiz) va modellarni saqlash va yuklash uchun joblib kerak bo‘ladi.
- Asosiy modeldan meros bo'lgan IrisSpecies sinfini e'lon qiling. Bu sinf faqat bitta gul turini bashorat qilish uchun zarur bo'lgan maydonlarni o'z ichiga oladi (keyingi bo'limda bu haqda batafsilroq)
- Sinf yarating. IrisModel - bu modelni o'rgatish va bashorat qilish vositasi.
- IrisModel ichida _train model deb nomlangan usulni e'lon qiling. U Tasodifiy o'rmonlar texnikasidan foydalangan holda modellarni tayyorlash uchun ishlatiladi. O'qitilgan model protsedura bilan qaytariladi.
- IrisModel ichida taxmin qilingan tur funksiyasini e'lon qiling. U 4 ta kirish omili (gul o'lchovlari) asosida prognoz qilish uchun ishlatiladi. Prognoz (gul turlari) ham, bashorat qilish ehtimoli ham algoritm tomonidan qaytariladi.
- IrisModel-dagi konstruktorni o'zgartiring, shunda u Iris ma'lumotlar to'plamini yuklaydi va agar u jildda yo'q bo'lsa, modelni o'rgatadi. Bu yangi modellarni qayta-qayta o'qitish muammosini hal qiladi. joblib kutubxonasi modelni yuklash va saqlash uchun ishlatiladi.
Mana butun kod:
Umid qilamanki, yuqoridagi ro'yxat va sharhlar tushunishni osonlashtirdi, garchi bu yaratish uchun juda katta miqdordagi kod bo'lsa ham. Endi ushbu model ishlab chiqilgandan so'ng, keling, uning bashorat qilish imkoniyatlarini e'lon qilaylik REST API.
To'liq REST API yaratish
ml_model.py fayliga qayting va barcha ma'lumotlarni tozalang. Qozon plitasi aslida oldingisi bilan bir xil bo'ladi, lekin biz bo'sh fayldan boshlashimiz kerak.
Bu safar siz faqat bitta oxirgi nuqtani aniqlaysiz, bu gul turini aniqlash uchun ishlatiladi. Oldingi bo'limda e'lon qilingan IrisModel.predict types(), bashoratni amalga oshirish uchun ushbu oxirgi nuqta tomonidan chaqiriladi.
So'rov turi boshqa katta o'zgarishdir. Parametrlarni URL emas, balki JSON formatida uzatish uchun foydalanayotganda POST dan foydalanish tavsiya etiladi kompyuterni o'rganish API-lar.
Agar siz a bo'lsangiz, yuqoridagi jumla gibberish kabi eshitilgan bo'lishi mumkin ma'lumotlar olimi, lekin bu yaxshi. Modellarni loyihalash va joylashtirish uchun HTTP so'rovlari va REST API-lari bo'yicha mutaxassis bo'lish shart emas.
ml model.py uchun vazifalar kam va sodda:
- Oldindan yaratilgan jaymlmodel.py faylidan quyidagilarni import qilishingiz kerak: uvicorn, FastAPI, IrisModel va IrisSpecies.
- FastAPI va IrisModel misollarini yarating.
- Bashorat qilish uchun funksiyani https://127.0.0.1:8000/predict manzilida e'lon qiling.
- IrisModel.predict types() usuli IrisSpecies tipidagi ob'ektni oladi, uni lug'atga aylantiradi va keyin uni qaytaradi. Qaytish kutilgan sinf va taxmin qilingan ehtimollikdir.
- APIni bajarish uchun uvicorn-dan foydalaning.
Shunga qaramay, bu erda butun faylning kodi sharhlari bilan birga:
Siz qilishingiz kerak bo'lgan hamma narsa shu. Keyingi bosqichda APIni sinab ko'ramiz.
API sinovdan o'tkazilmoqda
APIni ishga tushirish uchun terminalga quyidagi qatorni qayta kiriting: uvicorn ml_model:app – qayta yuklash
Hujjatlar sahifasi shunday ko'rinadi:
Demak, bugungi kun uchun. Bundan keyingi qismda xulosa qilaylik.
Xulosa
Bugun siz oddiy API misoli va oddiy mashinani o'rganish misolidan foydalanib, FastAPI nima ekanligini va undan qanday foydalanishni bilib oldingiz. Shuningdek, siz API hujjatlarini qanday yaratish va ko‘rishni, shuningdek, uni qanday sinab ko‘rishni o‘rgandingiz.
Bitta asar uchun bu juda ko'p, shuning uchun to'g'ri tushunish uchun bir necha o'qish kerak bo'lsa, hayron bo'lmang.
Baxtli kodlash.
Leave a Reply