lambda-labs-gpu-cloud について
Lambda Labs GPU Cloudは、GPUクラウドで機械学習ワークロードを実行するためのガイドです。SSH接続できるインスタンス、永続ストレージ、マルチノード学習を必要とするユーザー向けに、API管理やSlurmクラスターも扱います。
主な機能
- 01複数種類のGPUインスタンス
- 02Lambda Stackのプリインストール
- 03再起動後も使える永続ファイルシステム
- 0416~512 GPUのSlurmクラスター
- 05Python APIによるインスタンス管理
活用シーン
- 01長時間のモデル学習ジョブの実行
- 02複数GPUまたはノードでの学習
- 03インスタンス間でのデータとチェックポイント保持
- 04APIによるインスタンスの作成と終了
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ orchestra-research/ ai-research-skills --skill lambda-labs-gpu-cloudインストール後、Claude Code で/lambda-labs-gpu-cloudを入力して読み込まれたか確認します。
同梱ファイルreferences/advanced-usage.mdreferences/troubleshooting.md
詳細
Lambda Labs GPU Cloud
オンデマンドインスタンスと 1-Click Clusters を使って、Lambda Labs の GPU クラウドで ML ワークロードを実行するための包括的なガイドです。
Lambda Labs を使うべき場合
Lambda Labs を使う場合:
- フルの SSH アクセスを備えた専用 GPU インスタンスが必要な場合
- 長時間の学習ジョブ(数時間から数日)を実行する場合
- 送信料金がかからないシンプルな料金体系が欲しい場合
- セッションをまたいで永続ストレージが必要な場合
- 高性能なマルチノードクラスター(16〜512 GPU)が必要な場合
- 事前インストール済みの ML スタック(PyTorch、CUDA、NCCL を含む Lambda Stack)が欲しい場合
主な機能:
- GPU の種類: B200、H100、GH200、A100、A10、A6000、V100
- Lambda Stack: PyTorch、TensorFlow、CUDA、cuDNN、NCCL を事前インストール
- 永続ファイルシステム: インスタンスの再起動後もデータを保持
- 1-Click Clusters: InfiniBand を備えた 16〜512 GPU の Slurm クラスター
- シンプルな料金: 分単位の従量課金、送信料金なし
- グローバルリージョン: 世界中の 12 以上のリージョン
代わりに検討すべきサービス:
- Modal: サーバーレスで自動スケーリングするワークロード向け
- SkyPilot: マルチクラウドのオーケストレーションとコスト最適化向け
- RunPod: より安価なスポットインスタンスとサーバーレスエンドポイント向け
- Vast.ai: 最安値を狙える GPU マーケットプレイス向け
クイックスタート
アカウントのセットアップ
- https://lambda.ai でアカウントを作成
- 支払い方法を追加
- ダッシュボードから API キーを生成
- SSH キーを追加(インスタンスを起動する前に必須)
コンソールから起動
- https://cloud.lambda.ai/instances にアクセス
- 「Launch instance」をクリック
- GPU の種類とリージョンを選択
- SSH キーを選択
- 必要に応じてファイルシステムをアタッチ
- 起動して 3〜15 分待機
SSH で接続
# Get instance IP from console
ssh ubuntu@<INSTANCE-IP>
# Or with specific key
ssh -i ~/.ssh/lambda_key ubuntu@<INSTANCE-IP>
GPU インスタンス
利用可能な GPU
| GPU | VRAM | 価格/GPU/時 | 最適な用途 |
|---|---|---|---|
| B200 SXM6 | 180 GB | $4.99 | 最大規模のモデル、最速の学習 |
| H100 SXM | 80 GB | $2.99-3.29 | 大規模モデルの学習 |
| H100 PCIe | 80 GB | $2.49 | コストパフォーマンスの良い H100 |
| GH200 | 96 GB | $1.49 | 単一 GPU で大規模モデルを扱う場合 |
| A100 80GB | 80 GB | $1.79 | 本番環境での学習 |
| A100 40GB | 40 GB | $1.29 | 標準的な学習 |
| A10 | 24 GB | $0.75 | 推論、ファインチューニング |
| A6000 | 48 GB | $0.80 | VRAM と価格のバランスが良い |
| V100 | 16 GB | $0.55 | 低予算の学習 |
インスタンス構成
8x GPU: Best for distributed training (DDP, FSDP)
4x GPU: Large models, multi-GPU training
2x GPU: Medium workloads
1x GPU: Fine-tuning, inference, development
起動時間
- 単一 GPU: 3〜5 分
- マルチ GPU: 10〜15 分
Lambda Stack
すべてのインスタンスには Lambda Stack が事前インストールされています:
# Included software
- Ubuntu 22.04 LTS
- NVIDIA drivers (latest)
- CUDA 12.x
- cuDNN 8.x
- NCCL (for multi-GPU)
- PyTorch (latest)
- TensorFlow (latest)
- JAX
- JupyterLab
インストールの確認
# Check GPU
nvidia-smi
# Check PyTorch
python -c "import torch; print(torch.cuda.is_available())"
# Check CUDA version
nvcc --version
Python API
インストール
pip install lambda-cloud-client
認証
import os
import lambda_cloud_client
# Configure with API key
configuration = lambda_cloud_client.Configuration(
host="https://cloud.lambdalabs.com/api/v1",
access_token=os.environ["LAMBDA_API_KEY"]
)
利用可能なインスタンスの一覧表示
with lambda_cloud_client.ApiClient(configuration) as api_client:
api = lambda_cloud_client.DefaultApi(api_client)
# Get available instance types
types = api.instance_types()
for name, info in types.data.items():
print(f"{name}: {info.instance_type.description}")
インスタンスの起動
from lambda_cloud_client.models import LaunchInstanceRequest
request = LaunchInstanceRequest(
region_name="us-west-1",
instance_type_name="gpu_1x_h100_sxm5",
ssh_key_names=["my-ssh-key"],
file_system_names=["my-filesystem"], # Optional
name="training-job"
)
response = api.launch_instance(request)
instance_id = response.data.instance_ids[0]
print(f"Launched: {instance_id}")
実行中のインスタンスの一覧表示
instances = api.list_instances()
for instance in instances.data:
print(f"{instance.name}: {instance.ip} ({instance.status})")
インスタンスの終了
from lambda_cloud_client.models import TerminateInstanceRequest
request = TerminateInstanceRequest(
instance_ids=[instance_id]
)
api.terminate_instance(request)
SSH キーの管理
from lambda_cloud_client.models import AddSshKeyRequest
# Add SSH key
request = AddSshKeyRequest(
name="my-key",
public_key="ssh-rsa AAAA..."
)
api.add_ssh_key(request)
# List keys
keys = api.list_ssh_keys()
# Delete key
api.delete_ssh_key(key_id)
curl による CLI
インスタンスタイプの一覧表示
curl -u $LAMBDA_API_KEY: \
https://cloud.lambdalabs.com/api/v1/instance-types | jq
インスタンスの起動
curl -u $LAMBDA_API_KEY: \
-X POST https://cloud.lambdalabs.com/api/v1/instance-operations/launch \
-H "Content-Type: application/json" \
-d '{
"region_name": "us-west-1",
"instance_type_name": "gpu_1x_h100_sxm5",
"ssh_key_names": ["my-key"]
}' | jq
インスタンスの終了
curl -u $LAMBDA_API_KEY: \
-X POST https://cloud.lambdalabs.com/api/v1/instance-operations/terminate \
-H "Content-Type: application/json" \
-d '{"instance_ids": ["<INSTANCE-ID>"]}' | jq
永続ストレージ
ファイルシステム
ファイルシステムはインスタンスの再起動後もデータを保持します:
# Mount location
/lambda/nfs/<FILESYSTEM_NAME>
# Example: save checkpoints
python train.py --checkpoint-dir /lambda/nfs/my-storage/checkpoints
ファイルシステムの作成
- Lambda コンソールで Storage に移動
- 「Create filesystem」をクリック
- リージョンを選択(インスタンスのリージョンと一致させる必要があります)
- 名前を付けて作成
インスタンスへのアタッチ
ファイルシステムは、インスタンスの起動時にアタッチする必要があります:
- コンソールの場合: 起動時にファイルシステムを選択
- API の場合: 起動リクエストに
file_system_namesを含める
ベストプラクティス
# Store on filesystem (persists)
/lambda/nfs/storage/
├── datasets/
├── checkpoints/
├── models/
└── outputs/
# Local SSD (faster, ephemeral)
/home/ubuntu/
└── working/ # Temporary files
SSH の設定
SSH キーの追加
# Generate key locally
ssh-keygen -t ed25519 -f ~/.ssh/lambda_key
# Add public key to Lambda console
# Or via API
複数のキー
# On instance, add more keys
echo 'ssh-rsa AAAA...' >> ~/.ssh/authorized_keys
GitHub からインポート
# On instance
ssh-import-id gh:username
SSH トンネリング
# Forward Jupyter
ssh -L 8888:localhost:8888 ubuntu@<IP>
# Forward TensorBoard
ssh -L 6006:localhost:6006 ubuntu@<IP>
# Multiple ports
ssh -L 8888:localhost:8888 -L 6006:localhost:6006 ubuntu@<IP>
JupyterLab
コンソールから起動
- Instances ページに移動
- Cloud IDE 列の「Launch」をクリック
- JupyterLab がブラウザで開きます
手動でのアクセス
# On instance
jupyter lab --ip=0.0.0.0 --port=8888
# From local machine with tunnel
ssh -L 8888:localhost:8888 ubuntu@<IP>
# Open http://localhost:8888
学習ワークフロー
単一 GPU での学習
# SSH to instance
ssh ubuntu@<IP>
# Clone repo
git clone https://github.com/user/project
cd project
# Install dependencies
pip install -r requirements.txt
# Train
python train.py --epochs 100 --checkpoint-dir /lambda/nfs/storage/checkpoints
マルチ GPU での学習(単一ノード)
# train_ddp.py
import torch
import torch.distributed as dist
from torch.nn.parallel import DistributedDataParallel as DDP
def main():
dist.init_process_group("nccl")
rank = dist.get_rank()
device = rank % torch.cuda.device_count()
model = MyModel().to(device)
model = DDP(model, device_ids=[device])
# Training loop...
if __name__ == "__main__":
main()
# Launch with torchrun (8 GPUs)
torchrun --nproc_per_node=8 train_ddp.py
ファイルシステムへのチェックポイント保存
import os
checkpoint_dir = "/lambda/nfs/my-storage/checkpoints"
os.makedirs(checkpoint_dir, exist_ok=True)
# Save checkpoint
torch.save({
'epoch': epoch,
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
'loss': loss,
}, f"{checkpoint_dir}/checkpoint_{epoch}.pt")
1-Click Clusters
概要
次の機能を備えた高性能な Slurm クラスター:
- 16〜512 基の NVIDIA H100 または B200 GPU
- NVIDIA Quantum-2 400 Gb/s InfiniBand
- 3200 Gb/s の GPUDirect RDMA
- 事前インストール済みの分散 ML スタック
同梱ソフトウェア
- Ubuntu 22.04 LTS + Lambda Stack
- NCCL, Open MPI
- DDP および FSDP を備えた PyTorch
- TensorFlow
- OFED ドライバー
ストレージ
- コンピュートノードごとに 24 TB の NVMe(エフェメラル)
- 永続データ用の Lambda ファイルシステム
マルチノードトレーニング
# On Slurm cluster
srun --nodes=4 --ntasks-per-node=8 --gpus-per-node=8 \
torchrun --nnodes=4 --nproc_per_node=8 \
--rdzv_backend=c10d --rdzv_endpoint=$MASTER_ADDR:29500 \
train.py
ネットワーク
帯域幅
- インスタンス間(同一リージョン): 最大 200 Gbps
- インターネットへのアウトバウンド: 最大 20 Gbps
ファイアウォール
- デフォルト: ポート 22(SSH)のみ開放
- 追加のポートは Lambda コンソールで設定してください
- ICMP トラフィックはデフォルトで許可されています
プライベート IP
# Find private IP
ip addr show | grep 'inet '
よく使われるワークフロー
ワークフロー 1: LLM のファインチューニング
# 1. Launch 8x H100 instance with filesystem
# 2. SSH and setup
ssh ubuntu@<IP>
pip install transformers accelerate peft
# 3. Download model to filesystem
python -c "
from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-2-7b-hf')
model.save_pretrained('/lambda/nfs/storage/models/llama-2-7b')
"
# 4. Fine-tune with checkpoints on filesystem
accelerate launch --num_processes 8 train.py \
--model_path /lambda/nfs/storage/models/llama-2-7b \
--output_dir /lambda/nfs/storage/outputs \
--checkpoint_dir /lambda/nfs/storage/checkpoints
ワークフロー 2: バッチ推論
# 1. Launch A10 instance (cost-effective for inference)
# 2. Run inference
python inference.py \
--model /lambda/nfs/storage/models/fine-tuned \
--input /lambda/nfs/storage/data/inputs.jsonl \
--output /lambda/nfs/storage/data/outputs.jsonl
コスト最適化
適切な GPU の選択
| タスク | 推奨 GPU |
|---|---|
| LLM のファインチューニング(7B) | A100 40GB |
| LLM のファインチューニング(70B) | 8x H100 |
| 推論 | A10, A6000 |
| 開発 | V100, A10 |
| 最大性能 | B200 |
コストを削減する
- ファイルシステムを使用する: データの再ダウンロードを避けます
- こまめにチェックポイントを保存する: 中断されたトレーニングを再開できるようにします
- 適切なサイズを選ぶ: GPU を過剰にプロビジョニングしないでください
- アイドル状態のインスタンスを終了する: 自動停止はないため、手動で終了してください
使用状況の監視
- ダッシュボードでリアルタイムの GPU 使用率を確認できます
- プログラムによる監視には API を利用できます
よくある問題
| 問題 | 解決策 |
|---|---|
| インスタンスが起動しない | リージョンの空き状況を確認し、別の GPU を試してください |
| SSH 接続が拒否される | インスタンスの初期化を待ちます(3〜15 分) |
| 終了後にデータが失われた | 永続ファイルシステムを使用してください |
| データ転送が遅い | 同一リージョンのファイルシステムを使用してください |
| GPU が検出されない | インスタンスを再起動し、ドライバーを確認してください |
参考資料
- 高度な使い方 - マルチノードトレーニング、API による自動化
- トラブルシューティング - よくある問題と解決策
リソース
- ドキュメント: https://docs.lambda.ai
- コンソール: https://cloud.lambda.ai
- 料金: https://lambda.ai/instances
- サポート: https://support.lambdalabs.com
- ブログ: https://lambda.ai/blog
コメント
Markdown 対応