Skip to content

Commit

Permalink
[Fix] Enable --reuse with resume from original pkl files with same co…
Browse files Browse the repository at this point in the history
…mmit id
  • Loading branch information
FangXinyu-0913 committed Nov 20, 2024
1 parent 2b6b4a2 commit d35600e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
23 changes: 21 additions & 2 deletions run.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ def main():
if not args.reuse:
logger.warning('--reuse is not set, will start the evaluation from scratch')
else:
logger.warning('--reuse is set, will reuse the latest prediction files')
logger.warning('--reuse is set, will reuse the latest prediction files and pickle files')

if 'MMEVAL_ROOT' in os.environ:
args.work_dir = os.environ['MMEVAL_ROOT']
Expand All @@ -74,7 +74,7 @@ def main():
for _, model_name in enumerate(args.model):
model = None

eval_id = timencommit()
eval_id, commit_id = timencommit()
pred_root = osp.join(args.work_dir, model_name, eval_id)
pred_root_meta = osp.join(args.work_dir, model_name)
os.makedirs(pred_root_meta, exist_ok=True)
Expand Down Expand Up @@ -142,17 +142,36 @@ def main():

if rank == 0 and len(prev_pred_roots):
prev_result_file = None
prev_pkl_file_list = []
prev_pkl_file_name_list = []
for root in prev_pred_roots[::-1]:
if osp.exists(osp.join(root, result_file_base)):
prev_result_file = osp.join(root, result_file_base)
break
elif commit_id in root and len(ls(root)) and root != pred_root:
for existing_data_file in ls(root):
if '.pkl' in existing_data_file:
file_name = os.path.basename(existing_data_file)
if file_name not in prev_pkl_file_name_list:
prev_pkl_file_list.append(existing_data_file)
prev_pkl_file_name_list.append(file_name)
if not args.reuse:
prev_result_file = None
prev_pkl_file_list = []
prev_pkl_file_name_list = []
if prev_result_file is not None:
logger.warning(
f'--reuse is set, will reuse the prediction file {prev_result_file}.')
if prev_result_file != result_file:
shutil.copy(prev_result_file, result_file)
elif len(prev_pkl_file_list) and len(prev_pkl_file_name_list):
for file_name, org_file_path in zip(prev_pkl_file_name_list, prev_pkl_file_list):
target_path = os.path.join(pred_root, file_name)
if not os.path.exists(target_path):
shutil.copy(org_file_path, target_path)
logger.info(f'--reuse is set, will reuse the prediction pickle file {org_file_path}.')
else:
logger.warning(f'File already exists: {target_path}')

if world_size > 1:
dist.barrier()
Expand Down
2 changes: 1 addition & 1 deletion vlmeval/smp/misc.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ def githash(fallback='unknown', digits=8):
return sha

def timencommit():
return f"T{timestr('day')}_G{githash(digits=8)}"
return f"T{timestr('day')}_G{githash(digits=8)}", f"G{githash(digits=8)}"

def dict_merge(dct, merge_dct):
for k, _ in merge_dct.items():
Expand Down

0 comments on commit d35600e

Please sign in to comment.