Explora o papel essencial das chamadas de retorno na aprendizagem automática - ferramentas que monitorizam, controlam e automatizam a formação de modelos para uma maior precisão, flexibilidade e eficiência.
Callbacks são funções ou conjuntos de funções executadas em estágios específicos durante a execução de um processo maior, como o treinamento de um modelo de aprendizado de máquina. No contexto de IA e ML, as callbacks fornecem um mecanismo poderoso para monitorar estados internos, influenciar o comportamento do loop de treinamento e automatizar ações sem modificar o código principal da estrutura de treinamento. Elas atuam como ganchos no pipeline de treinamento, permitindo que os desenvolvedores injetem lógica personalizada em pontos predefinidos, como o início ou o fim de uma época, lote ou todo o processo de treinamento.
Durante o treino do modelo, vários eventos ocorrem sequencialmente: o treino começa, um época inicia, um lote é processado, ocorre a validação, termina uma época e, finalmente, conclui o treino. Os retornos de chamada permitem-te ativar acções específicas associadas a estes eventos. Por exemplo, podes querer guardar os pesos do modelo sempre que a precisão da validação melhorar, registar métricas numa ferramenta de visualização como TensorBoardou interrompe o treino mais cedo se o modelo deixar de melhorar. Estruturas como Keras e bibliotecas como a ultralytics
O pacote Python utiliza fortemente callbacks para oferecer flexibilidade e extensibilidade.
O motor de formação Ultralytics fornece um sistema de chamadas de retorno que são acionadas em vários pontos durante a formação, validação, previsãoe exportação processos. Estes eventos incluem on_train_start
, on_epoch_end
, on_fit_epoch_end
(que inclui a validação), on_batch_end
, on_train_end
e muitos outros. Os utilizadores podem definir callbacks personalizados para executar acções como o registo detalhado, o envio de notificações ou a interação com plataformas como Ultralytics HUB.
from ultralytics import YOLO
from ultralytics.engine.callbacks import BaseCallback
# Define a simple custom callback
class MyCallback(BaseCallback):
def on_epoch_end(self, trainer): # This code will run at the end of each epoch
print(f"Epoch {trainer.epoch + 1} finished.") # Example: Access metrics like validation loss
if trainer.metrics:
val_loss = trainer.metrics.get('val/loss', None) # Example metric key, adjust as needed
if val_loss is not None:
print(f"Validation loss: {val_loss:.4f}")
# Load a model
model = YOLO('yolov8n.yaml').load('yolov8n.pt') # build from YAML and transfer weights
# Initialize your callback
my_callback = MyCallback()
# Add the callback to the training process
# Note: Direct addition via API might vary; often done via configuration or extending Trainer
# For demonstration, assume a mechanism exists like adding to a list or overriding methods.
# In Ultralytics, callbacks are often managed internally or via specific integrations.
# A conceptual example of how one might use it if Trainer exposed callbacks directly:
# trainer.add_callback(my_callback) # Hypothetical method
# Train the model (the callback methods are triggered automatically by the Trainer)
# The actual mechanism involves the Trainer checking for registered callbacks for specific events.
try: # This is a simplified representation. Callbacks are typically integrated deeper. # We can simulate adding callback logic by overriding trainer methods or using signals if available. # The Ultralytics framework automatically handles registered internal and integration callbacks. # To add custom behaviour like this, you might need to modify the source or use provided extension points.
print("Training started (callback logic would be triggered internally)...") # Example: Manually trigger for demonstration if needed for testing callback logic # my_callback.on_epoch_end(trainer_mock_object)
results = model.train(data='coco128.yaml', epochs=3, imgsz=640) # Training triggers internal events
print("Training finished.")
except Exception as e:
print(f"An error occurred: {e}")
# Example of using an existing integration callback (e.g., TensorBoard)
# This is usually enabled via arguments or configuration:
# results = model.train(data='coco128.yaml', epochs=3, imgsz=640, tensorboard=True)
As callbacks permitem inúmeras funcionalidades úteis durante o desenvolvimento do modelo ML:
As chamadas de retorno são fundamentais para criar fluxos de trabalho de aprendizagem automática flexíveis, automatizados e observáveis, permitindo aos programadores alargar e personalizar os processos de formação de forma eficiente. Diferem ligeiramente dos ouvintes de eventos de software gerais por estarem fortemente integrados nas fases específicas do ciclo de vida da formação e avaliação de ML.