kaggle kernelのcpu性能はどれくらいなのか?
背景
最近kaggleなどのデータ分析コンペに挑むときに、kaggle kernelやGoogle Colaboratoryを利用するがスペックがどのようなものかが気になった。
RAMに関しては、kaggle kernelが32GB、Google Colaboratory(無料版)が12GBとすぐにわかるが、cpuの性能は明確にどれくらい違うのか比較ができない。
なので適当な学習・推論コードを作成して、その速度でcpuの性能と速度を比較してみよう。
なおこの早いcpuとは学習・推論の速度を基準に定義するため、一般的に学習が早い=良いPCと名ならない点に注意。
言いたいこと(結論)
- 今売られているPCでは余程安い or 小さいPCを選ばなければほとんどのPCのCPUはkaggle kernelより速い
- 感覚的には2024年時点で、6万円以上のノートPC辺りなら負けない
- 4年くらい前のノートPCまでなら大体良いかも
- RAMを重視するなら基本的にkaggle kernelやcolab pro使うほうがいい
総合的にみると、軽いデータで実験を回す場合はローカルPCで、重いものはkaggle kernelやcolab proを使うほうが効果的。
ただ、kaggleで勝ちたいならクラウドのgpuサーバーなどを使うのが一般的になりつつあるので、正直あまりローカルPCのスペック自体にこだわらなくてもいい。何なら家庭にあるネットサーフィン用のPCを用意して、従量課金gpuサーバー(GCPやAWS)にリモート接続して分析を行うほうが金銭的にお得かも。
この記事を見ている人なら、理解しているかもしれないがkernelやcolabはgpuも無料である程度使えるので、kaggle kernelが一概に良くないというわけではないところだけは注意。(むしろ時間制限があるものの無料でGPUとRAM32GB使える時点でそこそこすごい)
調査方法
以下のデータセットで深層学習の画像分類を行い、学習速度、推論速度で性能を検証する。
(学習は全てCPU)
なお学習をこのデータセットにした理由は特にない。
調査対象
- kaggle kernel
- Inspiron 15 5510 (CPU: 11th Gen Intel(R) Core(TM) i7-11370H @ 3.30GHz 3.00 GHz)
- GMKTec G3 (CPU: Intel N100)
- AORUS 16X (2024)(CPU: Intel(R) Core(TM) i7-14650HX)
※colabについては後述
調査環境
バージョンは全て以下の環境で設定
- Python 3.10.14
- pytorch 2.4.0+cpu
- バックボーン: Resnet18
- 画像サイズ: 256×256
- 画像拡張: なし
ローカル上の実験はkaggleのdocker(2024-08-22)に合わせて行う。
調査結果
cpu名 | cpuスコア | 学習時間(分) | 推論時間(分) |
---|---|---|---|
kaggle kernel | 不明 | 39.8504 | 4.134 |
Intel N100 | 5622 | 36.4678 | 3.6433 |
11th Gen Intel(R) Core(TM) i7-11370H | 11790 | 26.3968 | 3.5305 |
Intel(R) Core(TM) i7-14650HX | 39059 | 7.8065 | 1.0758 |
cpuスコアは以下のリンクを参考にした。
感想
まず驚いたのは、N100がkaggle kernelと比べると学習時間・推論時間共に若干速い点。
N100は、言えば「家庭用」のPCで、普段使いには困らないコスパが良い製品だと聞く。言い換えれば「家庭用」なので深層学習や機械学習など計算に負荷のかかる重い作業にはあまり向かないと思っていた。
なのでkaggle kernelより性能が悪いかと思いきや、意外とkaggle kernelより学習時間が3分速いことがわかった。(大差ないといえばそうかもしれないが)
このことから、一般的なPCでも学習速度の点でKaggle Kernelを上回る場合があるかもしれない。
次に注目したのは、ノートPCで性能がかなり高めなCPU「core i7-14650HX」の速度。
これは学習に10分を切ってきた。
性能の高いcpuだけあって当然早いことは予想していたが、無料で使えるkaggle kernelの5分の1の時間で学習を終えることを考えると、cpu上での学習速度を求める自分にとってロマン的な部分を感じた。
まとめ
基本的にノートPCのCPUでもkaggle kernelより学習速度は速い。なのでCPUに学習速度を求めるなら、自前のPCで学習するほうが基本的に良さそうなことが分かった。
だが最近では規模の大きいデータを分析することがkaggleでは多くなっているので、RAMがある程度ないとそもそも分析ができないことが多い。
kaggle kernelは32GB提供しているが、RAMが32GB以上あるノートPCは全体の2割以下しかない(価格comの「メモリ容量」から32GBを超えるものを選択)ので、なんとなくPCを選んでいるのであれば、ほとんどの人はkaggle kernelよりもメモリが少ないだろう。
なのでひとくくりに、ノートPC > kaggle kernelとはならない。
どうしてもRAMも32GB超えてローカル環境で完結した分析をしたいなら、お金を出してゲーミングPCとかを買った方が幸せだと思う。(新品なら最低10万くらい出せばあるはず)
ただそこまでお金をかけたくない人も多いと思うのでPC代をケチりたいなら、個人的に今あるPCからColab Proを契約するなり、GPUサーバーをレンタルするなりして、そのプラットフォーム上で分析を行うほうが安上がりだと思う。
最後に
今回は深層学習にCPUを利用したが、深層学習にCPUの性能を追求することはあまりない。
実用的に調査するなら以下の項目を比較してもいいかも。
- lightgbmの学習
- LLM(推論・テキスト生成のみ)
- stable diffusion(画像生成)
最近はNPUというのも登場しているので、その絡みで比較すると面白そうだが、そのためだけにPCを買うのも微妙なところ。
ほかにもCPUスコアと学習速度の関係も調べてみたい。正の相関は示すが、明らかに性能が倍になったからと言って、速度が倍になるとも限らなさそうなので。
補足
細かい学習時間と推論時間などは以下に記載。
Google Colaboratory(無料版)の性能について
実験はしたが結果は以下の通り。
EPOCH 1: 0%| | 8/1710 [12:06<42:34:21, 90.05s/it, postfix=train_loss: 1.8890]
推定43時間かかるとのことで、計測不能とした。
といってもそこまで性能が悪いと、調査方法や私の知識に問題がありそうな気がするので、何か勘違いをしているかも...
何かわかったらここに記載しよう。
(追加補足): kaggle kernelのGPU環境で無理やりCPUにして計算したところ、学習時間が約2.5倍になった。kaggle kernelのgpu環境だと、cpuの性能が若干下がるがここまでなのだろうか。もしかするとgpuバージョンのpytorchではcpuの学習速度が落ちる可能性もあるかも。colabもpytorch+cudaのライブラリが入っているので、それが影響している可能性がある。
(追加補足2): よく考えるとRAMのメモリ帯域幅も学習速度に影響するので、その部分も考慮する必要があった。ただここは同じ条件で一致させるのは難しい。
Discussion