Перейти к содержанию

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

Skill metadata​

| | |---|--- | |Source| Опционально — установка: hermes skills install official/mlops/lambda-labs | |Path| optional-skills/mlops/lambda-labs | |Version| 1.0.0 | |Author| Orchestra Research | |License| MIT | |Dependencies| lambda-cloud-client>=1.0.0 | |Tags| Infrastructure, GPU Cloud, Training, Inference, Lambda Labs |

Reference: full SKILL.md​

info Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Это инструкции, которые видит агент, когда навык активен.

Lambda Labs GPU Cloud

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

When to use 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 с самыми низкими ценами

Quick start​

Account setup​

  1. Создайте аккаунт на https://lambda.ai
  2. Добавьте способ оплаты
  3. Сгенерируйте API-ключ в панели управления
  4. Добавьте SSH-ключ (требуется перед запуском инстансов)

Launch via console​

  1. Перейдите на https://cloud.lambda.ai/instances
  2. Нажмите «Launch instance»
  3. Выберите тип GPU и регион
  4. Выберите SSH-ключ
  5. Опционально подключите файловую систему
  6. Запустите и подождите 3-15 минут

Connect via SSH​

[code] # Get instance IP from console
ssh ubuntu@

# Or with specific key  
ssh -i ~/.ssh/lambda_key ubuntu@<INSTANCE-IP>

[/code]

GPU instances​

Available GPUs​

GPU| VRAM| Цена/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| Крупные модели на одном 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| Бюджетное обучение

Instance configurations​

[code] 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

[/code]

Launch times​

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

Lambda Stack​

Все инстансы поставляются с предустановленным Lambda Stack: [code] # 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

[/code]

Verify installation​

[code] # Check GPU
nvidia-smi

# Check PyTorch  
python -c "import torch; print(torch.cuda.is_available())"

# Check CUDA version  
nvcc --version

[/code]

Python API​

Installation​

[code] pip install lambda-cloud-client

[/code]

Authentication​

[code] 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"]  
)

[/code]

List available instances​

[code] 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}")

[/code]

Launch instance​

[code] 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}")

[/code]

List running instances​

[code] instances = api.list_instances()
for instance in instances.data:
print(f"{instance.name}: {instance.ip} ({instance.status})")

[/code]

Terminate instance​

[code] from lambda_cloud_client.models import TerminateInstanceRequest

request = TerminateInstanceRequest(  
    instance_ids=[instance_id]  
)  
api.terminate_instance(request)

[/code]

SSH key management​

[code] 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)

[/code]

CLI with curl​

List instance types​

[code] curl -u $LAMBDA_API_KEY: \
https://cloud.lambdalabs.com/api/v1/instance-types | jq

[/code]

Launch instance​

[code] 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

[/code]

Terminate instance​

[code] curl -u $LAMBDA_API_KEY: \
-X POST https://cloud.lambdalabs.com/api/v1/instance-operations/terminate \
-H "Content-Type: application/json" \
-d '{"instance_ids": [""]}' | jq

[/code]

Persistent storage​

Filesystems​

Файловые системы сохраняют данные между перезапусками инстансов: [code] # Mount location
/lambda/nfs/

# Example: save checkpoints  
python train.py --checkpoint-dir /lambda/nfs/my-storage/checkpoints

[/code]

Create filesystem​

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

Attach to instance​

Файловые системы должны быть подключены при запуске инстанса: * Через консоль: Выберите файловую систему при запуске * Через API: Укажите file_system_names в запросе запуска

Best practices​

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

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

[/code]

SSH configuration​

Add SSH key​

[code] # Generate key locally
ssh-keygen -t ed25519 -f ~/.ssh/lambda_key

# Add public key to Lambda console  
# Or via API

[/code]

Multiple keys​

[code] # On instance, add more keys
echo 'ssh-rsa AAAA...' >> ~/.ssh/authorized_keys

[/code]

Import from GitHub​

[code] # On instance
ssh-import-id gh:username

[/code]

SSH tunneling​

[code] # Forward Jupyter
ssh -L 8888:localhost:8888 ubuntu@

# Forward TensorBoard  
ssh -L 6006:localhost:6006 ubuntu@<IP>

# Multiple ports  
ssh -L 8888:localhost:8888 -L 6006:localhost:6006 ubuntu@<IP>

[/code]

JupyterLab​

Launch from console​

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

Manual access​

[code] # 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

[/code]

Training workflows​

Single-GPU training​

[code] # SSH to instance
ssh ubuntu@

# 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

[/code]

Multi-GPU training (single node)​

[code] # 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()

[/code] [code] # Launch with torchrun (8 GPUs)
torchrun --nproc_per_node=8 train_ddp.py

[/code]

Checkpoint to filesystem​

[code] 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")

[/code]

1-Click Clusters​

Overview​

Высокопроизводительные Slurm-кластеры с: * 16-512 NVIDIA H100 или B200 GPU * NVIDIA Quantum-2 400 Gb/s InfiniBand * GPUDirect RDMA на 3200 Gb/s * Предустановленным распределённым ML-стеком

Included software​

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

Storage​

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

Multi-node training​

[code] # 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

[/code]

Networking​

Bandwidth​

  • Между инстансами (один регион): до 200 Gbps
  • Исходящий интернет: макс. 20 Gbps

Firewall​

  • По умолчанию: Открыт только порт 22 (SSH)
  • Настройте дополнительные порты в консоли Lambda
  • ICMP-трафик разрешён по умолчанию

Private IPs​

[code] # Find private IP
ip addr show | grep 'inet '

[/code]

Common workflows​

Workflow 1: Fine-tuning LLM​

[code] # 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

[/code]

Workflow 2: Batch inference​

[code] # 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

[/code]

Cost optimization​

Choose right GPU​

Задача Рекомендуемый GPU
Тонкая настройка LLM (7B) A100 40GB
Тонкая настройка LLM (70B) 8x H100
Инференс A10, A6000
Разработка V100, A10
Максимальная производительность B200
### Reduce costs​
1. Используйте файловые системы : Избегайте повторной загрузки данных
2. Сохраняйте контрольные точки часто : Возобновляйте прерванное обучение
3. Правильный размер : Не выделяйте лишних GPU
4. Завершайте простаивающие : Нет автоостановки, завершайте вручную

Monitor usage​

  • Панель управления показывает загрузку GPU в реальном времени
  • API для программного мониторинга

Common issues​

Проблема Решение
Инстанс не запускается Проверьте доступность региона, попробуйте другой GPU
SSH-соединение отклонено Подождите инициализации инстанса (3-15 мин)
Данные потеряны после завершения Используйте постоянные файловые системы
Медленная передача данных Используйте файловую систему в том же регионе
GPU не обнаружен Перезагрузите инстанс, проверьте драйверы
## References​
* Advanced Usage \- Многоузловое обучение, автоматизация через API
* Troubleshooting \- Частые проблемы и решения

Resources​