Ssenarinin bir tərəfi maşın öyrənmə modelinin yaradılmasıdır. O, real dünyada istifadə olunmalı və istehlakçılar və tərtibatçılar üçün əlçatan olmalıdır.
Maşın öyrənmə modellərini yerləşdirməyin ən sadə və ən populyar yolu onları REST API-yə əlavə etməkdir.
FastAPI adlı məşhur kitabxana ilə bu gün tam olaraq bunu həyata keçirəcəyik.
Amma, nədir FastAPI?
FastAPI Python veb çərçivəsi müasir Python imkanlarından istifadə etmək üçün sıfırdan yaradılmışdır.
Müştərilərlə asinxron, paralel ünsiyyət üçün o, ASGI standartına uyğundur, eyni zamanda WSGI-dən istifadə edə bilir.
Son nöqtələr və marşrutlar həm asinxron funksiyalardan istifadə edə bilər. Bundan əlavə, FastAPI tipli, təmiz, müasir Python kodunda veb proqramların məhsuldar yaradılmasına imkan verir.
FastAPI-nin əsas istifadə nümunəsi adından da göründüyü kimi API son nöqtələrinin yaradılmasıdır.
İnteraktiv Swagger UI ehtiva edən OpenAPI standartından istifadə və ya Python lüğət məlumatlarını JSON kimi təqdim etmək buna nail olmağın hər iki yoludur. Bununla belə, FastAPI yalnız API-lər üçün deyil.
O, Jinja2 şablon mühərrikindən istifadə edərək standart veb səhifələr təklif etmək və veb çərçivəsinin edə biləcəyi demək olar ki, hər şeyə əlavə olaraq WebSockets-dən istifadə edən proqramlara xidmət etmək üçün istifadə edilə bilər.
Bu yazıda biz sadə maşın öyrənmə modeli hazırlayacağıq və sonra onu yerləşdirmək üçün FastAPI-dən istifadə edəcəyik. Başlayaq.
FastAPI-nin quraşdırılması və ilk API-nin yaradılması
Əvvəlcə kitabxananın və ASGI serverinin quraşdırılması tələb olunur; ya Uvuicorn, ya da Hypercorn işləyəcək. Terminala aşağıdakı əmri daxil etməklə işləyir:
Artıq API yaradılmışdır, siz üstünlük verdiyiniz kod redaktorundan istifadə edib ona baxa bilərsiniz. Başlamaq üçün ml_model.py adlı Python skripti yaradın. Öz adınızı fərqli adlandıra bilərsiniz, lakin bu yazı üçün mən bu fayla ml_model.py kimi istinad edəcəyəm.
İki son nöqtə ilə sadə API yaratmaq üçün aşağıdakı tapşırıqları yerinə yetirməlisiniz:
- FastAPI və Uvicorn kitabxanalarını idxal edin.
- FastAPI sinif nümunəsini qurun.
- İndeks səhifəsində sadə JSON obyekti yaradan ilk marşrutu elan edin.
- Fərdi mesajla sadə JSON obyektini təmin edən ikinci marşrutu elan edin. Ad parametri birbaşa URL-dən götürülür (məsələn, https://127.0.0.1:8000/Jay).
- API-ni işə salmaq üçün Uvicorn-dan istifadə edin.
Bu beş mərhələnin həyata keçirilməsi aşağıdakı kod bitində göstərilir, yəni. sadə API yaratmaq
Hər şey hazırdır! Gəlin APImizi dərhal işə salaq. Bunu etmək üçün ml model.py faylının yanında Terminal pəncərəsini açın. Sonra, aşağıdakıları daxil edin:
Enter düyməsini basın. Davam etməzdən əvvəl gəlin bu iddianı təkzib edək. Birinci proqram genişləndirmə olmadan yalnız Python fayl adından istifadə edir. İkinci proqram FastAPI nümunənizlə eyni ada malik olmalıdır.
-reload istifadə edərək, siz API-yə faylı sıfırdan başlamaq əvəzinə onu saxladığınız zaman avtomatik olaraq yenidən yükləməsini istədiyinizi bildirirsiniz.
İndi brauzeri işə salın və https://127.0.0.1:8000 ünvanına keçin; nəticə aşağıdakı kimi görünməlidir:
İndi FastAPI istifadə edərək sadə API yaratmağı başa düşürsünüz.
Maşın Öyrənmə modelinin qurulması və öyrədilməsi
Heç bir məlumat toplamadan və ya təhlil etmədən sadəcə sadə bir model hazırlayacağıq. Bunlar modellərin yerləşdirilməsi ilə əlaqəli deyil və müzakirə olunan mövzu üçün vacib deyil.
Iris verilənlər bazasına əsaslanan model eyni istifadə edərək quraşdırıla bilər neyron şəbəkə quraşdırma üsulu.
Və biz bunu edəcəyik: yükləyin Iris verilənlər toplusu və modeli öyrətmək. Bu sadə olmayacaq. Başlamaq üçün jaysmlmodel.py adlı bir fayl yaradın.
Orada aşağıdakıları edəcəksiniz:
- İdxal - Sizə pandalar, scikit-RandomForecastClassifier, öyrənmə pydantic-in BaseModel-i (nə səbəbini növbəti addımda öyrənəcəksiniz) və modelləri saxlamaq və yükləmək üçün joblib lazımdır.
- Əsas modeldən miras qalan IrisSpecies sinfini elan edin. Bu sinif yalnız bir çiçək növünü proqnozlaşdırmaq üçün lazım olan sahələri ehtiva edir (bununla bağlı növbəti bölmədə ətraflı)
- Sinif yaradın. IrisModel model təlimi və proqnozlaşdırma vasitəsidir.
- IrisModel daxilində _train model adlı metodu elan edin. Random Forests texnikasından istifadə edərək modelləri hazırlamaq üçün istifadə olunur. Təlim edilmiş model prosedurla geri qaytarılır.
- IrisModel daxilində proqnozlaşdırılan növ funksiyasını elan edin. 4 giriş faktoru (çiçək ölçüləri) əsasında proqnozlaşdırmaq üçün istifadə olunur. Həm proqnoz (çiçək növləri), həm də proqnozlaşdırma ehtimalı alqoritm tərəfindən qaytarılır.
- IrisModel-də konstruktoru elə dəyişin ki, o, İris verilənlər dəstini yükləsin və qovluqda yoxdursa, modeli öyrətsin. Bu, dəfələrlə yeni modellərin hazırlanması problemini həll edir. joblib kitabxanası modeli yükləmək və saxlamaq üçün istifadə olunur.
Budur bütün kod:
Ümid edirəm ki, yuxarıdakı siyahı və şərhlər, yaratmaq üçün kifayət qədər miqdarda kod olsa da, başa düşməyi asanlaşdırdı. İndi bu model hazırlanmışdır, gəlin onun proqnozlaşdırma imkanlarını a üzərində dərc edək REST API.
Tam REST API-nin qurulması
ml_model.py faylına qayıdın və bütün məlumatları təmizləyin. Boilerplate əvvəlki ilə eyni olacaq, lakin biz boş bir faylla yenidən başlamalıyıq.
Siz bu dəfə yalnız bir son nöqtəni təyin edəcəksiniz, o da çiçəyin növünü müəyyən etmək üçün istifadə olunandır. Əvvəlki bölmədə elan edilmiş IrisModel.predict types(), proqnozu yerinə yetirmək üçün bu son nöqtə ilə çağırılır.
Sorğu növü digər böyük dəyişiklikdir. Parametrləri URL-də deyil, JSON-da ötürmək üçün istifadə edərkən POST-dan istifadə etməyiniz tövsiyə olunur maşın təlim API'lər.
Əgər siz asınızsa, yuxarıdakı cümlə boşboğaz kimi səslənə bilər məlumat alimi, amma bu yaxşıdır. Modellərin dizaynı və tətbiqi üçün HTTP sorğuları və REST API-ləri üzrə mütəxəssis olmaq lazım deyil.
ml model.py üçün tapşırıqlar az və sadədir:
- Siz əvvəllər yaradılmış jaymlmodel.py faylından aşağıdakıları idxal etməlisiniz: uvicorn, FastAPI, IrisModel və IrisSpecies.
- FastAPI və IrisModel nümunələrini yaradın.
- Proqnozlar etmək üçün https://127.0.0.1:8000/predict ünvanında funksiya elan edin.
- IrisModel.predict types() metodu IrisSpecies tipli obyekti qəbul edir, onu lüğətə çevirir və sonra onu qaytarır. Qaytarmalar gözlənilən sinif və proqnozlaşdırılan ehtimaldır.
- API icra etmək üçün uvicorn istifadə edin.
Yenə də burada bütün faylın kodu şərhləri ilə birlikdə:
Sizə lazım olan hər şey budur. Növbəti addımda API-ni sınaqdan keçirək.
API sınaqdan keçirilir
API-ni yerinə yetirmək üçün Terminala aşağıdakı sətri yenidən daxil edin: uvicorn ml_model:app –reload
Sənədlər səhifəsi belə görünür:
Beləliklə, bu gün üçün. Bundan sonrakı hissədə isə yekunlaşdıraq.
Nəticə
Bu gün siz həm sadə API nümunəsindən, həm də sadə maşın öyrənmə nümunəsindən istifadə edərək FastAPI-nin nə olduğunu və ondan necə istifadə olunacağını öyrəndiniz. Siz həmçinin API sənədlərini necə yaratmağı və nəzərdən keçirməyi, eləcə də onu sınaqdan keçirməyi öyrəndiniz.
Bu, bir parça üçün çox şeydir, ona görə də düzgün başa düşmək üçün bir neçə oxunuş tələb olunarsa, təəccüblənməyin.
Xoşbəxt kodlaşdırma.
Cavab yaz