Error training transformer on MacOS

Nick2: <p>I’m trying to replicate this notebook on my MacBook:</p>
<aside class="onebox allowlistedgeneric" data-onebox-src="https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/01_how_to_train.ipynb#">
  <header class="source">
      <img src="https://ssl.gstatic.com/colaboratory-static/common/0d8af74d4089ab8b6d127bd74854be98/img/favicon.ico" class="site-icon" width="128" height="128">

      <a href="https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/01_how_to_train.ipynb#" target="_blank" rel="noopener nofollow ugc">colab.research.google.com</a>
  </header>

  <article class="onebox-body">
    <img width="260" height="260" src="https://colab.research.google.com/img/colab_favicon_256px.png" class="thumbnail onebox-avatar">

<h3><a href="https://colab.research.google.com/github/huggingface/blog/blob/main/notebooks/01_how_to_train.ipynb#" target="_blank" rel="noopener nofollow ugc">Google Colab</a></h3>



  </article>

  <div class="onebox-metadata">
    
    
  </div>

  <div style="clear: both"></div>
</aside>

<p>I get stuck here:</p>
<pre><code class="lang-auto">%%time
print(model.device)
trainer.train()
</code></pre>
<p>With these results:</p>
<pre><code class="lang-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&lt;?, ?it/s]
---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
File &lt;timed exec&gt;: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:
-&gt; 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):
-&gt; 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)
-&gt; 2264 return torch.embedding(weight, input, padding_idx, scale_grad_by_freq, sparse)

RuntimeError: Placeholder storage has not been allocated on MPS device!
</code></pre>
<p>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.</p>
<p>Here are my versions:</p>
<pre><code class="lang-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
</code></pre>
<p>Any ideas?</p>