Implementarea modelelor de învățare automată pe Heroku
Publicat: 2021-01-05Învățarea automată este un proces continuu care implică extragerea datelor, curățarea, alegerea caracteristicilor importante, construirea modelului, validarea și implementarea pentru a testa modelul pe date nevăzute.
În timp ce faza inițială de inginerie a datelor și de construire a modelului este un proces destul de obositor și necesită mult timp pentru a fi petrecut cu Data, implementarea modelului poate părea simplă, dar este un proces critic și depinde de cazul de utilizare pe care doriți să îl vizați. Puteți oferi modelul utilizatorilor de telefonie mobilă, site-uri web, dispozitive inteligente sau prin orice alt dispozitiv IoT.
Se poate alege să integreze modelul în aplicația principală, să îl includă în SDLC sau în cloud. Există diverse strategii de implementare și rulare a modelului în platforma cloud, ceea ce pare o opțiune mai bună pentru majoritatea cazurilor, datorită disponibilității unor instrumente precum Google Cloud Platform, Azure, Amazon Web Services și Heroku.
În timp ce puteți opta pentru a expune modelul în modul Pub/Sub, API (Application Program Interface) sau Wrapper-ul REST este mai frecvent utilizat pentru a implementa modelul în producție. Pe măsură ce complexitatea modelului crește, sunt desemnate diferite echipe pentru a gestiona astfel de situații cunoscute în mod obișnuit ca ingineri de învățare automată. Cu această multă introducere, să vedem cum să implementăm un model de învățare automată ca API pe platforma Heroku.
Cuprins
Ce este Heroku?
Heroku este o platformă ca instrument de serviciu care permite dezvoltatorilor să-și găzduiască codul fără server. Ceea ce înseamnă aceasta este că se pot dezvolta scripturi care să servească unul sau altul în scopuri specifice. Platforma Heroku este ea însăși găzduită pe AWS (Amazon Web Services), care este o infrastructură ca instrument de serviciu.
Heroku este o platformă gratuită, dar limitată la 500 de ore de funcționare. Aplicațiile sunt găzduite ca un dyno care, după o inactivitate de 30 de minute, intră în modul de repaus. Acest lucru vă asigură că aplicația dvs. nu consumă tot timpul liber în timpul inactivității. Platforma acceptă Ruby, Java, PHP, Python, Node, Go, Scala. Majoritatea începătorilor în știința datelor se referă la această platformă pentru a avea o experiență de rulare și implementare a unui model în cloud.

Pregatirea Modelului
Acum că sunteți la curent cu această platformă, să pregătim modelul pentru aceeași. Când un model de învățare automată este antrenat, parametrii corespunzători sunt stocați în memoria însăși. Acest model trebuie să fie exportat într-un fișier separat, astfel încât să putem încărca direct acest model, să transmitem date nevăzute și să obținem rezultate.
De obicei sunt practicate diferite formate de model, cum ar fi Pickle, job-lib care convertește modelul de obiect Python într-un flux de biți, ONNX, PMML sau MOJO care este un format de export H20.ai și oferă modelul pentru a fi integrat și în aplicațiile Java. Pentru simplitate, luați în considerare că dorim să exportăm modelul prin pickle, apoi puteți face acest lucru prin:
import murat
Pkl_Filename = „model.pkl”
cu open(Pkl_Filename, 'wb') ca fișier:
pickle.dump(nume_model, fișier)
Modelul este acum stocat într-un fișier separat și gata de a fi folosit integrat într-un API.
Logica serverului
Pentru a oferi acces la acest model pentru predicții, avem nevoie de un cod de server care poate redirecționa și gestiona toate solicitările de pe partea clientului. Python acceptă cadre de dezvoltare web, iar unul celebru este Flask.
Este un cadru minimalist care permite configurarea unui server cu câteva linii de cod. Deoarece este un pachet minim, o mulțime de funcționalități precum autentificarea și natura RESTful nu sunt acceptate în mod explicit. Acestea pot fi integrate cu extensii.
O altă opțiune este să optați pentru cadrul nou lansat FastAPI. Este mult mai rapid, scalabil, bine documentat și vine cu o mulțime de pachete integrate. Deocamdată, să continuăm cu balonul pentru a configura o rută de predicție simplă.
din balon import Balon
import murat
aplicație = Balon(__nume__)
cu open(Filename, 'rb') ca fișier:
model = pickle.load(fișier)
@app.route('/predict', methods = ['GET', 'POST'])

