microsoft / microsoft/muzic

[MusicBERT] Dataloader bug during pretraining

Open
#63 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
5k
Forks
499
PR merge metrics
No merged PRs in 30d

Description

Hi, I preprocessed the raw dataset following the readme but found a bug during pretraining. There is the full stack trace:

Traceback (most recent call last):
  File "/usr/local/python3/lib/python3.6/site-packages/torch/multiprocessing/spawn.py", line 19, in _wrap
    fn(i, *args)
  File "/data/user/muzic/musicbert/fairseq/fairseq/distributed_utils.py", line 302, in distributed_main
    main(cfg, **kwargs)
  File "/data/user/muzic/musicbert/fairseq/fairseq_cli/train.py", line 137, in main
    valid_losses, should_stop = train(cfg, trainer, task, epoch_itr)
  File "/usr/local/python3/lib/python3.6/contextlib.py", line 52, in inner
    return func(*args, **kwds)
  File "/data/user/muzic/musicbert/fairseq/fairseq_cli/train.py", line 233, in train
    for i, samples in enumerate(progress):
  File "/data/user/muzic/musicbert/fairseq/fairseq/logging/progress_bar.py", line 256, in __iter__
    for i, obj in enumerate(self.iterable, start=self.n):
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/iterators.py", line 59, in __iter__
    for x in self.iterable:
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/iterators.py", line 473, in _chunk_iterator
    for x in itr:
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/iterators.py", line 59, in __iter__
    for x in self.iterable:
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/iterators.py", line 595, in __next__
    raise item
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/iterators.py", line 526, in run
    for item in self._source:
  File "/usr/local/python3/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 435, in __next__
    data = self._next_data()
  File "/usr/local/python3/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1085, in _next_data
    return self._process_data(data)
  File "/usr/local/python3/lib/python3.6/site-packages/torch/utils/data/dataloader.py", line 1111, in _process_data
    data.reraise()
  File "/usr/local/python3/lib/python3.6/site-packages/torch/_utils.py", line 428, in reraise
    raise self.exc_type(msg)
ValueError: Caught ValueError in DataLoader worker process 0.
Original Traceback (most recent call last):
  File "/usr/local/python3/lib/python3.6/site-packages/torch/utils/data/_utils/worker.py", line 198, in _worker_loop
    data = fetcher.fetch(index)
  File "/usr/local/python3/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 44, in fetch
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/usr/local/python3/lib/python3.6/site-packages/torch/utils/data/_utils/fetch.py", line 44, in <listcomp>
    data = [self.dataset[idx] for idx in possibly_batched_index]
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/base_wrapper_dataset.py", line 17, in __getitem__
    return self.dataset[index]
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/nested_dictionary_dataset.py", line 70, in __getitem__
    return OrderedDict((k, ds[index]) for k, ds in self.defn.items())
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/nested_dictionary_dataset.py", line 70, in <genexpr>
    return OrderedDict((k, ds[index]) for k, ds in self.defn.items())
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/base_wrapper_dataset.py", line 17, in __getitem__
    return self.dataset[index]
  File "/data/user/muzic/musicbert/fairseq/fairseq/data/lru_cache_dataset.py", line 17, in __getitem__
    return self.dataset[index]
  File "/data/user/muzic/musicbert/musicbert/__init__.py", line 219, in __getitem__
    ((item[8: -8: 8] - 4) * max_instruments) + (item[8 + 2: -8 + 2: 8] - 4)].flatten()
ValueError: could not broadcast input array from shape (752) into shape (747)

My environment:

torch 1.7.0
cuda 10
fairseq git version: 336942734c85791a90baa373c212d27e7c722662

Note that I enabled the --fp16 flag to speedup the training. This error is confusing. If convenient, can you provide a copy of your preprocessed-data-bin?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with musicbert/init.py at getitem line 219 and trace the indexing used by the DataLoader during pretraining. Reproduce the run using the README preprocessing steps and the reported environment, then determine what is needed for preprocessing and pretraining to complete without the broadcast ValueError.

Written by the indexing model from the issue text.

Assessment

Tech stack
python, pytorch
Domain
data, machine-learning
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.