Data Science VM (DSVM) に VSCode から SSH 接続する手順 (おまけで X2Go と Jupyter の SSH 接続)

Azure の Data Science VM (DSVM) はクラウド上の仮想マシンなので、そもそもリモートで利用するのが前提ですが、「機械学習に必要な環境が簡単に作れます」的な文脈で語られることが多い気がします。

今回は SSH で接続して安全な開発環境として利用 するための手順の紹介。
目玉は Visual Studio Code から SSH 接続 する手順ですが、他にも X2Go と Juypter 利用も載せます。

どの方法でも最初に 共通の準備 が必要です。お忘れなく。

クラウド上のリソースと使い慣れた Visual Studio Code とを使って、自宅や外出先でもオフィスでも、GPU ありの高性能なマシンで効率よく AI 開発しましょう。


■ 共通の準備

最初に、開発ツールによらず必要となる共通の準備をします。

  1. OpenSSH クライアントをインストール (別の記事を参照)
  2. ローカルで SSH キーペア作成 (別の記事を参照)

ローカル PC ごとに 1回実施すればいい手順なので、すでにやったよという方はスキップ。

キーベアを作成したら Azure ポータルで DSVM を作成 します。
今回は “Data Science Virtual Machine – Ubuntu 16.04” を作ります。

手慣れた方も多いかと思いますが、一応ポイントとしては [認証の種類] を “SSH 公開キー” にすること。

公開キーにはローカルで作成した SSH の公開キーの中身を貼り付けます。

VM ができたら 固定 IP にします。

仮想マシンができて IP アドレスを固定に変更したら、続いてローカル PC の設定。
SSH 接続の config ファイルを編集します。

<プロファイル名>\.ssh\config” をテキストエディターで開きます。なかったら新規作成します。

以下を入力して保存します。

Host <任意の名前>
  HostName <DSVM の IP アドレス>
  User <DSVM の管理者アカウント名>
  Port 22
  IdentityFile ~/.ssh/<作成した SSH 秘密キーファイル名>

どのツールを使う場合でも、ここまでの準備は実施してください。


■ Visual Studio Code でDSVM に SSH 接続

DSVM の側では SSH を有効にして作成することでリモート接続される設定はできています。

ここからは Visual Studio Code 側の設定です。

1. Remote Development 拡張機能のインストール

リモート接続するために Visual Studio Code の “Remote Development” 拡張機能をインストールします。

VSCode を使い慣れていれば迷うことはないと思いますが、念のため、手順は こちらの記事 の通り。

2. VSCode の [リモートエクスプローラー] で [SSH Target] を選択して、接続したい DSVM を選択します。
右クリックで接続します。”New Window” か “Current Window” かはお好みで。

もし対象の DSVM が見つからない場合は、[コマンドパレット] (Ctrl + Shift + P) で [Remote-SSH: Add New SSH Host] で DSVM を追加します。
ここでも念のため、こちらの記事 が参考になるかも。

3. プラットフォームを聞かれたら “Linux” を選択します。

4. フィンガープリントの確認では “Continue” を選択します。

5. パスフレーズを入力すれば DSVM に接続完了します。

6. VSCode のエクスプローラーで接続先のフォルダーを選択して開発開始。

あとはお好きなように VSCode でリモート開発を楽しんでください。


■ X2Go で DSVM のグラフィカル デスクトップに SSH 接続

Linux のデスクトップを利用したい場合は、X2Go で接続できます。

公式サイトによると X11 より X2Go のほうがパフォーマンスがよいらしく、DSVM ではあらかじめ X2Go サーバーがインストールされています。

1. X2Go クライアント をダウンロード、インストールします。

2. X2Go クライアントを起動したら [Session] -[New Session] で DSVM 接続情報を入力、選択します。

注意点としては、

  • Host ・・・ DSVM の IPアドレス
  • Login ・・・DSVM の管理者アカウント
  • Use RSA/DSA key for ssh connection ・・・ SSH 秘密キーファイル
  • Session Type ・・・ XFCE

3. DSVM に接続します。初回は公開キーのハッシュを聞かれるはず。

4. パフフレーズを入力すると DSVM に接続して XFCE デスクトップが表示されます。

5. VSCode, Jupyter Notebook, R Studio などがインストールされているので、お好きなもので開発開始。


Web ブラウザーで DSVM 上の Jupyter サーバーに 接続

VSCode もいいけど、やっぱり Jupyter Notebook / Lab が慣れてるんだよなという方向け。

DSVM 上の Jupyter サーバーにローカル PC から接続できます。
ただし、やりたいことのわりにちょっとだけ手間がかかります。

1. ターミナル (コマンドプロンプトでも OK) で、DSVM に SSH 接続します。

ssh <config ファイルに登録したホスト名>

2. DSVM 上の Jupyter Notebook を起動します。”–no-browser” を忘れずに。
起動したら、最後の行の token をクリップボードにコピーします。

jupyter notebook --no-browser

DSVM では Jupyter サーバーは 8888 番ポートであることに注意。

3. ターミナルをもう一つ立ち上げて、トンネリング指定して SSH ログインします。

ssh -L 8888:localhost:8888 <DSVM のホスト名>

4. Web ブラウザーを起動して、”http://localhost:8888” に接続します。
DSVM の Jupyter に接続して、トークン入力待ちになります。

DSVM の Jupyter サーバーのトークンをクリップボードにコピーしたはずなので貼り付けます。

5. Jupyter Notebook が開きます。

Jupyter Lab に繋ぎたければ “http://localhost:8888/lab” に接続します。

と、ここまで書いておきながら、Jupyter Notebook / Lab を使いたいなら、DSVM ではなくて Azure ML のコンピューティング インスタンス を使うほうが素直です。


DSVM に安全に接続してリモート開発する方法 3種類を紹介しました。
個人的には Visual Studio Code を使う のがいいかなと思ってます。

さて、AI 開発でリモート接続する場合、

Azure ML のコンピューティング インスタンスに接続する

ものもあります。

どちらがいいかは・・・難しいですね。
マイクロソフトは Azure ML に寄せてきているように見えるので、コンピューティング インスタンスを使うのが今どきな気がします。(私見)
特に Python で Jupyter でというのが前提の開発ではコンピューティング インスタンスがよさそう。

DSVM のメリットは自動シャットダウン設定ができること。
安心して GPU 使えるのは精神衛生上とても良い。
あとは Jupyter 以外のツールも入っているので、それぞれ使い分けたいとか使ってみたい場合も DSVM がいいですね。
仮想マシン (IaaS) なのでローカル PC でやりたいことを全部クラウドに持っていく感じ。VDI の機械学習環境ですかね。

どちらを使うかはそれぞれの判断にお任せして、クラウド上の GPU リソースをうまく活用して、そして Visual Studio Code を活用して、リモート開発を楽しみましょう。

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中