Usposabljanje meril in sklepanje na tisoče modelov ML z Amazon SageMaker | Spletne storitve Amazon

Usposabljanje meril in sklepanje na tisoče modelov ML z Amazon SageMaker | Spletne storitve Amazon

Ker postaja strojno učenje (ML) vedno bolj razširjeno v številnih panogah, organizacije ugotavljajo potrebo po usposabljanju in oskrbovanju velikega števila modelov ML, da bi zadovoljile raznolike potrebe svojih strank. Zlasti za ponudnike programske opreme kot storitve (SaaS) je zmožnost učinkovitega in stroškovno učinkovitega usposabljanja in strežbe na tisoče modelov ključnega pomena za ohranjanje konkurenčnosti na hitro razvijajočem se trgu.

Usposabljanje in oskrba na tisoče modelov zahteva robustno in razširljivo infrastrukturo, kjer je Amazon SageMaker lahko pomagam. SageMaker je popolnoma upravljana platforma, ki razvijalcem in podatkovnim znanstvenikom omogoča hitro gradnjo, usposabljanje in uvajanje modelov ML, hkrati pa ponuja ugodnosti prihranka pri stroških uporabe infrastrukture AWS Cloud.

V tej objavi raziskujemo, kako lahko uporabljate funkcije SageMaker, vključno z Obdelava Amazon SageMaker, delovna mesta za usposabljanje SageMaker in večmodelne končne točke (MME) SageMaker za usposabljanje in oskrbo na tisoče modelov na stroškovno učinkovit način. Če želite začeti z opisano rešitvijo, si lahko ogledate priloženi zvezek na GitHub.

Primer uporabe: Napovedovanje energije

Za to objavo prevzamemo vlogo podjetja ISV, ki pomaga svojim strankam postati bolj trajnostne s sledenjem njihove porabe energije in zagotavljanjem napovedi. Naše podjetje ima 1,000 strank, ki želijo bolje razumeti svojo porabo energije in se premišljeno odločati o tem, kako zmanjšati svoj vpliv na okolje. Za to uporabimo sintetični nabor podatkov in na njem usposobimo model ML Prerok za vsakega odjemalca za izdelavo napovedi porabe energije. S SageMakerjem lahko učinkovito usposabljamo in servisiramo teh 1,000 modelov, s čimer našim strankam zagotovimo natančne in dejavne vpoglede v njihovo porabo energije.

V ustvarjenem naboru podatkov so tri funkcije:

  • identifikacijska številka stranke – To je celoštevilski identifikator za vsako stranko v razponu od 0–999.
  • Časovni žig – To je vrednost datuma/časa, ki označuje čas, ko je bila izmerjena poraba energije. Časovni žigi so naključno ustvarjeni med začetnim in končnim datumom, določenim v kodi.
  • poraba – To je plavajoča vrednost, ki označuje porabo energije, merjeno v neki poljubni enoti. Vrednosti porabe so naključno ustvarjene med 0–1,000 s sinusno sezonskostjo.

Pregled rešitev

Za učinkovito usposabljanje in strežbo na tisoče modelov ML lahko uporabimo naslednje funkcije SageMaker:

  • Obdelava žajblja – SageMaker Processing je popolnoma upravljana storitev za pripravo podatkov, ki vam omogoča izvajanje obdelave podatkov in nalog vrednotenja modela na vaših vhodnih podatkih. Obdelavo SageMaker lahko uporabite za pretvorbo neobdelanih podatkov v obliko, ki je potrebna za usposabljanje in sklepanje, kot tudi za izvajanje paketnih in spletnih ocen vaših modelov.
  • Usposabljanje SageMaker – Učna opravila SageMaker lahko uporabite za usposabljanje modelov na različnih algoritmih in vrstah vhodnih podatkov ter določite računalniške vire, potrebne za usposabljanje.
  • SageMaker MME – Končne točke z več modeli vam omogočajo gostovanje več modelov na eni končni točki, kar olajša streženje napovedi iz več modelov z enim API-jem. MME-ji SageMaker lahko prihranijo čas in vire z zmanjšanjem števila končnih točk, potrebnih za serviranje napovedi iz več modelov. MME podpirajo gostovanje modelov, podprtih s CPE in GPE. Upoštevajte, da v našem scenariju uporabljamo 1,000 modelov, vendar to ni omejitev same storitve.

