def run()

in main_extract.py [0:0]


def run(input_size,architecture,weight_path,dataset_path,batch,workers,save_path,shared_folder_path,job_id,local_rank,global_rank,num_tasks):
    shared_folder=None
    data_folder_Path=None
    if Path(str(shared_folder_path)).is_dir():
        shared_folder=Path(shared_folder_path+"/extract/")
    else:
        raise RuntimeError("No shared folder available")
    if Path(str(dataset_path)).is_dir():
        data_folder_Path=Path(str(dataset_path))
    else:
        raise RuntimeError("No shared folder available")
    cluster_cfg = ClusterConfig(dist_backend="nccl", dist_url="")
    train_cfg = TrainerConfig(
                    data_folder=str(data_folder_Path),
                    architecture=architecture,
                    weight_path=weight_path,
                    input_size=input_size,
                    dataset_path=dataset_path,
                    batch_per_gpu=batch,
                    workers=workers,
                    save_path=save_path,
                    local_rank=local_rank,
                    global_rank=global_rank,
                    num_tasks=num_tasks,
                    job_id=job_id,
                    save_folder=str(shared_folder),
                    
                )
        
    os.makedirs(str(shared_folder), exist_ok=True)
    init_file = shared_folder / f"{uuid.uuid4().hex}_init"
    if init_file.exists():
        os.remove(str(init_file))

    cluster_cfg = cluster_cfg._replace(dist_url=init_file.as_uri())
    trainer = Trainer(train_cfg, cluster_cfg)
    
    #The code should be launch on each GPUs
    try:    
        if global_rank==0:
            val_accuracy = trainer.__call__()
            print(f"Validation accuracy: {val_accuracy}")
        else:
            trainer.__call__()
    except:
      print("Job failed")