Reducer den tid, det tager at implementere dine modeller til Amazon SageMaker for at teste PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Reducer den tid, det tager at implementere dine modeller til Amazon SageMaker til test

Dataforskere træner ofte deres modeller lokalt og leder efter en ordentlig hostingtjeneste til at implementere deres modeller. Desværre er der ingen fast mekanisme eller guide til at implementere forudtrænede modeller til skyen. I dette indlæg ser vi på at implementere trænede modeller til Amazon SageMaker hosting for at reducere din implementeringstid.

SageMaker er en fuldt administreret maskinlæringstjeneste (ML). Med SageMaker kan du hurtigt bygge og træne ML-modeller og implementere dem direkte i et produktionsklart hostet miljø. Derudover behøver du ikke at administrere servere. Du får et integreret Jupyter notebook-miljø med nem adgang til dine datakilder. Du kan udføre dataanalyse, træne dine modeller og teste dem ved hjælp af dine egne algoritmer eller bruge SageMaker-leverede ML-algoritmer, der er optimeret til at køre effektivt mod store datasæt spredt over flere maskiner. Træning og hosting faktureres efter minutters forbrug, uden minimumsgebyrer og ingen forhåndsforpligtelser.

Løsningsoversigt

Dataforskere træner nogle gange modeller lokalt ved hjælp af deres IDE og sender enten disse modeller til ML-ingeniørteamet til implementering eller kører bare forudsigelser lokalt på kraftfulde maskiner. I dette indlæg introducerer vi et Python-bibliotek, der forenkler processen med at implementere modeller til SageMaker for Hosting på realtids- eller serverløse slutpunkter.

Dette Python-bibliotek giver dataforskere en enkel grænseflade til hurtigt at komme i gang med SageMaker uden at skulle kende nogen af ​​SageMaker-funktionaliteten på lavt niveau.

Hvis du har modeller trænet lokalt ved hjælp af din foretrukne IDE og ønsker at drage fordel af skyens skala, kan du bruge dette bibliotek til at implementere din model til SageMaker. Med SageMaker har du ud over alle skaleringsfordele ved en cloud-baseret ML-platform adgang til specialbyggede træningsværktøjer (distribueret træning, hyperparameterjustering), eksperimentstyring, modelstyring, bias-detektion, modelforklarlighed og mange andre funktioner, der kan hjælpe dig i ethvert aspekt af ML-livscyklussen. Du kan vælge mellem de tre mest populære rammer for ML: Scikit-learn, PyTorch og TensorFlow, og du kan vælge den type computer, du ønsker. Standarder leveres undervejs, så brugere af dette bibliotek kan implementere deres modeller uden at skulle træffe komplekse beslutninger eller lære nye koncepter. I dette indlæg viser vi dig, hvordan du kommer i gang med dette bibliotek og optimerer implementeringen af ​​dine ML-modeller på SageMaker-hosting.

Biblioteket kan findes i GitHub repository.

SageMaker Migration Toolkit

SageMakerMigration klasse er tilgængelig via et Python-bibliotek udgivet til GitHub. Instruktioner til at installere dette bibliotek findes i depotet; sørg for at følge README for at konfigurere dit miljø korrekt. Når du har installeret dette bibliotek, taler resten af ​​dette indlæg om, hvordan du kan bruge det.

SageMakerMigration klasse består af abstraktioner på højt niveau over SageMaker API'er, der væsentligt reducerer de nødvendige trin for at implementere din model til SageMaker, som illustreret i den følgende figur. Dette er beregnet til eksperimentering, så udviklere hurtigt kan komme i gang og teste SageMaker. Det er ikke beregnet til produktionsmigreringer.

For Scikit-learn-, PyTorch- og TensorFlow-modeller understøtter dette bibliotek implementering af trænede modeller til et SageMaker-endepunkt i realtid eller et serverløst slutpunkt. For at lære mere om slutningsmulighederne i SageMaker, se Implementer modeller til inferens.

Realtid vs. serverløse slutpunkter

Realtidsinferens er ideel til inferensarbejdsbelastninger, hvor du har realtidsinteraktive krav til lav latenstid. Du kan implementere din model til SageMaker-hostingtjenester og få et slutpunkt, der kan bruges til slutninger. Disse endepunkter er fuldt administrerede og understøtter automatisk skalering.

SageMaker Serverless Inference er en specialbygget inferensindstilling, der gør det nemt for dig at implementere og skalere ML-modeller. Serverløs inferens er ideel til arbejdsbelastninger, der har inaktive perioder mellem trafikken og kan tolerere koldstart. Serverløse slutpunkter starter automatisk computerressourcer og skalerer dem ind og ud afhængigt af trafik, hvilket eliminerer behovet for at vælge instanstyper eller administrere skaleringspolitikker. Dette fjerner det udifferentierede tunge løft ved at vælge og administrere servere.

Afhængigt af din use case, vil du måske hurtigt hoste din model på SageMaker uden faktisk at have en instans altid tændt og pådrage sig omkostninger, i hvilket tilfælde et serverløst slutpunkt er en fantastisk løsning.

