Transferați învățarea pentru modelele de clasificare a textului TensorFlow în Amazon SageMaker

Amazon SageMaker oferă o suită de algoritmi încorporați, modele pre-antrenate, și șabloane de soluții prefabricate pentru a ajuta oamenii de știință ai datelor și practicanții de învățare automată (ML) să înceapă să se antreneze și să implementeze rapid modele ML. Puteți utiliza acești algoritmi și modele atât pentru învățarea supravegheată, cât și pentru învățarea nesupravegheată. Ele pot procesa diferite tipuri de date de intrare, inclusiv tabelare, imagini și text.

Această postare este a treia dintr-o serie despre noii algoritmi încorporați în SageMaker. În prima postare, am arătat cum SageMaker oferă un algoritm încorporat pentru clasificarea imaginilor. În al doilea post, am arătat cum SageMaker oferă un algoritm încorporat pentru detectarea obiectelor. Astăzi, anunțăm că SageMaker oferă un nou algoritm încorporat pentru clasificarea textului folosind TensorFlow. Acest algoritm de învățare supravegheată acceptă învățarea prin transfer pentru multe modele pre-antrenate disponibile în Hub TensorFlow. Este nevoie de o bucată de text ca intrare și emite probabilitatea pentru fiecare dintre etichetele clasei. Puteți ajusta aceste modele pre-antrenate utilizând învățarea prin transfer chiar și atunci când un corpus mare de text nu este disponibil. Este disponibil prin SageMaker algoritmi încorporați, precum și prin intermediul SageMaker JumpStart UI in Amazon SageMaker Studio. Pentru mai multe informații, consultați Clasificarea textului și caietul de exemplu Introducere în JumpStart – Clasificarea textului.

Clasificarea textului cu TensorFlow în SageMaker oferă transfer de învățare pe multe modele pre-antrenate disponibile în TensorFlow Hub. În funcție de numărul de etichete de clasă din datele de antrenament, un strat de clasificare este atașat modelului de hub TensorFlow pre-antrenat. Stratul de clasificare constă dintr-un strat dropout și un strat dens, strat complet conectat, cu regulator cu 2 norme, care este inițializat cu greutăți aleatorii. Antrenamentul modelului are hiper-parametri pentru rata abandonului stratului de abandon și factorul de regularizare L2 pentru stratul dens. Apoi, fie întreaga rețea, inclusiv modelul pre-antrenat, fie doar stratul superior de clasificare poate fi reglat fin pe noile date de antrenament. În acest mod de învățare prin transfer, antrenamentul poate fi realizat chiar și cu un set de date mai mic.

Cum să utilizați noul algoritm de clasificare a textului TensorFlow

Această secțiune descrie cum să utilizați algoritmul de clasificare a textului TensorFlow cu SageMaker Python SDK. Pentru informații despre cum să îl utilizați din interfața de utilizare Studio, consultați SageMaker JumpStart.

Algoritmul acceptă învățarea prin transfer pentru modelele pre-antrenate enumerate în Modele tensorflow. Fiecare model este identificat printr-un unic model_id. Următorul cod arată cum să reglați fin modelul de bază BERT identificat de model_id tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2 pe un set de date de antrenament personalizat. Pentru fiecare model_id, pentru a lansa un job de formare SageMaker prin intermediul Estimator clasa a SDK-ului SageMaker Python, trebuie să preluați URI-ul imaginii Docker, URI-ul scriptului de antrenament și URI-ul modelului pre-antrenat prin funcțiile utilitare furnizate în SageMaker. URI-ul scriptului de antrenament conține tot codul necesar pentru procesarea datelor, încărcarea modelului pre-antrenat, antrenamentul modelului și salvarea modelului antrenat pentru inferență. URI-ul modelului pre-antrenat conține definiția arhitecturii modelului pre-antrenat și parametrii modelului. URI-ul modelului pre-antrenat este specific modelului particular. Tarball-urile modelului pre-antrenate au fost pre-descărcate din TensorFlow și salvate cu semnătura modelului corespunzătoare în Serviciul Amazon de stocare simplă (Amazon S3), astfel încât jobul de formare să se desfășoare în izolare în rețea. Vezi următorul cod:

from sagemaker import image_uris, model_uris, script_urisfrom sagemaker.estimator import Estimator

