AI Platform Notebook とは
-
- GCP 上で数分で起動が可能なマネージド型の JupyterLab ノートブック インスタンス
-
- 数クリックで GPU インスタンスが作成、アクセスできる。裏では分析用のライブラリがインストール済みの GCE インスタンスが起動します。
-
- Pytorch(Anacondaベース), TensorFlowなどインスタンスのタイプを用途にあわせて起動時に選択可能
- 選べる GPU の種類は地域によって違う。例えば2019年10月時点ではus-west1が選択肢が多めだった。K80が最も安価なGPU、P100やV100は高価だが高速。
GPU を使ってみる
- 基本的には自動的にドライバのセットアップが行われるので、インスタンスを起動したらすぐにGPUが使えます。以下のコマンドで、TensorFlowでGPUが認識、使われてるか確認できます。また、GPUの使用率は!nvidia-smiコマンドで確認します。
from tensorflow.python.client import device_lib
device_lib.list_local_devices()
- 特に何もしなくても起動直後にGPUは使えるはずだが、何か環境がおかしくなってしまった場合はsudo chown jupyter /opt/anaconda3してからこんなかんじで環境設定しなおすと良いかも。
sudo su jupyter
conda install python=3.6.6
conda install -c aaronzs tensorflow-gpu==1.12.0
conda install -c anaconda cudatoolkit==9.0
conda install -c anaconda cudnn
conda install ipykernel
python -m ipykernel install --user --name tf-gpu --display-name "TensorFlow-GPU"
jupyter notebook
pip install keras
sudo service jupyter restart
- なお、tensorflow1.14だとkerasにGPU使用モードにできないという問題がありますが、以下のようにtensorflow版kerasを使うと回避可能です。
from tensorflow.keras.utils import multi_gpu_model
# gpuの個数をカウントするmethod
def get_available_gpus():
from tensorflow.python.client import device_lib
local_device_protos = device_lib.list_local_devices()
return len([x.name for x in local_device_protos if x.device_type == 'GPU'])
with tf.device('/cpu:0'):
model = Unet()
model = multi_gpu_model(model, gpus=get_available_gpus())
GPU monitoringについて(検証中)
ノートブックから Cloud Storage への接続
-
- gcsfuseで直接 Google Cloud Storage のバケットをマウントできますが、AI NotebookだとpythonのgcsfuseにPATHが通ってしまうのでImportError: No module named ‘fuse’エラーになってしまうケースがあります。その場合、/usr/bin/gcsfuseを指定しているか確認してみてください。
- GCEのカスタムメタデータでstartup-scriptにsudo su – jupyter -c “/usr/bin/gcsfuse bucket_name /home/jupyter/xxxx”しておくと自動でマウントも可能です。
FAQ
-
- Jupyter Lab からコンソールを起動すると全角文字になってしまう問題があります。あと、ノートブックからpipなどを実行すると遅いようなので、Compute Engine に直接sshしてsudo su jupyter でpipやkaggle api を使えるようにしておいたほうがよいかもしれません。
-
- ブラウザからJupyterに接続してるとセッションタイムアウトになってしまう場合があるので、SSHして.pyファイルを実行するか、papermillを使うと便利です。
-
- GPU の上限は、IAMの割当画面から2〜3程度なら申請すれば数時間であげることが可能ですが、5以上などあまりにも大きい数だと何日も待つことになります。
-
- Kaggleコマンドをインストールすると、デフォルトで ~/.local/bin/ 以下にインストールされるのでパスを通す必要があります。
-
- 再起動は sudo service jupyter restartで可能です。
-
- ノートブックがフリーズした時
-
- sshからjupyterを再起動しようとしたところ、
-
- No space left on device: ‘/home/xxx/.local
- というエラーに。sshから./.jupyter配下のいくつかのディレクトリを管理者権限付きで削除した結果元通りに動くようになりました。