この記事を読んでできるようになること
- GCP上に、グラボが積まれたインスタンスを立てられるようになる
GCP、クラウドを利用する利点:グラボを利用できる(単刀直入)
- ローカルmacの数10倍の速度、メモリ容量も大幅に増すので、基本的に、画像分析などメモリ使用量が肥大化しがちなMLトレーニング時は必要
- ローカルで動作させる場合は、訓練後のmodelをローカルにダウンロードし使用する形が綺麗
- 最新のグラボを活用でき、高速な処理が可能 ※記載当時は NVIDIA tesla A100
以降、以下3見出しで解説を行います。
- ワークベンチ画面
- マネージドノートブックの作成画面 (ワークベンチ画面から遷移)
- JUPYTERLAB (ワークベンチ画面から遷移)
ワークベンチ画面
↑
- 赤枠内、今回使うのはワークベンチタグのみ
- 緑枠内の操作ボタンでそれぞれのインスタンスの状態管理を行える
- 新しいノートブック ボタンクリックで、次画面の[マネージドノートブックの作成画面]に遷移
- 青枠内JUPYTERLABを開くボタンをクリックしJUPYTERLAB画面へ遷移する(10 〜 30秒程度で遷移)
- ここに立ち上げているインスタンスが表示される、ここでインスタンスを選択し、停止すると課金額はほぼかからない
マネージドノートブックの作成画面
↑
- 赤枠内はGPUの操作を行う場合は、有効なタイプ選択が必要
- 緑枠内の自動シャットダウン機能は便利なので、推奨(グラボはかなり金額コストが嵩むので...)
↑
- 赤枠内カスタムドッカーイメージをGCPにあらかじめアップロードしておくことで、予めプリインストールされたイメージ以外を使用することができる
- 例えばOpenCVなどはtensorflow2のイメージにはないので、自分でtensorflow2とopencvをセットアップしたイメージを作成するなど可能
↑
- 青枠内について、後述でダウンロード、アップロード操作を可能にするチェックボックス
- ターミナル機能もbatch操作などをする場合有用
JUPYTERLAB
↑
- 赤枠内のプラスボタンを押下で、dockerImageを選択
- 予め用意されたdockerImageを選択可能
- 今回はtensorFlow2を選択。このため、notebook内で改めてpip install tensorflowのような実行は必要ない。
- これでタブが追加され、notebookが開始可能となる
↑
- terminal実行も可能、
- 例えば、sshキーを格納し、gitのpull pushコマンドの実行も可能
- コマンド例 eval
ssh-agent
- コマンド例 ssh-add ~/.ssh/<キー名>
↑
- 緑枠内インスタンス上のディレクトリに直接ダウンロード、アップロード処理が可能
↑
- 赤枠内のボタン押下でグラボの使用状況を確認可能
- せっかくクラウドリソースを使っているのに、ここが0%では意味がなくなるので、プログラム実行時にここの%を要チェック
tips
- マネージドインスタンスは、操作がないと自動で落としてくれる機能が付与されているので、お手軽
落とし穴
- gitのpullをした場合、毎回jupyter notebookのタブとコンテナはキルした方がいい、pullによりファイルのoverwriteが必要になった場合など、時間が想像以上にかかってしまっていた。
- git pullした場合に、ノートブック上に同じ内容が2回重複して記載されるバグがあるので、notebook形式のファイルではなく、.py形式でgith上は管理した方が色々と安全で比較的管理はしやすい
費用
使用したインスタンスタイプは[ a2-highgpu-1g ]
最も安いタイプだが、 速度的にも大きな問題なく使用できた。
トレーニング時のみの使用のため、平日1/2回 1日あたり6時間程度であると
以下のような金額になった。
上記使用量であれば、多少の変動を加味しても月10万は行かない可能性が高い