#fastaiこんにちは。ギークフィードでは講師の方にお越しいただいて機械学習の勉強会を行っています。Colaboratoryを使用して環境構築をすることなく学習をすることができています。手持ちの余っていたGPUを使用して構築を行ってみました。本音を言うと形から入るのが好きなだけです。Colaboratoryとの比較とパフォーマンス考察も行っているのでぜひ最後まで読んでみてください。喋ラボの大橋さんです。手元のMacでインストールUSBを作成します。USBメモリのフォーマットUSBメモリをMacに接続します。ディスクユーティリティからUSBメモリを選択し、「消去」をクリック。フォーマット形式はMS-DOS(FAT)を選択します。名前を適当に決めて「消去」をクリックし、フォーマットは完了です。LTSダウンロード上記のリンクより、インストーラーイメージをダウンロードします。imageを選択しました。イメージの書き込みにはbalenaEtcherを利用します。Etcherをインストールし、インストーラーイメージとUSBメモリを選択して「Flash!」をクリックします。意識高くCUIから書き込む方法もありますが、面倒なので省略します。Ubuntuのインストールインストールbiosのbootメニューで起動プライオリティをUSBメモリに変更して再起動。インストーラー起動後は好みの環境に合わせてインストール作業を行います。今回「アップデート他のソフトウェア」メニューでは最小インストールを選びました。Desktopインストール後の作業インストール後に行う準備作業です。ipを固定GUIで行う方法はこちらのブログがわかりやすく解説しています。(こっちのほうが簡単!)意識高くCUIから行う方法を紹介します。現状の状態を確認します。enp12s0LANで接続しています。NICはenp12s0です。マザーボードに無線LANのNICもありますが、使用していません。nmcliコマンドでipアドレス、ゲートウェイ、DNS、methodを設定します。コマンド後、設定ファイルが生成されるので確認することができます。1uuid=95893e6e-8e23-38bc-90fa-45fc1645e304type=ethernetautoconnect-priority=-999permissions=timestamp=1570674828[ethernet]mac-address=70:85:C2:48:CE:7Fmac-address-blacklist=[ipv4]address1=192.168.0.248/24,192.168.0.1dns=192.168.0.1;dns-search=method=manual[ipv6]addr-gen-mode=stable-privacydns-search=method=ignoreopensshの導入Desktop版はデフォルトでsshサーバーが入っていないのでリモート接続できません。インストールをして自動起動を有効にします。sshdパッケージの更新パッケージの更新はしておきましょう。cuDNNのインストール必要なパッケージのインストールソフトウェア開発パッケージとDKMSをインストールします。dkmsnouveauを止めるNVIDIAグラフィックスドライバーとnouveauグラフィックスドライバーが同時に動くと問題が発生するのでnouveauを止めます。モジュールが動いているかをlsmodで確認。wmi_bmof,mxm_wmi,nouveaunouveauが動いているようなので以下のファイルを作成して設定します。modeset=0以下のコマンドで設定を反映します。Toolkitのrunfileをダウンロードします。自分の環境に合わせてrunfileを選択してください。Toolkit以下のコマンドでもOK。http://developer.download.nvidia.com/compute/cuda/10.1/Prod/local_installers/cuda_10.1.243_418.87.00_linux.runダウンロードしたファイルをUbuntuサーバー上で実行します。--no-opengl-libsコンソールには何も表示されずに完了します。インストールが完了したら、環境変数を設定するファイルを作成します。INCLUDE_PATH="$CUDA_HOME/include"設定をしたら一度ログアウトし、再ログインした際に$CUDA_HOMEが環境変数として認識されていればOKです。Driverをダウンロードします。自分の環境に合わせてGPUを選択してください。Downloads今回は以下のコマンドで行いました。http://us.download.nvidia.com/XFree86/Linux-x86_64/430.50/NVIDIA-Linux-x86_64-430.50.runダウンロードしたファイルを実行します。option.今回は途中でwarningが出ましたが、32bit環境に関するものなので問題なさそうです。インストールが完了すると、以下のようにnvidia-smiコマンドでGPU情報を取得できます。|+-----------------------------------------------------------------------------+cuDNNのインストールcuDNNとは、NVIDIAが公開しているディープラーニング用の高速化ライブラリです。Programにサインインする必要があります。Linux」をダウンロードします。ダウンロードしたファイルはscp等でサーバーへアップロードします。ダウンロードしたtgzファイルを解凍し、ファイルを移動します。/usr/local/cuda/lib64/cuDNNがインストール完了しました。Notebookをインストールします。今回はfastaiのライブラリも利用したいのでインストールします。fastai一度ログアウト、ログインをするとjupyterコマンドが利用できるようになります。以下のコマンドでconfigを生成し、パスワードを設定します。Notebookが起動するようにdaemon化します。#環境に合わせて設定[Install]WantedBy=multi-user.target自動起動の有効化と実行。Driverを動かす基本的にリモートで作業を行うので、サーバーにモニターは接続しません。Driverがロードされない問題が発生することがあるようです。その場合は以下のコマンドで解決できるみたいです。Notebookのサービスを起動したら、ブラウザからhttp://【ubuntuのipアドレス】:【設定したポート】でアクセスします。このようなスーパーシンプルなログイン画面が表示されたらOKです。先程設定したパスワードでログインしましょう。K80を使用しています。今回はfastaiで公開されているレッスンでパフォーマンスを比較してみました。lesson1-pets.ipynb最初のレッスンは画像認識をして犬猫を種類ごとに分類するものです。resnet34を使用してファインチューニングをしています。Colaboratoryの結果から。Notebookでの結果です。lateが高いのが気になりますが誤差の範囲でしょう。映画のレビューがポジティブかネガティブ化を判定するものです。wkipediaの言語モデルをimdbのレビューでチューニングし、さらにネガポジ判定のチューニングを行っています。Colaboratoryの結果から。Notebookでの結果です。最初の内はトレーニング完了予想時間が50分弱と好スタートをきっていたのですが。最終的にはこんな結果に。パフォーマンスが落ちてしまったのか?lesson1では高パフォーマンスを出していたのに、lesson3では急激なパフォーマンス低下を起こしてしまいました。それは、GPUの冷却能力が低いことにあります。lesson3のトレーニング中のGPU状態を計測すると以下のような状態でした。|+-----------------------------------------------------------------------------+97Cという箇所がありますが、これはGPUの温度を表しています。一般的にGPUの適正温度は80°C以下と言われています。97°Cはかなりマズい温度です。このまま使い続けるとGPUの寿命を削ってしまいますし、高温ではほとんどパフォーマンスを発揮することはできません。GPUメモリについてまた今回使用してみてわかったことは、GPUのメモリは6GBでしたがこれは全然足りないということです。上記のnvidia-smiの結果から、lesson3のトレーニングでは約5GBのメモリを使用しています。Notebookではノートのプロセスを終了しないとメモリが開放されません。以下はlesson3のトレーニング実行後、lesson1のトレーニングを実行した際のプロセスとメモリ状況です。|+-----------------------------------------------------------------------------+PID3855がlesson3、PID5194がlesson1のノートのプロセスです。メモリが上限まで使用されており、この時Notebook上ではランタイムエラーが起きています。この後lesson3のプロセス、PID3855をkillすると以下のようになります。|+-----------------------------------------------------------------------------+5GBのメモリの空きができました。このように同時にノートを実行する際は注意が必要です。K80は12GBのメモリを積んでいます。Colaboratoryすげえ!」です。無料で素晴らしいスペックの環境をブラウザから使用できるというのは圧巻です。これから機械学習を始める方はColabを利用すればまず間違いないです。私もメインではColabを使っていこうと思います。一方で今回の構築は良い経験になりました。改善のためにはサーバー全体(特にGPU)の冷却能力を上げる必要があります。GPUも性能の高いものをSLIで構成したりするといいかもしれません。消費電力も考えるといくらお金をかければいいのやら。超長時間の学習の際に活用する可能性があるかもしれません。その場合は、以下のコマンドでGPUの消費電力を制限することで負荷をかけすぎることなく運用できるかもです。最近の記事ippei元ポーカープレイヤーで現ギークフィードエンジニア。AWSソリューションアーキテクトアソシエイト。Hardstyleすき。#fastai2019-10-11元ポーカープレイヤーで現ギークフィードエンジニア。AWSソリューションアーキテクトアソシエイト。Hardstyleすき。reserved.ページトップへ。