Transformers documentation
Trainer
Trainer
La classe Trainer fournit une API de formation complète pour PyTorch et prend en charge l’entraînement distribué sur plusieurs GPU/TPU, la précision mixte pour les GPU NVIDIA, les GPU AMD et torch.amp pour PyTorch. Trainer s’utilise de pair avec la classe TrainingArguments, qui offre un large éventail d’options pour personnaliser la manière dont un modèle est entraîné. Ensemble, ces deux classes constituent une API d’entraînement complète.
Seq2SeqTrainer et Seq2SeqTrainingArguments héritent des classes Trainer et TrainingArguments et sont adaptés à l’entraînement de modèles pour des tâches de séquence à séquence, telles que la résumés ou la traduction.
La classe Trainer est optimisée pour les modèles 🤗 Transformers et peut présenter des comportements surprenants lorsqu'elle est utilisée avec d'autres modèles. Si vous l'utilisez avec votre propre modèle, assurez-vous :
- votre modèle retourne toujours des tuples ou des sous-classes de ModelOutput
- votre modèle peut calculer la perte si un argument
labelsest fourni et que cette perte est retournée comme premier élément du tuple (si votre modèle retourne des tuples)- votre modèle peut accepter plusieurs arguments d’étiquettes (utilisez
label_namesdans TrainingArguments pour indiquer leur nom au Trainer) mais aucun d’entre eux ne doit s’appeler"label"
Trainer
classe transformers.Trainer
< source >( model: typing.Union[transformers.modeling_utils.PreTrainedModel, torch.nn.Module, NoneType] = Noneargs: transformers.training_args.TrainingArguments | None = Nonedata_collator: collections.abc.Callable[[list[typing.Any]], dict[str, typing.Any]] | None = Nonetrain_dataset: Dataset | IterableDataset | datasets.Dataset | None = Noneeval_dataset: Dataset | dict[str, Dataset] | datasets.Dataset | None = Noneprocessing_class: transformers.tokenization_utils_base.PreTrainedTokenizerBase | transformers.image_processing_utils.BaseImageProcessor | transformers.feature_extraction_utils.FeatureExtractionMixin | transformers.processing_utils.ProcessorMixin | None = Nonemodel_init: collections.abc.Callable[..., transformers.modeling_utils.PreTrainedModel] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[[transformers.trainer_utils.EvalPrediction], dict] | None = Nonecallbacks: list[transformers.trainer_callback.TrainerCallback] | None = Noneoptimizers: tuple = (None, None)optimizer_cls_and_kwargs: tuple[type[torch.optim.Optimizer], dict[str, typing.Any]] | None = Nonepreprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
Paramètres
- model (PreTrainedModel ou
torch.nn.Module, facultatif) — Le modèle à entraîner, à évaluer ou à utiliser pour les prédictions. S'il n'est pas fourni, unmodel_initdoit être transmis.Trainer est optimisé pour fonctionner avec le PreTrainedModel fourni par la bibliothèque. Vous pouvez tout de même utiliser vos propres modèles définis comme
torch.nn.Module, à condition qu’ils fonctionnent de la même manière que les modèles 🤗 Transformers. - args (TrainingArguments, facultatif) —
Les arguments à ajuster pour l'entraînement. Par défaut, une instance basique de TrainingArguments est utilisée, avec
output_dirdéfini sur un répertoire nommé tmp_trainer dans le répertoire courant, si aucune valeur n'est fournie. - data_collator (
DataCollator, facultatif) — La fonction à utiliser pour former un lot à partir d'une liste d'éléments detrain_datasetoueval_dataset. Par défaut, default_data_collator() est utilisé si aucuneprocessing_classn'est fournie, sinon une instance de DataCollatorWithPadding si la processing_class est un extracteur de caractéristiques ou un tokenizer. - train_dataset (
torch.utils.data.Dataset|torch.utils.data.IterableDataset|datasets.Dataset, facultatif) — Le jeu de données à utiliser pour l'entraînement. S'il s'agit d'un Dataset, les colonnes non acceptées par la méthodemodel.forward()sont automatiquement supprimées. Notez que s'il s'agit d'un torch.utils.data.IterableDataset avec une certaine aléatisation et que vous entraînez en mode distribué, votre jeu de données itérable doit soit utiliser un générateur d'attribut interne qui est un torch.Generator pour l'aléatisation, identique sur tous les processus (et le Trainer définira manuellement la graine de ce générateur à chaque époque), soit avoir une méthode set_epoch() qui définit la graine des générateurs de nombres aléatoires utilisés. Si le jeu de données n'implémente pas __len__ (par exemple, un IterableDataset en streaming), max_steps doit être défini, car le nombre total d'étapes d'entraînement ne peut pas être déduit.Notez que s’il s’agit d’un
torch.utils.data.IterableDatasetavec une certaine aléatisation et que vous entraînez de manière distribuée, votre jeu de données itérable doit soit utiliser un attribut internegeneratorqui est untorch.Generatorpour l’aléatisation et qui doit être identique sur tous les processus (et le Trainer définira manuellement la graine de cegeneratorà chaque époque), soit avoir une méthodeset_epoch()qui définit en interne la graine des générateurs de nombres aléatoires utilisés.Si le jeu de données n’implémente pas
__len__(par exemple unIterableDataseten streaming),max_stepsdoit être défini, car le nombre total d’étapes d’entraînement ne peut pas être déduit. - eval_dataset (
torch.utils.data.Dataset| dict[str,torch.utils.data.Dataset] |datasets.Dataset, facultatif) — Le jeu de données à utiliser pour l'évaluation. S'il s'agit d'un Dataset, les colonnes non acceptées par la méthodemodel.forward()sont automatiquement supprimées. S'il s'agit d'un dictionnaire, l'évaluation est effectuée sur chaque jeu de données en préfixant le nom de la métrique avec la clé du dictionnaire. - processing_class (
PreTrainedTokenizerBaseouBaseImageProcessorouFeatureExtractionMixinouProcessorMixin, facultatif) — Classe de traitement utilisée pour traiter les données. Si fournie, elle sera utilisée pour traiter automatiquement les entrées du modèle et sera enregistrée avec le modèle afin de faciliter la reprise d'une formation interrompue ou la réutilisation du modèle affiné. - model_init (
Callable[[], PreTrainedModel], facultatif) — Une fonction qui instancie le modèle à utiliser. Si fournie, chaque appel à train() partira d'une nouvelle instance du modèle telle que définie par cette fonction.La fonction peut ne prendre aucun argument, ou un seul argument contenant l'objet d'essai optuna/Ray Tune, afin de pouvoir choisir différentes architectures en fonction des hyperparamètres (comme le nombre de couches, les tailles des couches internes, les probabilités de dropout, etc.).
- compute_loss_func (
Callable, facultatif) — Une fonction qui accepte les sorties brutes du modèle, les étiquettes et le nombre d'éléments dans le lot accumulé entier (batch_size * gradient_accumulation_steps) et renvoie la perte. Par exemple, voir la fonction de perte par défaut utilisée par Trainer. - compute_metrics (
Callable[[EvalPrediction], Dict], facultatif) — La fonction utilisée pour calculer les métriques lors de l'évaluation. Elle doit prendre un EvalPrediction en entrée et renvoyer un dictionnaire associant des chaînes de caractères aux valeurs des métriques. Note Lors du passage de TrainingArgs avecbatch_eval_metricsdéfini àTrue, votre fonction compute_metrics doit prendre un argument booléencompute_result. Cela sera déclenché après le dernier lot d'évaluation pour signaler que la fonction doit calculer et renvoyer les statistiques récapitulatives globales plutôt que d'accumuler les statistiques au niveau du lot - callbacks (Liste de TrainerCallback, facultatif) —
Une liste de callbacks pour personnaliser la boucle d'entraînement. Ils seront ajoutés à la liste des callbacks par défaut, détaillée ici.
Si vous souhaitez supprimer l’un des callbacks par défaut utilisés, utilisez la méthode Trainer.remove_callback().
- optimizers (
tuple[torch.optim.Optimizer, torch.optim.lr_scheduler.LambdaLR], facultatif, valeur par défaut(None, None)) — Un tuple contenant l'optimiseur et le planificateur à utiliser. Par défaut, une instance deAdamWest appliquée à votre modèle, ainsi qu'un planificateur défini par get_linear_schedule_with_warmup() et contrôlé parargs. - optimizer_cls_and_kwargs (
tuple[Type[torch.optim.Optimizer], dict[str, Any]], optional) — A tuple containing the optimizer class and keyword arguments to use. Overridesoptimandoptim_argsinargs. Incompatible with theoptimizersargument.Contrairement à
optimizers, cet argument évite d’avoir à placer les paramètres du modèle sur les bons appareils avant d’initialiser le Trainer. - preprocess_logits_for_metrics (
Callable[[torch.Tensor, torch.Tensor], torch.Tensor], facultatif) — Une fonction qui prétraite les logits juste avant de les mettre en cache à chaque étape d'évaluation. Elle doit prendre deux tenseurs en entrée, les logits et les étiquettes, et renvoyer les logits une fois traités comme souhaité. Les modifications apportées par cette fonction seront reflétées dans les prédictions reçues parcompute_metrics.Notez que les étiquettes (deuxième paramètre) seront
Nonesi le jeu de données ne les contient pas.
Trainer est une boucle d'entraînement et d'évaluation simple mais complète pour PyTorch, optimisée pour 🤗 Transformers.
Attributs importants :
- model — Pointe toujours vers le modèle de base. Si vous utilisez un modèle transformers, il s’agira d’une sous-classe de PreTrainedModel.
- model_wrapped — Pointe toujours vers le modèle le plus externe lorsqu’un ou plusieurs autres modules enveloppent le modèle d’origine. C’est ce modèle qui doit être utilisé pour le passage avant. Par exemple, sous
DeepSpeed, le modèle interne est enveloppé dansDeepSpeedpuis à nouveau danstorch.nn.DistributedDataParallel. Si le modèle interne n’a pas été enveloppé, alorsself.model_wrappedest identique àself.model. - is_model_parallel — Indique si un modèle a été basculé en mode parallélisme de modèle (contrairement au parallélisme de données, cela signifie que certaines couches du modèle sont réparties sur différentes GPU).
- place_model_on_device — Indique s'il faut placer automatiquement le modèle sur l'appareil. La valeur par défaut est
True, sauf si le parallélisme de modèle, DeepSpeed, FSDP, une évaluation complète en fp16/bf16 ou SageMaker MP est actif. Peut être réécrit en sous-classantTrainingArgumentset en réécrivant la propriétéplace_model_on_device. - is_in_train — Indique si un modèle est actuellement en cours d'exécution de
train(par exemple, lorsqueevaluateest appelé pendanttrain) - loss_is_scaled_for_ga — Indique si la perte renvoyée par
compute_lossest déjà mise à l'échelle pour l'accumulation de gradients.True:training_stepl'utilise telle quelle.False:training_stepla divise par le nombre d'étapes d'accumulation de gradients.None(par défaut) : la perte est considérée comme mise à l'échelle si elle a été normalisée parnum_items_in_batch, c'est-à-dire si le modèle accepte des arguments de perte ou si unecompute_loss_funcest transmise. Les sous-classes qui calculent leur propre perte doivent le définir.
add_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Paramètres
- callback (
typeou [`~transformers.TrainerCallback`]) — Une classe TrainerCallback ou une instance de TrainerCallback. Dans le premier cas, un membre de cette classe sera instancié.
Ajouter un rappel à la liste actuelle de TrainerCallback.
Un wrapper d’assistance qui crée un gestionnaire de contexte approprié pour autocast en lui transmettant les arguments souhaités, selon la situation. Nous nous appuyons sur accelerate pour autocast, nous ne faisons donc rien ici.
Appel de model_init pour obtenir une nouvelle instance de modèle, éventuellement conditionnée par un essai d’hyperparamètres.
compute_loss
< source >( model: Moduleinputs: dictreturn_outputs: bool = Falsenum_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None )
Paramètres
- model (
nn.Module) — Le modèle pour lequel calculer la perte. - inputs (
dict[str, torch.Tensor | Any]) — Les données d'entrée pour le modèle. - return_outputs (
bool, facultatif, par défautFalse) — Indique s'il faut retourner les sorties du modèle en plus de la perte. - num_items_in_batch (Optional[torch.Tensor], facultatif) — Le nombre d'éléments dans le lot. S'il n'est pas fourni, la perte est calculée en utilisant la logique de réduction de taille de lot par défaut.
Comment la perte est calculée par Trainer. Par défaut, tous les modèles retournent la perte dans le premier élément.
Sous-classez et surchargez pour un comportement personnalisé. Si vous calculez votre propre perte, définissez loss_is_scaled_for_ga pour indiquer si elle est déjà mise à l'échelle pour l'accumulation de gradients : False s'il s'agit d'une moyenne par lot (le Trainer la divise alors par le nombre d'étapes d'accumulation de gradients), True si vous l'avez déjà normalisée sur l'ensemble du lot accumulé.
Un wrapper d’assistance pour regrouper des gestionnaires de contexte.
Créez l'accélérateur et effectuez la configuration post-création (FSDP, DeepSpeed, etc.).
create_model_card
< source >( language: str | None = Nonelicense: str | None = Nonetags: str | list[str] | None = Nonemodel_name: str | None = Nonefinetuned_from: str | None = Nonetasks: str | list[str] | None = Nonedataset_tags: str | list[str] | None = Nonedataset: str | list[str] | None = Nonedataset_args: str | list[str] | None = None )
Paramètres
- language (
str, facultatif) — La langue du modèle (le cas échéant) - license (
str, facultatif) — La licence du modèle. Par défaut, la licence du modèle pré-entraîné utilisé est appliquée, si le modèle d’origine transmis auTrainerprovient d’un dépôt sur le Hub. - tags (
stroulist[str], facultatif) — Certaines balises à inclure dans les métadonnées de la carte du modèle. - model_name (
str, facultatif) — Le nom du modèle. - finetuned_from (
str, facultatif) — Le nom du modèle utilisé pour l’ajustement fin de celui-ci (le cas échéant). Par défaut, il s’agit du nom du dépôt du modèle d’origine transmis àTrainer(s’il provient du Hub). - tasks (
stroulist[str], facultatif) — Un ou plusieurs identifiants de tâches, à inclure dans les métadonnées de la carte du modèle. - dataset_tags (
stroulist[str], facultatif) — Un ou plusieurs tags de jeu de données, à inclure dans les métadonnées de la carte du modèle. - dataset (
stroulist[str], facultatif) — Un ou plusieurs identifiants de jeu de données, à inclure dans les métadonnées de la carte du modèle. - dataset_args (
stroulist[str], facultatif) — Un ou plusieurs arguments de jeu de données, à inclure dans les métadonnées de la carte du modèle.
Crée un brouillon de carte de modèle à l'aide des informations disponibles pour le Trainer.
create_optimizer
< source >( model = None ) → torch.optim.Optimizer
Retourne
torch.optim.Optimizer
L'instance de l'optimiseur.
Configurer l'optimiseur.
Nous fournissons une valeur par défaut raisonnable qui fonctionne bien. Si vous souhaitez utiliser autre chose, vous pouvez passer un tuple dans l’initialisation du
Trainer via optimizers, ou sous-classez et surchargez cette méthode dans une sous-classe.
Configurez l'optimiseur et le planificateur de taux d'apprentissage.
Nous fournissons une valeur par défaut raisonnable qui fonctionne bien. Si vous souhaitez utiliser autre chose, vous pouvez passer un tuple dans l’initialisation du
Trainer via optimizers, ou sous-classez et surchargez cette méthode (ou create_optimizer et/ou create_scheduler) dans une sous-classe.
create_scheduler
< source >( num_training_steps: intoptimizer: typing.Optional[torch.optim.Optimizer] = None ) → torch.optim.lr_scheduler.LRScheduler
Configure le planificateur. L'optimiseur du formateur doit avoir été configuré avant l'appel de cette méthode ou transmis en tant qu'argument.
Terminez les trackers et détruisez le groupe de processus distribué.
Appelée une seule fois, tout à la fin d’un script, après tout ce qui nécessite les autres processus : train(), evaluate(), predict(), save_model() et push_to_hub() communiquent tous entre les processus et échoueront une fois le groupe supprimé.
evaluate
< source >( eval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )
Paramètres
- eval_dataset (
Dataset| dict[str,Dataset], facultatif) — Transmettez un jeu de données si vous souhaitez remplacerself.eval_dataset. S'il s'agit d'un Dataset, les colonnes non acceptées par lamodel.forward()méthode sont automatiquement supprimées. S'il s'agit d'un dictionnaire, l'évaluation sera effectuée sur chaque jeu de données, en préfixant le nom de la métrique avec la clé du dictionnaire.If you pass a dictionary with names of datasets as keys and datasets as values, evaluate will run separate evaluations on each dataset. This can be useful to monitor how training affects other datasets or simply to get a more fine-grained evaluation. When used with
load_best_model_at_end, make suremetric_for_best_modelreferences exactly one of the datasets. If you, for example, pass in{"data1": data1, "data2": data2}for two datasetsdata1anddata2, you could specifymetric_for_best_model="eval_data1_loss"for using the loss ondata1andmetric_for_best_model="eval_data2_loss"for the loss ondata2. - ignore_keys (
list[str], facultatif) — Une liste de clés de la sortie de votre modèle (s’il s’agit d’un dictionnaire) qui doivent être ignorées lors de la collecte des prédictions. - metric_key_prefix (
str, facultatif, par défaut"eval") — Préfixe facultatif à utiliser comme préfixe des clés des métriques. Par exemple, la métrique « bleu » sera nommée « eval_bleu » si le préfixe est « eval » (par défaut)
Exécute l'évaluation et renvoie les métriques.
Le script d’appel sera responsable de la fourniture d’une méthode pour calculer les métriques, car elles dépendent de la tâche (à passer à l’argument compute_metrics d’initialisation).
Vous pouvez également sous-classez et remplacer cette méthode pour injecter un comportement personnalisé.
evaluation_loop
< source >( dataloader: DataLoaderdescription: strprediction_loss_only: bool | None = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval' )
Boucle de prédiction/évaluation, partagée par Trainer.evaluate() et Trainer.predict().
Fonctionne avec ou sans étiquettes.
floating_point_ops
< source >( inputs: dict ) → int
Pour les modèles qui héritent de PreTrainedModel, cette méthode est utilisée pour calculer le nombre d'opérations en virgule flottante pour chaque passe avant + arrière. Si vous utilisez un autre modèle, implémentez une telle méthode dans le modèle ou créez une sous-classe et écrasez cette méthode.
Collecte un nombre spécifié de lots de l'itérateur d'époque et compte, le cas échéant, le nombre d'éléments dans les lots pour mettre à l'échelle correctement la perte.
Obtenir la taille du parallélisme de contexte
Obtenez tous les noms de paramètres auxquels la décroissance du poids sera appliquée.
Cette fonction filtre les paramètres de deux manières :
- Par type de couche (instances de couches spécifiées dans ALL_LAYERNORM_LAYERS)
- Par motifs de noms de paramètres (contenant ‘bias’ ou une variante de ‘norm’)
get_eval_dataloader
< source >( eval_dataset: typing.Union[str, torch.utils.data.Dataset, NoneType] = None )
Paramètres
- eval_dataset (
stroutorch.utils.data.Dataset, facultatif) — Si c'est unestr,self.eval_dataset[eval_dataset]sera utilisé comme jeu de données d'évaluation. Si c'est unDataset,self.eval_datasetsera remplacé. S'il s'agit d'un Dataset, les colonnes non acceptées par la méthodemodel.forward()sont automatiquement supprimées.
Retourne le ~torch.utils.data.DataLoader d'évaluation.
Sous-classez et surchargez cette méthode si vous souhaitez injecter un comportement personnalisé.
Retourne le taux d'apprentissage de chaque paramètre depuis self.optimizer.
Obtenir le nombre de paramètres entraînables.
get_optimizer_cls_and_kwargs
< source >( args: TrainingArgumentsmodel: transformers.modeling_utils.PreTrainedModel | None = None )
Retourne la classe d'optimiseur et les paramètres de l'optimiseur en fonction des arguments d'entraînement.
get_optimizer_group
< source >( param: typing.Union[str, torch.nn.parameter.Parameter, NoneType] = None )
Retourne le groupe d'optimiseur pour un paramètre si celui-ci est fourni, sinon retourne tous les groupes d'optimiseur pour les paramètres.
Obtenir la taille du parallélisme de séquence
get_test_dataloader
< source >( test_dataset: Dataset )
Paramètres
- test_dataset (
torch.utils.data.Dataset, facultatif) — Le jeu de données de test à utiliser. S'il s'agit d'un Dataset, les colonnes non acceptées par la méthodemodel.forward()sont automatiquement supprimées.
Retourne le ~torch.utils.data.DataLoader de test.
Sous-classez et surchargez cette méthode si vous souhaitez injecter un comportement personnalisé.
Calcule la taille totale du lot (micro_batch grad_accum dp_world_size).
Tient compte de toutes les dimensions de parallélisme : TP, CP et SP.
Formule : dp_world_size = world_size // (tp_size cp_size sp_size)
Où :
- TP (parallélisme de tenseurs) : les couches du modèle sont réparties sur plusieurs GPU
- CP (parallélisme de contexte) : séquences divisées à l'aide de Ring Attention (FSDP2)
- SP (parallélisme de séquence) : Séquences divisées à l'aide d'ALST/Ulysses (DeepSpeed)
Toutes les dimensions sont distinctes et multiplicatives : world_size = dp_size tp_size cp_size * sp_size
Récupérez la taille du parallélisme tensoriel à partir de la configuration du modèle ou de DeepSpeed.
Retourne le ~torch.utils.data.DataLoader d'entraînement.
N'utilise aucun échantillonneur si train_dataset n'implémente pas __len__, sinon un échantillonneur aléatoire (adapté à l'entraînement distribué si nécessaire).
Sous-classez et surchargez cette méthode si vous souhaitez injecter un comportement personnalisé.
hyperparameter_search
< source >( hp_space: collections.abc.Callable[['optuna.Trial'], dict[str, float]] | None = Nonecompute_objective: collections.abc.Callable[[dict[str, float]], float] | None = Nonen_trials: int = 20direction: str | list[str] = 'minimize'backend: str | transformers.trainer_utils.HPSearchBackend | None = Nonehp_name: collections.abc.Callable[['optuna.Trial'], str] | None = None**kwargs ) → [trainer_utils.BestRun or list[trainer_utils.BestRun]]
Paramètres
- hp_space (
Callable[["optuna.Trial"], dict[str, float]], facultatif) — Une fonction qui définit l’espace de recherche des hyperparamètres. Par défaut, elle vautdefault_hp_space_optuna()oudefault_hp_space_ray()selon votre backend. - compute_objective (
Callable[[dict[str, float]], float], facultatif) — Une fonction qui calcule l'objectif à minimiser ou maximiser à partir des métriques renvoyées par la méthodeevaluate. Par défaut,default_compute_objective()est utilisé. - n_trials (
int, facultatif, valeur par défaut 100) — Le nombre d’exécutions d’essai à tester. - direction (
stroulist[str], facultatif, par défaut"minimize") — En cas d’optimisation mono-objectif, direction est unstr, pouvant être"minimize"ou"maximize". Il faut choisir"minimize"lors de l’optimisation de la perte de validation et"maximize"lors de l’optimisation d’une ou plusieurs métriques. En cas d’optimisation multi-objectifs, direction est unelist[str], pouvant contenir une liste de"minimize"et"maximize". Il faut choisir"minimize"lors de l’optimisation de la perte de validation et"maximize"lors de l’optimisation d’une ou plusieurs métriques. - backend (
strou~training_utils.HPSearchBackend, facultatif) — Le backend à utiliser pour la recherche d'hyperparamètres. Par défaut, optuna ou Ray Tune sera utilisé, selon celui qui est installé. Si les deux sont installés, optuna sera utilisé par défaut. - hp_name (
Callable[["optuna.Trial"], str]], facultatif) — Une fonction qui définit le nom de l'essai/exécution. La valeur par défaut est None. - kwargs (
dict[str, Any], facultatif) — Arguments de mots-clés supplémentaires pour chaque backend :optuna: les paramètres de optuna.study.create_study ainsi que les paramètrestimeout,n_jobsetgc_after_trialde optuna.study.Study.optimizeray: paramètres de tune.run. Siresources_per_trialn’est pas défini danskwargs, la valeur par défaut est 1 cœur CPU et 1 GPU (si disponible). Siprogress_reportern’est pas défini danskwargs, ray.tune.CLIReporter est utilisé.
Retourne
[trainer_utils.BestRun ou list[trainer_utils.BestRun]]
Toutes les informations sur la meilleure exécution ou les meilleures exécutions pour l'optimisation multi-objectifs. Le résumé de l'expérience peut être trouvé dans l'attribut run_summary pour le backend Ray.
Lancez une recherche d'hyperparamètres à l'aide de optuna ou Ray Tune. La quantité optimisée est déterminée
par compute_objective, qui par défaut renvoie la perte d'évaluation lorsqu'aucune métrique n'est fournie,
la somme de toutes les métriques dans le cas contraire.
Pour utiliser cette méthode, vous devez avoir fourni un
model_initlors de l’initialisation de votre Trainer : il est nécessaire de réinitialiser le modèle à chaque nouvelle exécution. Cela est incompatible avec l’argumentoptimizers, vous devez donc sous-classez Trainer et surcharger la méthode create_optimizer_and_scheduler() pour un optimiseur/planificateur personnalisé.
init_hf_repo
< source >( token: str | None = Noneprivate: bool | None = None )
Initialise un dépôt git dans self.args.hub_model_id.
Indique si ce processus est le processus principal local (par exemple, sur une seule machine lors d'une formation distribuée sur plusieurs machines).
Que ce processus soit ou non le processus principal global (lors de l'entraînement distribué sur plusieurs machines, cela ne sera True que pour un seul processus).
log
< source >( logs: dictstart_time: float | None = None )
Journaliser logs sur les différents objets surveillant l'entraînement.
Sous-classez et surchargez cette méthode pour injecter un comportement personnalisé.
log_metrics
< source >( splitmetrics )
Enregistrer les métriques dans un format spécial.
Dans un environnement distribué, cela n'est effectué que pour le processus de rang 0.
Remarques sur les rapports de mémoire :
Pour obtenir un rapport d'utilisation de la mémoire, vous devez installer psutil. Vous pouvez le faire avec pip install psutil.
Lorsque cette méthode est exécutée, vous verrez un rapport qui inclura :
init_mem_cpu_alloc_delta = 1301MB
init_mem_cpu_peaked_delta = 154MB
init_mem_gpu_alloc_delta = 230MB
init_mem_gpu_peaked_delta = 0MB
train_mem_cpu_alloc_delta = 1345MB
train_mem_cpu_peaked_delta = 0MB
train_mem_gpu_alloc_delta = 693MB
train_mem_gpu_peaked_delta = 7MBComprendre les rapports :
- Le premier segment, par exemple
train__, indique l’étape pour laquelle les métriques sont fournies. Les rapports commençant parinit_seront ajoutés à la première étape exécutée. Ainsi, si seule l’évaluation est exécutée, l’utilisation de la mémoire pour__init__sera rapportée avec les métriqueseval_. - le troisième segment, qui est soit
cpusoitgpu, vous indique s’il s’agit de la RAM générale ou de la mémoire gpu0. *_alloc_delta- est la différence du compteur de mémoire utilisée/allouée entre la fin et le début de l'étape - elle peut être négative si une fonction a libéré plus de mémoire qu'elle n'en a alloué.*_peaked_delta- correspond à toute mémoire supplémentaire qui a été consommée puis libérée - par rapport au compteur de mémoire actuellement allouée - il n'est jamais négatif. Lorsque vous examinez les métriques d'une étape, vous additionnezalloc_delta+peaked_deltaet vous savez combien de mémoire était nécessaire pour terminer cette étape.
Le rapport est généré uniquement pour le processus de rang 0 et le gpu 0 (s'il existe un gpu). Généralement, cela suffit, car le processus principal effectue la majeure partie du travail, mais ce n'est pas tout à fait le cas si le parallélisme de modèle est utilisé, car d'autres GPU peuvent alors utiliser une quantité différente de mémoire gpu. Ce n'est pas non plus la même chose sous DataParallel, où le gpu0 peut nécessiter beaucoup plus de mémoire que les autres, car il stocke les gradients et les états de l'optimiseur pour tous les GPU participants. Peut-être que, à l'avenir, ces rapports évolueront pour mesurer également ces aspects.
La métrique de RAM CPU mesure la RSS (Resident Set Size), qui inclut à la fois la mémoire propre au processus et la mémoire partagée avec d'autres processus. Il est important de noter qu'elle n'inclut pas la mémoire échangée (swappée), de sorte que les rapports peuvent être imprécis.
La mémoire CPU de pointe est mesurée à l’aide d’un thread d’échantillonnage. En raison du GIL de Python, il peut manquer une partie de la mémoire de pointe si ce thread n’a pas eu l’occasion de s’exécuter au moment où la consommation mémoire était la plus élevée. Par conséquent, ce rapport peut être inférieur à la réalité. L’utilisation de tracemalloc aurait permis de rapporter la mémoire de pointe exacte, mais il ne signale pas les allocations de mémoire en dehors de Python. Ainsi, si une extension C++ CUDA a alloué sa propre mémoire, elle ne sera pas signalée. C’est pourquoi cette approche a été abandonnée au profit de la méthode d’échantillonnage de la mémoire, qui lit l’utilisation actuelle de la mémoire du processus.
L’allocation GPU et le rapport de la mémoire de pointe sont effectués avec torch.cuda.memory_allocated() et torch.cuda.max_memory_allocated(). Cette métrique ne signale que les « deltas » des allocations spécifiques à PyTorch, car le système de gestion de la mémoire torch.cuda ne suit aucune mémoire allouée en dehors de PyTorch. Par exemple, le tout premier appel CUDA charge typiquement les noyaux CUDA, ce qui peut consommer de 0,5 à 2 Go de mémoire GPU.
Notez que ce traceur ne prend pas en compte les allocations de mémoire effectuées en dehors des appels __init__, train, evaluate et predict de Trainer.
Les appels à evaluation peuvent survenir pendant train, nous ne pouvons donc pas gérer les invocations imbriquées car torch.cuda.max_memory_allocated est un compteur unique. Ainsi, s’il est réinitialisé par un appel d’évaluation imbriqué, le traceur de train rapportera des informations incorrectes. Si ce problème PyTorch est résolu, il sera possible de rendre cette classe réentrante. En attendant, nous ne suivrons que le niveau externe des méthodes train, evaluate et predict. Cela signifie que si eval est appelé pendant train, c’est ce dernier qui tiendra compte de son utilisation mémoire ainsi que de celle du premier.
Cela signifie également que si un autre outil utilisé avec le Trainer appelle torch.cuda.reset_peak_memory_stats, les statistiques de mémoire GPU de pointe pourraient être invalides. Et le Trainer perturbera le comportement normal de tout outil de ce type qui s’appuie sur l’appel de torch.cuda.reset_peak_memory_stats par lui-même.
Pour une performance optimale, vous pouvez envisager de désactiver le profilage mémoire pour les exécutions en production.
metrics_format
< source >( metrics: dict ) → metrics (dict[str, float])
Reformater les valeurs des métriques du Trainer dans un format lisible par l'humain.
Assistant pour obtenir le nombre d'échantillons dans un ~torch.utils.data.DataLoader en accédant à son jeu de données. Lorsque
dataloader.dataset n'existe pas ou n'a pas de longueur, l'estime au mieux
pop_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback ) → TrainerCallback
Paramètres
- callback (
typeou [`~transformers.TrainerCallback`]) — Une classe TrainerCallback ou une instance de TrainerCallback. Dans le premier cas, retire le premier membre de cette classe trouvé dans la liste des callbacks.
Retourne
Le callback supprimé, s'il a été trouvé.
Supprime un rappel de la liste actuelle de TrainerCallback et le renvoie.
Si le rappel n'est pas trouvé, renvoie None (et aucune erreur n'est levée).
predict
< source >( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test' )
Paramètres
- test_dataset (
Dataset) — Jeu de données sur lequel exécuter les prédictions. S'il s'agit d'undatasets.Dataset, les colonnes non acceptées par la méthodemodel.forward()sont automatiquement supprimées. - ignore_keys (
list[str], facultatif) — Une liste de clés de la sortie de votre modèle (s’il s’agit d’un dictionnaire) qui doivent être ignorées lors de la collecte des prédictions. - metric_key_prefix (
str, facultatif, par défaut"test") — Préfixe facultatif à utiliser comme préfixe des clés de métriques. Par exemple, la métrique « bleu » sera nommée « test_bleu » si le préfixe est « test » (par défaut)
Exécute la prédiction et renvoie les prédictions ainsi que les métriques potentielles.
Selon le jeu de données et votre cas d’usage, votre jeu de test peut contenir des étiquettes. Dans ce cas, cette méthode renverra également des métriques, comme dans evaluate().
Si vos prédictions ou vos étiquettes ont des longueurs de séquence différentes (par exemple parce que vous effectuez un bourrage dynamique dans une tâche de classification de jetons), les prédictions seront bourrées (à droite) pour permettre la concaténation en un seul tableau. L’indice de bourrage est -100.
Retourne : NamedTuple Un namedtuple avec les clés suivantes :
- predictions (
np.ndarray) : Les prédictions surtest_dataset. - label_ids (
np.ndarray, facultatif) : Les étiquettes (si le jeu de données en contenait). - metrics (
dict[str, float], facultatif) : le dictionnaire potentiel des métriques (si le jeu de données contenait des étiquettes).
prediction_step
< source >( model: Moduleinputs: dictprediction_loss_only: boolignore_keys: list[str] | None = None ) → tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]
Paramètres
- model (
nn.Module) — Le modèle à évaluer. - inputs (
dict[str, torch.Tensor | Any]) — Les entrées et les cibles du modèle.Le dictionnaire sera dépaqueté avant d’être transmis au modèle. La plupart des modèles s’attendent à ce que les cibles soient fournies via l’argument
labels. Consultez la documentation de votre modèle pour connaître tous les arguments acceptés. - prediction_loss_only (
bool) — Indique s'il faut retourner uniquement la perte. - ignore_keys (
list[str], facultatif) — Une liste de clés de la sortie de votre modèle (s’il s’agit d’un dictionnaire) qui doivent être ignorées lors de la collecte des prédictions.
Retourne
tuple[Optional[torch.Tensor], Optional[torch.Tensor], Optional[torch.Tensor]]
Un tuple contenant la perte, les logits et les étiquettes (chacun étant facultatif).
Effectuer une étape d'évaluation sur model en utilisant inputs.
Sous-classez et écrasez pour injecter un comportement personnalisé.
push_to_hub
< source >( commit_message: str | None = 'End of training'blocking: bool = Truetoken: str | None = Nonerevision: str | None = Noneprivate: bool | None = None**kwargs )
Paramètres
- commit_message (
str, facultatif, par défaut"End of training") — Message à committer lors de la poussée. - blocking (
bool, facultatif, par défautTrue) — Indique si la fonction doit ne renvoyer que lorsque legit pushest terminé. - token (
str, facultatif, par défautNone) — Jeton avec permission d’écriture pour écraser les arguments originaux du Trainer. - revision (
str, facultatif) — La révision git à partir de laquelle effectuer le commit. Par défaut, il s'agit de la tête de la branche « main ». - private (
bool, facultatif) — Indique s'il faut rendre le dépôt privé lors de sa création. La valeur par défaut estargs.hub_private_repo. N'a aucun effet si le dépôt existe déjà. - kwargs (
dict[str, Any], facultatif) — Arguments supplémentaires passés à create_model_card().
Téléchargez self.model et self.processing_class sur le hub de modèles 🤗 dans le dépôt self.args.hub_model_id.
remove_callback
< source >( callback: type[transformers.trainer_callback.TrainerCallback] | transformers.trainer_callback.TrainerCallback )
Paramètres
- callback (
typeou [`~transformers.TrainerCallback`]) — Une classe TrainerCallback ou une instance de TrainerCallback. Dans le premier cas, supprime le premier membre de cette classe trouvé dans la liste des callbacks.
Supprimer un rappel de la liste actuelle de TrainerCallback.
Enregistrez les métriques dans un fichier json pour ce split, par exemple train_results.json.
Dans un environnement distribué, cela n'est effectué que pour le processus de rang 0.
Pour comprendre les métriques, veuillez lire la docstring de log_metrics(). La seule différence est que des chiffres bruts non formatés sont enregistrés dans la méthode actuelle.
Enregistrera le modèle, ce qui vous permettra de le recharger à l'aide de from_pretrained().
N'enregistrera que depuis le processus principal.
Enregistre l'état du Trainer, car Trainer.save_model n'enregistre que le tokenizer avec le modèle.
Dans un environnement distribué, cela n'est effectué que pour le processus de rang 0.
Calcule et renvoie les valeurs suivantes :
num_train_epochsnum_update_steps_per_epochnum_examplesnum_train_samplestotal_train_batch_sizesteps_in_epoch(nombre total de lots par époque)max_steps
Enregistrer le nombre d'opérations en virgule flottante effectuées pour le modèle.
train
< source >( resume_from_checkpoint: str | bool | None = Nonetrial: optuna.Trial | dict[str, Any] | None = Noneignore_keys_for_eval: list[str] | None = None ) → TrainOutput
Paramètres
- resume_from_checkpoint (
stroubool, facultatif) — Si c'est unestr, chemin local d'un point de contrôle enregistré par une instance précédente de Trainer. Si c'est unboolet vautTrue, charge le dernier point de contrôle dans args.output_dir enregistré par une instance précédente de Trainer. S'il est présent, l'entraînement reprendra à partir des états du modèle/optimiseur/planificateur chargés ici. - trial (
optuna.Trialoudict[str, Any], facultatif) — L’exécution de l’essai ou le dictionnaire d’hyperparamètres pour la recherche d’hyperparamètres. - ignore_keys_for_eval (
list[str], facultatif) — Une liste de clés dans la sortie de votre modèle (s’il s’agit d’un dictionnaire) qui doivent être ignorées lors de la collecte des prédictions pour l’évaluation pendant l’entraînement.
Retourne
TrainOutput
Objet contenant le nombre d'étapes globales, la perte d'entraînement et les métriques.
Point d'entrée principal de l'entraînement.
training_step
< source >( model: Moduleinputs: dictnum_items_in_batch: typing.Union[int, torch.Tensor, NoneType] = None ) → torch.Tensor
Paramètres
- model (
nn.Module) — Le modèle à entraîner. - inputs (
dict[str, torch.Tensor | Any]) — Les entrées et les cibles du modèle.Le dictionnaire sera dépaqueté avant d’être transmis au modèle. La plupart des modèles s’attendent à ce que les cibles soient fournies via l’argument
labels. Consultez la documentation de votre modèle pour connaître tous les arguments acceptés.
Retourne
torch.Tensor
Le tenseur de la perte d'entraînement sur ce lot.
Effectuer une étape d'entraînement sur un lot d'entrées.
Sous-classez et écrasez pour injecter un comportement personnalisé.
Seq2SeqTrainer
classe transformers.Seq2SeqTrainer
< source >( model: typing.Union[ForwardRef('PreTrainedModel'), torch.nn.Module, NoneType] = Noneargs: typing.Optional[ForwardRef('TrainingArguments')] = Nonedata_collator: typing.Optional[ForwardRef('DataCollator')] = Nonetrain_dataset: typing.Union[torch.utils.data.Dataset, ForwardRef('IterableDataset'), ForwardRef('datasets.Dataset'), NoneType] = Noneeval_dataset: typing.Union[torch.utils.data.Dataset, dict[str, torch.utils.data.Dataset], NoneType] = Noneprocessing_class: typing.Union[ForwardRef('PreTrainedTokenizerBase'), ForwardRef('BaseImageProcessor'), ForwardRef('FeatureExtractionMixin'), ForwardRef('ProcessorMixin'), NoneType] = Nonemodel_init: collections.abc.Callable[[], 'PreTrainedModel'] | None = Nonecompute_loss_func: collections.abc.Callable | None = Nonecompute_metrics: collections.abc.Callable[['EvalPrediction'], dict] | None = Nonecallbacks: list['TrainerCallback'] | None = Noneoptimizers: tuple = (None, None)preprocess_logits_for_metrics: collections.abc.Callable[[torch.Tensor, torch.Tensor], torch.Tensor] | None = None )
evaluate
< source >( eval_dataset: typing.Optional[torch.utils.data.Dataset] = Noneignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'eval'**gen_kwargs )
Paramètres
- eval_dataset (
Dataset, facultatif) — Transmettez un jeu de données si vous souhaitez remplacerself.eval_dataset. S'il s'agit d'un Dataset, les colonnes non acceptées par la méthodemodel.forward()sont automatiquement supprimées. Il doit implémenter la méthode__len__. - ignore_keys (
list[str], facultatif) — Une liste de clés de la sortie de votre modèle (s’il s’agit d’un dictionnaire) qui doivent être ignorées lors de la collecte des prédictions. - metric_key_prefix (
str, facultatif, par défaut"eval") — Préfixe facultatif à utiliser comme préfixe des clés des métriques. Par exemple, la métrique « bleu » sera nommée « eval_bleu » si le préfixe est"eval"(par défaut) - max_length (
int, facultatif) — La longueur cible maximale à utiliser lors de la prédiction avec la méthode generate. - num_beams (
int, facultatif) — Nombre de faisceaux pour la recherche par faisceaux qui sera utilisé lors de la prédiction avec la méthode generate. 1 signifie qu’aucune recherche par faisceaux n’est effectuée. - gen_kwargs —
Arguments supplémentaires spécifiques à
generate.
Exécute l'évaluation et renvoie les métriques.
Le script d’appel sera responsable de la fourniture d’une méthode pour calculer les métriques, car elles dépendent de la tâche (à passer à l’argument compute_metrics d’initialisation).
Vous pouvez également sous-classez et remplacer cette méthode pour injecter un comportement personnalisé.
predict
< source >( test_dataset: Datasetignore_keys: list[str] | None = Nonemetric_key_prefix: str = 'test'**gen_kwargs )
Paramètres
- test_dataset (
Dataset) — Jeu de données sur lequel exécuter les prédictions. S'il s'agit d'un Dataset, les colonnes non acceptées par la méthodemodel.forward()sont automatiquement supprimées. Doit implémenter la méthode__len__ - ignore_keys (
list[str], facultatif) — Une liste de clés de la sortie de votre modèle (s’il s’agit d’un dictionnaire) qui doivent être ignorées lors de la collecte des prédictions. - metric_key_prefix (
str, facultatif, par défaut"eval") — Préfixe facultatif à utiliser comme préfixe des clés des métriques. Par exemple, la métrique « bleu » sera nommée « eval_bleu » si le préfixe est"eval"(par défaut) - max_length (
int, facultatif) — La longueur cible maximale à utiliser lors de la prédiction avec la méthode generate. - num_beams (
int, facultatif) — Nombre de faisceaux pour la recherche par faisceaux qui sera utilisé lors de la prédiction avec la méthode generate. 1 signifie qu’aucune recherche par faisceaux n’est effectuée. - gen_kwargs —
Arguments supplémentaires spécifiques à
generate.
Exécute la prédiction et renvoie les prédictions ainsi que les métriques potentielles.
Selon le jeu de données et votre cas d’usage, votre jeu de test peut contenir des étiquettes. Dans ce cas, cette méthode renverra également des métriques, comme dans evaluate().
Si vos prédictions ou vos étiquettes ont des longueurs de séquence différentes (par exemple parce que vous effectuez un bourrage dynamique dans une tâche de classification de jetons), les prédictions seront bourrées (à droite) pour permettre la concaténation en un seul tableau. L’indice de bourrage est -100.
Retourne : NamedTuple Un namedtuple avec les clés suivantes :
- predictions (
np.ndarray) : Les prédictions surtest_dataset. - label_ids (
np.ndarray, facultatif) : Les étiquettes (si le jeu de données en contenait). - metrics (
dict[str, float], facultatif) : le dictionnaire potentiel des métriques (si le jeu de données contenait des étiquettes).
TrainingArguments
classe transformers.TrainingArguments
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1 )
Paramètres
- output_dir (
str, facultatif, par défaut"trainer_output") — Le répertoire de sortie où les prédictions du modèle et les points de contrôle seront écrits.
Durée d'entraînement et taille du lot
- per_device_train_batch_size (
int, facultatif, valeur par défaut 8) — La taille du lot par appareil. La taille de lot globale est calculée comme suit :per_device_train_batch_size * number_of_devicesdans les configurations multi-GPU ou distribuées. - num_train_epochs(
float, facultatif, valeur par défaut 3.0) — Nombre total d'époques d'entraînement à effectuer (si ce n'est pas un entier, la partie décimale sera exécutée en pourcentage de la dernière époque avant l'arrêt de l'entraînement). - max_steps (
int, facultatif, valeur par défaut -1) — Remplacenum_train_epochs. Si défini sur un nombre positif, nombre total d'étapes d'entraînement à effectuer. Pour un jeu de données fini, l'entraînement est répété sur le jeu de données (si toutes les données sont épuisées) jusqu'à ce quemax_stepssoit atteint. Il doit être défini sur une valeur positive lorsque le jeu de données d'entraînement n'implémente pas__len__(par exemple un jeu de données en flux), car le nombre total d'étapes ne peut alors pas être déduit et est nécessaire pour limiter la boucle d'entraînement et configurer le planificateur de taux d'apprentissage.
Taux d'apprentissage et planificateur
- learning_rate (
float, facultatif, valeur par défaut 5e-5) — Le taux d'apprentissage initial de l'optimiseur. Il s'agit généralement du taux d'apprentissage maximal lors de l'utilisation d'un planificateur avec une phase de montée en charge (warmup). - lr_scheduler_type (
strou SchedulerType, facultatif, défaut :"linear") — Le type de planificateur de taux d'apprentissage à utiliser. Voir SchedulerType pour toutes les valeurs possibles. Choix courants :- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dictoustr, facultatif, par défautNone) — Les arguments supplémentaires pour le lr_scheduler. Consultez la documentation de chaque scheduler pour les valeurs possibles. - warmup_steps (
intoufloat, facultatif, valeur par défaut 0) — Nombre d'étapes pour un réchauffement linéaire de 0 àlearning_rate. Le réchauffement aide à stabiliser l'entraînement dans la phase initiale. Peut être :- Un entier : nombre exact d'étapes de mise en route
- Un nombre à virgule flottante dans l'intervalle [0, 1) : interprété comme le ratio des étapes d'entraînement totales
Optimiseur
- optim (
stroutraining_args.OptimizerNames, facultatif, défaut :"adamw_torch"(pour torch>=2.8"adamw_torch_fused")) — L'optimiseur à utiliser. Options courantes :"adamw_torch": AdamW de PyTorch (défaut recommandé)"adamw_torch_fused": noyau AdamW fusionné"adamw_hf": implémentation d’AdamW par HuggingFace"sgd": descente de gradient stochastique avec élan"adafactor": Optimiseur économe en mémoire pour les grands modèles"adamw_8bit": AdamW 8 bits (nécessite bitsandbytes) VoirOptimizerNamespour la liste complète.
- optim_args (
str, facultatif) — Arguments facultatifs fournis aux optimiseurs tels que AnyPrecisionAdamW, AdEMAMix et GaLore. - weight_decay (
float, facultatif, valeur par défaut 0) — Coefficient de décroissance du poids appliqué par l’optimiseur (et non par la fonction de perte). Ajoute une régularisation L2 pour prévenir le surapprentissage en pénalisant les poids élevés. Exclu automatiquement des paramètres de biais et de LayerNorm. Valeurs typiques : 0.01 (standard), 0.1 (régularisation plus forte), 0.0 (aucune régularisation). - adam_beta1 (
float, facultatif, valeur par défaut 0.9) — Taux de décroissance exponentielle pour les estimations du premier moment (momentum) dans les optimiseurs basés sur Adam. Contrôle la quantité d’historique des gradients à conserver. - adam_beta2 (
float, facultatif, valeur par défaut 0.999) — Taux de décroissance exponentielle pour les estimations du second moment (variance) dans les optimiseurs basés sur Adam. Contrôle le réglage adaptatif du taux d'apprentissage. - adam_epsilon (
float, facultatif, valeur par défaut 1e-8) — Valeur epsilon pour la stabilité numérique dans les optimiseurs basés sur Adam. Empêche la division par zéro dans le dénominateur de la règle de mise à jour. - optim_target_modules (
Union[str, list[str]], facultatif) — Les modules cibles à optimiser, c'est-à-dire les noms de modules que vous souhaitez entraîner. Actuellement utilisé pour l'algorithme GaLore et l'algorithme APOLLO. Voir implémentation de GaLore et implémentation de APOLLO pour plus de détails. Vous devez vous assurer de passer un optimiseur GaLore ou APOLLO valide, par exemple l'un des suivants : “apollo_adamw”, “galore_adamw”, “galore_adamw_8bit”, “galore_adafactor”, et vous assurer que les modules cibles sont uniquement des modulesnn.Linear.
Régularisation et stabilité de l'entraînement
- gradient_accumulation_steps (
int, facultatif, valeur par défaut 1) — Nombre d'étapes de mise à jour pour accumuler les gradients avant d'effectuer un passage de rétropropagation/mise à jour. Simule des tailles de lot plus grandes sans mémoire supplémentaire. Taille de lot effective =per_device_train_batch_size × num_devices × gradient_accumulation_steps.Lors de l'utilisation de l'accumulation de gradients, un « pas » est compté comme un pas avec un passage arrière. Par conséquent, la journalisation, l'évaluation et l'enregistrement se produiront toutes les
gradient_accumulation_steps × xxx_stepexemples d'entraînement. - average_tokens_across_devices (
bool, facultatif, par défautTrue) — Indique s'il faut ou non faire la moyenne des jetons entre les appareils. Si activé, utilise all_reduce pour synchroniser num_tokens_in_batch afin de calculer précisément la perte. Référence : https://github.com/huggingface/transformers/issues/34242 - max_grad_norm (
float, facultatif, valeur par défaut 1.0) — Norme maximale du gradient pour le clipping des gradients. Appliquée après la passe arrière, avant l'étape de l'optimiseur. Empêche l'explosion des gradients en réduisant les gradients lorsque leur norme globale dépasse ce seuil. Définir à 0 pour désactiver le clipping. Valeurs typiques : 1.0 (standard), 0.5 (plus conservateur), 5.0 (moins agressif). - label_smoothing_factor (
float, facultatif, valeur par défaut 0.0) — Facteur de lissage des étiquettes pour éviter l'excès de confiance. Remplace les cibles dures 0/1 par des cibles douces : 0 devientε/num_labelset 1 devient1 - ε + ε/num_labels, où ε =label_smoothing_factor. Zéro signifie aucun lissage. Plage typique : de 0.0 à 0.1.
Entraînement en précision mixte
- bf16 (
bool, facultatif, par défautFalse) — Active l’entraînement en précision mixte bfloat16 (BF16) Généralement préféré à FP16 en raison d’une meilleure stabilité numérique et de l’absence de mise à l’échelle de la perte requise. - fp16 (
bool, facultatif, par défautFalse) — Active l’entraînement en précision mixte float16 (FP16). Envisagez d’utiliser BF16 à la place si votre matériel le prend en charge. - bf16_full_eval (
bool, facultatif, valeur par défautFalse) — Utilise la pleine précision BF16 pour l'évaluation (et non seulement la précision mixte). Plus rapide et économe en mémoire, mais peut affecter légèrement les valeurs des métriques. S'applique uniquement pendant l'évaluation. - fp16_full_eval (
bool, facultatif, valeur par défautFalse) — Utilise la pleine précision FP16 pour l'évaluation (et non seulement la précision mixte). Plus rapide et économe en mémoire, mais peut affecter légèrement les valeurs des métriques. S'applique uniquement pendant l'évaluation. - tf32 (
bool, facultatif) — Active le mode TensorFloat-32 (TF32) sur les GPU Ampere et plus récents. TF32 utilise une précision de 19 bits pour les multiplications de matrices (au lieu des 23 bits de FP32), offrant jusqu’à 8 fois plus de vitesse avec une perte de précision négligeable. La valeur par défaut dépend de la version de PyTorch. Voir la documentation TF32.
Activation Checkpointing
- activation_checkpointing (
bool, facultatif, valeur par défautFalse) — Active le checkpointing des activations pour échanger de la puissance de calcul contre de la mémoire. Réduit l’utilisation de la mémoire en effaçant les activations pendant le passage avant et en les recalculant pendant le passage arrière. Permet d’entraîner des modèles plus grands ou des tailles de lot plus élevées, au prix d’un entraînement environ 20 % plus lent. - activation_checkpointing_kwargs (
dict, facultatif, par défautNone) — Arguments nominaux transmis àactivation_checkpointing_enable().every_n_layerseffectue le checkpointing uniquement de chaque n-ième couche décodeur au lieu de toutes ;1correspond au comportement habituel tout-ou-rien, et des valeurs plus élevées rendent une partie de la mémoire au détriment de la vitesse.offloadconserve les activations sauvegardées en mémoire hôte épinglée, ce qui libèrelayers x sequence x hiddenoctets de mémoire sur l’appareil et ralentit l’étape. Toute autre clé est transmise àtorch.utils.checkpoint.checkpoint. - gradient_checkpointing (
bool, facultatif) — Alias obsolète deactivation_checkpointing, sera supprimé dans la v6. - gradient_checkpointing_kwargs (
dict, facultatif) — Alias obsolète deactivation_checkpointing_kwargs, sera supprimé dans la v6.
Compilation
- torch_compile (
bool, facultatif, valeur par défautFalse) — Compile le modèle à l’aide detorch.compile()de PyTorch 2.0 pour un entraînement plus rapide. Peut offrir un gain de vitesse de 20 à 50 % sans modification du code. Utilise les paramètres de compilation par défaut sauf sitorch_compile_backendoutorch_compile_modesont spécifiés. - torch_compile_backend (
str, facultatif) — Backend pourtorch.compile(). Si défini, active automatiquementtorch_compile. Les options incluent"inductor"(par défaut),"aot_eager","cudagraphs". Les backends varient selon la version de PyTorch - consultez la documentation de PyTorch pour les options disponibles. - torch_compile_mode (
str, facultatif) — Mode de compilation pourtorch.compile(). S'il est défini, active automatiquementtorch_compile. Options :"default","reduce-overhead"(minimiser la surcharge Python),"max-autotune"(optimisation agressive, temps de compilation plus long).
Kernels
- use_liger_kernel (
bool, facultatif, valeur par défautFalse) — Active les optimisations Liger Kernel. Augmente le débit multi-GPU d’environ 20 % et réduit l’utilisation de la mémoire d’environ 60 %. Compatible avec Flash Attention, FSDP et DeepSpeed. Prend actuellement en charge les modèles Llama, Mistral, Mixtral et Gemma. - liger_kernel_config (
Optional[dict], facultatif) — Configuration pour Liger Kernel. Transmise en tant que kwargs à_apply_liger_kernel_to_instance(). Les options incluent généralement :"rope","swiglu","cross_entropy","fused_linear_cross_entropy","rms_norm". SiNone, utilise la configuration par défaut.
Optimisations supplémentaires
- use_cache (
bool, facultatif, valeur par défautFalse) — Indique s'il faut activer le cache pour le modèle. Pour l'entraînement, cela n'est généralement pas nécessaire, à l'exception de certaines méthodes PEFT qui utilisentpast_key_values. - neftune_noise_alpha (
Optional[float]) — Si la valeur n'est pasNone, les embeddings de bruit NEFTune seront activés. Cela peut améliorer considérablement les performances du modèle pour le fine-tuning par instructions. Consultez le paper original et le code original. Prend en charge lesPreTrainedModelde transformers ainsi quePeftModelde peft. Le paper original utilisait des valeurs comprises dans l'intervalle [5.0, 15.0]. - torch_empty_cache_steps (
int, facultatif) — Nombre d’étapes à attendre avant d’appelertorch.<device>.empty_cache(). Si cette valeur n’est pas définie ou est définie sur None, le cache ne sera pas vidé. Cela peut aider à éviter les erreurs de mémoire insuffisante CUDA en réduisant l’utilisation de pointe de la VRAM, au prix d’une performance environ 10 % plus lente. - auto_find_batch_size (
bool, facultatif, valeur par défautFalse) — Indique s'il faut déterminer automatiquement une taille de lot d'entraînement qui tient en mémoire par décroissance exponentielle, afin d'éviter les erreurs CUDA Out-of-Memory. La taille de lot d'évaluation n'est pas ajustée.
Journalisation et suivi de l'entraînement
- logging_strategy (
strou IntervalStrategy, facultatif, défaut :"steps") — Stratégie de journalisation à adopter pendant l'entraînement. Les valeurs possibles sont :"no": Aucune journalisation n’est effectuée pendant l’entraînement."epoch": La journalisation est effectuée à la fin de chaque époque."steps": La journalisation est effectuée toutes leslogging_steps.
- logging_steps (
intoufloat, facultatif, par défaut 500) — Nombre d'étapes de mise à jour entre deux journaux silogging_strategy="steps". Doit être un entier ou un nombre décimal dans l'intervalle[0,1). S'il est inférieur à 1, il sera interprété comme le ratio des étapes d'entraînement totales. - logging_first_step (
bool, facultatif, valeur par défautFalse) — Indique s'il faut journaliser la premièreglobal_stepou non. - log_on_each_node (
bool, facultatif, valeur par défautTrue) — Lors d’une formation distribuée multi-nœuds, indique s’il faut journaliser à l’aide delog_levelune fois par nœud, ou uniquement sur le nœud principal. - logging_nan_inf_filter (
bool, facultatif, valeur par défautTrue) — Filtre les pertes NaN et Inf lors de la journalisation. SiTrue, remplace les pertes d’entraînement NaN/Inf par la moyenne des pertes valides récentes et exclut les lots NaN/Inf (par exemple, les lots sans jetons d’étiquette) de la perte d’évaluation. N’affecte pas le calcul des gradients, uniquement la journalisation. - include_num_input_tokens_seen (
Optional[Union[str, bool]], facultatif, valeur par défaut “no”) — Indique s'il faut suivre le nombre de jetons d'entrée vus. Doit être l'une des valeurs [“all”, “non_padding”, “no”] ou une valeur booléenne qui correspond à “all” ou “no”. Peut être plus lent en formation distribuée, car des opérations de collecte doivent être appelées.
Journalisation
- log_level (
str, facultatif, par défautpassive) — Niveau de journalisation pour le processus principal. Options :"debug","info","warning","error","critical"ou"passive"(ne modifie pas le niveau de journalisation actuel de Transformers, qui est"warning"par défaut) - log_level_replica (
str, facultatif, par défaut"warning") — Niveau de journalisation pour les processus répliques dans l’entraînement distribué. Les options sont les mêmes que pourlog_level. - disable_tqdm (
bool, facultatif) — Désactive les barres de progression tqdm. La valeur par défaut estTruesilog_levelest warning ou inférieur,Falsesinon.
Intégration du suivi des expériences
- report_to (
stroulist[str], facultatif, par défaut"none") — La liste des intégrations vers lesquelles envoyer les résultats et les journaux. Les plateformes prises en charge sont"azure_ml","clearml","codecarbon","comet_ml","dagshub","dvclive","flyte","mlflow","swanlab","tensorboard","trackio"et"wandb". Utilisez"all"pour envoyer les rapports à toutes les intégrations installées, et"none"pour ne pas utiliser d'intégration. - run_name (
str, facultatif) — Un descripteur pour l'exécution. Utilisé généralement pour la journalisation trackio, wandb, mlflow, comet et swanlab. - project (
str, facultatif, par défaut"huggingface") — Le nom du projet à utiliser pour la journalisation. Actuellement, utilisé uniquement par Trackio. - trackio_space_id (
strouNone, facultatif, par défautNone) — L’identifiant de l’espace Hugging Face à utiliser pour la journalisation en direct avec Trackio via un espace basé sur Gradio. Il doit s’agir d’un nom d’espace complet comme'username/reponame'ou'orgname/reponame', ou simplement de'reponame'(l’espace est alors créé dans l’espace de noms de l’utilisateur actuellement connecté). Si la valeur estNone, les métriques sont journalisées uniquement dans un répertoire local (aucun espace sur le Hub). Cet espace Gradio dispose d’un accès en lecture et écriture au Bucket Trackio, ce qui est souhaitable lorsque l’entraînement est en cours—par exemple lors de la reprise d’une exécution partielle ou de l’agrégation des journaux provenant de plusieurs machines. L’espace sera public sauf si vous définissezhub_private_repo=Trueou si le paramètre par défaut de votre organisation est de créer des espaces privés. - trackio_bucket_id (
strouNone, facultatif, par défautNone) — Identifiant de Bucket Hugging Face facultatif pour Trackio. S'il n'est pas défini, Trackio en dérive un. Utilisé en conjonction avec un Space Gradio (trackio_space_id) et lors du déploiement d'un Space statique (trackio_static_space_idn'est pasFalse). - trackio_static_space_id (
str,FalseouNone, facultatif, valeur par défautNone) — L’identifiant de l’espace Hugging Face à utiliser pour l’espace statique créé après la fin de l’entraînement. Il doit s’agir d’un nom d’espace complet comme'username/reponame'ou'orgname/reponame', ou simplement de'reponame'(l’espace est créé dans l’espace de noms de l’utilisateur actuellement connecté). Si la valeur est False, aucun espace statique ne sera créé. Si la valeur est None et que le modèle est poussé sur le Hub, un espace statique sera créé avec un nom par défaut et un lien vers celui-ci sera ajouté à la carte du modèle. L’espace sera public, sauf si vous définissezhub_private_repo=Trueou si la valeur par défaut de votre organisation est de créer des espaces privés.
Évaluation
- eval_strategy (
strou IntervalStrategy, facultatif, défaut :"no") — Quand exécuter l'évaluation. Options :"no": aucune évaluation pendant l’entraînement"steps": Évaluer toutes leseval_steps"epoch": Évaluer à la fin de chaque époque
- eval_steps (
intoufloat, facultatif) — Nombre d'étapes de mise à jour entre deux évaluations sieval_strategy="steps". Par défaut, prend la même valeur quelogging_stepssi non défini. Doit être un entier ou un nombre flottant dans l'intervalle[0,1). S'il est inférieur à 1, il sera interprété comme le ratio des étapes d'entraînement totales. - eval_delay (
float, facultatif) — Nombre d'époques ou d'étapes à attendre avant que la première évaluation puisse être effectuée, en fonction de eval_strategy. - per_device_eval_batch_size (
int, facultatif, valeur par défaut : 8) — Taille du lot par cœur d'accélérateur/CPU pour l'évaluation. - prediction_loss_only (
bool, facultatif, valeur par défautFalse) — Lors de l'évaluation et de la génération de prédictions, ne renvoie que la perte. - eval_on_start (
bool, facultatif, valeur par défautFalse) — Indique s'il faut effectuer une étape d'évaluation (vérification de cohérence) avant l'entraînement afin de s'assurer que les étapes de validation fonctionnent correctement. - eval_do_concat_batches (
bool, facultatif, valeur par défautTrue) — Indique s'il faut concaténer récursivement les entrées, pertes, étiquettes et prédictions entre les lots. SiFalse, ils sont stockés sous forme de listes, chaque lot étant conservé séparément. - eval_use_gather_object (
bool, facultatif, valeur par défautFalse) — Indique s'il faut exécuter récursivement la collecte d'objets dans une liste/tuple/dictionnaire imbriqué d'objets à partir de tous les appareils. Cette option ne doit être activée que si les utilisateurs ne retournent pas uniquement des tenseurs, et PyTorch la décourage activement. Cela est utile lorsque la structure des étiquettes est non standard, comme dans les tâches de vision par ordinateur. - eval_accumulation_steps (
int, facultatif) — Nombre d'étapes de prédiction à accumuler pour les tenseurs de sortie avant de déplacer les résultats vers le CPU. Si non défini, l'ensemble des prédictions est accumulé sur l'accélérateur de l'appareil avant d'être déplacé vers le CPU (plus rapide mais nécessite plus de mémoire).
Calcul des métriques
- include_for_metrics (
list[str], facultatif, défaut[]) — Inclure des données supplémentaires dans lacompute_metricsfonction si nécessaire pour le calcul des métriques. Options possibles à ajouter à lainclude_for_metricsliste :"inputs": Données d’entrée transmises au modèle, destinées au calcul des métriques dépendantes des entrées."loss": Valeurs de perte calculées lors de l'évaluation, destinées au calcul de métriques dépendantes de la perte.
- batch_eval_metrics (
bool, facultatif, valeur par défautFalse) — Si défini surTrue, l’évaluation appellera compute_metrics à la fin de chaque lot pour accumuler des statistiques plutôt que de stocker tous les logits d’évaluation en mémoire. Lorsqu’il est défini surTrue, vous devez passer une fonction compute_metrics qui prend un argument booléencompute_result; lorsqu’on lui passeTrue, elle déclenchera les statistiques globales finales à partir des statistiques de niveau lot que vous avez accumulées sur l’ensemble d’évaluation.
Point de contrôle et sauvegarde
- save_only_model (
bool, facultatif, valeur par défautFalse) — Enregistre uniquement les poids du modèle, sans l’état de l’optimiseur, du planificateur ou du générateur aléatoire. Réduit considérablement la taille du point de contrôle, mais empêche la reprise de l’entraînement depuis ce point de contrôle. À utiliser lorsque vous avez uniquement besoin du modèle entraîné pour l’inférence, et non pour une formation continue. Vous ne pouvez charger le modèle qu’avecfrom_pretrainedsi cette option est définie surTrue. - save_strategy (
strouSaveStrategy, facultatif, défaut :"steps") — Stratégie d'enregistrement des points de contrôle à adopter pendant l'entraînement. Les valeurs possibles sont :"no": aucune sauvegarde n’est effectuée pendant l’entraînement."epoch": l'enregistrement est effectué à la fin de chaque époque."steps": l'enregistrement est effectué toutes lessave_steps."best": l’enregistrement est effectué chaque fois qu’une nouvelle valeur debest_metricest atteinte.
- save_steps (
intoufloat, facultatif, par défaut 500) — Nombre d'étapes de mise à jour avant l'enregistrement de deux points de contrôle sisave_strategy="steps". Doit être un entier ou un nombre flottant compris dans l'intervalle[0,1). S'il est inférieur à 1, il sera interprété comme le ratio des étapes d'entraînement totales. - save_on_each_node (
bool, facultatif, valeur par défautFalse) — Lors d’une formation distribuée multi-nœuds, indique s’il faut enregistrer les modèles et les points de contrôle sur chaque nœud, ou uniquement sur le nœud principal. Cette option ne doit pas être activée si les différents nœuds utilisent le même stockage, car les fichiers seraient enregistrés avec les mêmes noms sur chaque nœud. - save_total_limit (
int, facultatif) — Nombre maximal de points de contrôle à conserver. Supprime les points de contrôle plus anciens dansoutput_dir. Lorsqueload_best_model_at_end=True, le meilleur point de contrôle est toujours conservé, ainsi que les plus récents. Par exemple,save_total_limit=5conserve les 4 plus récents ainsi que le meilleur - enable_jit_checkpoint (
bool, facultatif, valeur par défautFalse) — Active le checkpointing Just-In-Time lors du signal SIGTERM pour une terminaison propre sur les charges de travail préemptibles. Important : Configurez la période d’arrêt propre de votre orchestrateur pour laisser un temps suffisant. Pour Kubernetes, définissezterminationGracePeriodSeconds(la valeur par défaut de 30 s est généralement insuffisante). Pour Slurm, utilisez--signal=TERM@<seconds>. La période de grâce requise doit être ≥ au temps de la plus longue itération + au temps de sauvegarde du checkpoint.
Intégration avec Hugging Face Hub
- push_to_hub (
bool, facultatif, par défautFalse) — Indique s'il faut pousser le modèle sur le Hub à chaque fois que le modèle est enregistré. Si cette option est activée,output_dirdevient un répertoire git synchronisé avec le dépôt (déterminé parhub_model_id) et le contenu est poussé à chaque fois qu'un enregistrement est déclenché (selon votresave_strategy). L'appel de save_model() déclenche également un push. - hub_token (
str, facultatif) — Le jeton à utiliser pour pousser le modèle sur le Hub. Par défaut, il s’agit du jeton du dossier de cache obtenu avechf auth login. - hub_private_repo (
bool, facultatif) — Indique si le dépôt doit être privé. Si la valeur estNone(par défaut), le dépôt sera public, sauf si le défaut de l’organisation est le mode privé. Cette valeur est ignorée si le dépôt existe déjà. En cas d’envoi de rapports vers Trackio avec le déploiement sur Hugging Face Spaces activé, la même logique détermine si l’espace est privé. - hub_model_id (
str, facultatif) — Le nom du dépôt à garder synchronisé avec le output_dir local. Il peut s’agir d’un simple identifiant de modèle, auquel cas le modèle sera poussé dans votre espace de noms. Sinon, il doit s’agir du nom complet du dépôt, par exemple"user_name/model", ce qui vous permet de pousser vers une organisation dont vous êtes membre avec"organization_name/model". La valeur par défaut estuser_name/output_dir_name, output_dir_name étant le nom deoutput_dir. - hub_strategy (
strouHubStrategy, facultatif, défaut :"every_save") — Définit ce qui doit être poussé vers le Hub et quand. Options :"end": Pousse uniquement à la fin de l'entraînement"every_save": Pousse à chaque sauvegarde (asynchrone pour ne pas bloquer l’entraînement)"checkpoint": comme"every_save"mais pousse le dernier point de contrôle dans le sous-dossier"last-checkpoint"pour une reprise facile"all_checkpoints": Pousse tous les points de contrôle à mesure qu’ils apparaissent
- hub_always_push (
bool, facultatif, valeur par défautFalse) — Sauf si cette valeur estTrue, leTrainerignore l’envoi d’un point de contrôle si l’envoi précédent n’est pas terminé. - hub_revision (
str, facultatif) — La révision à utiliser lors de la publication sur le Hub. Peut être un nom de branche, un tag ou un hash de commit.
Suivi du meilleur modèle
- load_best_model_at_end (
bool, facultatif, valeur par défautFalse) — Charge le meilleur point de contrôle à la fin de l’entraînement. Nécessite queeval_strategysoit défini. Lorsqu’il est activé, le meilleur point de contrôle est toujours enregistré (voirsave_total_limit).Lorsque `True`, `save_strategy` doit correspondre à `eval_strategy` (sauf si `save_strategy` est `"best"`), et si `"steps"` est utilisé, `save_steps` doit être un multiple de `eval_steps`. - metric_for_best_model (
str, facultatif) — Métrique à utiliser pour comparer les modèles lorsqueload_best_model_at_end=True. Doit être un nom de métrique renvoyé par l'évaluation, avec ou sans le préfixe"eval_". La valeur par défaut est"loss". Si vous définissez ce paramètre,greater_is_betteraura par défaut la valeurTrue, sauf si le nom se termine par"loss". Exemples :"accuracy","f1","eval_bleu". - greater_is_better (
bool, facultatif) — Indique si des valeurs de métrique plus élevées sont préférables. La valeur par défaut est basée surmetric_for_best_model:Truesi le nom de la métrique ne se termine pas par"loss",Falsesinon.
Reprise de l'entraînement
- ignore_data_skip (
bool, facultatif, valeur par défautFalse) — Lors de la reprise de l’entraînement, ignore le saut rapide dans le jeu de données pour atteindre l’état précédent. SiTrue, l’entraînement démarre depuis le début du jeu de données (reprise plus rapide, mais les résultats ne correspondront pas à l’entraînement interrompu). SiFalse, les données déjà vues sont ignorées (reprise plus lente, mais poursuite exacte). - restore_callback_states_from_checkpoint (
bool, facultatif, valeur par défautFalse) — Restaure les états des callbacks depuis le checkpoint lors de la reprise. SiTrue, les callbacks passés au Trainer seront remplacés s’ils existent dans le checkpoint.
Reproductibilité
- full_determinism (
bool, facultatif, valeur par défautFalse) — SiTrue, enable_full_determinism() est appelé à la place de set_seed() pour garantir des résultats reproductibles lors de l’entraînement distribué. Important : cela aura un impact négatif sur les performances, il ne faut donc l’utiliser que pour le débogage. - seed (
int, facultatif, par défaut 42) — Graine aléatoire qui sera définie au début de l’entraînement. Pour garantir la reproductibilité entre les exécutions, utilisez la fonction~Trainer.model_initpour instancier le modèle s’il possède des paramètres initialisés aléatoirement. - data_seed (
int, facultatif) — Graine aléatoire à utiliser avec les échantillonneurs de données. Si elle n’est pas définie, les générateurs aléatoires pour l’échantillonnage de données utiliseront la même graine queseed. Cela permet de garantir la reproductibilité de l’échantillonnage des données, indépendamment de la graine du modèle.
Configuration matérielle
- use_cpu (
bool, facultatif, par défautFalse) — Indique s'il faut utiliser le CPU. Si défini sur False, nous utiliserons le dispositif/le backend torch disponible.
Configuration d'Accelerate
- accelerator_config (
str,dict, ouAcceleratorConfig, facultatif) — Configuration de l'intégration interne d'Accelerate. Peut être :- Chemin vers le fichier de configuration JSON :
"accelerator_config.json" - Dictionnaire avec les options de configuration
- instance de
AcceleratorConfigOptions principales : split_batches(bool, par défautFalse) : Indique s'il faut diviser les lots entre les appareils. SiTrue, la taille réelle du lot est identique sur tous les appareils (le total doit être divisible par num_processes). SiFalse, chaque appareil reçoit la taille de lot spécifiée.dispatch_batches(bool) : siTrue, seul le processus principal itère sur le dataloader et distribue les lots aux appareils. La valeur par défaut estTruepourIterableDataset,Falsesinon.even_batches(bool, par défautTrue) : Duplique des échantillons depuis le début du jeu de données pour garantir que tous les travailleurs reçoivent des lots de taille égale.use_seedable_sampler(bool, par défautTrue) : Utilise un échantillonneur aléatoire entièrement seedable pour la reproductibilité.use_configured_state(bool, par défautFalse) : Utilise un étatAcceleratorState/PartialStatepréinitialisé au lieu d’en créer un nouveau. Peut causer des problèmes lors de l’ajustement des hyperparamètres.
- Chemin vers le fichier de configuration JSON :
- parallelism_config (
ParallelismConfig, facultatif) — Configuration du parallélisme pour l’exécution d’entraînement. Nécessite Accelerate1.10.1
Dataloader
- dataloader_drop_last (
bool, facultatif, valeur par défautFalse) — Indique s'il faut supprimer le dernier lot incomplet (si la longueur du jeu de données n'est pas divisible par la taille du lot) ou non. - dataloader_num_workers (
int, facultatif, valeur par défaut 0) — Nombre de sous-processus à utiliser pour le chargement des données (PyTorch uniquement). 0 signifie que les données seront chargées dans le processus principal. - dataloader_pin_memory (
bool, facultatif, valeur par défautTrue) — Indique si vous souhaitez épingler la mémoire dans les chargeurs de données ou non. La valeur par défaut estTrue. - dataloader_persistent_workers (
bool, facultatif, valeur par défautFalse) — Si True, le chargeur de données ne mettra pas fin aux processus de travail après qu’un jeu de données a été consommé une fois. Cela permet de maintenir les instances Dataset des travailleurs en vie. Peut potentiellement accélérer l’entraînement, mais augmentera l’utilisation de la RAM. La valeur par défaut seraFalse. - dataloader_prefetch_factor (
int, facultatif) — Nombre de lots chargés à l’avance par chaque worker. 2 signifie qu’il y aura au total 2 * num_workers lots préchargés sur l’ensemble des workers. - dataloader_multiprocessing_context (
str, facultatif) — Méthode de démarrage du multiprocessing à utiliser pour les workers de chargement des données ("fork","spawn"ou"forkserver"). Par défaut, la méthode de démarrage par défaut de PyTorch est utilisée, sauf sur MPS avecdataloader_num_workers > 1, où la valeur par défaut est"fork". Utilisez"spawn"lors du streaming depuis des sources dont les objets ne sont pas sûrs pour le fork (par ex. HDFS viapyarrow). Sous"spawn", tout code personnalisé decollate_fnou de jeu de données doit être importable au niveau du module (pas de lambdas/closures). - dataloader_in_order (
bool, facultatif, valeur par défautTrue) — SiTrue, le chargeur de données produit les lots dans l'ordre où les workers ont été dispatchés. DéfinissezFalsepour produire les lots dès qu'ils sont prêts, ce qui peut réduire la latence de fin pour les workloads de streamingIterableDataset. Nécessite PyTorch >= 2.6. - remove_unused_columns (
bool, facultatif, valeur par défautTrue) — Indique s'il faut supprimer automatiquement les colonnes non utilisées par la méthode forward du modèle. - label_names (
list[str], facultatif) — La liste des clés de votre dictionnaire d’entrées qui correspondent aux étiquettes. Par défaut, elle sera la liste des noms d’arguments acceptés par le modèle contenant le mot « label », sauf si le modèle utilisé est l’un desXxxForQuestionAnswering, auquel cas elle inclura également les clés["start_positions", "end_positions"]. Vous ne devez spécifierlabel_namesque si vous utilisez des noms d’étiquettes personnalisés ou si leforwardde votre modèle consomme plusieurs tenseurs d’étiquettes (par exemple, pour la QA extractive). - train_sampling_strategy (
str, facultatif, par défaut"random") — Le sampler à utiliser pour le dataloader d'entraînement. Les valeurs possibles sont :"random": utiliseRandomSampler(par défaut)."sequential": utiliseSequentialSampler."group_by_length": UtiliseLengthGroupedSamplerpour regrouper les échantillons de longueur approximativement identique (afin de minimiser le bourrage et d’être plus efficace)."batch_rebalance": UtiliseBatchRebalanceSamplerpour équilibrer le coût des jetons de bourrage entre les appareils et les étapes d'accumulation de gradient au sein de chaque lot effectif, réduisant ainsi le gaspillage de bourrage et la mémoire de pointe par rapport à"group_by_length". Actuellement, seul l'entraînement parallèle de données est pris en charge (le parallélisme de tenseurs n'est pas encore pris en charge).
Remarque : lors de l'utilisation d'un
IterableDataset, cet argument est ignoré. - length_column_name (
str, facultatif, par défaut"length") — Nom de la colonne contenant les longueurs précalculées. Si la colonne existe, le regroupement par longueur utilisera ces valeurs plutôt que de les calculer au démarrage de l’entraînement. Ignoré sauf sitrain_sampling_strategyest"group_by_length"ou"batch_rebalance"et que le jeu de données est une instance deDataset.
DDP (DistributedDataParallel)
- ddp_find_unused_parameters (
bool, facultatif) — Lors de l’utilisation de l’entraînement distribué, la valeur du drapeaufind_unused_parameterstransmis àDistributedDataParallel. La valeur par défaut estFalsesi le gradient checkpointing est utilisé,Truesinon. - ddp_bucket_cap_mb (
int, facultatif) — Lors de l’utilisation de l’entraînement distribué, la valeur du drapeaubucket_cap_mbtransmis àDistributedDataParallel. - ddp_broadcast_buffers (
bool, facultatif) — Lors de l'utilisation de l'entraînement distribué, la valeur du drapeaubroadcast_bufferspassée àDistributedDataParallel. Sera par défautFalsesi le gradient checkpointing est utilisé,Truesinon. - ddp_static_graph (
bool, facultatif) — Lors de l’utilisation de l’entraînement distribué, la valeur du drapeaustatic_graphtransmis àDistributedDataParallel. - ddp_backend (
str, facultatif) — Le backend à utiliser pour l'entraînement distribué. Doit être l'un des suivants :"nccl","mpi","xccl","gloo","hccl". - ddp_timeout (
int, facultatif, valeur par défaut 1800) — Délai d’attente pour les appels àtorch.distributed.init_process_group, utilisé pour éviter les dépassements de délai des sockets GPU lors de l’exécution d’opérations lentes dans des exécutions distribuées. Veuillez consulter la documentation PyTorch pour plus d’informations.
FSDP (Fully Sharded Data Parallel)
- fsdp (
bool, facultatif, par défautNone) — Active PyTorch Fully Sharded Data Parallel (FSDP) pour l’entraînement distribué. PassezTruepour activer FSDP. - fsdp_config (
strordict, optional) — Configuration settings for whenfsdpis enabled. Pass a path to a JSON config file, such asfsdp_config.json, or an already-loaded dict.Clés prises en charge :
- version (
int, facultatif, par défaut2) : La version de FSDP à utiliser (2pour FSDP2,1pour le FSDP1 legacy). - reshard_after_forward (
bool, facultatif, par défautTrue) : Indique s'il faut re-resshader les paramètres après le passage avant. Définissez-le surFalsepour conserver les paramètres regroupés entre les passages avant et arrière, ce qui évite le re-all-gather et entraîne une consommation mémoire de pointe plus élevée. - cpu_offload (
bool, facultatif, par défautFalse) : Décharge les paramètres et les gradients sur le CPU lorsqu'ils ne sont pas utilisés afin d'économiser la mémoire GPU. - activation_checkpointing (
bool, facultatif, par défautFalse) : À définir surTruepour réduire la mémoire en recalculant les activations lors de la passe arrière. Lors de l'utilisation de FSDP, privilégiez cette option par rapport à l'argument d'entraînementactivation_checkpointing, qui introduit un all-gather redondant lors de la passe arrière. - cpu_ram_efficient_loading (
bool, facultatif, par défautFalse) : À définir surTruepour charger le point de contrôle préentraîné uniquement sur le premier processus. Les autres processus démarrent avec des poids vides et reçoivent les poids par diffusion. - state_dict_type (
str, facultatif, par défaut"FULL_STATE_DICT") : Format de point de contrôle :"FULL_STATE_DICT"(fichier unique compatible HF) ou"SHARDED_STATE_DICT"(un fichier par rang, plus rapide pour les grands modèles). - auto_wrap_policy (
str, facultatif, par défaut"TRANSFORMER_BASED_WRAP") : Politique d’auto-wrap à utiliser. Choisissez"TRANSFORMER_BASED_WRAP","SIZE_BASED_WRAP"ou"NO_WRAP". - transformer_layer_cls_to_wrap (
list[str], facultatif) : Noms des classes de couches Transformer (sensibles à la casse) à envelopper, par exempleLlamaDecoderLayer. Généralement inutile : la politique d’enveloppement retombe sur_no_split_modulesdu modèle, qui couvre la plupart des modèles transformers. - min_num_params (
int, facultatif, valeur par défaut0) : Nombre minimal de paramètres par module pour l’auto-wrapping basé sur la taille (utilisé avecauto_wrap_policy="SIZE_BASED_WRAP"). - xla (
bool, facultatif, par défautFalse) : Indique s'il faut utiliser l'entraînement PyTorch/XLA Fully Sharded Data Parallel. Expérimental. - xla_fsdp_settings (
dict, facultatif) : Dictionnaire des paramètres d’emballage XLA FSDP. Pour la liste complète des options, voir le code source de XLA FSDP. - xla_fsdp_grad_ckpt (
bool, facultatif, valeur par défautFalse) : À définir surTruepour utiliser le gradient checkpointing sur chaque couche imbriquée enveloppée par XLA FSDP. Nécessitexla=Trueet une politique d’enveloppement automatique (min_num_paramsoutransformer_layer_cls_to_wrap).
- version (
DeepSpeed
- deepspeed (
stroudict, facultatif) — Active l'intégration DeepSpeed. La valeur est soit :- Chemin vers le fichier de configuration JSON de DeepSpeed :
"ds_config.json" - Configuration chargée en tant que dictionnaire
Si vous utilisez l’initialisation ZeRO, instanciez votre modèle après l’initialisation de
TrainingArguments, sinon ZeRO ne sera pas appliqué.
- Chemin vers le fichier de configuration JSON de DeepSpeed :
Débogage et profilage (expérimental)
- debug (
strou liste deDebugOption, facultatif, par défaut"") — Active une ou plusieurs fonctionnalités de débogage. Il s'agit d'une fonctionnalité expérimentale. Les options possibles sont :- “underflow_overflow” : détecte les dépassements dans les entrées/sorties du modèle et signale les derniers cadres ayant conduit à l'événement
- “tpu_metrics_debug” : affiche les métriques de débogage sur TPU
- skip_memory_metrics (
bool, facultatif, valeur par défautTrue) — Indique s'il faut ignorer l'ajout des rapports du profilage mémoire aux métriques. Cette opération est ignorée par défaut car elle ralentit la vitesse d'entraînement et d'évaluation.
Drapeaux de script externe (non utilisés par Trainer)
- do_train (
bool, facultatif, par défautFalse) — Indique s'il faut exécuter l'entraînement ou non. Cet argument n'est pas utilisé directement par Trainer ; il est destiné à être utilisé par vos scripts d'entraînement/évaluation. - do_eval (
bool, facultatif) — Indique s'il faut ou non exécuter une évaluation sur le jeu de validation. Sera défini àTruesieval_strategyest différent de"no". Cet argument n'est pas utilisé directement par Trainer, il est destiné à être utilisé par vos scripts d'entraînement/évaluation. - do_predict (
bool, facultatif, par défautFalse) — Indique s'il faut exécuter des prédictions sur le jeu de test ou non. Cet argument n'est pas utilisé directement par Trainer, il est destiné à être utilisé par vos scripts d'entraînement/évaluation. - resume_from_checkpoint (
str, facultatif) — Le chemin vers un dossier contenant un point de contrôle valide pour votre modèle. Cet argument n’est pas utilisé directement par Trainer, il est destiné à être utilisé par vos scripts d’entraînement/évaluation.
Classe de configuration permettant de contrôler tous les aspects de l’entraînement du modèle avec le Trainer. TrainingArguments centralise tous les hyperparamètres, les réglages d’optimisation, les préférences de journalisation et les choix d’infrastructure nécessaires à l’entraînement.
HfArgumentParser peut convertir cette classe en arguments argparse qui peuvent être spécifiés sur la ligne de commande.
Retourne le niveau de journalisation à utiliser en fonction de savoir si ce processus est le processus principal du nœud 0, le processus principal d'un nœud non-0, ou un processus non principal.
Pour le processus principal, le niveau de journalisation est par défaut celui défini (logging.WARNING si vous n’avez rien fait), sauf s’il est remplacé par l’argument log_level.
Pour les processus répliques, le niveau de journalisation est par défaut logging.WARNING, sauf s'il est remplacé par l'argument log_level_replica.
Le choix entre les paramètres du processus principal et du processus réplique est effectué en fonction de la valeur de retour de should_log.
Obtenir le nombre d'étapes utilisées pour un réchauffement linéaire.
main_process_first
< source >( local = Truedesc = 'work' )
Paramètres
- local (
bool, facultatif, par défautTrue) — siTrue, « first » désigne le processus de rang 0 de chaque nœud ; siFalse, « first » désigne le processus de rang 0 du nœud de rang 0. Dans un environnement multi-nœuds avec un système de fichiers partagé, vous voudrez probablement utiliserlocal=Falseafin que seul le processus principal du premier nœud effectue le traitement. En revanche, si le système de fichiers n’est pas partagé, le processus principal de chaque nœud devra effectuer le traitement, ce qui correspond au comportement par défaut. - desc (
str, facultatif, par défaut"work") — description de la tâche à utiliser dans les journaux de débogage
Un gestionnaire de contexte pour l’environnement distribué de torch, permettant d’exécuter une tâche sur le processus principal tout en bloquant les répliques, puis de les libérer une fois la tâche terminée.
Un tel usage concerne la fonctionnalité map de datasets, qui, pour être efficace, doit être exécutée une seule fois sur le processus principal, puis, une fois terminée, enregistre une version mise en cache des résultats, qui est ensuite chargée automatiquement par les répliques.
set_dataloader
< source >( train_batch_size: int = 8eval_batch_size: int = 8drop_last: bool = Falsenum_workers: int = 0pin_memory: bool = Truepersistent_workers: bool = Falseprefetch_factor: int | None = Nonemultiprocessing_context: str | None = Nonein_order: bool = Trueauto_find_batch_size: bool = Falseignore_data_skip: bool = Falsesampler_seed: int | None = None )
Paramètres
- drop_last (
bool, facultatif, valeur par défautFalse) — Indique s'il faut supprimer le dernier lot incomplet (si la longueur du jeu de données n'est pas divisible par la taille du lot) ou non. - num_workers (
int, facultatif, valeur par défaut 0) — Nombre de sous-processus à utiliser pour le chargement des données (PyTorch uniquement). 0 signifie que les données seront chargées dans le processus principal. - pin_memory (
bool, facultatif, valeur par défautTrue) — Indique si vous souhaitez épingler la mémoire dans les chargeurs de données ou non. La valeur par défaut estTrue. - persistent_workers (
bool, facultatif, valeur par défautFalse) — Si True, le chargeur de données ne mettra pas fin aux processus de travail après qu’un jeu de données a été consommé une fois. Cela permet de maintenir les instances de Dataset des travailleurs en vie. Peut potentiellement accélérer l’entraînement, mais augmentera l’utilisation de la RAM. La valeur par défaut seraFalse. - prefetch_factor (
int, facultatif) — Nombre de lots chargés à l’avance par chaque travailleur. 2 signifie qu’il y aura au total 2 * num_workers lots préchargés sur l’ensemble des travailleurs. - multiprocessing_context (
str, facultatif) — Méthode de démarrage du multiprocessing à utiliser pour les workers de chargement de données ("fork","spawn"ou"forkserver"). Par défaut, la méthode de démarrage par défaut de PyTorch est utilisée. Utilisez"spawn"lors du streaming depuis des sources dont les objets ne sont pas sûrs pour le fork (par ex. HDFS viapyarrow). Sous"spawn", tout code personnalisé decollate_fnou de jeu de données doit être importable au niveau du module (pas de lambdas/closures). - in_order (
bool, facultatif, par défautTrue) — SiTrue, le chargeur de données fournit les lots dans l’ordre où les workers ont été dispatchés. DéfinissezFalsepour fournir les lots dès qu’ils sont prêts, ce qui peut réduire la latence de fin pour les charges de travail de streamingIterableDataset. Nécessite PyTorch >= 2.6. - auto_find_batch_size (
bool, facultatif, valeur par défautFalse) — Indique s'il faut déterminer automatiquement une taille de lot qui tient en mémoire par décroissance exponentielle, afin d'éviter les erreurs CUDA Out-of-Memory. Nécessite l'installation de accelerate (pip install accelerate) - ignore_data_skip (
bool, facultatif, valeur par défautFalse) — Lors de la reprise de l’entraînement, indique s’il faut ou non ignorer les époques et les lots afin de replacer le chargement des données au même stade que lors de l’entraînement précédent. Si défini àTrue, l’entraînement démarrera plus rapidement (car cette étape de saut peut être longue), mais ne produira pas les mêmes résultats que ceux que l’entraînement interrompu aurait obtenus. - sampler_seed (
int, facultatif) — Graine aléatoire à utiliser avec les échantillonneurs de données. Si elle n’est pas définie, les générateurs aléatoires pour l’échantillonnage de données utiliseront la même graine queself.seed. Cela permet de garantir la reproductibilité de l’échantillonnage des données, indépendamment de la graine du modèle.
Une méthode qui regroupe tous les arguments liés à la création des dataloaders.
set_evaluate
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'no'steps: int = 500batch_size: int = 8accumulation_steps: int | None = Nonedelay: float | None = Noneloss_only: bool = False )
Paramètres
- strategy (
strou IntervalStrategy, facultatif, défaut :"no") — La stratégie d'évaluation à adopter pendant l'entraînement. Les valeurs possibles sont :"no": Aucune évaluation n’est effectuée pendant l’entraînement."steps": L'évaluation est effectuée (et journalisée) toutes lessteps."epoch": L'évaluation est effectuée à la fin de chaque époque.
Définir une
strategydifférente de"no"définitself.do_evalsurTrue. - steps (
int, facultatif, par défaut 500) — Nombre d'étapes de mise à jour entre deux évaluations sistrategy="steps". - batch_size (
intfacultatif, par défaut 8) — La taille du lot par appareil (cœur GPU/TPU/CPU…) utilisée pour l'évaluation. - accumulation_steps (
int, facultatif) — Nombre d’étapes de prédiction à accumuler pour les tenseurs de sortie, avant de déplacer les résultats vers le CPU. Si non défini, l’ensemble des prédictions est accumulé sur GPU/TPU avant d’être déplacé vers le CPU (plus rapide mais nécessite plus de mémoire). - delay (
float, facultatif) — Nombre d'époques ou d'étapes à attendre avant que la première évaluation puisse être effectuée, en fonction de eval_strategy. - loss_only (
bool, facultatif, valeur par défautFalse) — Ignore toutes les sorties sauf la perte.
Une méthode qui regroupe tous les arguments liés à l'évaluation.
set_logging
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500report_to: str | list[str] = 'none'level: str = 'passive'first_step: bool = Falsenan_inf_filter: bool = Falseon_each_node: bool = Falsereplica_level: str = 'passive' )
Paramètres
- strategy (
strou IntervalStrategy, facultatif, défaut :"steps") — La stratégie de journalisation à adopter pendant l'entraînement. Les valeurs possibles sont :"no": Aucune journalisation n’est effectuée pendant l’entraînement."epoch": La journalisation est effectuée à la fin de chaque époque."steps": La journalisation est effectuée toutes leslogging_steps.
- steps (
int, facultatif, par défaut 500) — Nombre d'étapes de mise à jour entre deux journaux sistrategy="steps". - level (
str, facultatif, par défaut"passive") — Niveau de journalisation à utiliser sur le processus principal. Les choix possibles sont les niveaux de journalisation sous forme de chaînes :"debug","info","warning","error"et"critical", ainsi qu’un niveau"passive"qui ne définit rien et laisse l’application définir le niveau. - report_to (
stroulist[str], facultatif, par défaut"none") — La liste des intégrations vers lesquelles envoyer les résultats et les journaux. Les plateformes prises en charge sont"azure_ml","clearml","codecarbon","comet_ml","dagshub","dvclive","flyte","mlflow","swanlab","tensorboard","trackio"et"wandb". Utilisez"all"pour envoyer les rapports à toutes les intégrations installées, et"none"pour ne pas utiliser d'intégration. - first_step (
bool, facultatif, par défautFalse) — Indique s'il faut journaliser et évaluer le premierglobal_stepou non. - nan_inf_filter (
bool, facultatif, par défautTrue) — Indique s'il faut filtrer les pertesnanetinfpour la journalisation. Si défini surTruela perte de chaque étape qui estnanouinfest filtrée et la perte moyenne de la fenêtre de journalisation actuelle est utilisée à la place.nan_inf_filtern'influence que l'enregistrement des valeurs de perte ; il ne modifie pas la façon dont le gradient est calculé ou appliqué au modèle. - on_each_node (
bool, facultatif, par défautTrue) — Lors d'une formation distribuée multi-nœuds, indique s'il faut journaliser en utilisantlog_levelune fois par nœud, ou uniquement sur le nœud principal. - replica_level (
str, facultatif, par défaut"passive") — Niveau de journalisation à utiliser sur les répliques. Mêmes choix quelog_level
Une méthode qui regroupe tous les arguments liés à la journalisation.
set_lr_scheduler
< source >( name: str | transformers.trainer_utils.SchedulerType = 'linear'num_epochs: float = 3.0max_steps: int = -1warmup_steps: float = 0 )
Paramètres
- name (
strou SchedulerType, facultatif, par défaut"linear") — Le type de planificateur à utiliser. Consultez la documentation de SchedulerType pour toutes les valeurs possibles. - num_epochs(
float, facultatif, valeur par défaut 3.0) — Nombre total d'époques d'entraînement à effectuer (si la valeur n'est pas un entier, la partie décimale correspond au pourcentage de la dernière époque à effectuer avant d'arrêter l'entraînement). - max_steps (
int, facultatif, valeur par défaut -1) — Si défini sur un nombre positif, nombre total d'étapes d'entraînement à effectuer. Remplacenum_train_epochs. Pour un jeu de données fini, l'entraînement est répété sur le jeu de données (si toutes les données sont épuisées) jusqu'à ce quemax_stepssoit atteint. Il doit être défini sur une valeur positive lorsque le jeu de données d'entraînement n'implémente pas__len__(par exemple un jeu de données en flux), car le nombre total d'étapes ne peut alors pas être inféré et est nécessaire pour limiter la boucle d'entraînement et configurer le planificateur de taux d'apprentissage. - warmup_steps (
float, facultatif, valeur par défaut 0) — Nombre d'étapes utilisées pour un réchauffement linéaire de 0 àlearning_rate. Doit être un entier ou un nombre flottant dans l'intervalle[0,1). Si inférieur à 1, sera interprété comme le ratio d'étapes utilisées pour un réchauffement linéaire de 0 àlearning_rate.
Une méthode qui regroupe tous les arguments liés au planificateur de taux d'apprentissage et à ses hyperparamètres.
set_optimizer
< source >( name: str | transformers.training_args.OptimizerNames = 'adamw_torch'learning_rate: float = 5e-05weight_decay: float = 0beta1: float = 0.9beta2: float = 0.999epsilon: float = 1e-08args: str | None = None )
Paramètres
- name (
stroutraining_args.OptimizerNames, facultatif, par défaut"adamw_torch") — L’optimiseur à utiliser :"adamw_torch","adamw_torch_fused","adamw_anyprecision"ou"adafactor". - learning_rate (
float, facultatif, par défaut 5e-5) — Le taux d'apprentissage initial. - weight_decay (
float, facultatif, valeur par défaut 0) — Le taux de décroissance du poids à appliquer (s'il n'est pas nul) à toutes les couches, à l'exception des poids de biais et de LayerNorm. - beta1 (
float, facultatif, valeur par défaut 0.9) — Le hyperparamètre beta1 pour l’optimiseur adam ou ses variantes. - beta2 (
float, facultatif, valeur par défaut 0.999) — Le hyperparamètre beta2 pour l’optimiseur adam ou ses variantes. - epsilon (
float, facultatif, valeur par défaut 1e-8) — Le hyperparamètre epsilon pour l'optimiseur adam ou ses variantes. - args (
str, facultatif) — Arguments facultatifs fournis à AnyPrecisionAdamW (utile uniquement lorsqueoptim="adamw_anyprecision").
Une méthode qui regroupe tous les arguments liés à l'optimiseur et à ses hyperparamètres.
set_push_to_hub
< source >( model_id: strstrategy: str | transformers.trainer_utils.HubStrategy = 'every_save'token: str | None = Noneprivate_repo: bool | None = Nonealways_push: bool = Falserevision: str | None = None )
Paramètres
- model_id (
str) — Le nom du dépôt à garder synchronisé avec le output_dir local. Il peut s’agir d’un simple identifiant de modèle, auquel cas le modèle sera poussé dans votre espace de noms. Sinon, il doit s’agir du nom complet du dépôt, par exemple"user_name/model", ce qui vous permet de pousser vers une organisation dont vous êtes membre avec"organization_name/model". - strategy (
strouHubStrategy, facultatif, par défaut"every_save") — Définit le périmètre de ce qui est poussé vers le Hub et quand. Les valeurs possibles sont :"end": pousse le modèle, sa configuration, la processing_class par exemple le tokenizer (s’il est transmis au Trainer) et un brouillon de carte de modèle lorsque la méthode save_model() est appelée."every_save": pousse le modèle, sa configuration, la processing_class (par exemple le tokenizer, s’il est transmis au Trainer) et un brouillon de carte de modèle à chaque sauvegarde du modèle. Les pousses sont asynchrones afin de ne pas bloquer l’entraînement, et si les sauvegardes sont très fréquentes, une nouvelle pousse n’est tentée que si la précédente est terminée. Une dernière pousse est effectuée avec le modèle final à la fin de l’entraînement."checkpoint": comme"every_save", mais le dernier point de contrôle est également poussé dans un sous-dossier nommé last-checkpoint, ce qui vous permet de reprendre facilement l’entraînement avectrainer.train(resume_from_checkpoint="last-checkpoint")."all_checkpoints": comme"checkpoint", mais tous les points de contrôle sont poussés tels qu’ils apparaissent dans le dossier de sortie (vous obtiendrez donc un dossier de point de contrôle par dossier dans votre dépôt final)
- token (
str, facultatif) — Le jeton à utiliser pour pousser le modèle sur le Hub. Par défaut, le jeton du dossier de cache obtenu avechf auth loginest utilisé. - private_repo (
bool, facultatif, par défautFalse) — Indique si le dépôt doit être privé. SiNone(par défaut), le dépôt sera public sauf si le défaut de l’organisation est privé. Cette valeur est ignorée si le dépôt existe déjà. - always_push (
bool, facultatif, valeur par défautFalse) — Sauf si cette valeur estTrue, leTrainerignore l’envoi d’un point de contrôle si l’envoi précédent n’est pas terminé. - revision (
str, facultatif) — La révision à utiliser lors de la publication sur le Hub. Peut être un nom de branche, un tag ou un hash de commit.
Une méthode qui regroupe tous les arguments liés à la synchronisation des points de contrôle avec le Hub.
L’appel de cette méthode définit
self.push_to_hubsurTrue, ce qui signifie que leoutput_dirdevient un répertoire git synchronisé avec le dépôt (déterminé parmodel_id) et que le contenu est poussé à chaque fois qu’une sauvegarde est déclenchée (selon votreself.save_strategy). L’appel de save_model() déclenche également un push.
set_save
< source >( strategy: str | transformers.trainer_utils.IntervalStrategy = 'steps'steps: int = 500total_limit: int | None = Noneon_each_node: bool = False )
Paramètres
- strategy (
strou IntervalStrategy, facultatif, défaut :"steps") — Stratégie de sauvegarde des points de contrôle à adopter pendant l'entraînement. Les valeurs possibles sont :"no": aucune sauvegarde n’est effectuée pendant l’entraînement."epoch": l'enregistrement est effectué à la fin de chaque époque."steps": l'enregistrement est effectué toutes lessave_steps.
- steps (
int, facultatif, par défaut 500) — Nombre d'étapes de mise à jour avant deux sauvegardes de points de contrôle sistrategy="steps". - total_limit (
int, facultatif) — Si une valeur est transmise, limite le nombre total de points de contrôle. Supprime les points de contrôle les plus anciens dansoutput_dir. - on_each_node (
bool, facultatif, défautFalse) — Lors d'une formation distribuée multi-nœuds, indique s'il faut enregistrer les modèles et les points de contrôle sur chaque nœud, ou uniquement sur le nœud principal.Cela ne doit pas être activé lorsque les différents nœuds utilisent le même stockage, car les fichiers seront enregistrés avec les mêmes noms pour chaque nœud.
Une méthode qui regroupe tous les arguments liés à l'enregistrement des points de contrôle.
set_testing
< source >( batch_size: int = 8loss_only: bool = False )
Une méthode qui regroupe tous les arguments de base liés aux tests sur un jeu de données de validation.
L'appel de cette méthode définit automatiquement
self.do_predictsurTrue.
set_training
< source >( learning_rate: float = 5e-05batch_size: int = 8weight_decay: float = 0num_epochs: float = 3max_steps: int = -1gradient_accumulation_steps: int = 1seed: int = 42activation_checkpointing: bool = Falsegradient_checkpointing: bool | None = None )
Paramètres
- learning_rate (
float, facultatif, valeur par défaut 5e-5) — Le taux d'apprentissage initial pour l'optimiseur. - batch_size (
intfacultatif, par défaut 8) — La taille du lot par appareil (cœur GPU/TPU/CPU…) utilisée pour l’entraînement. - weight_decay (
float, facultatif, valeur par défaut 0) — Le taux de décroissance du poids à appliquer (s'il n'est pas nul) à toutes les couches, à l'exception des poids de biais et de LayerNorm, dans l'optimiseur. - num_epochs (
float, facultatif, valeur par défaut 3.0) — Nombre total d'époques d'entraînement à effectuer (si ce n'est pas un entier, la partie décimale sera exécutée en pourcentage de la dernière époque avant l'arrêt de l'entraînement). - max_steps (
int, facultatif, valeur par défaut -1) — Si défini sur un nombre positif, nombre total d'étapes d'entraînement à effectuer. Remplacenum_train_epochs. Pour un jeu de données fini, l'entraînement est répété sur le jeu de données (si toutes les données sont épuisées) jusqu'à ce quemax_stepssoit atteint. Il doit être défini sur une valeur positive lorsque le jeu de données d'entraînement n'implémente pas__len__(par exemple un jeu de données en flux), car le nombre total d'étapes ne peut alors pas être inféré et est nécessaire pour limiter la boucle d'entraînement et configurer le planificateur de taux d'apprentissage. - gradient_accumulation_steps (
int, facultatif, valeur par défaut 1) — Nombre d'étapes de mise à jour pour lesquelles accumuler les gradients avant d'effectuer un passage de rétropropagation/mise à jour.Lors de l'utilisation de l'accumulation de gradients, une étape est comptée comme une étape avec un passage arrière. Par conséquent, la journalisation, l'évaluation et la sauvegarde seront effectuées toutes les
gradient_accumulation_steps * xxx_stepexemples d'entraînement. - seed (
int, facultatif, par défaut 42) — Graine aléatoire qui sera définie au début de l’entraînement. Pour garantir la reproductibilité entre les exécutions, utilisez la fonction~Trainer.model_initpour instancier le modèle s’il possède des paramètres initialisés aléatoirement. - activation_checkpointing (
bool, facultatif, valeur par défautFalse) — Si True, utilise l’activation checkpointing pour économiser de la mémoire au détriment d’une passe arrière plus lente. - gradient_checkpointing (
bool, facultatif) — Alias obsolète deactivation_checkpointing, sera supprimé dans la v6.
Une méthode qui regroupe tous les arguments de base liés à l'entraînement.
L'appel de cette méthode définit automatiquement
self.do_trainsurTrue.
Sérialise cette instance en remplaçant Enum par leurs valeurs (pour la prise en charge de la sérialisation JSON). Elle obscurcit les valeurs des jetons en supprimant leur valeur.
Sérialise cette instance en chaîne JSON.
Sérialisation assainie à utiliser avec les hparams de TensorBoard
Seq2SeqTrainingArguments
classe transformers.Seq2SeqTrainingArguments
< source >( output_dir: str | None = Noneper_device_train_batch_size: int = 8num_train_epochs: float = 3.0max_steps: int = -1learning_rate: float = 5e-05lr_scheduler_type: transformers.trainer_utils.SchedulerType | str = 'linear'lr_scheduler_kwargs: dict | str | None = Nonewarmup_steps: float = 0optim: transformers.training_args.OptimizerNames | str = 'adamw_torch_fused'optim_args: str | None = Noneweight_decay: float = 0.0adam_beta1: float = 0.9adam_beta2: float = 0.999adam_epsilon: float = 1e-08optim_target_modules: None | str | list[str] = Nonegradient_accumulation_steps: int = 1average_tokens_across_devices: bool = Truemax_grad_norm: float = 1.0label_smoothing_factor: float = 0.0bf16: bool = Falsefp16: bool = Falsebf16_full_eval: bool = Falsefp16_full_eval: bool = Falsetf32: bool | None = Noneactivation_checkpointing: bool | None = Noneactivation_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonegradient_checkpointing: bool | None = Nonegradient_checkpointing_kwargs: dict[str, typing.Any] | str | None = Nonetorch_compile: bool = Falsetorch_compile_backend: str | None = Nonetorch_compile_mode: str | None = Noneuse_liger_kernel: bool = Falseliger_kernel_config: dict[str, bool] | None = Noneuse_cache: bool = Falseneftune_noise_alpha: float | None = Nonetorch_empty_cache_steps: int | None = Noneauto_find_batch_size: bool = Falselogging_strategy: transformers.trainer_utils.IntervalStrategy | str = 'steps'logging_steps: float = 500logging_first_step: bool = Falselog_on_each_node: bool = Truelogging_nan_inf_filter: bool = Trueinclude_num_input_tokens_seen: str | bool = 'no'log_level: str = 'passive'log_level_replica: str = 'warning'disable_tqdm: bool | None = Nonereport_to: None | str | list[str] = 'none'run_name: str | None = Noneproject: str = 'huggingface'trackio_space_id: str | None = Nonetrackio_bucket_id: str | None = Nonetrackio_static_space_id: typing.Union[str, NoneType, typing.Literal[False]] = Noneeval_strategy: transformers.trainer_utils.IntervalStrategy | str = 'no'eval_steps: float | None = Noneeval_delay: float = 0per_device_eval_batch_size: int = 8prediction_loss_only: bool = Falseeval_on_start: bool = Falseeval_do_concat_batches: bool = Trueeval_use_gather_object: bool = Falseeval_accumulation_steps: int | None = Noneinclude_for_metrics: list = <factory>batch_eval_metrics: bool = Falsesave_only_model: bool = Falsesave_strategy: transformers.trainer_utils.SaveStrategy | str = 'steps'save_steps: float = 500save_on_each_node: bool = Falsesave_total_limit: int | None = Noneenable_jit_checkpoint: bool = Falsepush_to_hub: bool = Falsehub_token: str | None = Nonehub_private_repo: bool | None = Nonehub_model_id: str | None = Nonehub_strategy: transformers.trainer_utils.HubStrategy | str = 'every_save'hub_always_push: bool = Falsehub_revision: str | None = Noneload_best_model_at_end: bool = Falsemetric_for_best_model: str | None = Nonegreater_is_better: bool | None = Noneignore_data_skip: bool = Falserestore_callback_states_from_checkpoint: bool = Falsefull_determinism: bool = Falseseed: int = 42data_seed: int | None = Noneuse_cpu: bool = Falseaccelerator_config: dict | str | None = Noneparallelism_config: typing.Any | None = Nonedataloader_drop_last: bool = Falsedataloader_num_workers: int = 0dataloader_pin_memory: bool = Truedataloader_persistent_workers: bool = Falsedataloader_prefetch_factor: int | None = Nonedataloader_multiprocessing_context: str | None = Nonedataloader_in_order: bool = Trueremove_unused_columns: bool = Truelabel_names: list[str] | None = Nonetrain_sampling_strategy: str = 'random'length_column_name: str = 'length'ddp_find_unused_parameters: bool | None = Noneddp_bucket_cap_mb: int | None = Noneddp_broadcast_buffers: bool | None = Noneddp_static_graph: bool | None = Noneddp_backend: str | None = Noneddp_timeout: int = 1800fsdp: str | None = Nonefsdp_config: dict[str, typing.Any] | str | None = Nonedeepspeed: dict | str | None = Nonedebug: str | list[transformers.debug_utils.DebugOption] = ''skip_memory_metrics: bool = Truedo_train: bool = Falsedo_eval: bool = Falsedo_predict: bool = Falseresume_from_checkpoint: str | None = Nonelocal_rank: int = -1sortish_sampler: bool = Falsepredict_with_generate: bool = Falsegeneration_max_length: int | None = Nonegeneration_num_beams: int | None = Nonegeneration_config: str | pathlib.Path | transformers.generation.configuration_utils.GenerationConfig | None = None )
Paramètres
- output_dir (
str, facultatif, par défaut"trainer_output") — Le répertoire de sortie où les prédictions du modèle et les points de contrôle seront écrits.
Durée d'entraînement et taille du lot
- per_device_train_batch_size (
int, facultatif, valeur par défaut 8) — La taille du lot par appareil. La taille de lot globale est calculée comme suit :per_device_train_batch_size * number_of_devicesdans les configurations multi-GPU ou distribuées. - num_train_epochs(
float, facultatif, valeur par défaut 3.0) — Nombre total d'époques d'entraînement à effectuer (si ce n'est pas un entier, la partie décimale sera exécutée en pourcentage de la dernière époque avant l'arrêt de l'entraînement). - max_steps (
int, facultatif, valeur par défaut -1) — Remplacenum_train_epochs. Si défini sur un nombre positif, nombre total d'étapes d'entraînement à effectuer. Pour un jeu de données fini, l'entraînement est répété sur le jeu de données (si toutes les données sont épuisées) jusqu'à ce quemax_stepssoit atteint. Il doit être défini sur une valeur positive lorsque le jeu de données d'entraînement n'implémente pas__len__(par exemple un jeu de données en flux), car le nombre total d'étapes ne peut alors pas être déduit et est nécessaire pour limiter la boucle d'entraînement et configurer le planificateur de taux d'apprentissage.
Taux d'apprentissage et planificateur
- learning_rate (
float, facultatif, valeur par défaut 5e-5) — Le taux d'apprentissage initial de l'optimiseur. Il s'agit généralement du taux d'apprentissage maximal lors de l'utilisation d'un planificateur avec une phase de montée en charge (warmup). - lr_scheduler_type (
strou SchedulerType, facultatif, défaut :"linear") — Le type de planificateur de taux d'apprentissage à utiliser. Voir SchedulerType pour toutes les valeurs possibles. Choix courants :- “linear” = get_linear_schedule_with_warmup()
- “cosine” = get_cosine_schedule_with_warmup()
- “constant” = get_constant_schedule()
- “constant_with_warmup” = get_constant_schedule_with_warmup()
- lr_scheduler_kwargs (
dictoustr, facultatif, par défautNone) — Les arguments supplémentaires pour le lr_scheduler. Consultez la documentation de chaque scheduler pour les valeurs possibles. - warmup_steps (
intoufloat, facultatif, valeur par défaut 0) — Nombre d'étapes pour un réchauffement linéaire de 0 àlearning_rate. Le réchauffement aide à stabiliser l'entraînement dans la phase initiale. Peut être :- Un entier : nombre exact d'étapes de mise en route
- Un nombre à virgule flottante dans l'intervalle [0, 1) : interprété comme le ratio des étapes d'entraînement totales
Optimiseur
- optim (
stroutraining_args.OptimizerNames, facultatif, défaut :"adamw_torch"(pour torch>=2.8"adamw_torch_fused")) — L'optimiseur à utiliser. Options courantes :"adamw_torch": AdamW de PyTorch (défaut recommandé)"adamw_torch_fused": noyau AdamW fusionné"adamw_hf": implémentation d’AdamW par HuggingFace"sgd": descente de gradient stochastique avec élan"adafactor": Optimiseur économe en mémoire pour les grands modèles"adamw_8bit": AdamW 8 bits (nécessite bitsandbytes) VoirOptimizerNamespour la liste complète.
- optim_args (
str, facultatif) — Arguments facultatifs fournis aux optimiseurs tels que AnyPrecisionAdamW, AdEMAMix et GaLore. - weight_decay (
float, facultatif, valeur par défaut 0) — Coefficient de décroissance du poids appliqué par l’optimiseur (et non par la fonction de perte). Ajoute une régularisation L2 pour prévenir le surapprentissage en pénalisant les poids élevés. Exclu automatiquement des paramètres de biais et de LayerNorm. Valeurs typiques : 0.01 (standard), 0.1 (régularisation plus forte), 0.0 (aucune régularisation). - adam_beta1 (
float, facultatif, valeur par défaut 0.9) — Taux de décroissance exponentielle pour les estimations du premier moment (momentum) dans les optimiseurs basés sur Adam. Contrôle la quantité d’historique des gradients à conserver. - adam_beta2 (
float, facultatif, valeur par défaut 0.999) — Taux de décroissance exponentielle pour les estimations du second moment (variance) dans les optimiseurs basés sur Adam. Contrôle le réglage adaptatif du taux d'apprentissage. - adam_epsilon (
float, facultatif, valeur par défaut 1e-8) — Valeur epsilon pour la stabilité numérique dans les optimiseurs basés sur Adam. Empêche la division par zéro dans le dénominateur de la règle de mise à jour. - optim_target_modules (
Union[str, list[str]], facultatif) — Les modules cibles à optimiser, c'est-à-dire les noms de modules que vous souhaitez entraîner. Actuellement utilisé pour l'algorithme GaLore et l'algorithme APOLLO. Voir implémentation de GaLore et implémentation de APOLLO pour plus de détails. Vous devez vous assurer de passer un optimiseur GaLore ou APOLLO valide, par exemple l'un des suivants : “apollo_adamw”, “galore_adamw”, “galore_adamw_8bit”, “galore_adafactor”, et vous assurer que les modules cibles sont uniquement des modulesnn.Linear.
Régularisation et stabilité de l'entraînement
- gradient_accumulation_steps (
int, facultatif, valeur par défaut 1) — Nombre d'étapes de mise à jour pour accumuler les gradients avant d'effectuer un passage de rétropropagation/mise à jour. Simule des tailles de lot plus grandes sans mémoire supplémentaire. Taille de lot effective =per_device_train_batch_size × num_devices × gradient_accumulation_steps.Lors de l'utilisation de l'accumulation de gradients, un « pas » est compté comme un pas avec un passage arrière. Par conséquent, la journalisation, l'évaluation et l'enregistrement se produiront toutes les
gradient_accumulation_steps × xxx_stepexemples d'entraînement. - average_tokens_across_devices (
bool, facultatif, par défautTrue) — Indique s'il faut ou non faire la moyenne des jetons entre les appareils. Si activé, utilise all_reduce pour synchroniser num_tokens_in_batch afin de calculer précisément la perte. Référence : https://github.com/huggingface/transformers/issues/34242 - max_grad_norm (
float, facultatif, valeur par défaut 1.0) — Norme maximale du gradient pour le clipping des gradients. Appliquée après la passe arrière, avant l'étape de l'optimiseur. Empêche l'explosion des gradients en réduisant les gradients lorsque leur norme globale dépasse ce seuil. Définir à 0 pour désactiver le clipping. Valeurs typiques : 1.0 (standard), 0.5 (plus conservateur), 5.0 (moins agressif). - label_smoothing_factor (
float, facultatif, valeur par défaut 0.0) — Facteur de lissage des étiquettes pour éviter l'excès de confiance. Remplace les cibles dures 0/1 par des cibles douces : 0 devientε/num_labelset 1 devient1 - ε + ε/num_labels, où ε =label_smoothing_factor. Zéro signifie aucun lissage. Plage typique : de 0.0 à 0.1.
Entraînement en précision mixte
- bf16 (
bool, facultatif, par défautFalse) — Active l’entraînement en précision mixte bfloat16 (BF16) Généralement préféré à FP16 en raison d’une meilleure stabilité numérique et de l’absence de mise à l’échelle de la perte requise. - fp16 (
bool, facultatif, par défautFalse) — Active l’entraînement en précision mixte float16 (FP16). Envisagez d’utiliser BF16 à la place si votre matériel le prend en charge. - bf16_full_eval (
bool, facultatif, valeur par défautFalse) — Utilise la pleine précision BF16 pour l'évaluation (et non seulement la précision mixte). Plus rapide et économe en mémoire, mais peut affecter légèrement les valeurs des métriques. S'applique uniquement pendant l'évaluation. - fp16_full_eval (
bool, facultatif, valeur par défautFalse) — Utilise la pleine précision FP16 pour l'évaluation (et non seulement la précision mixte). Plus rapide et économe en mémoire, mais peut affecter légèrement les valeurs des métriques. S'applique uniquement pendant l'évaluation. - tf32 (
bool, facultatif) — Active le mode TensorFloat-32 (TF32) sur les GPU Ampere et plus récents. TF32 utilise une précision de 19 bits pour les multiplications de matrices (au lieu des 23 bits de FP32), offrant jusqu’à 8 fois plus de vitesse avec une perte de précision négligeable. La valeur par défaut dépend de la version de PyTorch. Voir la documentation TF32.
Activation Checkpointing
- activation_checkpointing (
bool, facultatif, valeur par défautFalse) — Active le checkpointing des activations pour échanger de la puissance de calcul contre de la mémoire. Réduit l’utilisation de la mémoire en effaçant les activations pendant le passage avant et en les recalculant pendant le passage arrière. Permet d’entraîner des modèles plus grands ou des tailles de lot plus élevées, au prix d’un entraînement environ 20 % plus lent. - activation_checkpointing_kwargs (
dict, facultatif, par défautNone) — Arguments nominaux transmis àactivation_checkpointing_enable().every_n_layerseffectue le checkpointing uniquement de chaque n-ième couche décodeur au lieu de toutes ;1correspond au comportement habituel tout-ou-rien, et des valeurs plus élevées rendent une partie de la mémoire au détriment de la vitesse.offloadconserve les activations sauvegardées en mémoire hôte épinglée, ce qui libèrelayers x sequence x hiddenoctets de mémoire sur l’appareil et ralentit l’étape. Toute autre clé est transmise àtorch.utils.checkpoint.checkpoint. - gradient_checkpointing (
bool, facultatif) — Alias obsolète deactivation_checkpointing, sera supprimé dans la v6. - gradient_checkpointing_kwargs (
dict, facultatif) — Alias obsolète deactivation_checkpointing_kwargs, sera supprimé dans la v6.
Compilation
- torch_compile (
bool, facultatif, valeur par défautFalse) — Compile le modèle à l’aide detorch.compile()de PyTorch 2.0 pour un entraînement plus rapide. Peut offrir un gain de vitesse de 20 à 50 % sans modification du code. Utilise les paramètres de compilation par défaut sauf sitorch_compile_backendoutorch_compile_modesont spécifiés. - torch_compile_backend (
str, facultatif) — Backend pourtorch.compile(). Si défini, active automatiquementtorch_compile. Les options incluent"inductor"(par défaut),"aot_eager","cudagraphs". Les backends varient selon la version de PyTorch - consultez la documentation de PyTorch pour les options disponibles. - torch_compile_mode (
str, facultatif) — Mode de compilation pourtorch.compile(). S'il est défini, active automatiquementtorch_compile. Options :"default","reduce-overhead"(minimiser la surcharge Python),"max-autotune"(optimisation agressive, temps de compilation plus long).
Kernels
- use_liger_kernel (
bool, facultatif, valeur par défautFalse) — Active les optimisations Liger Kernel. Augmente le débit multi-GPU d’environ 20 % et réduit l’utilisation de la mémoire d’environ 60 %. Compatible avec Flash Attention, FSDP et DeepSpeed. Prend actuellement en charge les modèles Llama, Mistral, Mixtral et Gemma. - liger_kernel_config (
Optional[dict], facultatif) — Configuration pour Liger Kernel. Transmise en tant que kwargs à_apply_liger_kernel_to_instance(). Les options incluent généralement :"rope","swiglu","cross_entropy","fused_linear_cross_entropy","rms_norm". SiNone, utilise la configuration par défaut.
Optimisations supplémentaires
- use_cache (
bool, facultatif, valeur par défautFalse) — Indique s'il faut activer le cache pour le modèle. Pour l'entraînement, cela n'est généralement pas nécessaire, à l'exception de certaines méthodes PEFT qui utilisentpast_key_values. - neftune_noise_alpha (
Optional[float]) — Si la valeur n'est pasNone, les embeddings de bruit NEFTune seront activés. Cela peut améliorer considérablement les performances du modèle pour le fine-tuning par instructions. Consultez le paper original et le code original. Prend en charge lesPreTrainedModelde transformers ainsi quePeftModelde peft. Le paper original utilisait des valeurs comprises dans l'intervalle [5.0, 15.0]. - torch_empty_cache_steps (
int, facultatif) — Nombre d’étapes à attendre avant d’appelertorch.<device>.empty_cache(). Si cette valeur n’est pas définie ou est définie sur None, le cache ne sera pas vidé. Cela peut aider à éviter les erreurs de mémoire insuffisante CUDA en réduisant l’utilisation de pointe de la VRAM, au prix d’une performance environ 10 % plus lente. - auto_find_batch_size (
bool, facultatif, valeur par défautFalse) — Indique s'il faut déterminer automatiquement une taille de lot d'entraînement qui tient en mémoire par décroissance exponentielle, afin d'éviter les erreurs CUDA Out-of-Memory. La taille de lot d'évaluation n'est pas ajustée.
Journalisation et suivi de l'entraînement
- logging_strategy (
strou IntervalStrategy, facultatif, défaut :"steps") — Stratégie de journalisation à adopter pendant l'entraînement. Les valeurs possibles sont :"no": Aucune journalisation n’est effectuée pendant l’entraînement."epoch": La journalisation est effectuée à la fin de chaque époque."steps": La journalisation est effectuée toutes leslogging_steps.
- logging_steps (
intoufloat, facultatif, par défaut 500) — Nombre d'étapes de mise à jour entre deux journaux silogging_strategy="steps". Doit être un entier ou un nombre décimal dans l'intervalle[0,1). S'il est inférieur à 1, il sera interprété comme le ratio des étapes d'entraînement totales. - logging_first_step (
bool, facultatif, valeur par défautFalse) — Indique s'il faut journaliser la premièreglobal_stepou non. - log_on_each_node (
bool, facultatif, valeur par défautTrue) — Lors d’une formation distribuée multi-nœuds, indique s’il faut journaliser à l’aide delog_levelune fois par nœud, ou uniquement sur le nœud principal. - logging_nan_inf_filter (
bool, facultatif, valeur par défautTrue) — Filtre les pertes NaN et Inf lors de la journalisation. SiTrue, remplace les pertes d’entraînement NaN/Inf par la moyenne des pertes valides récentes et exclut les lots NaN/Inf (par exemple, les lots sans jetons d’étiquette) de la perte d’évaluation. N’affecte pas le calcul des gradients, uniquement la journalisation. - include_num_input_tokens_seen (
Optional[Union[str, bool]], facultatif, valeur par défaut “no”) — Indique s'il faut suivre le nombre de jetons d'entrée vus. Doit être l'une des valeurs [“all”, “non_padding”, “no”] ou une valeur booléenne qui correspond à “all” ou “no”. Peut être plus lent en formation distribuée, car des opérations de collecte doivent être appelées.
Journalisation
- log_level (
str, facultatif, par défautpassive) — Niveau de journalisation pour le processus principal. Options :"debug","info","warning","error","critical"ou"passive"(ne modifie pas le niveau de journalisation actuel de Transformers, qui est"warning"par défaut) - log_level_replica (
str, facultatif, par défaut"warning") — Niveau de journalisation pour les processus répliques dans l’entraînement distribué. Les options sont les mêmes que pourlog_level. - disable_tqdm (
bool, facultatif) — Désactive les barres de progression tqdm. La valeur par défaut estTruesilog_levelest warning ou inférieur,Falsesinon.
Intégration du suivi des expériences
- report_to (
stroulist[str], facultatif, par défaut"none") — La liste des intégrations vers lesquelles envoyer les résultats et les journaux. Les plateformes prises en charge sont"azure_ml","clearml","codecarbon","comet_ml","dagshub","dvclive","flyte","mlflow","swanlab","tensorboard","trackio"et"wandb". Utilisez"all"pour envoyer les rapports à toutes les intégrations installées, et"none"pour ne pas utiliser d'intégration. - run_name (
str, facultatif) — Un descripteur pour l'exécution. Utilisé généralement pour la journalisation trackio, wandb, mlflow, comet et swanlab. - project (
str, facultatif, par défaut"huggingface") — Le nom du projet à utiliser pour la journalisation. Actuellement, utilisé uniquement par Trackio. - trackio_space_id (
strouNone, facultatif, par défautNone) — L’identifiant de l’espace Hugging Face à utiliser pour la journalisation en direct avec Trackio via un espace basé sur Gradio. Il doit s’agir d’un nom d’espace complet comme'username/reponame'ou'orgname/reponame', ou simplement de'reponame'(l’espace est alors créé dans l’espace de noms de l’utilisateur actuellement connecté). Si la valeur estNone, les métriques sont journalisées uniquement dans un répertoire local (aucun espace sur le Hub). Cet espace Gradio dispose d’un accès en lecture et écriture au Bucket Trackio, ce qui est souhaitable lorsque l’entraînement est en cours—par exemple lors de la reprise d’une exécution partielle ou de l’agrégation des journaux provenant de plusieurs machines. L’espace sera public sauf si vous définissezhub_private_repo=Trueou si le paramètre par défaut de votre organisation est de créer des espaces privés. - trackio_bucket_id (
strouNone, facultatif, par défautNone) — Identifiant de Bucket Hugging Face facultatif pour Trackio. S'il n'est pas défini, Trackio en dérive un. Utilisé en conjonction avec un Space Gradio (trackio_space_id) et lors du déploiement d'un Space statique (trackio_static_space_idn'est pasFalse). - trackio_static_space_id (
str,FalseouNone, facultatif, valeur par défautNone) — L’identifiant de l’espace Hugging Face à utiliser pour l’espace statique créé après la fin de l’entraînement. Il doit s’agir d’un nom d’espace complet comme'username/reponame'ou'orgname/reponame', ou simplement de'reponame'(l’espace est créé dans l’espace de noms de l’utilisateur actuellement connecté). Si la valeur est False, aucun espace statique ne sera créé. Si la valeur est None et que le modèle est poussé sur le Hub, un espace statique sera créé avec un nom par défaut et un lien vers celui-ci sera ajouté à la carte du modèle. L’espace sera public, sauf si vous définissezhub_private_repo=Trueou si la valeur par défaut de votre organisation est de créer des espaces privés.
Évaluation
- eval_strategy (
strou IntervalStrategy, facultatif, défaut :"no") — Quand exécuter l'évaluation. Options :"no": aucune évaluation pendant l’entraînement"steps": Évaluer toutes leseval_steps"epoch": Évaluer à la fin de chaque époque
- eval_steps (
intoufloat, facultatif) — Nombre d'étapes de mise à jour entre deux évaluations sieval_strategy="steps". Par défaut, prend la même valeur quelogging_stepssi non défini. Doit être un entier ou un nombre flottant dans l'intervalle[0,1). S'il est inférieur à 1, il sera interprété comme le ratio des étapes d'entraînement totales. - eval_delay (
float, facultatif) — Nombre d'époques ou d'étapes à attendre avant que la première évaluation puisse être effectuée, en fonction de eval_strategy. - per_device_eval_batch_size (
int, facultatif, valeur par défaut : 8) — Taille du lot par cœur d'accélérateur/CPU pour l'évaluation. - prediction_loss_only (
bool, facultatif, valeur par défautFalse) — Lors de l'évaluation et de la génération de prédictions, ne renvoie que la perte. - eval_on_start (
bool, facultatif, valeur par défautFalse) — Indique s'il faut effectuer une étape d'évaluation (vérification de cohérence) avant l'entraînement afin de s'assurer que les étapes de validation fonctionnent correctement. - eval_do_concat_batches (
bool, facultatif, valeur par défautTrue) — Indique s'il faut concaténer récursivement les entrées, pertes, étiquettes et prédictions entre les lots. SiFalse, ils sont stockés sous forme de listes, chaque lot étant conservé séparément. - eval_use_gather_object (
bool, facultatif, valeur par défautFalse) — Indique s'il faut exécuter récursivement la collecte d'objets dans une liste/tuple/dictionnaire imbriqué d'objets à partir de tous les appareils. Cette option ne doit être activée que si les utilisateurs ne retournent pas uniquement des tenseurs, et PyTorch la décourage activement. Cela est utile lorsque la structure des étiquettes est non standard, comme dans les tâches de vision par ordinateur. - eval_accumulation_steps (
int, facultatif) — Nombre d'étapes de prédiction à accumuler pour les tenseurs de sortie avant de déplacer les résultats vers le CPU. Si non défini, l'ensemble des prédictions est accumulé sur l'accélérateur de l'appareil avant d'être déplacé vers le CPU (plus rapide mais nécessite plus de mémoire).
Calcul des métriques
- include_for_metrics (
list[str], facultatif, défaut[]) — Inclure des données supplémentaires dans lacompute_metricsfonction si nécessaire pour le calcul des métriques. Options possibles à ajouter à lainclude_for_metricsliste :"inputs": Données d’entrée transmises au modèle, destinées au calcul des métriques dépendantes des entrées."loss": Valeurs de perte calculées lors de l'évaluation, destinées au calcul de métriques dépendantes de la perte.
- batch_eval_metrics (
bool, facultatif, valeur par défautFalse) — Si défini surTrue, l’évaluation appellera compute_metrics à la fin de chaque lot pour accumuler des statistiques plutôt que de stocker tous les logits d’évaluation en mémoire. Lorsqu’il est défini surTrue, vous devez passer une fonction compute_metrics qui prend un argument booléencompute_result; lorsqu’on lui passeTrue, elle déclenchera les statistiques globales finales à partir des statistiques de niveau lot que vous avez accumulées sur l’ensemble d’évaluation.
Point de contrôle et sauvegarde
- save_only_model (
bool, facultatif, valeur par défautFalse) — Enregistre uniquement les poids du modèle, sans l’état de l’optimiseur, du planificateur ou du générateur aléatoire. Réduit considérablement la taille du point de contrôle, mais empêche la reprise de l’entraînement depuis ce point de contrôle. À utiliser lorsque vous avez uniquement besoin du modèle entraîné pour l’inférence, et non pour une formation continue. Vous ne pouvez charger le modèle qu’avecfrom_pretrainedsi cette option est définie surTrue. - save_strategy (
strouSaveStrategy, facultatif, défaut :"steps") — Stratégie d'enregistrement des points de contrôle à adopter pendant l'entraînement. Les valeurs possibles sont :"no": aucune sauvegarde n’est effectuée pendant l’entraînement."epoch": l'enregistrement est effectué à la fin de chaque époque."steps": l'enregistrement est effectué toutes lessave_steps."best": l’enregistrement est effectué chaque fois qu’une nouvelle valeur debest_metricest atteinte.
- save_steps (
intoufloat, facultatif, par défaut 500) — Nombre d'étapes de mise à jour avant l'enregistrement de deux points de contrôle sisave_strategy="steps". Doit être un entier ou un nombre flottant compris dans l'intervalle[0,1). S'il est inférieur à 1, il sera interprété comme le ratio des étapes d'entraînement totales. - save_on_each_node (
bool, facultatif, valeur par défautFalse) — Lors d’une formation distribuée multi-nœuds, indique s’il faut enregistrer les modèles et les points de contrôle sur chaque nœud, ou uniquement sur le nœud principal. Cette option ne doit pas être activée si les différents nœuds utilisent le même stockage, car les fichiers seraient enregistrés avec les mêmes noms sur chaque nœud. - save_total_limit (
int, facultatif) — Nombre maximal de points de contrôle à conserver. Supprime les points de contrôle plus anciens dansoutput_dir. Lorsqueload_best_model_at_end=True, le meilleur point de contrôle est toujours conservé, ainsi que les plus récents. Par exemple,save_total_limit=5conserve les 4 plus récents ainsi que le meilleur - enable_jit_checkpoint (
bool, facultatif, valeur par défautFalse) — Active le checkpointing Just-In-Time lors du signal SIGTERM pour une terminaison propre sur les charges de travail préemptibles. Important : Configurez la période d’arrêt propre de votre orchestrateur pour laisser un temps suffisant. Pour Kubernetes, définissezterminationGracePeriodSeconds(la valeur par défaut de 30 s est généralement insuffisante). Pour Slurm, utilisez--signal=TERM@<seconds>. La période de grâce requise doit être ≥ au temps de la plus longue itération + au temps de sauvegarde du checkpoint.
Intégration avec Hugging Face Hub
- push_to_hub (
bool, facultatif, par défautFalse) — Indique s'il faut pousser le modèle sur le Hub à chaque fois que le modèle est enregistré. Si cette option est activée,output_dirdevient un répertoire git synchronisé avec le dépôt (déterminé parhub_model_id) et le contenu est poussé à chaque fois qu'un enregistrement est déclenché (selon votresave_strategy). L'appel de save_model() déclenche également un push. - hub_token (
str, facultatif) — Le jeton à utiliser pour pousser le modèle sur le Hub. Par défaut, il s’agit du jeton du dossier de cache obtenu avechf auth login. - hub_private_repo (
bool, facultatif) — Indique si le dépôt doit être privé. Si la valeur estNone(par défaut), le dépôt sera public, sauf si le défaut de l’organisation est le mode privé. Cette valeur est ignorée si le dépôt existe déjà. En cas d’envoi de rapports vers Trackio avec le déploiement sur Hugging Face Spaces activé, la même logique détermine si l’espace est privé. - hub_model_id (
str, facultatif) — Le nom du dépôt à garder synchronisé avec le output_dir local. Il peut s’agir d’un simple identifiant de modèle, auquel cas le modèle sera poussé dans votre espace de noms. Sinon, il doit s’agir du nom complet du dépôt, par exemple"user_name/model", ce qui vous permet de pousser vers une organisation dont vous êtes membre avec"organization_name/model". La valeur par défaut estuser_name/output_dir_name, output_dir_name étant le nom deoutput_dir. - hub_strategy (
strouHubStrategy, facultatif, défaut :"every_save") — Définit ce qui doit être poussé vers le Hub et quand. Options :"end": Pousse uniquement à la fin de l'entraînement"every_save": Pousse à chaque sauvegarde (asynchrone pour ne pas bloquer l’entraînement)"checkpoint": comme"every_save"mais pousse le dernier point de contrôle dans le sous-dossier"last-checkpoint"pour une reprise facile"all_checkpoints": Pousse tous les points de contrôle à mesure qu’ils apparaissent
- hub_always_push (
bool, facultatif, valeur par défautFalse) — Sauf si cette valeur estTrue, leTrainerignore l’envoi d’un point de contrôle si l’envoi précédent n’est pas terminé. - hub_revision (
str, facultatif) — La révision à utiliser lors de la publication sur le Hub. Peut être un nom de branche, un tag ou un hash de commit.
Suivi du meilleur modèle
- load_best_model_at_end (
bool, facultatif, valeur par défautFalse) — Charge le meilleur point de contrôle à la fin de l’entraînement. Nécessite queeval_strategysoit défini. Lorsqu’il est activé, le meilleur point de contrôle est toujours enregistré (voirsave_total_limit).Lorsque `True`, `save_strategy` doit correspondre à `eval_strategy` (sauf si `save_strategy` est `"best"`), et si `"steps"` est utilisé, `save_steps` doit être un multiple de `eval_steps`. - metric_for_best_model (
str, facultatif) — Métrique à utiliser pour comparer les modèles lorsqueload_best_model_at_end=True. Doit être un nom de métrique renvoyé par l'évaluation, avec ou sans le préfixe"eval_". La valeur par défaut est"loss". Si vous définissez ce paramètre,greater_is_betteraura par défaut la valeurTrue, sauf si le nom se termine par"loss". Exemples :"accuracy","f1","eval_bleu". - greater_is_better (
bool, facultatif) — Indique si des valeurs de métrique plus élevées sont préférables. La valeur par défaut est basée surmetric_for_best_model:Truesi le nom de la métrique ne se termine pas par"loss",Falsesinon.
Reprise de l'entraînement
- ignore_data_skip (
bool, facultatif, valeur par défautFalse) — Lors de la reprise de l’entraînement, ignore le saut rapide dans le jeu de données pour atteindre l’état précédent. SiTrue, l’entraînement démarre depuis le début du jeu de données (reprise plus rapide, mais les résultats ne correspondront pas à l’entraînement interrompu). SiFalse, les données déjà vues sont ignorées (reprise plus lente, mais poursuite exacte). - restore_callback_states_from_checkpoint (
bool, facultatif, valeur par défautFalse) — Restaure les états des callbacks depuis le checkpoint lors de la reprise. SiTrue, les callbacks passés au Trainer seront remplacés s’ils existent dans le checkpoint.
Reproductibilité
- full_determinism (
bool, facultatif, valeur par défautFalse) — SiTrue, enable_full_determinism() est appelé à la place de set_seed() pour garantir des résultats reproductibles lors de l’entraînement distribué. Important : cela aura un impact négatif sur les performances, il ne faut donc l’utiliser que pour le débogage. - seed (
int, facultatif, par défaut 42) — Graine aléatoire qui sera définie au début de l’entraînement. Pour garantir la reproductibilité entre les exécutions, utilisez la fonction~Trainer.model_initpour instancier le modèle s’il possède des paramètres initialisés aléatoirement. - data_seed (
int, facultatif) — Graine aléatoire à utiliser avec les échantillonneurs de données. Si elle n’est pas définie, les générateurs aléatoires pour l’échantillonnage de données utiliseront la même graine queseed. Cela permet de garantir la reproductibilité de l’échantillonnage des données, indépendamment de la graine du modèle.
Configuration matérielle
- use_cpu (
bool, facultatif, par défautFalse) — Indique s'il faut utiliser le CPU. Si défini sur False, nous utiliserons le dispositif/le backend torch disponible.
Configuration d'Accelerate
- accelerator_config (
str,dict, ouAcceleratorConfig, facultatif) — Configuration de l'intégration interne d'Accelerate. Peut être :- Chemin vers le fichier de configuration JSON :
"accelerator_config.json" - Dictionnaire avec les options de configuration
- instance de
AcceleratorConfigOptions principales : split_batches(bool, par défautFalse) : Indique s'il faut diviser les lots entre les appareils. SiTrue, la taille réelle du lot est identique sur tous les appareils (le total doit être divisible par num_processes). SiFalse, chaque appareil reçoit la taille de lot spécifiée.dispatch_batches(bool) : siTrue, seul le processus principal itère sur le dataloader et distribue les lots aux appareils. La valeur par défaut estTruepourIterableDataset,Falsesinon.even_batches(bool, par défautTrue) : Duplique des échantillons depuis le début du jeu de données pour garantir que tous les travailleurs reçoivent des lots de taille égale.use_seedable_sampler(bool, par défautTrue) : Utilise un échantillonneur aléatoire entièrement seedable pour la reproductibilité.use_configured_state(bool, par défautFalse) : Utilise un étatAcceleratorState/PartialStatepréinitialisé au lieu d’en créer un nouveau. Peut causer des problèmes lors de l’ajustement des hyperparamètres.
- Chemin vers le fichier de configuration JSON :
- parallelism_config (
ParallelismConfig, facultatif) — Configuration du parallélisme pour l’exécution d’entraînement. Nécessite Accelerate1.10.1
Dataloader
- dataloader_drop_last (
bool, facultatif, valeur par défautFalse) — Indique s'il faut supprimer le dernier lot incomplet (si la longueur du jeu de données n'est pas divisible par la taille du lot) ou non. - dataloader_num_workers (
int, facultatif, valeur par défaut 0) — Nombre de sous-processus à utiliser pour le chargement des données (PyTorch uniquement). 0 signifie que les données seront chargées dans le processus principal. - dataloader_pin_memory (
bool, facultatif, valeur par défautTrue) — Indique si vous souhaitez épingler la mémoire dans les chargeurs de données ou non. La valeur par défaut estTrue. - dataloader_persistent_workers (
bool, facultatif, valeur par défautFalse) — Si True, le chargeur de données ne mettra pas fin aux processus de travail après qu’un jeu de données a été consommé une fois. Cela permet de maintenir les instances Dataset des travailleurs en vie. Peut potentiellement accélérer l’entraînement, mais augmentera l’utilisation de la RAM. La valeur par défaut seraFalse. - dataloader_prefetch_factor (
int, facultatif) — Nombre de lots chargés à l’avance par chaque worker. 2 signifie qu’il y aura au total 2 * num_workers lots préchargés sur l’ensemble des workers. - dataloader_multiprocessing_context (
str, facultatif) — Méthode de démarrage du multiprocessing à utiliser pour les workers de chargement des données ("fork","spawn"ou"forkserver"). Par défaut, la méthode de démarrage par défaut de PyTorch est utilisée, sauf sur MPS avecdataloader_num_workers > 1, où la valeur par défaut est"fork". Utilisez"spawn"lors du streaming depuis des sources dont les objets ne sont pas sûrs pour le fork (par ex. HDFS viapyarrow). Sous"spawn", tout code personnalisé decollate_fnou de jeu de données doit être importable au niveau du module (pas de lambdas/closures). - dataloader_in_order (
bool, facultatif, valeur par défautTrue) — SiTrue, le chargeur de données produit les lots dans l'ordre où les workers ont été dispatchés. DéfinissezFalsepour produire les lots dès qu'ils sont prêts, ce qui peut réduire la latence de fin pour les workloads de streamingIterableDataset. Nécessite PyTorch >= 2.6. - remove_unused_columns (
bool, facultatif, valeur par défautTrue) — Indique s'il faut supprimer automatiquement les colonnes non utilisées par la méthode forward du modèle. - label_names (
list[str], facultatif) — La liste des clés de votre dictionnaire d’entrées qui correspondent aux étiquettes. Par défaut, elle sera la liste des noms d’arguments acceptés par le modèle contenant le mot « label », sauf si le modèle utilisé est l’un desXxxForQuestionAnswering, auquel cas elle inclura également les clés["start_positions", "end_positions"]. Vous ne devez spécifierlabel_namesque si vous utilisez des noms d’étiquettes personnalisés ou si leforwardde votre modèle consomme plusieurs tenseurs d’étiquettes (par exemple, pour la QA extractive). - train_sampling_strategy (
str, facultatif, par défaut"random") — Le sampler à utiliser pour le dataloader d'entraînement. Les valeurs possibles sont :"random": utiliseRandomSampler(par défaut)."sequential": utiliseSequentialSampler."group_by_length": UtiliseLengthGroupedSamplerpour regrouper les échantillons de longueur approximativement identique (afin de minimiser le bourrage et d’être plus efficace)."batch_rebalance": UtiliseBatchRebalanceSamplerpour équilibrer le coût des jetons de bourrage entre les appareils et les étapes d'accumulation de gradient au sein de chaque lot effectif, réduisant ainsi le gaspillage de bourrage et la mémoire de pointe par rapport à"group_by_length". Actuellement, seul l'entraînement parallèle de données est pris en charge (le parallélisme de tenseurs n'est pas encore pris en charge).
Remarque : lors de l'utilisation d'un
IterableDataset, cet argument est ignoré. - length_column_name (
str, facultatif, par défaut"length") — Nom de la colonne contenant les longueurs précalculées. Si la colonne existe, le regroupement par longueur utilisera ces valeurs plutôt que de les calculer au démarrage de l’entraînement. Ignoré sauf sitrain_sampling_strategyest"group_by_length"ou"batch_rebalance"et que le jeu de données est une instance deDataset.
DDP (DistributedDataParallel)
- ddp_find_unused_parameters (
bool, facultatif) — Lors de l’utilisation de l’entraînement distribué, la valeur du drapeaufind_unused_parameterstransmis àDistributedDataParallel. La valeur par défaut estFalsesi le gradient checkpointing est utilisé,Truesinon. - ddp_bucket_cap_mb (
int, facultatif) — Lors de l’utilisation de l’entraînement distribué, la valeur du drapeaubucket_cap_mbtransmis àDistributedDataParallel. - ddp_broadcast_buffers (
bool, facultatif) — Lors de l'utilisation de l'entraînement distribué, la valeur du drapeaubroadcast_bufferspassée àDistributedDataParallel. Sera par défautFalsesi le gradient checkpointing est utilisé,Truesinon. - ddp_static_graph (
bool, facultatif) — Lors de l’utilisation de l’entraînement distribué, la valeur du drapeaustatic_graphtransmis àDistributedDataParallel. - ddp_backend (
str, facultatif) — Le backend à utiliser pour l'entraînement distribué. Doit être l'un des suivants :"nccl","mpi","xccl","gloo","hccl". - ddp_timeout (
int, facultatif, valeur par défaut 1800) — Délai d’attente pour les appels àtorch.distributed.init_process_group, utilisé pour éviter les dépassements de délai des sockets GPU lors de l’exécution d’opérations lentes dans des exécutions distribuées. Veuillez consulter la documentation PyTorch pour plus d’informations.
FSDP (Fully Sharded Data Parallel)
- fsdp (
bool, facultatif, par défautNone) — Active PyTorch Fully Sharded Data Parallel (FSDP) pour l’entraînement distribué. PassezTruepour activer FSDP. - fsdp_config (
strordict, optional) — Configuration settings for whenfsdpis enabled. Pass a path to a JSON config file, such asfsdp_config.json, or an already-loaded dict.Clés prises en charge :
- version (
int, facultatif, par défaut2) : La version de FSDP à utiliser (2pour FSDP2,1pour le FSDP1 legacy). - reshard_after_forward (
bool, facultatif, par défautTrue) : Indique s'il faut re-resshader les paramètres après le passage avant. Définissez-le surFalsepour conserver les paramètres regroupés entre les passages avant et arrière, ce qui évite le re-all-gather et entraîne une consommation mémoire de pointe plus élevée. - cpu_offload (
bool, facultatif, par défautFalse) : Décharge les paramètres et les gradients sur le CPU lorsqu'ils ne sont pas utilisés afin d'économiser la mémoire GPU. - activation_checkpointing (
bool, facultatif, par défautFalse) : À définir surTruepour réduire la mémoire en recalculant les activations lors de la passe arrière. Lors de l'utilisation de FSDP, privilégiez cette option par rapport à l'argument d'entraînementactivation_checkpointing, qui introduit un all-gather redondant lors de la passe arrière. - cpu_ram_efficient_loading (
bool, facultatif, par défautFalse) : À définir surTruepour charger le point de contrôle préentraîné uniquement sur le premier processus. Les autres processus démarrent avec des poids vides et reçoivent les poids par diffusion. - state_dict_type (
str, facultatif, par défaut"FULL_STATE_DICT") : Format de point de contrôle :"FULL_STATE_DICT"(fichier unique compatible HF) ou"SHARDED_STATE_DICT"(un fichier par rang, plus rapide pour les grands modèles). - auto_wrap_policy (
str, facultatif, par défaut"TRANSFORMER_BASED_WRAP") : Politique d’auto-wrap à utiliser. Choisissez"TRANSFORMER_BASED_WRAP","SIZE_BASED_WRAP"ou"NO_WRAP". - transformer_layer_cls_to_wrap (
list[str], facultatif) : Noms des classes de couches Transformer (sensibles à la casse) à envelopper, par exempleLlamaDecoderLayer. Généralement inutile : la politique d’enveloppement retombe sur_no_split_modulesdu modèle, qui couvre la plupart des modèles transformers. - min_num_params (
int, facultatif, valeur par défaut0) : Nombre minimal de paramètres par module pour l’auto-wrapping basé sur la taille (utilisé avecauto_wrap_policy="SIZE_BASED_WRAP"). - xla (
bool, facultatif, par défautFalse) : Indique s'il faut utiliser l'entraînement PyTorch/XLA Fully Sharded Data Parallel. Expérimental. - xla_fsdp_settings (
dict, facultatif) : Dictionnaire des paramètres d’emballage XLA FSDP. Pour la liste complète des options, voir le code source de XLA FSDP. - xla_fsdp_grad_ckpt (
bool, facultatif, valeur par défautFalse) : À définir surTruepour utiliser le gradient checkpointing sur chaque couche imbriquée enveloppée par XLA FSDP. Nécessitexla=Trueet une politique d’enveloppement automatique (min_num_paramsoutransformer_layer_cls_to_wrap).
- version (
DeepSpeed
- deepspeed (
stroudict, facultatif) — Active l'intégration DeepSpeed. La valeur est soit :- Chemin vers le fichier de configuration JSON de DeepSpeed :
"ds_config.json" - Configuration chargée en tant que dictionnaire
Si vous utilisez l’initialisation ZeRO, instanciez votre modèle après l’initialisation de
TrainingArguments, sinon ZeRO ne sera pas appliqué.
- Chemin vers le fichier de configuration JSON de DeepSpeed :
Débogage et profilage (expérimental)
- debug (
strou liste deDebugOption, facultatif, par défaut"") — Active une ou plusieurs fonctionnalités de débogage. Il s'agit d'une fonctionnalité expérimentale. Les options possibles sont :- “underflow_overflow” : détecte les dépassements dans les entrées/sorties du modèle et signale les derniers cadres ayant conduit à l'événement
- “tpu_metrics_debug” : affiche les métriques de débogage sur TPU
- skip_memory_metrics (
bool, facultatif, valeur par défautTrue) — Indique s'il faut ignorer l'ajout des rapports du profilage mémoire aux métriques. Cette opération est ignorée par défaut car elle ralentit la vitesse d'entraînement et d'évaluation.
Drapeaux de script externe (non utilisés par Trainer)
- do_train (
bool, facultatif, par défautFalse) — Indique s'il faut exécuter l'entraînement ou non. Cet argument n'est pas utilisé directement par Trainer ; il est destiné à être utilisé par vos scripts d'entraînement/évaluation. - do_eval (
bool, facultatif) — Indique s'il faut ou non exécuter une évaluation sur le jeu de validation. Sera défini àTruesieval_strategyest différent de"no". Cet argument n'est pas utilisé directement par Trainer, il est destiné à être utilisé par vos scripts d'entraînement/évaluation. - do_predict (
bool, facultatif, par défautFalse) — Indique s'il faut exécuter des prédictions sur le jeu de test ou non. Cet argument n'est pas utilisé directement par Trainer, il est destiné à être utilisé par vos scripts d'entraînement/évaluation. - resume_from_checkpoint (
str, facultatif) — Le chemin vers un dossier contenant un point de contrôle valide pour votre modèle. Cet argument n’est pas utilisé directement par Trainer, il est destiné à être utilisé par vos scripts d’entraînement/évaluation. - sortish_sampler (
bool, facultatif, défautFalse) — utiliser un sortish sampler ou non. N'est possible que si les jeux de données sous-jacents sont des Seq2SeqDataset pour le moment, mais sera disponible de manière générale à l'avenir.Il trie les entrées selon leurs longueurs afin de minimiser la taille du bourrage, avec un peu d'aléa pour l'ensemble d'entraînement.
- predict_with_generate (
bool, facultatif, valeur par défautFalse) — Indique s'il faut utiliser generate pour calculer les métriques génératives (ROUGE, BLEU). - generation_max_length (
int, facultatif) — Lamax_lengthà utiliser lors de chaque boucle d'évaluation lorsquepredict_with_generate=True. Par défaut, la valeur demax_lengthde la configuration du modèle est utilisée. - generation_num_beams (
int, facultatif) — Lenum_beamsà utiliser lors de chaque boucle d'évaluation lorsquepredict_with_generate=True. Par défaut, la valeur denum_beamsde la configuration du modèle est utilisée. - generation_config (
strouPathou GenerationConfig, facultatif) — Permet de charger un GenerationConfig à partir de lafrom_pretrainedméthode. Il peut s'agir de :- une chaîne de caractères, l'identifiant du modèle d'une configuration de modèle pré-entraîné hébergée dans un dépôt de modèles sur huggingface.co.
- un chemin vers un dossier contenant un fichier de configuration enregistré à l’aide de la méthode save_pretrained(), par exemple
./my_model_directory/. - un objet GenerationConfig.
Classe de configuration permettant de contrôler tous les aspects de l’entraînement du modèle avec le Trainer. TrainingArguments centralise tous les hyperparamètres, les réglages d’optimisation, les préférences de journalisation et les choix d’infrastructure nécessaires à l’entraînement.
HfArgumentParser peut convertir cette classe en arguments argparse qui peuvent être spécifiés sur la ligne de commande.
Sérialise cette instance en remplaçant Enum par leurs valeurs et GenerationConfig par des dictionnaires (pour la prise en charge de la sérialisation JSON). Elle obscurcit les valeurs des jetons en supprimant leur valeur.