Zmanjšajte čas, potreben za uvajanje vaših modelov v Amazon SageMaker za testiranje PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Skrajšajte čas, potreben za uvajanje vaših modelov v Amazon SageMaker za testiranje

Podatkovni znanstveniki svoje modele pogosto usposabljajo lokalno in iščejo ustrezno storitev gostovanja za uvedbo svojih modelov. Na žalost ni nobenega določenega mehanizma ali vodnika za uvajanje vnaprej usposobljenih modelov v oblak. V tej objavi si ogledamo uvajanje usposobljenih modelov v Amazon SageMaker gostovanje, da skrajšate čas uvajanja.

SageMaker je popolnoma upravljana storitev strojnega učenja (ML). S SageMakerjem lahko hitro sestavite in učite modele ML ter jih neposredno uvedete v gostujoče okolje, pripravljeno za proizvodnjo. Poleg tega vam ni treba upravljati strežnikov. Dobite integrirano okolje prenosnika Jupyter z enostavnim dostopom do virov podatkov. Izvajate lahko analizo podatkov, trenirate svoje modele in jih testirate z uporabo lastnih algoritmov ali pa uporabite algoritme ML, ki jih ponuja SageMaker in so optimizirani za učinkovito izvajanje z velikimi nabori podatkov, razporejenimi po več strojih. Usposabljanje in gostovanje se obračunata po minutah uporabe, brez minimalnih stroškov in vnaprejšnjih obveznosti.

Pregled rešitev

Podatkovni znanstveniki včasih lokalno usposabljajo modele s svojim IDE in te modele pošljejo inženirski ekipi ML za uvedbo ali pa samo izvajajo napovedi lokalno na zmogljivih strojih. V tej objavi predstavljamo knjižnico Python, ki poenostavi postopek uvajanja modelov v SageMaker za gostovanje na končnih točkah v realnem času ali brez strežnika.

Ta knjižnica Python daje podatkovnim znanstvenikom preprost vmesnik za hiter začetek uporabe SageMakerja, ne da bi morali poznati katero koli funkcionalnost SageMaker na nizki ravni.

Če imate modele, ki so usposobljeni lokalno z uporabo vašega želenega IDE in želite izkoristiti obseg oblaka, lahko uporabite to knjižnico za uvajanje vašega modela v SageMaker. S SageMakerjem imate poleg vseh prednosti skaliranja platforme ML v oblaku dostop do namensko izdelanih orodij za usposabljanje (razdeljeno usposabljanje, uravnavanje hiperparametrov), upravljanje eksperimentov, upravljanje modelov, zaznavanje pristranskosti, razložljivost modela in mnogih drugih zmožnosti, ki vam lahko pomagajo pri vseh vidikih življenjskega cikla ML. Izbirate lahko med tremi najbolj priljubljenimi okviri za ML: Scikit-learn, PyTorch in TensorFlow ter lahko izberete želeno vrsto računalništva. Privzete nastavitve so na voljo na poti, tako da lahko uporabniki te knjižnice uvedejo svoje modele, ne da bi jim bilo treba sprejemati zapletene odločitve ali se učiti novih konceptov. V tej objavi vam pokažemo, kako začeti uporabljati to knjižnico in optimizirati uvajanje svojih modelov ML na gostovanju SageMaker.

Knjižnico najdete v GitHub repozitorij.

SageMaker Migration Toolkit

O SageMakerMigration razred je na voljo prek knjižnice Python, objavljene na GitHubu. Navodila za namestitev te knjižnice so na voljo v repozitoriju; poskrbite, da sledite README, da pravilno nastavite svoje okolje. Ko namestite to knjižnico, preostanek te objave govori o tem, kako jo lahko uporabljate.

O SageMakerMigration razred je sestavljen iz visokonivojskih abstrakcij prek API-jev SageMaker, ki bistveno zmanjšajo korake, potrebne za uvedbo vašega modela v SageMaker, kot je prikazano na naslednji sliki. To je namenjeno eksperimentiranju, tako da lahko razvijalci hitro začnejo in preizkusijo SageMaker. Ni namenjen produkcijskim selitvam.

Za modele Scikit-learn, PyTorch in TensorFlow ta knjižnica podpira uvajanje usposobljenih modelov v končno točko SageMaker v realnem času ali končno točko brez strežnika. Če želite izvedeti več o možnostih sklepanja v SageMakerju, glejte Razmestite modele za sklepanje.

Končne točke v realnem času v primerjavi s končnimi točkami brez strežnika

Sklepanje v realnem času je idealno za delovne obremenitve sklepanja, kjer imate zahteve v realnem času, interaktivne in nizke zakasnitve. Svoj model lahko uvedete v storitve gostovanja SageMaker in dobite končno točko, ki jo lahko uporabite za sklepanje. Te končne točke so v celoti upravljane in podpirajo samodejno skaliranje.

SageMaker Serverless Inference je namensko izdelana možnost sklepanja, ki vam olajša uvajanje in spreminjanje modelov ML. Brezstrežniško sklepanje je idealno za delovne obremenitve, ki imajo obdobja mirovanja med prometnimi sunki in lahko prenašajo hladne zagone. Brezstrežniške končne točke samodejno zaženejo računalniške vire in jih povečajo in zmanjšajo glede na promet, s čimer odpravijo potrebo po izbiri vrst primerkov ali upravljanju pravilnikov o skaliranju. To odvzame nediferencirano težko delo pri izbiranju in upravljanju strežnikov.