def pred():
# implementați logica pentru a obține parametri fie prin interogare, fie prin încărcare utilă
predictie = model.predict([parametrii obtinuti])
returnează {'rezultat': predicție}
Acesta este un cod brut pentru a arăta cum să procedați cu logica serverului. Există diverse strategii pe care le puteți opta pentru o implementare mai bună.
Consultați: Ghid pentru implementarea modelelor ML folosind Streamlit
Configurarea fișierelor de implementare
Heroku necesită o listă cu toate dependențele cerute de aplicația noastră. Acesta se numește fișierul cerințelor. Este un fișier text care listează toate bibliotecile externe pe care le utilizează aplicația. În acest exemplu, conținutul fișierului ar conține:
balon
sklearn
numpy </p>
panda
gunicorn
Ultima bibliotecă, gunicorn ne permite să setăm implementarea serverului WSGI care formează interfața pentru client și serverul care gestionează traficul HTTP. Heroku solicită, de asemenea, un alt fișier cunoscut sub numele de Procfile, care este utilizat pentru a specifica punctul de intrare al aplicației. Luați în considerare că fișierul logic al serverului este salvat cu numele main.py, atunci comanda care trebuie introdusă în acest fișier este:
web: gunicorn main:app

„web” este tipul de dyno pe care îl implementăm, „gunicorn” acționează ca mediator pentru a transmite solicitarea codului de server „principal” și a căuta „aplicație” în „principal”. Aplicația se ocupă de toate rutele de aici.
Desfăşurare finală
Toate pregătirile sunt făcute, iar acum este timpul să rulați aplicația în cloud. Creați un cont dacă nu este pe Heroku, faceți clic pe creați o aplicație, alegeți orice regiune. După aceea, conectați-vă contul GitHub și alegeți depozitul care conține aceste fișiere: cod server, model.pkl, requirements.txt și Procfile.
După aceasta, apăsați pur și simplu deploy branch! Dacă are succes, atunci accesați linkul generat și aplicația dvs. ar trebui să fie live. Acum puteți face solicitări la appname.herokuapp.com/predict route și ar trebui să dea predicțiile. Aflați mai multe despre modelele de învățare automată.
Concluzie
Aceasta a fost o introducere în ceea ce este Heroku, de ce este necesar și cum să implementați un model cu ajutorul Flask. Există o mulțime de platforme de găzduire care oferă funcții mai avansate, cum ar fi Data Pipelines, streaming, dar Heroku fiind platforma gratuită este încă o alegere bună pentru începătorii care doresc doar să aibă un gust de implementare.
Dacă sunteți interesat să aflați mai multe despre învățarea automată, consultați Diploma PG de la IIIT-B și upGrad în Învățare automată și AI, care este concepută pentru profesioniști care lucrează și oferă peste 450 de ore de pregătire riguroasă, peste 30 de studii de caz și sarcini, IIIT- B Statut de absolvenți, peste 5 proiecte practice practice și asistență pentru locuri de muncă cu firme de top.
Care sunt dezavantajele utilizării platformei Heroku?
Heroku nu este ideal pentru întreprinderile mari, deoarece documentația platformei nu este extinsă. O altă problemă este sistemul de fișiere numai pentru citire, care face încărcările voluminoase de fișiere, cum ar fi filme sau fotografii de înaltă rezoluție, dificil de gestionat. Heroku este un furnizor de platformă ca serviciu cu o cantitate limitată de personalizare. Heroku acceptă doar plăți în USD și nu în alte valute, cum ar fi EUR. Pentru proprietarii de afaceri care preferă să plătească în propria monedă, acesta ar putea fi un inconvenient minor. Mai mult, în cadrul CRE (Common Runtime Environment), Heroku nu furnizează adrese IP statice.
Prin ce diferă Heroku de AWS?
Procedura de implementare în AWS nu este simplă și, prin urmare, nu este deosebit de ușor de utilizat în ceea ce privește complexitatea. Heroku oferă un mediu gata de utilizare care este ușor de utilizat. Heroku este mai costisitor decât AWS, deoarece necesită mai puțină intervenție umană. AWS poate face față nevoilor de calcul ridicate sau foarte mari, în timp ce Heroku poate face față cerințelor de calcul modeste. Heroku, spre deosebire de AWS, nu necesită întreținere regulată a infrastructurii. AWS și Heroku sunt ambele fulgerătoare când vine vorba de implementare.
Cât timp pot folosi Heroku fără costuri?
Conturile Heroku au un număr de ore de dyno gratuite care pot fi folosite în aplicații gratuite. Aceasta înlocuiește limita de 18 ore pentru programele gratuite, permițându-le să funcționeze 24 de ore pe zi, dacă este necesar. Noile conturi beneficiază de 550 de ore de test gratuit, cu alte 450 de ore dacă îți validezi identitatea cu un card de credit. Heroku oferă un plan gratuit pentru a vă ajuta să învățați tehnologia și să începeți. Multe suplimente Heroku oferă un plan gratuit, la fel ca butoanele Heroku și pachetele de construcție.