Deep Learning RTX 3060ベンチマーク

先日、eGPUを導入したので計算能力の向上幅を大づかみすることにした。

ベンチマークの前に…

計算能力の優劣はコア数や周波数による計算能力だけでなく、メモリ帯域でも決まる。これを簡単にモデル化したものをRooflineモデルと呼ぶ。 データ規模あたりの計算量で計算タスクを抽象化し(横軸)、どの程度の計算能力(縦軸)が期待できるか見積もる際、 あるいは理論上限能力値に対してどの程度性能を発揮しているか評価するときに使う。

Roofline Model
Roofline model (Source:A Survey of FPGA-Based Neural Network Accelerator)

このモデルはデータ量に対して計算量が少ないタスクではメモリ帯域が計算能力の上限を決めることを表現している。モデルを使った、より専門的な分析の事例としてはPerformance Analysis of GPU-Accelerated Applications using the Roofline ModelPerformance Tuning with the Roofline Model on GPUs and CPUsなどが参考になると思う。 これら2つは、計算機の能力がどこで頭打ちになるかデバイスの仕組みとともに解説もされている。

細かい内訳を見ればIn-Datacenter Performance Analysis of a Tensor Processing Unitで示されるようにデバイスごとにRooflineが異なり、 同じタスクでもメモリで性能が制約されたり、コアの性能を出し切ったりということもあるかと思う。

Device Roofline Model
Device Roofline Comparison (Source:In-Datacenter Performance Analysis of a Tensor Processing Unit)

しかし、Adrián Castelló et al., 2019によれば、Deep Learningの有名なネットワークは十分に「コア性能」が使い切れるように設計されているようである。

Deep Learning Model Roofline Model
Deep Learning models on Roofline (Source:Theoretical Scalability Analysis of Distributed Deep Convolutional Neural Networks)

そこで大胆な割り切りをして単純にDeep Learningモデルのトレーニング、推論にかかる単位時間を使って比較を行うことにする

(結局、余所と同じです)

機材

  • Dell Inspiron 7490 (2019)
    • Intel Core i7-10510U
    • RAM 16GB, LPDDR3, 2133MHz
    • 組込GPU: NVIDIA GeForce MX250
    • eGPU: NVIDIA GeForce RTX3060 (12GB)
      • Driver 516.94
    • Thunderbolt 3
  • Windows 11 (22622.450 ni_release)
  • Python 3.10 (Anaconda)
    • CUDA 11.3
    • Pytorch 1.12.1

ベンチマーク

こちらを使います

改めて環境の確認。両方GPUを生かしておくとクラッシュするので片方ずつ有効化する。

$ nvidia-smi --query-gpu=name,driver_version  --format=csv,noheader
NVIDIA GeForce RTX 3060, 516.94

