【機械学習】GPU・NVIDIA A100でトレーニングしたらCPUよりも遅くなった場合の解消方法

この記事は、以下のサーバー環境で、

  • 開発ライブラリー・・・Pytorch(cudaあり)
  • GPUメモリ・・・NVIDIA A100(40G)
  • クラウドサーバー・・・GCP(Google Cloud Platform)
  • インストール済みCudaドライバ・・・V11.0.221

 

あれ?

トレーニングの速度がものすごく遅いぞ?

なんかフリーズしたみたいだぞ?

 

と思ったときに、問題が解決する記事です。

発生した問題(A100なのにトレーニングが遅い!)

筆者は、GCP(Google Cloud Platform)環境で、GPU・NVIDIA A100(GPU メモリ40G)でBig-bird-largeをトレーニングする機会がありました。

A100なら爆速でトレーニングが終わるかと思いきや、PytorchにてGPUにデータを流し込む部分(?)のところでフリーズしたような動き(CPU使用率90%)をしました。

その遅さは、CPUのみのトレーニングよりも遅いのでは?と思わせるほどでした。

以下の記事を参考にした結果、解消方法がわかったので公開します。

参考資料

https://github.com/pytorch/pytorch/issues/50252

 

原因は、condaを使ったpytorchのインストール方法の間違えでした。

詳細は次章にて!

 

問題の解消に8時間ほど(GCPの料金にすると2000円〜3000円くらいの無駄)かかってしまいました(笑)。

A100環境は、1ヶ月で10万円以上するので、できるだけ無駄を省きたいものですよね。

原因は、pytorchのインストール方法の間違え

今回の問題は、pytorchのインストール方法の間違えでした。

具体的には、インストール済みCudaドライバとcudatoolkitの組み合わせの不一致でした。

  • Cudaドライバのバージョン= V11.0.221
  • インストールしてしまったcudatoolkitのバージョン=10.0(←コレ間違え!)

 

しかも、「torch.cuda.is_available()」の結果はTrueを返すので、正しくインストールされているものとご認識していました。

 

その結果、以下のようにcudatoolkitのバージョンを「11.0」を指定して再インストールしたら、解消しました。

conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch

 

【解決】GPUありのPytorchのインストール方法

ここでは、GPUありのPytorchのインストール方法を述べていきます。

前提条件として、cudaドライバーがインストールされているものとします。

cudaドライバーのバージョンを確認

以下のコマンドでcudaドライバーのバージョンを確認します。

$ nvcc -V
nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2020
NVIDIA Corporation Built on Wed_Jul_22_19:09:09_PDT_2020 Cuda compilation tools,
release 11.0,
V11.0.221
Build cuda_11.0_bu.TC445_37.28845127_0

上記の例では、cudaのバージョンが「V11.0.221」であることがわかる。

Pytorch公式ページからcondaのインストール方法を確認する

どのPytorchをインストールすればよいかについては、以下のサイトに乗っています。

検索方法としては「CUDA 11.0」のようにcudaのバージョンで検索すると、必要な情報が見つかりやすいです。

Pytorch公式ページ

https://pytorch.org/get-started/previous-versions/

 

Pytorch公式ページにてインストールコマンドを確認します。

ちなみに、condaを使ったインストールが一番簡単です。

 

Pytorchをインストールする

pytorch公式ページで確認したコマンドを入力して、cuda(GPU)が使えるPytorchをインストールします。

筆者の例では以下のとおりです。

conda install pytorch==1.7.1 torchvision==0.8.2 torchaudio==0.7.2 cudatoolkit=11.0 -c pytorch

動作確認

以下のようなコードでcuda版のPytorchがインストールされたか確認します。

以下のコードを実行してTrueが返ってきたら成功です。

もしFalseが返ってきたら、インストールしたバージョンが正しいかなど確認します。

import torch
print(torch.cuda.is_available())
#Trueが出力されたら成功

このようなオペレーションをした結果、GCPのGPUA100インスタンスで、快適に動作しました。

めでたし、めでたし。

最新情報をチェックしよう!
>プログラミングスクール検索・比較表サイト

プログラミングスクール検索・比較表サイト

ワンクリック、さらに詳細に条件を指定してプログラミングスクールの検索ができます。さらに比較表により特徴を細かく比較できる!

CTR IMG