Postopno usposabljanje z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Postopno usposabljanje z Amazon SageMaker JumpStart

Decembra 2020 je dr. AWS je objavil splošno razpoložljivost Amazon SageMaker JumpStart, zmožnost Amazon SageMaker ki vam pomaga hitro in enostavno začeti s strojnim učenjem (ML). SageMaker JumpStart zagotavlja fino nastavitev in uvajanje široke palete vnaprej usposobljenih modelov v priljubljenih opravilih ML z enim klikom ter izbor celovitih rešitev, ki rešujejo pogoste poslovne probleme. Te funkcije odpravljajo težko delo pri vsakem koraku procesa ML, kar olajša razvoj visokokakovostnih modelov in skrajša čas do uvajanja.

Vse vsebine JumpStart so bile prej na voljo samo prek Amazon SageMaker Studio, ki zagotavlja a uporabniku prijazen grafični vmesnik za interakcijo s funkcijo. Pred kratkim tudi mi napovedal začetek enostavnega za uporabo API-ji JumpStart kot razširitev SDK-ja SageMaker Python, ki vam omogoča programsko uvajanje in natančno nastavitev velikega izbora vnaprej usposobljenih modelov, ki jih podpira JumpStart, na vaših lastnih nizih podatkov. Ta zagon odklene uporabo zmožnosti JumpStart v delovnih tokovih vaše kode, cevovodih MLOps in povsod drugje, kjer komunicirate s SageMakerjem prek SDK.

V tej objavi z veseljem sporočamo, da vsi modeli JumpStart, ki jih je mogoče učiti, zdaj podpirajo postopno usposabljanje. Postopno usposabljanje vam omogoča, da usposobite model, ki ste ga že natančno prilagodili, z uporabo razširjenega nabora podatkov, ki vsebuje osnovni vzorec, ki ni bil upoštevan v prejšnjih izvajanjih natančnega prilagajanja, kar je povzročilo slabo delovanje modela. Postopno usposabljanje prihrani tako čas kot vire, ker vam ni treba ponovno usposobiti modela iz nič. Če želite skočiti neposredno na kodo JumpStart API, ki jo razlagamo v tej objavi, se lahko obrnete na vzorec zvezka.

JumpStart pregled

JumpStart je večplasten izdelek, ki vključuje različne zmožnosti, ki vam pomagajo hitro začeti uporabljati ML na SageMakerju. V času pisanja vam JumpStart omogoča naslednje:

  • Razmestite vnaprej usposobljene modele za pogoste naloge ML – JumpStart vam omogoča, da obravnavate pogoste naloge ML brez razvojnih naporov, saj zagotavlja enostavno uvajanje modelov, vnaprej usposobljenih na velikih, javno dostopnih naborih podatkov. Raziskovalna skupnost ML je vložila veliko truda v to, da je večina nedavno razvitih modelov postala javno dostopna za uporabo; JumpStart gosti zbirko več kot 300 modelov, ki zajemajo 15 najbolj priljubljenih nalog ML, kot so zaznavanje predmetov, klasifikacija besedila in generiranje besedila, kar začetnikom olajša njihovo uporabo. Ti modeli so vzeti iz priljubljenih središč modelov, kot so TensorFlow, PyTorch, Hugging Face in MXNet Hub.
  • Natančno prilagodite vnaprej usposobljene modele – JumpStart vam omogoča natančno nastavitev vnaprej pripravljenih modelov brez potrebe po pisanju lastnega algoritma za usposabljanje. V ML se imenuje zmožnost prenosa znanja, pridobljenega z enega področja na drugega transferno učenje. Učenje prenosa lahko uporabite za izdelavo natančnih modelov na svojih manjših naborih podatkov z veliko nižjimi stroški usposabljanja kot stroški usposabljanja izvirnega modela. JumpStart vključuje tudi priljubljene algoritme za usposabljanje, ki temeljijo na LightGBM, CatBoost, XGBoost in Scikit-learn, ki jih lahko trenirate od začetka za tabelarično regresijo in klasifikacijo.
  • Uporabite vnaprej izdelane rešitve – JumpStart ponuja nabor 17 rešitev za običajne primere uporabe ML, kot so napovedovanje povpraševanja ter industrijske in finančne aplikacije, ki jih lahko uvedete z le nekaj kliki. Rešitve so aplikacije ML od konca do konca, ki združujejo različne storitve AWS za rešitev določenega primera poslovne uporabe. Uporabljajo Oblikovanje oblaka AWS predloge in referenčne arhitekture za hitro uvajanje, kar pomeni, da so popolnoma prilagodljivi.
  • Uporabite primere zvezkov za algoritme SageMaker – SageMaker ponuja zbirko vgrajenih algoritmov za pomoč podatkovnim znanstvenikom in izvajalcem ML, da hitro začnejo z usposabljanjem in uvajanjem modelov ML. JumpStart ponuja vzorčne zvezke, ki jih lahko uporabite za hitro uporabo teh algoritmov.
  • Preglejte video posnetke in bloge za usposabljanje – JumpStart ponuja tudi številne objave v spletnem dnevniku in videoposnetke, ki vas učijo, kako uporabljati različne funkcije znotraj SageMakerja.

