Buckets:

rtrm's picture
|
download
raw
11.7 kB

End-of-chapter quiz[[end-of-chapter-quiz]]

Testați-vă cunoștințele din acest capitol!

1. Dataset-ul emotion conține mesaje de pe Twitter etichetate cu emoții. Căutați-l în Hub și citiți descrierea dataset-ului. Care dintre acestea nu este una dintre emoțiile sale de bază?

<Question choices={[ { text: "Bucurie", explain: "Încercați din nou - această emoție este prezentă în acel set de date!" }, { text: "Iubire", explain: "Încercați din nou - această emoție este prezentă în acel set de date!" }, { text: "Confuzie", explain: "Corect! Confuzia nu este una dintre cele șase emoții de bază.", correct: true }, { text: "Surpriză", explain: "Surpriză! Încercați din nou!" } ]} />

2. Căutați dataset-ul ar_sarcasm în Hub. Ce tip de sarcină suportă?

<Question choices={[ { text: "Clasificarea sentimentelor", explain: "Corect! Puteți verifica etichetele (tags) din descrierea dataset-ului.", correct: true }, { text: "Traducere automată (Machine translation)", explain: "Nu este corect — aruncați din nou o privire la descrierea dataset-ului!" }, { text: "Named entity recognition", explain: "Nu este corect — aruncați din nou o privire la descrierea dataset-ului!" }, { text: "Răspuns la întrebări (Question answering)", explain: "Din păcate, nu ați răspuns corect. Încercați din nou!" } ]} />

3. Cum se așteaptă modelul BERT ca o pereche de propoziții să fie procesată?

<Question choices={[ { text: "Tokens_of_sentence_1 [SEP] Tokens_of_sentence_2", explain: "Este nevoie de un token special [SEP] pentru a separa cele două propoziții, dar nu este singurul lucru necesar!" }, { text: "[CLS] Tokens_of_sentence_1 Tokens_of_sentence_2", explain: "Este nevoie de un token special [CLS] la început, dar nu este singurul lucru necesar!" }, { text: "[CLS] Tokens_of_sentence_1 [SEP] Tokens_of_sentence_2 [SEP]", explain: "Corect!", correct: true }, { text: "[CLS] Tokens_of_sentence_1 [SEP] Tokens_of_sentence_2", explain: "Este nevoie atât de un token special [CLS] la început, cât și de un token special [SEP] pentru a separa cele două propoziții, dar mai lipsește ceva!" } ]} />

