自分のキャリアをあれこれ考えながら、Pythonで様々なデータを分析していくブログです

Amazon Sagemaker Studio Lab (GPU runtime)の各種情報を確認

Data Analytics
Data Analytics

本記事の内容はすべて、2022年11月時点の情報です。

日々進化しているサービスなので情報が古い可能性がありますが、気づいた時になるべく注意書き追加か記事の更新しようと思います。

まだSagemaker Studio Labへの登録が完了していない方は下記の記事を参照ください。

無料でGPU環境を使えるAmazon SageMaker Studio Labに登録してみた
今回はAmazon SageMaker Studio Labというサービスを使ってみようと思います。 CPU環境とGPU環境の両方が無料で使えてしまうサービスで、GoogleのColaboratoryと似たサービスのようです。 登録してから...

Amazon Sagemaker Studio Labでcomputer typeでGPUを選択するとGPUのruntimeが利用できるようになります。

GPUを選択すると下記スクリーンショットのメッセージが出現しました。

どうやら、本当にGPUを使うのが適切かどうか検討してくださいというポップアップのようです。

現状GPU runtimeは24時間で合計8時間(1セッションは最大4時間)に制限されているようです。

GPU runtimeは並列計算などに最適化されていて、並列ではない一般的な計算処理はCPU runtimeを使うのが良いようです。(RNNの計算はCPU runtimeを使うのが良いようです)

図: Compute TypeでGPUを選択したときのポップアップ

スポンサーリンク

OS・ユーザー名・CPUコア数・メモリ容量など

なんとCPU runtimeと全く同じでした。GPU runtimeはCPU runtimeにGPUが追加されたものとも言えそうです。

従って重複内容になってしまうので、詳細はCPU runtimeを確認した記事をご確認ください。

Amazon Sagemaker Studio Lab (CPU runtime)の各種情報を確認
2022年11月時点の情報です。 まだSagemaker Studio Labへの登録が完了していない方は下記の記事を参照ください。 先頭に(studiolab)と書いていある場合、Jupyerlabから起動したTerminalで確認してい...
スポンサーリンク

GPU関連の情報

CPUコア数やメモリ容量はCPU runtimeGPU runtimeも変わりありません。そのため、GPU runtimeを起動した場合のGPU関連の情報を調べてまとめておこうと思います。

Google colabで下記記事のようにGPU関連の情報を確認したことがあるので、Amazon Sagemaker Studio Labでも同じように確認していこうと思います。

Google ColabのGPU環境でGPU版torchとGPU版mxnetの動作確認をしてみた。
本記事では、今後ディープラーニング系のライブラリを使っていこうと思っている中でGPUを使える環境を準備したかったので、Google ColaboratoryのGPU環境の確認とGPU版のtorchとmxnetというライブラリを使ってみた結果...

GPU動作確認のためのconda環境の作成

test-gpuという名前のconda環境を作成
(studiolab) studio-lab-user@default:~$ conda create --name test-gpu python=3.9
Out[0]

Collecting package metadata (current_repodata.json): done
Solving environment: done

・・・省略・・・

The following NEW packages will be INSTALLED:

  _libgcc_mutex      conda-forge/linux-64::_libgcc_mutex-0.1-conda_forge
  _openmp_mutex      conda-forge/linux-64::_openmp_mutex-4.5-2_gnu
  bzip2              conda-forge/linux-64::bzip2-1.0.8-h7f98852_4
  ca-certificates    conda-forge/linux-64::ca-certificates-2022.9.24-ha878542_0
  ld_impl_linux-64   conda-forge/linux-64::ld_impl_linux-64-2.39-hcc3a1bd_1
  libffi             conda-forge/linux-64::libffi-3.4.2-h7f98852_5
  libgcc-ng          conda-forge/linux-64::libgcc-ng-12.2.0-h65d4601_19
  libgomp            conda-forge/linux-64::libgomp-12.2.0-h65d4601_19
  libnsl             conda-forge/linux-64::libnsl-2.0.0-h7f98852_0
  libsqlite          conda-forge/linux-64::libsqlite-3.40.0-h753d276_0
  libuuid            conda-forge/linux-64::libuuid-2.32.1-h7f98852_1000
  libzlib            conda-forge/linux-64::libzlib-1.2.13-h166bdaf_4
  ncurses            conda-forge/linux-64::ncurses-6.3-h27087fc_1
  openssl            conda-forge/linux-64::openssl-3.0.7-h166bdaf_0
  pip                conda-forge/noarch::pip-22.3.1-pyhd8ed1ab_0
  python             conda-forge/linux-64::python-3.9.15-hba424b6_0_cpython
  readline           conda-forge/linux-64::readline-8.1.2-h0f457ee_0
  setuptools         conda-forge/noarch::setuptools-65.5.1-pyhd8ed1ab_0
  tk                 conda-forge/linux-64::tk-8.6.12-h27826a3_0
  tzdata             conda-forge/noarch::tzdata-2022f-h191b570_0
  wheel              conda-forge/noarch::wheel-0.38.4-pyhd8ed1ab_0
  xz                 conda-forge/linux-64::xz-5.2.6-h166bdaf_0