JumpStart sprejema nastavitve VPC po meri in AWS Service Key Management (AWS KMS) šifrirne ključe, tako da lahko varno uporabljate razpoložljive modele in rešitve v okolju vašega podjetja. Svoje varnostne nastavitve lahko posredujete JumpStartu v Studiu ali prek SDK-ja SageMaker Python.

Razvrstitev slik

Klasifikacija slike se nanaša na razvrstitev slike v eno od oznak razreda v naboru podatkov za usposabljanje. Model lahko natančno prilagodite kateremu koli danemu naboru podatkov, ki vsebuje slike, ki pripadajo poljubnemu številu razredov. Model, ki je na voljo za natančno nastavitev na JumpStartu, pripne klasifikacijsko plast ustreznemu modelu ekstraktorja funkcij in inicializira parametre plasti na naključne vrednosti. Izhodna dimenzija klasifikacijskega sloja je določena glede na število razredov v vhodnih podatkih. Korak natančnega prilagajanja prilagodi parametre klasifikacijske plasti, medtem ko ohrani parametre modela ekstraktorja funkcij zamrznjene in vrne natančno nastavljeni model. Cilj je zmanjšati napako napovedi vhodnih podatkov.

Za naš nabor podatkov je vnos imenik s toliko podimeniki, kot je število razredov. Vsak podimenik mora imeti slike, ki pripadajo temu razredu, v formatu .jpg. Vhodni imenik bi moral izgledati kot naslednja hierarhija, če podatki o usposabljanju vsebujejo slike iz dveh razredov: roses in dandelion:

input_directory |--roses |--abc.jpg |--def.jpg |--dandelion |--ghi.jpg |--jkl.jpg

Imena map, razredov in imena datotek .jpg so lahko poljubna.

Nudimo tf_flowers1 nabor podatkov kot privzeti nabor podatkov za natančno nastavitev modela. Ta nabor podatkov vsebuje slike petih vrst rož. Nabor podatkov je bil prenesen iz TensorFlow.

Pregled navodila

Naslednji razdelki nudijo predstavitev po korakih za izvajanje klasifikacije slik s programom JumpStart, prek uporabniškega vmesnika Studio in API-jev JumpStart.

Sprehodimo se skozi naslednje korake:

  1. Do JumpStart dostopajte prek uporabniškega vmesnika Studio:
    1. Natančno prilagodite predhodno usposobljeni model.
    2. Razmestite natančno nastavljen model.
    3. Postopoma usposobite natančno nastavljen model in ga prerazporedite.
  2. Uporabite JumpStart programsko s SDK SageMaker Python:
    1. Natančno prilagodite predhodno usposobljeni model.
    2. Razmestite natančno nastavljen model.
    3. Postopoma usposobite natančno nastavljen model in ga prerazporedite.