Odvisno od vašega primera uporabe boste morda želeli hitro gostiti svoj model na SageMakerju, ne da bi dejansko imeli vedno vklopljen primerek in imeli stroške; v tem primeru je končna točka brez strežnika odlična rešitev.

Pripravite svoj usposobljeni model in skript za sklepanje

Ko identificirate model, ki ga želite namestiti v SageMaker, morate zagotoviti, da je model predstavljen SageMakerju v pravi obliki. Končne točke SageMaker so na splošno sestavljene iz dveh komponent: artefakta usposobljenega modela (.pth, .pkl itd.) in skripta sklepanja. Sklepni skript ni vedno obvezen, a če ni na voljo, se uporabijo privzeti obdelovalci za strežni vsebnik, ki ga uporabljate. Nujno je, da zagotovite ta skript, če morate prilagoditi svojo vhodno/izhodno funkcijo za sklepanje.

Artefakt usposobljenega modela je preprosto shranjen model Scikit-learn, PyTorch ali TensorFlow. Za Scikit-learn je to običajno datoteka pickle, za PyTorch je to datoteka .pt ali .pth, za TensorFlow pa je to mapa s sredstvi, datotekami .pb in drugimi spremenljivkami.

Na splošno morate biti sposobni nadzorovati, kako vaš model obdeluje vhodne podatke in izvaja sklepanje, ter nadzorovati izhodno obliko za vaš odgovor. S SageMakerjem lahko zagotovite sklepni skript da dodate to prilagoditev. Vsak sklepni skript, ki ga uporablja SageMaker, mora imeti eno ali več od naslednjih štirih funkcij obravnave: model_fn, input_fn, predict_fnin output_fn.

Upoštevajte, da te štiri funkcije veljajo za PyTorch in Scikit-učite se zabojnike posebej. TensorFlow ima nekoliko drugačne upravljalnike, ker je integriran z Odstranjevanje TensorFlow. Za sklepni skript s TensorFlow imate dva upravljalci modelov: input_handler in output_handler. Tudi ti imajo isti namen predobdelave in naknadne obdelave, s katerima lahko delate, vendar so nekoliko drugače konfigurirani za integracijo z Odstranjevanje TensorFlow. Za modele PyTorch je model_fn obvezna funkcija, ki mora biti v sklepnem skriptu.

model_fn

To je funkcija, ki se najprej pokliče, ko pokličete svojo končno točko SageMaker. Tukaj napišete kodo za nalaganje modela. Na primer:

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

Odvisno od ogrodja in vrste modela se lahko ta koda spremeni, vendar mora funkcija vrniti inicializiran model.

input_fn

To je druga funkcija, ki se kliče, ko je priklicana vaša končna točka. Ta funkcija sprejme podatke, poslane končni točki za sklepanje, in jih razčleni v obliko, ki je potrebna, da model ustvari napoved. Na primer:

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

O request_body vsebuje podatke, ki jih je treba uporabiti za generiranje sklepanja iz modela, in je v tej funkciji razčlenjen tako, da je v zahtevani obliki.

napoved_fn

To je tretja funkcija, ki se kliče, ko je priklican vaš model. Ta funkcija vzame predhodno obdelane vhodne podatke, vrnjene iz input_fn in uporablja model, vrnjen iz model_fn narediti napoved. Na primer:

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

Po želji lahko dodate output_fn za razčlenitev izhoda predict_fn preden ga vrnete stranki. Funkcijski podpis je def output_fn(prediction, content_type).

Premaknite svoj vnaprej pripravljen model v SageMaker

Ko imate usposobljeno datoteko modela in skript sklepanja, morate te datoteke postaviti v mapo, kot sledi:

#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

Ko sta vaš model in sklepni skript pripravljena in shranjena v tej strukturi mape, je vaš model pripravljen za uvajanje v SageMaker. Oglejte si naslednjo kodo:

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

Po uvedbi vaše končne točke počistite vse vire, ki jih ne boste uporabili prek konzole SageMaker ali prek delete_endpoint Klic API-ja Boto3.

zaključek

Cilj projekta SageMaker Migration Toolkit je poenostaviti podatkovnim znanstvenikom, da vkrcajo svoje modele v SageMaker, da izkoristijo sklepanje v oblaku. Repozitorij se bo še naprej razvijal in podpiral več možnosti za selitev delovnih obremenitev v SageMaker. Koda je odprtokodna in pozdravljamo prispevke skupnosti prek zahtev za vleko in težav.

Odjaviti GitHub repozitorij da raziščete več o uporabi SageMaker Migration Toolkit in lahko prispevate tudi primere ali zahteve po funkcijah, ki jih želite dodati projektu!


O avtorjih

Zmanjšajte čas, potreben za uvajanje vaših modelov v Amazon SageMaker za testiranje PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Kirit Thadaka je arhitekt rešitev ML, ki dela v skupini Amazon SageMaker Service SA. Preden se je pridružil AWS, je Kirit nekaj časa delal v začetnih fazah umetne inteligence, čemur je sledilo nekaj časa v svetovanju v različnih vlogah pri raziskavah umetne inteligence, MLOps in tehničnem vodenju.

Zmanjšajte čas, potreben za uvajanje vaših modelov v Amazon SageMaker za testiranje PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Ram Vegiraju je ML arhitekt pri ekipi SageMaker Service. Osredotoča se na pomoč strankam pri izgradnji in optimizaciji njihovih rešitev AI/ML na Amazon SageMaker. V prostem času rad potuje in piše.

Časovni žig:

Več od Strojno učenje AWS