機械学習

Windows Server 2019 上で Anaconda をベースにした機械学習環境

投稿日:

TensorFlow(GPU) と Keras を用いて機械学習を行う環境を、
Windows Server 2019 上に Anaconda をベースにして作成した時のメモ。

今回の最終目標は Keras-RL を用いて Deep Q-Learning を行うこと。
 


 

事前調査

Keras-RL は Keras が必要で、Keras は TensorFlow で動かす。
(Keras は TensorFlow に取り込まれたが、Keras-RL は今の所 Keras が必要)

TensorFlow はできれば GPU で処理させたい。
GPU を使うとなると自分の手元では以下の選択肢がある。

  • Ubuntu + TensorFlow(GPU)
  • Windows Server + TensorFlow(GPU)
  • Docker on Ubuntu

なお、私は macOS も利用しているが、
データ解析, メールやスライド作成など比較的軽い作業が多く、ノートPCである。
この手の開発は何かと情報が少なかったり、遅かったりするのでメインにはしていない。
また CUDA のサポートも v10.2 で辞めるそうだ。
というわけで、macOS はひとまず考えないことにする。

また、3つ目の TensorFlow(GPU)など一切の環境含む Dockerコンテナは、
NVIDIA Docker (NVIDIA Container Toolkit) を使っており、
これは Linux上でしか動きません。

TensorFlow のページを見ると、Linux や macOS では
ライブラリやドライバの ver指定が非常に細かく動かすのが大変そうに"見えた" ので(*後述)、
まずは Windows Server 2019 上に環境を作ってみることにした。
GPU は、NVIDIA Quadro RTX 6000。

Google Adsense



環境作り

各種インストーラーを指定する際に、陽に Windows Server 2019 が見当たらない場合は、
Windows 10 用を用いれば大丈夫だった。

グラフィックドライバのインストール

後述する CUDA や cuDNN 等は特定のver以降のドライバ上でしか動かないので、
新しめのドライバを入れておく。(グラフィックドライバとCUDAの対応表

この手のドライバのインストールは、リモートでやってはいけない(1敗)。
面倒だがコンソールからやるようにする。
リモートからやって失敗した場合は、
失敗時のゴミが残っていることがあるようなので、
アンインストールしてからやりなおす。
 

CUDA, cuDNN のインストール

TensorFlow, GPU とかでググると、必須の手順として説明されるが、
Anaconda で環境を作る場合は多分要らない(*後述)。
今回、これが分かったので後で Ubuntu 環境でも試して検証してみるつもり。

私はこれを後から気づいたので、試したときは両者をインストールはした。
その際の手順を念の為残しておく。
 

CUDA

ココ からダウンロードする。
OS, Arch などを指定してダウンロード。
network と local はどちらでも良い。
やはりリモートでインストールしてはいけない。
 

cuDNN

無料の会員登録が必要。
CUDAのverを指定してダウンロード。
Windows の場合、C:\tools\cuda に別途展開する方法もあるようだが、
cuDNN と CUDA間のバージョンの連動が必要なようなので、
私は CUDA 関係のファイルがある以下のディレクトリに直接展開した。
--> C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2

Google Adsense



Path の設定

上記CUDA関連ファイルへ Path を通す。
"システムの詳細設定 → 環境変数" と巡るとユーザーの変数が設定できないので、
"コントロールパネル → ユーザーアカウント → ユーザーアカウント → 環境変数の変更" と行き、
上半分のユーザーの環境変数の中から Path に以下を追加する。
(vX.x はCUDAのバージョン番号)

  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.x\bin
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.x\extras\CUPTI\lib64
  • C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vX.x\include
     

Anaconda

Anaconda の環境は前提としておきます。
入っていない場合は、難しくないので自分で適当に入れてください。
以下は専用テスト仮想環境の作成と、必要モジュールのインストールのみ説明。
(Anaconda v2019.10, conda v4.7.12)
 

専用仮想環境の作成

別途 CPU で Keras-RL v0.4.2 との動作を確認できた、
TensorFlow v1.14.0, Keras v2.2.4 を入れる。

Google Adsense



TensorFlow (GPU) の動作確認

jupyter から先程作成した keras-rl-gpu の kernel を指定して、
単に import tensorflow としてみたり、
以下のようにデバイスとして見えるかなど。

in [1]:

out[1]:

どこかから TensorFlow の簡単なサンプルをコピペで持ってきて、
ELSA System Graph 等で GPU のロードを確認できれば尚良し。
 

Anaconda で環境を作る場合の CUDA, cuDNN について

conda install tensorflow-gpu とした場合に、依存関係の解決で、
cudatoolkit や cudnn が合わせてインストールされる。
私はシステムには CUDA v10.2.89 を入れてあったが、
tensorflow-gpu=1.14.0 を指定した場合には、cudatoolkit として v10.0.130 がインストールされた。
これらは C:\Users\[uname]\.conda\envs\[envname] 以下に配置されており、
conda activate 等としたときは Path に適切な値が設定されるようだ。
 

Windows Server 上の jupyter をリモートから利用する

jupyter(と firewall)させ適切に設定すれば、リモートから接続できるが、
リモートデスクトップ・セッションを1つ専有するのは勿体ないので、
SSH でログイン、Anaconda に載って jupyter を叩けるようにする。

Google Adsense



jupyter の設定

jupyter notebook --generate-config で 雛形を生成。
(C:\Users\[uname]\.jupyter\jupyter_notebook_config.py)

以下を適当に設定。

SSH(サーバー) の設定

アプリ → オプション機能の管理 → 機能の追加 → OpenSSHサーバー をインストール。
コンピュータの管理 → サービス から "OpenSSH SSH Server" を起動, 自動に設定
これでリモートからシェル(コマンドプロンプトの画面)に入れるようになる。

ちなみに、WSL を入れている場合、
ログイン後に bash と打つと、WSL の方に切り替えることもできる。
 

Anaconda 環境に (素の)コマンドプロンプトから入れるようにする

Path に以下を追加。

  • C:\ProgramData\Anaconda3\bin
  • C:\ProgramData\Anaconda3\Scripts

SSH でログイン後、 conda init cmd.exe
再接続すると、 conda activate [envname] などで Anaconda 環境に入れるようになる。
デスクトップ環境においても、Windows メニューから Anaconda プロンプトを開く必要がなくなります。

今回の場合、SSH でログイン後、

として jupyter を起こしておけば、リモートから GPU を使って TensorFlow の演算等が行える。
 

Google Adsense

Google Adsense

-機械学習
-, , , , , ,

Copyright© HEPtech, 2024 All Rights Reserved.