mcpField
L
lambda-labs-gpu-cloud

lambda-labs-gpu-cloud

github.com/kalarislabsクラウド・DevOps7345 回インストール4 日前に更新
リポジトリ

lambda-labs-gpu-cloud について

lambda-labs-gpu-cloudは、Lambda Labs GPU Cloudで機械学習ワークロードを実行するためのガイドです。GPUインスタンスやマルチノードクラスターを使う担当者向けに、設定、ストレージ、学習、コスト管理を扱います。

主な機能

  1. 01コンソールまたはAPIからGPUインスタンスを起動
  2. 02SSHでインスタンスに接続
  3. 03永続ファイルシステムで再起動後もデータを保持
  4. 04マルチGPUおよびSlurmクラスターで学習
  5. 05プリインストール済みMLソフトウェアの利用
  6. 06使用状況の監視とコスト管理

活用シーン

  1. 01GPUインスタンスでのモデル微調整
  2. 02GPUでのバッチ推論の実行
  3. 03複数GPUまたはノードを使った学習
  4. 04セッション間でのデータセットやチェックポイントの保持

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/kalarislabs/research-agent-skills --skill lambda-labs-gpu-cloud

インストール後、Claude Code で/lambda-labs-gpu-cloudを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
advanced-usage.md
python-api.md
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マーケットプレイス向け

クイックスタート

アカウントの設定
  1. https://lambda.ai でアカウントを作成します
  2. 支払い方法を追加します
  3. ダッシュボードからAPIキーを生成します
  4. SSHキーを追加します(インスタンスの起動前に必須です)
コンソールから起動する
  1. https://cloud.lambda.ai/instances にアクセスします
  2. 「Launch instance」をクリックします
  3. GPUの種類とリージョンを選択します
  4. SSHキーを選択します
  5. 必要に応じてファイルシステムをアタッチします
  6. 起動し、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
GPUVRAM1 GPUあたりの料金/時最適な用途
B200 SXM6180 GB$4.99最大規模のモデル、最速のトレーニング
H100 SXM80 GB$2.99-3.29大規模モデルのトレーニング
H100 PCIe80 GB$2.49コスト効率に優れたH100
GH20096 GB$1.49単一GPUでの大規模モデル
A100 80GB80 GB$1.79本番環境でのトレーニング
A100 40GB40 GB$1.29標準的なトレーニング
A1024 GB$0.75推論、ファインチューニング
A600048 GB$0.80VRAMと価格のバランスが良好
V10016 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

詳細、コード例、パラメータ表については、references/python-api.mdを参照してください。この手順に該当する場合に読んでください。

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
ファイルシステムを作成する
  1. Lambdaコンソールの「Storage」に移動します
  2. 「Create filesystem」をクリックします
  3. リージョンを選択します(インスタンスのリージョンと一致させる必要があります)
  4. 名前を付けて作成します
インスタンスにアタッチする

ファイルシステムはインスタンスの起動時にアタッチする必要があります:

  • コンソール経由:起動時にファイルシステムを選択します
  • 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

コンソールから起動する
  1. Instancesページに移動します
  2. Cloud IDE列の「Launch」をクリックします
  3. ブラウザーで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
コストを削減する
  1. ファイルシステムを使用する:データの再ダウンロードを避けます
  2. 頻繁にチェックポイントを保存する:中断したトレーニングを再開できます
  3. 適切なサイズにする:GPUを過剰にプロビジョニングしないでください
  4. アイドル状態のインスタンスを終了する:自動停止機能はないため、手動で終了してください
使用状況を監視する
  • ダッシュボードでGPU使用率をリアルタイムに確認できます
  • プログラムによる監視用のAPI

よくある問題

問題解決策
インスタンスを起動できないリージョンで利用可能か確認し、別のGPUを試してください
SSH接続が拒否されるインスタンスの初期化を待ってください(3~15分)
インスタンス終了後にデータが失われる永続ファイルシステムを使用してください
データ転送が遅い同じリージョン内のファイルシステムを使用してください
GPUが検出されないインスタンスを再起動し、ドライバーを確認してください

参考資料

リソース

関連スキル

  • modal-serverless-gpu:MLワークロードを実行するためのサーバーレスGPUクラウドプラットフォームです。
  • skypilot-multi-cloud-orchestration:自動コスト最適化機能を備えた、MLワークロード向けのマルチクラウドオーケストレーションです。
  • modal:Modalは、オンデマンドGPUを含め、Pythonをオンデマンドで実行するためのサーバーレスクラウドプラットフォームです。

コメント