Lightning-AI / Lightning-AI/pytorch-lightning

SLURM training: training freezes when using `ddp` and torchdata

Open
#17,066 12 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

3rd party bug data handling
Dominant language
Python
Stars
31.4k
Forks
3.8k
Avg merge
6d 7h
Merged PRs (30d)
6

Description

Bug description

Training freezes when using ddp on slurm cluster (dp runs as expected). The dataset is loaded via torchdata from an s3 bucket. Similar behaviour also arises when using webdataset.

Possibly a linked issue: https://github.com/Lightning-AI/lightning/issues/16893#issue-1602261381

Error:

No Error is thrown

UPDATE:

Removing val_step and test_step from pl.LightningModule gives us the following:

Epoch 0: : 27it [00:10,  2.57it/s, losTraceback (most recent call last):
  File "/fsx/knoriy/code/deep-learning-project-template/project/lit_td.py", line 152, in <module>
    cli_main()
  File "/fsx/knoriy/code/deep-learning-project-template/project/lit_td.py", line 148, in cli_main
    trainer.fit(model, datamodule=data)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 608, in fit
    call._call_and_handle_interrupt(
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/trainer/call.py", line 38, in _call_and_handle_interrupt
    return trainer_fn(*args, **kwargs)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 650, in _fit_impl
    self._run(model, ckpt_path=self.ckpt_path)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1112, in _run
    results = self._run_stage()
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1191, in _run_stage
    self._run_train()
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1214, in _run_train
    self.fit_loop.run()
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/loops/loop.py", line 200, in run
    self.on_advance_end()
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/loops/fit_loop.py", line 295, in on_advance_end
    self.trainer._call_callback_hooks("on_train_epoch_end")
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/trainer/trainer.py", line 1394, in _call_callback_hooks
    fn(self, self.lightning_module, *args, **kwargs)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 304, in on_train_epoch_end
    self._save_topk_checkpoint(trainer, monitor_candidates)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 363, in _save_topk_checkpoint
    self._save_none_monitor_checkpoint(trainer, monitor_candidates)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 666, in _save_none_monitor_checkpoint
    filepath = self._get_metric_interpolated_filepath_name(monitor_candidates, trainer)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 621, in _get_metric_interpolated_filepath_name
    while self.file_exists(filepath, trainer) and filepath != del_filepath:
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 729, in file_exists
    return trainer.strategy.broadcast(exists)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/pytorch_lightning/strategies/ddp.py", line 314, in broadcast
    torch.distributed.broadcast_object_list(obj, src, group=_group.WORLD)
  File "/fsx/home-knoriy/miniconda3/envs/clasp/lib/python3.9/site-packages/torch/distributed/distributed_c10d.py", line 2090, in broadcast_object_list
    object_tensor = torch.empty(  # type: ignore[call-overload]
TypeError: empty(): argument 'size' must be tuple of SymInts, but found element of type int at pos 1
srun: error: ip-26-0-130-13: task 1: Exited with exit code 1
How to reproduce the bug
import io
import json
from argparse import ArgumentParser

import torch
from torch import nn
from torch.nn import functional as F
from torch.utils.data import DataLoader
from torch.nn.utils.rnn import pad_sequence

import pytorch_lightning as pl

import torchdata
import soundfile
import librosa
import numpy as np


from typing import Optional


class MyModule(nn.Module):
	'''
	simpel model
	'''
	def __init__(self, hidden_dim) -> None:
		super().__init__()
		self.l1 = torch.nn.Conv1d(80, hidden_dim, 3)
		
	def forward(self, x):
		return self.l1(x)


class LitClassifier(pl.LightningModule):
	def __init__(self, hidden_dim=128, learning_rate=1e-3):
		super().__init__()
		self.save_hyperparameters()

		self.model = MyModule(self.hparams.hidden_dim)

	def forward(self, x):
		return self.model(x)

	def training_step(self, batch, batch_idx):
		out = self(batch)
		return F.mse_loss(out, out*2)
	
	def validation_step(self, batch, batch_idx):
		self(batch)

	def test_step(self, batch, batch_idx):
		self(batch)

	def configure_optimizers(self):
		return torch.optim.Adam(self.parameters(), lr=self.hparams.learning_rate)

	@staticmethod
	def add_model_specific_args(parent_parser):
		parser = ArgumentParser(parents=[parent_parser], add_help=False)
		parser.add_argument('--hidden_dim', type=int, default=128)
		parser.add_argument('--learning_rate', type=float, default=0.0001)
		return parser

class DataModule(pl.LightningDataModule):
	def __init__(self, batch_size: int = 32, num_workers=0):
		super().__init__()
		self.batch_size = batch_size
		self.num_workers = num_workers

	def setup(self, stage:Optional[str] = None):
		urls = ['s3://<bucket>/1.tar', 's3://<bucket>/2.tar', 's3://<bucket>/3.tar','s3://<bucket>/<n>.tar']
		self.train = self.get_datapipe(urls)
		self.val = self.get_datapipe(urls)
		self.test = self.get_datapipe(urls)
	def to_sampels(self, data):
		a, t = data
		return soundfile.read(io.BytesIO(a[1].read())), json.loads(t[1].read().decode('utf-8'))
	
	def get_datapipe(self, data_dir):
		datapipe = torchdata.datapipes.iter.IterableWrapper(data_dir)\
			.shuffle()\
			.sharding_filter()\
			.open_files_by_fsspec(mode='rb')\
			.load_from_tar() \
			.batch(2) \
			.map(self.to_sampels)
		return datapipe

	def collate_fn(self, data):
		mels = []
		for (a, _) in data:
			mel = librosa.feature.melspectrogram(y=a[0], sr=a[1], fmin=0, fmax=8000, n_mels=80, n_fft=1024, win_length=1024, hop_length=512)
			mel = librosa.power_to_db(mel, ref=np.max)
			mels.append(torch.tensor(mel, dtype=torch.float32).T)

		mels = pad_sequence(mels).permute(1,2,0)
		return mels

	def train_dataloader(self):
		return DataLoader(self.train, batch_size=self.batch_size, num_workers=self.num_workers, collate_fn=self.collate_fn)

	def val_dataloader(self):
		return DataLoader(self.val, batch_size=self.batch_size, num_workers=self.num_workers, collate_fn=self.collate_fn)

	def test_dataloader(self):
		return DataLoader(self.test, batch_size=self.batch_size, num_workers=self.num_workers, collate_fn=self.collate_fn)

def cli_main():
	pl.seed_everything(1234)

	# ------------
	# args
	# ------------
	parser = ArgumentParser()
	parser.add_argument('--batch_size', default=16, type=int)
	parser.add_argument('--num_workers', default=6, type=int)

	parser = pl.Trainer.add_argparse_args(parser)
	parser = LitClassifier.add_model_specific_args(parser)
	args = parser.parse_args()

	# ------------
	# data
	# ------------
	data = DataModule(num_workers=args.num_workers)

	# ------------
	# model
	# ------------
	model = LitClassifier(args.hidden_dim, args.learning_rate)

	# ------------
	# training
	# ------------
	trainer = pl.Trainer.from_argparse_args(args)
	trainer.fit(model, datamodule=data)


if __name__ == '__main__':
	cli_main()



## Sbatch submit.sh

```shell
#!/bin/bash
#SBATCH --ntasks-per-node=2
#SBATCH --gpus-per-node=2
#SBATCH --cpus-per-gpu=12
#SBATCH --output=%j.out
#SBATCH --signal=SIGUSR1@90

# debugging flags
export NCCL_DEBUG=INFO
export PYTHONFAULTHANDLER=1

srun /<user-Home>/miniconda3/envs/<ENV Name>/bin/python project/train.py \
    --max_epochs 3 \
    --accelerator gpu \
    --strategy ddp \
    --num_nodes 1 \
    --devices 2
Error messages and logs
[rank: 1] Global seed set to 1234
[rank: 0] Global seed set to 1234
GPU available: True (cuda), used: True
TPU available: False, using: 0 TPU cores
IPU available: False, using: 0 IPUs
HPU available: False, using: 0 HPUs
[rank: 0] Global seed set to 1234
[rank: 1] Global seed set to 1234
Initializing distributed: GLOBAL_RANK: 1, MEMBER: 2/2
Initializing distributed: GLOBAL_RANK: 0, MEMBER: 1/2
----------------------------------------------------------------------------------------------------
distributed_backend=nccl
All distributed processes registered. Starting with 2 processes
----------------------------------------------------------------------------------------------------

You are using a CUDA device ('NVIDIA A100-SXM4-40GB') that has Tensor Cores. To properly utilize them, you should set `torch.set_float32_matmul_precision('medium' | 'high')` which will trade-off precision for performance. For more details, read https://pytorch.org/docs/stable/generated/torch.set_float32_matmul_precision.html#torch.set_float32_matmul_precision
ip-26-0-128-136:3266267:3266267 [0] NCCL INFO Bootstrap : Using ens32:26.0.128.136<0>
ip-26-0-128-136:3266267:3266267 [0] NCCL INFO NET/Plugin: Failed to find ncclCollNetPlugin_v6 symbol.
ip-26-0-128-136:3266267:3266267 [0] NCCL INFO NET/Plugin: Failed to find ncclCollNetPlugin symbol (v4 or v5).
ip-26-0-128-136:3266267:3266267 [0] NCCL INFO cudaDriverVersion 12000
NCCL version 2.14.3+cuda11.7
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO NET/OFI Using aws-ofi-nccl 1.5.0aws
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO NET/OFI Configuring AWS-specific options
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO NET/OFI Setting NCCL_PROTO to "simple"
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO NET/OFI Running on p4d.24xlarge platform, Setting NCCL_TOPO_FILE environment variable to /opt/aws-ofi-nccl/share/aws-ofi-nccl/xml/p4d-24xl-topo.xml
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO NET/OFI Selected Provider is efa (found 4 nics)
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Using network AWS Libfabric
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Setting affinity for GPU 2 to 3f000000,00003f00
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 00/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 01/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 02/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 03/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 04/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 05/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 06/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 07/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 08/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 09/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 10/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 11/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 12/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 13/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 14/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 15/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 16/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 17/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 18/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 19/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 20/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 21/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 22/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 23/24 :    0   1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Trees [0] 1/-1/-1->0->-1 [1] 1/-1/-1->0->-1 [2] 1/-1/-1->0->-1 [3] 1/-1/-1->0->-1 [4] 1/-1/-1->0->-1 [5] 1/-1/-1->0->-1 [6] 1/-1/-1->0->-1 [7] 1/-1/-1->0->-1 [8] 1/-1/-1->0->-1 [9] 1/-1/-1->0->-1 [10] 1/-1/-1->0->-1 [11] 1/-1/-1->0->-1 [12] 1/-1/-1->0->-1 [13] 1/-1/-1->0->-1 [14] 1/-1/-1->0->-1 [15] 1/-1/-1->0->-1 [16] 1/-1/-1->0->-1 [17] 1/-1/-1->0->-1 [18] 1/-1/-1->0->-1 [19] 1/-1/-1->0->-1 [20] 1/-1/-1->0->-1 [21] 1/-1/-1->0->-1 [22] 1/-1/-1->0->-1 [23] 1/-1/-1->0->-1
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 00/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 01/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 02/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 03/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 04/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 05/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 06/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 07/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 08/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 09/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 10/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266268 [1] NCCL INFO cudaDriverVersion 12000
ip-26-0-128-136:3266268:3266268 [1] NCCL INFO Bootstrap : Using ens32:26.0.128.136<0>
ip-26-0-128-136:3266268:3266268 [1] NCCL INFO NET/Plugin: Failed to find ncclCollNetPlugin_v6 symbol.
ip-26-0-128-136:3266268:3266268 [1] NCCL INFO NET/Plugin: Failed to find ncclCollNetPlugin symbol (v4 or v5).
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO NET/OFI Using aws-ofi-nccl 1.5.0aws
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO NET/OFI Configuring AWS-specific options
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO NET/OFI Setting NCCL_PROTO to "simple"
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO NET/OFI Running on p4d.24xlarge platform, Setting NCCL_TOPO_FILE environment variable to /opt/aws-ofi-nccl/share/aws-ofi-nccl/xml/p4d-24xl-topo.xml
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO NET/OFI Selected Provider is efa (found 4 nics)
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Using network AWS Libfabric
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Setting affinity for GPU 3 to 3f000000,00003f00
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Trees [0] -1/-1/-1->1->0 [1] -1/-1/-1->1->0 [2] -1/-1/-1->1->0 [3] -1/-1/-1->1->0 [4] -1/-1/-1->1->0 [5] -1/-1/-1->1->0 [6] -1/-1/-1->1->0 [7] -1/-1/-1->1->0 [8] -1/-1/-1->1->0 [9] -1/-1/-1->1->0 [10] -1/-1/-1->1->0 [11] -1/-1/-1->1->0 [12] -1/-1/-1->1->0 [13] -1/-1/-1->1->0 [14] -1/-1/-1->1->0 [15] -1/-1/-1->1->0 [16] -1/-1/-1->1->0 [17] -1/-1/-1->1->0 [18] -1/-1/-1->1->0 [19] -1/-1/-1->1->0 [20] -1/-1/-1->1->0 [21] -1/-1/-1->1->0 [22] -1/-1/-1->1->0 [23] -1/-1/-1->1->0
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 00/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 01/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 02/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 03/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 04/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 05/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 06/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 07/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 08/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 09/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 10/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 11/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 12/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 13/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 14/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 15/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 16/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 17/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 18/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 19/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 20/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 21/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 22/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Channel 23/0 : 1[201d0] -> 0[201c0] via P2P/IPC/read
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Connected all rings
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [2,3]
LOCAL_RANK: 1 - CUDA_VISIBLE_DEVICES: [2,3]

  | Name  | Type     | Params
-----------------------------------
0 | model | MyModule | 30.8 K
-----------------------------------
30.8 K    Trainable params
0         Non-trainable params
30.8 K    Total params
0.123     Total estimated model params size (MB)
SLURM auto-requeueing enabled. Setting signal handlers.
SLURM auto-requeueing enabled. Setting signal handlers.
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 11/0 : 0[201c0] -
Sanity Checking: 0it [00:00, ?it/s]
Sanity Checking:   0%|          | 0/2 [00:00<?, ?it/s]
Sanity Checking DataLoader 0:   0%|          | 0/2 [00:00<?, ?it/s]
Sanity Checking DataLoader 0:  50%|█████     | 1/2 [00:03<00:03,  3.51s/it]
Sanity Checking DataLoader 0: 100%|██████████| 2/2 [00:03<00:00,  1.76s/it]
                                                                           

Training: 0it [00:00, ?it/s]
Training: 0it [00:00, ?it/s]
Epoch 0: : 0it [00:00, ?it/s]> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 12/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 13/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 14/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 15/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 16/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 17/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 18/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 19/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 20/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 21/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 22/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Channel 23/0 : 0[201c0] -> 1[201d0] via P2P/IPC/read
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Connected all rings
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO Connected all trees
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO threadThresholds 8/8/64 | 16/8/64 | 512 | 512
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO 24 coll channels, 32 p2p channels, 32 p2p channels per peer
ip-26-0-128-136:3266267:3266536 [0] NCCL INFO comm 0x55c843fb21f0 rank 0 nranks 2 cudaDev 0 busId 201c0 - Init COMPLETE
[W reducer.cpp:1298] Warning: find_unused_parameters=True was specified in DDP constructor, but did not find any unused parameters in the forward pass. This flag results in an extra traversal of the autograd graph every iteration,  which can adversely affect performance. If your model indeed never has any unused parameters in the forward pass, consider turning this flag off. Note that this warning may be a false positive if your model has flow control causing later iterations to have unused parameters. (function operator())
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO Connected all trees
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO threadThresholds 8/8/64 | 16/8/64 | 512 | 512
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO 24 coll channels, 32 p2p channels, 32 p2p channels per peer
ip-26-0-128-136:3266268:3266537 [1] NCCL INFO comm 0x562c2f4a3c50 rank 1 nranks 2 cudaDev 1 busId 201d0 - Init COMPLETE
[W reducer.cpp:1298] Warning: find_unused_parameters=True was specified in DDP constructor, but did not find any unused parameters in the forward pass. This flag results in an extra traversal of the autograd graph every iteration,  which can adversely affect performance. If your model indeed never has any unused parameters in the forward pass, consider turning this flag off. Note that this warning may be a false positive if your model has flow control causing later iterations to have unused parameters. (function operator())

Epoch 0: : 1it [00:02,  2.99s/it]
Epoch 0: : 1it [00:03,  3.22s/it, loss=511, v_num=49625]
Epoch 0: : 2it [00:03,  1.62s/it, loss=511, v_num=49625]
Epoch 0: : 2it [00:03,  1.82s/it, loss=496, v_num=49625]
Epoch 0: : 3it [00:03,  1.22s/it, loss=496, v_num=49625]
Epoch 0: : 3it [00:04,  1.40s/it, loss=537, v_num=49625]
Epoch 0: : 4it [00:04,  1.06s/it, loss=537, v_num=49625]
Epoch 0: : 4it [00:04,  1.20s/it, loss=548, v_num=49625]
Epoch 0: : 5it [00:04,  1.04it/s, loss=548, v_num=49625]
Epoch 0: : 5it [00:05,  1.10s/it, loss=557, v_num=49625]
Epoch 0: : 6it [00:05,  1.09it/s, loss=557, v_num=49625]
Epoch 0: : 6it [00:06,  1.02s/it, loss=557, v_num=49625]
Epoch 0: : 7it [00:06,  1.15it/s, loss=557, v_num=49625]
Epoch 0: : 7it [00:06,  1.04it/s, loss=553, v_num=49625]
Epoch 0: : 8it [00:06,  1.19it/s, loss=553, v_num=49625]
Epoch 0: : 8it [00:07,  1.04it/s, loss=546, v_num=49625]
Epoch 0: : 9it [00:07,  1.17it/s, loss=546, v_num=49625]
Epoch 0: : 9it [00:08,  1.04it/s, loss=530, v_num=49625]
Epoch 0: : 10it [00:
Environment
Current environment
* CUDA:
	- GPU:
		- NVIDIA A100-SXM4-40GB
		- NVIDIA A100-SXM4-40GB
	- available:         True
	- version:           11.7
* Lightning:
	- lightning-utilities: 0.8.0
	- pytorch-lightning: 1.9.4
	- torch:             1.13.1
	- torchaudio:        0.12.1
	- torchdata:         0.5.1
	- torchmetrics:      0.9.3
* Packages:
	- absl-py:           1.2.0
	- aiobotocore:       2.4.2
	- aiohttp:           3.8.3
	- aioitertools:      0.11.0
	- aiosignal:         1.2.0
	- appdirs:           1.4.4
	- async-timeout:     4.0.2
	- attrs:             22.1.0
	- audioread:         3.0.0
	- botocore:          1.27.59
	- braceexpand:       0.1.7
	- cachetools:        5.2.0
	- certifi:           2022.9.24
	- cffi:              1.15.1
	- charset-normalizer: 2.1.1
	- click:             8.1.3
	- contourpy:         1.0.5
	- cycler:            0.11.0
	- decorator:         5.1.1
	- deepspeed:         0.8.2
	- docker-pycreds:    0.4.0
	- filelock:          3.8.0
	- fonttools:         4.37.4
	- frozenlist:        1.3.1
	- fsspec:            2023.3.0
	- gitdb:             4.0.10
	- gitpython:         3.1.31
	- google-auth:       2.12.0
	- google-auth-oauthlib: 0.4.6
	- grpcio:            1.49.1
	- hjson:             3.1.0
	- huggingface-hub:   0.10.0
	- idna:              3.4
	- importlib-metadata: 5.0.0
	- inflect:           6.0.0
	- jmespath:          1.0.1
	- joblib:            1.2.0
	- kiwisolver:        1.4.4
	- librosa:           0.9.2
	- lightning-utilities: 0.8.0
	- llvmlite:          0.39.1
	- markdown:          3.4.1
	- markupsafe:        2.1.1
	- matplotlib:        3.6.0
	- mkl-fft:           1.3.1
	- mkl-random:        1.2.2
	- mkl-service:       2.4.0
	- more-itertools:    8.14.0
	- multidict:         6.0.2
	- ninja:             1.11.1
	- numba:             0.56.2
	- numpy:             1.23.1
	- nvidia-cublas-cu11: 11.10.3.66
	- nvidia-cuda-nvrtc-cu11: 11.7.99
	- nvidia-cuda-runtime-cu11: 11.7.99
	- nvidia-cudnn-cu11: 8.5.0.96
	- oauthlib:          3.2.1
	- packaging:         21.3
	- pathtools:         0.1.2
	- pillow:            9.2.0
	- pip:               22.2.2
	- pooch:             1.6.0
	- portalocker:       2.7.0
	- protobuf:          3.19.6
	- psutil:            5.9.4
	- py-cpuinfo:        9.0.0
	- pyasn1:            0.4.8
	- pyasn1-modules:    0.2.8
	- pycparser:         2.21
	- pydantic:          1.10.2
	- pydeprecate:       0.3.2
	- pyparsing:         3.0.9
	- python-dateutil:   2.8.2
	- pytorch-lightning: 1.9.4
	- pyyaml:            6.0
	- regex:             2022.9.13
	- requests:          2.28.1
	- requests-oauthlib: 1.3.1
	- resampy:           0.4.2
	- rsa:               4.9
	- s3fs:              2023.3.0
	- scikit-learn:      1.1.2
	- scipy:             1.9.1
	- sentry-sdk:        1.16.0
	- setproctitle:      1.3.2
	- setuptools:        59.8.0
	- six:               1.16.0
	- smmap:             5.0.0
	- soundfile:         0.11.0
	- tensorboard:       2.10.1
	- tensorboard-data-server: 0.6.1
	- tensorboard-plugin-wit: 1.8.1
	- threadpoolctl:     3.1.0
	- tokenizers:        0.12.1
	- torch:             1.13.1
	- torchaudio:        0.12.1
	- torchdata:         0.5.1
	- torchmetrics:      0.9.3
	- tqdm:              4.64.1
	- transformers:      4.22.2
	- typing-extensions: 4.3.0
	- unidecode:         1.3.6
	- urllib3:           1.26.12
	- wandb:             0.13.11
	- webdataset:        0.2.26
	- werkzeug:          2.2.2
	- wheel:             0.37.1
	- wrapt:             1.15.0
	- yarl:              1.8.1
	- zipp:              3.8.1
* System:
	- OS:                Linux
	- architecture:
		- 64bit
		- ELF
	- processor:         x86_64
	- python:            3.9.13
	- version:           #23~20.04.1-Ubuntu SMP Thu Aug 18 03:20:14 UTC 2022
* CUDA:
	- GPU:
		- NVIDIA A100-SXM4-40GB
		- NVIDIA A100-SXM4-40GB
	- available:         True
	- version:           11.7
* Lightning:
	- lightning-utilities: 0.8.0
	- pytorch-lightning: 1.9.4
	- torch:             1.13.1
	- torchaudio:        0.12.1
	- torchdata:         0.5.1
	- torchmetrics:      0.9.3
* Packages:
	- absl-py:           1.2.0
	- aiobotocore:       2.4.2
	- aiohttp:           3.8.3
	- aioitertools:      0.11.0
	- aiosignal:         1.2.0
	- appdirs:           1.4.4
	- async-timeout:     4.0.2
	- attrs:             22.1.0
	- audioread:         3.0.0
	- botocore:          1.27.59
	- braceexpand:       0.1.7
	- cachetools:        5.2.0
	- certifi:           2022.9.24
	- cffi:              1.15.1
	- charset-normalizer: 2.1.1
	- click:             8.1.3
	- contourpy:         1.0.5
	- cycler:            0.11.0
	- decorator:         5.1.1
	- deepspeed:         0.8.2
	- docker-pycreds:    0.4.0
	- filelock:          3.8.0
	- fonttools:         4.37.4
	- frozenlist:        1.3.1
	- fsspec:            2023.3.0
	- gitdb:             4.0.10
	- gitpython:         3.1.31
	- google-auth:       2.12.0
	- google-auth-oauthlib: 0.4.6
	- grpcio:            1.49.1
	- hjson:             3.1.0
	- huggingface-hub:   0.10.0
	- idna:              3.4
	- importlib-metadata: 5.0.0
	- inflect:           6.0.0
	- jmespath:          1.0.1
	- joblib:            1.2.0
	- kiwisolver:        1.4.4
	- librosa:           0.9.2
	- lightning-utilities: 0.8.0
	- llvmlite:          0.39.1
	- markdown:          3.4.1
	- markupsafe:        2.1.1
	- matplotlib:        3.6.0
	- mkl-fft:           1.3.1
	- mkl-random:        1.2.2
	- mkl-service:       2.4.0
	- more-itertools:    8.14.0
	- multidict:         6.0.2
	- ninja:             1.11.1
	- numba:             0.56.2
	- numpy:             1.23.1
	- nvidia-cublas-cu11: 11.10.3.66
	- nvidia-cuda-nvrtc-cu11: 11.7.99
	- nvidia-cuda-runtime-cu11: 11.7.99
	- nvidia-cudnn-cu11: 8.5.0.96
	- oauthlib:          3.2.1
	- packaging:         21.3
	- pathtools:         0.1.2
	- pillow:            9.2.0
	- pip:               22.2.2
	- pooch:             1.6.0
	- portalocker:       2.7.0
	- protobuf:          3.19.6
	- psutil:            5.9.4
	- py-cpuinfo:        9.0.0
	- pyasn1:            0.4.8
	- pyasn1-modules:    0.2.8
	- pycparser:         2.21
	- pydantic:          1.10.2
	- pydeprecate:       0.3.2
	- pyparsing:         3.0.9
	- python-dateutil:   2.8.2
	- pytorch-lightning: 1.9.4
	- pyyaml:            6.0
	- regex:             2022.9.13
	- requests:          2.28.1
	- requests-oauthlib: 1.3.1
	- resampy:           0.4.2
	- rsa:               4.9
	- s3fs:              2023.3.0
	- scikit-learn:      1.1.2
	- scipy:             1.9.1
	- sentry-sdk:        1.16.0
	- setproctitle:      1.3.2
	- setuptools:        59.8.0
	- six:               1.16.0
	- smmap:             5.0.0
	- soundfile:         0.11.0
	- tensorboard:       2.10.1
	- tensorboard-data-server: 0.6.1
	- tensorboard-plugin-wit: 1.8.1
	- threadpoolctl:     3.1.0
	- tokenizers:        0.12.1
	- torch:             1.13.1
	- torchaudio:        0.12.1
	- torchdata:         0.5.1
	- torchmetrics:      0.9.3
	- tqdm:              4.64.1
	- transformers:      4.22.2
	- typing-extensions: 4.3.0
	- unidecode:         1.3.6
	- urllib3:           1.26.12
	- wandb:             0.13.11
	- webdataset:        0.2.26
	- werkzeug:          2.2.2
	- wheel:             0.37.1
	- wrapt:             1.15.0
	- yarl:              1.8.1
	- zipp:              3.8.1
* System:
	- OS:                Linux
	- architecture:
		- 64bit
		- ELF
	- processor:         x86_64
	- python:            3.9.13
	- version:           #23~20.04.1-Ubuntu SMP Thu Aug 18 03:20:14 UTC 2022

More info

The model is able to finish an epoch when (line 51) .sharding_filter()\ is removed, but this result in undesirable behavior, if turned off workers will return the same batch multiple time

	def _create_pipeline(self, data_dir):
		datapipe = torchdata.datapipes.iter.IterableWrapper(data_dir)\
			.shuffle()\
			.open_files_by_fsspec(mode='rb')\
			.load_from_tar() \
			.batch(2) \
			.map(self.to_sampels)
		
		return datapipe

cc @justusschock @awaelchli

Contributor guide

Open the contributing guide

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 by reproducing the provided SLURM command with --strategy ddp, comparing it with dp, and inspect the traceback entry points in pytorch_lightning/strategies/ddp.py and pytorch_lightning/callbacks/model_checkpoint.py. Done means training with the shown torchdata or webdataset setup completes under DDP without freezing or the reported distributed error.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
distributed-systems, machine-learning
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.