Transformers documentation
Callbacks
Callbacks
Callbacks são objetos que podem personalizar o comportamento do loop de treinamento no Trainer do PyTorch, inspecionar o estado do loop de treinamento (para relatórios de progresso, registro no TensorBoard ou em outras plataformas de ML…) e tomar decisões (como parada antecipada).
Callbacks são trechos de código “somente leitura”: além do objeto TrainerControl que retornam, eles não podem alterar nada no loop de treinamento. Para personalizações que exigem mudanças no loop de treinamento, você deve criar uma subclasse de Trainer e sobrescrever os métodos necessários (veja trainer para exemplos).
Por padrão, TrainingArguments.report_to é definido como "none".
A classe principal que implementa os callbacks é TrainerCallback. Ela recebe os TrainingArguments usados para instanciar o Trainer, pode acessar o estado interno desse Trainer por meio de TrainerState e pode executar algumas ações no loop de treinamento por meio de TrainerControl.
Callbacks Disponíveis
Aqui está a lista dos TrainerCallback disponíveis na biblioteca:
Um TrainerCallback que envia os logs para o Comet ML.
Configure a integração opcional do Comet.
Ambiente:
- COMET_MODE (
str, opcional, padrãoget_or_create): Controla se deve criar e registrar em um novo experimento Comet ou anexar a um experimento existente. Aceita os seguintes valores:get_or_create: Decide automaticamente com base em seCOMET_EXPERIMENT_KEYestá definido e se já existe um Experiment com essa chave.create: Sempre crie um novo Experimento Comet.get: Sempre tente anexar a um Experimento Comet existente. Exige queCOMET_EXPERIMENT_KEYesteja definido.
- COMET_START_ONLINE (
bool, opcional): Se deve criar um Experimento online ou offline. - COMET_PROJECT_NAME (
str, opcional): Nome do projeto Comet para experimentos. - COMET_LOG_ASSETS (
str, opcional, padrãoTRUE): Se os ativos de treinamento (checkpoints, etc.) devem ser registrados no Comet. Pode serTRUEouFALSE.
Para uma lista de itens configuráveis no ambiente, consulte aqui.
Uma TrainerCallback que gerencia o fluxo padrão do loop de treinamento para logs, avaliação e checkpoints.
Um TrainerCallback simples que apenas imprime os logs.
Um TrainerCallback que exibe o progresso do treinamento ou da avaliação.
Você pode modificar max_str_len para controlar o comprimento máximo das strings ao registrar logs.
classe transformers.EarlyStoppingCallback
< source >( early_stopping_patience: int = 1early_stopping_threshold: float | None = 0.0 )
Parâmetros
- early_stopping_patience (
int) — Use commetric_for_best_modelpara interromper o treinamento quando a métrica especifica piorar porearly_stopping_patiencechamadas de avaliação. - early_stopping_threshold(
float, opcional) — Use com TrainingArgumentsmetric_for_best_modeleearly_stopping_patiencepara indicar em quanto a métrica especificada deve melhorar para satisfazer as condições de parada antecipada. `
Uma TrainerCallback que trata do encerramento antecipado.
Este callback depende da funcionalidade do argumento load_best_model_at_end de TrainingArguments para definir a best_metric em TrainerState. Observe que, se o argumento save_steps de TrainingArguments for diferente de eval_steps, o early stopping não ocorrerá até o próximo passo de salvamento.
classe transformers.integrations.TensorBoardCallback
< source >( tb_writer = None )
Uma TrainerCallback que envia os logs para o TensorBoard.
Ambiente:
- TENSORBOARD_LOGGING_DIR (
str, opcional, padrãoNone): O diretório de log para registrar os resultados. O valor padrão é os.path.join(args.output_dir, default_logdir())
Uma TrainerCallback que registra métricas no Trackio.
Configure a integração opcional com o Trackio.
Para personalizar a configuração, você também pode definir project, trackio_space_id, trackio_bucket_id, trackio_static_space_id e hub_private_repo em TrainingArguments.
Uma TrainerCallback que registra métricas, mídia e checkpoints do modelo no Weight and Biases.
Configure a integração opcional com Weights & Biases (wandb).
É possível criar uma subclasse e sobrescrever este método para personalizar a configuração, se necessário. Encontre mais informações aqui. Você também pode sobrescrever as seguintes variáveis de ambiente:
Ambiente:
- WANDB_LOG_MODEL (
str, opcional, padrão"false"): Se deve registrar o modelo e os checkpoints durante o treinamento. Pode ser"end","checkpoint"ou"false". Se definido como"end", o modelo será enviado ao final do treinamento. Se definido como"checkpoint", o checkpoint será enviado a cadaargs.save_steps. Se definido como"false", o modelo não será enviado. Use junto comload_best_model_at_end()para enviar o melhor modelo. - WANDB_WATCH (
str, opcional, padrão"false"): Pode ser"gradients","all","parameters"ou"false". Defina como"all"para registrar gradientes e parâmetros. - WANDB_PROJECT (
str, opcional, padrão"huggingface"): Defina este valor como uma string personalizada para armazenar os resultados em um projeto diferente.
Um TrainerCallback que envia os logs para o MLflow. Pode ser desativado definindo a variável de ambiente DISABLE_MLFLOW_INTEGRATION = TRUE.
Configure a integração opcional com o MLflow.
Ambiente:
- HF_MLFLOW_LOG_ARTIFACTS (
str, opcional): Se deve usar a funcionalidade.log_artifact()do MLflow para registrar artefatos. Isso só faz sentido se o registro for feito em um servidor remoto, por exemplo, s3 ou GCS. Se definido comoTrueou 1, cada checkpoint salvo em cada salvamento nooutput_dirde TrainingArguments será copiado para o armazenamento local ou remoto de artefatos. Usá-lo sem um armazenamento remoto apenas copiará os arquivos para o local de artefatos. - MLFLOW_TRACKING_URI (
str, opcional): Se deseja armazenar as execuções em um caminho específico ou em um servidor remoto. Não definido por padrão, o que ignora a configuração da URI de rastreamento. - MLFLOW_EXPERIMENT_NAME (
str, opcional, padrãoNone): Define se deve usar um experiment_name do MLflow sob o qual iniciar a execução. O padrão éNone, o que aponta para o experimentoDefaultno MLflow. Caso contrário, é um nome sensível a maiúsculas e minúsculas do experimento a ser ativado. Se um experimento com esse nome não existir, um novo experimento com esse nome será criado. - MLFLOW_TAGS (
str, opcional): Uma string com o despejo de um dicionário de pares chave/valor a ser adicionada à execução do MLflow como tags. Exemplo:os.environ['MLFLOW_TAGS']='{"release.candidate": "RC1", "release.version": "2.2.0"}'. - MLFLOW_NESTED_RUN (
str, opcional): Se deve usar execuções aninhadas do MLflow. Se definido comoTrueou 1, será criada uma execução aninhada dentro da execução atual. - MLFLOW_RUN_ID (
str, opcional): Permite reanexar a uma execução existente, o que pode ser útil ao retomar o treinamento a partir de um checkpoint. Quando a variável de ambienteMLFLOW_RUN_IDestá definida,start_runtenta retomar uma execução com o ID de execução especificado e os outros parâmetros são ignorados. - MLFLOW_FLATTEN_PARAMS (
str, opcional, padrãoFalse): Se deve achatar o dicionário de parâmetros antes de registrar. - MLFLOW_MAX_LOG_PARAMS (
int, opcional): Define o número máximo de parâmetros a serem registrados na execução.
Um TrainerCallback que envia os logs para o AzureML.
Um TrainerCallback que rastreia a emissão de CO2 do treinamento.
Um TrainerCallback que envia os logs para o ClearML.
Ambiente:
- CLEARML_PROJECT (
str, opcional, padrãoHuggingFace Transformers): Nome do projeto do ClearML. - CLEARML_TASK (
str, opcional, padrãoTrainer): Nome da tarefa do ClearML. - CLEARML_LOG_MODEL (
bool, opcional, padrãoFalse): Se os modelos devem ser registrados como artefatos durante o treinamento.
Um TrainerCallback que registra logs no DagsHub. Estende MLflowCallback
Configure a integração de Logging do DagsHub.
Ambiente:
- HF_DAGSHUB_LOG_ARTIFACTS (
str, opcional): Se os artefatos de dados e modelos do experimento devem ser salvos. O valor padrão éFalse.
classe transformers.integrations.FlyteCallback
< source >( save_log_history: bool = Truesync_checkpoints: bool = True )
Parâmetros
- save_log_history (
bool, opcional, padrãoTrue) — Quando definido como True, os logs de treinamento são salvos como um Flyte Deck. - sync_checkpoints (
bool, opcional, padrãoTrue) — Quando definido como True, os checkpoints são sincronizados com o Flyte e podem ser usados para retomar o treinamento em caso de interrupção.
Um TrainerCallback que envia os logs para o Flyte. NOTA: Este callback só funciona dentro de uma tarefa do Flyte.
Um TrainerCallback que relata o progresso do treinamento para o Kubeflow Trainer.
Este callback é registrado automaticamente durante o treinamento dentro de um Kubeflow TrainJob com o recurso TrainJobRuntimeStatus habilitado. O controlador do Kubeflow injeta as variáveis de ambiente necessárias no pod de treinamento.
Variáveis de ambiente (injetadas pelo controlador):
KUBEFLOW_TRAINER_SERVER_URL: endpoint HTTPS para atualizações de statusKUBEFLOW_TRAINER_SERVER_CA_CERT: Caminho para o certificado CA para verificação TLSKUBEFLOW_TRAINER_SERVER_TOKEN: Caminho para o token da conta de serviço para autenticação
Informações reportadas:
- Porcentagem de progresso (0-100%)
- Tempo restante estimado (segundos)
- Métricas de treinamento (loss, learning_rate, etc.)
Recursos:
- Limitação automática (máximo de 1 atualização a cada 5 segundos) para evitar sobrecarregar o controlador
- Cache de tokens (5 minutos) para minimizar a E/S de arquivos
- Apenas o rank 0 relata o progresso no treinamento distribuído
- Falhas silenciosas - problemas de rede não interromperão o treinamento
Pode ser desativado definindo a variável de ambiente DISABLE_KUBEFLOW_INTEGRATION=TRUE.
classe transformers.integrations.DVCLiveCallback
< source >( live: typing.Any | None = Nonelog_model: typing.Union[typing.Literal['all'], bool, NoneType] = None**kwargs )
Parâmetros
- live (
dvclive.Live, opcional, padrãoNone) — Instância Live opcional. Se for None, uma nova instância será criada usando **kwargs. - log_model (Union[Literal[“all”], bool], opcional, padrão
None) — Se deve usardvclive.Live.log_artifact()para registrar checkpoints criados pelo Trainer. Se definido comoTrue, o checkpoint final é registrado ao final do treinamento. Se definido como"all", o diretóriooutput_dirde TrainingArguments é registrado a cada checkpoint.
Um TrainerCallback que envia os logs para o DVCLive.
Use as variáveis de ambiente abaixo em setup para configurar a integração. Para personalizar este callback além
dessas variáveis de ambiente, veja aqui.
Configure a integração opcional com o DVCLive. Para personalizar esse callback além das variáveis de ambiente abaixo, consulte aqui.
Ambiente:
- HF_DVCLIVE_LOG_MODEL (
str, opcional): Se deve usardvclive.Live.log_artifact()para registrar os checkpoints criados pelo Trainer. Se definido comoTrueou 1, o checkpoint final é registrado ao final do treinamento. Se definido comoall, todo ooutput_dirdo TrainingArguments é registrado a cada checkpoint.
Um TrainerCallback que registra métricas, mídia e checkpoints do modelo no SwanLab.
Configure a integração opcional com o SwanLab (swanlab).
É possível criar uma subclasse e sobrescrever este método para personalizar a configuração, se necessário. Encontre mais informações aqui.
Você também pode sobrescrever as seguintes variáveis de ambiente. Encontre mais informações sobre variáveis de ambiente aqui
Ambiente:
SWANLAB_API_KEY (
str, opcional, padrãoNone): Chave de API da nuvem. Durante o login, esta variável de ambiente é verificada primeiro. Se ela não existir, o sistema verifica se o usuário já está conectado. Caso contrário, o processo de login é iniciado.- Se uma string for passada para a interface de login, essa variável de ambiente será ignorada.
- Se o usuário já estiver conectado, esta variável de ambiente tem precedência sobre as informações de login armazenadas localmente.
SWANLAB_PROJECT (
str, opcional, padrãoNone): Defina este valor como uma string personalizada para armazenar os resultados em um projeto diferente. Se não for especificado, será utilizado o nome do diretório de trabalho atual.SWANLAB_LOG_DIR (
str, opcional, padrãoswanlog): Esta variável de ambiente especifica o caminho de armazenamento para os arquivos de log ao executar no modo local. Por padrão, os logs são salvos em uma pasta chamada swanlog no diretório de trabalho.SWANLAB_MODE (
Literal["local", "cloud", "disabled"], opcional, padrãocloud): Modo de análise do SwanLab, que envolve callbacks registrados pelo operador. Atualmente, existem três modos: local, cloud e disabled. Observação: Diferencia maiúsculas de minúsculas. Encontre mais informações aquiSWANLAB_LOG_MODEL (
str, opcional, padrãoNone): O SwanLab não suporta atualmente a funcionalidade de modo de salvamento. Essa funcionalidade estará disponível em uma versão futuraSWANLAB_WEB_HOST (
str, opcional, padrãoNone): Endereço web para o ambiente em nuvem do SwanLab na versão privada (que é gratuita)SWANLAB_API_HOST (
str, opcional, padrãoNone): Endereço da API para o ambiente em nuvem do SwanLab na versão privada (que é gratuita)SWANLAB_RUN_ID (
str, opcional, padrãoNone): ID do experimento para retomar uma execução anterior. Use comSWANLAB_RESUMEpara continuar um experimento existente.SWANLAB_RESUME (
str, opcional, padrãoNone): Modo de retomada ("must","allow","never"). O padrão é"allow"quandoresume_from_checkpointé usado.
TrainerCallback
classe transformers.TrainerCallback
< source >( )
Parâmetros
- args (TrainingArguments) — Os argumentos de treinamento usados para instanciar o Trainer.
- state (TrainerState) — O estado atual do Trainer.
- control (TrainerControl) — O objeto que é retornado ao Trainer e pode ser usado para tomar algumas decisões.
- model (PreTrainedModel ou
torch.nn.Module) — O modelo que está sendo treinado. - processing_class ([
PreTrainedTokenizerouBaseImageProcessorouProcessorMixinouFeatureExtractionMixin]) — A classe de processamento usada para codificar os dados. Pode ser um tokenizer, um processor, um image processor ou um feature extractor. - optimizer (
torch.optim.Optimizer) — O otimizador usado para as etapas de treinamento. - lr_scheduler (
torch.optim.lr_scheduler.LambdaLR) — O agendador usado para definir a taxa de aprendizado. - train_dataloader (
torch.utils.data.DataLoader, opcional) — O dataloader atual usado para o treinamento. - eval_dataloader (
torch.utils.data.DataLoader, opcional) — O dataloader atual usado para avaliação. - metrics (
dict[str, float]) — As métricas calculadas na última fase de avaliação.Eles só estão acessíveis no evento
on_evaluate. - logs (
dict[str, float]) — Os valores a serem registrados.Eles só são acessíveis no evento
on_log.
Uma classe para objetos que inspecionam o estado do loop de treinamento em determinados eventos e tomam algumas decisões. Em cada um desses eventos, os seguintes argumentos estão disponíveis:
O objeto control é o único que pode ser alterado pelo callback, caso em que o evento que o modifica deve retornar a versão modificada.
Os argumentos args, state e control são posicionais para todos os eventos; todos os outros estão agrupados em kwargs.
Você pode desempacotar os que precisa na assinatura do evento usando-os. Como exemplo, veja o código do
simples PrinterCallback.
Exemplo:
class PrinterCallback(TrainerCallback):
def on_log(self, args, state, control, logs=None, **kwargs):
_ = logs.pop("total_flos", None)
if state.is_local_process_zero:
print(logs)on_epoch_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado no início de uma época.
on_epoch_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado no final de uma época.
on_evaluate
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado após uma fase de avaliação.
on_init_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado no final da inicialização do Trainer.
Evento chamado após o registro dos últimos logs.
on_optimizer_step
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado após o passo do otimizador, mas antes que os gradientes sejam zerados. Útil para monitorar gradientes.
on_pre_optimizer_step
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado antes da etapa do otimizador, mas após o recorte de gradientes. Útil para monitorar gradientes.
on_predict
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControlmetrics**kwargs )
Evento chamado após uma previsão bem-sucedida.
on_prediction_step
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado após uma etapa de previsão.
on_push_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado antes de enviar o modelo para o hub, no início de Trainer.push_to_hub e Trainer._push_from_checkpoint.
Evento chamado após o salvamento de um checkpoint.
on_step_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado no início de uma etapa de treinamento. Se estiver usando acúmulo de gradiente, uma etapa de treinamento pode levar vários inputs.
on_step_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado no final de uma etapa de treinamento. Se estiver usando acumulação de gradiente, uma etapa de treinamento pode levar vários inputs.
on_substep_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado no final de um subpasso durante a acumulação de gradientes.
on_train_begin
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado no início do treinamento.
on_train_end
< source >( args: TrainingArgumentsstate: TrainerStatecontrol: TrainerControl**kwargs )
Evento chamado ao final do treinamento.
Aqui está um exemplo de como registrar um callback personalizado com o Trainer do PyTorch:
class MyCallback(TrainerCallback):
"A callback that prints a message at the beginning of training"
def on_train_begin(self, args, state, control, **kwargs):
print("Starting training")
trainer = Trainer(
model,
args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
callbacks=[MyCallback], # We can either pass the callback class this way or an instance of it (MyCallback())
)Outra forma de registrar um callback é chamar trainer.add_callback() da seguinte maneira:
trainer = Trainer(...)
trainer.add_callback(MyCallback)
# Alternatively, we can pass an instance of the callback class
trainer.add_callback(MyCallback())TrainerState
classe transformers.TrainerState
< source >( epoch: float = 0global_step: int = 0max_steps: int = 0logging_steps: int = 500eval_steps: int = 500save_steps: int = 500train_batch_size: int | None = Nonenum_train_epochs: int = 0num_input_tokens_seen: int = 0total_flos: float = 0log_history: list = Nonebest_metric: float | None = Nonebest_global_step: int | None = Nonebest_model_checkpoint: str | None = Noneis_local_process_zero: bool = Trueis_world_process_zero: bool = Trueis_hyper_param_search: bool = Falsetrial_name: str | None = Nonetrial_params: dict[str, str | float | int | bool] | None = Nonestateful_callbacks: list['TrainerCallback'] | None = None )
Parâmetros
- epoch (
float, opcional) — Definido apenas durante o treinamento, representa a época em que o treinamento está (a parte decimal sendo a porcentagem da época atual concluída). - global_step (
int, opcional, padrão 0) — Durante o treinamento, representa o número de etapas de atualização concluídas. - max_steps (
int, opcional, padrão 0) — O número de etapas de atualização a serem realizadas durante o treinamento atual. - logging_steps (
int, opcional, padrão 500) — Registra a cada X etapas de atualização - eval_steps (
int, opcional) — Executa uma avaliação a cada X etapas. - save_steps (
int, opcional, padrão 500) — Salva um checkpoint a cada X etapas de atualização. - train_batch_size (
int, opcional) — O tamanho do lote para o dataloader de treinamento. Necessário apenas quandoauto_find_batch_sizefoi utilizado. - num_input_tokens_seen (
int, opcional, padrão 0) — Ao rastrear os tokens de entrada, o número de tokens vistos durante o treinamento (número de tokens de entrada, não o número de tokens de previsão). - total_flos (
float, opcional, padrão 0) — O número total de operações de ponto flutuante executadas pelo modelo desde o início do treinamento (armazenado como floats para evitar estouro de capacidade). - log_history (
list[dict[str, float]], opcional) — A lista de registros feitos desde o início do treinamento. - best_metric (
float, opcional) — Ao acompanhar o melhor modelo, o valor da melhor métrica encontrada até o momento. - best_global_step (
int, opcional) — Ao rastrear o melhor modelo, a etapa em que a melhor métrica foi encontrada. Usado para definirbest_model_checkpoint. - best_model_checkpoint (
str, opcional) — Ao acompanhar o melhor modelo, o valor do nome do checkpoint do melhor modelo encontrado até o momento. - is_local_process_zero (
bool, opcional, padrãoTrue) — Indica se este processo é o processo principal local (por exemplo, em uma única máquina, caso o treinamento seja distribuído entre várias máquinas). - is_world_process_zero (
bool, opcional, padrãoTrue) — Indica se este processo é o processo principal global (quando o treinamento é realizado de forma distribuída em várias máquinas, isso seráTrueapenas para um processo). - is_hyper_param_search (
bool, opcional, padrãoFalse) — Indica se estamos em um processo de busca de hiperparâmetros usando Trainer.hyperparameter_search. Isso afetará a forma como os dados serão registrados no TensorBoard. - stateful_callbacks (
list[StatefulTrainerCallback], opcional) — Callbacks anexados aoTrainerque devem ter seus estados salvos ou restaurados. Os callbacks relevantes devem implementar uma funçãostatee uma funçãofrom_state.
Uma classe que contém o estado interno do Trainer, que será salvo junto com o modelo e o otimizador durante o checkpointing e passado para o TrainerCallback.
Em toda esta classe, um passo deve ser entendido como um passo de atualização. Ao usar acúmulo de gradiente, um passo de atualização pode exigir várias passadas de frente e de trás: se você usar
gradient_accumulation_steps=n, então um passo de atualização exige percorrer n lotes.
Calcula e armazena o valor absoluto para as etapas de log, eval e save, com base em se era uma proporção ou não.
Armazena as referências iniciais de treinamento necessárias em self
Crie uma instância a partir do conteúdo de json_path.
Salve o conteúdo desta instância em formato JSON dentro de json_path.
TrainerControl
classe transformers.TrainerControl
< source >( should_training_stop: bool = Falseshould_epoch_stop: bool = Falseshould_save: bool = Falseshould_evaluate: bool = Falseshould_log: bool = False )
Parâmetros
- should_training_stop (
bool, opcional, padrãoFalse) — Indica se o treinamento deve ser interrompido.Se
True, essa variável não será redefinida paraFalse. O treinamento simplesmente será interrompido. - should_epoch_stop (
bool, opcional, padrãoFalse) — Indica se a epoch atual deve ser interrompida.Se
True, esta variável será redefinida paraFalseno início da próxima época. - should_save (
bool, opcional, padrão éFalse) — Indica se o modelo deve ser salvo nesta etapa.Se
True, esta variável será redefinida paraFalseno início da próxima etapa. - should_evaluate (
bool, opcional, padrão éFalse) — Indica se o modelo deve ser avaliado nesta etapa.Se
True, esta variável será redefinida paraFalseno início da próxima etapa. - should_log (
bool, opcional, padrãoFalse) — Indica se os logs devem ser reportados nesta etapa. Se for True, esta variável será redefinida para False no início da próxima etapa.Se
True, esta variável será redefinida paraFalseno início da próxima etapa.
Uma classe que gerencia o fluxo de controle do Trainer. Esta classe é usada pelo TrainerCallback para ativar alguns interruptores no loop de treinamento.