Reduceți timpul necesar pentru implementarea modelelor dvs. pe Amazon SageMaker pentru testarea PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Reduceți timpul necesar pentru implementarea modelelor dvs. pe Amazon SageMaker pentru testare

Oamenii de știință de date își antrenează adesea modelele la nivel local și caută un serviciu de găzduire adecvat pentru a-și implementa modelele. Din păcate, nu există un mecanism sau un ghid pentru implementarea modelelor pre-instruite în cloud. În această postare, ne uităm la implementarea modelelor instruite la Amazon SageMaker hosting pentru a reduce timpul de implementare.

SageMaker este un serviciu de învățare automată (ML) complet gestionat. Cu SageMaker, puteți construi și antrena rapid modele ML și le puteți implementa direct într-un mediu găzduit pregătit pentru producție. În plus, nu trebuie să gestionați serverele. Obțineți un mediu de notebook Jupyter integrat, cu acces ușor la sursele dvs. de date. Puteți efectua o analiză a datelor, să vă antrenați modelele și să le testați folosind proprii algoritmi sau să utilizați algoritmi ML furnizați de SageMaker, care sunt optimizați pentru a rula eficient pe seturi mari de date răspândite pe mai multe mașini. Instruirea și găzduirea sunt facturate în minute de utilizare, fără taxe minime și fără angajamente inițiale.

Prezentare generală a soluțiilor

Oamenii de știință de date antrenează uneori modele la nivel local folosind IDE-ul lor și fie trimit acele modele echipei de inginerie ML pentru implementare, fie pur și simplu execută predicții la nivel local pe mașini puternice. În această postare, prezentăm o bibliotecă Python care simplifică procesul de implementare a modelelor în SageMaker pentru găzduire pe puncte finale în timp real sau fără server.

Această bibliotecă Python oferă cercetătorilor de date o interfață simplă pentru a începe rapid să folosească SageMaker, fără a fi nevoie să cunoască funcționalitatea de nivel scăzut SageMaker.

Dacă aveți modele instruite local folosind IDE-ul preferat și doriți să beneficiați de amploarea cloud-ului, puteți utiliza această bibliotecă pentru a vă implementa modelul în SageMaker. Cu SageMaker, pe lângă toate beneficiile de scalare ale unei platforme ML bazate pe cloud, aveți acces la instrumente de instruire create special (antrenament distribuit, reglare hiperparametrică), managementul experimentelor, managementul modelului, detectarea părtinirii, explicabilitatea modelului și multe altele. capabilități care vă pot ajuta în orice aspect al ciclului de viață ML. Puteți alege dintre cele mai populare trei cadre pentru ML: Scikit-learn, PyTorch și TensorFlow și puteți alege tipul de calcul dorit. Pe parcurs sunt furnizate valori implicite, astfel încât utilizatorii acestei biblioteci să își poată implementa modelele fără a fi nevoie să ia decizii complexe sau să învețe concepte noi. În această postare, vă arătăm cum să începeți cu această bibliotecă și să optimizați implementarea modelelor dvs. ML pe găzduirea SageMaker.

Biblioteca poate fi găsită în GitHub depozit.

Setul de instrumente de migrare SageMaker

SageMakerMigration clasa este disponibilă printr-o bibliotecă Python publicată pe GitHub. Instrucțiunile de instalare a acestei biblioteci sunt furnizate în depozit; asigurați-vă că urmați README pentru a vă configura corect mediul. După ce instalați această bibliotecă, restul acestei postări vorbește despre cum o puteți utiliza.

SageMakerMigration clasa constă din abstracții la nivel înalt peste API-urile SageMaker care reduc semnificativ pașii necesari pentru implementarea modelului dvs. în SageMaker, așa cum este ilustrat în figura următoare. Acesta este destinat experimentării, astfel încât dezvoltatorii să poată începe rapid și să testeze SageMaker. Nu este destinat migrațiilor de producție.