{#if fw === 'pt'}

4. Care sunt avantajele metodei Dataset.map()?

<Question choices={[ { text: "Rezultatele funcției sunt memorate în cache, astfel încât nu va dura nimic dacă reexecutăm codul.", explain: "Acesta este într-adevăr unul dintre avantajele acestei metode! Totuși, nu este singurul...", correct: true }, { text: "Poate aplica multiprocessing pentru a rula mai rapid decât aplicând funcția pe fiecare element din dataset.", explain: "Aceasta este o caracteristică interesantă, dar nu este unica!", correct: true }, { text: "Nu încarcă întregul set de date în memorie, salvând rezultatele de îndată ce este procesat un element.", explain: "Acesta este un avantaj al acestei metode. Există însă și altele!", correct: true }, ]} />

5. Ce înseamnă umplerea dinamică (dynamic padding)?

<Question choices={[ { text: "E atunci când împachetezi intrările pentru fiecare batch la lungimea maximă din întregul dataset.", explain: "Este adevărat că împachetăm când creăm batch-ul, dar nu până la lungimea maximă din întregul set de date." }, { text: "E atunci când împachetezi intrările în momentul creării batch-ului, la lungimea maximă a propozițiilor din acel batch.", explain: "Corect! Partea "dinamică" vine din faptul că mărimea fiecărui batch este stabilită în momentul creării, iar ca urmare, toate batch-urile ar putea avea forme diferite.", correct: true }, { text: "E atunci când împachetezi intrările astfel încât fiecare propoziție să aibă același număr de tokeni ca precedenta în dataset.", explain: "Nu este corect, și nici nu are sens să ne uităm la ordinea din dataset, din moment ce îl amestecăm în timpul antrenamentului." }, ]} />

6. Care este scopul unei funcții de „collate"?

<Question choices={[ { text: "Asigură că toate secvențele din setul de date au aceeași lungime.", explain: "O funcție de collate se ocupă de manipularea batch-urilor individuale, nu a întregului set de date. În plus, vorbim despre funcțiile de collate în general, nu despre DataCollatorWithPadding în mod specific." }, { text: "Reunește toate eșantioanele într-un batch.", explain: "Corect! Poți transmite funcția de collate ca argument al unui DataLoader. Am folosit funcția DataCollatorWithPadding, care împachetează toate elementele dintr-un batch astfel încât să aibă aceeași lungime.", correct: true }, { text: "Preprocesează întregul set de date.", explain: "Aceasta ar fi o funcție de preprocessing, nu o funcție de collate." }, { text: "Trunchiază secvențele din setul de date.", explain: "O funcție de collate se ocupă de manipularea batch-urilor individuale, nu a întregului set de date. Dacă sunteți interesați de trunchiere, puteți folosi argumentul truncate al tokenizer." } ]} />

7. Ce se întâmplă când instanțiați una dintre clasele AutoModelForXxx cu un model de limbaj preantrenat (cum ar fi bert-base-uncased), care corespunde unei alte sarcini decât cea pentru care a fost antrenat?

<Question choices={[ { text: "Nimic, dar primești un avertisment.", explain: "Primiți un avertisment, dar asta nu e tot!" }, { text: "Head-ul modelului preantrenat este eliminat, iar în locul lui este inserat un head nou, potrivit pentru sarcină.", explain: "Corect. De exemplu, când am folosit AutoModelForSequenceClassification cu bert-base-uncased, am primit avertismente la instanțierea modelului. Head-ul preantrenat nu este folosit pentru sarcina de clasificare secvențială, așa că este eliminat și un nou head este instanțiat cu greutăți inițializate aleator.", correct: true }, { text: "Head-ul modelului preantrenat este eliminat.", explain: "Mai trebuie să se întâmple și altceva. Încercați din nou!" }, { text: "Nimic, pentru că modelul poate fi ajustat fin (fine-tuned) chiar și pentru o altă sarcină.", explain: "Head-ul preantrenat al modelului nu a fost antrenat pentru această sarcină, deci trebuie eliminat!" } ]} />

8. Care este scopul folosirii TrainingArguments?

<Question choices={[ { text: "Conține toți hiperparametrii folosiți pentru antrenare și evaluare cu Trainer.", explain: "Corect!", correct: true }, { text: "Specifică dimensiunea modelului.", explain: "Dimensiunea modelului este definită de configurația modelului, nu de clasa TrainingArguments." }, { text: "Conține doar hiperparametrii folosiți pentru evaluare.", explain: "În exemplu, am specificat și unde va fi salvat modelul și checkpoint-urile. Încercați din nou!" }, { text: "Conține doar hiperparametrii folosiți pentru antrenare.", explain: "În exemplu, am folosit și un evaluation_strategy, așadar acest lucru afectează evaluarea. Încercați din nou!" } ]} />

9. De ce ar trebui să folosiți biblioteca 🤗 Accelerate?

<Question choices={[ { text: "Oferă acces la modele mai rapide.", explain: "Nu, biblioteca 🤗 Accelerate nu oferă niciun model." }, { text: "Oferă o API la nivel înalt, astfel încât să nu fie nevoie să implementați propria buclă de antrenament.", explain: "Asta am făcut cu Trainer, nu cu biblioteca 🤗 Accelerate. Încercați din nou!" }, { text: "Face ca buclele noastre de antrenament să funcționeze pe strategii distribuite.", explain: "Corect! Cu 🤗 Accelerate, buclele voastre de antrenament vor funcționa pentru mai multe GPU-uri și TPU-uri.", correct: true }, { text: "Oferă mai multe funcții de optimizare.", explain: "Nu, biblioteca 🤗 Accelerate nu oferă nicio funcție de optimizare." } ]} />

{:else}

4. Ce se întâmplă când instanțiați una dintre clasele TFAutoModelForXxx cu un model de limbaj preantrenat (cum ar fi bert-base-uncased), care corespunde unei alte sarcini decât cea pentru care a fost antrenat?

<Question choices={[ { text: "Nimic, dar primești un avertisment.", explain: "Primiți un avertisment, dar asta nu e tot!" }, { text: "Head-ul modelului preantrenat este eliminat, iar în locul lui este inserat un head nou, potrivit pentru sarcină.", explain: "Corect. De exemplu, când am folosit TFAutoModelForSequenceClassification cu bert-base-uncased, am primit avertismente la instanțierea modelului. Head-ul preantrenat nu este folosit pentru sarcina de clasificare secvențială, așa că este eliminat și un nou head este instanțiat cu greutăți inițializate aleator.", correct: true }, { text: "Head-ul modelului preantrenat este eliminat.", explain: "Mai trebuie să se întâmple și altceva. Încercați din nou!" }, { text: "Nimic, pentru că modelul poate fi ajustat fin (fine-tuned) chiar și pentru o altă sarcină.", explain: "Head-ul preantrenat al modelului nu a fost antrenat pentru această sarcină, deci trebuie eliminat!" } ]} />

5. Modelele TensorFlow din transformers sunt deja modele Keras. Ce avantaj oferă acest lucru?

<Question choices={[ { text: "Modelele funcționează pe un TPU din start.", explain: "Ești pe aproape! Totuși, sunt necesare câteva modificări suplimentare. De exemplu, trebuie să rulați totul într-un context TPUStrategy, inclusiv inițializarea modelului." }, { text: "Puteți valorifica metodele existente precum compile(), fit() și predict().", explain: "Corect! Odată ce aveți datele, antrenarea necesită foarte puțin efort.", correct: true }, { text: "Învățați atât Keras, cât și transformers.", explain: "Corect, dar căutăm altceva :)", correct: true }, { text: "Puteți calcula cu ușurință metrici legate de dataset.", explain: "Keras ne ajută la antrenarea și evaluarea modelului, nu la calcularea metricilor legate de dataset." } ]} />

6. Cum vă puteți defini propria metrică personalizată?

<Question choices={[ { text: "Prin moștenirea tf.keras.metrics.Metric.", explain: "Perfect!", correct: true }, { text: "Folosind API-ul funcțional Keras.", explain: "Mai încearcă!" }, { text: "Folosind o funcție apelabilă cu semnătura metric_fn(y_true, y_pred).", explain: "Corect!", correct: true }, { text: "Căutând pe Google.", explain: "Nu este răspunsul pe care îl căutăm, dar probabil v-ar putea ajuta să-l găsiți.", correct: true } ]} />

{/if}

Xet Storage Details

Size:
11.7 kB
·
Xet hash:
f7499a1d0d3c0aa0d2d1ef376d6d1435db7269ed2ce26f92c24c863a1a13546f

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.