Do JumpStart dostopajte prek uporabniškega vmesnika Studio

V tem razdelku prikazujemo, kako natančno prilagoditi in razmestiti modele JumpStart prek uporabniškega vmesnika Studio. Poleg tega pokažemo, kako postopno usposobiti model, ki ste ga predhodno natančno prilagodili.

Natančno prilagodite predhodno usposobljeni model

Naslednji videoposnetek prikazuje, kako v JumpStart poiščete predhodno usposobljen model klasifikacije slik in ga natančno prilagodite. Stran z modelom vsebuje dragocene informacije o modelu, o tem, kako ga uporabljati, pričakovanem formatu podatkov in nekaterih podrobnostih natančne nastavitve.

Za namene predstavitve natančno prilagodimo model z uporabo privzeto zagotovljenega nabora podatkov, ki je tf_flowers nabor podatkov, sestavljen iz različnih vrst rož. Natančna nastavitev lastnega nabora podatkov vključuje pravilno oblikovanje podatkov (kot je razloženo na strani modela) in njihovo nalaganje v Preprosta storitev shranjevanja Amazon (Amazon S3) in določitev njegove lokacije v konfiguraciji vira podatkov.

Uporabljamo enake privzeto nastavljene vrednosti hiperparametrov (število epoh, hitrost učenja in velikost serije). Uporabljamo tudi primerek ml.p3.2xlarge, podprt z grafično procesorsko enoto, kot primerek za usposabljanje SageMaker.

Svoje usposabljanje lahko spremljate neposredno na konzoli Studio in ste obveščeni po njegovem zaključku.

Razmestite natančno nastavljen model

Ko je usposabljanje končano, lahko uvedete natančno nastavljen model z iste strani, ki vsebuje podrobnosti o delu usposabljanja. Za uvedbo našega modela izberemo drugo vrsto instance, ml.p2.xlarge. Še vedno zagotavlja pospešek GPE, potreben za nizko zakasnitev sklepanja, vendar po nižji ceni. Ko konfigurirate primerek gostovanja SageMaker, izberite uvajanje. Traja lahko od 5 do 10 minut, dokler vaša vztrajna končna točka ne začne delovati.

Potem je vaša končna točka delujoča in pripravljena na odziv na zahteve po sklepanju!

Da bi pospešili vaš čas za sklepanje, JumpStart ponuja vzorčni zvezek, ki vam pokaže, kako zagnati sklepanje na vaši sveže razporejeni končni točki. Izberite Odprite Beležnico pod Uporabi končno točko iz Studia.

Postopoma usposobite natančno nastavljen model in ga uvedite

Ko je natančna nastavitev končana, lahko dodatno usposobite model za povečanje zmogljivosti. Ta korak je zelo podoben začetnemu postopku natančnega prilagajanja, le da kot izhodišče uporabimo že natančno nastavljen model. Uporabite lahko nove podatke, vendar mora biti format nabora podatkov enak (isti niz razredov).

Uporabite JumpStart programsko s SDK SageMaker

V prejšnjih razdelkih smo pokazali, kako lahko uporabite uporabniški vmesnik JumpStart za natančno nastavitev, uvajanje in postopno interaktivno usposabljanje modela v nekaj klikih. Uporabite lahko tudi JumpStartove modele in enostavno natančno programsko nastavitev z uporabo API-jev, ki so integrirani v SDK SageMaker. Zdaj bomo pregledali hiter primer, kako lahko ponovite prejšnji postopek. Vsi koraki v tej predstavitvi so na voljo v priloženih zvezkih Uvod v JumpStart – klasifikacija slik.

Natančno prilagodite predhodno usposobljeni model

Za natančno nastavitev izbranega modela moramo pridobiti URI tega modela, kot tudi URI skripta za usposabljanje in sliko vsebnika, ki se uporablja za usposabljanje. Na srečo so ti trije vnosi odvisni izključno od imena modela, različice (za seznam razpoložljivih modelov glejte Tabela razpoložljivih modelov JumpStart) in vrsto primerka, na katerem se želite učiti. To je prikazano v naslednjem delčku kode:

