Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
d25c11b
attempt at reproducibility
AyushExel Jun 14, 2022
ebe59e7
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 14, 2022
254d379
use deterministic algs
AyushExel Jun 15, 2022
85f4e16
fix everything :)
AyushExel Jun 17, 2022
942014f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 17, 2022
d764a75
revert dataloader changes
AyushExel Jun 17, 2022
a5a4f0f
Merge branch 'init_seeds' of https://github.com/AyushExel/yolov5 into…
AyushExel Jun 17, 2022
47da108
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 17, 2022
4971792
Merge branch 'master' into init_seeds
glenn-jocher Jun 18, 2022
695b665
process_batch as np
glenn-jocher Jun 18, 2022
03801eb
remove newline
glenn-jocher Jun 18, 2022
4cdecfe
Remove dataloader init fcn
glenn-jocher Jun 18, 2022
67475e8
Merge branch 'master' into init_seeds
glenn-jocher Jun 18, 2022
de2b114
Merge branch 'master' into init_seeds
glenn-jocher Jun 18, 2022
4a9dfbf
Update val.py
glenn-jocher Jun 18, 2022
b4f5f3d
Update train.py
glenn-jocher Jun 18, 2022
82af015
revert additional changes
glenn-jocher Jun 19, 2022
9220b5a
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 19, 2022
5366a14
Update train.py
glenn-jocher Jun 19, 2022
f798d8e
Add --seed arg
glenn-jocher Jun 19, 2022
63e0c3d
Merge branch 'master' into init_seeds
glenn-jocher Jun 27, 2022
4fea74c
Merge branch 'master' into init_seeds
glenn-jocher Jun 27, 2022
1eb9fba
Update general.py
glenn-jocher Jun 27, 2022
6dc813f
[pre-commit.ci] auto fixes from pre-commit.com hooks
pre-commit-ci[bot] Jun 27, 2022
7c6620e
Update train.py
glenn-jocher Jun 27, 2022
6d272fb
Update train.py
glenn-jocher Jun 27, 2022
dfd6306
Update val.py
glenn-jocher Jun 29, 2022
cfc1079
Update train.py
glenn-jocher Jun 29, 2022
c59d666
Update general.py
glenn-jocher Jun 29, 2022
d5cded4
Update general.py
glenn-jocher Jun 29, 2022
50b04df
Merge branch 'master' into init_seeds
glenn-jocher Jun 29, 2022
bdb498e
Merge branch 'master' into init_seeds
glenn-jocher Jun 30, 2022
8996465
Merge branch 'master' into init_seeds
glenn-jocher Jul 7, 2022
76e061e
Add deterministic argument to init_seeds()
glenn-jocher Jul 7, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion train.py
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ def train(hyp, opt, device, callbacks): # hyp is path/to/hyp.yaml or hyp dictio
# Config
plots = not evolve and not opt.noplots # create plots
cuda = device.type != 'cpu'
init_seeds(1 + RANK)
init_seeds(opt.seed + 1 + RANK, deterministic=True)
with torch_distributed_zero_first(LOCAL_RANK):
data_dict = data_dict or check_dataset(data) # check if None
train_path, val_path = data_dict['train'], data_dict['val']
Expand Down Expand Up @@ -504,6 +504,7 @@ def parse_opt(known=False):
parser.add_argument('--patience', type=int, default=100, help='EarlyStopping patience (epochs without improvement)')
parser.add_argument('--freeze', nargs='+', type=int, default=[0], help='Freeze layers: backbone=10, first3=0 1 2')
parser.add_argument('--save-period', type=int, default=-1, help='Save checkpoint every x epochs (disabled if < 1)')
parser.add_argument('--seed', type=int, default=0, help='Global training seed')
parser.add_argument('--local_rank', type=int, default=-1, help='Automatic DDP Multi-GPU argument, do not modify')

# Weights & Biases arguments
Expand Down
10 changes: 9 additions & 1 deletion utils/general.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,14 +195,22 @@ def print_args(args: Optional[dict] = None, show_file=True, show_fcn=False):
LOGGER.info(colorstr(s) + ', '.join(f'{k}={v}' for k, v in args.items()))


def init_seeds(seed=0):
def init_seeds(seed=0, deterministic=False):
# Initialize random number generator (RNG) seeds https://pytorch.org/docs/stable/notes/randomness.html
# cudnn seed 0 settings are slower and more reproducible, else faster and less reproducible
import torch.backends.cudnn as cudnn

if deterministic and check_version(torch.__version__, '1.12.0'): # https://github.com/ultralytics/yolov5/pull/8213
torch.use_deterministic_algorithms(True)
os.environ['CUBLAS_WORKSPACE_CONFIG'] = ':4096:8'
# os.environ['PYTHONHASHSEED'] = str(seed)

random.seed(seed)
np.random.seed(seed)
torch.manual_seed(seed)
cudnn.benchmark, cudnn.deterministic = (False, True) if seed == 0 else (True, False)
# torch.cuda.manual_seed(seed)
# torch.cuda.manual_seed_all(seed) # for multi GPU, exception safe


def intersect_dicts(da, db, exclude=()):
Expand Down