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

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

Data Analytics
Data Analytics

2022年11月時点の情報です。

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

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

先頭に(studiolab)と書いていある場合、Jupyerlabから起動したTerminalで確認しています。それ以外はnotebook上で実行しています (%condaとか)。Terminalを起動するとcondaのstudiolab環境が自動的にactivateされるようです。

studiolab環境は公式ページを確認するとjupyterlabやjupyter serverのエクステンションをインストールしたいときに利用してくださいと記載があるので、コマンドを入力する場合に何かしらの理由で明示的に環境を分けているのかも知れません。(調べても理由はすぐに出てこなかった。。)

Installing JupyterLab and Jupyter Server extensions...Open the terminal and activate the studiolab environment. 引用: https://docs.aws.amazon.com/sagemaker/latest/dg/studio-lab-use-manage.html

notebook(ipynb)は最初だとcondaのdefault環境が使用されるようです。※独自の環境を別に作成して利用することももちろん可能です。

スポンサーリンク

conda環境一覧

初期のconda環境一覧
%conda env list
Out[0]
# conda environments:
#
default               *  /home/studio-lab-user/.conda/envs/default
studiolab                /home/studio-lab-user/.conda/envs/studiolab
studiolab-safemode       /opt/amazon/sagemaker/safemode-home/.conda/envs/studiolab-safemode
base               

notebookで実行しているのでdefault環境が使用されています。

ターミナルを起動するとstudiolab環境がactivateされます。

baseはcondaをインストールしたら出来る環境ですね。default環境があるので、基本ノータッチでいいかと思います。

studiolab-safemode環境は名前から推測するにトラブルシューティングの時などに使うのでしょうか?

スポンサーリンク

OSの確認

OSの確認
(studiolab) studio-lab-user@default:~$ cat /etc/os-release  | head -2
Out[0]
NAME="Ubuntu"
VERSION="20.04.3 LTS (Focal Fossa)"

Ubuntu 20.04のようです。

スポンサーリンク

ログインユーザー名の確認

ログインユーザー名確認
(studiolab) studio-lab-user@default:~$ whoami
Out[0]
studio-lab-user

studio-lab-userユーザーのようです。

(studiolab) studio-lab-user@default:~$ id studio-lab-user
Out[0]
uid=1000(studio-lab-user) gid=100(users) groups=100(users)

usersグループに属しているようです。

スポンサーリンク

ディスクの確認

(studiolab) studio-lab-user@default:~$ df -h
Out[0]
Filesystem      Size  Used Avail Use% Mounted on
overlay          27G   20K   27G   1% /
tmpfs            64M     0   64M   0% /dev
tmpfs           7.8G     0  7.8G   0% /sys/fs/cgroup
shm             4.0G     0  4.0G   0% /dev/shm
/dev/nvme0n1p1   50G   19G   32G  37% /opt/.sagemakerinternal
/dev/nvme1n1     25G  2.8G   23G  12% /home/studio-lab-user
devtmpfs        7.8G     0  7.8G   0% /dev/tty
tmpfs           7.8G     0  7.8G   0% /proc/acpi
tmpfs           7.8G     0  7.8G   0% /sys/firmware

下記が永続化されているボリュームでしょうか? 15GBのストレージが使えるとありましたが、実際は25GB使えるように見えます!

/dev/nvme0n1p1 50G 19G 32G 37% /opt/.sagemakerinternal
/dev/nvme1n1 25G 2.8G 23G 12% /home/studio-lab-user

デバイス名から推測するにどうやらAmazon EBSがマウントされているようです。

EBS ボリュームは、Nitro System上に構築されたインスタンスで NVMe ブロックデバイスとして公開されます。デバイス名は、/dev/nvme0n1、/dev/nvme1n1 などです。
引用: https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/nvme-ebs-volumes.html

ついでにnvmeドライバーがあるかどうか確認してみます。

ls /sys/module/ | grep nvme
Out[0]
nvme
nvme_core

ありました。

スポンサーリンク

CPUの確認

(studiolab) studio-lab-user@default:~$ lscpu | grep -e "^CPU(s):" -e "Model name:" -e "Thread(s) per core:" -e "Core(s) per socket:" -e "Core(s) per socket:" -e "Socket(s):"
Out[0]
・・・アウトプットに日本語約を追加・・・

CPU(s)(論理コア数): 4
Thread(s) per core(物理コア当たりのスレッド数): 2
Core(s) per socket(CPU当たりの物理コア数): 2
Socket(s)(CPUの数): 1
Model name(モデル名):Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz

参考になるか分かりませんが、Intel(R) Xeon(R) Platinum 8259CL CPUの情報を見てみました。

Intel(R) Xeon(R) Platinum 8259CL CPUはHigh End CPUsの中に入っているようです。

スポンサーリンク

メモリの確認

(studiolab) studio-lab-user@default:~$ free -g
Out[0]
              total        used        free      shared  buff/cache   available
Mem:             15           1           4           0          10          14
Swap:             0           0           0