from sagemaker import image_uris, model_uris, script_uris model_id, model_version = "pytorch-ic-mobilenet-v2", "1.0.0"
training_instance_type = "ml.p3.2xlarge" # Retrieve the docker image
train_image_uri = image_uris.retrieve( region=None, framework=None, model_id=model_id, model_version=model_version, image_scope="training", instance_type=training_instance_type,
) # Retrieve the training script
train_source_uri = script_uris.retrieve(model_id=model_id, model_version=model_version, script_scope="training") # Retrieve the pre-trained model tarball to further fine-tune
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

Pridobivamo model_id ustreza istemu modelu, ki smo ga uporabljali prej. Ikona v identifikatorju ustreza klasifikaciji slike.

Zdaj lahko natančno prilagodite ta model JumpStart na svojem naboru podatkov po meri z uporabo SDK-ja SageMaker. Uporabljamo enako tf_flowers nabor podatkov, ki javno gostuje na Amazon S3 in je priročno osredotočen na analizo razpoloženja. Vaš nabor podatkov mora biti strukturiran za natančno nastavitev, kot je razloženo v prejšnjem razdelku. Oglejte si naslednji primer kode:

# URI of your training dataset
training_dataset_s3_path = "s3://jumpstart-cache-prod-us-west-2/training-datasets/tf_flowers/"
training_job_name = name_from_base(f"jumpstart-example-{model_id}-transfer-learning") # Create SageMaker Estimator instance
ic_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=train_model_uri, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=s3_output_location,
) # Launch a SageMaker Training job by passing s3 path of the training data
ic_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Za naš izbrani model pridobimo enake privzete hiperparametre kot tiste, ki smo jih videli v prejšnjem razdelku, z uporabo sagemaker.hyperparameters.retrieve_default(). Nato postavimo primerek ocenjevalca SageMaker in pokličemo metodo .fit, da začnemo natančno prilagajati naš model, tako da mu posredujemo URI Amazon S3 za naše podatke o usposabljanju. Kot vidite, je entry_point skript je poimenovan transfer_learning.py (enako za druge naloge in modele) in vhodni podatkovni kanal, ki se posreduje .fit mora biti imenovan training.

Uvajanje natančno nastavljenega modela

Ko je usposabljanje končano, lahko uvedete svoj natančno nastavljen model. Za to potrebujemo le URI skripta za sklepanje (koda, ki določa, kako se model uporablja za sklepanje, ko je enkrat razporejen) in URI slike vsebnika za sklepanje, ki vključuje ustrezen strežnik modela za gostovanje modela, ki smo ga izbrali. Oglejte si naslednjo kodo:

# Retrieve the inference docker container uri
deploy_image_uri = image_uris.retrieve( region=None, framework=None, image_scope="inference", model_id=model_id, model_version=model_version, instance_type=inference_instance_type,
)
# Retrieve the inference script uri
deploy_source_uri = script_uris.retrieve( model_id=model_id, model_version=model_version, script_scope="inference"
) endpoint_name = name_from_base(f"jumpstart-example-FT-{model_id}-") # Use the estimator from the previous step to deploy to a SageMaker endpoint
finetuned_predictor = ic_estimator.deploy( initial_instance_count=1, instance_type=inference_instance_type, entry_point="inference.py", image_uri=deploy_image_uri, source_dir=deploy_source_uri, endpoint_name=endpoint_name,
)

Po nekaj minutah je naš model razporejen in iz njega lahko v realnem času pridobimo napovedi!

Nato prikličemo končno točko, da napovemo, katere vrste cvetov obstajajo na vzorčni sliki. Uporabljamo query_endpoint in parse_response pomožne funkcije, ki so opredeljene v priloženih prenosnik.

