300万レコードくらいの機械学習(LightGBM)の前処理、トレーニングにどれくらいの時間がかかるか計測してみました。
比較対象はWindows10 Pro vs Ubuntu 18 です。
実行環境はDockerでWindowsもUbuntuも同じDockerfile、docker-composeから構成されています。
(WindowsのDockerはWSL2を使用)
マシン構成は以下となっています。
- CPU:Corei7-9700K
- メモリ:64GB
- ハードディスク:SSD
- (今回はGPUは使用していません)
同じタイプのSSDのハードディスクを切り替える構成で、WindowsとUbuntuでハードウェアの優劣はない構成です。
Windows 10 Pro 結果
- 特微量前処理
- 1,003秒
- 16分
- 学習(LightGBM)
- 1,116秒
- 18分
(Windowsで実行時に特にエラーになる事はありませんでした。)
Ubuntu 18.04.5 LTS 結果
- 特微量前処理
- 908秒
- 15分
- 学習(LightGBM)
- 1,049秒
- 17分
結論
Windowsで10%くらいのパフォーマンス減衰がおきている模様。
このくらいの速度感であれば十分使い物になるかなという印象。
一般的なweb系などの開発では体感ではおそらく分からないレベルかと。
追記
DockerfileのCMDが正常に動かない
WSL2のデフォルトbackendではDockerfileのCMDのpathが見つからないというエラーが発生しました。backendをUbuntuに変えることでエラーは解消しました。
windows insider preview で無限再起動
GPUを試してみようとwindows insider previewを入れてみましたが起動してしばらく経ってからWindowsのエラーが発生して再起動を繰り返すようになってしまいました。バックアップを取っていなかった為、泣く泣くOSをクリーンインストールをする羽目になりました。要注意です。
Web開発は依然として遅い
Web開発しているものもWindowsのDockerで動かしてみましたがUbuntu(WindowsのWSL2ではなくピュアUbuntu)のDockerと比べる体感ではっきりわかるくらい遅いです。おそらくWebの方がファイルアクセスが頻繁にされているからではないかと思います。
個人的にCPU OnlyであればWindowsも機械学習系は許容範囲内かなと思いましたがWeb開発についてはUbuntuから乗り換える気にはなれません。