Antrenament incremental cu Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Antrenament incremental cu Amazon SageMaker JumpStart

În decembrie 2020, AWS a anunțat disponibilitatea generală a Amazon SageMaker JumpStart, o capacitate de Amazon SageMaker care vă ajută să începeți rapid și ușor cu învățarea automată (ML). SageMaker JumpStart furnizează reglajul fin și implementarea cu un singur clic a unei game largi de modele pregătite în prealabil pentru sarcinile ML populare, precum și o selecție de soluții end-to-end care rezolvă problemele obișnuite de afaceri. Aceste caracteristici îndepărtează sarcinile grele din fiecare pas al procesului ML, facilitând dezvoltarea modelelor de înaltă calitate și reducând timpul până la implementare.

Tot conținutul JumpStart era disponibil anterior numai prin intermediul Amazon SageMaker Studio, care oferă o interfață grafică ușor de utilizat pentru a interacționa cu caracteristica. Recent, și noi a anunțat lansarea de usor de utilizat API-uri JumpStart ca o extensie a SDK-ului SageMaker Python, permițându-vă să implementați și să reglați în mod programatic o selecție vastă de modele pre-antrenate acceptate de JumpStart pe propriile seturi de date. Această lansare deblochează utilizarea capabilităților JumpStart în fluxurile de lucru cu cod, conductele MLOps și oriunde altundeva interacționați cu SageMaker prin SDK.

În această postare, suntem încântați să anunțăm că toate modelele JumpStart care pot fi antrenate acceptă acum antrenament incremental. Antrenamentul incremental vă permite să antrenați un model pe care l-ați reglat deja folosind un set de date extins care conține un model de bază care nu a fost luat în considerare în execuțiile anterioare de reglare fină, ceea ce a dus la o performanță slabă a modelului. Antrenamentul incremental economisește atât timp, cât și resurse, deoarece nu trebuie să recalificați modelul de la zero. Dacă doriți să intrați direct în codul JumpStart API pe care îl explicăm în această postare, vă puteți referi la caiet de probă.

Prezentare generală JumpStart

JumpStart este un produs cu mai multe fațete care include diferite capacități pentru a vă ajuta să începeți rapid cu ML pe SageMaker. În momentul scrierii, JumpStart vă permite să faceți următoarele:

  • Implementați modele pre-instruite pentru sarcinile ML obișnuite – JumpStart vă permite să abordați sarcinile ML obișnuite fără efort de dezvoltare, oferind o implementare ușoară a modelelor pregătite în prealabil pe seturi de date mari, disponibile public. Comunitatea de cercetare ML a depus un efort mare pentru ca majoritatea modelelor dezvoltate recent să fie disponibile public pentru utilizare; JumpStart găzduiește o colecție de peste 300 de modele, care acoperă cele mai populare 15 sarcini ML, cum ar fi detectarea obiectelor, clasificarea textului și generarea de text, făcându-le ușor de utilizat pentru începători. Aceste modele sunt extrase din hub-uri de model populare, cum ar fi TensorFlow, PyTorch, Hugging Face și MXNet Hub.
  • Ajustați modelele pre-antrenate – JumpStart vă permite să reglați modelele pre-antrenate fără a fi nevoie să scrieți propriul algoritm de antrenament. În ML, se numește capacitatea de a transfera cunoștințele învățate dintr-un domeniu în altul transfer de învățare. Puteți utiliza învățarea prin transfer pentru a produce modele precise pe seturile dvs. de date mai mici, cu costuri de instruire mult mai mici decât cele implicate în formarea modelului original. JumpStart include, de asemenea, algoritmi de antrenament populari bazați pe LightGBM, CatBoost, XGBoost și Scikit-learn pe care îi puteți antrena de la zero pentru regresie și clasificare tabelară.
  • Utilizați soluții prefabricate – JumpStart oferă un set de 17 soluții pentru cazuri de utilizare obișnuite ML, cum ar fi prognoza cererii și aplicații industriale și financiare, pe care le puteți implementa cu doar câteva clicuri. Soluțiile sunt aplicații ML end-to-end care îmbină diverse servicii AWS pentru a rezolva un anumit caz de utilizare în afaceri. Ei folosesc Formarea AWS Cloud șabloane și arhitecturi de referință pentru implementare rapidă, ceea ce înseamnă că sunt complet personalizabile.
  • Utilizați exemple de notebook pentru algoritmii SageMaker – SageMaker oferă o suită de algoritmi încorporați pentru a ajuta oamenii de știință de date și practicienii ML să înceapă cu instruirea și implementarea rapidă a modelelor ML. JumpStart oferă exemple de notebook-uri pe care le puteți folosi pentru a aplica rapid acești algoritmi.
  • Examinați videoclipuri de antrenament și bloguri – JumpStart oferă, de asemenea, numeroase postări pe blog și videoclipuri care vă învață cum să utilizați diferite funcționalități în SageMaker.

