Download neuralangelo-main/train.py from asmadeyi/nerf: direct link, hf CLI and curl.
- Browser
- Download file 4.13 kB
-
https://huggingface.co/asmadeyi/nerf/resolve/main/neuralangelo-main/train.py
- Command line
-
hf download hf://asmadeyi/nerf/neuralangelo-main/train.py
-
curl -L -o train.py https://huggingface.co/asmadeyi/nerf/resolve/main/neuralangelo-main/train.py
4.13 kB
| ''' | |
| ----------------------------------------------------------------------------- | |
| Copyright (c) 2023, NVIDIA CORPORATION. All rights reserved. | |
| NVIDIA CORPORATION and its licensors retain all intellectual property | |
| and proprietary rights in and to this software, related documentation | |
| and any modifications thereto. Any use, reproduction, disclosure or | |
| distribution of this software and related documentation without an express | |
| license agreement from NVIDIA CORPORATION is strictly prohibited. | |
| ----------------------------------------------------------------------------- | |
| ''' | |
| import argparse | |
| import os | |
| import imaginaire.config | |
| from imaginaire.config import Config, recursive_update_strict, parse_cmdline_arguments | |
| from imaginaire.utils.cudnn import init_cudnn | |
| from imaginaire.utils.distributed import init_dist, get_world_size, master_only_print as print, is_master | |
| from imaginaire.utils.gpu_affinity import set_affinity | |
| from imaginaire.trainers.utils.logging import init_logging | |
| from imaginaire.trainers.utils.get_trainer import get_trainer | |
| from imaginaire.utils.set_random_seed import set_random_seed | |
| def parse_args(): | |
| parser = argparse.ArgumentParser(description='Training') | |
| parser.add_argument('--config', help='Path to the training config file.', required=True) | |
| parser.add_argument('--logdir', help='Dir for saving logs and models.', default=None) | |
| parser.add_argument('--checkpoint', default=None, help='Checkpoint path.') | |
| parser.add_argument('--seed', type=int, default=0, help='Random seed.') | |
| parser.add_argument('--local_rank', type=int, default=os.getenv('LOCAL_RANK', 0)) | |
| parser.add_argument('--single_gpu', action='store_true') | |
| parser.add_argument('--debug', action='store_true') | |
| parser.add_argument('--profile', action='store_true') | |
| parser.add_argument('--show_pbar', action='store_true') | |
| parser.add_argument('--wandb', action='store_true', help="Enable using Weights & Biases as the logger") | |
| parser.add_argument('--wandb_name', default='default', type=str) | |
| parser.add_argument('--resume', action='store_true') | |
| args, cfg_cmd = parser.parse_known_args() | |
| return args, cfg_cmd | |
| def main(): | |
| args, cfg_cmd = parse_args() | |
| set_affinity(args.local_rank) | |
| cfg = Config(args.config) | |
| cfg_cmd = parse_cmdline_arguments(cfg_cmd) | |
| recursive_update_strict(cfg, cfg_cmd) | |
| # If args.single_gpu is set to True, we will disable distributed data parallel. | |
| if not args.single_gpu: | |
| # this disables nccl timeout | |
| os.environ["NCLL_BLOCKING_WAIT"] = "0" | |
| os.environ["NCCL_ASYNC_ERROR_HANDLING"] = "0" | |
| cfg.local_rank = args.local_rank | |
| init_dist(cfg.local_rank, rank=-1, world_size=-1) | |
| print(f"Training with {get_world_size()} GPUs.") | |
| # set random seed by rank | |
| set_random_seed(args.seed, by_rank=True) | |
| # Global arguments. | |
| imaginaire.config.DEBUG = args.debug | |
| # Create log directory for storing training results. | |
| cfg.logdir = init_logging(args.config, args.logdir, makedir=True) | |
| # Print and save final config | |
| if is_master(): | |
| cfg.print_config() | |
| cfg.save_config(cfg.logdir) | |
| # Initialize cudnn. | |
| init_cudnn(cfg.cudnn.deterministic, cfg.cudnn.benchmark) | |
| # Initialize data loaders and models. | |
| trainer = get_trainer(cfg, is_inference=False, seed=args.seed) | |
| trainer.set_data_loader(cfg, split="train") | |
| trainer.set_data_loader(cfg, split="val") | |
| trainer.checkpointer.load(args.checkpoint, args.resume, load_sch=True, load_opt=True) | |
| # Initialize Wandb. | |
| trainer.init_wandb(cfg, | |
| project=args.wandb_name, | |
| mode="disabled" if args.debug or not args.wandb else "online", | |
| resume=args.resume, | |
| use_group=True) | |
| trainer.mode = 'train' | |
| # Start training. | |
| trainer.train(cfg, | |
| trainer.train_data_loader, | |
| single_gpu=args.single_gpu, | |
| profile=args.profile, | |
| show_pbar=args.show_pbar) | |
| # Finalize training. | |
| trainer.finalize(cfg) | |
| if __name__ == "__main__": | |
| main() | |