Pentru modelele Scikit-learn, PyTorch și TensorFlow, această bibliotecă acceptă implementarea modelelor antrenate la un punct final în timp real SageMaker sau un punct final fără server. Pentru a afla mai multe despre opțiunile de inferență din SageMaker, consultați Implementați modele pentru inferență.

Puncte finale în timp real vs. fără server

Inferența în timp real este ideală pentru sarcinile de lucru de inferență în care aveți cerințe în timp real, interactive și cu latență scăzută. Vă puteți implementa modelul în serviciile de găzduire SageMaker și puteți obține un punct final care poate fi utilizat pentru inferență. Aceste puncte finale sunt complet gestionate și acceptă scalarea automată.

SageMaker Serverless Inference este o opțiune de inferență creată special care vă facilitează implementarea și scalarea modelelor ML. Inferența fără server este ideală pentru sarcinile de lucru care au perioade de inactivitate între exploziile de trafic și pot tolera pornirile la rece. Punctele finale fără server lansează automat resurse de calcul și le scala în funcție de trafic, eliminând nevoia de a alege tipuri de instanțe sau de a gestiona politicile de scalare. Acest lucru elimină greutățile nediferențiate ale selectării și gestionării serverelor.

În funcție de cazul dvs. de utilizare, este posibil să doriți să găzduiți rapid modelul dvs. pe SageMaker fără a avea de fapt o instanță mereu activată și a suporta costuri, caz în care un punct final fără server este o soluție excelentă.

Pregătiți modelul antrenat și scriptul de inferență

După ce ați identificat modelul pe care doriți să îl implementați pe SageMaker, trebuie să vă asigurați că modelul este prezentat la SageMaker în formatul potrivit. Punctele finale SageMaker constau în general din două componente: artefactul model antrenat (.pth, .pkl și așa mai departe) și un script de inferență. Scriptul de inferență nu este întotdeauna obligatoriu, dar dacă nu este furnizat, se aplică handlerele implicite pentru containerul de servire pe care îl utilizați. Este esențial să furnizați acest script dacă aveți nevoie să vă personalizați funcționalitatea de intrare/ieșire pentru inferență.

Artefactul model antrenat este pur și simplu un model Scikit-learn, PyTorch sau TensorFlow salvat. Pentru Scikit-learn, acesta este de obicei un fișier pickle, pentru PyTorch acesta este un fișier .pt sau .pth, iar pentru TensorFlow acesta este un folder cu active, fișiere .pb și alte variabile.

În general, trebuie să puteți controla modul în care modelul dumneavoastră procesează intrarea și efectuează inferențe și să controlați formatul de ieșire pentru răspunsul dumneavoastră. Cu SageMaker, puteți oferi un script de inferență pentru a adăuga această personalizare. Orice script de inferență utilizat de SageMaker trebuie să aibă una sau mai multe dintre următoarele patru funcții de gestionare: model_fn, input_fn, predict_fn, și output_fn.

Rețineți că aceste patru funcții se aplică PyTorch și Scikit-învață containere în special. TensorFlow are handlere ușor diferite, deoarece este integrat cu Servire TensorFlow. Pentru un script de inferență cu TensorFlow, aveți două manipulatori de modele: input_handler și output_handler. Din nou, acestea au același scop de preprocesare și postprocesare cu care puteți lucra, dar sunt configurate ușor diferit pentru a se integra cu Servire TensorFlow. Pentru modelele PyTorch, model_fn este o funcție obligatorie care trebuie avută în scriptul de inferență.

model_fn

Aceasta este funcția care este apelată pentru prima dată când invocați punctul final SageMaker. Aici scrieți codul pentru a încărca modelul. De exemplu:

def model_fn(model_dir):
    model = Your_Model()
    with open(os.path.join(model_dir, 'model.pth'), 'rb') as f:
        model.load_state_dict(torch.load(f))
    return model

În funcție de cadrul și tipul de model, acest cod se poate modifica, dar funcția trebuie să returneze un model inițializat.

input_fn