JumpStart acceptă setări personalizate VPC și AWS Service Management Service (AWS KMS), chei de criptare, astfel încât să puteți utiliza modelele și soluțiile disponibile în siguranță în mediul dvs. de întreprindere. Puteți transmite setările de securitate la JumpStart din Studio sau prin intermediul SDK-ului SageMaker Python.

Clasificarea imaginilor

Clasificarea imaginilor se referă la clasificarea unei imagini într-una dintre etichetele de clasă din setul de date de antrenament. Puteți ajusta modelul la orice set de date dat, care cuprinde imagini aparținând oricărui număr de clase. Modelul disponibil pentru reglaj fin pe JumpStart atașează un strat de clasificare la modelul de extractor de caracteristici corespunzător și inițializează parametrii stratului la valori aleatorii. Dimensiunea de ieșire a stratului de clasificare este determinată pe baza numărului de clase din datele de intrare. Pasul de reglare fină reglează parametrii stratului de clasificare, păstrând în același timp parametrii modelului extractor de caracteristici înghețați și returnează modelul reglat fin. Obiectivul este de a minimiza eroarea de predicție a datelor de intrare.

Pentru setul nostru de date, intrarea este un director cu tot atâtea subdirectoare cât numărul de clase. Fiecare subdirector ar trebui să aibă imagini aparținând acelei clase în format .jpg. Directorul de intrare ar trebui să arate ca următoarea ierarhie dacă datele de antrenament conțin imagini din două clase: roses și dandelion:

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

Numele folderelor, claselor și numele fișierelor .jpg pot fi orice.

Noi oferim tf_flowers1 set de date ca set de date implicit pentru reglarea fină a modelului. Acest set de date cuprinde imagini cu cinci tipuri de flori. Setul de date a fost descărcat de la TensorFlow.

Prezentare generală a progresului

Următoarele secțiuni oferă o demonstrație pas cu pas pentru a realiza clasificarea imaginilor cu JumpStart, atât prin interfața de utilizare Studio, cât și prin API-urile JumpStart.

Parcurgem următorii pași:

  1. Accesați JumpStart prin interfața de utilizare Studio:
    1. Reglați fin modelul pre-antrenat.
    2. Implementați modelul reglat fin.
    3. Antrenați progresiv modelul ajustat și redistribuiți.
  2. Utilizați JumpStart în mod programatic cu SageMaker Python SDK:
    1. Reglați fin modelul pre-antrenat.
    2. Implementați modelul reglat fin.
    3. Antrenați progresiv modelul ajustat și redistribuiți.

Accesați JumpStart prin interfața de utilizare Studio

În această secțiune, demonstrăm cum să reglați și să implementați modelele JumpStart prin interfața de utilizare Studio. În plus, vă arătăm cum să antrenați progresiv un model pe care l-ați reglat anterior.

Reglați fin modelul pre-antrenat

Următorul videoclip vă arată cum să găsiți un model de clasificare a imaginilor pre-antrenat pe JumpStart și să-l reglați fin. Pagina modelului conține informații valoroase despre model, cum să-l folosească, formatul de date așteptat și câteva detalii de reglare fină.