model_id, model_version = "tensorflow-tc-bert-en-uncased-L-12-H-768-A-12-2", "*"
training_instance_type = "ml.p3.2xlarge"
# Retrieve the docker image
train_image_uri = image_uris.retrieve(model_id=model_id,model_version=model_version,image_scope="training",instance_type=training_instance_type,region=None,framework=None)# 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 for transfer learning
train_model_uri = model_uris.retrieve(model_id=model_id, model_version=model_version, model_scope="training")

output_bucket = sess.default_bucket()
output_prefix = "jumpstart-example-tensorflow-tc-training"
s3_output_location = f"s3://{output_bucket}/{output_prefix}/output"

Cu aceste artefacte de antrenament specifice modelului, puteți construi un obiect al Estimator clasă:

# Create SageMaker Estimator instance
tf_tc_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,)

Apoi, pentru transferul de învățare pe setul de date personalizat, poate fi necesar să modificați valorile implicite ale hiperparametrilor de antrenament, care sunt listați în Hiperparametrele. Puteți obține un dicționar Python al acestor hiperparametri cu valorile lor implicite prin apelare hyperparameters.retrieve_default, actualizați-le după cum este necesar, apoi transmiteți-le la clasa Estimator. Rețineți că valorile implicite ale unora dintre hiperparametri sunt diferite pentru diferite modele. Pentru modelele mari, dimensiunea implicită a lotului este mai mică și train_only_top_layer hiperparametrul este setat la True. Hiperparametrul Train_only_top_layer definește parametrii modelului care se modifică în timpul procesului de reglare fină. Dacă train_only_top_layer is True, apoi parametrii straturilor de clasificare se modifică, iar restul parametrilor rămân constanți în timpul procesului de reglare fină. Pe de altă parte, dacă train_only_top_layer is False, apoi toți parametrii modelului sunt reglați fin. Vezi următorul cod:

from sagemaker import hyperparameters# Retrieve the default hyper-parameters for fine-tuning the model
hyperparameters = hyperparameters.retrieve_default(model_id=model_id, model_version=model_version)# [Optional] Override default hyperparameters with custom values
hyperparameters["epochs"] = "5"

Noi oferim SST2 ca set de date implicit pentru reglarea fină a modelelor. Setul de date conține recenzii pozitive și negative ale filmelor. A fost descărcat de pe TensorFlow în Licență Apache 2.0. Următorul cod oferă setul de date implicit de antrenament găzduit în compartimentele S3.

# Sample training data is available in this bucket
training_data_bucket = f"jumpstart-cache-prod-{aws_region}"
training_data_prefix = "training-datasets/SST2/"

training_dataset_s3_path = f"s3://{training_data_bucket}/{training_data_prefix}"

În cele din urmă, pentru a lansa jobul de instruire SageMaker pentru reglarea fină a modelului, apelați .fit pe obiectul clasei Estimator, în timp ce treceți locația Amazon S3 a setului de date de antrenament:

# Launch a SageMaker Training job by passing s3 path of the training data
tf_od_estimator.fit({"training": training_dataset_s3_path}, logs=True)

Pentru mai multe informații despre cum să utilizați noul algoritm de clasificare a textului SageMaker TensorFlow pentru transferul de învățare pe un set de date personalizat, implementați modelul reglat fin, rulați inferența asupra modelului implementat și implementați modelul pre-antrenat așa cum este, fără o reglare fină mai întâi pe un set de date personalizat, consultați următorul exemplu de blocnotes: Introducere în JumpStart – Clasificarea textului.

Interfață de intrare/ieșire pentru algoritmul de clasificare a textului TensorFlow

Puteți regla fin fiecare dintre modelele pre-antrenate enumerate în Modele TensorFlow la orice set de date alcătuit din propoziții text cu orice număr de clase. Modelul pre-antrenat atașează un strat de clasificare la modelul Text Embedding și inițializează parametrii stratului la valori aleatorii. Dimensiunea de ieșire a stratului de clasificare este determinată pe baza numărului de clase detectate în datele de intrare. Obiectivul este de a minimiza erorile de clasificare ale datelor de intrare. Modelul returnat prin reglare fină poate fi implementat în continuare pentru inferență.

