Lightning-AI / Lightning-AI/pytorch-lightning

Deadlock on `log_dict` with different keys across ranks

Open
#19,106 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

bug logging ver: 2.0.x
Dominant language
Python
Stars
31.4k
Forks
3.8k
Avg merge
6d 7h
Merged PRs (30d)
6

Description

Bug description

Logging dictionaries across ranks with different keys lead to NCCL silently dying. The expected behavior is for only the existing keys across dictionaries to be averaged.

What version are you seeing the problem on?

v2.0

How to reproduce the bug

Use multiple GPUs!

import pytorch_lightning as pl
import torch
import random

class SimpleNetwork(pl.LightningModule):
    def __init__(self):
        super().__init__()
        self.layer = torch.nn.Linear(32, 2)

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

    def training_step(self, batch, batch_idx):
        x, y = batch
        y_hat = self(x)
        loss = torch.nn.functional.mse_loss(y_hat, y)
        return loss

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

    def train_dataloader(self):
        return torch.utils.data.DataLoader(
            torch.utils.data.TensorDataset(torch.randn(100, 32), torch.randn(100, 2)),
            batch_size=32,
        )
    
    # use log_dict to log metrics
    def training_step(self, batch, batch_idx):
        x, y = batch
        y_hat = self(x)
        loss = torch.nn.functional.mse_loss(y_hat, y)
        dict_to_log = {'loss': loss}
        randomly_add_another_metric = random.random()
        if randomly_add_another_metric > 0.5:
            dict_to_log['another_metric'] = torch.tensor(random.random())
        self.log_dict(
            dict_to_log,
            on_step=False,
            on_epoch=True,
            sync_dist=True,
            batch_size=32,
        )
        return loss

def train_network():
    # Initialize the Lightning Trainer
    trainer = pl.Trainer(
        max_epochs=10,
    )

    # Create an instance of your SimpleNetwork
    model = SimpleNetwork()

    # Start the training
    trainer.fit(model)