În scopuri demonstrative, ajustăm modelul folosind setul de date furnizat implicit, care este tf_flowers set de date, compus din diferite soiuri de flori. Reglarea fină a propriului set de date implică luarea de formatare corectă a datelor (după cum este explicat pe pagina modelului), încărcarea acestora în Serviciul Amazon de stocare simplă (Amazon S3) și specificând locația acestuia în configurația sursei de date.

Folosim aceleași valori ale hiperparametrului setate implicit (număr de epoci, rata de învățare și dimensiunea lotului). De asemenea, folosim o instanță ml.p3.2xlarge susținută de GPU ca instanță de antrenament SageMaker.

Vă puteți monitoriza munca de formare direct pe consola Studio și sunteți notificat după finalizarea acesteia.

Implementați modelul reglat fin

După finalizarea instruirii, puteți implementa modelul ajustat de pe aceeași pagină care conține detaliile jobului de instruire. Pentru a implementa modelul nostru, alegem un alt tip de instanță, ml.p2.xlarge. Oferă în continuare accelerația GPU necesară pentru o latență scăzută a inferenței, dar la un preț mai mic. După ce configurați instanța de găzduire SageMaker, alegeți Lansa. Poate dura 5-10 minute până când punctul final persistent este activ și funcțional.

Atunci punctul final este operațional și gata să răspundă la solicitările de inferență!

Pentru a vă accelera timpul de inferență, JumpStart oferă un exemplu de blocnotes care vă arată cum să rulați inferența pe punctul final proaspăt implementat. Alege Deschide Notebook în Utilizați Endpoint de la Studio.

Antrenați progresiv modelul reglat și implementați

Când reglarea fină este completă, puteți antrena în continuare modelul pentru a crește performanța. Acest pas este foarte asemănător cu procesul inițial de reglare fină, cu excepția faptului că folosim modelul deja reglat fin ca punct de plecare. Puteți utiliza date noi, dar formatul setului de date trebuie să fie același (același set de clase).

Utilizați JumpStart în mod programatic cu SDK-ul SageMaker

În secțiunile precedente, am arătat cum puteți utiliza interfața de utilizare JumpStart pentru a ajusta, implementa și antrena progresiv un model în mod interactiv, în doar câteva clicuri. De asemenea, puteți utiliza modelele JumpStart și o reglare fină ușoară în mod programatic, folosind API-uri care sunt integrate în SDK-ul SageMaker. Acum trecem peste un exemplu rapid despre cum puteți replica procesul precedent. Toți pașii din această demonstrație sunt disponibili în caietele însoțitoare Introducere în JumpStart – Clasificarea imaginilor.

Reglați fin modelul pre-antrenat

Pentru a regla fin un model selectat, trebuie să obținem URI-ul modelului respectiv, precum și cel al scriptului de antrenament și al imaginii container utilizate pentru antrenament. Din fericire, aceste trei intrări depind numai de numele modelului, versiune (pentru o listă a modelelor disponibile, vezi Tabelul modelului disponibil JumpStart), și tipul de instanță pe care doriți să vă antrenați. Acest lucru este demonstrat în următorul fragment de cod:

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

Recuperăm model_id corespunzătoare aceluiași model pe care l-am folosit anterior. ic-ul din identificator corespunde clasificării imaginii.

Acum puteți ajusta acest model JumpStart pe propriul set de date personalizat folosind SDK-ul SageMaker. Folosim la fel tf_flowers set de date care este găzduit public pe Amazon S3, concentrat în mod convenabil pe analiza sentimentelor. Setul dvs. de date ar trebui să fie structurat pentru reglare fină, așa cum este explicat în secțiunea anterioară. Vedeți următorul exemplu de cod:

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

Obținem aceiași hiperparametri impliciti pentru modelul nostru selectat ca și cei pe care i-am văzut în secțiunea anterioară, folosind sagemaker.hyperparameters.retrieve_default(). Apoi instanțiem un estimator SageMaker și apelăm metoda .fit pentru a începe ajustarea fină a modelului nostru, transmițându-i URI-ul Amazon S3 pentru datele noastre de antrenament. După cum puteți vedea, entry_point scriptul furnizat este numit transfer_learning.py (la fel pentru alte sarcini și modele) și canalul de date de intrare transmis .fit trebuie numit training.