RAMは15GB使えるようです。

スポンサーリンク

apt install が使えるか?

(studiolab) studio-lab-user@default:~$ apt install less
Out[0]
E: Could not open lock file /var/lib/dpkg/lock-frontend - open (13: Permission denied)
E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend), are you root?

調べてみると現状apt installはできないようですが、#127:enhancementのチケットがあったのでそのうち出来るようになるのではないかと思います。

ここらへんは今のところColabの方が柔軟性があってよいですね。

スポンサーリンク

Python環境について確認

pipやcondaの確認

!which pip
Out[0]
/home/studio-lab-user/.conda/envs/default/bin/pip

condaのdefault環境でインストールしたpipが参照されました。

!which conda
Out[0]
/opt/conda/condabin/conda

condaコマンドは/opt/condaにあるようです。rootユーザーだけに書き込み権限があるようなのでcondaコマンドのアップデートは出来ないようです。unable to update conda #160

(studiolab) studio-lab-user@default:/opt$ ls -la /opt | grep conda
Out[0]
drwxr-xr-x 1 root   root    28 Nov 15 01:24 conda
condaのdefault環境にインストールされているパッケージやライブラリの確認
%conda list
Out[0]
# packages in environment at /home/studio-lab-user/.conda/envs/default:
#
# Name                    Version                   Build  Channel
_libgcc_mutex             0.1                 conda_forge    conda-forge
_openmp_mutex             4.5                       2_gnu    conda-forge
anyio                     3.6.2              pyhd8ed1ab_0    conda-forge
argon2-cffi               21.3.0             pyhd8ed1ab_0    conda-forge
argon2-cffi-bindings      21.2.0           py39hb9d737c_3    conda-forge
attrs                     22.1.0             pyh71513ae_1    conda-forge
backcall                  0.2.0              pyh9f0ad1d_0    conda-forge
backports                 1.0                        py_2    conda-forge
backports.functools_lru_cache 1.6.4              pyhd8ed1ab_0    conda-forge
beautifulsoup4            4.11.1             pyha770c72_0    conda-forge
bleach                    5.0.1              pyhd8ed1ab_0    conda-forge
bzip2                     1.0.8                h7f98852_4    conda-forge
ca-certificates           2022.9.24            ha878542_0    conda-forge
cffi                      1.15.1           py39he91dace_2    conda-forge
debugpy                   1.6.3            py39h5a03fae_1    conda-forge
decorator                 5.1.1              pyhd8ed1ab_0    conda-forge
defusedxml                0.7.1              pyhd8ed1ab_0    conda-forge
entrypoints               0.4                pyhd8ed1ab_0    conda-forge
flit-core                 3.8.0              pyhd8ed1ab_0    conda-forge
idna                      3.4                pyhd8ed1ab_0    conda-forge
importlib-metadata        5.0.0              pyha770c72_1    conda-forge
importlib_resources       5.10.0             pyhd8ed1ab_0    conda-forge
ipykernel                 6.4.2            py39hef51801_0    conda-forge
ipython                   7.33.0           py39hf3d152e_0    conda-forge
ipython_genutils          0.2.0                      py_1    conda-forge
ipywidgets                7.7.2              pyhd8ed1ab_0    conda-forge
jedi                      0.18.1             pyhd8ed1ab_2    conda-forge
jinja2                    3.1.2              pyhd8ed1ab_1    conda-forge
jsonschema                4.17.0             pyhd8ed1ab_0    conda-forge
jupyter_client            7.4.5              pyhd8ed1ab_0    conda-forge
jupyter_core              5.0.0            py39hf3d152e_0    conda-forge
jupyter_server            1.23.2             pyhd8ed1ab_0    conda-forge
jupyterlab_pygments       0.2.2              pyhd8ed1ab_0    conda-forge
jupyterlab_widgets        1.1.1              pyhd8ed1ab_0    conda-forge
ld_impl_linux-64          2.39                 hc81fddc_0    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.39.4               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
markupsafe                2.1.1            py39hb9d737c_2    conda-forge
matplotlib-inline         0.1.6              pyhd8ed1ab_0    conda-forge
mistune                   2.0.4              pyhd8ed1ab_0    conda-forge
nbclassic                 0.4.8              pyhd8ed1ab_0    conda-forge
nbclient                  0.7.0              pyhd8ed1ab_0    conda-forge
nbconvert                 7.2.5              pyhd8ed1ab_0    conda-forge
nbconvert-core            7.2.5              pyhd8ed1ab_0    conda-forge
nbconvert-pandoc          7.2.5              pyhd8ed1ab_0    conda-forge
nbformat                  5.7.0              pyhd8ed1ab_0    conda-forge
ncurses                   6.3                  h27087fc_1    conda-forge
nest-asyncio              1.5.6              pyhd8ed1ab_0    conda-forge
notebook                  6.5.2              pyha770c72_1    conda-forge
notebook-shim             0.2.2              pyhd8ed1ab_0    conda-forge
openssl                   3.0.7                h166bdaf_0    conda-forge
packaging                 21.3               pyhd8ed1ab_0    conda-forge
pandoc                    2.19.2               h32600fe_1    conda-forge
pandocfilters             1.5.0              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                       21.2.4             pyhd8ed1ab_0    conda-forge
pkgutil-resolve-name      1.3.10             pyhd8ed1ab_0    conda-forge
platformdirs              2.5.2              pyhd8ed1ab_1    conda-forge
prometheus_client         0.15.0             pyhd8ed1ab_0    conda-forge
prompt-toolkit            3.0.32             pyha770c72_0    conda-forge
ptyprocess                0.7.0              pyhd3deb0d_0    conda-forge
pycparser                 2.21               pyhd8ed1ab_0    conda-forge
pygments                  2.13.0             pyhd8ed1ab_0    conda-forge
pyparsing                 3.0.9              pyhd8ed1ab_0    conda-forge
pyrsistent                0.19.2           py39hb9d737c_0    conda-forge
python                    3.9.13          h2660328_0_cpython    conda-forge
python-dateutil           2.8.2              pyhd8ed1ab_0    conda-forge
python-fastjsonschema     2.16.2             pyhd8ed1ab_0    conda-forge
python_abi                3.9                      2_cp39    conda-forge
pyzmq                     24.0.1           py39headdf64_1    conda-forge
readline                  8.1.2                h0f457ee_0    conda-forge
send2trash                1.8.0              pyhd8ed1ab_0    conda-forge
setuptools                65.5.1             pyhd8ed1ab_0    conda-forge
six                       1.16.0             pyh6c4a22f_0    conda-forge
sniffio                   1.3.0              pyhd8ed1ab_0    conda-forge
soupsieve                 2.3.2.post1        pyhd8ed1ab_0    conda-forge
sqlite                    3.39.4               h4ff8645_0    conda-forge
terminado                 0.17.0             pyh41d4057_0    conda-forge
tinycss2                  1.2.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
typing_extensions         4.4.0              pyha770c72_0    conda-forge
tzdata                    2022f                h191b570_0    conda-forge
wcwidth                   0.2.5              pyh9f0ad1d_2    conda-forge
webencodings              0.5.1                      py_1    conda-forge
websocket-client          1.4.2              pyhd8ed1ab_0    conda-forge
wheel                     0.38.4             pyhd8ed1ab_0    conda-forge
widgetsnbextension        3.6.1              pyha770c72_0    conda-forge
xz                        5.2.6                h166bdaf_0    conda-forge
zeromq                    4.3.4                h9c3ff4c_1    conda-forge
zipp                      3.10.0             pyhd8ed1ab_0    conda-forge

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

