Buckets:

rtrm's picture
|
download
raw
12.5 kB
# Quiz de fin de chapitre
<CourseFloatingBanner
chapter={2}
classNames="absolute z-10 right-0 top-0"
/>
### 1. Quel est l'ordre du pipeline de modélisation du langage ?
<Question
choices={[
{
text: " Tout d'abord, le modèle, qui traite le texte et renvoie des prédictions brutes. Puis le <i>tokenizer</i> donne un sens à ces prédictions et les reconvertit en texte si nécessaire.",
explain: " Le modèle ne peut pas comprendre le texte ! Le <i>tokenizer</i> doit d'abord tokeniser le texte et le convertir en identifiants afin qu'il soit compréhensible par le modèle."},
{
text: " Tout d'abord, le <i>tokenizer</i>, qui traite le texte et renvoie des identifiants. Puis le modèle traite ces identifiants et produit une prédiction, qui peut être du texte.",
explain: " La prédiction du modèle ne peut pas être du texte immédiatement. Le <i>tokenizer</i> doit être utilisé afin de reconvertir la prédiction en texte !"},
{
text: " Le <i>tokenizer</i> traite le texte et renvoie des identifiants. Le modèle traite ces identifiants et produit une prédiction. Le <i>tokenizer</i> peut alors être utilisé à nouveau pour reconvertir ces prédictions en texte.",
explain: " Le <i>tokenizer</i> peut être utilisé à la fois pour la tokenisation et la dé-tokénisation.",
correct: true
}
]}
/>
### 2. Combien de dimensions le tenseur produit par le <i>transformer</i> de base possède-t-il et quelles sont-elles ?
<Question
choices={[
{
text: "2: la longueur de la séquence et la taille du batch",
explain: "Le tenseur produit par le modèle possède une troisième dimension : la taille cachée."
},
{
text: "2: la longueur de la séquence et la taille cachée",
explain: "Tous les <i>transformers</i> gèrent les batchs, même avec une seule séquence ce serait une taille de batch de 1 !"
},
{
text: "3: la longueur de la séquence, la taille du batch et la taille cachée.",
explain: "",
correct: true
}
]}
/>
### 3. Lequel des éléments suivants est un exemple de tokenisation en sous-mots ?
<Question
choices={[
{
text: "WordPiece",
explain: "Oui, c'est un exemple de tokenisation en sous-mots !",
correct: true
},
{
text: "La tokenization basée sur les caractères",
explain: "La tokenization basée sur les caractères nest pas un type de tokenisation en sous-mots."
},
{
text: "Découpage sur les espaces et la ponctuation",
explain: "Cest une tokenisation basée sur les mots !"
},
{
text: "BPE",
explain: "Oui, c'est un exemple de tokenisation en sous-mots !",
correct: true
},
{
text: "Unigram",
explain: "Oui, c'est un exemple de tokenisation en sous-mots !",
correct: true
},
{
text: "Aucune des propositions ci-dessus",
explain: ""
}
]}
/>
### 4. Qu'est-ce qu'une tête de modèle ?
<Question
choices={[
{
text: " Un composant du <i>transformer</i> de base qui redirige les tenseurs vers leurs couches correctes.",
explain: "Il n'y a pas de tel composant."
},
{
text: "Également connu sous le nom de mécanisme d'auto-attention, il adapte la représentation d'un <i>token</i> en fonction des autres <i>tokens</i> de la séquence.",
explain: "La couche d'auto-attention contient des têtes d'attention mais ce ne sont pas des têtes d'adaptation."
},
{
text: "Un composant supplémentaire, généralement constitué d'une ou plusieurs couches, pour convertir les prédictions du <i>transformer</i> en une sortie spécifique à la tâche.",
explain: "Les têtes d'adaptation, aussi appelées simplement têtes, se présentent sous différentes formes : têtes de modélisation du langage, têtes de réponse aux questions, têtes de classification des séquences, etc.",
correct: true
}
]}
/>
{#if fw === 'pt'}
### 5. Qu'est-ce qu'un AutoModel?
<Question
choices={[
{
text: "Un modèle qui s'entraîne automatiquement sur vos données",
explain: "Vous confondez cela avec notre produit <a href='https://huggingface.co/autotrain>AutoTrain</a>"
},
{
text: "Un objet qui renvoie la bonne architecture basée sur le <i>checkpoint</i> .",
explain: "Exactement : <code>AutoModel</code> a seulement besoin de connaître le <i>checkpoint</i> à partir duquel il doit s'initialiser pour retourner à la bonne architecture.",
correct: true
},
{
text: "Un modèle qui détecte automatiquement la langue utilisée pour ses entrées afin de charger les bonnes pondérations.",
explain: "Bien que certains <i>checkpoints</i> et modèles soient capables de gérer plusieurs langues, il n'existe pas d'outils intégrés pour la sélection automatique des <i>checkpoints</i> en fonction de la langue. Vous devez vous rendre sur le <a href='https://huggingface.co/models'>Hub des modèles</a> pour trouver le meilleur <i>checkpoint</i> pour votre tâche !"
}
]}
/>
{:else}
### 5. What is an AutoModel?
<Question
choices={[
{
text: "Un modèle qui s'entraîne automatiquement sur vos données",
explain: "Vous confondez cela avec notre produit <a href='https://huggingface.co/autotrain>AutoTrain</a>"
},
{
text: "Un objet qui renvoie la bonne architecture basée sur le <i>checkpoint</i> .",
explain: "Exactement : <code>TFAutoModel</code> a seulement besoin de connaître le <i>checkpoint</i> à partir duquel il doit s'initialiser pour retourner à la bonne architecture.",
correct: true
},
{
text: "Un modèle qui détecte automatiquement la langue utilisée pour ses entrées afin de charger les bonnes pondérations.",
explain: "Bien que certains <i>checkpoints</i> et modèles soient capables de gérer plusieurs langues, il n'existe pas d'outils intégrés pour la sélection automatique des <i>checkpoints</i> en fonction de la langue. Vous devez vous rendre sur le <a href='https://huggingface.co/models'>Hub des modèles</a> pour trouver le meilleur <i>checkpoint</i> pour votre tâche !"
}
]}
/>
{/if}
### 6. Quelles sont les techniques à connaître lors de la mise en batch de séquences de longueurs différentes ?
<Question
choices={[
{
text: "La troncature",
explain: " La troncature est une façon correcte d'égaliser les séquences pour qu'elles s'inscrivent dans une forme rectangulaire. Mais est-ce la seule ?",
correct: true
},
{
text: "Retourner les tenseurs",
explain: "Alors que les autres techniques vous permettent de renvoyer des tenseurs rectangulaires, retourner les tenseurs n'est pas utile lorsque vous mettez en batch des séquences."
},
{
text: "Le <i>padding</i>",
explain: "Le <i>padding</i> est une façon correcte d'égaliser les séquences pour qu'elles tiennent dans une forme rectangulaire. Mais est-ce le seul moyen ?",
correct: true
},
{
text: "Les masques d'attention ",
explain: "Les masques d'attention sont d'une importance capitale lorsqu'on manipule des séquences de longueurs différentes. Ce n'est cependant pas la seule technique à laquelle il faut faire attention.",
correct: true
}
]}
/>
### 7. Quel est l'intérêt d'appliquer une fonction SoftMax aux logits produits par un modèle de classification de séquences ?
<Question
choices={[
{
text: "Elle adoucit les logits pour qu'ils soient plus fiables.",
explain: "La fonction SoftMax n'affecte pas la fiabilité des résultats."
},
{
text: "Elle applique une limite inférieure et supérieure pour qu'ils soient compréhensibles.",
explain: "Les valeurs résultantes sont comprises entre 0 et 1. Ce n'est cependant pas la seule raison pour laquelle nous utilisons une fonction SoftMax.",
correct: true
},
{
text: "La somme totale des sorties est alors égale à 1, ce qui permet une interprétation probabiliste.",
explain: "Mais ce n'est pas la seule raison pour laquelle nous utilisons une fonction SoftMax.",
correct: true
}
]}
/>
### 8. Autour de quelle méthode s'articule la majeure partie de l'API <i>tokenizer</i> ?
<Question
choices={[
{
text: "<code>encode</code>, car elle peut encoder du texte en identifiants et des identifiants en prédictions.",
explain: "Bien que la méthode <code>encode</code> existe sur les <i>tokenizer</i>, elle n'existe pas sur les modèles."
},
{
text: "Appeler directement l'objet tokenizer",
explain: "La méthode <code>__call__</code> du <i>tokenizer</i> est une méthode très puissante qui peut traiter à peu près tout. C'est également la méthode utilisée pour récupérer les prédictions d'un modèle.",
correct: true
},
{
text: "<code>pad</code>",
explain: "Le <i>padding</i> est très utile mais ce n'est qu'une partie de l'API <i>tokenizer</i>."
},
{
text: "<code>tokenize</code>",
explain: "La méthode <code>tokenize</code> est est sans doute l'une des méthodes les plus utiles, mais elle ne constitue pas le cœur de l'API <i>tokenizer</i>."
}
]}
/>
### 9. Que contient la variable `result` dans cet exemple de code ?
```py
from transformers import AutoTokenizer
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
result = tokenizer.tokenize("Hello!")
```
<Question
choices={[
{
text: "Une liste de chaînes de caractères, chaque chaîne étant un <i>token</i>.",
explain: "Convertissez cela en identifiants, et donnez-les à un modèle !",
correct: true
},
{
text: "Une liste d'identifiants",
explain: "C'est à cela que la méthode <code>__call__</code> ou la méthode <code>convert_tokens_to_ids</code> sert !"
},
{
text: "Une chaîne contenant tous les <i>tokens</i>",
explain: "Ce serait sous-optimal car le but est de diviser la chaîne de caractères en plusieurs éléments."
}
]}
/>
{#if fw === 'pt'}
### 10. Y a-t-il un problème avec le code suivant ?
```py
from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
model = AutoModel.from_pretrained("gpt2")
encoded = tokenizer("Hey!", return_tensors="pt")
result = model(**encoded)
```
<Question
choices={[
{
text: "Non, ça semble correct.",
explain: "Malheureusement, coupler un modèle avec un <i>tokenizer</i> qui a été entraîné avec un <i>checkpoint</i> différent est rarement une bonne idée. Le modèle n'a pas été entraîné pour donner du sens à la sortie de ce <i>tokenizer</i> donc la sortie du modèle (s'il peut même fonctionner !) n'aura aucun sens."
},
{
text: " Le <i>tokenizer</i> et le modèle doivent toujours provenir du même <i>checkpoint</i>.",
explain: "",
correct: true
},
{
text: " C'est une bonne pratique de faire du <i>padding</i> et de troncage avec le <i>tokenizer</i> car chaque entrée est un batch.",
explain: "Il est vrai que chaque entrée de modèle doit être un batch. Cependant, tronquer ou compléter cette séquence n'aurait pas nécessairement de sens puisqu'il n'y en a qu'une seule. Il s'agit là de techniques permettant de mettre en batch une liste de phrases."
}
]}
/>
{:else}
### 10. Y a-t-il un problème avec le code suivant ?
```py
from transformers import AutoTokenizer, TFAutoModel
tokenizer = AutoTokenizer.from_pretrained("bert-base-cased")
model = TFAutoModel.from_pretrained("gpt2")
encoded = tokenizer("Hey!", return_tensors="pt")
result = model(**encoded)
```
<Question
choices={[
{
text: "Non, ça semble correct.",
explain: "Malheureusement, coupler un modèle avec un <i>tokenizer</i> qui a été entraîné avec un <i>checkpoint</i> différent est rarement une bonne idée. Le modèle n'a pas été entraîné pour donner du sens à la sortie de ce <i>tokenizer</i> donc la sortie du modèle (s'il peut même fonctionner !) n'aura aucun sens."
},
{
text: " Le <i>tokenizer</i> et le modèle doivent toujours provenir du même <i>checkpoint</i>.",
explain: "",
correct: true
},
{
text: " C'est une bonne pratique de faire du <i>padding</i> et de troncage avec le <i>tokenizer</i> car chaque entrée est un batch.",
explain: "Il est vrai que chaque entrée de modèle doit être un batch. Cependant, tronquer ou compléter cette séquence n'aurait pas nécessairement de sens puisqu'il n'y en a qu'une seule. Il s'agit là de techniques permettant de mettre en batch une liste de phrases."
}
]}
/>
{/if}
<EditOnGithub source="https://github.com/huggingface/course/blob/main/chapters/fr/chapter2/8.mdx" />

Xet Storage Details

Size:
12.5 kB
·
Xet hash:
9525ae98c7d555bfcfc3b0c901bf2cc35c4a882fd902674f7dfd7c8820f2eaa4

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