GCE の新しいインスタンスを作りたい - らんだむな記憶 の続き。
gcloud compute --project=プロジェクトID instances create ml-dev --zone=asia-northeast1-a --image-family=ubuntu-2004-lts --image-project=ubuntu-os-cloud --subnet=VPCで作成したサブネット名 --network-tier=PREMIUM --no-restart-on-failure --maintenance-policy=TERMINATE --preemptible --deletion-protection --machine-type=a2-highgpu-1g --labels=env=ml-dev --create-disk="name=ディスク名,image-family=ubuntu-2004-lts,image-project=ubuntu-os-cloud,size=300GB,type=pd-balanced,boot=yes"
タイムゾーン
sudo timedatectl set-timezone Asia/Tokyo
pyenv
色々考えた結果、Install TensorFlow with pip でやっているような Miniconda で CUDA/cuDNN 環境をいきなり作る必要もなさそうと考えて、グローバルに CUDA 11.8 を入れる事にする。Miniconda はすぐには使わないので、引き続き pyenv を使う。なので、準備: Home · pyenv/pyenv Wiki · GitHub
その後:
pyenv install 3.11.2 pyenv rehash
NVIDIA ドライバ & CUDA 11.8
CUDA Toolkit 11.8 を導入することで NVIDIA のドライバもインストールされる。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pin sudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb sudo dpkg -i cuda-repo-ubuntu2004-11-8-local_11.8.0-520.61.05-1_amd64.deb sudo cp /var/cuda-repo-ubuntu2004-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/ sudo apt-get update sudo apt-get -y install cuda
して、暫く気長に待つと途中で以下のようなメッセージが出ながらログが流れていく:
***************************************************************************** *** Reboot your computer and verify that the NVIDIA graphics driver can *** *** be loaded. *** *****************************************************************************
VM 再起動後は
$ nvidia-smi +-----------------------------------------------------------------------------+ | NVIDIA-SMI 520.61.05 Driver Version: 520.61.05 CUDA Version: 11.8 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA A100-SXM... On | 00000000:00:04.0 Off | 0 | | N/A 28C P0 47W / 400W | 76MiB / 40960MiB | 0% Default | | | | Disabled | +-------------------------------+----------------------+----------------------+
$ nvcc -V nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2022 NVIDIA Corporation Built on Wed_Sep_21_10:33:58_PDT_2022 Cuda compilation tools, release 11.8, V11.8.89 Build cuda_11.8.r11.8/compiler.31833905_0
PyTorch 2.0
pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/test/cu118
Jupyter
Jupyter サーバーの保護 - Deep Learning AMI を参考にする。
$ cd ~ $ mkdir ssl $ cd ssl $ openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout mykey.key -out mycert.pem
別のインスタンスタイプから変更する場合
以下は動かない可能性がある。GPU がマシンタイプと合わない場合にエラーになる。
gcloud compute --project=プロジェクトID instances set-machine-type ml-dev --machine-type=a2-highgpu-1g --zone=asia-northeast1-a
ゾーンの移動
Move a VM instance between zones or regions | Compute Engine Documentation | Google Cloud
Docker
docker ... --gpus all
を通すため:
Installation Guide — NVIDIA Cloud Native Technologies documentation
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \ && curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/experimental/$distribution/libnvidia-container.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list $ sudo apt-get update $ sudo apt-get install -y nvidia-container-toolkit $ sudo nvidia-ctk runtime configure --runtime=docker $ sudo systemctl restart docker