From 80523e79c8d4756dddad921e23bd4ec5d7aeee2a Mon Sep 17 00:00:00 2001 From: wangyukai Date: Mon, 8 Sep 2025 08:24:09 +0000 Subject: [PATCH] delete the useless load_from_pretrained flag. --- internnav/configs/trainer/il.py | 1 - internnav/model/__init__.py | 138 +----------------- .../configs/challenge_train_kujiale_cfg.py | 5 +- .../train/configs/challenge_train_mp3d_cfg.py | 3 +- scripts/train/configs/cma.py | 7 +- scripts/train/configs/cma_plus.py | 7 +- scripts/train/configs/navdp.py | 10 +- scripts/train/configs/rdp.py | 3 +- scripts/train/configs/seq2seq.py | 3 +- scripts/train/configs/seq2seq_plus.py | 3 +- 10 files changed, 22 insertions(+), 158 deletions(-) diff --git a/internnav/configs/trainer/il.py b/internnav/configs/trainer/il.py index 9fc4bc43..d35d7692 100644 --- a/internnav/configs/trainer/il.py +++ b/internnav/configs/trainer/il.py @@ -26,7 +26,6 @@ class IlCfg(BaseModel, extra='allow'): save_filter_frozen_weights: Optional[bool] = None load_from_ckpt: Optional[bool] ckpt_to_load: Optional[str] - load_from_pretrain: Optional[bool] dataset_r2r_root_dir: Optional[str] = None dataset_3dgs_root_dir: Optional[str] = None dataset_grutopia10_root_dir: Optional[str] = None diff --git a/internnav/model/__init__.py b/internnav/model/__init__.py index 02d8c4b5..9ac47edc 100644 --- a/internnav/model/__init__.py +++ b/internnav/model/__init__.py @@ -8,18 +8,17 @@ from .basemodel.cma.cma_clip_policy import CMA_CLIP_Net, CMACLIPModelConfig from .basemodel.cma.cma_policy import CMAModelConfig, CMANet -from .basemodel.rdp.rdp_policy import RDPNet, RDPModelConfig +from .basemodel.internvla_n1.internvla_n1_policy import ( + InternVLAN1ModelConfig, + InternVLAN1Net, +) from .basemodel.navdp.navdp_policy import NavDPModelConfig, NavDPNet - -from .basemodel.seq2seq.seq2seq_policy import Seq2SeqNet, Seq2SeqModelConfig - -from .basemodel.internvla_n1.internvla_n1_policy import InternVLAN1Net, InternVLAN1ModelConfig - +from .basemodel.rdp.rdp_policy import RDPModelConfig, RDPNet +from .basemodel.seq2seq.seq2seq_policy import Seq2SeqModelConfig, Seq2SeqNet from .utils.misc import set_cuda, set_random_seed, wrap_model from .utils.save import load_checkpoint - def get_policy(policy_name): if policy_name == 'CMA_CLIP_Policy': return CMA_CLIP_Net @@ -52,128 +51,3 @@ def get_config(policy_name): return NavDPModelConfig else: raise ValueError(f'Policy {policy_name} not found') - - -def initialize_policy( - config, - device=None, - action_stats=None, -) -> None: - from internnav.utils.common_log_util import common_logger as logger # 延迟导入 - - load_from_ckpt = config.il.load_from_ckpt - load_from_pretrain = config.il.load_from_pretrain - - default_gpu, n_gpu, device = set_cuda(config, device) - if default_gpu: - logger.info( - 'device: {} n_gpu: {}, distributed training: {}'.format(device, n_gpu, bool(config.local_rank != -1)) - ) - - seed = config.seed - if config.ddp.use: - seed += config.local_rank - set_random_seed(seed) - - # if default_gpu: - # save_training_meta(config) - - observation_space = spaces.Box( - low=0.0, - high=1.0, - shape=(256, 256, 1), - dtype=np.float32, - ) - - policy = get_policy(config.model.policy_name) - - self_policy = policy( - config=config.model, - observation_space=observation_space, - ) - - if load_from_pretrain: - new_ckpt_weights = {} - model_config = config.model - self_policy.load_state_dict(new_ckpt_weights, strict=False) - - start_epoch = 0 - if load_from_ckpt: - ckpt_path = config.il.ckpt_to_load - ckpt_dict = load_checkpoint(ckpt_path, map_location='cpu') - if 'state_dict' in ckpt_dict: - state_dict = ckpt_dict['state_dict'] - else: - state_dict = ckpt_dict - if 'epoch' in ckpt_dict: - start_epoch = ckpt_dict['epoch'] - new_state_dict = {} - # Iterate through the state dictionary items - for k, v in state_dict.items(): - new_key = k.replace('module.', '') - if config.model.policy_name != 'RDP_Policy': - new_key = new_key.replace('net.', '') # this is for cma policy - new_state_dict[new_key] = v - del state_dict[k] # Remove the old key with 'module.' - - incompatible_keys, _ = self_policy.load_state_dict(new_state_dict, strict=False) - if len(incompatible_keys) > 0: - logger.warning(f'Incompatible keys: {incompatible_keys}') - logger.info(f'Loaded weights from checkpoint: {ckpt_path}') - - params = sum(param.numel() for param in self_policy.parameters()) - params_t = sum(p.numel() for p in self_policy.parameters() if p.requires_grad) - logger.info(f'Agent parameters: {params / 1e6:.2f}M. Trainable: {params_t / 1e6:.2f}M') - logger.info('Finished setting up policy.') - - if len(config.torch_gpu_ids) == 1: - config.ddp.use = False - if config.ddp.use: - if config.ddp.use_dp: - # Data parallel - self_policy = wrap_model( - self_policy, - config.torch_gpu_ids, - config.local_rank, - logger, - config.world_size, - use_dp=config.ddp.use_dp, - ) - else: - # Distributed data parallel - self_policy = wrap_model( - self_policy, - torch.device(f'cuda:{config.local_rank}'), - config.local_rank, - logger, - config.world_size, - use_dp=config.ddp.use_dp, - ) - else: - self_policy.to(device) - - optimizer = torch.optim.Adam(self_policy.parameters(), lr=float(config.il.lr)) - - lr_scheduler = None - if config.il.lr_schedule.use: - if config.il.lr_schedule.type == 'cosine': - lr_scheduler = torch.optim.lr_scheduler.CosineAnnealingLR( - optimizer, - T_max=config.il.epochs, - eta_min=float(config.il.lr_schedule.min_lr), - ) - elif config.il.lr_schedule.type == 'step': - lr_scheduler = torch.optim.lr_scheduler.MultiStepLR( - optimizer, - milestones=config.il.lr_schedule.decay_epochs, - gamma=float(config.il.lr_schedule.decay_factor), - ) - elif config.il.lr_schedule.type == 'linear': - lr_scheduler = torch.optim.lr_scheduler.LinearLR( - optimizer, - start_factor=config.il.lr_schedule.warmup_factor, - end_factor=1.0, - total_iters=config.il.lr_schedule.warmup_epochs, - ) - - return self_policy, optimizer, lr_scheduler, start_epoch diff --git a/scripts/train/configs/challenge_train_kujiale_cfg.py b/scripts/train/configs/challenge_train_kujiale_cfg.py index 0b8c5d80..1c1eea78 100644 --- a/scripts/train/configs/challenge_train_kujiale_cfg.py +++ b/scripts/train/configs/challenge_train_kujiale_cfg.py @@ -39,8 +39,7 @@ warmup_ratio=0.1, save_filter_frozen_weights=True, load_from_ckpt=False, - ckpt_to_load='checkpoints/r2r/fine_tuned/rdp/checkpoint-104150', - load_from_pretrain=True, + ckpt_to_load='', dataset_r2r_root_dir='interiornav_data/raw_data/', dataset_3dgs_root_dir='', dataset_grutopia10_root_dir='', @@ -48,7 +47,7 @@ lerobot_features_dir='data/vln_pe/traj_data/interior', camera_name='pano_camera_0', report_to='wandb', # wandb, tensorboard, none - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15, diff --git a/scripts/train/configs/challenge_train_mp3d_cfg.py b/scripts/train/configs/challenge_train_mp3d_cfg.py index 694c599a..d9cc90e2 100644 --- a/scripts/train/configs/challenge_train_mp3d_cfg.py +++ b/scripts/train/configs/challenge_train_mp3d_cfg.py @@ -40,7 +40,6 @@ save_filter_frozen_weights=True, load_from_ckpt=False, ckpt_to_load='', - load_from_pretrain=True, dataset_r2r_root_dir='data/vln_pe/raw_data/r2r', dataset_3dgs_root_dir='', dataset_grutopia10_root_dir='', @@ -48,7 +47,7 @@ lerobot_features_dir='data/vln_pe/traj_data/r2r', camera_name='pano_camera_0', report_to='wandb', # wandb, tensorboard, none - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15, diff --git a/scripts/train/configs/cma.py b/scripts/train/configs/cma.py index 28279494..ef68685a 100644 --- a/scripts/train/configs/cma.py +++ b/scripts/train/configs/cma.py @@ -30,14 +30,13 @@ batch_size=2, lr=1e-4, num_workers=8, - weight_decay=1e-5, - warmup_ratio=0.05, + weight_decay=1e-5, + warmup_ratio=0.05, use_iw=True, inflection_weight_coef=3.2, save_filter_frozen_weights=False, load_from_ckpt=False, ckpt_to_load='', - load_from_pretrain=False, lmdb_map_size=1e12, dataset_r2r_root_dir='data/vln_pe/raw_data/r2r', dataset_3dgs_root_dir='', @@ -46,7 +45,7 @@ lerobot_features_dir='data/vln_pe/traj_data/r2r', camera_name='pano_camera_0', report_to='wandb', # wandb, tensorboard, none - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15, diff --git a/scripts/train/configs/cma_plus.py b/scripts/train/configs/cma_plus.py index e083663c..d4d48782 100644 --- a/scripts/train/configs/cma_plus.py +++ b/scripts/train/configs/cma_plus.py @@ -30,14 +30,13 @@ batch_size=2, lr=1e-4, num_workers=8, - weight_decay=1e-5, - warmup_ratio=0.05, + weight_decay=1e-5, + warmup_ratio=0.05, use_iw=True, inflection_weight_coef=3.2, save_filter_frozen_weights=False, load_from_ckpt=False, ckpt_to_load='checkpoints/r2r/zero_shot/cma', - load_from_pretrain=False, lmdb_map_size=1e12, dataset_r2r_root_dir='data/vln_pe/raw_data/r2r', dataset_3dgs_root_dir='', @@ -46,7 +45,7 @@ lerobot_features_dir='data/vln_pe/traj_data/r2r', camera_name='pano_camera_0', report_to='wandb', # wandb, tensorboard, none - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15, diff --git a/scripts/train/configs/navdp.py b/scripts/train/configs/navdp.py index cd8f9433..4085f8a8 100644 --- a/scripts/train/configs/navdp.py +++ b/scripts/train/configs/navdp.py @@ -2,7 +2,6 @@ from internnav.configs.trainer.eval import EvalCfg from internnav.configs.trainer.exp import ExpCfg from internnav.configs.trainer.il import FilterFailure, IlCfg, Loss -import os navdp_exp_cfg = ExpCfg( name='navdp_train', @@ -14,7 +13,7 @@ tensorboard_dir='checkpoints/%s/tensorboard', checkpoint_folder='checkpoints/%s/ckpts', log_dir='checkpoints/%s/logs', - local_rank= 0, + local_rank=0, # device = None, seed=0, eval=EvalCfg( @@ -41,7 +40,6 @@ save_filter_frozen_weights=False, load_from_ckpt=False, ckpt_to_load='', - load_from_pretrain=False, lmdb_map_size=1e12, dataset_r2r_root_dir='data/vln_pe/raw_data/r2r', dataset_3dgs_root_dir='', @@ -50,8 +48,8 @@ lerobot_features_dir='data/vln_pe/traj_data/r2r', camera_name='pano_camera_0', report_to='tensorboard', # wandb, tensorboard, none - dataset_navdp = 'data/datasets/navdp_dataset_lerobot.json', - root_dir = 'data/datasets/InternData-N1/vln_n1/traj_data', + dataset_navdp='data/datasets/navdp_dataset_lerobot.json', + root_dir='data/datasets/InternData-N1/vln_n1/traj_data', image_size=224, scene_scale=1.0, preload=False, @@ -66,7 +64,7 @@ dropout=0.1, scratch=False, finetune=False, - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15, diff --git a/scripts/train/configs/rdp.py b/scripts/train/configs/rdp.py index 694c599a..d9cc90e2 100644 --- a/scripts/train/configs/rdp.py +++ b/scripts/train/configs/rdp.py @@ -40,7 +40,6 @@ save_filter_frozen_weights=True, load_from_ckpt=False, ckpt_to_load='', - load_from_pretrain=True, dataset_r2r_root_dir='data/vln_pe/raw_data/r2r', dataset_3dgs_root_dir='', dataset_grutopia10_root_dir='', @@ -48,7 +47,7 @@ lerobot_features_dir='data/vln_pe/traj_data/r2r', camera_name='pano_camera_0', report_to='wandb', # wandb, tensorboard, none - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15, diff --git a/scripts/train/configs/seq2seq.py b/scripts/train/configs/seq2seq.py index a6a8532e..fa54b142 100644 --- a/scripts/train/configs/seq2seq.py +++ b/scripts/train/configs/seq2seq.py @@ -37,7 +37,6 @@ save_filter_frozen_weights=False, load_from_ckpt=False, ckpt_to_load='', - load_from_pretrain=True, lmdb_map_size=1e12, dataset_r2r_root_dir='data/vln_pe/raw_data/r2r', dataset_3dgs_root_dir='', @@ -46,7 +45,7 @@ lerobot_features_dir='data/vln_pe/traj_data/r2r', camera_name='pano_camera_0', report_to='wandb', # wandb, tensorboard, none - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15, diff --git a/scripts/train/configs/seq2seq_plus.py b/scripts/train/configs/seq2seq_plus.py index fb3f3cfb..d159ea46 100644 --- a/scripts/train/configs/seq2seq_plus.py +++ b/scripts/train/configs/seq2seq_plus.py @@ -37,7 +37,6 @@ save_filter_frozen_weights=False, load_from_ckpt=False, ckpt_to_load='checkpoints/r2r/zero_shot/seq2seq', - load_from_pretrain=True, lmdb_map_size=1e12, dataset_r2r_root_dir='data/vln_pe/raw_data/r2r', dataset_3dgs_root_dir='', @@ -46,7 +45,7 @@ lerobot_features_dir='data/vln_pe/traj_data/r2r', camera_name='pano_camera_0', report_to='wandb', # wandb, tensorboard, none - ddp_find_unused_parameters = True, + ddp_find_unused_parameters=True, filter_failure=FilterFailure( use=True, min_rgb_nums=15,