train_network()
Error messages and logs
[I debug.cpp:49] [c10d] The debug level is set to DETAIL.
/myenv/python3.10/site-packages/lightning_fabric/plugins/environments/slurm.py:191: The `srun` command is available on your system but is not used. HINT: If your intention is to run Lightning on SLURM, prepend your python command with `srun` like so: srun python examples/nccl_bug.py ...
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
/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/logger_connector.py:67: Starting from v1.9.0, `tensorboardX` has been removed as a dependency of the `pytorch_lightning` package, due to potential conflicts with other packages in the ML ecosystem. For this reason, `logger=True` will use `CSVLogger` as the default logger, unless the `tensorboard` or `tensorboardX` packages are found. Please `pip install lightning[extra]` or one of them to enable TensorBoard support by default
Initializing distributed: GLOBAL_RANK: 0, MEMBER: 1/4
[I socket.cpp:452] [c10d - debug] The server socket will attempt to listen on an IPv6 address.
[I socket.cpp:502] [c10d - debug] The server socket is attempting to listen on [::]:32903.
[I socket.cpp:576] [c10d] The server socket has started to listen on [::]:32903.
[I TCPStore.cpp:252] [c10d - debug] The server has started on port = 32903.
[I socket.cpp:686] [c10d - debug] The client socket will attempt to connect to an IPv6 address of (127.0.0.1, 32903).
[I socket.cpp:761] [c10d - trace] The client socket is attempting to connect to [localhost]:32903.
[I socket.cpp:849] [c10d] The client socket has connected to [localhost]:32903 on [localhost]:49152.
[I TCPStore.cpp:261] [c10d - debug] TCP client connected to host 127.0.0.1:32903
[I socket.cpp:297] [c10d - debug] The server socket on [::]:32903 has accepted a connection from [localhost]:49152.
[I debug.cpp:49] [c10d] The debug level is set to DETAIL.
[I debug.cpp:49] [c10d] The debug level is set to DETAIL.
[I debug.cpp:49] [c10d] The debug level is set to DETAIL.
Initializing distributed: GLOBAL_RANK: 1, MEMBER: 2/4
[I socket.cpp:686] [c10d - debug] The client socket will attempt to connect to an IPv6 address of (127.0.0.1, 32903).
[I socket.cpp:761] [c10d - trace] The client socket is attempting to connect to [localhost]:32903.
[I socket.cpp:297] [c10d - debug] The server socket on [::]:32903 has accepted a connection from [localhost]:49156.
[I socket.cpp:849] [c10d] The client socket has connected to [localhost]:32903 on [localhost]:49156.
[I TCPStore.cpp:261] [c10d - debug] TCP client connected to host 127.0.0.1:32903
Initializing distributed: GLOBAL_RANK: 3, MEMBER: 4/4
[I socket.cpp:686] [c10d - debug] The client socket will attempt to connect to an IPv6 address of (127.0.0.1, 32903).
[I socket.cpp:761] [c10d - trace] The client socket is attempting to connect to [localhost]:32903.
[I socket.cpp:849] [c10d] The client socket has connected to [localhost]:32903 on [localhost]:49168.
[I TCPStore.cpp:261] [c10d - debug] TCP client connected to host 127.0.0.1:32903
[I socket.cpp:297] [c10d - debug] The server socket on [::]:32903 has accepted a connection from [localhost]:49168.
Initializing distributed: GLOBAL_RANK: 2, MEMBER: 3/4
[I socket.cpp:686] [c10d - debug] The client socket will attempt to connect to an IPv6 address of (127.0.0.1, 32903).
[I socket.cpp:761] [c10d - trace] The client socket is attempting to connect to [localhost]:32903.
[I socket.cpp:849] [c10d] The client socket has connected to [localhost]:32903 on [localhost]:49180.
[I TCPStore.cpp:261] [c10d - debug] TCP client connected to host 127.0.0.1:32903
[I socket.cpp:297] [c10d - debug] The server socket on [::]:32903 has accepted a connection from [localhost]:49180.
[I ProcessGroupNCCL.cpp:686] [Rank 3] ProcessGroupNCCL initialization options:NCCL_ASYNC_ERROR_HANDLING: 1, NCCL_DESYNC_DEBUG: 1, NCCL_ENABLE_TIMING: 1, NCCL_BLOCKING_WAIT: 0, TIMEOUT(ms): 1800000, USE_HIGH_PRIORITY_STREAM: 0, TORCH_DISTRIBUTED_DEBUG: DETAIL, NCCL_DEBUG: INFO, ID=94642481533456
[I ProcessGroupNCCL.cpp:686] [Rank 1] ProcessGroupNCCL initialization options:NCCL_ASYNC_ERROR_HANDLING: 1, NCCL_DESYNC_DEBUG: 1, NCCL_ENABLE_TIMING: 1, NCCL_BLOCKING_WAIT: 0, TIMEOUT(ms): 1800000, USE_HIGH_PRIORITY_STREAM: 0, TORCH_DISTRIBUTED_DEBUG: DETAIL, NCCL_DEBUG: INFO, ID=94638613432384
[I ProcessGroupNCCL.cpp:686] [Rank 2] ProcessGroupNCCL initialization options:NCCL_ASYNC_ERROR_HANDLING: 1, NCCL_DESYNC_DEBUG: 1, NCCL_ENABLE_TIMING: 1, NCCL_BLOCKING_WAIT: 0, TIMEOUT(ms): 1800000, USE_HIGH_PRIORITY_STREAM: 0, TORCH_DISTRIBUTED_DEBUG: DETAIL, NCCL_DEBUG: INFO, ID=94495567931760
[I ProcessGroupNCCL.cpp:686] [Rank 0] ProcessGroupNCCL initialization options:NCCL_ASYNC_ERROR_HANDLING: 1, NCCL_DESYNC_DEBUG: 1, NCCL_ENABLE_TIMING: 1, NCCL_BLOCKING_WAIT: 0, TIMEOUT(ms): 1800000, USE_HIGH_PRIORITY_STREAM: 0, TORCH_DISTRIBUTED_DEBUG: DETAIL, NCCL_DEBUG: INFO, ID=94904165283424
----------------------------------------------------------------------------------------------------
distributed_backend=nccl
All distributed processes registered. Starting with 4 processes
----------------------------------------------------------------------------------------------------