Aceasta este a doua funcție care este apelată atunci când punctul final este invocat. Această funcție preia datele trimise la punctul final pentru inferență și le analizează în formatul necesar modelului pentru a genera o predicție. De exemplu:

def input_fn(request_body, request_content_type):
    """An input_fn that loads a pickled tensor"""
    if request_content_type == 'application/python-pickle':
        return torch.load(BytesIO(request_body))
    else:
        # Handle other content-types here or raise an Exception
        # if the content type is not supported.
        pass

request_body conține datele care vor fi utilizate pentru generarea de inferențe din model și sunt analizate în această funcție, astfel încât să fie în formatul necesar.

prezice_fn

Aceasta este a treia funcție care este apelată atunci când modelul dvs. este invocat. Această funcție preia datele de intrare preprocesate de la care returnează input_fn și folosește modelul returnat de la model_fn pentru a face predicția. De exemplu:

def predict_fn(input_data, model):
    device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
    model.to(device)
    model.eval()
    with torch.no_grad():
        return model(input_data.to(device))

Puteți adăuga opțional output_fn pentru a analiza rezultatul predict_fn înainte de a-l returna clientului. Semnătura funcției este def output_fn(prediction, content_type).

Mutați modelul dvs. pre-antrenat în SageMaker

După ce aveți fișierul model instruit și scriptul de inferență, trebuie să puneți aceste fișiere într-un folder după cum urmează:

#SKLearn Model

model_folder/
    model.pkl
    inference.py
    
# Tensorflow Model
model_folder/
    0000001/
        assets/
        variables/
        keras_metadata.pb
        saved_model.pb
    inference.py
    
# PyTorch Model
model_folder/
    model.pth
    inference.py

După ce modelul și scriptul de inferență au fost pregătite și salvate în această structură de foldere, modelul dvs. este gata pentru implementare pe SageMaker. Vezi următorul cod:

from sagemaker_migration import frameworks as fwk

if __name__ == "__main__":
    ''' '''
    sk_model = fwk.SKLearnModel(
        version = "0.23-1", 
        model_data = 'model.joblib',
        inference_option = 'real-time',
        inference = 'inference.py',
        instance_type = 'ml.m5.xlarge'
    )
    sk_model.deploy_to_sagemaker()

După implementarea punctului final, asigurați-vă că curățați orice resurse pe care nu le veți utiliza prin consola SageMaker sau prin intermediul delete_endpoint Apel API Boto3.

Concluzie

Scopul proiectului SageMaker Migration Toolkit este de a face mai ușor pentru oamenii de știință de date să-și integreze modelele în SageMaker pentru a profita de inferența bazată pe cloud. Depozitul va continua să evolueze și să accepte mai multe opțiuni pentru migrarea sarcinilor de lucru către SageMaker. Codul este open source și salutăm contribuțiile comunității prin solicitări și probleme.

Check out GitHub depozit pentru a explora mai multe despre utilizarea SageMaker Migration Toolkit și nu ezitați să contribuiți și cu exemple sau solicitări de funcții pentru a le adăuga la proiect!


Despre autori

Reduceți timpul necesar pentru implementarea modelelor dvs. pe Amazon SageMaker pentru testarea PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Kirit Thadaka este un arhitect de soluții ML care lucrează în echipa Amazon SageMaker Service SA. Înainte de a se alătura AWS, Kirit a petrecut timp lucrând în startup-uri AI în stadiu incipient, urmat de ceva timp în consultanță în diferite roluri în cercetarea AI, MLOps și conducere tehnică.

Reduceți timpul necesar pentru implementarea modelelor dvs. pe Amazon SageMaker pentru testarea PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Ram Vegiraju este arhitect ML cu echipa SageMaker Service. El se concentrează pe a ajuta clienții să-și construiască și să-și optimizeze soluțiile AI/ML pe Amazon SageMaker. În timpul liber, îi place să călătorească și să scrie.

Timestamp-ul:

Mai mult de la Învățare automată AWS