Lambda Labs

Облачные GPU-инстансы по запросу для обучения ML.

Метаданные навыка

ИсточникОпциональный — устанавливается командой 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

инфо

Ниже приведено полное определение навыка, которое Hermes загружает при его срабатывании. Именно эти инструкции видит агент, когда навык активен.

Lambda Labs GPU Cloud

Руководство по запуску ML-нагрузок в GPU-облаке Lambda Labs: инстансы по запросу и кластеры 1-Click Clusters.

Когда использовать Lambda Labs

Берите Lambda Labs, если:

  • Нужны выделенные GPU-инстансы с полным доступом по SSH
  • Запускаете долгие задачи обучения (от часов до дней)
  • Хотите простую тарификацию без платы за исходящий трафик
  • Нужно постоянное хранилище, переживающее перезапуски сессий
  • Требуются высокопроизводительные многоузловые кластеры (16–512 GPU)
  • Хотите предустановленный ML-стек (Lambda Stack с PyTorch, CUDA, NCCL)

Главные возможности:

  • Разнообразие GPU: B200, H100, GH200, A100, A10, A6000, V100
  • Lambda Stack: предустановленные PyTorch, TensorFlow, CUDA, cuDNN, NCCL
  • Постоянные файловые системы: данные сохраняются между перезапусками инстанса
  • 1-Click Clusters: Slurm-кластеры на 16–512 GPU с InfiniBand
  • Простая тарификация: оплата поминутно, без платы за исходящий трафик
  • Регионы по всему миру: 12+ регионов

Когда взять альтернативу:

  • Modal: для бессерверных, авто-масштабируемых нагрузок
  • SkyPilot: для оркестрации в нескольких облаках и оптимизации расходов
  • RunPod: для более дешёвых spot-инстансов и бессерверных эндпоинтов
  • 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

GPUVRAMЦена/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Хорошее соотношение VRAM/цена
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)

CLI через 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. Откройте раздел Storage в консоли Lambda
  2. Нажмите «Create filesystem»
  3. Выберите регион (должен совпадать с регионом инстанса)
  4. Задайте имя и создайте

Подключение к инстансу

Файловые системы подключаются только в момент запуска инстанса:

  • Через консоль: выберите файловую систему при запуске
  • Через API: укажите file_system_names в запросе на запуск

Рекомендации

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

# Local SSD (faster, ephemeral)
~/ (instance home)
  └── 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. Нажмите «Launch» в колонке Cloud IDE
  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 GPU NVIDIA H100 или B200
  • NVIDIA Quantum-2 InfiniBand на 400 Гбит/с
  • GPUDirect RDMA на 3200 Гбит/с
  • Предустановленным стеком для распределённого ML

Что предустановлено

  • Ubuntu 22.04 LTS + Lambda Stack
  • NCCL, Open MPI
  • PyTorch с DDP и FSDP
  • TensorFlow
  • Драйверы OFED

Хранилище

  • 24 ТБ 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 Гбит/с
  • Исходящий трафик в интернет: максимум 20 Гбит/с

Файрвол

  • По умолчанию открыт только порт 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 не определяетсяПерезагрузите инстанс, проверьте драйверы

Ссылки

  • Advanced Usage — многоузловое обучение, автоматизация через API
  • Troubleshooting — частые проблемы и их решения

Ресурсы

перевод и редактура:

обновлено

⌕ ESC