[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=0, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=0, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=0, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=0, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupNCCL.cpp:1340] NCCL_DEBUG: INFO
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=1, OpType=BROADCAST, TensorShape=[61], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=1, OpType=BROADCAST, TensorShape=[61], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=1, OpType=BROADCAST, TensorShape=[61], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=1, OpType=BROADCAST, TensorShape=[61], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=2OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=2OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=2OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=2OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=3, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=3, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=3, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=3, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=4, OpType=BROADCAST, TensorShape=[73], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=4, OpType=BROADCAST, TensorShape=[73], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=4, OpType=BROADCAST, TensorShape=[73], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=4, OpType=BROADCAST, TensorShape=[73], TensorDtypes=Byte, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=5OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=5OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=5OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=5OpType=BARRIER)
LOCAL_RANK: 0 - CUDA_VISIBLE_DEVICES: [0,1,2,3]
LOCAL_RANK: 3 - CUDA_VISIBLE_DEVICES: [0,1,2,3]
LOCAL_RANK: 2 - CUDA_VISIBLE_DEVICES: [0,1,2,3]
LOCAL_RANK: 1 - CUDA_VISIBLE_DEVICES: [0,1,2,3]
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=6, OpType=ALLGATHER, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=6, OpType=ALLGATHER, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=6, OpType=ALLGATHER, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=6, OpType=ALLGATHER, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=7, OpType=BROADCAST, TensorShape=[6], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=7, OpType=BROADCAST, TensorShape=[6], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=7, OpType=BROADCAST, TensorShape=[6], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=7, OpType=BROADCAST, TensorShape=[6], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=8, OpType=BROADCAST, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=8, OpType=BROADCAST, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=8, OpType=BROADCAST, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=8, OpType=BROADCAST, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I reducer.cpp:127] Reducer initialized with bucket_bytes_cap: 26214400 first_bucket_bytes_cap: 1048576
[I reducer.cpp:127] Reducer initialized with bucket_bytes_cap: 26214400 first_bucket_bytes_cap: 1048576
[I reducer.cpp:127] Reducer initialized with bucket_bytes_cap: 26214400 first_bucket_bytes_cap: 1048576
[I reducer.cpp:127] Reducer initialized with bucket_bytes_cap: 26214400 first_bucket_bytes_cap: 1048576
[I logger.cpp:215] [Rank 3]: DDP Initialized with: 
broadcast_buffers: 1
bucket_cap_bytes: 26214400
find_unused_parameters: 0
gradient_as_bucket_view: 0
has_sync_bn: 0
is_multi_device_module: 0
iteration: 0
num_parameter_tensors: 2
output_device: 3
rank: 3
total_parameter_size_bytes: 264
world_size: 4
backend_name: nccl
bucket_sizes: 264
cuda_visible_devices: 0,1,2,3
device_ids: 3
dtypes: float
master_addr: 127.0.0.1
master_port: 32903
module_name: SimpleNetwork
nccl_async_error_handling: N/A
nccl_blocking_wait: N/A
nccl_debug: INFO
nccl_ib_timeout: N/A
nccl_nthreads: N/A
nccl_socket_ifname: N/A
torch_distributed_debug: DETAIL

[I logger.cpp:215] [Rank 0]: DDP Initialized with: 
broadcast_buffers: 1
bucket_cap_bytes: 26214400
find_unused_parameters: 0
gradient_as_bucket_view: 0
has_sync_bn: 0
is_multi_device_module: 0
iteration: 0
num_parameter_tensors: 2
output_device: 0
rank: 0
total_parameter_size_bytes: 264
world_size: 4
backend_name: nccl
bucket_sizes: 264
cuda_visible_devices: 0,1,2,3
device_ids: 0
dtypes: float
master_addr: 127.0.0.1
master_port: 32903
module_name: SimpleNetwork
nccl_async_error_handling: N/A
nccl_blocking_wait: N/A
nccl_debug: INFO
nccl_ib_timeout: N/A
nccl_nthreads: N/A
nccl_socket_ifname: N/A
torch_distributed_debug: DETAIL

[I logger.cpp:215] [Rank 1]: DDP Initialized with: 
broadcast_buffers: 1
bucket_cap_bytes: 26214400
find_unused_parameters: 0
gradient_as_bucket_view: 0
has_sync_bn: 0
is_multi_device_module: 0
iteration: 0
num_parameter_tensors: 2
output_device: 1
rank: 1
total_parameter_size_bytes: 264
world_size: 4
backend_name: nccl
bucket_sizes: 264
cuda_visible_devices: 0,1,2,3
device_ids: 1
dtypes: float
master_addr: 127.0.0.1
master_port: 32903
module_name: SimpleNetwork
nccl_async_error_handling: N/A
nccl_blocking_wait: N/A
nccl_debug: INFO
nccl_ib_timeout: N/A
nccl_nthreads: N/A
nccl_socket_ifname: N/A
torch_distributed_debug: DETAIL

[I logger.cpp:215] [Rank 2]: DDP Initialized with: 
broadcast_buffers: 1
bucket_cap_bytes: 26214400
find_unused_parameters: 0
gradient_as_bucket_view: 0
has_sync_bn: 0
is_multi_device_module: 0
iteration: 0
num_parameter_tensors: 2
output_device: 2
rank: 2
total_parameter_size_bytes: 264
world_size: 4
backend_name: nccl
bucket_sizes: 264
cuda_visible_devices: 0,1,2,3
device_ids: 2
dtypes: float
master_addr: 127.0.0.1
master_port: 32903
module_name: SimpleNetwork
nccl_async_error_handling: N/A
nccl_blocking_wait: N/A
nccl_debug: INFO
nccl_ib_timeout: N/A
nccl_nthreads: N/A
nccl_socket_ifname: N/A
torch_distributed_debug: DETAIL

