見出し画像

MSI製ゲーミングラップトップにGPUが使える機械学習環境を構築する際のハマりどころ

表紙の画像は、最近気になっているAlphaZero.jlを、今回構築した環境で強化学習しているところのスクショです。

個人の機械学習環境というか、開発環境で重要なのは、画面のみやすさ、キーボードのうちやすさ、タッチパッドの使いやすさ、Linuxが使えることだと思っています。機械学習用途ならば、RAMが十分に積んであり、NVIDIA社製のGPUが使えることも重要になってきます。

特に、4k画面、15-inch以下、メモリ32GB以上、最新GPU搭載でkakaku.comで検索すると、MSIのゲーミングラップトップにたどり着きました。この機種です:MSI GS66 Stealth 11UH GS66-11UH-321JP

https://jp.msi.com/Laptop/GS66-Stealth-11UX/Overview

まずは一日くらいかけてWindows上にWSL2とCUDAを入れてみたのですが、最終的には安定的にGPUで機械学習ができず、プロセスが殺されたり、Windows全体がクラッシュしたりしました。なお、参考にしたのはエヌビディアの佐々木さんの記事です。CUDA/WSL2/Windowsはプレビュー版なので、今後の完成形を期待しています。

https://qiita.com/ksasaki/items/ee864abd74f95fea1efa

ちなみに、Windows 11 (Insider) だとクラッシュ画面が青ではなく緑ですよね。

https://photos.app.goo.gl/VNLSNs496sJjDQeVA

そこで、やっぱり使い慣れているUbuntu Linuxをデュアルブートで入れることにしました。もっとも参考にしたのは、前世代機を機械学習環境化した先人のQiita記事です。

https://qiita.com/delete/items/2ee2a19f0e75d83313ac

WiFi設定

TLDR

# Step 1 - Download the Latest Git and Build-Essential packages
sudo apt update && sudo apt-get install -y git build-essential

# Step 2 – Download the Iwlwifi-Firmware.git repository
git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
sudo cp linux-firmware/iwlwifi-* /lib/firmware/

# Step 3 – Create the Backported Iwlwifi Driver for your current setup
git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
cd backport-iwlwifi
make defconfig-iwlwifi-public
make -j4
sudo make install

特に今回のハマりどころはWiFiアダプターの設定でした。Ubuntuインストール中は、無線が使えなかったので、有線LANをつなげておいて、パッケージ更新ができるようにしました。インストールが終わって、Ubuntuにログインしてから、Intelの「Issues with Intel® Killer™ AX1650 In Debian*/Ubuntu* 16.04+」という記事を参考に、WiFiアダプターのドライバをビルドしてインストールできました。複数のやり方が書かれていたのですが、うまく行ったのはソースコードからビルドする方法だけでした。

しかし、実は他にも色々と試したので、どれが決定的にWiFi接続につながったのかまだわかりませんでした。なお、ブート時間が1分程度かかっていたところ、ブーツ時にWiFiアダプターのドライバが使えるように設定してあげたら、ブート時間が劇的に改善し、約15秒でログイン画面が出るようになりました。ブーツ時にWiFiアダプターのドライバが使えるように設定するコマンドは、上記のIntelのページにも書いてあるのですが、下記のとおりです。

update-initramfs -u

更に、順番が前後しますが、BIOSの設定で、Fast BootとSecure Bootはオフにしないと、WiFiアダプタの存在がLinuxに認知されないようです。このように、BIOS設定とドライバのインストールによって、WiFiは何とかなりました。

もう一点困っていたのは、ラップトップ内蔵のウェブカメラが使えなかったことです。しかしこれは単に、キーボードのショットカットでウェブカメラをオフにしていただけでした。それに気づいて、カメラをオンにしたらすんなり認識され、普通に使えるようになりました。これでウェブ会議も普通にできる状態になりました。

ということで、WindowsのWSL2でNnvidiaのGPU/CUDAを使おうとしましたが、うまく行かず、結局Ubuntuをデュアルブートして、ネイティブLinuxでMSIゲーミングラップトップGS66 Stealth 11UH GS66-11UH-321JPを使って機械学習に励む環境が出来上がりました。Windowsよりもサクサク動き、GPUを酷使しても、プロセスがメモリ不足で停止されることがあっても、Ubuntu Linuxがクラッシュすることは今のところありません。

この記事が気に入ったらサポートをしてみませんか?