刚刚提到了,问题根源在于不同的显卡调用 worker_init_fn 时,无法区分自己属于哪张显卡 (没有利用rank),那么通过传入一个 partial 函数强行让 worker_init_fn 能够得知 rank 就可以区分了: def worker_init_fn(worker_id, num_workers, rank, seed): # The seed of each worker equals to # num_worker * ...
程序将def worker_init_fn 放在了trainer_synapse里面,所以外部调用trainer_synapse的时候找不到worker_init_fn函数(还没被定义) 所以我就简单地将代码改成了: defworker_init_fn(worker_id): random.seed(1234 +worker_id)deftrainer_synapse(args, model, snapshot_path):fromdatasets.dataset_synapseimportSynaps...