Proceed ([y]/n)? y

Downloading and Extracting Packages
ld_impl_linux-64-2.3 | 675 KB    | ##################################################################################### | 100% 
libsqlite-3.40.0     | 791 KB    | ##################################################################################### | 100% 
python-3.9.15        | 21.0 MB   | ##################################################################################### | 100% 
Preparing transaction: done
Verifying transaction: done
Executing transaction: done
#
# To activate this environment, use
#
#     $ conda activate test-gpu
#
# To deactivate an active environment, use
#
#     $ conda deactivate

Jupyterでtest-gpuのカーネルを利用できるようにするため、ipykernelをインストールします。

test-gpu環境にipykernelをインストール
(studiolab) studio-lab-user@default:~$ conda activate test-gpu
(test-gpu) studio-lab-user@default:~$ conda install ipykernel
Out[0]
Collecting package metadata (current_repodata.json): done
Solving environment: done

・・・省略・・・

The following NEW packages will be INSTALLED:

  asttokens          conda-forge/noarch::asttokens-2.1.0-pyhd8ed1ab_0
  backcall           conda-forge/noarch::backcall-0.2.0-pyh9f0ad1d_0
  backports          conda-forge/noarch::backports-1.0-pyhd8ed1ab_3
  backports.functoo~ conda-forge/noarch::backports.functools_lru_cache-1.6.4-pyhd8ed1ab_0
  debugpy            conda-forge/linux-64::debugpy-1.6.3-py39h5a03fae_1
  decorator          conda-forge/noarch::decorator-5.1.1-pyhd8ed1ab_0
  entrypoints        conda-forge/noarch::entrypoints-0.4-pyhd8ed1ab_0
  executing          conda-forge/noarch::executing-1.2.0-pyhd8ed1ab_0
  ipykernel          conda-forge/noarch::ipykernel-6.17.1-pyh210e3f2_0
  ipython            conda-forge/noarch::ipython-8.6.0-pyh41d4057_1
  jedi               conda-forge/noarch::jedi-0.18.2-pyhd8ed1ab_0
  jupyter_client     conda-forge/noarch::jupyter_client-7.4.7-pyhd8ed1ab_0
  jupyter_core       conda-forge/linux-64::jupyter_core-5.0.0-py39hf3d152e_0
  libsodium          conda-forge/linux-64::libsodium-1.0.18-h36c2ea0_1
  libstdcxx-ng       conda-forge/linux-64::libstdcxx-ng-12.2.0-h46fd767_19
  matplotlib-inline  conda-forge/noarch::matplotlib-inline-0.1.6-pyhd8ed1ab_0
  nest-asyncio       conda-forge/noarch::nest-asyncio-1.5.6-pyhd8ed1ab_0
  packaging          conda-forge/noarch::packaging-21.3-pyhd8ed1ab_0
  parso              conda-forge/noarch::parso-0.8.3-pyhd8ed1ab_0
  pexpect            conda-forge/noarch::pexpect-4.8.0-pyh1a96a4e_2
  pickleshare        conda-forge/noarch::pickleshare-0.7.5-py_1003
  platformdirs       conda-forge/noarch::platformdirs-2.5.2-pyhd8ed1ab_1
  prompt-toolkit     conda-forge/noarch::prompt-toolkit-3.0.33-pyha770c72_0
  psutil             conda-forge/linux-64::psutil-5.9.4-py39hb9d737c_0
  ptyprocess         conda-forge/noarch::ptyprocess-0.7.0-pyhd3deb0d_0
  pure_eval          conda-forge/noarch::pure_eval-0.2.2-pyhd8ed1ab_0
  pygments           conda-forge/noarch::pygments-2.13.0-pyhd8ed1ab_0
  pyparsing          conda-forge/noarch::pyparsing-3.0.9-pyhd8ed1ab_0
  python-dateutil    conda-forge/noarch::python-dateutil-2.8.2-pyhd8ed1ab_0
  python_abi         conda-forge/linux-64::python_abi-3.9-3_cp39
  pyzmq              conda-forge/linux-64::pyzmq-24.0.1-py39headdf64_1
  six                conda-forge/noarch::six-1.16.0-pyh6c4a22f_0
  stack_data         conda-forge/noarch::stack_data-0.6.1-pyhd8ed1ab_0
  tornado            conda-forge/linux-64::tornado-6.2-py39hb9d737c_1
  traitlets          conda-forge/noarch::traitlets-5.5.0-pyhd8ed1ab_0
  wcwidth            conda-forge/noarch::wcwidth-0.2.5-pyh9f0ad1d_2
  zeromq             conda-forge/linux-64::zeromq-4.3.4-h9c3ff4c_1

