BERTを使用している時にエラーが発生してかなり困ったので、自分用メモも兼ねてまとめようと思います。
最初に記載しておくと、ビギナーがやるようなミスをしています。
ちなみに自分はくっそビギナーです。
どんなエラーかと言うと...
GPUを使う処理でカーネルがないんだけど??
(RuntimeError: CUDA error: no kernel image is available for execution on the device)
っていうエラーらしいです。
そんなん知らんがなって感じです。
現状
まず、自分の現状の環境についてですが、以下のような感じです。
PCの環境等
# CUDAのバージョン ---> 11.2
print(os.name)
>> posix #unix系
!python --version
>> Pyrhon 3.8.5
torch.__version__
>> 1.8.1+cu102
各々の環境に合った推奨コマンド
もともとのtorchは1.8とかだったような気がするのですが、https://pytorch.org/ を参考に、上の画像のコードを実行してたりしたらぐっちゃぐちゃになってしまいました。
といった感じです。
自分がバカなだけで、大半の人はこのサイト使ったら上手くいくんですかね?
GPU使用可否について
また、PyTorchでGPUが使えるかどうかについては、以下の画像のように使えてます。
torch.cuda.is_available()
>> True # Falseなら使えていない
なのに、冒頭に記載しているようなエラーがでます。
torch.tensor([0.1, 0.2])
>> tensor([0.1000, 0.2000])
torch.tensor([0.1, 0.2]).cuda()
>>> (省略) RuntimeError: CUDA error: no kernel image is available for execution on the device
...とまぁこんな感じです(笑)
解決策
まさかの凡ミスでした。
PCの環境等を見て頂くと、torchは1.8.1+cu102になっています。
この時点でおかしいことに早期で気づくべきでした。
各々の環境に合った推奨コマンドを見て頂くと、インストール文の最後には「cu113」と書いてありますよね。
でも、確かにコピペしてちゃんとインストールしたんですよ(笑)。
と思ってたんですけど、自分があまり仕様を分かっていませんでした。
どうやらアップグレードするには、pip install の後に「-U」が必要らしいです。
!pip install -U torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu113
torch.__version__
>> 1.11.0+cu113
ということで、ようやくインストールできました。欲しかったバージョンのものが。
ここで、先ほどエラーだったコードを実行してみます。
torch.tensor([0.1, 0.2]).cuda()
>> tensor([0.1000, 0.2000], device='cuda:0')
なんか実行できました(笑)。
良かった。
結論
自分無能