Implementarea modelului reglat fin

Când antrenamentul este complet, puteți implementa modelul dvs. reglat fin. Pentru a face acest lucru, tot ce trebuie să obținem este URI-ul scriptului de inferență (codul care determină modul în care modelul este utilizat pentru inferență odată implementat) și URI-ul imaginii containerului de inferență, care include un server de model adecvat pentru a găzdui modelul ales. Vezi următorul cod:

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

După câteva minute, modelul nostru este implementat și putem obține predicții din el în timp real!

Apoi, invocăm punctul final pentru a prezice ce tip de flori există în imaginea exemplu. Noi folosim query_endpoint și parse_response funcții de ajutor, care sunt definite în documentele de însoțire caiet.

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

Antrenați progresiv modelul ajustat și redistribuiți

Putem crește performanța unui model ajustat prin antrenarea în continuare pe imagini noi. Puteți utiliza orice număr de imagini noi sau vechi pentru aceasta, dar formatul setului de date trebuie să rămână același (același set de clase). Pasul de antrenament incremental este similar cu procesul de reglare fină, cu o diferență importantă: în reglarea fină inițială începem cu un model pre-antrenat, în timp ce în antrenamentul incremental începem cu un model reglat fin existent. Vezi următorul cod:

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)

Când antrenamentul este complet, putem folosi aceiași pași ca cei descriși în secțiunea precedentă pentru a implementa modelul.

Concluzie

JumpStart este o capacitate din SageMaker care vă permite să începeți rapid cu ML. JumpStart folosește modele open-source pre-antrenate pentru a rezolva probleme comune ML, cum ar fi clasificarea imaginilor, detectarea obiectelor, clasificarea textului, clasificarea perechilor de propoziții și răspunsul la întrebări.

În această postare, v-am arătat cum să reglați fin și să implementați un model de clasificare a imaginilor pregătit în prealabil. De asemenea, am arătat cum să antrenăm progresiv un model reglat fin pentru clasificarea imaginilor. Cu JumpStart, puteți efectua cu ușurință acest proces, fără a fi nevoie să codificați. Încercați singur soluția și spuneți-ne cum merge în comentarii. Pentru a afla mai multe despre JumpStart, consultați videoclipul AWS re:Invent 2020 Începeți cu ML în câteva minute cu Amazon SageMaker JumpStart.

Referinte

  1. Echipa TensorFlow, 2019

Despre Autori

Antrenament incremental cu Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Dr. Vivek Madan este un om de știință aplicat în echipa Amazon SageMaker JumpStart. Și-a luat doctoratul. de la Universitatea din Illinois la Urbana-Champaign și a fost cercetător post-doctoral la Georgia Tech. Este un cercetător activ în învățarea automată și proiectarea algoritmilor și a publicat lucrări în cadrul conferințelor EMNLP, ICLR, COLT, FOCS și SODA.

Antrenament incremental cu Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Căutare verticală. Ai.João Moura este arhitect specializat în soluții AI/ML la Amazon Web Services. El se concentrează în principal pe cazuri de utilizare a NLP și ajută clienții să optimizeze instruirea și implementarea modelului de deep learning. El este, de asemenea, un susținător activ al soluțiilor ML low-code și al hardware-ului specializat în ML.

Antrenament incremental cu Amazon SageMaker JumpStart PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Dr. Ashish Khetan este un Senior Applied Scientist cu Amazon SageMaker JumpStart și Algoritmi încorporați Amazon SageMaker și ajută la dezvoltarea algoritmilor de învățare automată. Este un cercetător activ în învățarea automată și inferența statistică și a publicat multe lucrări în conferințele NeurIPS, ICML, ICLR, JMLR, ACL și EMNLP.

Timestamp-ul:

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