[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CC51GYCSG7M17KM10HCXPD":3,"skill-same:01M6CC51GYCSG7M17KM10HCXPD":91},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":37,"linkOnly":38,"markdownContent":39,"markdownBody":40,"frontMatter":41,"refName":52,"commitSha":53,"skillDirectory":54,"forksCount":55,"repositoryHtmlUrl":56,"repositoryHomepageUrl":6,"ownerHtmlUrl":57,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":58,"install":59,"resources":72},"01M6CC51GYCSG7M17KM10HCXPD","skypilot-multi-cloud-orchestration",null,"Multi-cloud orchestration for ML workloads with automatic cost optimization. Use when you need to run training or batch jobs across multiple clouds, leverage spot instances with auto-recovery, or optimize GPU costs across providers.","ray-manaloto\u002Fmacos-development-environment","ray-manaloto","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F227192835?v=4","01M6CBR7J13ZA01X5YB1A1QRJP","01M6CBR7P0S3NS8ZV81JYNST14",1,"MIT","https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fskypilot\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36],"cloud","skypilot multi cloud orchestration","SkyPilot","orchestration","ml","infrastructure","training","run","gpu","batch","research","Optimization","Providers","multi-cloud","recovery","use","auto","cost","cost optimization","2026-11-10 10:12:30",false,"---\nname: skypilot-multi-cloud-orchestration\ndescription: Multi-cloud orchestration for ML workloads with automatic cost optimization. Use when you need to run training or batch jobs across multiple clouds, leverage spot instances with auto-recovery, or optimize GPU costs across providers.\nversion: 1.0.0\nauthor: Orchestra Research\nlicense: MIT\ntags: [Infrastructure, Multi-Cloud, Orchestration, GPU, Cost Optimization, SkyPilot]\ndependencies: [skypilot>=0.7.0]\n---\n\n# SkyPilot Multi-Cloud Orchestration\n\nComprehensive guide to running ML workloads across clouds with automatic cost optimization using SkyPilot.\n\n## When to use SkyPilot\n\n**Use SkyPilot when:**\n- Running ML workloads across multiple clouds (AWS, GCP, Azure, etc.)\n- Need cost optimization with automatic cloud\u002Fregion selection\n- Running long jobs on spot instances with auto-recovery\n- Managing distributed multi-node training\n- Want unified interface for 20+ cloud providers\n- Need to avoid vendor lock-in\n\n**Key features:**\n- **Multi-cloud**: AWS, GCP, Azure, Kubernetes, Lambda, RunPod, 20+ providers\n- **Cost optimization**: Automatic cheapest cloud\u002Fregion selection\n- **Spot instances**: 3-6x cost savings with automatic recovery\n- **Distributed training**: Multi-node jobs with gang scheduling\n- **Managed jobs**: Auto-recovery, checkpointing, fault tolerance\n- **Sky Serve**: Model serving with autoscaling\n\n**Use alternatives instead:**\n- **Modal**: For simpler serverless GPU with Python-native API\n- **RunPod**: For single-cloud persistent pods\n- **Kubernetes**: For existing K8s infrastructure\n- **Ray**: For pure Ray-based orchestration\n\n## Quick start\n\n### Installation\n\n```bash\npip install \"skypilot[aws,gcp,azure,kubernetes]\"\n\n# Verify cloud credentials\nsky check\n```\n\n### Hello World\n\nCreate `hello.yaml`:\n```yaml\nresources:\n  accelerators: T4:1\n\nrun: |\n  nvidia-smi\n  echo \"Hello from SkyPilot!\"\n```\n\nLaunch:\n```bash\nsky launch -c hello hello.yaml\n\n# SSH to cluster\nssh hello\n\n# Terminate\nsky down hello\n```\n\n## Core concepts\n\n### Task YAML structure\n\n```yaml\n# Task name (optional)\nname: my-task\n\n# Resource requirements\nresources:\n  cloud: aws              # Optional: auto-select if omitted\n  region: us-west-2       # Optional: auto-select if omitted\n  accelerators: A100:4    # GPU type and count\n  cpus: 8+                # Minimum CPUs\n  memory: 32+             # Minimum memory (GB)\n  use_spot: true          # Use spot instances\n  disk_size: 256          # Disk size (GB)\n\n# Number of nodes for distributed training\nnum_nodes: 2\n\n# Working directory (synced to ~\u002Fsky_workdir)\nworkdir: .\n\n# Setup commands (run once)\nsetup: |\n  pip install -r requirements.txt\n\n# Run commands\nrun: |\n  python train.py\n```\n\n### Key commands\n\n| Command | Purpose |\n|---------|---------|\n| `sky launch` | Launch cluster and run task |\n| `sky exec` | Run task on existing cluster |\n| `sky status` | Show cluster status |\n| `sky stop` | Stop cluster (preserve state) |\n| `sky down` | Terminate cluster |\n| `sky logs` | View task logs |\n| `sky queue` | Show job queue |\n| `sky jobs launch` | Launch managed job |\n| `sky serve up` | Deploy serving endpoint |\n\n## GPU configuration\n\n### Available accelerators\n\n```yaml\n# NVIDIA GPUs\naccelerators: T4:1\naccelerators: L4:1\naccelerators: A10G:1\naccelerators: L40S:1\naccelerators: A100:4\naccelerators: A100-80GB:8\naccelerators: H100:8\n\n# Cloud-specific\naccelerators: V100:4         # AWS\u002FGCP\naccelerators: TPU-v4-8       # GCP TPUs\n```\n\n### GPU fallbacks\n\n```yaml\nresources:\n  accelerators:\n    H100: 8\n    A100-80GB: 8\n    A100: 8\n  any_of:\n    - cloud: gcp\n    - cloud: aws\n    - cloud: azure\n```\n\n### Spot instances\n\n```yaml\nresources:\n  accelerators: A100:8\n  use_spot: true\n  spot_recovery: FAILOVER  # Auto-recover on preemption\n```\n\n## Cluster management\n\n### Launch and execute\n\n```bash\n# Launch new cluster\nsky launch -c mycluster task.yaml\n\n# Run on existing cluster (skip setup)\nsky exec mycluster another_task.yaml\n\n# Interactive SSH\nssh mycluster\n\n# Stream logs\nsky logs mycluster\n```\n\n### Autostop\n\n```yaml\nresources:\n  accelerators: A100:4\n  autostop:\n    idle_minutes: 30\n    down: true  # Terminate instead of stop\n```\n\n```bash\n# Set autostop via CLI\nsky autostop mycluster -i 30 --down\n```\n\n### Cluster status\n\n```bash\n# All clusters\nsky status\n\n# Detailed view\nsky status -a\n```\n\n## Distributed training\n\n### Multi-node setup\n\n```yaml\nresources:\n  accelerators: A100:8\n\nnum_nodes: 4  # 4 nodes × 8 GPUs = 32 GPUs total\n\nsetup: |\n  pip install torch torchvision\n\nrun: |\n  torchrun \\\n    --nnodes=$SKYPILOT_NUM_NODES \\\n    --nproc_per_node=$SKYPILOT_NUM_GPUS_PER_NODE \\\n    --node_rank=$SKYPILOT_NODE_RANK \\\n    --master_addr=$(echo \"$SKYPILOT_NODE_IPS\" | head -n1) \\\n    --master_port=12355 \\\n    train.py\n```\n\n### Environment variables\n\n| Variable | Description |\n|----------|-------------|\n| `SKYPILOT_NODE_RANK` | Node index (0 to num_nodes-1) |\n| `SKYPILOT_NODE_IPS` | Newline-separated IP addresses |\n| `SKYPILOT_NUM_NODES` | Total number of nodes |\n| `SKYPILOT_NUM_GPUS_PER_NODE` | GPUs per node |\n\n### Head-node-only execution\n\n```bash\nrun: |\n  if [ \"${SKYPILOT_NODE_RANK}\" == \"0\" ]; then\n    python orchestrate.py\n  fi\n```\n\n## Managed jobs\n\n### Spot recovery\n\n```bash\n# Launch managed job with spot recovery\nsky jobs launch -n my-job train.yaml\n```\n\n### Checkpointing\n\n```yaml\nname: training-job\n\nfile_mounts:\n  \u002Fcheckpoints:\n    name: my-checkpoints\n    store: s3\n    mode: MOUNT\n\nresources:\n  accelerators: A100:8\n  use_spot: true\n\nrun: |\n  python train.py \\\n    --checkpoint-dir \u002Fcheckpoints \\\n    --resume-from-latest\n```\n\n### Job management\n\n```bash\n# List jobs\nsky jobs queue\n\n# View logs\nsky jobs logs my-job\n\n# Cancel job\nsky jobs cancel my-job\n```\n\n## File mounts and storage\n\n### Local file sync\n\n```yaml\nworkdir: .\u002Fmy-project  # Synced to ~\u002Fsky_workdir\n\nfile_mounts:\n  \u002Fdata\u002Fconfig.yaml: .\u002Fconfig.yaml\n  ~\u002F.vimrc: ~\u002F.vimrc\n```\n\n### Cloud storage\n\n```yaml\nfile_mounts:\n  # Mount S3 bucket\n  \u002Fdatasets:\n    source: s3:\u002F\u002Fmy-bucket\u002Fdatasets\n    mode: MOUNT  # Stream from S3\n\n  # Copy GCS bucket\n  \u002Fmodels:\n    source: gs:\u002F\u002Fmy-bucket\u002Fmodels\n    mode: COPY  # Pre-fetch to disk\n\n  # Cached mount (fast writes)\n  \u002Foutputs:\n    name: my-outputs\n    store: s3\n    mode: MOUNT_CACHED\n```\n\n### Storage modes\n\n| Mode | Description | Best For |\n|------|-------------|----------|\n| `MOUNT` | Stream from cloud | Large datasets, read-heavy |\n| `COPY` | Pre-fetch to disk | Small files, random access |\n| `MOUNT_CACHED` | Cache with async upload | Checkpoints, outputs |\n\n## Sky Serve (Model Serving)\n\n### Basic service\n\n```yaml\n# service.yaml\nservice:\n  readiness_probe: \u002Fhealth\n  replica_policy:\n    min_replicas: 1\n    max_replicas: 10\n    target_qps_per_replica: 2.0\n\nresources:\n  accelerators: A100:1\n\nrun: |\n  python -m vllm.entrypoints.openai.api_server \\\n    --model meta-llama\u002FLlama-2-7b-chat-hf \\\n    --port 8000\n```\n\n```bash\n# Deploy\nsky serve up -n my-service service.yaml\n\n# Check status\nsky serve status\n\n# Get endpoint\nsky serve status my-service\n```\n\n### Autoscaling policies\n\n```yaml\nservice:\n  replica_policy:\n    min_replicas: 1\n    max_replicas: 10\n    target_qps_per_replica: 2.0\n    upscale_delay_seconds: 60\n    downscale_delay_seconds: 300\n  load_balancing_policy: round_robin\n```\n\n## Cost optimization\n\n### Automatic cloud selection\n\n```yaml\n# SkyPilot finds cheapest option\nresources:\n  accelerators: A100:8\n  # No cloud specified - auto-select cheapest\n```\n\n```bash\n# Show optimizer decision\nsky launch task.yaml --dryrun\n```\n\n### Cloud preferences\n\n```yaml\nresources:\n  accelerators: A100:8\n  any_of:\n    - cloud: gcp\n      region: us-central1\n    - cloud: aws\n      region: us-east-1\n    - cloud: azure\n```\n\n### Environment variables\n\n```yaml\nenvs:\n  HF_TOKEN: $HF_TOKEN  # Inherited from local env\n  WANDB_API_KEY: $WANDB_API_KEY\n\n# Or use secrets\nsecrets:\n  - HF_TOKEN\n  - WANDB_API_KEY\n```\n\n## Common workflows\n\n### Workflow 1: Fine-tuning with checkpoints\n\n```yaml\nname: llm-finetune\n\nfile_mounts:\n  \u002Fcheckpoints:\n    name: finetune-checkpoints\n    store: s3\n    mode: MOUNT_CACHED\n\nresources:\n  accelerators: A100:8\n  use_spot: true\n\nsetup: |\n  pip install transformers accelerate\n\nrun: |\n  python train.py \\\n    --checkpoint-dir \u002Fcheckpoints \\\n    --resume\n```\n\n### Workflow 2: Hyperparameter sweep\n\n```yaml\nname: hp-sweep-${RUN_ID}\n\nenvs:\n  RUN_ID: 0\n  LEARNING_RATE: 1e-4\n  BATCH_SIZE: 32\n\nresources:\n  accelerators: A100:1\n  use_spot: true\n\nrun: |\n  python train.py \\\n    --lr $LEARNING_RATE \\\n    --batch-size $BATCH_SIZE \\\n    --run-id $RUN_ID\n```\n\n```bash\n# Launch multiple jobs\nfor i in {1..10}; do\n  sky jobs launch sweep.yaml \\\n    --env RUN_ID=$i \\\n    --env LEARNING_RATE=$(python -c \"import random; print(10**random.uniform(-5,-3))\")\ndone\n```\n\n## Debugging\n\n```bash\n# SSH to cluster\nssh mycluster\n\n# View logs\nsky logs mycluster\n\n# Check job queue\nsky queue mycluster\n\n# View managed job logs\nsky jobs logs my-job\n```\n\n## Common issues\n\n| Issue | Solution |\n|-------|----------|\n| Quota exceeded | Request quota increase, try different region |\n| Spot preemption | Use `sky jobs launch` for auto-recovery |\n| Slow file sync | Use `MOUNT_CACHED` mode for outputs |\n| GPU not available | Use `any_of` for fallback clouds |\n\n## References\n\n- **[Advanced Usage](references\u002Fadvanced-usage.md)** - Multi-cloud, optimization, production patterns\n- **[Troubleshooting](references\u002Ftroubleshooting.md)** - Common issues and solutions\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Fdocs.skypilot.co\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fskypilot-org\u002Fskypilot\n- **Slack**: https:\u002F\u002Fslack.skypilot.co\n- **Examples**: https:\u002F\u002Fgithub.com\u002Fskypilot-org\u002Fskypilot\u002Ftree\u002Fmaster\u002Fexamples\n","# SkyPilot Multi-Cloud Orchestration\n\nComprehensive guide to running ML workloads across clouds with automatic cost optimization using SkyPilot.\n\n## When to use SkyPilot\n\n**Use SkyPilot when:**\n- Running ML workloads across multiple clouds (AWS, GCP, Azure, etc.)\n- Need cost optimization with automatic cloud\u002Fregion selection\n- Running long jobs on spot instances with auto-recovery\n- Managing distributed multi-node training\n- Want unified interface for 20+ cloud providers\n- Need to avoid vendor lock-in\n\n**Key features:**\n- **Multi-cloud**: AWS, GCP, Azure, Kubernetes, Lambda, RunPod, 20+ providers\n- **Cost optimization**: Automatic cheapest cloud\u002Fregion selection\n- **Spot instances**: 3-6x cost savings with automatic recovery\n- **Distributed training**: Multi-node jobs with gang scheduling\n- **Managed jobs**: Auto-recovery, checkpointing, fault tolerance\n- **Sky Serve**: Model serving with autoscaling\n\n**Use alternatives instead:**\n- **Modal**: For simpler serverless GPU with Python-native API\n- **RunPod**: For single-cloud persistent pods\n- **Kubernetes**: For existing K8s infrastructure\n- **Ray**: For pure Ray-based orchestration\n\n## Quick start\n\n### Installation\n\n```bash\npip install \"skypilot[aws,gcp,azure,kubernetes]\"\n\n# Verify cloud credentials\nsky check\n```\n\n### Hello World\n\nCreate `hello.yaml`:\n```yaml\nresources:\n  accelerators: T4:1\n\nrun: |\n  nvidia-smi\n  echo \"Hello from SkyPilot!\"\n```\n\nLaunch:\n```bash\nsky launch -c hello hello.yaml\n\n# SSH to cluster\nssh hello\n\n# Terminate\nsky down hello\n```\n\n## Core concepts\n\n### Task YAML structure\n\n```yaml\n# Task name (optional)\nname: my-task\n\n# Resource requirements\nresources:\n  cloud: aws              # Optional: auto-select if omitted\n  region: us-west-2       # Optional: auto-select if omitted\n  accelerators: A100:4    # GPU type and count\n  cpus: 8+                # Minimum CPUs\n  memory: 32+             # Minimum memory (GB)\n  use_spot: true          # Use spot instances\n  disk_size: 256          # Disk size (GB)\n\n# Number of nodes for distributed training\nnum_nodes: 2\n\n# Working directory (synced to ~\u002Fsky_workdir)\nworkdir: .\n\n# Setup commands (run once)\nsetup: |\n  pip install -r requirements.txt\n\n# Run commands\nrun: |\n  python train.py\n```\n\n### Key commands\n\n| Command | Purpose |\n|---------|---------|\n| `sky launch` | Launch cluster and run task |\n| `sky exec` | Run task on existing cluster |\n| `sky status` | Show cluster status |\n| `sky stop` | Stop cluster (preserve state) |\n| `sky down` | Terminate cluster |\n| `sky logs` | View task logs |\n| `sky queue` | Show job queue |\n| `sky jobs launch` | Launch managed job |\n| `sky serve up` | Deploy serving endpoint |\n\n## GPU configuration\n\n### Available accelerators\n\n```yaml\n# NVIDIA GPUs\naccelerators: T4:1\naccelerators: L4:1\naccelerators: A10G:1\naccelerators: L40S:1\naccelerators: A100:4\naccelerators: A100-80GB:8\naccelerators: H100:8\n\n# Cloud-specific\naccelerators: V100:4         # AWS\u002FGCP\naccelerators: TPU-v4-8       # GCP TPUs\n```\n\n### GPU fallbacks\n\n```yaml\nresources:\n  accelerators:\n    H100: 8\n    A100-80GB: 8\n    A100: 8\n  any_of:\n    - cloud: gcp\n    - cloud: aws\n    - cloud: azure\n```\n\n### Spot instances\n\n```yaml\nresources:\n  accelerators: A100:8\n  use_spot: true\n  spot_recovery: FAILOVER  # Auto-recover on preemption\n```\n\n## Cluster management\n\n### Launch and execute\n\n```bash\n# Launch new cluster\nsky launch -c mycluster task.yaml\n\n# Run on existing cluster (skip setup)\nsky exec mycluster another_task.yaml\n\n# Interactive SSH\nssh mycluster\n\n# Stream logs\nsky logs mycluster\n```\n\n### Autostop\n\n```yaml\nresources:\n  accelerators: A100:4\n  autostop:\n    idle_minutes: 30\n    down: true  # Terminate instead of stop\n```\n\n```bash\n# Set autostop via CLI\nsky autostop mycluster -i 30 --down\n```\n\n### Cluster status\n\n```bash\n# All clusters\nsky status\n\n# Detailed view\nsky status -a\n```\n\n## Distributed training\n\n### Multi-node setup\n\n```yaml\nresources:\n  accelerators: A100:8\n\nnum_nodes: 4  # 4 nodes × 8 GPUs = 32 GPUs total\n\nsetup: |\n  pip install torch torchvision\n\nrun: |\n  torchrun \\\n    --nnodes=$SKYPILOT_NUM_NODES \\\n    --nproc_per_node=$SKYPILOT_NUM_GPUS_PER_NODE \\\n    --node_rank=$SKYPILOT_NODE_RANK \\\n    --master_addr=$(echo \"$SKYPILOT_NODE_IPS\" | head -n1) \\\n    --master_port=12355 \\\n    train.py\n```\n\n### Environment variables\n\n| Variable | Description |\n|----------|-------------|\n| `SKYPILOT_NODE_RANK` | Node index (0 to num_nodes-1) |\n| `SKYPILOT_NODE_IPS` | Newline-separated IP addresses |\n| `SKYPILOT_NUM_NODES` | Total number of nodes |\n| `SKYPILOT_NUM_GPUS_PER_NODE` | GPUs per node |\n\n### Head-node-only execution\n\n```bash\nrun: |\n  if [ \"${SKYPILOT_NODE_RANK}\" == \"0\" ]; then\n    python orchestrate.py\n  fi\n```\n\n## Managed jobs\n\n### Spot recovery\n\n```bash\n# Launch managed job with spot recovery\nsky jobs launch -n my-job train.yaml\n```\n\n### Checkpointing\n\n```yaml\nname: training-job\n\nfile_mounts:\n  \u002Fcheckpoints:\n    name: my-checkpoints\n    store: s3\n    mode: MOUNT\n\nresources:\n  accelerators: A100:8\n  use_spot: true\n\nrun: |\n  python train.py \\\n    --checkpoint-dir \u002Fcheckpoints \\\n    --resume-from-latest\n```\n\n### Job management\n\n```bash\n# List jobs\nsky jobs queue\n\n# View logs\nsky jobs logs my-job\n\n# Cancel job\nsky jobs cancel my-job\n```\n\n## File mounts and storage\n\n### Local file sync\n\n```yaml\nworkdir: .\u002Fmy-project  # Synced to ~\u002Fsky_workdir\n\nfile_mounts:\n  \u002Fdata\u002Fconfig.yaml: .\u002Fconfig.yaml\n  ~\u002F.vimrc: ~\u002F.vimrc\n```\n\n### Cloud storage\n\n```yaml\nfile_mounts:\n  # Mount S3 bucket\n  \u002Fdatasets:\n    source: s3:\u002F\u002Fmy-bucket\u002Fdatasets\n    mode: MOUNT  # Stream from S3\n\n  # Copy GCS bucket\n  \u002Fmodels:\n    source: gs:\u002F\u002Fmy-bucket\u002Fmodels\n    mode: COPY  # Pre-fetch to disk\n\n  # Cached mount (fast writes)\n  \u002Foutputs:\n    name: my-outputs\n    store: s3\n    mode: MOUNT_CACHED\n```\n\n### Storage modes\n\n| Mode | Description | Best For |\n|------|-------------|----------|\n| `MOUNT` | Stream from cloud | Large datasets, read-heavy |\n| `COPY` | Pre-fetch to disk | Small files, random access |\n| `MOUNT_CACHED` | Cache with async upload | Checkpoints, outputs |\n\n## Sky Serve (Model Serving)\n\n### Basic service\n\n```yaml\n# service.yaml\nservice:\n  readiness_probe: \u002Fhealth\n  replica_policy:\n    min_replicas: 1\n    max_replicas: 10\n    target_qps_per_replica: 2.0\n\nresources:\n  accelerators: A100:1\n\nrun: |\n  python -m vllm.entrypoints.openai.api_server \\\n    --model meta-llama\u002FLlama-2-7b-chat-hf \\\n    --port 8000\n```\n\n```bash\n# Deploy\nsky serve up -n my-service service.yaml\n\n# Check status\nsky serve status\n\n# Get endpoint\nsky serve status my-service\n```\n\n### Autoscaling policies\n\n```yaml\nservice:\n  replica_policy:\n    min_replicas: 1\n    max_replicas: 10\n    target_qps_per_replica: 2.0\n    upscale_delay_seconds: 60\n    downscale_delay_seconds: 300\n  load_balancing_policy: round_robin\n```\n\n## Cost optimization\n\n### Automatic cloud selection\n\n```yaml\n# SkyPilot finds cheapest option\nresources:\n  accelerators: A100:8\n  # No cloud specified - auto-select cheapest\n```\n\n```bash\n# Show optimizer decision\nsky launch task.yaml --dryrun\n```\n\n### Cloud preferences\n\n```yaml\nresources:\n  accelerators: A100:8\n  any_of:\n    - cloud: gcp\n      region: us-central1\n    - cloud: aws\n      region: us-east-1\n    - cloud: azure\n```\n\n### Environment variables\n\n```yaml\nenvs:\n  HF_TOKEN: $HF_TOKEN  # Inherited from local env\n  WANDB_API_KEY: $WANDB_API_KEY\n\n# Or use secrets\nsecrets:\n  - HF_TOKEN\n  - WANDB_API_KEY\n```\n\n## Common workflows\n\n### Workflow 1: Fine-tuning with checkpoints\n\n```yaml\nname: llm-finetune\n\nfile_mounts:\n  \u002Fcheckpoints:\n    name: finetune-checkpoints\n    store: s3\n    mode: MOUNT_CACHED\n\nresources:\n  accelerators: A100:8\n  use_spot: true\n\nsetup: |\n  pip install transformers accelerate\n\nrun: |\n  python train.py \\\n    --checkpoint-dir \u002Fcheckpoints \\\n    --resume\n```\n\n### Workflow 2: Hyperparameter sweep\n\n```yaml\nname: hp-sweep-${RUN_ID}\n\nenvs:\n  RUN_ID: 0\n  LEARNING_RATE: 1e-4\n  BATCH_SIZE: 32\n\nresources:\n  accelerators: A100:1\n  use_spot: true\n\nrun: |\n  python train.py \\\n    --lr $LEARNING_RATE \\\n    --batch-size $BATCH_SIZE \\\n    --run-id $RUN_ID\n```\n\n```bash\n# Launch multiple jobs\nfor i in {1..10}; do\n  sky jobs launch sweep.yaml \\\n    --env RUN_ID=$i \\\n    --env LEARNING_RATE=$(python -c \"import random; print(10**random.uniform(-5,-3))\")\ndone\n```\n\n## Debugging\n\n```bash\n# SSH to cluster\nssh mycluster\n\n# View logs\nsky logs mycluster\n\n# Check job queue\nsky queue mycluster\n\n# View managed job logs\nsky jobs logs my-job\n```\n\n## Common issues\n\n| Issue | Solution |\n|-------|----------|\n| Quota exceeded | Request quota increase, try different region |\n| Spot preemption | Use `sky jobs launch` for auto-recovery |\n| Slow file sync | Use `MOUNT_CACHED` mode for outputs |\n| GPU not available | Use `any_of` for fallback clouds |\n\n## References\n\n- **[Advanced Usage](references\u002Fadvanced-usage.md)** - Multi-cloud, optimization, production patterns\n- **[Troubleshooting](references\u002Ftroubleshooting.md)** - Common issues and solutions\n\n## Resources\n\n- **Documentation**: https:\u002F\u002Fdocs.skypilot.co\n- **GitHub**: https:\u002F\u002Fgithub.com\u002Fskypilot-org\u002Fskypilot\n- **Slack**: https:\u002F\u002Fslack.skypilot.co\n- **Examples**: https:\u002F\u002Fgithub.com\u002Fskypilot-org\u002Fskypilot\u002Ftree\u002Fmaster\u002Fexamples\n",{"name":5,"tags":42,"author":48,"license":14,"version":49,"description":7,"dependencies":50},[43,44,45,46,47,20],"Infrastructure","Multi-Cloud","Orchestration","GPU","Cost Optimization","Orchestra Research","1.0.0",[51],"skypilot>=0.7.0","main","716b17df3ef6719d88aeac180015008b7ddfff6f",".cursor\u002Fskills\u002Fskypilot",0,"https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment","https:\u002F\u002Fgithub.com\u002Fray-manaloto","2026-08-03 16:55:50",{"source":8,"skillName":5,"commands":60,"prompt":70,"zipAvailable":71},[61,64,67],{"tool":62,"command":63},"npx","npx skills add ray-manaloto\u002Fmacos-development-environment --skill skypilot-multi-cloud-orchestration",{"tool":65,"command":66},"bunx","bunx skills add ray-manaloto\u002Fmacos-development-environment --skill skypilot-multi-cloud-orchestration",{"tool":68,"command":69},"pnpm","pnpm dlx skills add ray-manaloto\u002Fmacos-development-environment --skill skypilot-multi-cloud-orchestration","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fskypilot\u002FSKILL.md",true,[73,79,83,87],{"path":74,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":77,"sourceHtmlUrl":78},"references\u002Fadvanced-usage.md","REFERENCE","参考文档",7469,"https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fskypilot\u002Freferences\u002Fadvanced-usage.md",{"path":80,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":81,"sourceHtmlUrl":82},"references\u002Ftroubleshooting.md",10493,"https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002F.cursor\u002Fskills\u002Fskypilot\u002Freferences\u002Ftroubleshooting.md",{"path":84,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":85,"sourceHtmlUrl":86},"SOURCE.md",194,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdefi\u002Fmarinade-agent\u002FSOURCE.md",{"path":88,"resourceType":75,"resourceTypeDesc":76,"sizeBytes":89,"sourceHtmlUrl":90},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fdefi\u002Fmarinade-agent\u002FTRUST.auto.yaml",[92,114,131,150,170,184],{"skillNo":93,"name":94,"nameZh":6,"description":95,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":96,"categories":97,"keywords":103,"publishedAt":37},"01M6CC8DXNJ39YWERYTWCGGCGG","next-workflow-step","Use this skill when the user wants to transition to the next workflow step, wrap up a session cleanly, prepare a handoff, or says things like \"next step\", \"continue the workflow\", \"wrap up\", \"hand off\", \"move to the next phase\", \"what's next in embrace\", or \"prepare for \u002Fclear\". Also triggers when the current octo:embrace phase appears complete and no explicit next action is set.","https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002Frsm-subagents\u002Fplugins\u002Fworkflow-toolkit\u002Fskills\u002Fnext-workflow-step\u002FSKILL.md",[98],{"categoryNo":99,"categoryName":100,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[104,105,106,33,107,108,109,110,111,112,113],"next workflow step","workflow","up","session","user","wrap up","continue","handoff","prepare","SET",{"skillNo":115,"name":116,"nameZh":6,"description":117,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":118,"categories":119,"keywords":120,"publishedAt":37},"01M6CC8BRZBQHEBXGMKPDM422P","source-discovery","This skill should be used when the user asks to \"find sources\", \"discover URLs\", \"catalog a source\", \"classify a URL\", \"search for libraries\", \"check what exists\", or mentions source discovery, URL cataloging, source classification, or research source management.","https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002Frsm-subagents\u002Fplugins\u002Fresearch-review-toolkit\u002Fskills\u002Fsource-discovery\u002FSKILL.md",[],[121,122,28,123,124,125,126,127,128,108,129,130],"discovery","source discovery","libraries","search","classification","find","check","management","catalog","find sources",{"skillNo":132,"name":133,"nameZh":6,"description":134,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":135,"categories":136,"keywords":137,"publishedAt":37},"01M6CC89CGJP69A0PS22G2H1FV","review-synthesis","This skill should be used when the user asks to \"summarize review findings\", \"prioritize fixes\", \"rank review issues\", \"combine reviewer feedback\", \"create action items from review\", or mentions review synthesis, finding prioritization, severity ranking, or review result summarization.","https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002Frsm-subagents\u002Fplugins\u002Fresearch-review-toolkit\u002Fskills\u002Freview-synthesis\u002FSKILL.md",[],[138,139,140,141,142,143,144,108,145,146,147,148,149],"review","review synthesis","Synthesis","prioritize","create action","feedback","reviewer","summarize","prioritization","create","issues","severity",{"skillNo":151,"name":152,"nameZh":6,"description":153,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":154,"categories":155,"keywords":159,"publishedAt":37},"01M6CC872EZ9GRJY0HRCG0RT2M","research-scoring","This skill should be used when the user asks to \"score research\", \"check research quality\", \"evaluate coverage\", \"measure improvement\", \"assess research completeness\", or mentions research scoring, quality metrics, coverage gaps, improvement baseline, or research pipeline status.","https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002Frsm-subagents\u002Fplugins\u002Fresearch-review-toolkit\u002Fskills\u002Fresearch-scoring\u002FSKILL.md",[156],{"categoryNo":157,"categoryName":158,"taxonomyType":101,"taxonomyTypeDesc":102},"01JBSEEDCAT000000000000021","资料检索与研究",[160,28,161,162,163,164,165,166,127,108,167,168,169],"research scoring","status","coverage gaps","metrics","pipeline","baseline","quality","coverage","pipeline status","research quality",{"skillNo":171,"name":172,"nameZh":6,"description":173,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":174,"categories":175,"keywords":176,"publishedAt":37},"01M6CC852HSDS1FE4EJAT0RHGR","notebooklm-integration","This skill should be used when the user asks to \"ingest into NotebookLM\", \"query NotebookLM\", \"add sources to notebook\", \"cross-source synthesis\", \"check stale sources\", or mentions NotebookLM, notebook integration, source ingestion, or knowledge consolidation.","https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002Frsm-subagents\u002Fplugins\u002Fresearch-review-toolkit\u002Fskills\u002Fnotebooklm-integration\u002FSKILL.md",[],[177,178,179,180,127,108,181,182,183,140],"notebooklm integration","notebooklm","integration","knowledge","ingestion","ingest","stale",{"skillNo":185,"name":186,"nameZh":6,"description":187,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":188,"categories":189,"keywords":191,"publishedAt":37},"01M6CC82Z4V3205KCJWQZPS2VG","evidence-synthesis","This skill should be used when the user asks to \"synthesize findings\", \"combine research\", \"cross-reference sources\", \"summarize evidence\", \"write a deep review\", or mentions evidence synthesis, finding consolidation, cross-source analysis, or research summarization.","https:\u002F\u002Fgithub.com\u002Fray-manaloto\u002Fmacos-development-environment\u002Fblob\u002Fmain\u002Frsm-subagents\u002Fplugins\u002Fresearch-review-toolkit\u002Fskills\u002Fevidence-synthesis\u002FSKILL.md",[190],{"categoryNo":157,"categoryName":158,"taxonomyType":101,"taxonomyTypeDesc":102},[192,140,193,145,28,194,195,196,108,197,138],"evidence synthesis","evidence","deep review","analysis","write","reference"]