Lambda GPU Cloud 使ってみた

# この記事について

お遊び用途で安価なGPUを使いたいというモチベーションから探してみたところ、Lambda GPU Cloud なるサービスを発見。
所詮お遊びで信頼性とかも必要ないので、使ってみた時のメモなどを残しておく。

# 登録

トップページの「Sign Up for free」から登録。
次のような項目が聞かれる。

* Account Type ( indivisual / Business )
* First Name
* Last Name
* Phone Number (optional)
* Email
* Password
* [Privacy Policy](https://lambdalabs.com/legal/privacy-policy) とか [Terms of Service](https://cloud.lambdalabs.com/legal/terms-of-service) とか [Acceptable Use Policy](https://cloud.lambdalabs.com/legal/terms-of-service#acceptable-use-policy) とかへの同意

書くのはこれだけ。あとは、Emailアドレスに検証メールが来るので、検証リンクを開いて終了。
支払い情報は？って思ったけど、サインアップの時点では、支払い情報の入力は不要。
ただし、支払い情報が無いとInstanceは起動できないので、すぐに登録する羽目になる。

# 支払い情報の登録

Instanceを起動しようとすると、支払い情報の入力が求められる。
こんな感じの、質素な画面...。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/75d86a25-49d1-efa7-0e33-b366a4b7f86b.png)

クレカ情報は stripe.com に飛んで行ったので、そういうものだと思って気にしないことにする。
ちなみにクレカを登録すると、7日間使える無料の10USDクレジットが付くらしい。地味にうれしい。

# SSH鍵の登録

Instanceへのログインのために、SSH公開鍵が必要になる。
お手持ちのSSH公開鍵を、Webコンソールの「SSH Keys -> Add SSH Key」から登録すればOK。

## インスタンスの起動

コンソール画面の GPU Instances から「Launch Instance」ボタンを押して起動する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/769e0378-0529-daba-b176-3db102784907.png)

Instance Type / Region / File System / SSH Key を選び、起動する。
File System は、とりあえず使う分には何も接続しなくてもOK。


# ログイン

Instanceの起動が完了すると、コンソールにsshの接続情報が表示されるので、それを御手元のシェルに入力。

LambdaにWelcomeされてれば、ログイン成功。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/344358b7-8cb9-0a83-c379-1427b603c8f7.png)

ちゃんと所望のグラボがアタッチされているか、一応「nvidia-smi」コマンドで確認しとくと精神安定が図れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/adc36401-34b2-95f9-1ed8-d5471f5edf80.png)

## デフォルト環境 (2023年05月現在）

リージョンに依存して環境が微妙に違う...。
最低限必要そうなミドルウェアのバージョンをご紹介。

## テキサスリージョン
* Ubuntu 20.04.5 LTS (GNU/Linux 5.15.0-52-generic x86_64)
* Python 3.8.10
* Jupyter Lab 3.5.0
* CUDA Version 11.7
* NVIDIA Cuda Compilation tools 11.6
* Docker version 20.10.21

## テキサス以外のリージョン
* Ubuntu 20.04.5 LTS (GNU/Linux 5.15.0-67-generic x86_64)
* Python 3.8.10
* Jupyter Lab 3.6.1
* CUDA Version 12.0
* NVIDIA Cuda Compilation tools 11.8
* Docker version 23.0.1

CUDA環境が微妙に違うのが特に面倒です。PyTorchのバージョンとかも切り替えないといけない；ー；

# Jupyter Lab の利用

Jupyter Lab がデフォルトで立ち上がるような機能も提供されている。
コンソールから1クリックで起動できるので、すごく便利。


# shutdown 時の挙動について

無効化されてるらしい。コンソールかWebAPIからターミネートしなさいだそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/10e64cde-04f3-fba0-ab1d-4f252ae43009.png)

# API によるInstanceの制御

API Keys メニューから、API Keyを発行できる。
API仕様は、[こちら](https://cloud.lambdalabs.com/api/v1/docs)。
APIキーはBasic認証のIDに使う。

試しに、Instance Types API を実行するPythonコードはこちら。

```python
import requests
from requests.auth import HTTPBasicAuth

print(
    requests.get(
        'https://cloud.lambdalabs.com/api/v1/instance-types',
        auth=HTTPBasicAuth(KEY, "")
    ).text
)
```

ちなみに、APIキーに対しては権限機能はありません。
APIキーはすべての権限が与えられている状態で発行されて、それを制御することはできません；；
怖い...

# しんどいポイント Instance不足しがち事案

常時、全リージョンでインスタンスが枯渇しています。
A10とH100以外は、定常的に使えないと思った方がいいです。
たまーに、A100が空いたりする。

# ご参考情報

nvidia-smi の結果とか、nvccのバージョンとかのスクショをご参考情報として。

## gpu_1x_a10

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/4cfa0052-ad4f-5dd9-18a5-53f89461c83c.png)

## gpu_1x_rtx6000

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/cb3f5690-2e0d-7b96-4165-993c06deb6fb.png)


## gpu_1x_a100_sxm4

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/914e59b5-0462-fe5e-f4e1-fe4300a29c84.png)

## gpu_8x_v100

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/f313acd3-e3ce-0068-996f-c59a568dc89a.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3405393/2d1c8694-1124-5b17-575b-2693e6c73e09.png)

# 最後に

色々不便なところはあるんですが、安いのは神。