Proceed ([y]/n)? y
・・・省略・・・
Preparing transaction: done
Verifying transaction: done
Executing transaction: done

インストール出来ました。

Jupyterlab上でカーネルを切り替えることが出来るか確認してみます。

・画面上部のメニューから「Kernel」→ 「Change Kernel」

もしくは

・右上の「default:Python」という文字列をクリック

で切り替え画面に遷移することができます。

「test-gpu:Python」という項目があれば成功です。クリックしてください。

図:カーネル切り替え画面

nvidia-smiでGPU関連の情報を確認する

# https://developer.nvidia.com/nvidia-system-management-interface
!nvidia-smi
Out[0]
Fri Nov 25 10:33:39 2022       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 470.57.02    Driver Version: 470.57.02    CUDA Version: 11.4     |
|-------------------------------+----------------------+----------------------+
| 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  Tesla T4            Off  | 00000000:00:1E.0 Off |                    0 |
| N/A   31C    P0    26W /  70W |      0MiB / 15109MiB |      0%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

+-----------------------------------------------------------------------------+
| Processes:                                                                  |
|  GPU   GI   CI        PID   Type   Process name                  GPU Memory |
|        ID   ID                                                   Usage      |
|=============================================================================|
|  No running processes found                                                 |
+-----------------------------------------------------------------------------+

割り当てられているGPUはTesla T4です。

Driverのバージョンは470.57.02で、CUDAは11.4までがサポートされているようです。

Tesla T4はNvidiaデータセンターGPUなので前方互換があるのでCUDA11.5以降もインストール可能だと思います。(apt installがsagemaker studio labで使えるようになればですが、、)

異なるバージョンのCUDAをインストールする方法は下記にまとめてありますので、必要な方はご参照ください。

Google ColabのGPU環境でGPU版torchとGPU版mxnetの動作確認をしてみた。
本記事では、今後ディープラーニング系のライブラリを使っていこうと思っている中でGPUを使える環境を準備したかったので、Google ColaboratoryのGPU環境の確認とGPU版のtorchとmxnetというライブラリを使ってみた結果...

NVIDIAドライバーとCUDAに関しては下記にまとめています。

NVIDIAドライバーとは

CUDAとは

CUDAのバージョンの確認

!nvcc --version
Out[0]
nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2021 NVIDIA Corporation
Built on Sun_Feb_14_21:12:58_PST_2021
Cuda compilation tools, release 11.2, V11.2.152
Build cuda_11.2.r11.2/compiler.29618528_0

CUDA11.2がインストールされているようです。

# インストール済みのCUDAのバージョンを確認
!ls -la /usr/local/ | grep cuda
Out[0]
lrwxrwxrwx 1 root root  9 Sep 17  2021 cuda -> cuda-11.2
drwxr-xr-x 1 root root 21 Nov 15 01:43 cuda-11.2

インストールされているのはCUDA11.2のみのようです。

スポンサーリンク

mxnet-cu112をインストールしGPUが使えるかどうかを確認

CUDA11.2がインストールされているので、対応しているmxnet-cu112をインストールします。

pipでmxnet-cu112をインストール
(test-gpu) studio-lab-user@default:~$ pip install mxnet-cu112
# mxnet-cu112が動作するか確認
# https://mxnet.apache.org/versions/1.7/api/python/docs/tutorials/getting-started/crash-course/6-use_gpus.html

