mcpField
L
lambda-labs-gpu-cloud

lambda-labs-gpu-cloud

github.com/orchestra-research云与 DevOps14.1k947 次安装19 周前更新
代码仓库

关于 lambda-labs-gpu-cloud

Lambda Labs GPU Cloud 是面向机器学习工作负载的 GPU 云服务指南,适用于需要 SSH 访问、持久存储或多节点训练的用户。内容涵盖 GPU 实例、预装 ML 软件栈、API 自动化及 Slurm 集群。

主要功能

  1. 01多种 GPU 实例
  2. 02预装 Lambda Stack
  3. 03跨重启持久化文件系统
  4. 0416–512 GPU 的 Slurm 集群
  5. 05Python API 管理实例

适用场景

  1. 01运行长时间模型训练任务
  2. 02使用多 GPU 或多节点训练
  3. 03在实例间保留数据与检查点
  4. 04通过 API 创建和终止实例

安装

复制下面的命令,在终端中运行。

$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 云

在 Lambda Labs GPU 云上运行机器学习工作负载的完整指南,涵盖按需实例和 1-Click Clusters。

何时使用 Lambda Labs

在以下情况使用 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显存价格/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.80显存/价格比出色
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

安装
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
创建文件系统
  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
  • 预装分布式机器学习套件
包含的软件
  • 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:大模型微调
# 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
大模型微调(7B)A100 40GB
大模型微调(70B)8x H100
推理A10、A6000
开发V100、A10
极致性能B200
降低成本
  1. 使用文件系统:避免重复下载数据
  2. 频繁保存检查点:从中断的训练中恢复
  3. 按需配置:不要过度配置 GPU
  4. 及时终止空闲实例:没有自动停止功能,需手动终止
监控用量
  • 控制面板显示实时 GPU 利用率
  • 提供用于程序化监控的 API

常见问题

问题解决方案
实例无法启动检查区域可用性,尝试其他 GPU
SSH 连接被拒绝等待实例初始化完成(3-15 分钟)
终止后数据丢失使用持久化文件系统
数据传输缓慢使用同一区域的文件系统
未检测到 GPU重启实例,检查驱动

参考资料

资源

评论

支持 Markdown