Următoarele instrucțiuni descriu modul în care datele de antrenament trebuie formatate pentru a fi introduse în model:

  • Intrare – Un director care conține un fișier data.csv. Fiecare rând din prima coloană ar trebui să aibă etichete de clasă întregi între 0 și numărul de clase. Fiecare rând din a doua coloană ar trebui să aibă datele text corespunzătoare.
  • Ieșire – Un model reglat fin care poate fi implementat pentru inferență sau antrenat suplimentar folosind antrenament incremental. Un fișier de mapare a indicilor de clasă cu etichetele de clasă este salvat împreună cu modelele.

Următorul este un exemplu de fișier CSV de intrare. Rețineți că fișierul nu trebuie să aibă antet. Fișierul ar trebui să fie găzduit într-o găleată S3 cu o cale similară cu următoarea: s3://bucket_name/input_directory/. Rețineți că următorul / este necesară.

|0 |hide new secretions from the parental units|
|0 |contains no wit , only labored gags|
|1 |that loves its characters and communicates something rather beautiful about human nature|
|...|...|

Inferență cu algoritmul de clasificare a textului TensorFlow

Modelele generate pot fi găzduite pentru inferență și text de sprijin ca application/x-text tipul de conținut. Ieșirea conține valorile de probabilitate, etichetele de clasă pentru toate clasele și eticheta prezisă corespunzătoare indexului de clasă cu cea mai mare probabilitate codificată în format JSON. Modelul procesează un singur șir per cerere și scoate o singură linie. Următorul este un exemplu de răspuns în format JSON:

accept: application/json;verbose
{"probabilities": [prob_0, prob_1, prob_2, ...],
 "labels": [label_0, label_1, label_2, ...],
 "predicted_label": predicted_label}

If accept este setat la application/json, atunci modelul produce numai probabilități. Pentru mai multe detalii despre antrenament și inferență, consultați exemplul de blocnotes Introducere la Introducere în JumpStart – Clasificarea textului.

Utilizați algoritmi încorporați SageMaker prin interfața de utilizare JumpStart

De asemenea, puteți utiliza clasificarea textului SageMaker TensorFlow și oricare dintre ceilalți algoritmi încorporați cu câteva clicuri prin interfața de utilizare JumpStart. JumpStart este o caracteristică SageMaker care vă permite să antrenați și să implementați algoritmi încorporați și modele pre-antrenate din diferite cadre ML și hub-uri de model printr-o interfață grafică. În plus, vă permite să implementați soluții ML complete care îmbină modele ML și diverse alte servicii AWS pentru a rezolva un caz de utilizare vizat.

Următoarele sunt două videoclipuri care arată cum puteți replica același proces de reglare fină și implementare pe care tocmai l-am parcurs cu câteva clicuri prin interfața de utilizare JumpStart.

Reglați fin modelul pre-antrenat

Iată procesul de ajustare a aceluiași model de clasificare a textului pre-antrenat.

Implementați modelul ajustat

După terminarea instruirii modelului, puteți implementa direct modelul într-un punct final persistent, în timp real, cu un singur clic.

Concluzie

În această postare, am anunțat lansarea algoritmului încorporat de clasificare a textului SageMaker TensorFlow. Am furnizat exemplu de cod pentru cum să transferați învățarea pe un set de date personalizat folosind un model pre-antrenat de la hub-ul TensorFlow folosind acest algoritm.

Pentru mai multe informații, consultați documentaţie și caietul de exemplu Introducere în JumpStart – Clasificarea textului.


Despre autori

Transferați învățarea pentru modelele de clasificare a textului TensorFlow în Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Dr. Vivek Madan este un om de știință aplicat cu Echipa Amazon SageMaker JumpStart. Și-a luat doctoratul 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.

Transferați învățarea pentru modelele de clasificare a textului TensorFlow în Amazon SageMaker 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.

Transferați învățarea pentru modelele de clasificare a textului TensorFlow în Amazon SageMaker PlatoBlockchain Data Intelligence. Căutare verticală. Ai.Dr. Ashish Khetan este un Senior Applied Scientist cu Algoritmi încorporați Amazon SageMaker și ajută la dezvoltarea algoritmilor de învățare automată. Și-a luat doctoratul la Universitatea din Illinois Urbana Champaign. 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