[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=9OpType=BARRIER)

  | Name  | Type   | Params
---------------------------------
0 | layer | Linear | 66    
---------------------------------
66        Trainable params
0         Non-trainable params
66        Total params
0.000     Total estimated model params size (MB)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=9OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=9OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=9OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=10OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=10OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=10OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=10OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=11OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=11OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=11OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=11OpType=BARRIER)
/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/data_connector.py:441: The 'train_dataloader' does not have many workers which may be a bottleneck. Consider increasing the value of the `num_workers` argument` to `num_workers=4` in the `DataLoader` to improve performance.
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=12OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=12OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=12OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=12OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=13, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=13, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=13, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=13, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=14OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=14OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=14OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=14OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=15, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=15, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=15, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=15, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py:293: The number of training batches (1) is smaller than the logging interval Trainer(log_every_n_steps=50). Set a lower value for log_every_n_steps if you want to see logs for the training epoch.
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=16, OpType=ALLREDUCE, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=16, OpType=ALLREDUCE, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=16, OpType=ALLREDUCE, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=16, OpType=ALLREDUCE, TensorShape=[66], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=17OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=17OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=17OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=17OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=18, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=18, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=18, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=18, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Float, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=19OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=19OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=19OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=19OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=20, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=20, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=20, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=20, OpType=ALLREDUCE, TensorShape=[], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 3] Running collective: CollectiveFingerPrint(SequenceNumber=21OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 2] Running collective: CollectiveFingerPrint(SequenceNumber=21OpType=BARRIER)
[I ProcessGroupWrapper.cpp:562] [Rank 1] Running collective: CollectiveFingerPrint(SequenceNumber=21, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
[I ProcessGroupWrapper.cpp:562] [Rank 0] Running collective: CollectiveFingerPrint(SequenceNumber=21, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt)))
Traceback (most recent call last):
  File "/mydir/examples/nccl_bug.py", line 59, in <module>
    train_network()
  File "/mydir/examples/nccl_bug.py", line 57, in train_network
    trainer.fit(model)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 545, in fit
Traceback (most recent call last):
  File "/mydir/examples/nccl_bug.py", line 59, in <module>
    train_network()
  File "/mydir/examples/nccl_bug.py", line 57, in train_network
    trainer.fit(model)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 545, in fit
Traceback (most recent call last):
  File "/mydir/examples/nccl_bug.py", line 59, in <module>
    train_network()
  File "/mydir/examples/nccl_bug.py", line 57, in train_network
    trainer.fit(model)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 545, in fit
Traceback (most recent call last):
  File "/mydir/examples/nccl_bug.py", line 59, in <module>
    train_network()
  File "/mydir/examples/nccl_bug.py", line 57, in train_network
    trainer.fit(model)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 545, in fit
    call._call_and_handle_interrupt(
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 43, in _call_and_handle_interrupt
    call._call_and_handle_interrupt(
    call._call_and_handle_interrupt(
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 43, in _call_and_handle_interrupt
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 43, in _call_and_handle_interrupt
    call._call_and_handle_interrupt(
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 43, in _call_and_handle_interrupt
    return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, **kwargs)
    return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, **kwargs)
    return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/launchers/subprocess_script.py", line 102, in launch
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/launchers/subprocess_script.py", line 102, in launch
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/launchers/subprocess_script.py", line 102, in launch
    return trainer.strategy.launcher.launch(trainer_fn, *args, trainer=trainer, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/launchers/subprocess_script.py", line 102, in launch
    return function(*args, **kwargs)
    return function(*args, **kwargs)
    return function(*args, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 581, in _fit_impl
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 581, in _fit_impl
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 581, in _fit_impl
    return function(*args, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 581, in _fit_impl
    self._run(model, ckpt_path=ckpt_path)
    self._run(model, ckpt_path=ckpt_path)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 990, in _run
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 990, in _run
    self._run(model, ckpt_path=ckpt_path)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 990, in _run
    self._run(model, ckpt_path=ckpt_path)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 990, in _run
    results = self._run_stage()
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1036, in _run_stage
    results = self._run_stage()
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1036, in _run_stage
    results = self._run_stage()
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1036, in _run_stage
    results = self._run_stage()
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1036, in _run_stage
    self.fit_loop.run()
    self.fit_loop.run()
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 203, in run
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 203, in run
    self.fit_loop.run()
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 203, in run
    self.fit_loop.run()
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 203, in run
    self.on_advance_end()
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 374, in on_advance_end
    self.on_advance_end()
    self.on_advance_end()
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 374, in on_advance_end
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 374, in on_advance_end
    self.on_advance_end()
  File "/myenv/python3.10/site-packages/pytorch_lightning/loops/fit_loop.py", line 374, in on_advance_end
    call._call_callback_hooks(trainer, "on_train_epoch_end", monitoring_callbacks=True)
    call._call_callback_hooks(trainer, "on_train_epoch_end", monitoring_callbacks=True)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 208, in _call_callback_hooks
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 208, in _call_callback_hooks
    call._call_callback_hooks(trainer, "on_train_epoch_end", monitoring_callbacks=True)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 208, in _call_callback_hooks
    call._call_callback_hooks(trainer, "on_train_epoch_end", monitoring_callbacks=True)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/call.py", line 208, in _call_callback_hooks
    fn(trainer, trainer.lightning_module, *args, **kwargs)
    fn(trainer, trainer.lightning_module, *args, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 309, in on_train_epoch_end
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 311, in on_train_epoch_end
    fn(trainer, trainer.lightning_module, *args, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 311, in on_train_epoch_end
    fn(trainer, trainer.lightning_module, *args, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 309, in on_train_epoch_end
    monitor_candidates = self._monitor_candidates(trainer)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 646, in _monitor_candidates
    self._save_topk_checkpoint(trainer, monitor_candidates)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 370, in _save_topk_checkpoint
    monitor_candidates = self._monitor_candidates(trainer)
    self._save_topk_checkpoint(trainer, monitor_candidates)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 646, in _monitor_candidates
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 370, in _save_topk_checkpoint
    monitor_candidates = deepcopy(trainer.callback_metrics)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1634, in callback_metrics
    self._save_none_monitor_checkpoint(trainer, monitor_candidates)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 688, in _save_none_monitor_checkpoint
    self._save_none_monitor_checkpoint(trainer, monitor_candidates)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 688, in _save_none_monitor_checkpoint
    monitor_candidates = deepcopy(trainer.callback_metrics)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/trainer.py", line 1634, in callback_metrics
    filepath = self._get_metric_interpolated_filepath_name(monitor_candidates, trainer)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 639, in _get_metric_interpolated_filepath_name
    return self._logger_connector.callback_metrics
    while self.file_exists(filepath, trainer) and filepath != del_filepath:
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/logger_connector.py", line 231, in callback_metrics
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 752, in file_exists
    filepath = self._get_metric_interpolated_filepath_name(monitor_candidates, trainer)
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 639, in _get_metric_interpolated_filepath_name
    return trainer.strategy.broadcast(exists)
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/ddp.py", line 298, in broadcast
    return self._logger_connector.callback_metrics
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/logger_connector.py", line 231, in callback_metrics
    while self.file_exists(filepath, trainer) and filepath != del_filepath:
  File "/myenv/python3.10/site-packages/pytorch_lightning/callbacks/model_checkpoint.py", line 752, in file_exists
    metrics = self.metrics["callback"]
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/logger_connector.py", line 226, in metrics
    return trainer.strategy.broadcast(exists)
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/ddp.py", line 298, in broadcast
    metrics = self.metrics["callback"]
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/logger_connector.py", line 226, in metrics
    torch.distributed.broadcast_object_list(obj, src, group=_group.WORLD)
  File "/myenv/python3.10/site-packages/torch/distributed/c10d_logger.py", line 47, in wrapper
    return self.trainer._results.metrics(on_step)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 471, in metrics
    return self.trainer._results.metrics(on_step)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 471, in metrics
    torch.distributed.broadcast_object_list(obj, src, group=_group.WORLD)
  File "/myenv/python3.10/site-packages/torch/distributed/c10d_logger.py", line 47, in wrapper
    return func(*args, **kwargs)
  File "/myenv/python3.10/site-packages/torch/distributed/distributed_c10d.py", line 2603, in broadcast_object_list
    return func(*args, **kwargs)
  File "/myenv/python3.10/site-packages/torch/distributed/distributed_c10d.py", line 2603, in broadcast_object_list
    value = self._get_cache(result_metric, on_step)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 435, in _get_cache
    value = self._get_cache(result_metric, on_step)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 435, in _get_cache
    result_metric.compute()
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 280, in wrapped_func
    result_metric.compute()
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 280, in wrapped_func
    self._computed = compute(*args, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 243, in compute
    self._computed = compute(*args, **kwargs)
  File "/myenv/python3.10/site-packages/pytorch_lightning/trainer/connectors/logger_connector/result.py", line 243, in compute
    value = self.meta.sync(self.value.clone())  # `clone` because `sync` is in-place
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/ddp.py", line 330, in reduce
    value = self.meta.sync(self.value.clone())  # `clone` because `sync` is in-place
  File "/myenv/python3.10/site-packages/pytorch_lightning/strategies/ddp.py", line 330, in reduce
    return _sync_ddp_if_available(tensor, group, reduce_op=reduce_op)
  File "/myenv/python3.10/site-packages/lightning_fabric/utilities/distributed.py", line 171, in _sync_ddp_if_available
    return _sync_ddp_if_available(tensor, group, reduce_op=reduce_op)
  File "/myenv/python3.10/site-packages/lightning_fabric/utilities/distributed.py", line 171, in _sync_ddp_if_available
    broadcast(object_sizes_tensor, src=src, group=group)
  File "/myenv/python3.10/site-packages/torch/distributed/c10d_logger.py", line 47, in wrapper
    return func(*args, **kwargs)
  File "/myenv/python3.10/site-packages/torch/distributed/distributed_c10d.py", line 1906, in broadcast
    return _sync_ddp(result, group=group, reduce_op=reduce_op)
  File "/myenv/python3.10/site-packages/lightning_fabric/utilities/distributed.py", line 220, in _sync_ddp
    return _sync_ddp(result, group=group, reduce_op=reduce_op)
  File "/myenv/python3.10/site-packages/lightning_fabric/utilities/distributed.py", line 220, in _sync_ddp
    broadcast(object_sizes_tensor, src=src, group=group)
  File "/myenv/python3.10/site-packages/torch/distributed/c10d_logger.py", line 47, in wrapper
    return func(*args, **kwargs)
  File "/myenv/python3.10/site-packages/torch/distributed/distributed_c10d.py", line 1906, in broadcast
    torch.distributed.barrier(group=group)
    torch.distributed.barrier(group=group)
  File "/myenv/python3.10/site-packages/torch/distributed/c10d_logger.py", line 47, in wrapper
  File "/myenv/python3.10/site-packages/torch/distributed/c10d_logger.py", line 47, in wrapper
    work = default_pg.broadcast([tensor], opts)
RuntimeError: Detected mismatch between collectives on ranks. Rank 1 is running collective: CollectiveFingerPrint(SequenceNumber=21, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt))), but Rank 2 is running collective: CollectiveFingerPrint(SequenceNumber=0OpType=REDUCE).Collectives differ in the following aspects: 	 Sequence number: 21vs 0  Op type: BROADCASTvs REDUCE  Tensor Tensor shapes: 1vs   Tensor Tensor dtypes: Longvs   Tensor Tensor devices: TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt))vs 
    return func(*args, **kwargs)
    return func(*args, **kwargs)
  File "/myenv/python3.10/site-packages/torch/distributed/distributed_c10d.py", line 3698, in barrier
  File "/myenv/python3.10/site-packages/torch/distributed/distributed_c10d.py", line 3698, in barrier
    work = default_pg.broadcast([tensor], opts)
RuntimeError: Detected mismatch between collectives on ranks. Rank 0 is running collective: CollectiveFingerPrint(SequenceNumber=21, OpType=BROADCAST, TensorShape=[1], TensorDtypes=Long, TensorDeviceTypes=TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt))), but Rank 2 is running collective: CollectiveFingerPrint(SequenceNumber=0OpType=REDUCE).Collectives differ in the following aspects: 	 Sequence number: 21vs 0  Op type: BROADCASTvs REDUCE  Tensor Tensor shapes: 1vs   Tensor Tensor dtypes: Longvs   Tensor Tensor devices: TensorOptions(dtype=float (default), device=cuda, layout=Strided (default), requires_grad=false (default), pinned_memory=false (default), memory_format=(nullopt))vs 
    work = group.barrier(opts=opts)
    work = group.barrier(opts=opts)
RuntimeError: Detected mismatch between collectives on ranks. Rank 3 is running collective: CollectiveFingerPrint(SequenceNumber=21OpType=BARRIER), but Rank 0 is running collective: CollectiveFingerPrint(SequenceNumber=0OpType=GATHER).Collectives differ in the following aspects: 	 Sequence number: 21vs 0  Op type: BARRIERvs GATHER
RuntimeError: Detected mismatch between collectives on ranks. Rank 2 is running collective: CollectiveFingerPrint(SequenceNumber=21OpType=BARRIER), but Rank 0 is running collective: CollectiveFingerPrint(SequenceNumber=0OpType=GATHER).Collectives differ in the following aspects: 	 Sequence number: 21vs 0  Op type: BARRIERvs GATHER
[I ProcessGroupNCCL.cpp:874] [Rank 3] Destroyed 1communicators on CUDA device 3
[I ProcessGroupNCCL.cpp:874] [Rank 1] Destroyed 1communicators on CUDA device 1
[I ProcessGroupNCCL.cpp:874] [Rank 0] Destroyed 1communicators on CUDA device 0
[I ProcessGroupNCCL.cpp:874] [Rank 2] Destroyed 1communicators on CUDA device 2

Environment
Current environment
  • CUDA:
    - GPU: None
    - available: False
    - version: 11.8
  • Lightning:
    - lightning: 2.0.7
    - lightning-cloud: 0.5.46
    - lightning-utilities: 0.9.0
    - pytorch-lightning: 2.1.0
    - torch: 2.1.0+cu118
    - torchcache: 0.3.2
    - torchmetrics: 1.2.0
    - torchvision: 0.16.0+cu118
  • Packages:
    - affine: 2.4.0
    - aiohttp: 3.8.6
    - aiosignal: 1.3.1
    - annotated-types: 0.6.0
    - anyio: 3.7.1
    - appdirs: 1.4.4
    - argon2-cffi: 23.1.0
    - argon2-cffi-bindings: 21.2.0
    - arrow: 1.3.0
    - asttokens: 2.4.1
    - async-timeout: 4.0.3
    - attrs: 23.1.0
    - av: 10.0.0
    - backoff: 2.2.1
    - beautifulsoup4: 4.12.2
    - black: 23.10.1
    - bleach: 6.1.0
    - blessed: 1.20.0
    - boto3: 1.28.75
    - botocore: 1.31.75
    - brotli: 1.1.0
    - certifi: 2023.7.22
    - cffi: 1.16.0
    - cfgv: 3.4.0
    - charset-normalizer: 3.3.1
    - click: 8.1.7
    - click-plugins: 1.1.1
    - cligj: 0.7.2
    - comm: 0.1.4
    - contextily: 1.4.0
    - contourpy: 1.1.1
    - coverage: 7.3.2
    - croniter: 1.4.1
    - csaps: 1.1.0
    - cycler: 0.12.1
    - dateutils: 0.6.12
    - debugpy: 1.8.0
    - decorator: 5.1.1
    - deepdiff: 6.6.1
    - defusedxml: 0.7.1
    - distlib: 0.3.7
    - docker-pycreds: 0.4.0
    - einops: 0.6.1
    - entrypoints: 0.4
    - exceptiongroup: 1.1.3
    - executing: 2.0.1
    - fastapi: 0.104.1
    - fastjsonschema: 2.18.1
    - filelock: 3.13.1
    - fiona: 1.9.5
    - flake8: 6.1.0
    - fonttools: 4.43.1
    - fqdn: 1.5.1
    - frechetdist: 0.6
    - frozenlist: 1.4.0
    - fsspec: 2023.10.0
    - geographiclib: 2.0
    - geopandas: 0.14.0
    - geopy: 2.4.0
    - gitdb: 4.0.11
    - gitpython: 3.1.40
    - gopro2gpx: 0.1
    - gvtnet: 0.1.0
    - h11: 0.14.0
    - huggingface-hub: 0.18.0
    - identify: 2.5.31
    - idna: 3.4
    - iniconfig: 2.0.0
    - inquirer: 3.1.3
    - ipykernel: 6.26.0
    - ipython: 8.17.2
    - ipython-genutils: 0.2.0
    - isoduration: 20.11.0
    - isort: 5.12.0
    - itsdangerous: 2.1.2
    - jedi: 0.19.1
    - jinja2: 3.1.2
    - jmespath: 1.0.1
    - joblib: 1.3.2
    - jsonpointer: 2.4
    - jsonschema: 4.19.2
    - jsonschema-specifications: 2023.7.1
    - jupyter-client: 8.5.0
    - jupyter-core: 5.5.0
    - jupyter-events: 0.8.0
    - jupyter-server: 2.9.1
    - jupyter-server-terminals: 0.4.4
    - jupyterlab-pygments: 0.2.2
    - kiwisolver: 1.4.5
    - kornia: 0.6.12
    - lightning: 2.0.7
    - lightning-cloud: 0.5.46
    - lightning-utilities: 0.9.0
    - markdown-it-py: 3.0.0
    - markupsafe: 2.1.3
    - matplotlib: 3.8.0
    - matplotlib-inline: 0.1.6
    - mccabe: 0.7.0
    - mdurl: 0.1.2
    - memray: 1.10.0
    - mercantile: 1.2.1
    - mistune: 3.0.2
    - mpmath: 1.3.0
    - msgpack: 1.0.7
    - multidict: 6.0.4
    - mypy-extensions: 1.0.0
    - natsort: 8.4.0
    - nbclassic: 1.0.0
    - nbclient: 0.8.0
    - nbconvert: 7.10.0
    - nbformat: 5.9.2
    - nest-asyncio: 1.5.8
    - networkx: 3.2.1
    - nodeenv: 1.8.0
    - notebook: 6.5.4
    - notebook-shim: 0.2.3
    - numpy: 1.26.1
    - opencv-python-headless: 4.8.1.78
    - ordered-set: 4.1.0
    - osmnx: 1.7.1
    - overrides: 7.4.0
    - packaging: 23.2
    - pandas: 1.5.3
    - pandocfilters: 1.5.0
    - parso: 0.8.3
    - pathspec: 0.11.2
    - pathtools: 0.1.2
    - patsy: 0.5.3
    - pexpect: 4.8.0
    - pillow: 10.1.0
    - pip: 23.1.1
    - platformdirs: 3.11.0
    - pluggy: 1.3.0
    - pre-commit: 3.5.0
    - prometheus-client: 0.18.0
    - prompt-toolkit: 3.0.39
    - protobuf: 4.24.4
    - psutil: 5.9.6
    - ptyprocess: 0.7.0
    - pure-eval: 0.2.2
    - py-spy: 0.3.14
    - pycodestyle: 2.11.1
    - pycparser: 2.21
    - pydantic: 2.1.1
    - pydantic-core: 2.4.0
    - pyflakes: 3.1.0
    - pygments: 2.16.1
    - pyjwt: 2.8.0
    - pyparsing: 3.1.1
    - pyproj: 3.6.1
    - pytest: 7.4.3
    - pytest-cov: 4.1.0
    - pytest-datadir: 1.5.0
    - python-dateutil: 2.8.2
    - python-editor: 1.0.4
    - python-json-logger: 2.0.7
    - python-multipart: 0.0.6
    - pytorch-lightning: 2.1.0
    - pytz: 2023.3.post1
    - pyyaml: 6.0.1
    - pyzmq: 25.1.1
    - rasterio: 1.3.9
    - readchar: 4.0.5
    - referencing: 0.30.2
    - requests: 2.31.0
    - rfc3339-validator: 0.1.4
    - rfc3986-validator: 0.1.1
    - rich: 13.6.0
    - rpds-py: 0.10.6
    - s3transfer: 0.7.0
    - safetensors: 0.4.0
    - scipy: 1.11.3
    - seaborn: 0.12.2
    - segment-anything: 1.0
    - send2trash: 1.8.2
    - sentry-sdk: 1.33.1
    - setproctitle: 1.3.3
    - setuptools: 68.2.2
    - setuptools-scm: 8.0.4
    - shapely: 2.0.2
    - six: 1.16.0
    - smmap: 5.0.1
    - sniffio: 1.3.0
    - snuggs: 1.4.7
    - soupsieve: 2.5
    - stack-data: 0.6.3
    - starlette: 0.27.0
    - starsessions: 1.3.0
    - statsmodels: 0.14.0
    - sympy: 1.12
    - terminado: 0.17.1
    - timm: 0.9.8
    - tinycss2: 1.2.1
    - tomli: 2.0.1
    - torch: 2.1.0+cu118
    - torchcache: 0.3.2
    - torchmetrics: 1.2.0
    - torchvision: 0.16.0+cu118
    - tornado: 6.3.3
    - tqdm: 4.66.1
    - traitlets: 5.13.0
    - triton: 2.1.0
    - types-python-dateutil: 2.8.19.14
    - typing-extensions: 4.8.0
    - uri-template: 1.3.0
    - urllib3: 2.0.7
    - uvicorn: 0.23.2
    - virtualenv: 20.24.6
    - wandb: 0.15.12
    - wcwidth: 0.2.9
    - webcolors: 1.13
    - webencodings: 0.5.1
    - websocket-client: 1.6.4
    - websockets: 12.0
    - wheel: 0.40.0
    - xyzservices: 2023.10.1
    - yarl: 1.9.2
    - zstd: 1.5.5.1
  • System:
    - OS: Linux
    - architecture:
    - 64bit
    - ELF
    - processor:
    - python: 3.10.3
    - release: 4.19.0-25-amd64
    - version: #1 SMP Debian 4.19.289-2 (2023-08-08)
More info

No response

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 with the log_dict call using sync_dist=True in the provided multi-GPU reproduction, and run it with ranks logging different dictionary keys. Done means the distributed run no longer deadlocks or causes NCCL to die, while keys present across dictionaries are averaged as expected.

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.