Is Transformers using GPU by default?

I’m instantiating a model with this

tokenizer = AutoTokenizer.from_pretrained("nlptown/bert-base-multilingual-uncased-sentiment")
model = AutoModelForSequenceClassification.from_pretrained("nlptown/bert-base-multilingual-uncased-sentiment")

Then running a for loop to get prediction over 10k sentences on a G4 instance (T4 GPU). GPU usage (averaged by minute) is a flat 0.0%. What is wrong? How to use GPU with Transformers?

5 Likes

This like with every PyTorch model, you need to put it on the GPU, as well as your batches of inputs.

7 Likes

You can take a look at this issue How to make transformers examples use GPU? · Issue #2704 · huggingface/transformers · GitHub It includes an example for how to put your model on GPU.

device = "cuda:0" if torch.cuda.is_available() else "cpu"
sentence  = 'Hello World!'
tokenizer = AutoTokenizer.from_pretrained('bert-large-uncased')
model     = BertModel.from_pretrained('bert-large-uncased')

inputs    = tokenizer(sentence, return_tensors="pt").to(device)
model     = model.to(device)
outputs   = model(**inputs)
14 Likes

@sgugger

Are there any samples of how Huggingface Transformer finetuning should be done using GPU please?

4 Likes

Hi @sgugger were you able to figure this out?

I had the same issue - to answer this question, if pytorch + cuda is installed, an e.g. transformers.Trainer class using pytorch will automatically use the cuda (GPU) version without any additional specification.

(You can check if pytorch + cuda is installed by checking if the pytorch-cuda package is installed.)

3 Likes

Is there a way to explicitly disable the trainer from using the GPU? I see something about place_model_on_device on Trainer but it is unclear how to set it to False.

EDIT: Oh, I see I can set use_cpu in TrainingArguments to False.

1 Like