このコースでは、リモート開発環境(「リモート・インタープリタ」とも呼ばれる)のセットアップについて説明します。
リモート開発環境にはいくつかの大きな利点がある:
このビデオでは、AWS EC2上にサーバーインスタンスを作成し、VSCodeでリモート開発環境をセットアップする方法を紹介します。
コースの構成はこうだ:
こんにちは、NLPクラウドのジュリアン・サリナスです。
今日は、ローカルマシンでコードを書きながら、リモートのAWSサーバーでコードを実行するために、リモート開発環境をセットアップする方法を紹介しよう。
このコースに前提条件はない。
リモート開発環境とはどういう意味だろうか?実は、VS Codeでローカルにコーディングするということなのだ。
他の開発環境を使用している場合は、リモートインタプリタやリモート開発環境がサポートされているかどうかを確認する必要がある。
しかし、GCPやAzure、OVH、Scalewareなどを使っている場合も、プロセスは非常に似ている。
ご覧のように、インスタンスのプロビジョニング、IPアドレスの取得、そしてVS Codeのローカルでそれを使ってインスタンスにSSHで接続することになる。
なぜリモート開発環境を使うのか?第一の理由は、ローカル開発環境のコストを下げたいからです。
例えば、このような高価なハイエンドのMacBook Pro Ultra M2を購入したくないかもしれない。そのような場合は、ローエンドのローカルマシンを購入し、必要なときにリモートでコードを実行する方が費用対効果が高いかもしれない。
2つ目の非常に重要な理由は、特に機械学習エンジニアにとって、GPUのようなハイエンドのハードウェアにアクセスする必要がある場合があり、そのようなハードウェアが必ずしもローカルマシンで利用できるとは限らないからだ。
例えば、A100 NVIDIA GPUやH100にアクセスしたい場合、そのようなGPUをローカルで入手することはできません。
今日お見せするように、これを行うことは非常に有効です。そうしないと、GPU開発用の特定のマシンにアクセスできないからです。
つまり、特定のライブラリやフレームワーク、ドライバをインストールしたい場合、リモートのAWSマシンでそれを行うことができる。
そして明日、例えばNVIDIAドライバやCUDAツールキット、Pythonライブラリなどの別バージョンをインストールする必要がある場合、2台目のサーバーをプロビジョニングすればよく、両方のサーバーが干渉することはない。
どちらのコンフィギュレーションも完璧に分離される。
もちろん、DockerやPythonの仮想環境などでも同様のことができる。
しかし、NVIDIAドライバの複数のバージョンをインストールしたいとします。
これはもっと複雑になるだろう。
その場合、複数のリモート環境のプロビジョニングが唯一の解決策になるかもしれない。
それでは、まず最初にAWSコンソールに接続し、基本的なAWSインスタンス(CPUインスタンス)を作成します。
さあ、始めよう。
私は今、AWSのコンソールにいる。
初めてAWSを利用する場合は、メールパスワード付きのアカウントを作成するだけでよい。
彼らはあまり多くの情報を求めてはいないと思う。
これでEC2にインスタンスを作成できる。
インスタンスの起動をクリックする。
インスタンスに名前をつけることができる。
例えば、これを開発環境と呼ぶことにしよう。
オーケー。
さて、肝心なところだ。
インスタンス用のオペレーティング・システムを選択する必要がある。
Ubuntuは標準的で、特にNVIDIAドライバでは、最新のドライバがUbuntuにインストールされるので、本当に助かります。
だから、ここではUbuntuをクリックしている。
Linuxを使うのが初めてでも、心配はいらない。
Linuxのトリックやコマンドはあまり必要ないだろう。
基本的にはVSのコードからすべてを行うつもりだが、フードの後ろはもちろんLinuxになる。
2204 LTSバージョンはそのままでいい。
そして今度は、シンプルなCPUインスタンスを選択する。
例えばAWSでは、M5インスタンス、M5ラージ、2CPU、8ギガのメモリがある。
僕らにとっては完璧だ。
今は多すぎるかもしれないが、将来的には自分のニーズにぴったり合ったインスタンスを選択しなければならないだろう。
オーケー。
ここでSSHキー・ペアを使う必要がある。
ここで初めてSSHを使う場合は、AWS上で鍵ペアを作成し、新しい鍵ペアを作成する必要がある。
これをテスト・キー・ペアと呼ぶことにしよう。
PEM形式を選択し、鍵ペアを作成することができます。
そして今、私のマシンでダウンロードしているところだ。
オーケー。
ここでセキュリティ・グループを変更する必要はない。
デフォルトでは、SSHポートはオープンになっている。
それが必要なんだ。
SSDが8ギガあれば、今の時代には申し分ない。
そしてインスタンスの起動をクリックする。
オーケー。
インスタンスの準備は整った。
これがAWSでの初めてのインスタンス作成であれば、もしかしたらAWSサポートにクォータをアップグレードしてもらう必要があるかもしれません。
正確には分からない。
GPUインスタンスのような非常に高価なインスタンスについては、クォータのアップグレードを依頼する必要があります。
単純なM5の例では、よくわからない。
しかし、もしここでエラーが出て、クォータの増加を要求しているのであれば、それはあなたがやろうとしていることだ。
これがその例だ。
見ての通り、すでに動いている。
とても速かった。
M5ラージ。
そして右側には、これから使用するIPアドレスがある。
インスタンスを作成し、SSHキー・ペアをマシンにダウンロードしたので、あとはVS Codeを開いてリモート・サーバーへのSSH接続を作成するだけだ。
Windowsで初めてSSHクライアントを使う場合は、アクティベーションが必要です。
Windowsチームによるチュートリアルです。
Googleで「WindowsでSSHクライアントを作成」と入力すれば、たくさんのチュートリアルを見つけることができる。
これが公式のものだ。
少し下を見ると、とてもシンプルだ。
ウィンドウズのアプリケーションで何かをアクティブにするだけでいい。
Linuxならデフォルトでインストールされている。
だから今、私はVSコードにいる。
左下にこのボタンがあります。
現在のウィンドウをホストに接続をクリックしている。
このリモート接続モジュールを初めて使用する場合、VS Codeがプラグインをダウンロードしようとしているのかもしれません。
そのため、この機能にアクセスできるようになるまで数秒かかることがあります。
ホストの設定をクリックしています。
今日はWindowsを使っているので、コンフィグはここにある。
そして、これが必要な設定ファイルだ。
そこで最も重要なのは、インスタンスのIPアドレスを取得し、ここに貼り付けることだ。
完璧だ。
私たちはコネクションに名前をつけることができるが、それは私たちのためだけのものだ。
DevHouseと呼ぼう。
usernameは、SSHクライアントがインスタンスに接続する際に使用するユーザー名です。
Ubuntuサーバーをプロビジョニングしたので、ユーザー名はデフォルトでUbuntuだ。
そしてSSHキー・ペアをダウンロードし、Windowsのデスクトップに置いた。
つまり、VSコードがキーを取得するのはここだ。
ファイルを保存し、一番下の「現在のウィンドウをホストに再接続」をクリックします。
DevHouseは私たちが作ったものだ。
ここで待つ必要がある。
とても良い。
VS Codeがキー交換を要求しているのがわかるだろう。
そう、このインスタンスに接続するのは今回が初めてだ。
だからセキュリティ上の理由から、この新しいフィンガープリントを受け入れる必要がある。
いいね。
あまりドラマチックには見えないが、実際に今、私たちはリモートのAWSインスタンスにいる。
左下にSSHと表示されている。
それを確認するには、上部にあるターミナルを開き、新しいターミナルをクリックする。
そしてこのターミナルは、私のローカル・ウィンドウズ・マシンのターミナルではないことがわかるだろう。
私はUbuntuマシンを使っている。
また、必要であれば、ディレクトリのリストのようなLinuxのコマンドを使うこともできる。
ここには何もないので、ディレクトリを作成しよう。
例えば、いくつかのテストを行うために開発環境を作りたいとしよう。
これで新しいtestフォルダがここにできた。
コマンドラインですべてを行うか、あるいは、VS Codeのグラフィカル・インターフェースを使って、いつものようにファイルをブラウズするのがよいだろう。
一番上の「フォルダを開く」をクリックする。
そしてここに、先ほど作成したテスト・ディレクトリがある。
これでVS Codeは再び開くようになったが、今度は先ほどの特定のフォルダーにある。
そしてこれからは、あなたのコードがAWS上で実行されることを除けば、ローカルマシンにいるかのように、いつも通りに開発を始めることができる。
では、試してみよう。
例えば、単純なPythonプログラムを作ってみよう。
ファイルを保存する。
そしてコンソールでファイルを実行する。
こんにちは。
あなたはAWS上で最初のリモートコードを実行することに成功した。
今日はここまでだ。
これでリモート開発環境を思う存分使うことができる。
AWSインスタンスが不要になったら、忘れずにオフにすること。
またすぐに会おう。