import logging import traceback from finetrainers import Trainer, parse_arguments from finetrainers.constants import FINETRAINERS_LOG_LEVEL logger = logging.getLogger("finetrainers") logger.setLevel(FINETRAINERS_LOG_LEVEL) def main(): try: import multiprocessing multiprocessing.set_start_method("fork") except Exception as e: logger.error( f'Failed to set multiprocessing start method to "fork". This can lead to poor performance, high memory usage, or crashes. ' f"See: https://pytorch.org/docs/stable/notes/multiprocessing.html\n" f"Error: {e}" ) try: args = parse_arguments() trainer = Trainer(args) trainer.prepare_dataset() trainer.prepare_models() trainer.prepare_precomputations() trainer.prepare_trainable_parameters() trainer.prepare_optimizer() trainer.prepare_for_training() trainer.prepare_trackers() trainer.train() # trainer.evaluate() except KeyboardInterrupt: logger.info("Received keyboard interrupt. Exiting...") except Exception as e: logger.error(f"An error occurred during training: {e}") logger.error(traceback.format_exc()) if __name__ == "__main__": main()