SKILL.md
SKILL.mdBrowse 3 files
3,256 tokens
12,011 bytes
Token encoding: o200k_base
Snapshot 24fd22b
1---2name: lambda-labs3description: On-demand GPU cloud instances for ML training.4version: 1.0.05author: Orchestra Research6license: MIT7dependencies: [lambda-cloud-client>=1.0.0]8platforms: [linux, macos, windows]9metadata:10 hermes:11 tags: [Infrastructure, GPU Cloud, Training, Inference, Lambda Labs]12 13---14 15# Lambda Labs GPU Cloud16 17Guide to running ML workloads on Lambda Labs GPU cloud with on-demand instances and 1-Click Clusters.18 19## When to use Lambda Labs20 21**Use Lambda Labs when:**22- Need dedicated GPU instances with full SSH access23- Running long training jobs (hours to days)24- Want simple pricing with no egress fees25- Need persistent storage across sessions26- Require high-performance multi-node clusters (16-512 GPUs)27- Want pre-installed ML stack (Lambda Stack with PyTorch, CUDA, NCCL)28 29**Key features:**30- **GPU variety**: B200, H100, GH200, A100, A10, A6000, V10031- **Lambda Stack**: Pre-installed PyTorch, TensorFlow, CUDA, cuDNN, NCCL32- **Persistent filesystems**: Keep data across instance restarts33- **1-Click Clusters**: 16-512 GPU Slurm clusters with InfiniBand34- **Simple pricing**: Pay-per-minute, no egress fees35- **Global regions**: 12+ regions worldwide36 37**Use alternatives instead:**38- **Modal**: For serverless, auto-scaling workloads39- **SkyPilot**: For multi-cloud orchestration and cost optimization40- **RunPod**: For cheaper spot instances and serverless endpoints41- **Vast.ai**: For GPU marketplace with lowest prices42 43## Quick start44 45### Account setup46 471. Create account at https://lambda.ai482. Add payment method493. Generate API key from dashboard504. Add SSH key (required before launching instances)51 52### Launch via console53 541. Go to https://cloud.lambda.ai/instances552. Click "Launch instance"563. Select GPU type and region574. Choose SSH key585. Optionally attach filesystem596. Launch and wait 3-15 minutes60 61### Connect via SSH62 63```bash64# Get instance IP from console65ssh ubuntu@<INSTANCE-IP>66 67# Or with specific key68ssh -i ~/.ssh/lambda_key ubuntu@<INSTANCE-IP>69```70 71## GPU instances72 73### Available GPUs74 75| GPU | VRAM | Price/GPU/hr | Best For |76|-----|------|--------------|----------|77| B200 SXM6 | 180 GB | $4.99 | Largest models, fastest training |78| H100 SXM | 80 GB | $2.99-3.29 | Large model training |79| H100 PCIe | 80 GB | $2.49 | Cost-effective H100 |80| GH200 | 96 GB | $1.49 | Single-GPU large models |81| A100 80GB | 80 GB | $1.79 | Production training |82| A100 40GB | 40 GB | $1.29 | Standard training |83| A10 | 24 GB | $0.75 | Inference, fine-tuning |84| A6000 | 48 GB | $0.80 | Good VRAM/price ratio |85| V100 | 16 GB | $0.55 | Budget training |86 87### Instance configurations88 89```908x GPU: Best for distributed training (DDP, FSDP)914x GPU: Large models, multi-GPU training922x GPU: Medium workloads931x GPU: Fine-tuning, inference, development94```95 96### Launch times97 98- Single-GPU: 3-5 minutes99- Multi-GPU: 10-15 minutes100 101## Lambda Stack102 103All instances come with Lambda Stack pre-installed:104 105```bash106# Included software107- Ubuntu 22.04 LTS108- NVIDIA drivers (latest)109- CUDA 12.x110- cuDNN 8.x111- NCCL (for multi-GPU)112- PyTorch (latest)113- TensorFlow (latest)114- JAX115- JupyterLab116```117 118### Verify installation119 120```bash121# Check GPU122nvidia-smi123 124# Check PyTorch125python -c "import torch; print(torch.cuda.is_available())"126 127# Check CUDA version128nvcc --version129```130 131## Python API132 133### Installation134 135```bash136pip install lambda-cloud-client137```138 139### Authentication140 141```python142import os143import lambda_cloud_client144 145# Configure with API key146configuration = lambda_cloud_client.Configuration(147 host="https://cloud.lambdalabs.com/api/v1",148 access_token=os.environ["LAMBDA_API_KEY"]149)150```151 152### List available instances153 154```python155with lambda_cloud_client.ApiClient(configuration) as api_client:156 api = lambda_cloud_client.DefaultApi(api_client)157 158 # Get available instance types159 types = api.instance_types()160 for name, info in types.data.items():161 print(f"{name}: {info.instance_type.description}")162```163 164### Launch instance165 166```python167from lambda_cloud_client.models import LaunchInstanceRequest168 169request = LaunchInstanceRequest(170 region_name="us-west-1",171 instance_type_name="gpu_1x_h100_sxm5",172 ssh_key_names=["my-ssh-key"],173 file_system_names=["my-filesystem"], # Optional174 name="training-job"175)176 177response = api.launch_instance(request)178instance_id = response.data.instance_ids[0]179print(f"Launched: {instance_id}")180```181 182### List running instances183 184```python185instances = api.list_instances()186for instance in instances.data:187 print(f"{instance.name}: {instance.ip} ({instance.status})")188```189 190### Terminate instance191 192```python193from lambda_cloud_client.models import TerminateInstanceRequest194 195request = TerminateInstanceRequest(196 instance_ids=[instance_id]197)198api.terminate_instance(request)199```200 201### SSH key management202 203```python204from lambda_cloud_client.models import AddSshKeyRequest205 206# Add SSH key207request = AddSshKeyRequest(208 name="my-key",209 public_key="ssh-rsa AAAA..."210)211api.add_ssh_key(request)212 213# List keys214keys = api.list_ssh_keys()215 216# Delete key217api.delete_ssh_key(key_id)218```219 220## CLI with curl221 222### List instance types223 224```bash225curl -u $LAMBDA_API_KEY: \226 https://cloud.lambdalabs.com/api/v1/instance-types | jq227```228 229### Launch instance230 231```bash232curl -u $LAMBDA_API_KEY: \233 -X POST https://cloud.lambdalabs.com/api/v1/instance-operations/launch \234 -H "Content-Type: application/json" \235 -d '{236 "region_name": "us-west-1",237 "instance_type_name": "gpu_1x_h100_sxm5",238 "ssh_key_names": ["my-key"]239 }' | jq240```241 242### Terminate instance243 244```bash245curl -u $LAMBDA_API_KEY: \246 -X POST https://cloud.lambdalabs.com/api/v1/instance-operations/terminate \247 -H "Content-Type: application/json" \248 -d '{"instance_ids": ["<INSTANCE-ID>"]}' | jq249```250 251## Persistent storage252 253### Filesystems254 255Filesystems persist data across instance restarts:256 257```bash258# Mount location259/lambda/nfs/<FILESYSTEM_NAME>260 261# Example: save checkpoints262python train.py --checkpoint-dir /lambda/nfs/my-storage/checkpoints263```264 265### Create filesystem266 2671. Go to Storage in Lambda console2682. Click "Create filesystem"2693. Select region (must match instance region)2704. Name and create271 272### Attach to instance273 274Filesystems must be attached at instance launch time:275- Via console: Select filesystem when launching276- Via API: Include `file_system_names` in launch request277 278### Best practices279 280```bash281# Store on filesystem (persists)282/lambda/nfs/storage/283 ├── datasets/284 ├── checkpoints/285 ├── models/286 └── outputs/287 288# Local SSD (faster, ephemeral)289~/ (instance home)290 └── working/ # Temporary files291```292 293## SSH configuration294 295### Add SSH key296 297```bash298# Generate key locally299ssh-keygen -t ed25519 -f ~/.ssh/lambda_key300 301# Add public key to Lambda console302# Or via API303```304 305### Multiple keys306 307```bash308# On instance, add more keys309echo 'ssh-rsa AAAA...' >> ~/.ssh/authorized_keys310```311 312### Import from GitHub313 314```bash315# On instance316ssh-import-id gh:username317```318 319### SSH tunneling320 321```bash322# Forward Jupyter323ssh -L 8888:localhost:8888 ubuntu@<IP>324 325# Forward TensorBoard326ssh -L 6006:localhost:6006 ubuntu@<IP>327 328# Multiple ports329ssh -L 8888:localhost:8888 -L 6006:localhost:6006 ubuntu@<IP>330```331 332## JupyterLab333 334### Launch from console335 3361. Go to Instances page3372. Click "Launch" in Cloud IDE column3383. JupyterLab opens in browser339 340### Manual access341 342```bash343# On instance344jupyter lab --ip=0.0.0.0 --port=8888345 346# From local machine with tunnel347ssh -L 8888:localhost:8888 ubuntu@<IP>348# Open http://localhost:8888349```350 351## Training workflows352 353### Single-GPU training354 355```bash356# SSH to instance357ssh ubuntu@<IP>358 359# Clone repo360git clone https://github.com/user/project361cd project362 363# Install dependencies364pip install -r requirements.txt365 366# Train367python train.py --epochs 100 --checkpoint-dir /lambda/nfs/storage/checkpoints368```369 370### Multi-GPU training (single node)371 372```python373# train_ddp.py374import torch375import torch.distributed as dist376from torch.nn.parallel import DistributedDataParallel as DDP377 378def main():379 dist.init_process_group("nccl")380 rank = dist.get_rank()381 device = rank % torch.cuda.device_count()382 383 model = MyModel().to(device)384 model = DDP(model, device_ids=[device])385 386 # Training loop...387 388if __name__ == "__main__":389 main()390```391 392```bash393# Launch with torchrun (8 GPUs)394torchrun --nproc_per_node=8 train_ddp.py395```396 397### Checkpoint to filesystem398 399```python400import os401 402checkpoint_dir = "/lambda/nfs/my-storage/checkpoints"403os.makedirs(checkpoint_dir, exist_ok=True)404 405# Save checkpoint406torch.save({407 'epoch': epoch,408 'model_state_dict': model.state_dict(),409 'optimizer_state_dict': optimizer.state_dict(),410 'loss': loss,411}, f"{checkpoint_dir}/checkpoint_{epoch}.pt")412```413 414## 1-Click Clusters415 416### Overview417 418High-performance Slurm clusters with:419- 16-512 NVIDIA H100 or B200 GPUs420- NVIDIA Quantum-2 400 Gb/s InfiniBand421- GPUDirect RDMA at 3200 Gb/s422- Pre-installed distributed ML stack423 424### Included software425 426- Ubuntu 22.04 LTS + Lambda Stack427- NCCL, Open MPI428- PyTorch with DDP and FSDP429- TensorFlow430- OFED drivers431 432### Storage433 434- 24 TB NVMe per compute node (ephemeral)435- Lambda filesystems for persistent data436 437### Multi-node training438 439```bash440# On Slurm cluster441srun --nodes=4 --ntasks-per-node=8 --gpus-per-node=8 \442 torchrun --nnodes=4 --nproc_per_node=8 \443 --rdzv_backend=c10d --rdzv_endpoint=$MASTER_ADDR:29500 \444 train.py445```446 447## Networking448 449### Bandwidth450 451- Inter-instance (same region): up to 200 Gbps452- Internet outbound: 20 Gbps max453 454### Firewall455 456- Default: Only port 22 (SSH) open457- Configure additional ports in Lambda console458- ICMP traffic allowed by default459 460### Private IPs461 462```bash463# Find private IP464ip addr show | grep 'inet '465```466 467## Common workflows468 469### Workflow 1: Fine-tuning LLM470 471```bash472# 1. Launch 8x H100 instance with filesystem473 474# 2. SSH and setup475ssh ubuntu@<IP>476pip install transformers accelerate peft477 478# 3. Download model to filesystem479python -c "480from transformers import AutoModelForCausalLM481model = AutoModelForCausalLM.from_pretrained('meta-llama/Llama-2-7b-hf')482model.save_pretrained('/lambda/nfs/storage/models/llama-2-7b')483"484 485# 4. Fine-tune with checkpoints on filesystem486accelerate launch --num_processes 8 train.py \487 --model_path /lambda/nfs/storage/models/llama-2-7b \488 --output_dir /lambda/nfs/storage/outputs \489 --checkpoint_dir /lambda/nfs/storage/checkpoints490```491 492### Workflow 2: Batch inference493 494```bash495# 1. Launch A10 instance (cost-effective for inference)496 497# 2. Run inference498python inference.py \499 --model /lambda/nfs/storage/models/fine-tuned \500 --input /lambda/nfs/storage/data/inputs.jsonl \501 --output /lambda/nfs/storage/data/outputs.jsonl502```503 504## Cost optimization505 506### Choose right GPU507 508| Task | Recommended GPU |509|------|-----------------|510| LLM fine-tuning (7B) | A100 40GB |511| LLM fine-tuning (70B) | 8x H100 |512| Inference | A10, A6000 |513| Development | V100, A10 |514| Maximum performance | B200 |515 516### Reduce costs517 5181. **Use filesystems**: Avoid re-downloading data5192. **Checkpoint frequently**: Resume interrupted training5203. **Right-size**: Don't over-provision GPUs5214. **Terminate idle**: No auto-stop, manually terminate522 523### Monitor usage524 525- Dashboard shows real-time GPU utilization526- API for programmatic monitoring527 528## Common issues529 530| Issue | Solution |531|-------|----------|532| Instance won't launch | Check region availability, try different GPU |533| SSH connection refused | Wait for instance to initialize (3-15 min) |534| Data lost after terminate | Use persistent filesystems |535| Slow data transfer | Use filesystem in same region |536| GPU not detected | Reboot instance, check drivers |537 538## References539 540- **[Advanced Usage](references/advanced-usage.md)** - Multi-node training, API automation541- **[Troubleshooting](references/troubleshooting.md)** - Common issues and solutions542 543## Resources544 545- **Documentation**: https://docs.lambda.ai546- **Console**: https://cloud.lambda.ai547- **Pricing**: https://lambda.ai/instances548- **Support**: https://support.lambdalabs.com549- **Blog**: https://lambda.ai/blog550 Discovery context
Discovered by repository scan. No exact path reference found in the snapshot’s root AGENTS.md.