Antrenament și reglaj fin; transformatorii 4

Clasele de modele din 🤗 Transformatoare sunt concepute pentru a fi compatibile cu PyTorch nativ și TensorFlow 2 și pot fi folosite în mod aparent cu oricare dintre ele. În acest start rapid, vom arăta cum să reglați fin (sau să pregătiți de la zero) un model folosind instrumentele de instruire standard disponibile în ambele cadre. De asemenea, vă vom arăta cum să utilizați clasa noastră de antrenor () inclusă, care gestionează o mare parte din complexitatea instruirii pentru dvs.

orice model

Acest ghid presupune că sunteți deja familiarizat cu încărcarea și utilizarea modelelor noastre pentru deducere; în caz contrar, consultați rezumatul sarcinii. De asemenea, presupunem că sunteți familiarizați cu instruirea rețelelor neuronale profunde în PyTorch sau TF2 și vă concentrați în mod special pe nuanțele și instrumentele pentru modelele de antrenament din 🤗 Transformatoare.

  • Reglare fină în PyTorch nativ

  • Reglarea fină în TensorFlow nativ 2

  • Antrenor

  • Resurse aditionale

Reglare fină în PyTorch nativ¶

Clasele de modele din 🤗 Transformatoarele care nu încep cu TF sunt module PyTorch, ceea ce înseamnă că le puteți folosi la fel ca orice model din PyTorch atât pentru inferență, cât și pentru optimizare.

Să luăm în considerare sarcina obișnuită de a regla fin un model de limbă mascat precum BERT pe un set de date de clasificare a secvenței. Când instanțiem un model cu from_pretrained (), configurația modelului și greutățile pre-antrenate ale modelului specificat sunt utilizate pentru a inițializa modelul. Biblioteca include, de asemenea, o serie de straturi finale sau „capete” specifice sarcinilor ale căror greutăți sunt instanțiate aleatoriu atunci când nu sunt prezente în modelul pre-instruit specificat. De exemplu, instanțierea unui model cu BertForSequenceClassification.from_pretrained („bert-base-uncased”, num_labels = 2) va crea o instanță de model BERT cu greutăți codificatoare copiate din modelul bert-base-uncased și un cap de clasificare a secvenței inițializat aleatoriu în partea de sus a codificatorului cu o dimensiune de ieșire de 2. Modelele sunt inițializate în mod eval în mod implicit. Putem apela model.train () pentru al pune în modul tren.

Acest lucru este util, deoarece ne permite să folosim codificatorul BERT pre-instruit și să îl antrenăm cu ușurință pe orice set de date de clasificare a secvenței pe care îl alegem. Putem folosi orice optimizator PyTorch, dar biblioteca noastră oferă, de asemenea, optimizatorul AdamW () care implementează corecția de înclinare a gradientului, precum și descompunerea greutății.

Optimizatorul ne permite să aplicăm diferiți hiperpametri pentru grupuri de parametri specifici. De exemplu, putem aplica descompunerea greutății la toți parametrii, în afară de părtinire și termenii de normalizare a stratului:

Acum putem configura un simplu lot de antrenament fals folosind __call __ (). Aceasta returnează o instanță BatchEncoding () care pregătește tot ce ne-ar trebui să trecem la model.