Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Microsoft Azure での Deep Learning 用仮想マシンの構築

Avatar for tsune tsune
September 23, 2019

Microsoft Azure での Deep Learning 用仮想マシンの構築

Microsoft 社のクラウドサービス Microsoft Azure において提供されている,Deep Learning Virtual Machine を利用した仮想環境の構築方法についてまとめたものです!
SSH による接続設定から Anaconda のインストールまで,ステップバイステップで説明しています.
<目次>
1. Azureとは
2. 仮想マシンの作成
3. 接続設定
4. 環境構築
5. 使い方

Avatar for tsune

tsune

September 23, 2019

Other Decks in Programming

Transcript

  1. © Presentation Design © Presentation Design 4 1.Azureとは Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Microsoft Azure とは Microsoftが提供するクラウドサービスの集合体 https://azure.microsoft.com/ja-jp/overview/what-is-azure/ → 機械学習,認証管理,IoTなど,さまざまな分野で利⽤されている
  2. © Presentation Design © Presentation Design 5 1.Azureとは Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 やること Azureのサービスを利⽤して,機械学習⽤の仮想環境(GPU)を構築する︕ 仮想環境とは︖ パソコンの中で仮想的にパソコンを動かす 例︓Anaconda メリット ・管理コストの削減 新しいシステムを導⼊したときに,元のシステムとの⼲渉を防ぐ ・セキュリテイ ・異なるOSの両⽴ など
  3. © Presentation Design © Presentation Design 7 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 参考URL https://docs.microsoft.com/ja-jp/azure/machine-learning/data-science-virtual- machine/provision-deep-learning-dsvm
  4. © Presentation Design © Presentation Design 8 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Microsoft Azureへログイン
  5. © Presentation Design © Presentation Design 9 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 Viratual Machines をクリック
  6. © Presentation Design © Presentation Design 10 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 追加をクリック 所有している仮想マシンの⼀覧が表⽰される
  7. © Presentation Design © Presentation Design 11 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 クリック
  8. © Presentation Design © Presentation Design 12 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 Deep Learning Virtual Machine を検索して選択
  9. © Presentation Design © Presentation Design 13 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 クリック
  10. © Presentation Design © Presentation Design 14 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 Name : 仮想マシンの名前 OS : Linuxを選択 User Name : 仮装マシンに登録するユーザ名 Password : ユーザのパスワード (⼤⽂字,⼩⽂字,数字+12⽂字以上)
  11. © Presentation Design © Presentation Design 15 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 リソースグループ : 新規作成で適当に名付ける (仮想マシン間のアクセスが必要な場合等は 必要に応じて適当に選ぶ) 場所 : リソースの存在する場所.適当に選ぶ (場所によっては必要なリソースがない場合も あるので,適宜変える)
  12. © Presentation Design © Presentation Design 16 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 GPUの種類を選択 (必要な性能に応じて決める もし所望のGPUが出てこない場合には場所の再選択)
  13. © Presentation Design © Presentation Design 17 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 クリック
  14. © Presentation Design © Presentation Design 18 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 クリック
  15. © Presentation Design © Presentation Design 19 2.仮想マシンの作成 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 仮想マシンの作成 無事に終了するとVirtual Machinesに追加される
  16. © Presentation Design © Presentation Design 21 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 参考URL https://qiita.com/suthio/items/2760e4cff0e185fe2db9
  17. © Presentation Design © Presentation Design 22 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 接続設定 ⾃分のパソコン 仮想マシン 遠隔操作 暗号化 • SSH (Secure SHell) … ネットワークを介して他のコンピュータを制御するためのプロトコル 通信途中の情報は全て暗号化される
  18. © Presentation Design © Presentation Design 23 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSHの認証の仕組み ⾃分のパソコン 送信 仮想マシン 秘密鍵&公開鍵の作成 ユーザに公開鍵を登録 ログイン要求(ユーザ名とIPを指定) 乱数の⽣成 ハッシュ化 公開鍵で暗号化 秘密鍵で復号 くぁwせdrftgyふじこlp ハッシュ化 くぁwせdrftgyふじこlp 送信 結果の照合 くぁwせdrftgyふじこlp くぁwせdrftgyふじこlp 接続許可 or 拒否 ログイン完了︕ 22番ポート
  19. © Presentation Design © Presentation Design 24 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 1. 仮想マシンのSSHポートの開放 2. 鍵の登録
  20. © Presentation Design © Presentation Design 25 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 1. SSHポートの開放 22番ポートの 開放が必要 ポート… 接続を⾏う際の窓⼝. 通信規約ごとに番号が 決まっている.
  21. © Presentation Design © Presentation Design 26 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 1. SSHポートの開放 クリック
  22. © Presentation Design © Presentation Design 27 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 1. SSHポートの開放 クリック
  23. © Presentation Design © Presentation Design 28 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 1. SSHポートの開放 SSHを選択 SSHに
  24. © Presentation Design © Presentation Design 29 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 1. SSHポートの開放 SSHが追加された(受信ポートが開いた)
  25. © Presentation Design © Presentation Design 30 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜鍵の作成〜 鍵ペアの作成
  26. © Presentation Design © Presentation Design 31 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜鍵の作成〜 SSH認証時のパスワードを設定 (VMのユーザパスワードとは別) 鍵が作成された︕ 隠しフォルダ ~/.ssh へ移動(秘密鍵はここに⼊れておく必要がある) 鍵の作成 鍵作成コマンドの詳細 ssh-keygen ssh鍵を作ります -t rsa ⽅式 -b 4096 パスワードの⻑さ -C "<メールアドレス>" githubで使ってるやつとか -f id rsa karakuri ファイル名(必要な場合)
  27. © Presentation Design © Presentation Design 32 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜鍵の作成〜 ssh-rsa 〜 メールアドレスまで全てコピーして メモ帳とかに貼り付けておく .pub の内容をコピー cat <作成した公開鍵(.pubの⽅)> で表⽰してコピー
  28. © Presentation Design © Presentation Design 33 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜鍵の作成〜 鍵の登録
  29. © Presentation Design © Presentation Design 34 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜ログイン〜 クリック
  30. © Presentation Design © Presentation Design 35 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜ログイン〜 クリックして クリップボードにコピー
  31. © Presentation Design © Presentation Design 36 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜ログイン〜 ターミナルに貼り付けて実⾏ → ユーザーのパスワードを要求されるので, マシンの作成時に登録したものを⼊⼒
  32. © Presentation Design © Presentation Design 37 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜ログイン〜 ログイン成功 鍵のパスワードを要求されるが, まだ登録していないので適当に打って流す (もっと賢い⽅法があるはず) やりすごすとユーザパスを要求されるので 登録したものを⼊⼒する
  33. © Presentation Design © Presentation Design 38 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜ログイン〜 隠しフォルダ ~/.ssh/ にauthorized_keys という ファイルがあるので,ここに公開鍵を登録する コピーしておいた公開鍵の中⾝を 全て貼り付けて,登録完了︕
  34. © Presentation Design © Presentation Design 39 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 vimの使い⽅ 基本的な操作 https://www.sejuku.net/blog/5570 以下は覚えておく︕ (モード) vimではモードを切り替えて操作する ・コマンドモード カーソル移動や編集を⾏う ・インサートモード 書き込みをする (コマンド) ・i インサートモードへ移⾏ ・esc コマンドモードへ移⾏ ・:w 保存 ・:q 終了 ・:wq 保存して終了 ・:q! 変更を破棄して強制終了 コマンドモード インサートモード 保存して終了するとき (コマンドモード)
  35. © Presentation Design © Presentation Design 40 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜ログイン〜 vim authorized_keys でファイルを開く iでインサートモードへ コピーしていた内容を貼り付け escでコマンドモードへ :wqで保存して完了︕
  36. © Presentation Design © Presentation Design 41 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜鍵の作成〜 接続⽅法の設定 簡単に接続できるようにする
  37. © Presentation Design © Presentation Design 42 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜接続情報の設定〜 隠しフォルダ ~/.ssh/ に configというファイルが あるので,ここに接続情報を登録する ⼀旦ログアウトして,接続情報の設定を⾏う. ログアウトはctrl+D vim <ファイル名> ︓vim(エディタ)で<ファイル名>を開く
  38. © Presentation Design © Presentation Design 43 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜接続情報の設定〜 Host : 接続名.好きなように決める. Host name : IPアドレス(パブリック) user name : ユーザ名 port : 22 (ssh接続はポート番号が22と決まっている) IdentityFile : 秘密鍵のディレクトリ 通常のssh接続では ssh -I <秘密鍵> <ユーザ名>@<IPアドレス> とする必要があるが,この登録により ssh <接続名> で接続できるようになる iでインサートモードにして⼊⼒. escでコマンドモードへ移⾏して:wqで保存して終了.
  39. © Presentation Design © Presentation Design 44 3.接続設定 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 SSH接続の設定 2. 鍵の登録 〜接続名によるログイン〜 簡単にログインできるように︕ ssh <接続名> sshのパスワードが要求される ※ 今後使⽤するときにはこの⽅法でログインを⾏います
  40. © Presentation Design © Presentation Design 46 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 流れ Pyenvをインストール Pyenvを⽤いてAnacondaをインストール Chainer と Cudaのインストール
  41. © Presentation Design © Presentation Design 47 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Pyenvとは Pythonのバージョン管理を⾏うシステム →複数のバージョンのPythonを切り替えて扱うことができる 公式info https://github.com/pyenv/pyenv-installer
  42. © Presentation Design © Presentation Design 48 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Pyenvのインストール サイトからダウンロードし,インストール curl https://pyenv.run | bash
  43. © Presentation Design © Presentation Design 49 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Pyenvのパスの開通 隠しフォルダ.bashrcに設定を書き込み,パスを通す echo 'export PATH="$HOME/.pyenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(pyenv init -)"' >> ~/.bashrc echo 'eval "$(pyenv virtualenv-init -)"' >> ~/.bashrc source ~/.bashrc .bashrc … bashを起動したときに⾃動で読み込む設定ファイル bash … シェルの⼀種.Linux系OSで使われる.(ターミナル ) echo … 画⾯に⽂字列や数値、変数を表⽰するLinuxコマンド echo <表⽰したいもの> >> ファイル で出⼒をファイルに追記できる
  44. © Presentation Design © Presentation Design 50 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Anacondaのインストール Anacondaのバージョンを検索 pyenv install --list | grep ana インストール可能なプログラムの⼀覧を表⽰ ana とつくプログラムを検索 最新のバージョンをインストール pyenv install anaconda<version> 最新バージョン インストールには数分かかる
  45. © Presentation Design © Presentation Design 51 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 環境の切り替え インストールしたanaconda環境に切り替え pyenv global anaconda<version> 所有しているバージョンの確認 pyenv versions (使⽤しているpythonの確認) which python anacondaに切り替わると これがつく 所有しているバージョン *つきが稼働中
  46. © Presentation Design © Presentation Design 52 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 chainerとcupyのインストール chainerのインストール pip install chainer==5.4.0 バージョン指定をする (このバージョンが⼀番いいらしい) pipの更新 pip install --upgrade pip
  47. © Presentation Design © Presentation Design 53 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 chainerとcupyのインストール 持っているライブラリを確認 (違うバージョンのcupy-cudaを持っていたらアンインストール) pip install cupy-cuda<version>==5.4.0 pip list (pip uninstall cupy-cuda<version>) 使⽤しているGPUが対応しているcupyのバージョンを調べる nvcc -V バージョン指定をしてcupyをインストール 対応しているcudaのバージョン 10.0 → <version>=100 9.0 → <version>=90 9.1 → <version>=91 ... https://docs-cupy.chainer.org/en/stable/install.html 重要︕
  48. © Presentation Design © Presentation Design 54 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 chainerとcupyのインストール 持っているライブラリを確認 (違うバージョンのcupy-cudaを持っていたらアンインストール) pip install cupy-cuda〇〇==5.4.0 pip list (pip uninstall cupy-cuda〇〇) 使⽤しているGPUが対応しているcupyのバージョンを調べる nvcc -V バージョン指定をしてcupyをインストール 10.0だったので100をインストール
  49. © Presentation Design © Presentation Design 55 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 動作確認 pythonを起動してインポートできればok 終了はctrl+D
  50. © Presentation Design © Presentation Design 56 4.環境構築 Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 エラー cupyのバージョンがおかしい → nvcc -V で正しいバージョンを確認 pip list で持っているcupy-cudaを確認し,全てアンインストールして正しいバージョンを⼊れる
  51. © Presentation Design © Presentation Design 58 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 マシンの開始と停⽌ マシンを使う時 → Azureからマシンを開始する
  52. © Presentation Design © Presentation Design 59 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 マシンの開始と終了 マシンを使い終わった時 → Azureからマシンを停⽌する 終了時にパブリックIPを予約すると, 以降も同じIPが使えるので,チェックしておく. パブリックIPが変わってしまったら... → ~/.ssh/config の設定を書き換える
  53. © Presentation Design © Presentation Design 60 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Jupyter notebookを開いてみよう sshログイン時にローカルのポートと仮想マシンのポートをつないでおく ssh -L <port>:localhost:8888 <ホスト名> ローカルで<port>とすると,仮想環境の8888につながるようになる ローカル側でもjupyterを開いている(8888を使っている)場合︓9999 そうでない場合︓8888 とかにしておく
  54. © Presentation Design © Presentation Design 61 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Jupyter notebookを開いてみよう 仮想マシンはブラウザを持っていないので,no browserで起動 →urlをコピーしてポート番号を書き換えてローカルのブラウザで開く jupyter notebook --no-browser ここを指定した<port>に書き換えて開く
  55. © Presentation Design © Presentation Design 62 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Jupyter notebookを開いてみよう 仮想マシンはブラウザを持っていないので,no browserで起動 →urlをコピーしてポート番号を書き換えてローカルのブラウザで開く jupyter notebook --no-browser
  56. © Presentation Design © Presentation Design 63 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Jupyter notebookを開いてみよう nohupで起動(バックグラウンド実⾏,ssh接続が切れてもjupyterが落ちないようにする) nohup jupyter notebook --no-browser >> jupyter.log 2>&1 & nohup 〜 & バックグラウンド実⾏ >> jupyter.log 出⼒をjupyter.logへ(デフォルトではnohup.out) (>jupyter.logとすると追加ではなく上書きになる) 2>&1 標準エラー出⼒を標準出⼒にマージ https://qiita.com/ritukiii/items/b3d91e97b71ecd41d4ea ・この⼀⽂はコピーしておくと便利︕ ・ずっと同じファイルを使っていると出⼒が溜まっていくので,適宜ファイル名を変えても良い
  57. © Presentation Design © Presentation Design 64 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Jupyter notebookを開いてみよう jupyter.logの中に出⼒があるので,そこからurlを探してくる もしくは jupyter notebook list と打つと,いま開いているjupyterのurl, token が取得できる. : : 以降はコピーしない もしtokenを要求された場合には,?token= の部分をコピーして貼り付ける
  58. © Presentation Design © Presentation Design 65 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Jupyter notebookを開いてみよう nohupで開いたnotebookを終了するには,プロセスIDを調べてkillする ps aux | grep jupyter ps プロセス管理のコマンド aux すべての種類のプロセスの知り得るだけの情報がすべて網羅される grep 検索 プロセスID
  59. © Presentation Design © Presentation Design 66 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 Jupyter notebookを開いてみよう nohupで開いたnotebookを終了するには,プロセスIDを調べてkillする kill <プロセスID>
  60. © Presentation Design © Presentation Design 67 5.使い⽅ Microsoft AzureでのDeep

    Learning⽤ 仮想マシンの構築 ファイルの送受信 scpコマンドを使う ローカル → マシン マシン → ローカル scp <送りたいファイル> <ユーザ名>@<ホスト名>:<届け先のディレクトリ> フォルダごと移動させたいときは -r オプションを使う scp <ユーザ名>@<ホスト名>:<取ってきたいファイル> <受け取り先のディレクトリ> scp -r ...(同上) pwd カレントディレクトリの表⽰ sample.txt をhome/tsune/に作成 ファイルが取得できてる 仮想マシンからsample.txtを取ってくる (パスワードが要求される)
  61. quick reference 68 l 接続⽅法 - ポートをつないで接続 ssh -L <port>:localhost:8888

    <ホスト名> <port> = 8888 or 9999 など - ログアウト ctrl+D l jupyter notebook - バックグラウンド実⾏ nohup jupyter notebook --no-browser >> jupyter.log 2>&1 & - 開き⽅ vim jupyter.logで開いてurlを探す もしくは jupyter notebook list →8888を<port>に書き換えて開く - 終了⽅法 ps auxでプロセスIDを調べてkill <プロセスID> l vimコマンド - i : インサートモードへ - esc : コマンドモードへ - :w : 保存 - :q : 終了 - :wq : 保存して終了 l ファイルの送受信 - ローカル → マシン scp <送りたいファイル> <ユーザ名>@<ホスト名>:<届け先のディレクトリ> - マシン → ローカル scp <ユーザ名>@<ホスト名>:<取ってきたいファイル> <受け取り先のディレクトリ> - フォルダごと移動させるとき scp –r ...(同上)