query_response = finetuned_predictor.predict( img, {"ContentType": "application/x-image", "Accept": "application/json;verbose"} )
model_predictions = json.loads(query_response)
predicted_label = model_predictions["predicted_label"]
display( HTML( f'<img src={image_filename} alt={image_filename} align="left" style="width: 250px;"/>' f"<figcaption>Predicted Label: {predicted_label}</figcaption>" )
)

Postopoma usposobite natančno nastavljen model in ga prerazporedite

Učinkovitost natančno nastavljenega modela lahko povečamo z nadaljnjim usposabljanjem na novih slikah. Za to lahko uporabite poljubno število novih ali starih slik, vendar mora format nabora podatkov ostati enak (isti niz razredov). Korak postopnega usposabljanja je podoben procesu natančnega uravnavanja, s pomembno razliko: pri začetnem natančnem uravnavanju začnemo z vnaprej usposobljenim modelom, medtem ko pri postopnem usposabljanju začnemo z obstoječim natančno nastavljenim modelom. Oglejte si naslednjo kodo:

last_trained_model_path = f"{s3_output_location}/{last_training_job_name}/output/model.tar.gz"
incremental_s3_output_location = f"s3://{output_bucket}/{incremental_output_prefix}/output"incremental_train_estimator = Estimator( role=aws_role, image_uri=train_image_uri, source_dir=train_source_uri, model_uri=last_trained_model_path, entry_point="transfer_learning.py", instance_count=1, instance_type=training_instance_type, max_run=360000, hyperparameters=hyperparameters, output_path=incremental_s3_output_location, base_job_name=incremental_training_job_name,
) incremental_train_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Ko je usposabljanje končano, lahko uporabimo iste korake, kot so opisani v prejšnjem razdelku, da razmestimo model.

zaključek

JumpStart je zmožnost v SageMakerju, ki vam omogoča hiter začetek ML. JumpStart uporablja odprtokodne vnaprej usposobljene modele za reševanje pogostih težav ML, kot so klasifikacija slik, zaznavanje predmetov, klasifikacija besedila, klasifikacija stavčnih parov in odgovarjanje na vprašanja.

V tej objavi smo vam pokazali, kako natančno prilagoditi in uvesti vnaprej usposobljen model klasifikacije slik. Pokazali smo tudi, kako postopno usposobiti natančno nastavljen model za klasifikacijo slik. Z JumpStart lahko preprosto izvedete ta postopek brez potrebe po kodiranju. Preizkusite rešitev sami in nam v komentarjih sporočite, kako gre. Če želite izvedeti več o JumpStartu, si oglejte video AWS re:Invent 2020 Začnite uporabljati ML v nekaj minutah z Amazon SageMaker JumpStart.

Reference

  1. Ekipa TensorFlow, 2019

O avtorjih

Postopno usposabljanje z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.dr. Vivek Madan je uporabni znanstvenik pri ekipi Amazon SageMaker JumpStart. Doktoriral je. z Univerze Illinois v Urbana-Champaignu in bil podoktorski raziskovalec na Georgia Tech. Je aktiven raziskovalec strojnega učenja in oblikovanja algoritmov ter je objavil članke na konferencah EMNLP, ICLR, COLT, FOCS in SODA.

Postopno usposabljanje z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.João Moura je specialist za rešitve AI/ML pri Amazon Web Services. Večinoma se osredotoča na primere uporabe NLP in pomaga strankam optimizirati usposabljanje in uvajanje modela globokega učenja. Je tudi aktiven zagovornik rešitev ML z nizko kodo in strojne opreme, specializirane za ML.

Postopno usposabljanje z Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.Dr. Ashish Khetan je višji aplikativni znanstvenik z Amazon SageMaker JumpStart in Vgrajeni algoritmi Amazon SageMaker in pomaga pri razvoju algoritmov strojnega učenja. Je aktiven raziskovalec strojnega učenja in statističnega sklepanja ter je objavil veliko člankov na konferencah NeurIPS, ICML, ICLR, JMLR, ACL in EMNLP.

Časovni žig:

Več od Strojno učenje AWS