かなり色々インストールされているようです。

最初からインストールされている各種conda環境のyamlファイルが配置されている場所があるので、確認してみます。

condaの環境が定義されているyamlファイルの場所
(studiolab) studio-lab-user@default:~$ ls -la /opt/amazon/sagemaker/environments/
Out[0]
total 12
drwxr-xr-x 3 root root  99 Nov 15 01:23 .
drwxr-xr-x 1 root root  38 Nov 15 01:25 ..
-rw-r--r-- 1 root root 117 Nov 15 01:20 default.yaml
drwxr-xr-x 2 root root  43 Nov 15 01:23 requirements
-rw-r--r-- 1 root root 368 Nov 15 01:20 studiolab-safemode.yaml
-rw-r--r-- 1 root root 347 Nov 15 01:20 studiolab.yaml
default.yamlの中身を確認
(studiolab) studio-lab-user@default:~$ cat /opt/amazon/sagemaker/environments/default.yaml
Out[0]
name: default
channels:
  - conda-forge
dependencies:
  - ipykernel=6.4
  - python=3.9
  - pip=21.2
  - ipywidgets=7

今インストールされているライブラリの記載がなさそうですが、気にしないことにします 笑

pipでもインストールライブラリを確認
%pip freeze
Out[0]
anyio @ file:///home/conda/feedstock_root/build_artifacts/anyio_1666191106763/work/dist
argon2-cffi @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi_1640817743617/work
argon2-cffi-bindings @ file:///home/conda/feedstock_root/build_artifacts/argon2-cffi-bindings_1666850859330/work
・・・省略・・・

おそらくconda-foreでインストールされているファイルを参照しているようです。

スポンサーリンク

まとめ

いかがでしたでしょうか?

cpu runtimeでは15GBのメモリがあれば色々検証できそうですね。

また、ストレージも15GBではなく25GB程度使えそうなので充分だと思います。

後は環境のreset機能とapt install出来るようになれば何も不満がなくなりますが、環境をユーザーごとに作り直すとなると大変そうですよね。

今はまだ無料で使えますが、このままの料金体系でサービスを続けてくれたらいいなと個人としては願っています 笑

スポンサーリンク

参考

https://access.redhat.com/ja/solutions/2159401

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