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¶
- Создайте аккаунт на https://lambda.ai
- Добавьте способ оплаты
- Сгенерируйте API-ключ в панели управления
- Добавьте SSH-ключ (требуется перед запуском инстансов)
Launch via console¶
- Перейдите на https://cloud.lambda.ai/instances
- Нажмите «Launch instance»
- Выберите тип GPU и регион
- Выберите SSH-ключ
- Опционально подключите файловую систему
- Запустите и подождите 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": ["
[/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¶
- Перейдите в раздел Storage в консоли Lambda
- Нажмите «Create filesystem»
- Выберите регион (должен совпадать с регионом инстанса)
- Дайте имя и создайте
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¶
- Перейдите на страницу Instances
- Нажмите «Launch» в колонке Cloud IDE
- 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¶
- Документация : https://docs.lambda.ai
- Консоль : https://cloud.lambda.ai
- Цены : https://lambda.ai/instances
- Поддержка : https://support.lambdalabs.com
-
Блог : https://lambda.ai/blog
- Reference: full SKILL.md
- When to use Lambda Labs
- Quick start
- GPU instances
- Lambda Stack
- Python API
- CLI with curl
- Persistent storage
- SSH configuration
- JupyterLab
- Training workflows
- 1-Click Clusters
- Networking
- Common workflows
- Cost optimization
- Common issues
- References
- Resources