from mxnet import nd, gpu, gluon, autograd
from mxnet.gluon import nn
from mxnet.gluon.data.vision import datasets, transforms
import time

x = nd.ones((3,4), ctx=gpu())
x
Out[0]
[[1. 1. 1. 1.]
 [1. 1. 1. 1.]
 [1. 1. 1. 1.]]
 NDArray 3x4 @gpu(0)>

結果が返ってきたので、問題なく使えました。

スポンサーリンク

最終的にtest-gpu環境に何がインストールされているか一覧表示

%conda list
Out[0]
# packages in environment at /home/studio-lab-user/.conda/envs/test-gpu:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
asttokens                 2.1.0              pyhd8ed1ab_0    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                pyhd8ed1ab_3    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
ca-certificates           2022.9.24            ha878542_0    conda-forge
certifi                   2022.9.24                pypi_0    pypi
charset-normalizer        2.1.1                    pypi_0    pypi
debugpy                   1.6.3            py39h5a03fae_1    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
executing                 1.2.0              pyhd8ed1ab_0    conda-forge
idna                      3.4                      pypi_0    pypi
ipykernel                 6.17.1             pyh210e3f2_0    conda-forge
ipython                   8.6.0              pyh41d4057_1    conda-forge
jedi                      0.18.2             pyhd8ed1ab_0    conda-forge
jupyter_client            7.4.7              pyhd8ed1ab_0    conda-forge
jupyter_core              5.0.0            py39hf3d152e_0    conda-forge
ld_impl_linux-64          2.39                 hcc3a1bd_1    conda-forge
libffi                    3.4.2                h7f98852_5    conda-forge
libgcc-ng                 12.2.0              h65d4601_19    conda-forge
libgomp                   12.2.0              h65d4601_19    conda-forge
libnsl                    2.0.0                h7f98852_0    conda-forge
libsodium                 1.0.18               h36c2ea0_1    conda-forge
libsqlite                 3.40.0               h753d276_0    conda-forge
libstdcxx-ng              12.2.0              h46fd767_19    conda-forge
libuuid                   2.32.1            h7f98852_1000    conda-forge
libzlib                   1.2.13               h166bdaf_4    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mxnet-cu112               1.9.1                    pypi_0    pypi
ncurses                   6.3                  h27087fc_1    conda-forge
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
numpy                     1.23.5                   pypi_0    pypi
openssl                   3.0.7                h166bdaf_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
parso                     0.8.3              pyhd8ed1ab_0    conda-forge
pexpect                   4.8.0              pyh1a96a4e_2    conda-forge
pickleshare               0.7.5                   py_1003    conda-forge
pip                       22.3.1             pyhd8ed1ab_0    conda-forge
platformdirs              2.5.2              pyhd8ed1ab_1    conda-forge
prompt-toolkit            3.0.33             pyha770c72_0    conda-forge
psutil                    5.9.4            py39hb9d737c_0    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pure_eval                 0.2.2              pyhd8ed1ab_0    conda-forge
pygments                  2.13.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
python                    3.9.15          hba424b6_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-graphviz           0.8.4                    pypi_0    pypi
python_abi                3.9                      3_cp39    conda-forge
pyzmq                     24.0.1           py39headdf64_1    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
requests                  2.28.1                   pypi_0    pypi
setuptools                65.5.1             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
stack_data                0.6.1              pyhd8ed1ab_0    conda-forge
tk                        8.6.12               h27826a3_0    conda-forge
tornado                   6.2              py39hb9d737c_1    conda-forge
traitlets                 5.5.0              pyhd8ed1ab_0    conda-forge
tzdata                    2022f                h191b570_0    conda-forge
urllib3                   1.26.13                  pypi_0    pypi
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
wheel                     0.38.4             pyhd8ed1ab_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge

Note: you may need to restart the kernel to use updated packages.

default環境とは異なり、pipとconda-forgeのライブラリが入り混じっていますね。

スポンサーリンク

まとめ

Sagemaker Studio LabのGPU runtimeを詳しく見てみました。

GPU runtimeは1日合計8時間しか利用できないので、計画的に利用する必要がありますね。

例えばモデリング以外に要する時間はGPU runtimeではなく、CPU runtimeやColabのGPUを使うなど集中して活用すべきかなと思いました。

とはいえディスクが永続化しているのもあってかなりSagemaker Studio Labは個人的にはかなり使いやすいです。

無料で使えるなんて素晴らしいですね。

タイトルとURLをコピーしました