$ python
Python 3.10.4 | packaged by conda-forge | (main, Mar 30 2022, 08:38:02) [MSC v.1916 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import torch
>>> torch.__version__
'1.12.1'
>>> torch.version.cuda
'11.3'

GPUを切り替えると下記だけ異なる

$ nvidia-smi --query-gpu=name,driver_version  --format=csv,noheader
NVIDIA GeForce MX250, 516.94

結果

比較のため元レポのデータも抜粋した。MX250はメモリ不足でFP32の条件では動作せず、FP16も計測時間が長いのでVGG16のみ。

今回導入した3060は1080Tiにわずかに劣る性能で、Google ColabratoryのTesla T4より快適という位置づけになりそう。GPUの専有時間が心配になりませんし、NeRFなど手元で3Dをグリグリしたい用途で優位性を発揮してもらいましょう。

実行時間(ms)の測定結果
Device 出典 環境 vgg16 resnet152 densenet161
eval(ms) train(ms) eval(ms) train(ms) eval(ms) train(ms)
Titan V github PyTorch 0.3
CUDA 9
FP32
31.3 108.8 48.9 180.2 52.4 174.1
1080 Ti 同上 39.3 131.9 57.8 206.4 62.9 211.9
V100 同上 26.2 83.5 38.7 136.5 48.3 142.5
2080 Ti 同上 30.5 102.9 41.9 157.0 47.3 160.0
Tesla T4 今回計測
Colaboratory
PyTorch 1.12
CUDA 11.3
FP32
72.4 223.6 109.1 375.9 108.3 367.2
3060 今回計測 PyTorch 1.12
CUDA 11.3
FP32
45.6 146.9 69.4 273.6 78.6 293.8
3060 今回計測 PyTorch 1.12
CUDA 11.3
FP16
33.4 112.0 52.4 244.6 60.7 295.7
MX250 今回計測 PyTorch 1.12
CUDA 11.3
FP16
3,147.2 10,344.4 - - - -

考察

ある特定のタスクの結果をもって全体的な性能を示すことは難しい。しかし、個人では資金がアクセスできるデバイスの数に制限をかけることから平等条件でない指標を複数見比べながら購買計画をたてざるえないと思う。

そこで試験的にベンチ結果を推測する手立てを考えた。

理論計算能力との相関

測定した処理時間の逆数がFLOPSの次元なので逆数を取ってプロットし、GPU性能との相関を取った。GPUの性能はGPU DatabaseのFP32の性能(TFLOPS)を使った。

3060はデータバス帯域が狭いため異常値になる予感もあったが、概ねTFLOPSに比例した結果が観察され、VGG16に関しては(標本サイズからあまり意味のない数値かも知れないが) 切片=0の回帰に対して何れも$ R^2_7 = 0.984 $ である。

VGG16
VGG16ベンチマーク結果

Deep Learningの著名モデルを扱う前提であればFP32を指標にGPUの買い替えや買い増しを検討することはあながち間違いではなさそうである。

3Dベンチマークとの相関

理論計算能力値で心配な場合は3Dゲームのベンチマーク結果が実践値という意味で利用可能かもしれない。データソースとしても潤沢でGeForceならばまず数値が見つけられるはず。

結論だけ報告すると、こちらもベンチマークスコアと概ね相関を取れたが、Tesla系列のデータがあるわけもなくGoogle Colaboratoryとの比較などといった実用面の観点から企画倒れであった。

参考

なぜトップダウンでDXを進められないのか

DXを企業変革として見る

DXといえば、その過程で重用する従業員の重み付けをどう変えるか、理想とされる行動規範や能力と現状のギャップにどのように立ち向かうのか、 あるいは所属する構成員の処遇をどうするべきなのかといった議論は身近な問題であって目に行きがちだ。 しかし、DXがある種の企業変革の達成を目指す性質から 一般に「企業変革」がどのような道筋をたどるかを知ることは、 始まってしまったその変革の渦中にあって自分自身がどのように振る舞うべきか考えるのに有益だと思う。

企業変革といえばジョン・コッターが有名であるが、近年の彼の研究の振り返り(企業変革に成功する組織は何が違うのか)でも、8割近くの取り組みが失敗に終わっていると分析されており、 この割合をDXにも当てはめるのであればDXがうまく行かなかった経験の方が共感を集めるのもうなずける。

企業変革力
企業変革力
  • 作者: ジョン P コッター
  • 翻訳: 梅津 祐良
  • 出版社/メーカー: 日経BP
  • 発売日: 2002/4/15

8段階のプロセス

ジョン・コッターは企業変革を8段階のプロセスに整理し、8割近くが失敗に終わる企業変革がどこで躓くのか事例を交えて紹介した。 この整理で個人的に目を引くのは従業員支配と言われる日本企業を観察対象にしたのではないのにも関わらず(おそらく米国企業中心)、 変革の起点をトップダウンに据えず、組織構成員の啓蒙や腹落ちを通した協力関係の構築を重要視していることだ。 組織変更のような大胆な変更は変革の入り口ではなく、小さな成功を積み重ね社内の信頼を得た上で実施することが説かれている。

実際、米国においても一部のスター企業を除けば、採用競争力やリテンションの観点からマネジメントが従業員から見放されないように慎重なコミュニケーションを取っており、トップがDXを強くおせば付和雷同して変革が予定通り進むこともないのが相場だ。

つまり、残念ながら私の密かに思い描く最強のDXがトップダウンで承認され、その権威を借りて他の"間違ったDX"を調伏するという流れは古今東西起こり得ないようだ。

コッターが示すプロセスでは、そのような奇跡がないとしてDX必要性を組織内で知らしめることを最初に行うべきとする。

危機感喚起
  • 事業変革の要請を従業員に認めさせる
  • 従業員に新しい機会の提示する
 
チーム結成
  • 推進メンバーを選任する
  • メンバーの活動時間を確保する
 
ビジョン&戦略作成
  • DX後の自社がどうなるか解像度を高める
  • ビジョン実現のための戦略を立てる
 
ビジョン&戦略周知
  • 様々な手段でビジョン・戦略を社内提示する
  • 推進チームが自ら模範事例を作る
 
賛同者発見
  • ビジョンと戦略に合致する従業員を発見する
  • 変革の障害を取り除く
 
短期的成果
  • 業績上で目に見える成果を上げる
    (6-8ヶ月、長くて14ヶ月くらいで業績化)
 
規模拡大
  • 短期成果を積み長期的な変革に移行する
  • 短期成果を信頼の原資に組織や制度を変更する
 
新文化定着
  • 大胆な体制変更を行う
  • 後継者育成と選任する

どこでこけるか?

DXがこけるときに限らないが、管見の限りでは変革において必要性が十分に納得されないまま施策の具体化や行動に移り推進力にかけたまま尻すぼみになる事が多い。したがって、変革に何らかの形で関わることになった場合、 担当レベルであっても周囲に危機感醸成を改めて丁寧に行うことはいくらやっても損はないように思う。

その手段としては説得に関する極めて政治的な手法が役に立つ。

Wikipediaの項にあるように説得力を構成する要素は様々であり、その効能も受け取り手によって異なる。具体的な行動指示が絶大に効果を発揮する同僚もいれば、十分に抽象化された話の方に安心感を覚える上司もいる。 しかし、仕事(DX)をどのように進めればよいかわからない"顧客"に「ソリューション」を提示するわけだから、 おおよそBtoB商材の提案書づくりの枠組みをうまく応用できる。

例えば、伝わる提案書の書き方(スライド付)では、受け手が考える避けたい失敗の解像度を高めることと自身の提案がそれを避けられることの安心感を与えることの重要性を強調している。 提案が「社内に散らばるアナログデータのデジタル化」であればSansanのCMのような仕立て、 「業務の標準化」であればKintoneの車内広告から学べることが多くあるかもしれない。

その他の参考書

この他の取り組み方にあたってはコッターの本書をあたるのがよいと思う。

しかし、コッターの著書があまりにも事例的で体系化が足りないと感じるのであれば、日本企業での知見をまとめた本がある。

企業変革の実務
企業変革の実務
  • 作者: 小森 哲郎
  • 出版社/メーカー: ダイヤモンド社
  • 発売日: 2018/11/21

また、半沢直樹調の物語で企業変革を読みたければ三枝三部作が良い。変革障害の放逐にも言及があり、自分自身の振り返りにもなると思う。

V字回復の経営
V字回復の経営
  • 作者: 三枝 匡
  • 出版社/メーカー: 日経BP
  • 発売日: 2021/4/2

eGPUのCUDA環境を導入

半導体不足の影響かGoogle Colabが使いにくくなってきた一方で、Bitcoinブームの落ち着きGPUの価格も安定してきたのでGPUを導入し計算性能を強化することにしました。

もともとeGPUという技術にも興味があり多少枯れてきた印象がある一方、まだまだ情報が少ないこともあって人柱的に思い切って挑戦しました。

導入費

GPUやeGPUケースの価格はAmazonでは未だOverpricedだったのでヤフオクなど順番に見て回りました。ヤマダ電機の子会社となったツクモや、ドスパラで正価で取り扱いがありました。ありがたやー。

機材 購入元 費用
Razer Core X - RC21-01310100-R3J1 ツクモネットショップ 39,800円
ASUS DUAL-RTX3060-O12G-V2
GeForce RTX 3060 12GB
ドスパラ 52,290円
合計   92,090円

環境

LinuxブートプロセスやNVM-express Linux Device Driverの知識を爆発的に向上させてくれた愛機(*1)を使います。組み込みNVIDIA GPUがついた機種だとeGPUと干渉するといった前評判がありましたが懲りずにヤブの蛇をつつきに行きます。

  • Dell Inspiron 7490 (2019)
    • Intel Core i7-10510U
    • RAM 16GB, LPDDR3, 2133MHz
    • NVIDIA GeForce MX250
    • Thunderbolt 3
  • Windows 11 (22622.450 ni_release)
  • WSL2

*1 補足

当機はUEFIでAHCIをOffにできない&LinuxがNVMeを宇宙の彼方にremapしてしまうことからLinuxを導入できないという問題があり、エキスパートが集まって発売後1年くらい試行錯誤が行われていました。 そうこうしているうちに、WSLが発表されWSL2がGPU対応するという激変の3年でした。

パッチも提案されているんですけど、Kernelの本家リポジトリにはマージされず…ポツポツそういう機種もあるし、公式サポートしてくれないかなぁ…と思いつつ、OSSコミュニティの脆弱性みたいなものにも思いが至ったのでした。

導入手順

導入の形態としてはGPUさんにはGPU Computing資源としての生涯を歩んでいただくことを決めているのでHDMIなどのポートは使いません。

  1. Razer Core Xの組立
    GPUケースの写真や組み立ては豊富に先行事例があるので省略します。
  2. Windows 11 - 電源オプションの変更
    全体のなかでは、ここが一番大事でした。
    電源オプションを開き、PCI Expressの電源管理をオフにします。GPUのHDMIポート等に外部ディスプレイ等を接続しない構成にしたせいかOS側でeGPUを切断する現象が頻発しました。
    電源設定の詳細を編集
  3. 接続
    Razer Core Xの電源を入れ、同梱のthunderbolt 3ケーブルで接続します。
  4. CUDAのインストール(ドライバ同梱)
    公式サイトから最新バージョンのCUDAを入手してインストールします。CUDAには対応するGPUドライバも同梱されているため、別途ドライバは不要です。
  5. 既存GPUの無効化
    GPUの干渉事例が報告されていたため、念のため、MX250を無効化しました。デバイスマネージャー操作です。
    デバイスマネージャ設定画面とNVIDIA-SMI
  6. 動作確認
    1. Windowsでnvidia-smi → OK
    2. WSL2でnvidia-smi → OK
    3. WindowsでpytorchにてMNIST → OK
    4. Hzzone/pytorch-openposeからPretrain済OpenPose → OK

ということで以上、導入完了しました。

トラブルシューティング

デバイスを使用できません(コード47)

前記のとおりPCI Expressの電源管理をオフにしないとOSがGPUを切断しにかかります。切断されるたびに指し直しが必要です。

デバイスマネージャで報告されるエラー

RTX3060は外部GPUに対応していません

20x世代を基準にした警告っぽく、無視して良さそう。

参考

注目の記事