# Cannot train train transformer on Mac/MPS

**URL:** <https://discuss.huggingface.co/t/cannot-train-train-transformer-on-mac-mps/89738>\
**Category:** Beginners\
**Created:** [June 1, 2024, 10:50am UTC](https://discuss.huggingface.co/t/cannot-train-train-transformer-on-mac-mps/89738 "2024-06-01T10:50:59Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![innomadic](https://avatars.discourse-cdn.com/v4/letter/i/b4bc9f/32.png) [@innomadic](https://discuss.huggingface.co/u/innomadic)\
**Post date:** [June 1, 2024, 10:50am UTC](https://discuss.huggingface.co/t/cannot-train-train-transformer-on-mac-mps/89738/1 "2024-06-01T10:50:59Z")

</div>

I’m trying to replicate this notebook on my MacBook:

> **[Google Colab](https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/01_how_to_train.ipynb#)**

I get stuck here:

```auto
%%time
print(model.device)
trainer.train()

```

With these results:

```auto
Using deprecated `--per_gpu_train_batch_size` argument which will be removed in a future version. Using `--per_device_train_batch_size` is preferred.
mps:0
  0%| | 0/15228 [00:13<?, ?it/s]
---------------------------------------------------------------------------
RuntimeError Traceback (most recent call last)
File <timed exec>:2

File ~/Documents/sombert/.venv/lib/python3.12/site-packages/transformers/trainer.py:1912, in Trainer.train(self, resume_from_checkpoint, trial, ignore_keys_for_eval, **kwargs)
   1910 hf_hub_utils.enable_progress_bars()
   1911 else:
-> 1912 return inner_training_loop(
   1913 args=args,
   1914 resume_from_checkpoint=resume_from_checkpoint,
   1915 trial=trial,
   1916 ignore_keys_for_eval=ignore_keys_for_eval,
   1917 )

File ~/Documents/sombert/.venv/lib/python3.12/site-packages/transformers/trainer.py:2245, in Trainer._inner_training_loop(self, batch_size, args, resume_from_checkpoint, trial, ignore_keys_for_eval)
   2242 self.control = self.callback_handler.on_step_begin(args, self.state, self.control)
   2244 with self.accelerator.accumulate(model):
-> 2245 tr_loss_step = self.training_step(model, inputs)
   2247 if (
   2248 args.logging_nan_inf_filter
   2249 and not is_torch_xla_available()
   2250 and (torch.isnan(tr_loss_step) or torch.isinf(tr_loss_step))
   2251 ):
   2252 # if loss is nan or inf simply add the average of previous logged losses
   2253 tr_loss += tr_loss / (1 + self.state.global_step - self._globalstep_last_logged)
...
   2262 # remove once script supports set_grad_enabled
   2263 _no_grad_embedding_renorm_(weight, input, max_norm, norm_type)
-> 2264 return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)

RuntimeError: Placeholder storage has not been allocated on MPS device!

```

As I’ve looks around, it seems like at one point it was required to send the model to the MPS device explicitly but now it should happen automatically. I printed out the model’s device in the sample above.

Here are my versions:

```auto
v3.12.3 (.venv) 
❯ pip list
Package Version
------------------ -----------
accelerate 0.30.1
aiohttp 3.9.5
aiosignal 1.3.1
appnope 0.1.4
asttokens 2.4.1
attrs 23.2.0
certifi 2024.2.2
charset-normalizer 3.3.2
comm 0.2.2
datasets 2.19.1
debugpy 1.8.1
decorator 5.1.1
dill 0.3.8
executing 2.0.1
filelock 3.14.0
frozenlist 1.4.1
fsspec 2024.3.1
huggingface-hub 0.23.2
idna 3.7
ipykernel 6.29.4
ipython 8.24.0
jedi 0.19.1
Jinja2 3.1.4
jupyter_client 8.6.2
jupyter_core 5.7.2
MarkupSafe 2.1.5
matplotlib-inline 0.1.7
mpmath 1.3.0
multidict 6.0.5
multiprocess 0.70.16
nest-asyncio 1.6.0
networkx 3.3
numpy 1.26.4
packaging 24.0
pandas 2.2.2
parso 0.8.4
pexpect 4.9.0
pip 24.0
platformdirs 4.2.2
prompt_toolkit 3.0.45
psutil 5.9.8
ptyprocess 0.7.0
pure-eval 0.2.2
pyarrow 16.1.0
pyarrow-hotfix 0.6
Pygments 2.18.0
python-dateutil 2.9.0.post0
pytz 2024.1
PyYAML 6.0.1
pyzmq 26.0.3
regex 2024.5.15
requests 2.32.3
safetensors 0.4.3
six 1.16.0
stack-data 0.6.3
sympy 1.12.1
tokenizers 0.19.1
torch 2.3.0
tornado 6.4
tqdm 4.66.4
traitlets 5.14.3
transformers 4.42.0.dev0
typing_extensions 4.12.0
tzdata 2024.1
urllib3 2.2.1
wcwidth 0.2.13
xxhash 3.4.1
yarl 1.9.4

```

Any ideas?
