今この本で勉強中。自然言語処理もこんなところまで進んでいたのかとびっくりです。kerasを使ってCNNをやるだけで十分凄いと思っていたのですが...。今や学習済みモデルを活用するのがすでに常識になっいるみたいです。
本を半ばあたりまで読み進めて、書いてあるコードを写経して動かそうとすると、おなじみのエラーメッセージ。
CUDA out of memory. Tried to allocate 24.00 MiB (GPU 0; 4.00 GiB total capacity; 3.40 GiB already allocated; 0 bytes free; 3.47 GiB reserved in total by PyTorch) If reserved memory is >> allocated memory try setting max_split_size_mb to avoid fragmentation. See documentation for Memory Management and PYTORCH_CUDA_ALLOC_CONF
GPUのメモリが一杯です。
このプログラムは一体どれだけのメモリが必要なのでしょうか。メモリサイズに余裕があるCPUで動かしてみると、13.8Gも使っています。
本に書いてあるコードではバッチサイズは256。これを4まで落としてかろうじてGPUで処理しています。本に書いてあるとおり、最初から素直にGoogle Colabを使うべきでした。
もし自前でメモリサイズが大きいグラフィックボードを調達すると、どんな感じになるのでしょうか。パソコン工房のサイトを見てみると、
例えばこの写真のデスクトップモデルは、NVIDIAのGeForce RTX 4080というグラフィックボートを搭載していて、メモリは16GB。これなら今回の処理に使えそうです。ただしお値段は
364,800円~
と、サイバー大の半年分の授業料を上回っています。ノートで探しても16GBのタイプは、だいたいこの価格です。
最高のものを探してみると、RTX A6000というGPUはメモリサイズが48GBもあって余裕シャクシャクなのですが、これを搭載したPCのお値段が
1,072,800円~
と、サイバー大の3年に編入して卒業するまでの授業料と大差なくなってしまいます。
どうやら個人で学習のためにPytorchを使う、さらにはTransformersを使うということになるのですが、その際の環境は無理に自前で調達するよりも、Google Colab がおすすめです。
ここで見ているのは、CPUのメモリでは? GPUの利用メモリはこっちで見られると思います。