Transformers documentation
Splinter
Ce modèle a été publié dans HF papers le 2021-01-02 et ajouté à Hugging Face Transformers le 2021-08-17.
Splinter
Aperçu
Le modèle Splinter a été proposé dans Few-Shot Question Answering by Pretraining Span Selection par Ori Ram, Yuval Kirstain, Jonathan Berant, Amir Globerson et Omer Levy. Splinter est un transformeur encodeur uniquement (similaire à BERT) pré-entraîné à l'aide de la tâche de sélection de spans récurrente sur un large corpus composant de Wikipédia et du Toronto Book Corpus.
L'abstract de l'article est le suivant :
Sur plusieurs benchmarks de question answering, les modèles pré-entraînés ont atteint la parité humaine grâce à un fine-tuning sur un ordre de grandeur de 100 000 questions et réponses annotées. Nous explorons le scénario plus réaliste du few-shot, où seules quelques centaines d'exemples d'entraînement sont disponibles, et observons que les modèles standard obtiennent de mauvais résultats, ce qui met en évidence l'écart entre les objectifs de pré-entraînement actuels et le question answering. Nous proposons un nouveau schéma de pré-entraînement adapté au question answering : la sélection de spans récurrents. Étant donné un passage contenant plusieurs ensembles de spans récurrents, nous masquons dans chaque ensemble tous les spans récurrents sauf un, et demandons au modèle de sélectionner le span correct dans le passage pour chaque span masqué. Les spans masqués sont remplacés par un jeton spécial, considéré comme une représentation de la question, qui est ensuite utilisé lors du fine-tuning pour sélectionner le span de la réponse. Le modèle résultant obtient des résultats surprenants sur plusieurs benchmarks (par exemple, un F1 de 72,7 sur SQuAD avec seulement 128 exemples d'entraînement), tout en maintenant des performances compétitives dans le scénario à ressources abondantes.
Ce modèle a été contribué par yuvalkirstain et oriram. Le code d'origine peut être trouvé ici.
Conseils d'utilisation
- Splinter a été entraîné pour prédire des segments de réponse conditionnés sur un jeton spécial [QUESTION]. Ces jetons contextualisent les représentations de question utilisées pour prédire les réponses. Cette couche est appelée QASS et constitue le comportement par défaut de la classe SplinterForQuestionAnswering. Par conséquent :
- Utilisez SplinterTokenizer (plutôt que BertTokenizer), car il contient déjà ce jeton spécial. De plus, son comportement par défaut consiste à utiliser ce jeton lorsque deux séquences sont fournies.
- Gardez à l'esprit le jeton de question : il peut être déterminant pour la réussite de votre modèle, en particulier dans un contexte de few-shot.
- Veuillez noter qu’il existe deux points de contrôle différents pour chaque taille de Splinter. Ils sont essentiellement identiques, à l’exception du fait que l’un inclut également les poids préentraînés de la couche QASS (tau/splinter-base-qass et tau/splinter-large-qass) tandis que l’autre ne les inclut pas (tau/splinter-base et tau/splinter-large). Cette distinction permet de prendre en charge l’initialisation aléatoire de cette couche lors de l’ajustement fin, ce qui, selon l’article, donne de meilleurs résultats dans certains cas.
Ressources
SplinterConfig
classe transformers.SplinterConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 30522hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout_prob: float | int = 0.1attention_probs_dropout_prob: float | int = 0.1max_position_embeddings: int = 512type_vocab_size: int = 2initializer_range: float = 0.02layer_norm_eps: float = 1e-12pad_token_id: int | None = 0bos_token_id: int | None = Noneeos_token_id: int | list[int] | None = Nonequestion_token_id: int = 104 )
Paramètres
- vocab_size (
int, facultatif, par défaut30522) — Taille du vocabulaire du modèle. Définit le nombre de jetons différents qui peuvent être représentés parinput_ids. - hidden_size (
int, facultatif, par défaut768) — Dimension des représentations cachées. - num_hidden_layers (
int, facultatif, par défaut12) — Nombre de couches cachées dans le décodeur Transformer. - num_attention_heads (
int, facultatif, valeur par défaut12) — Nombre de têtes d'attention pour chaque couche d'attention du décodeur Transformer. - intermediate_size (
int, facultatif, par défaut3072) — Dimension des représentations du MLP. - hidden_act (
str, facultatif, par défautgelu) — La fonction d'activation non linéaire (fonction ou chaîne de caractères) du décodeur. Par exemple,"gelu","relu","silu", etc. - hidden_dropout_prob (
Union[float, int], facultatif, par défaut0.1) — La probabilité de dropout pour toutes les couches entièrement connectées des embeddings, de l'encodeur et du pooler. - attention_probs_dropout_prob (
Union[float, int], facultatif, par défaut0.1) — Le taux de dropout appliqué aux probabilités d'attention. - max_position_embeddings (
int, facultatif, par défaut512) — La longueur de séquence maximale avec laquelle ce modèle pourrait être utilisé. - type_vocab_size (
int, facultatif, par défaut2) — La taille du vocabulaire destoken_type_ids. - initializer_range (
float, facultatif, par défaut0.02) — L'écart-type de la truncated_normal_initializer utilisé pour initialiser toutes les matrices de poids. - layer_norm_eps (
float, facultatif, valeur par défaut1e-12) — L'épsilon utilisé par les couches de normalisation de couche. - pad_token_id (
int, facultatif, par défaut0) — Identifiant du jeton utilisé pour le bourrage dans le vocabulaire. - bos_token_id (
int, facultatif) — Identifiant du jeton utilisé pour le début de flux dans le vocabulaire. - eos_token_id (
Union[int, list[int]], facultatif) — Identifiant du jeton utilisé pour la fin de flux dans le vocabulaire. - question_token_id (
int, facultatif, valeur par défaut 104) — L'identifiant du jeton[QUESTION].
Ceci est la classe de configuration destinée à stocker la configuration d'un SplinterModel. Elle est utilisée pour instancier un modèle Splinter en fonction des arguments spécifiés, en définissant l'architecture du modèle. L'instanciation d'une configuration avec les valeurs par défaut produira une configuration similaire à celle de tau/splinter-base
Les objets de configuration héritent de PreTrainedConfig et peuvent être utilisés pour contrôler les sorties du modèle. Consultez la documentation de PreTrainedConfig pour plus d’informations.
Exemple :
>>> from transformers import SplinterModel, SplinterConfig
>>> # Initializing a Splinter tau/splinter-base style configuration
>>> configuration = SplinterConfig()
>>> # Initializing a model from the tau/splinter-base style configuration
>>> model = SplinterModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configSplinterTokenizer
classe transformers.SplinterTokenizer
< source >( vocab: str | dict[str, int] | None = Nonedo_lower_case: bool = Trueunk_token: str = '[UNK]'sep_token: str = '[SEP]'pad_token: str = '[PAD]'cls_token: str = '[CLS]'mask_token: str = '[MASK]'question_token: str = '[QUESTION]'tokenize_chinese_chars: bool = Truestrip_accents: bool | None = None**kwargs )
Paramètres
- vocab_file (
str, facultatif) — Chemin vers un fichier de vocabulaire. - tokenizer_file (
str, facultatif) — Chemin vers un fichier JSON de tokenizers contenant la sérialisation d'un tokenizer. - do_lower_case (
bool, facultatif, par défautTrue) — Indique s'il faut mettre l'entrée en minuscules lors de la tokenisation. - unk_token (
str, facultatif, par défaut"[UNK]") — Le jeton inconnu. Un jeton qui n’est pas dans le vocabulaire ne peut pas être converti en identifiant et est remplacé par ce jeton. - sep_token (
str, facultatif, par défaut"[SEP]") — Le jeton séparateur, utilisé lors de la construction d'une séquence à partir de plusieurs séquences. - pad_token (
str, facultatif, par défaut"[PAD]") — Le jeton utilisé pour le bourrage, par exemple lors du regroupement de séquences de longueurs différentes. - cls_token (
str, facultatif, par défaut"[CLS]") — Le jeton de classification utilisé lors de la classification de séquences. - mask_token (
str, facultatif, par défaut"[MASK]") — Le jeton utilisé pour masquer les valeurs. - question_token (
str, facultatif, par défaut"[QUESTION]") — Le jeton utilisé pour construire les représentations de questions. - tokenize_chinese_chars (
bool, facultatif, par défautTrue) — Indique s'il faut ou non tokeniser les caractères chinois. - strip_accents (
bool, facultatif) — Indique s'il faut supprimer toutes les accents. Si cette option n'est pas spécifiée, elle est déterminée par la valeur delowercase. - vocab (
str,dictoulist, facultatif) — Dictionnaire de vocabulaire personnalisé. S'il n'est pas fourni, un vocabulaire minimal est créé.
Construit un tokenizer Splinter (basé sur la bibliothèque tokenizers de HuggingFace). Fondé sur WordPiece.
Ce tokenizer hérite de TokenizersBackend, qui contient la plupart des méthodes principales. Les utilisateurs doivent se référer à cette superclasse pour plus d'informations sur ces méthodes.
get_special_tokens_mask
< source >( token_ids_0: list[int]token_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → A list of integers in the range [0, 1]
Paramètres
- token_ids_0 — Liste des identifiants de la séquence (éventuellement déjà formatée).
- token_ids_1 — Non utilisé lorsque
already_has_special_tokens=True. Doit être None dans ce cas. - already_has_special_tokens — Indique si la séquence est déjà formatée avec des jetons spéciaux.
Retourne
Une liste d'entiers dans l'intervalle [0, 1]
1 pour un jeton spécial, 0 pour un jeton de séquence.
Récupérer les identifiants de séquences à partir d'une liste de jetons à laquelle aucun jeton spécial n'a été ajouté.
Pour les tokenizers rapides, les data collators appellent cette fonction avec already_has_special_tokens=True pour construire un masque sur une séquence déjà formatée. Dans ce cas, nous calculons le masque en vérifiant l’appartenance à all_special_ids.
SplinterModel
classe transformers.SplinterModel
< source >( config: SplinterConfig )
Paramètres
- config (SplinterConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le modèle Splinter brut, qui produit des états cachés bruts sans aucune tête spécifique au sommet.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.FloatTensor)
Paramètres
- input_ids (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Indices des jetons de la séquence d'entrée dans le vocabulaire. Le bourrage (padding) sera ignoré par défaut.Les indices peuvent être obtenus à l'aide de AutoTokenizer. Consultez PreTrainedTokenizer.encode() et PreTrainedTokenizer.call() pour plus de détails.
- attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- token_type_ids (
torch.LongTensorde formebatch_size, sequence_length, facultatif) — Indices de jetons de segment pour indiquer les première et deuxième parties des entrées. Les indices sont choisis dans[0, 1]:- 0 correspond à un jeton sentence A,
- 1 correspond à un jeton sentence B.
- position_ids (
torch.LongTensorde formebatch_size, sequence_length, facultatif) — Indices des positions des jetons de chaque séquence d'entrée dans les embeddings de position. Sélectionnés dans l'intervalle[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensorde forme(batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passerinput_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la manière de convertir les indicesinput_idsen vecteurs associés que la matrice de recherche d’intégration interne du modèle.
Retourne
BaseModelOutput ou tuple(torch.FloatTensor)
Un BaseModelOutput ou un tuple de
torch.FloatTensor (si return_dict=False est passé ou si config.return_dict=False) comprenant divers
éléments selon la configuration (SplinterConfig) et les entrées.
La méthode forward de SplinterModel redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
last_hidden_state (
torch.FloatTensorde forme(batch_size, sequence_length, hidden_size)) — Séquence d'états cachés à la sortie de la dernière couche du modèle.hidden_states (
tuple(torch.FloatTensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.FloatTensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, sequence_length, hidden_size).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
attentions (
tuple(torch.FloatTensor), facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.FloatTensor(un par couche) de forme(batch_size, num_heads, sequence_length, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.
SplinterForQuestionAnswering
classe transformers.SplinterForQuestionAnswering
< source >( config: SplinterConfig )
Paramètres
- config (SplinterConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Le transformateur Splinter avec une tête de classification de segments au sommet pour les tâches de question-réponse extractives comme
SQuAD (une couche linéaire au sommet de la sortie des états cachés pour calculer span start logits et span end logits).
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.LongTensor] = Noneend_positions: typing.Optional[torch.LongTensor] = Nonequestion_positions: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → QuestionAnsweringModelOutput or tuple(torch.FloatTensor)
Paramètres
- input_ids (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Indices des jetons de la séquence d'entrée dans le vocabulaire. Le bourrage (padding) sera ignoré par défaut.Les indices peuvent être obtenus à l'aide de AutoTokenizer. Consultez PreTrainedTokenizer.encode() et PreTrainedTokenizer.call() pour plus de détails.
- attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- token_type_ids (
torch.LongTensorde formebatch_size, sequence_length, facultatif) — Indices de jetons de segment pour indiquer les première et deuxième parties des entrées. Les indices sont choisis dans[0, 1]:- 0 correspond à un jeton sentence A,
- 1 correspond à un jeton sentence B.
- position_ids (
torch.LongTensorde formebatch_size, sequence_length, facultatif) — Indices des positions des jetons de chaque séquence d'entrée dans les embeddings de position. Sélectionnés dans l'intervalle[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.Tensorde forme(batch_size, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passerinput_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la manière de convertir les indicesinput_idsen vecteurs associés que la matrice de recherche d’intégration interne du modèle. - start_positions (
torch.LongTensorde forme(batch_size,), facultatif) — Étiquettes pour la position (index) du début de l'interval étiqueté, utilisées pour le calcul de la perte de classification de jetons. Les positions sont bornées à la longueur de la séquence (sequence_length). Les positions situées en dehors de la séquence ne sont pas prises en compte pour le calcul de la perte. - end_positions (
torch.LongTensorde forme(batch_size,), facultatif) — Étiquettes pour la position (index) de fin de l'intervalle étiqueté, utilisées pour le calcul de la perte de classification de jetons. Les positions sont bornées à la longueur de la séquence (sequence_length). Les positions situées en dehors de la séquence ne sont pas prises en compte pour le calcul de la perte. - question_positions (
torch.LongTensorde forme(batch_size, num_questions), facultatif) — Les positions de tous les jetons de question. Si fourni, start_logits et end_logits auront la forme(batch_size, num_questions, sequence_length). Si None, seul le premier jeton de question de chaque séquence du lot sera utilisé pour le calcul de start_logits et end_logits, qui auront alors la forme(batch_size, sequence_length).
Retourne
QuestionAnsweringModelOutput ou tuple(torch.FloatTensor)
Un QuestionAnsweringModelOutput ou un tuple de
torch.FloatTensor (si return_dict=False est passé ou si config.return_dict=False) comprenant divers
éléments selon la configuration (SplinterConfig) et les entrées.
La méthode forward de SplinterForQuestionAnswering redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
loss (
torch.FloatTensorde forme(1,), facultatif, renvoyé lorsquelabelsest fourni) — La perte totale d'extraction de segments est la somme d'une entropie croisée pour les positions de début et de fin.start_logits (
torch.FloatTensorde forme(batch_size, sequence_length)) — Scores de début de segment (avant SoftMax).end_logits (
torch.FloatTensorde forme(batch_size, sequence_length)) — Scores de fin de segment (avant SoftMax).hidden_states (
tuple(torch.FloatTensor), facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.FloatTensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, sequence_length, hidden_size).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
attentions (
tuple(torch.FloatTensor), facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.FloatTensor(un par couche) de forme(batch_size, num_heads, sequence_length, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.
Exemple :
>>> from transformers import AutoTokenizer, SplinterForQuestionAnswering
>>> import torch
>>> tokenizer = AutoTokenizer.from_pretrained("tau/splinter-base")
>>> model = SplinterForQuestionAnswering.from_pretrained("tau/splinter-base")
>>> question, text = "Who was Jim Henson?", "Jim Henson was a nice puppet"
>>> inputs = tokenizer(question, text, return_tensors="pt")
>>> with torch.no_grad():
... outputs = model(**inputs)
>>> answer_start_index = outputs.start_logits.argmax()
>>> answer_end_index = outputs.end_logits.argmax()
>>> predict_answer_tokens = inputs.input_ids[0, answer_start_index : answer_end_index + 1]
>>> tokenizer.decode(predict_answer_tokens, skip_special_tokens=True)
...
>>> # target is "nice puppet"
>>> target_start_index = torch.tensor([14])
>>> target_end_index = torch.tensor([15])
>>> outputs = model(**inputs, start_positions=target_start_index, end_positions=target_end_index)
>>> loss = outputs.loss
>>> round(loss.item(), 2)
...SplinterForPreTraining
classe transformers.SplinterForPreTraining
< source >( config: SplinterConfig )
Paramètres
- config (SplinterConfig) — Classe de configuration du modèle contenant tous les paramètres du modèle. L’initialisation à partir d’un fichier de configuration ne charge pas les poids associés au modèle, uniquement la configuration. Consultez la méthode from_pretrained() pour charger les poids du modèle.
Modèle Splinter pour la tâche de sélection d'occurrences récurrentes, telle qu'effectué lors du pré-entraînement. La différence par rapport à la tâche de QA est que nous ne disposons pas d'une question, mais de plusieurs jetons de question qui remplacent les occurrences des segments récurrents.
Ce modèle hérite de PreTrainedModel. Consultez la documentation de la classe parente pour les méthodes génériques que la bibliothèque implémente pour tous ses modèles (tels que le téléchargement ou l'enregistrement, le redimensionnement des embeddings d'entrée, la taille des têtes, etc.)
Ce modèle est également une sous-classe de torch.nn.Module de PyTorch. Utilisez-le comme un module PyTorch standard et consultez la documentation de PyTorch pour tout ce qui concerne l'utilisation et le comportement généraux.
forward
< source >( input_ids: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetoken_type_ids: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.Tensor] = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonestart_positions: typing.Optional[torch.LongTensor] = Noneend_positions: typing.Optional[torch.LongTensor] = Nonequestion_positions: typing.Optional[torch.LongTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SplinterForPreTrainingOutput or tuple(torch.FloatTensor)
Paramètres
- input_ids (
torch.LongTensorde forme(batch_size, num_questions, sequence_length)) — Indices des jetons de la séquence d'entrée dans le vocabulaire.Les indices peuvent être obtenus à l'aide de AutoTokenizer. Consultez PreTrainedTokenizer.encode() et PreTrainedTokenizer.call() pour plus de détails.
- attention_mask (
torch.Tensorde forme(batch_size, sequence_length), facultatif) — Masque pour éviter d'appliquer l'attention aux indices des jetons de bourrage. Les valeurs du masque sont choisies dans[0, 1]:- 1 pour les jetons qui ne sont pas masqués,
- 0 pour les jetons masqués.
- token_type_ids (
torch.LongTensorde formebatch_size, num_questions, sequence_length, facultatif) — Indices de jetons de segment pour indiquer les parties première et seconde des entrées. Les indices sont choisis dans[0, 1]:- 0 correspond à un jeton sentence A,
- 1 correspond à un jeton sentence B.
- position_ids (
torch.LongTensorde formebatch_size, num_questions, sequence_length, facultatif) — Indices des positions des jetons de chaque séquence d'entrée dans les embeddings de position. Sélectionnés dans l'intervalle[0, config.max_position_embeddings - 1]. - inputs_embeds (
torch.FloatTensorde forme(batch_size, num_questions, sequence_length, hidden_size), facultatif) — Facultativement, au lieu de passerinput_ids, vous pouvez choisir de passer directement une représentation intégrée. Cela est utile si vous souhaitez un meilleur contrôle sur la façon de convertir les indices input_ids en vecteurs associés que la matrice de recherche d’intégration interne du modèle. - start_positions (
torch.LongTensorde forme(batch_size, num_questions), facultatif) — Étiquettes pour la position (index) du début de l'intervalle étiqueté, utilisées pour calculer la perte de classification de jetons. Les positions sont bornées à la longueur de la séquence (sequence_length). Les positions situées en dehors de la séquence ne sont pas prises en compte pour le calcul de la perte. - end_positions (
torch.LongTensorde forme(batch_size, num_questions), facultatif) — Étiquettes pour la position (index) de fin de l'intervalle étiqueté, utilisées pour calculer la perte de classification de jetons. Les positions sont bornées à la longueur de la séquence (sequence_length). Les positions situées en dehors de la séquence ne sont pas prises en compte pour le calcul de la perte. - question_positions (
torch.LongTensorde forme(batch_size, num_questions), facultatif) — Les positions de tous les jetons de question. Si fourni, start_logits et end_logits auront la forme(batch_size, num_questions, sequence_length). Si None, seul le premier jeton de question de chaque séquence du lot sera utilisé pour le calcul de start_logits et end_logits, et ceux-ci auront la forme(batch_size, sequence_length).
Retourne
SplinterForPreTrainingOutput ou tuple(torch.FloatTensor)
Un SplinterForPreTrainingOutput ou un tuple de
torch.FloatTensor (si return_dict=False est passé ou lorsque config.return_dict=False) comprenant divers
éléments en fonction de la configuration (SplinterConfig) et des entrées.
La méthode forward de SplinterForPreTraining redéfinit la méthode spéciale __call__.
Bien que la recette de la passe avant doive être définie dans cette fonction, il faut ensuite appeler l'instance
Moduleplutôt que celle-ci, car la première gère l'exécution des étapes de prétraitement et de post-traitement, tandis que la seconde les ignore silencieusement.
loss (
torch.FloatTensorde forme(1,), facultatif, renvoyé lorsque les positions de début et de fin sont fournies) — La perte totale d'extraction de portée est la somme d'une Cross-Entropy pour les positions de début et de fin.start_logits (
torch.FloatTensorde forme(batch_size, num_questions, sequence_length)) — Scores de début de segment (avant SoftMax).end_logits (
torch.FloatTensorde forme(batch_size, num_questions, sequence_length)) — Scores de fin de segment (avant SoftMax).hidden_states (
tuple[torch.FloatTensor], facultatif, renvoyé lorsqueoutput_hidden_states=Trueest passé ou lorsqueconfig.output_hidden_states=True) — Tuple detorch.FloatTensor(un pour la sortie des embeddings, si le modèle possède une couche d’embedding, + un pour la sortie de chaque couche) de forme(batch_size, sequence_length, hidden_size).États cachés du modèle à la sortie de chaque couche, ainsi que les sorties d'incorporation initiales facultatives.
attentions (
tuple[torch.FloatTensor], facultatif, renvoyé lorsqueoutput_attentions=Trueest passé ou lorsqueconfig.output_attentions=True) — Tuple detorch.FloatTensor(un par couche) de forme(batch_size, num_heads, sequence_length, sequence_length).Poids des attentions après le softmax d'attention, utilisés pour calculer la moyenne pondérée dans les têtes d'auto-attention.