Hermes Agent Wiki 非公式・日本語wiki
この skill をそのまま使う: GitHub で原文を見る

英語原文・frontmatter 込みで、Hermes が読み込む実体そのままです(このページの本文は日本語版)。

Lambda Labs

目次

ML の学習用に、必要なときだけ GPU を借りるクラウドです。

skill の情報

提供元 追加インストール — hermes skills install official/mlops/lambda-labs で導入します
パス optional-skills/mlops/lambda-labs
バージョン 1.0.0
作者 Orchestra Research
ライセンス MIT
依存関係 lambda-cloud-client>=1.0.0
対応プラットフォーム linux, macos, windows
タグ Infrastructure, GPU Cloud, Training, Inference, Lambda Labs

参考: SKILL.md 全文

Lambda Labs GPU クラウド

Lambda Labs の GPU クラウドで、必要なときだけ借りるインスタンスや 1-Click Clusters を使って ML の処理を動かすための案内です。

Lambda Labs を使う場面

次のようなときに向いています:

  • SSH で自由に触れる専用の GPU インスタンスがほしい
  • 数時間から数日かかる学習を回したい
  • 料金の仕組みが単純で、データ持ち出しの料金もかからないほうがよい
  • 作業を終えてもデータを残しておきたい
  • 16〜512 GPU の高性能なクラスタが必要
  • 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

GPU VRAM 1 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 1 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 1 枚: 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

認証


# 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 で操作する

インスタンスの種類を一覧する

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 を入れます

うまく使うコツ

<!-- ascii-guard-ignore -->

# Store on filesystem (persists)
/lambda/nfs/storage/
  ├── datasets/
  ├── checkpoints/
  ├── models/
  └── outputs/

# Local SSD (faster, ephemeral)
~/ (instance home)
  └── working/  # Temporary files

<!-- ascii-guard-ignore-end -->

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 1 枚での学習

# 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 複数枚での学習(1 ノード)

# train_ddp.py

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

途中経過をファイルシステムに保存する


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 クラスタです。

  • NVIDIA H100 または B200 を 16〜512 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) H100 8 枚
推論 A10、A6000
開発 V100、A10
性能を最大にしたい B200

費用を減らす

  1. ファイルシステムを使う: データを何度も落とし直さずに済みます
  2. こまめに途中経過を保存する: 学習が止まっても続きから再開できます
  3. 必要な分だけにする: GPU を余分に借りすぎないようにします
  4. 使っていないものは止める: 自動停止はないので、自分で止めます

使用状況を見る

  • ダッシュボードで GPU の使用率がその場で見られます
  • API を使えばプログラムから監視できます

困ったとき

症状 対処
インスタンスが起動しない リージョンの空き状況を確認し、別の GPU を試します
SSH の接続を断られる インスタンスの準備が終わるまで待ちます(3〜15 分)
片づけたらデータが消えた 残るファイルシステムを使います
データの転送が遅い 同じリージョンのファイルシステムを使います
GPU が認識されない インスタンスを再起動し、ドライバを確認します

参考資料

参考リンク

  • ドキュメント: https://docs.lambda.ai
  • コンソール: https://cloud.lambda.ai
  • 料金: https://lambda.ai/instances
  • サポート: https://support.lambdalabs.com
  • ブログ: https://lambda.ai/blog