abertsch72 / abertsch72/unlimiformer
multi-gpu unlimiformer training: Expected all tensors to be on the same device
- Linguagem predominante
- Python
- Estrelas
- 1.1k
- Forks
- 78
- Métricas de merge de PRs
- Nenhum PR com merge em 30d
Descrição
Hello again,
Thanks for your effort again
Running unlimiformer training on gov_report (your README standard finetuning with the unlimiformer flags added):
```
python src/run.py \
src/configs/training/base_training_args.json \
src/configs/data/gov_report.json \
--output_dir output_train_bart_base_local/ \
--learning_rate 1e-5 \
--unlimiformer_training \
--max_source_length 16384 \
--test_unlimiformer \
--model_name_or_path facebook/bart-base \
--max_source_length 1024 \
--eval_max_source_length 999999 --do_eval=True \
--eval_steps 1000 --save_steps 1000 \
--per_device_eval_batch_size 1 --per_device_train_batch_size 2 \
--extra_metrics bertscore
```
All other configs are default.
**Multi-gpu setting gets me the following error, and I couldn't find a fix.
However, single gpu works.**
```
RuntimeError: Caught RuntimeError in replica 1 on device 1.
Original Traceback (most recent call last):
File "/home/miniconda3/lib/python3.10/site-packages/torch/nn/parallel/parallel_apply.py", line 64, in _worker
output = module(*input, **kwargs)
File "/home/miniconda3/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/storage/home/research//unlimiformer/src/random_training_unlimiformer.py", line 163, in random_inputs_forward_hook
self.long_inputs_encoded, self.long_inputs_mask = self.chunked_encode_input(input_ids=input_ids, attention_mask=attention_mask)
File "/storage/home/research//unlimiformer/src/random_training_unlimiformer.py", line 195, in chunked_encode_input
output = self.model.base_model.encoder(chunk, attention_mask=chunk_attention_mask, return_dict=True, output_hidden_states=True)
File "/home/miniconda3/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/home/miniconda3/lib/python3.10/site-packages/transformers/models/bart/modeling_bart.py", line 818, in forward
inputs_embeds = self.embed_tokens(input_ids) * self.embed_scale
File "/home/miniconda3/lib/python3.10/site-packages/torch/nn/modules/module.py", line 1501, in _call_impl
return forward_call(*args, **kwargs)
File "/home/miniconda3/lib/python3.10/site-packages/torch/nn/modules/sparse.py", line 162, in forward
return F.embedding(
File "/home/miniconda3/lib/python3.10/site-packages/torch/nn/functional.py", line 2210, in embedding
return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)
RuntimeError: Expected all tensors to be on the same device, but found at least two devices, cuda:0 and cuda:1! (when checking argument for argument index in method wrapper_CUDA__index_select)
```
I am curious do you have similar issues when running (latest main commit) .
Thank you!
Guia de contribuição
Nenhum guia de contribuição indexado para este repositório
Direção de pesquisa
The error occurs in random_training_unlimiformer.py during multi-GPU training when tensors are on different devices. Start by examining the chunked_encode_input method and the random_inputs_forward_hook to see how input tensors are moved across devices. Check the model's device placement and DataParallel usage. Running the provided command in a single-GPU setup first to understand the flow, then testing with multi-GPU to reproduce the device mismatch.
Escrita pelo modelo de indexação a partir do texto da issue.
Avaliação
- Stack de tecnologia
- pytorch
- Domínio
- ai-infra-agents, machine-learning
- Tipo de issue
- Bug
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Status de atividade
- Estagnada
- Clareza
- Claramente especificada
- Facilidade para iniciantes
- 35/100