Перейти к основному содержимому

Lambda Labs Gpu Cloud

Зарезервированные и выделенные по требованию GPU-инстансы для обучения и инференса ML-моделей. Используйте, когда вам нужны выделенные GPU-инстансы с простым SSH-доступом, постоянными файловыми системами или высокопроизводительными мульти-нодовыми кластерами для крупномасштабного обучения.

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

ИсточникОпционально — установка с помощью vibeos 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​

к сведению

Ниже приведено полное определение навыка, которое VibeOS загружает при его активации. Агент видит эти инструкции, когда навык активен.

Lambda Labs GPU Cloud

Исчерпывающее руководство по запуску ML-нагрузок на GPU-облаке Lambda Labs с инстансами по требованию и кластерами в один клик.

Когда использовать 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
  • Постоянные файловые системы: Сохраняйте данные при перезапуске инстансов
  • Кластеры в один клик: 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​

# Получить IP инстанса из консоли
ssh ubuntu@<INSTANCE-IP>

# Или с конкретным ключом
ssh -i ~/.ssh/lambda_key ubuntu@<INSTANCE-IP>

GPU-инстансы​

Доступные GPU​

GPUVRAMЦена/GPU/часЛучше всего для
B200 SXM6180 ГБ$4.99Самые большие модели, самое быстрое обучение
H100 SXM80 ГБ$2.99-3.29Обучение больших моделей
H100 PCIe80 ГБ$2.49Экономичный H100
GH20096 ГБ$1.49Большие модели на одном GPU
A100 80GB80 ГБ$1.79Продуктивное обучение
A100 40GB40 ГБ$1.29Стандартное обучение
A1024 ГБ$0.75Инференс, дообучение
A600048 ГБ$0.80Хорошее соотношение VRAM/цена
V10016 ГБ$0.55Бюджетное обучение

Конфигурации инстансов​

8x GPU: Лучше всего для распределенного обучения (DDP, FSDP)
4x GPU: Большие модели, мульти-GPU обучение
2x GPU: Средние нагрузки
1x GPU: Дообучение, инференс, разработка

Время запуска​

  • Один GPU: 3-5 минут
  • Несколько GPU: 10-15 минут

Lambda Stack​

Все инстансы поставляются с предустановленным Lambda Stack:

# Включенное ПО
- Ubuntu 22.04 LTS
- Драйверы NVIDIA (последние)
- CUDA 12.x
- cuDNN 8.x
- NCCL (для мульти-GPU)
- PyTorch (последний)
- TensorFlow (последний)
- JAX
- JupyterLab

Проверка установки​

# Проверка GPU
nvidia-smi

# Проверка PyTorch
python -c "import torch; print(torch.cuda.is_available())"

# Проверка версии CUDA
nvcc --version

Python API​

Установка​

pip install lambda-cloud-client

Аутентификация​

import os
import lambda_cloud_client

# Настройка с API-ключом
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)

# Получить доступные типы инстансов
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"], # Опционально
name="training-job"
)

response = api.launch_instance(request)
instance_id = response.data.instance_ids[0]
print(f"Запущен: {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

# Добавить SSH-ключ
request = AddSshKeyRequest(
name="my-key",
public_key="ssh-rsa AAAA..."
)
api.add_ssh_key(request)

# Список ключей
keys = api.list_ssh_keys()

# Удалить ключ
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

Постоянное хранилище​

Файловые системы​

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

# Точка монтирования
/lambda/nfs/<FILESYSTEM_NAME>

# Пример: сохранение контрольных точек
python train.py --checkpoint-dir /lambda/nfs/my-storage/checkpoints

Создание файловой системы​

  1. Перейдите в раздел Storage в консоли Lambda
  2. Нажмите «Create filesystem»
  3. Выберите регион (должен совпадать с регионом инстанса)
  4. Дайте имя и создайте

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

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

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

Лучшие практики​

# Хранить в файловой системе (постоянно)
/lambda/nfs/storage/
├── datasets/
├── checkpoints/
├── models/
└── outputs/

# Локальный SSD (быстрее, эфемерно)
/home/ubuntu/
└── working/ # Временные файлы

Конфигурация SSH​

Добавление SSH-ключа​

# Сгенерировать ключ локально
ssh-keygen -t ed25519 -f ~/.ssh/lambda_key

# Добавить открытый ключ в консоль Lambda
# Или через API

Несколько ключей​

# На инстансе добавьте больше ключей
echo 'ssh-rsa AAAA...' >> ~/.ssh/authorized_keys

Импорт из GitHub​

# На инстансе
ssh-import-id gh:username

SSH-туннелирование​

# Проброс Jupyter
ssh -L 8888:localhost:8888 ubuntu@<IP>

# Проброс TensorBoard
ssh -L 6006:localhost:6006 ubuntu@<IP>

# Несколько портов
ssh -L 8888:localhost:8888 -L 6006:localhost:6006 ubuntu@<IP>

JupyterLab​

Запуск из консоли​

  1. Перейдите на страницу Instances
  2. Нажмите «Launch» в колонке Cloud IDE
  3. JupyterLab откроется в браузере

Ручной доступ​

# На инстансе
jupyter lab --ip=0.0.0.0 --port=8888

# С локальной машины через туннель
ssh -L 8888:localhost:8888 ubuntu@<IP>
# Откройте http://localhost:8888

Рабочие процессы обучения​

Обучение на одном GPU​

# SSH к инстансу
ssh ubuntu@<IP>

# Клонировать репозиторий
git clone https://github.com/user/project
cd project

# Установить зависимости
pip install -r requirements.txt

# Обучить
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])

# Цикл обучения...

if __name__ == "__main__":
main()
# Запуск с torchrun (8 GPU)
torchrun --nproc_per_node=8 train_ddp.py

Контрольные точки в файловую систему​

import os

checkpoint_dir = "/lambda/nfs/my-storage/checkpoints"
os.makedirs(checkpoint_dir, exist_ok=True)

# Сохранить контрольную точку
torch.save({
'epoch': epoch,
'model_state_dict': model.state_dict(),
'optimizer_state_dict': optimizer.state_dict(),
'loss': loss,
}, f"{checkpoint_dir}/checkpoint_{epoch}.pt")

Кластеры в один клик​

Обзор​

Высокопроизводительные Slurm-кластеры с:

  • 16-512 NVIDIA H100 или B200 GPU
  • NVIDIA Quantum-2 400 Гбит/с InfiniBand
  • GPUDirect RDMA на 3200 Гбит/с
  • Предустановленный распределенный ML-стек

Включенное ПО​

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

Хранилище​

  • 24 ТБ NVMe на вычислительный узел (эфемерно)
  • Файловые системы Lambda для постоянных данных

Мульти-нодовое обучение​

# На Slurm-кластере
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​

# Найти частный IP
ip addr show | grep 'inet '

Типовые рабочие процессы​

Рабочий процесс 1: Дообучение LLM​

# 1. Запустить инстанс 8x H100 с файловой системой

# 2. SSH и настройка
ssh ubuntu@<IP>
pip install transformers accelerate peft

# 3. Загрузить модель в файловую систему
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. Дообучить с контрольными точками в файловой системе
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. Запустить инстанс A10 (экономически эффективен для инференса)

# 2. Запустить инференс
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 не обнаруженПерезагрузите инстанс, проверьте драйверы

Ссылки​

  • Расширенное использование — Мульти-нодовое обучение, автоматизация API
  • Устранение неполадок — Частые проблемы и решения

Ресурсы​