Naslednji diagram prikazuje arhitekturo rešitev.

arhitektura, ki prikazuje opisani proces

Potek dela vključuje naslednje korake:

  1. Uporabljamo SageMaker Processing za predhodno obdelavo podatkov in ustvarjanje ene same datoteke CSV na stranko ter njeno shranjevanje Preprosta storitev shranjevanja Amazon (Amazon S3).
  2. Učno opravilo SageMaker je konfigurirano tako, da bere izhod opravila SageMaker Processing in ga krožno razdeli primerkom usposabljanja. Upoštevajte, da je to mogoče doseči tudi z Amazonski cevovodi SageMaker.
  3. Artefakti modela so shranjeni v Amazonu S3 z nalogo usposabljanja in se strežejo neposredno iz SageMaker MME.

Razširite usposabljanje na tisoče modelov

Skaliranje usposabljanja na tisoče modelov je možno prek distribution parameter parametra TrainingInput v SDK SageMaker Python, ki vam omogoča, da določite, kako se podatki porazdelijo med več primerki usposabljanja za opravilo usposabljanja. Obstajajo tri možnosti za distribution parameter: FullyReplicated, ShardedByS3Keyin ShardedByRecord. ShardedByS3Key možnost pomeni, da so podatki o usposabljanju razdeljeni s ključem objekta S3, pri čemer vsak primerek usposabljanja prejme edinstveno podmnožico podatkov, s čimer se izognemo podvajanju. Ko SageMaker kopira podatke v vsebnike za usposabljanje, lahko preberemo strukturo mape in datoteke za usposabljanje edinstvenega modela za datoteko stranke. Sledi primer izrezka kode:

# Assume that the training data is in an S3 bucket already, pass the parent folder
s3_input_train = sagemaker.inputs.TrainingInput( s3_data='s3://my-bucket/customer_data', distribution='ShardedByS3Key'
) # Create a SageMaker estimator and set the training input
estimator = sagemaker.estimator.Estimator(...)
estimator.fit(inputs=s3_input_train)

Vsako izobraževalno opravilo SageMaker shrani model, shranjen v /opt/ml/model mapo vsebnika za usposabljanje, preden jo arhivirate v a model.tar.gz datoteko in jo nato naloži v Amazon S3 po zaključku usposabljanja. Izkušeni uporabniki lahko tudi avtomatizirajo ta proces s SageMaker Pipelines. Pri shranjevanju več modelov prek istega izobraževalnega opravila SageMaker ustvari enega model.tar.gz datoteka, ki vsebuje vse usposobljene modele. To bi potem pomenilo, da bi morali za serviranje modela najprej razpakirati arhiv. Da bi se temu izognili, uporabljamo kontrolne točke za shranjevanje stanja posameznih modelov. SageMaker omogoča kopiranje kontrolnih točk, ustvarjenih med usposabljanjem, v Amazon S3. Tukaj je treba kontrolne točke shraniti na vnaprej določeno mesto, privzeto pa je /opt/ml/checkpoints. Te kontrolne točke je mogoče uporabiti za nadaljevanje usposabljanja pozneje ali kot model za namestitev na končni točki. Za povzetek na visoki ravni o tem, kako platforma za usposabljanje SageMaker upravlja poti shranjevanja za nize podatkov o usposabljanju, artefakte modela, kontrolne točke in izhode med shranjevanjem v oblaku AWS in opravili usposabljanja v SageMakerju, glejte Mape za shranjevanje usposabljanja Amazon SageMaker za nabore podatkov za usposabljanje, kontrolne točke, artefakte modela in izhode.

Naslednja koda uporablja izmišljeno model.save() delovanje znotraj train.py skript, ki vsebuje logiko usposabljanja:

import tarfile
import boto3
import os [ ... argument parsing ... ] for customer in os.list_dir(args.input_path): # Read data locally within the Training job df = pd.read_csv(os.path.join(args.input_path, customer, 'data.csv')) # Define and train the model model = MyModel() model.fit(df) # Save model to output directory with open(os.path.join(output_dir, 'model.json'), 'w') as fout: fout.write(model_to_json(model)) # Create the model.tar.gz archive containing the model and the training script with tarfile.open(os.path.join(output_dir, '{customer}.tar.gz'), "w:gz") as tar: tar.add(os.path.join(output_dir, 'model.json'), "model.json") tar.add(os.path.join(args.code_dir, "training.py"), "training.py")

Prilagodite sklepanje na tisoče modelov s SageMaker MME

SageMaker MME vam omogočajo, da strežete več modelov hkrati, tako da ustvarite konfiguracijo končne točke, ki vključuje seznam vseh modelov za strežbo, in nato ustvarite končno točko z uporabo te konfiguracije končne točke. Končne točke ni treba znova namestiti vsakič, ko dodate nov model, ker bo končna točka samodejno služila vsem modelom, shranjenim na določenih poteh S3. To se doseže z Strežnik z več modeli (MMS), odprtokodno ogrodje za streženje modelov ML, ki se lahko namesti v vsebnike, da se zagotovi sprednji del, ki izpolnjuje zahteve za nove API-je vsebnika MME. Poleg tega lahko uporabite druge modele strežnikov, vključno z TorchServe in Triton. MMS lahko namestite v vsebnik po meri prek Komplet orodij za sklepanje SageMaker. Če želite izvedeti več o tem, kako konfigurirati vašo datoteko Dockerfile, da vključuje MMS in jo uporabite za svoje modele, glejte Zgradite svoj vsebnik za večmodelne končne točke SageMaker.

Naslednji delček kode prikazuje, kako ustvariti MME s SDK SageMaker Python:

from sagemaker.multidatamodel import MultiDataModel # Create the MultiDataModel definition
multimodel = MultiDataModel( name='customer-models', model_data_prefix=f's3://{bucket}/scaling-thousand-models/models', model=your_model,
) # Deploy on a real-time endpoint
predictor = multimodel.deploy( initial_instance_count=1, instance_type='ml.c5.xlarge',
)

Ko je MME v živo, ga lahko prikličemo za ustvarjanje napovedi. Priklice je mogoče izvesti v katerem koli SDK-ju AWS kot tudi s SDK-jem SageMaker Python, kot je prikazano v naslednjem izrezku kode:

predictor.predict( data='{"period": 7}', # the payload, in this case JSON target_model='{customer}.tar.gz' # the name of the target model
)

Pri klicu modela se model najprej naloži iz Amazona S3 na instanco, kar lahko pri klicu novega modela povzroči hladen zagon. Pogosto uporabljeni modeli so predpomnjeni v pomnilniku in na disku, da se zagotovi sklepanje z nizko zakasnitvijo.

zaključek

SageMaker je zmogljiva in stroškovno učinkovita platforma za usposabljanje in strežbo na tisoče modelov ML. Njegove funkcije, vključno s procesiranjem SageMaker, delovnimi mesti za usposabljanje in MME, omogočajo organizacijam, da učinkovito usposabljajo in strežejo na tisoče modelov v velikem obsegu, hkrati pa izkoristijo prednosti prihranka pri stroških uporabe infrastrukture AWS Cloud. Če želite izvedeti več o tem, kako uporabljati SageMaker za usposabljanje in postrežbo na tisoče modelov, glejte Obdelajte podatke, Usposobite model z Amazon SageMaker in Gostite več modelov v enem vsebniku za eno končno točko.


O avtorjih

Slika DavideDavide Gallitelli je specializirani arhitekt rešitev za AI/ML v regiji EMEA. Ima sedež v Bruslju in tesno sodeluje s strankami po vsem Beneluksu. Razvijalec je že od malih nog, kodirati je začel pri 7 letih. AI/ML se je začel učiti na univerzi in od takrat se je vanj zaljubil.

Slika MauritsaMaurits de Groot je arhitekt rešitev pri Amazon Web Services iz Amsterdama. Rad se ukvarja s temami, povezanimi s strojnim učenjem, in ima nagnjenost k startupom. V prostem času rad smuča in igra squash.

Časovni žig:

Več od Strojno učenje AWS