#
Quiz di fine capitolo

Mettiamo alla prova quello che hai imparato in questo capitolo!

###
1. In quale ordine si deve leggere un traceback di Python?

Dall'alto verso il basso Dal basso verso l'alto

###
2. Che cos’è un minimo esempio riproducibile?

Una semplice implementazione di un'architettura Transformer tratta da un articolo di ricerca Un blocco di codice compatto e autocontenuto che può essere eseguito senza alcuna dipendenza esterna da file o dati privati Uno screenshot della traceback di Python Un notebook che contiene la tua analisi intera, comprese le parti non correlate all'errore

###
3. Supponiamo di provare a eseguire il codice seguente, il quale produce un errore:

    from transformers import GPT3ForSequenceClassification

    # ImportError: cannot import name 'GPT3ForSequenceClassification' from 'transformers' (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)
    # ---------------------------------------------------------------------------
    # ImportError                               Traceback (most recent call last)
    # /var/folders/28/k4cy5q7s2hs92xq7_h89_vgm0000gn/T/ipykernel_30848/333858878.py in <module>
    # ----> 1 from transformers import GPT3ForSequenceClassification

    # ImportError: cannot import name 'GPT3ForSequenceClassification' from 'transformers' (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)

Quale dei seguenti potrebbe essere una buona scelta per il titolo di un topic del forum per chiedere aiuto?

`ImportError: cannot import name 'GPT3ForSequenceClassification' from 'transformers' (/Users/lewtun/miniconda3/envs/huggingface/lib/python3.8/site-packages/transformers/__init__.py)` Problema con `from transformers import GPT3ForSequenceClassification` Perché non posso importare `GPT3ForSequenceClassification`? GPT-3 è supportato in 🤗 Transformers?

###
4. Supponiamo di aver provato a eseguire `trainer.train()` e di trovarci di fronte a un errore criptico che non ci dice esattamente da dove proviene. Quale dei seguenti è il primo posto in cui cercare gli errori nella training pipeline?

La fase di ottimizzazione in cui si calcolano i gradienti e si esegue la backpropagation La fase di valutazione in cui si calcolano le metriche I dataset I dataloader

###
5. Qual è il modo migliore per fare il debug di un errore CUDA?

Pubblicare il messaggio di errore sul forum o su GitHub. Eseguire lo stesso codice sulla CPU. Leggere il traceback per scoprire cosa ha causato l'errore. Ridurre la dimensione del batch. Riavviare il Jupyter kernel.

###
6. Qual è il modo migliore per far risolvere un problema su GitHub?

Pubblicare un esempio completo e riproducibile del bug. Chiedere un aggiornamento ogni giorno. Ispezionare il codice sorgente intorno al bug e cercare di trovare il motivo per cui si verifica. Pubblicare i risultati nel problema.

###
7. Perché l’overfitting di un batch è di solito una buona tecnica di debugging?

Non lo è; l'overfitting è sempre un male e va evitato. Ci permette di verificare che il modello sia in grado di ridurre la loss a zero. Ci permette di verificare che le dimensioni dei tensori dei nostri input e delle nostre label siano corrette.

###
8. Perché è una buona idea includere dettagli sul proprio ambiente di sviluppo con `transformers-cli env` quando si crea un nuovo issue nel repo di 🤗 Transformers?

Permette ai maintainer di capire quale versione della libreria si sta utilizzando. Permette ai maintainer di sapere se il codice viene eseguito su Windows, macOS o Linux. Permette ai maintainer di sapere se il codice viene eseguito su una GPU o su una CPU.