Forbered din trænede model og slutningsskrift

Når du har identificeret den model, du vil implementere på SageMaker, skal du sikre dig, at modellen præsenteres for SageMaker i det rigtige format. SageMaker-endepunkter består generelt af to komponenter: den trænede modelartefakt (.pth, .pkl, og så videre) og et inferensscript. Inferensscriptet er ikke altid obligatorisk, men hvis det ikke er angivet, anvendes standardbehandlerne for den serveringsbeholder, du bruger. Det er vigtigt at give dette script, hvis du har brug for at tilpasse din input/output-funktionalitet til slutninger.

Den trænede modelartefakt er simpelthen en gemt Scikit-learn-, PyTorch- eller TensorFlow-model. For Scikit-learn er dette typisk en pickle-fil, for PyTorch er dette en .pt- eller .pth-fil, og for TensorFlow er dette en mappe med aktiver, .pb-filer og andre variabler.

Generelt skal du være i stand til at kontrollere, hvordan din model behandler input og udfører inferens, og kontrollere outputformatet for dit svar. Med SageMaker kan du give en slutningsskrift for at tilføje denne tilpasning. Ethvert inferensscript, der bruges af SageMaker, skal have en eller flere af følgende fire handlerfunktioner: model_fn, input_fn, predict_fnog output_fn.

Bemærk, at disse fire funktioner gælder for PyTorch , Scikit-lære containere specifikt. TensorFlow har lidt forskellige handlere, fordi det er integreret med TensorFlow-servering. For et inferensscript med TensorFlow har du to modelbehandlere: input_handler og output_handler. Igen har disse det samme forbehandlings- og efterbehandlingsformål, som du kan arbejde med, men de er konfigureret lidt anderledes til at integrere med TensorFlow-servering. For PyTorch-modeller er model_fn en obligatorisk funktion at have i inferens-scriptet.

model_fn

Dette er den funktion, der først kaldes, når du kalder dit SageMaker-slutpunkt. Det er her du skriver din kode for at indlæse modellen. For eksempel:

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

Afhængigt af rammen og typen af ​​model kan denne kode ændre sig, men funktionen skal returnere en initialiseret model.

input_fn

Dette er den anden funktion, der kaldes, når dit slutpunkt kaldes. Denne funktion tager de data, der sendes til slutpunktet til slutning, og analyserer dem til det format, der kræves for, at modellen kan generere en forudsigelse. For eksempel:

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 indeholder de data, der skal bruges til at generere slutninger fra modellen og parses i denne funktion, så de er i det krævede format.

forudsige_fn

Dette er den tredje funktion, der kaldes, når din model aktiveres. Denne funktion tager de forbehandlede inputdata, der returneres fra input_fn og bruger modellen returneret fra model_fn at komme med forudsigelsen. For eksempel:

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))

Du kan eventuelt tilføje output_fn at parse outputtet af predict_fn før den returneres til kunden. Funktionssignaturen er def output_fn(prediction, content_type).

Flyt din fortrænede model til SageMaker

Når du har din trænede modelfil og inferensscript, skal du lægge disse filer i en mappe som følger:

#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

Efter din model og inferensscript er blevet forberedt og gemt i denne mappestruktur, er din model klar til udrulning på SageMaker. Se følgende kode:

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()

Efter implementering af dit slutpunkt skal du sørge for at rydde op i alle ressourcer, du ikke vil bruge via SageMaker-konsollen eller via delete_endpoint Boto3 API-kald.

Konklusion

Målet med SageMaker Migration Toolkit-projektet er at gøre det nemt for datavidenskabsfolk at integrere deres modeller på SageMaker for at drage fordel af cloud-baseret inferens. Lagret vil fortsætte med at udvikle sig og understøtte flere muligheder for at migrere arbejdsbelastninger til SageMaker. Koden er open source, og vi glæder os over bidrag fra fællesskabet gennem pull-anmodninger og problemer.

Tjek den GitHub repository for at udforske mere om brugen af ​​SageMaker Migration Toolkit, og du er velkommen til også at bidrage med eksempler eller funktionsanmodninger for at tilføje til projektet!


Om forfatterne

Reducer den tid, det tager at implementere dine modeller til Amazon SageMaker for at teste PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Kirit Thadaka er en ML Solutions Architect, der arbejder i Amazon SageMaker Service SA-teamet. Før hun kom til AWS, brugte Kirit tid på at arbejde i AI-startups på et tidligt stadium efterfulgt af noget tid med at rådgive i forskellige roller inden for AI-forskning, MLOps og teknisk ledelse.

Reducer den tid, det tager at implementere dine modeller til Amazon SageMaker for at teste PlatoBlockchain Data Intelligence. Lodret søgning. Ai.Ram Vegiraju er ML-arkitekt hos SageMaker Service-teamet. Han fokuserer på at hjælpe kunder med at bygge og optimere deres AI/ML-løsninger på Amazon SageMaker. I sin fritid elsker han at rejse og skrive.

Tidsstempel:

Mere fra AWS maskinindlæring