setup of Trainer class for distributed trainning
# ❓ Questions & Help

<!-- The GitHub issue tracker is primarly intended for bugs, feature requests,
     new models and benchmarks, and migration questions. For all other questions,
     we direct you to the Hugging Face forum: https://discuss.huggingface.co/ .
     You can also try Stack Overflow (SO) where a whole community of PyTorch and
     Tensorflow enthusiast can help you out. In this case, make sure to tag your
     question with the right deep learning framework as well as the
     huggingface-transformers tag: 
     https://stackoverflow.com/questions/tagged/huggingface-transformers 
     -->

## Details
<!-- Description of your issue -->

I am running on the sample code and got confused on how to setup a distributed trainning, below are the code I used
from pathlib import Path

`from tokenizers import ByteLevelBPETokenizer

from tokenizers.implementations import ByteLevelBPETokenizer
from tokenizers.processors import BertProcessing

tokenizer = ByteLevelBPETokenizer(
    "./EsperBERTo/vocab.json",
    "./EsperBERTo/merges.txt",
)
tokenizer.enable_truncation(max_length=512)

import torch
torch.cuda.is_available()

from transformers import RobertaConfig

config = RobertaConfig(
    vocab_size=52_000,
    max_position_embeddings=514,
    num_attention_heads=12,
    num_hidden_layers=6,
    type_vocab_size=1,
)

from transformers import RobertaTokenizerFast

tokenizer = RobertaTokenizerFast.from_pretrained("./EsperBERTo", max_len=512)

from transformers import RobertaForMaskedLM

model = RobertaForMaskedLM(config=config)

from transformers import LineByLineTextDataset

dataset = LineByLineTextDataset(
    tokenizer=tokenizer,
    file_path="./oscar.eo.txt",
    block_size=128,
)

from transformers import DataCollatorForLanguageModeling

data_collator = DataCollatorForLanguageModeling(
    tokenizer=tokenizer, mlm=True, mlm_probability=0.15
)

from transformers import Trainer, TrainingArguments

training_args = TrainingArguments(
    output_dir="./EsperBERTo",
    overwrite_output_dir=True,
    num_train_epochs=1,
    per_device_train_batch_size=64,
    save_steps=10_000,
    save_total_limit=2,
    fp16=True,
    local_rank=3,
)

trainer = Trainer(
    model=model,
    args=training_args,
    data_collator=data_collator,
    train_dataset=dataset,
    prediction_loss_only=True,
)

trainer.train()

trainer.save_model("./EsperBERTo")`

I want to know how to set the local_rank parameter in trainer class and what comman should I use.

python -m torch.distributed.launch --nproc_per_node=4 --nnodes=1 --node_rank=3 --master_addr="192.168.1.1" --master_port=1234 starttrans2.py

is above a correct way to run this script if I want to run on a single machine with 4 gpus?

<!-- You should first ask your question on the forum or SO, and only if
     you didn't get an answer ask it here on GitHub. -->
**A link to original question on the forum/Stack Overflow**:
We prefer to use the [forum](https://discuss.huggingface.co/) for questions like this. The class `HFArgumentParser` is there to help parse the arguments received by your script and pass them along to `Trainer`. Look at the [run_glue script](https://github.com/huggingface/transformers/blob/master/examples/text-classification/run_glue.py) for an example of use. You should then be able to use your script with `torch.distributed.launch`.<|||||>I also have same problem. Are you slove this problem? Can you tell the right way to train the model on multi-gpu, just one machine. Thanks.<|||||>> I also have same problem. Are you slove this problem? Can you tell the right way to train the model on multi-gpu, just one machine. Thanks.

are u using K80 gpu? I found K80 likely have communication problem which does not have a easy fix.<|||||>This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
