🧠

SageMaker Studio Labを触ってみたら使い勝手が良かった

2022/01/04に公開

先日開催されたAWS re:Invent 2021で発表されたSageMaker Studio Lab、なんとなく触っている内にGoogle Colabよりも個人的には使いやすいんじゃないかって思えてきたので、どの辺がよかったのかみたいな感想です。

SageMaker Studio Labについて

数多くのAWSのサービスの一つに機械学習の環境を提供するSageMakerがあります。SageMakerの各機能を利用することで、機械学習を実際に実務レベルまで活用していくときに必要な学習、推論モデルのデプロイやモデル追跡、実験管理などの様々なフェーズを手軽に実現できます。(re:Invent 2021の中でもSageMaker自体に多くの機能追加がありましたね。。。(参考)

自分みたいな初学者がちょろっと趣味とかでデータ分析とか機械学習とか簡単に触ってみたいな〜って思った時、そもそもそう言った環境を準備するのが大変というのがあります。

とりあえず簡単なデータだったりを処理してみるなら最近のノートPCで大丈夫かもしれませんが、ある程度大規模なデータの分析や動画像認識などは初期投資でそれなりに良いスペックのマシンを手元に用意しなきゃいけないですね。

そんなところで数年前かな?GoogleさんがColaboratory(Colab)を出してくれました。これの登場で誰でも簡単にpythonだったりデータ分析だったり機械学習だったりを試せる環境になりました。

今までColabみたいな手軽にコンピューティングできる無料のやつってなかなかなかった気がしますが、満を辞してAWSから今回発表されたのがSageMaker Studio Labなのであります。Colabと同じように無料でデータ分析や機械学習の環境を使えてしまうのです。

AWSのブログでも、

初心者は、予算超過を避けるために、インフラストラクチャのスピンアップ、サービスの設定、請求アラームの実装について心配することなく、すぐに学習を開始したいと考えています。

と言っているので、これはまさにColabの対抗馬になりうる存在なわけであります。

SageMaker Studio Labの特徴とGoogleColabとの比較

Colab内でも無償版、Pro版などあるため、その辺のスペックも見つつということで、ITmediaさんがColabの各バージョンの比較表を出しているのでそちらを参照してください。


【追記】

最近ちゃんとまともにSageMaker Studio Labを使えていませんでしたが、いつの間にか実行時間制限が変更されていました

SageMaker Studio Labのインスタンスを立ち上げたときの画面
突然のインフォメーションとSession:時間

え?いつ変更された?自分全然気づいていませんでした。

公式ドキュメントが一番正確なのでそちらを見ていただいたほうが早いのですが、日本語だと情報がまだ更新されてないっぽかった(2023/08/24時点)ので注意です。

CPUの場合は連続で起動し続けられるのは4時間で、24時間あたり8時間の計算時間

GPUの場合は連続で起動し続けられるのは4時間で、24時間あたり4時間の計算時間

になってしまっています。。。

本当にいつの間に!?という感じですが、最近の生成AIのリソースがガバガバ取られて困ってしまったのかな?

でもSageMaker Studio LabのランディングページのResources and communityのところにHugging Face Hubとかのモデル使ってやりましょうね〜っていう紹介notebookとかあるのでちょっとよくわからないです。


SageMaker Studio Labの気になる特徴を適当に列挙します。

  • コラボレーション機能はない
  • CPUインスタンスはt3.xlarge
    • インスタンスの払い出し時間は12時間 8時間
      • 連続で起動し続けられるセッションは4時間
    • CPUは1 or 2世代のIntel Xeon Platinum 8000
    • 参考
  • GPUインスタンスはg4dn.xlarge
    • インスタンスの払い出し時間は4時間
      • 連続で起動し続けられるセッションは4時間
    • Tesla T4が使える
    • CPUはT3と同様
    • 参考
  • 15GBの永続的ストレージ
  • インスタンスが掃き出されるのでブラウザを閉じてもインスタンスが稼働してくれる
    • ただなんか、特に計算回してないときは12時間以内にインスタンス落ちてる気がするんだよなぁ… 夜Startさせて、特に計算回さずに朝確認したら落ちてませんでした!すばらです!
  • 新しいファイルの追加や環境の更新があったら自動的にそれを保存してくれるので、カスタム拡張機能やパッケージはランタイム終了しても持続できる

ざっとですが、上記の特徴があるためGoogle Colabとは一長一短と言ったところでしょうか。

下記に無料で利用できる環境ということで個人的な比較をまとめると、

気になるところ SageMaker Studio Lab Google Colab 理由
性能面 T4が使えるなんてすごいし、GPUガチャも気にならない
接続 インスタンスさえ立ち上げておけばいつでも使えるのがすごい
ストレージ いちいちGoogle Driveと接続しなくても良いし、永続ストレージだし。ただしデータのuploadはくっそ遅い(from tokyo)のでinternetから直で落とす必要あり
共有 共有機能がないのが残念
git連携 しょぼいけどSageMaker Studioでも使われている簡易git UIがある
仮想環境 やっぱりconda envできるのいいよね(参考)
拡張 △?○? jupyterlab extensionが使えるけど、まだpreview的な扱いなので未知数なところあり
デバッグ visual debuggerが使えて便利

まとめ

用意しなきゃいけないこととかgit連携とか、個人が無料で使う分にはColabと比べると分があるような気がしました。

SageMaker Studio Labで今後なんとかしていってほしいな~って思うところは、

  • upload速度
  • 共有機能

ですかねぇ…

upload速度については単体で1.5GBくらいのファイルあげてみたら、1/3上げるのに15分くらいかかってたからもう計測諦めました。

まだ少ししか使ってないので、もうちょっとSageMaker Studio Labを触り倒していきたいと思います。

参考

CPUインスタンス、GPUインスタンスそれぞれのスペックをコマンドで確認したものをベタ書きします。

CPUインスタンス

(studiolab) studio-lab-user@default:~$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
overlay        overlay    27G   12K   27G   1% /
tmpfs          tmpfs      64M     0   64M   0% /dev
tmpfs          tmpfs     7.8G     0  7.8G   0% /sys/fs/cgroup
shm            tmpfs     4.0G     0  4.0G   0% /dev/shm
/dev/nvme1n1   xfs        25G  4.8G   21G  20% /home/studio-lab-user
/dev/nvme0n1p1 xfs        50G   14G   37G  27% /opt/.sagemakerinternal
devtmpfs       devtmpfs  7.8G     0  7.8G   0% /dev/tty
tmpfs          tmpfs     7.8G     0  7.8G   0% /proc/acpi
tmpfs          tmpfs     7.8G     0  7.8G   0% /sys/firmware

(studiolab) studio-lab-user@default:~$ free
              total        used        free      shared  buff/cache   available
Mem:       16233956      983504     7260724         584     7989728    15023396
Swap:             0           0           0

(studiolab) studio-lab-user@default:~$ lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   46 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              2
Core(s) per socket:              2
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           85
Model name:                      Intel(R) Xeon(R) Platinum 8175M CPU @ 2.50GHz
Stepping:                        4
CPU MHz:                         2499.998
BogoMIPS:                        4999.99
Hypervisor vendor:               KVM
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        2 MiB
L3 cache:                        33 MiB
NUMA node0 CPU(s):               0-3

GPUインスタンス

(studiolab) studio-lab-user@default:~$ df -hT
Filesystem     Type      Size  Used Avail Use% Mounted on
overlay        overlay    27G   56K   27G   1% /
tmpfs          tmpfs      64M     0   64M   0% /dev
tmpfs          tmpfs     7.7G     0  7.7G   0% /sys/fs/cgroup
shm            tmpfs     4.0G     0  4.0G   0% /dev/shm
/dev/nvme0n1p1 xfs        50G   14G   37G  27% /usr/bin/nvidia-smi
/dev/nvme2n1   xfs        25G  4.8G   21G  20% /home/studio-lab-user
devtmpfs       devtmpfs  7.7G     0  7.7G   0% /dev/tty
tmpfs          tmpfs     7.7G   12K  7.7G   1% /proc/driver/nvidia
tmpfs          tmpfs     7.7G     0  7.7G   0% /proc/acpi
tmpfs          tmpfs     7.7G     0  7.7G   0% /sys/firmware

(studiolab) studio-lab-user@default:~$ free
              total        used        free      shared  buff/cache   available
Mem:       16121320      963264     7271876         616     7886180    14981688
Swap:             0           0           0

(studiolab) studio-lab-user@default:~$ lscpu
Architecture:                    x86_64
CPU op-mode(s):                  32-bit, 64-bit
Byte Order:                      Little Endian
Address sizes:                   46 bits physical, 48 bits virtual
CPU(s):                          4
On-line CPU(s) list:             0-3
Thread(s) per core:              2
Core(s) per socket:              2
Socket(s):                       1
NUMA node(s):                    1
Vendor ID:                       GenuineIntel
CPU family:                      6
Model:                           85
Model name:                      Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz
Stepping:                        7
CPU MHz:                         3112.989
BogoMIPS:                        5000.00
Hypervisor vendor:               KVM
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        2 MiB
L3 cache:                        35.8 MiB
NUMA node0 CPU(s):               0-3

lspciは入ってなかったので、nvidia-smiで確認

(studiolab) studio-lab-user@default:~/sagemaker-studiolab-notebooks/d2l-pytorch-sagemaker-studio-lab$ nvidia-smi -l
Thu Dec 16 13:31:40 2021
+-----------------------------------------------------------------------------+
| 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   36C    P0    58W /  70W |   8603MiB / 15109MiB |     47%      Default |
|                               |                      |                  N/A |
+-------------------------------+----------------------+----------------------+

Discussion