SkyPilot 实战指南:用三大抽象与 Task YAML 驾驭 25+ 云、Kubernetes 与 Slurm 上的 AI 工作负载

发布时间:2026/9/15 23:09:02

SkyPilot 实战指南:用三大抽象与 Task YAML 驾驭 25+ 云、Kubernetes 与 Slurm 上的 AI 工作负载 SkyPilot 实战指南用三大抽象与 Task YAML 驾驭 25 云、Kubernetes 与 Slurm 上的 AI 工作负载【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilotSkyPilot 是一套统一框架用同一种 YAML 与命令行接口在 25 朵云AWS、GCP、Azure、Coreweave、Nebius、Lambda、Together AI、RunPod 等、Kubernetes 集群和 Slurm 集群上启动集群、运行任务、托管模型。本文基于仓库中 agent/skills/skypilot/SKILL.md 及其参考文档整理而成面向需要用代码批量调度 GPU 资源的开发者与 Agent 开发者读完你能够判断什么场景该用 SkyPilot、按阶段选择正确抽象集群 / Managed Jobs / SkyServe、写出可复制的任务 YAML、理解多云故障切换与成本优化的底层机制并把存量 Slurm 负载迁移到 SkyPilot。何时使用 SkyPilot适合用 SkyPilot 的场景在任意云、Slurm 或 Kubernetes 集群上管理计算资源在任何云 / K8s / Slurm 上拉起 CPU / GPU / TPUGB300、GB200、B200、H200、H100 等实例运行训练、微调或批量推理任务用自动伸缩与多云副本托管模型SkyServe运行带自动生命周期管理与恢复的长时任务Managed Jobs跨云寻找最便宜或最易获得的 GPU。不适合的场景仅限本地的负载直接用 Docker / conda。三大核心抽象按工作流阶段选对工具SkyPilot 围绕三个核心抽象设计对应开发、训练、生产三个阶段1. SkyPilot Clusterssky launch/sky exec——交互式开发与调试用于初期开发、调试与实验启动一个集群SSH 进入或连接 VSCode/Cursorcode --remote ssh-remoteCLUSTER快速迭代集群在你sky stop/sky down或 autostop 触发前持续运行最适合原型开发、调试、短实验。2. Managed Jobssky jobs launch——长时训练与批量任务用于提交无需人工看护的长时任务管理完整生命周期供给provisioning、执行、恢复、销毁自动从 spot 抢占、配额限制和瞬时故障中恢复跨云、Kubernetes 和 Slurm 工作可处理抢占与配额最适合训练、微调、超参搜索、批量推理。3. SkyServesky serve up——生产级模型托管用于大规模带自动伸缩的模型托管可先用sky launch 开放端口验证 serving 配置再改用sky serve up扩容提供负载均衡、自动伸缩和多云副本最适合模型推理端点、API 服务。环境引导启动前的三步检查对 Agent 或首次使用的用户按以下顺序确认 SkyPilot 已安装、已连接 API server、已有云凭据确认后即可直接进入任务。Step 1检查安装与 API server 连通性sky api info输出内容含义下一步Server 版本与状态Server 正常运行并已连接引导完成直接进入任务No SkyPilot API server is connected未连接 server进入启动或连接 serverCould not connect to SkyPilot API server远程 server 不可达或认证过期告知用户建议sky api login --relogin -e endpoint重连command not found: sky未安装 SkyPilot进入安装 SkyPilot安装 SkyPilot仅当sky命令不存在时pip install skypilot[aws,gcp,kubernetes] # 按用户所需云选择 extras不确定用户需要哪些云时先询问然后重新运行sky api info。启动或连接 server仅当 server 未运行时询问用户是否有现成的 SkyPilot API server 可连接还是需要本地启动一个。连接已有 serversky api login -e API_SERVER_URLURL 由用户提供本地启动sky api start。完成任一路径后重新运行sky api info确认可达。sky api start默认绑定 127.0.0.1:46580如需远程访问可参考 CLI Reference 中的--host 0.0.0.0、--port等选项。Step 2检查云凭据仅全新环境若 server 已在运行可跳过sky check -o json该命令显示哪些云启用/禁用。若用户目标云未启用指导其完成凭据配置参见 Troubleshooting。从源码角度看sky check的核心逻辑位于 sky/check.py它逐云检测凭据与依赖并给出enabled/disabled及原因输出同样支持-o json结构化解析见 CLI Reference。核心命令速查状态/查询类命令统一加-o json获取结构化 JSON 而非表格便于脚本与 Agent 解析。Clusters——交互式开发与调试命令说明sky launch -c NAME task.yaml启动一个集群或运行一个任务sky exec NAME task.yaml在已有集群上运行任务跳过供给每次都会重新同步 workdirsky exec NAME task.yaml -d同上但立即返回不流式输出日志sky status -o json显示所有集群sky logs NAME流式查看集群上的任务日志sky logs NAME --no-follow打印已有日志后立即退出sky logs NAME --tail 50打印最后 50 行日志后退出sky logs NAME --status以退出码表达任务状态0成功100失败101未结束102不存在103已取消sky queue NAME -o json列出集群上的任务及状态结构化 JSONsky stop NAME/sky start NAME停止/重启以节省成本保留磁盘sky down NAME彻底销毁集群sky gpus list -o json跨云列出可用 GPU 类型Managed Jobs——长时无人值守负载命令说明sky jobs launch task.yaml启动一个 Managed Job自动生命周期 恢复sky jobs queue -o json显示所有 Managed Job 及其状态sky jobs logs JOB_ID流式查看 Managed Job 日志sky jobs cancel JOB_ID取消 Managed JobSkyServe——带自动伸缩的模型托管命令说明sky serve up serve.yaml -n NAME启动模型托管服务sky serve status NAME显示服务状态与端点 URLsky serve update NAME new.yaml滚动更新运行中的服务sky serve down NAME销毁服务完整命令与全部参数见 CLI Reference。快速上手# 启动一个 GPU 集群 sky launch -c mycluster --gpus H100 -- nvidia-smi # 从 YAML 运行任务 sky launch -c mycluster task.yaml # SSH 进入集群 ssh mycluster # 连接 VSCode 或 Cursor 做交互式开发 code --remote ssh-remotemycluster /home/user/sky_workdir # 或cursor --remote ssh-remotemycluster /home/user/sky_workdir # 销毁 sky down mycluster--gpus支持V100:8、V100等价于 1 张甚至小数V100:0.5调度框架支持分数 GPU见 CLI Reference。Task YAML 结构详解Task YAML 是 SkyPilot 的主接口所有字段均可选未指定时使用默认值。完整 schema 见 YAML Specification。# task.yaml name: my-training-job # 同步到远端 ~/sky_workdir 的本地目录 workdir: . # 节点数分布式训练用 num_nodes: 1 resources: # GPU/TPU 加速器SkyPilot 自动选择最便宜的云/区域 accelerators: H200:8 # 可选锁定特定云/区域/基础设施 # infra: aws # 或 aws/us-east-1、k8s、ssh/my-pool # 若不写 infraSkyPilot 自动在全部已启用云/区域间故障切换 # 找到最便宜的可用选项。 # 使用 spot 实例节省成本 use_spot: false # 磁盘大小GB disk_size: 256 # 为服务开放端口 ports: 8080 # 环境变量在 file_mounts、setup、run 中均可访问 envs: MODEL_NAME: my-model BATCH_SIZE: 32 # setup集群创建时执行一次复用集群时被缓存 setup: | pip install torch transformers # run主命令 run: | python train.py --model $MODEL_NAME --batch-size $BATCH_SIZE常用 resources 字段节选acceleratorsname:count如H100:4也可写有序列表[L4:1, H100:1, A100:1]按顺序尝试或无序集合{A100:1, V100:1}一起优化、优先最便宜。infracloud/region/zoneregion/zone 可选k8s/context-name亦支持各分量支持通配符*如aws/*/us-east-1a。cpus/memory4表示至少 4 个 vCPU、32表示至少 32 GiB64GB、1024MB等带单位写法同样支持。use_spot默认false按需实例true使用 spot/preemptible 实例通常可显著降低成本。disk_size/disk_tierOS 磁盘大小GB 或带单位磁盘档位low/medium/high/ultra/best默认medium。注意在 Kubernetes 上它映射为 pod 的resources.requests.ephemeral-storage见 yaml-spec.md。network_tierstandard默认或best。best会启用高性能互联——AWS 上启用 EFA、GCP 上启用 GPUDirect-TCPX/TCPXO/RDMA、Nebius 上启用 InfiniBandKubernetes 侧对 EKS/HyperPod、GKE、CoreWeave CKS、Nebius 等 context 亦有对应支持详见 yaml-spec.md。max_hourly_cost按小时成本上限过滤实例use_spot: true时对 spot 价格生效。ports整数、范围10052-10100或列表自动添加防火墙/入站规则仅支持 TCP。集群端口在每次sky launch时更新旧端口防火墙规则在集群终止前不会移除。labels应用于实例的标签AWS 映射为 tag、GCP 映射为 label、Kubernetes 映射为 pod label仅首次 launch 时应用。autostoptrue默认 5 分钟、数字分钟、带单位10h或对象{idle_minutes, down, wait_for}wait_for可选jobs_and_ssh默认/jobs/none。envs 与 secretsenvs中的值可在file_mounts、setup、run中引用并可用 CLI 覆盖sky launch/exec --env KEYval。secrets与 envs 类似但只能在 setup/run 中使用且在日志与 dashboard 中会被脱敏可用--secret SECRETval覆盖。仓库 examples/ 中有大量组合范例例如 examples/managed_job_with_storage.yaml 演示了 envs file_mounts managed job 的组合用法。file_mounts 与 volumesfile_mounts支持本地路径 → 远端路径rsync 同步source: s3://...的对象存储三种模式MOUNT默认FUSE 流式挂载按需读取磁盘占用小COPYsetup 时全量下载支持读写修改MOUNT_CACHED带本地缓存rclone的挂载适合重复访问可配合type预调优工作负载类型MODEL_CHECKPOINT_RO/RW、DATASET_RO/RW。volumes用于 Kubernetes 上的持久/临时卷与 Slurm 容器的主机路径绑定。完整说明与可复制示例见 yaml-spec.md 与 examples.md。多文档 YAML流水线 / 任务组一个 YAML 内可用---分隔多个 task构成串行流水线在文件头声明execution: parallel则成为并行任务组job group。这一机制在 Slurm 迁移场景中用于替代--dependency链详见下文与 migrating-from-slurm.md。GPU 与云选择把选择权交给优化器关键原则让 SkyPilot 自己选云和区域不要手动解析sky gpus list输出去挑云/区域/机型。SkyPilot 的优化器会在所有已启用的云之间自动选择最便宜的可用选项。只有用户明确要求某个云或区域时才写infra:。默认行为推荐——只写 GPU 类型resources: accelerators: H200:8 # SkyPilot 自动挑选有 H200:8 的最便宜的云/区域如果用户没指定 GPU 类型先问清楚需要什么 GPU或要跑什么模型/负载以便给出建议。不要替用户运行sky gpus list并替他决定——把选项交给用户或用any_of让 SkyPilot 最大化可用性# 让 SkyPilot 从多个可接受 GPU 中挑选最便宜者胜出 resources: any_of: - accelerators: H100:8 - accelerators: A100-80GB:8 - accelerators: A100:8用户有严格偏好时才用ordered# 先在 AWS 尝试 H100回退到 GCP再回退到 A100 resources: ordered: - infra: aws/us-east-1 accelerators: H100:8 - infra: gcp/us-central1 accelerators: H100:8 - infra: aws/us-west-2 accelerators: A100-80GB:8仅当用户明确说用 AWS或跑在 GCP us-central1时才设置infra:resources: infra: aws # 用户明确要求 AWS accelerators: H100:8底层原理any_of表示候选集无序故障切换顺序由优化器决定倾向最便宜ordered表示严格按声明顺序故障切换见 yaml-spec.md。优化器会综合当前价格、可用性、配额等一起评估。若想先预览优化器会选哪朵云、哪个机型、什么价格而不真正供给资源用sky launch --dryrun task.yaml注意sky jobs launch没有--dryrun即使最终命令是 jobs launch 也要用sky launch做 dry-run。集群生命周期管理# 启动并运行任务 sky launch -c mycluster task.yaml # 启动时即设置 autostop推荐省成本无需后续命令 sky launch -c mycluster task.yaml -i 30 # 空闲 30 分钟后停止 sky launch -c mycluster task.yaml -i 30 --down # 空闲 30 分钟后销毁 # 通过 CLI 覆盖/传入环境变量 sky launch -c mycluster task.yaml --env MODEL_NAMEllama3 --env BATCH_SIZE64 # 在同一个集群上重跑不同任务快跳过供给 sky exec mycluster another_task.yaml # 运行内联命令 sky exec mycluster -- python train.py --epochs 10 # 启动后补设 autostop若启动时忘了 -i sky autostop mycluster -i 30 # 空闲 30 分钟后停止保留磁盘可 sky start 恢复 sky autostop mycluster -i 30 --down # 空闲 30 分钟后销毁磁盘删除不可恢复 # 停止省成本之后重启 sky stop mycluster sky start mycluster # 彻底销毁 sky down mycluster数据留存差异sky stop/sky start保留磁盘sky down删除磁盘两者都会重新同步 file_mounts 与 workdir写入云存储挂载file_mountsmode: MOUNT的桶的数据始终保留。需要跨sky down持久化的数据应写入云存储具体对照见 troubleshooting.md。Workdir 同步行为易踩坑workdir:在每次sky exec前通过rsync同步到远端~/sky_workdir。rsync 是增量式的——本地删除的文件不会从远端删除。这可能导致实验跑到过期的构建产物或旧配置上。确保干净状态在sky exec前先 SSH 清理ssh mycluster rm -rf ~/sky_workdir sky exec mycluster task.yaml或只在run:内清理特定产物run: | find ~/sky_workdir/build -name *.o -delete 2/dev/null || true cd ~/sky_workdir make若只想排除大文件/生成物可在 workdir 里使用.skyignore语法同.gitignoreSkyPilot 也遵循.gitignore减少同步体积例如排除data/、*.bin、wandb/见 troubleshooting.md。Managed Jobs长时任务的自动生命周期用sky jobs launch提交无需看护的长时任务。SkyPilot 管理完整生命周期——供给、执行、从抢占/配额/故障中恢复、销毁# managed-job.yaml name: training-job resources: accelerators: A100:8 run: | python train.py --resume-from-checkpoint# 以 Managed Job 启动 sky jobs launch managed-job.yaml # 查看状态 sky jobs queue -o json # 流式查看日志 sky jobs logs job_id # 取消 sky jobs cancel job_idCheckpoint 模式训练脚本应将 checkpoint 保存到持久存储云存储桶或卷重启时从最新 checkpoint 恢复。SkyPilot 负责集群层面的恢复你的脚本负责状态层面的恢复。一个完整范例是 examples/managed_job_with_storage.yaml持久化 checkpoint 桶 自动恢复。job_recovery 恢复策略EAGER_NEXT_REGION默认节点故障时直接去下一个区域。对 spot 实例很实用——实践中某区域发生抢占通常意味着该区域资源短缺。FAILOVER先在同一区域重启找不到资源才去下一区域。同时支持max_restarts_on_errors用户代码错误即非零退出码的最大重启次数和recover_on_exit_codes指定退出码总是触发恢复、不计入上述上限适合 NCCL 超时等已知瞬时错误。字段与默认值表见 yaml-spec.md。排查 Managed Jobdetails是答案当用户问我的任务在干什么 / 为什么 pending / 为什么失败时按顺序执行以下命令问题一有答案即停sky jobs queue -v -o json——-v会补充details、failure_reason等字段。对未启动的任务details就是答案它会说明集群在等什么例如 Slurm 的QOSGrpGRES或Dependency原因及其所在分区。sky jobs logs JOB_ID --tail 100 --no-follow—— 最近的任务输出加--controller看供给/恢复日志。details的常见形态与含义details含义下一步Waiting for other jobs to launchcontroller 到达并发启动上限无需处理持续时间列会显示等待时长Waiting for higher priority jobs to launch有更高优先级任务在前若本任务更重要可在 YAML 中调高priorityIn backoff, waiting for resources供给失败在重试sky jobs logs N --controller --no-follow显示上次失败原因Recovering: reason集群丢失或任务崩溃如 OOMKilled修复原因恢复是自动的Failure: reason终态失败阅读原因用sky jobs logs N --no-follow看任务输出Launching (pending: reason; partition: p)任务 STARTING 且 Slurm 尚未分配节点见下方 Slurm pending 原因Launching (nodes allocated; ...)排队结束正在引导无需处理Slurm 常见 pending 原因分类Resources/Priority→容量不足等配额QOSGrpGRES/QOSMax*→QoS/账号配额满Dependency→等待另一 Slurm 任务JobHeldUser/JobHeldAdmin→任务被 holdBeginTime→未到预定开始时间详见 job-investigation.md。环境变量分布式协调的接口SkyPilot 会在每个节点注入分布式协调所需的环境变量其注入逻辑可从源码确认SKYPILOT_NODE_IPS换行分隔的全部节点 IPhead 在前与SKYPILOT_NUM_GPUS_PER_NODE在 sky/backends/task_codegen.py 中写入任务环境SKYPILOT_JOB_RANKManaged Job 数组中的下标在 sky/jobs/controller.py 中注入SKYPILOT_NUM_JOBS在 sky/jobs/server/core.py 中设置SKYPILOT_TASK_ID在 sky/jobs/utils.py 中生成。变量说明SKYPILOT_NODE_IPS全部节点 IP换行分隔head 第一行SKYPILOT_NODE_RANK当前节点从 0 开始的序号head0SKYPILOT_NUM_NODES集群总节点数SKYPILOT_NUM_GPUS_PER_NODE当前节点 GPU 数SKYPILOT_JOB_RANK/SKYPILOT_NUM_JOBS仅--num-jobs时设置数组下标 / 总数SKYPILOT_TASK_ID任务 ID多节点 PyTorch DDP 的标准写法num_nodes: 2 resources: accelerators: A100:8 run: | HEAD_IP$(echo $SKYPILOT_NODE_IPS | head -n1) torchrun \ --nnodes$SKYPILOT_NUM_NODES \ --nproc_per_node$SKYPILOT_NUM_GPUS_PER_NODE \ --node_rank$SKYPILOT_NODE_RANK \ --master_addr$HEAD_IP \ --master_port12345 \ train_ddp.py注意setup和run会在所有节点执行需要 head-only 的逻辑如 DeepSpeed/Ray 协调器启动务必用if [ $SKYPILOT_NODE_RANK 0 ]包起来。DeepSpeed、FSDP、Ray Train、NCCL 调优的完整配置见 advanced-patterns.md。SkyServe模型托管与自动伸缩# serve.yaml resources: accelerators: A100:1 ports: 8080 run: | python -m vllm.entrypoints.openai.api_server \ --model meta-llama/Llama-3.1-8B-Instruct \ --port 8080 service: readiness_probe: /v1/models replica_policy: min_replicas: 1 max_replicas: 3 target_qps_per_replica: 5# 启动服务 sky serve up serve.yaml -n my-llm # 查看状态 / 获取端点 sky serve status my-llm sky serve status my-llm --endpoint # 滚动更新 sky serve update my-llm new-serve.yaml # 销毁 sky serve down my-llmservice 字段要点readiness_probe必需/v1/models字符串形式GET 默认参数或对象形式。对象支持path、post_data改为 POST 探活适合需要一次生成测试的 LLM、initial_delay_seconds默认 1200按服务启动时间设置、timeout_seconds默认 15、endpoint_probe_interval_seconds默认 10、consecutive_failure_threshold_timeout。探活返回 200 才开始路由流量。replica_policy与replicas二选一必需min_replicas必需、max_replicas不设则固定副本数、target_qps_per_replica设置了才启用自动伸缩、upscale_delay_seconds默认 300防激进扩容、downscale_delay_seconds默认 1200防激进缩容。replicas固定副本数的简化形式。load_balancer.stream_timeout_seconds负载均衡器等待代理响应流的最长时间默认 120。生产级能力还包括blue-green 更新sky serve update --mode blue_green、spot 副本 on-demand 兜底base_ondemand_fallback_replicas/dynamic_ondemand_fallback、TLS 终结service.tls、多实例感知负载均衡instance_aware_least_load、按 GPU 类型差异化 QPS 目标等见 advanced-patterns.md。常见工作流微调工作流编写含setup装依赖与run训练命令的任务 YAML用file_mounts或workdir同步代码sky launch -c train task.yaml启动sky logs train监控sky exec train -- python eval.py在同一集群上评估sky down train结束清理。超参扫描用envs编写参数化 YAML批量启动多个 Managed Jobfor lr in 1e-4 1e-5 1e-6; do sky jobs launch sweep.yaml --env LR$lr --name sweep-lr-$lr done用sky jobs queue -o json监控。每个 Job 独立供给、独立自动恢复见 advanced-patterns.md。模型服务部署编写带service:段的 serve YAMLsky serve up serve.yaml -n my-servicesky serve status my-service --endpoint获取端点更新模型sky serve update my-service updated.yaml。并行实验提交多 VM用sky exec -d向多台 VM 提交任务而不阻塞再收集结果# 提交全部实验detached排队后立即返回 for i in 1 2 3 4; do sky exec exp-vm-0$i task.yaml --env LR1e-$i -d done # 获取某集群最新 job id job_id$(sky queue exp-vm-01 -o json \ | python3 -c import sys, json; jobs json.load(sys.stdin).get(exp-vm-01, []); print(max(j[job_id] for j in jobs) if jobs else )) # 等待某任务完成并取最后 50 行 sky logs exp-vm-01 $job_id --status sky logs exp-vm-01 $job_id --tail 50 # 一次性查看集群上所有任务 sky queue exp-vm-01 -o json迁移存量 Slurm 负载当用户有现成sbatch脚本、salloc工作流或询问 Slurm 命令如何映射到 SkyPilot 时先读 Migrating from Slurm 再写任何 YAML。该映射有若干不易察觉的坑--time不映射到autostop——Slurm 上不支持 autostop应使用config.slurm.sbatch_options.time裸srun cmd通常应直接去掉而不是翻译——run本身就在每个节点执行只有 MPI/PMIx 启动器保留srun且需加--overlap和 rank-0 守卫--account/--qos/--exclusive等未建模的指令通过config.slurm.sbatch_options原样传给sbatchsbatch --array映射为sky jobs launch --num-jobs加$SKYPILOT_JOB_RANK而不是 shell 循环。#SBATCH指令映射速查#SBATCH指令SkyPilot YAML说明--nodes2num_nodes: 2任务级字段不在resources下--gpus-per-node8/--gresgpu:h100:8resources.accelerators: H100:8以--gresgpu:type:count发出名称须匹配集群 GRES 配置--cpus-per-task32resources.cpus: 32表示至少--mem256Gresources.memory: 256单位 GB--partitiongpuresources.infra: slurm/cluster/gpu省略则让优化器选分区--time24:00:00config.slurm.sbatch_options.time: 24:00:00不是autostop--job-nametrainname: train--output/--error不映射SkyPilot 管理任务日志其余--account、--qos等config.slurm.sbatch_options.key原样透传为#SBATCH行环境变量映射$SLURM_JOB_NODELIST→$SKYPILOT_NODE_IPS、$SLURM_NNODES→$SKYPILOT_NUM_NODES、$SLURM_NODEID/$SLURM_PROCID→$SKYPILOT_NODE_RANK、$SLURM_GPUS_PER_NODE→$SKYPILOT_NUM_GPUS_PER_NODE、$SLURM_JOB_ID→$SKYPILOT_TASK_ID、$SLURM_ARRAY_TASK_ID→$SKYPILOT_JOB_RANK、$SLURM_ARRAY_TASK_COUNT→$SKYPILOT_NUM_JOBS。在 Slurm 上底层分配的任务级SLURM_*变量在run中仍存在脚本保持可运行但 SkyPilot 自己的 job step 的 step 级变量会被刻意清空。生成的新 YAML 应优先使用SKYPILOT_*变量因为它们让任务可移植到 Kubernetes 和云。校验用sky launch --dryrun yaml验证不真正供给仅解析资源并运行优化器sky jobs launch没有--dryrun故即使最终命令是 jobs launch 也要用sky launch做 dry-run。两种情形要区分SkyPilot 跑在用户现有 Slurm 集群上通过登录节点sbatch提交集群不变vs. 迁移到 Kubernetes 或云YAML 相同但约束不同。不要假设用户想离开 Slurm迁移到 Kubernetes 是另一个独立问题。Slurm 上的不支持项autostop/sky stop、ports:/sky serve、use_spot: true均不支持image_id: docker:...需要集群装 Pyxis桶挂载mode: MOUNT需要计算节点有 FUSE。因为 Slurm 上无 autostop空闲的sky launch集群会一直占着分配直到sky down——批量类工作优先用sky jobs launch以便自动释放分配。Agent 程序化使用反馈循环以编程方式使用 SkyPilot 时遵循以下循环验证sky launch --dryrun task.yaml检查资源可用性/成本启动sky launch -c mycluster task.yaml监控sky status -o json与sky queue mycluster -o json等待完成sky logs mycluster JOB_ID流式日志以便观察进度并对停滞做出反应阻塞直到任务结束JOB_ID 从sky queue mycluster -o json获取。对不需要中间输出的长任务用sky logs mycluster JOB_ID --status静默阻塞成功退出 0检查输出sky logs mycluster JOB_ID --no-follow或--tail 100调试ssh mycluster交互式迭代sky exec mycluster updated_task.yaml在已有集群上运行清理sky down mycluster。永远不要用sleepsky queue轮询——用sky logs CLUSTER JOB_ID流式阻塞到完成只需要退出码用--status只需最近输出用--tail N。轮询浪费 token、引入时序 bug 且脆弱。常见 Agent 错误对照错误为什么不对正确做法从sky gpus list输出手动挑云/区域SkyPilot 优化器自动完成且更优只设accelerators:让 SkyPilot 选择长时无人值守任务用sky launch被抢占或中断后无恢复无人值守工作用sky jobs launch完成后忘记sky down或 autostop空闲集群浪费钱始终清理或启动时用-i minutes --down用户没要求却硬编码infra: aws限制可用性并推高成本仅当用户明确要求某云时设infra:不用envs:做可配置值难以复用或从 CLI 覆盖YAML 用envs:--env KEYVAL参数化sky launch不带-c name生成随机名集群难以引用始终用-c命名集群解析状态命令的表格输出表格格式面向人类解析脆弱用-o json获取结构化输出使用废弃的cloud:/region:/zone:字段已被infra:取代用infra: aws/us-east-1用sleepsky queue轮询状态浪费 token、时序 bug、脆弱用sky logs CLUSTER JOB_ID --status阻塞到完成以为 workdir 同步会删除远端文件rsync 增量式旧远端文件跨sky exec保留SSH 手动清理~/sky_workdir或在run:里清理只看最后输出却不用--tail长任务流式全量日志浪费 token用--tail 50只取最后 N 行常见问题速查问题解决GPU 不可用用any_of提供备选或换区域/云setup 太慢SkyPilot 会缓存 setup重跑用sky exec跳过任务静默失败sky logs cluster或ssh cluster调试集群卡在 INITsky down cluster后重新启动抢占/配额用sky jobs launch获得自动恢复与生命周期管理端口不可访问确认resources.ports:已设置且安全组放行文件同步慢大数据集用云存储挂载而非workdir凭据错误运行sky check -o json检查哪些云被禁用及其原因更系统的排查安装与凭据、启动失败、setup 失败、分布式训练、挂载存储、Managed Job、SkyServe、SSH/API server 各分节见 troubleshooting.md。深入阅读CLI Reference——全部命令与参数含sky launch的--dryrun、-i、--env/--secret、sky jobs launch的--num-jobs、--job-recovery等YAML Specification——完整 task YAML schema、file mounts、环境变量、SkyServe 与 job pool 字段Python SDK——程序化 API 与 SDK 用法Advanced Patterns——多云策略、分布式训练、生产模式、成本优化Migrating from Slurm——sbatch脚本转 task YAML、Slurm 命令/环境变量映射、Slurm 特有约束Job Investigation——任务在干什么/为什么的命令编排details与 Slurm pending 原因解读Troubleshooting——错误诊断与解决方案Examples——可直接复制粘贴的任务 YAML 示例仓库 examples/ 与 llm/ 目录中还有上百个可直接参考的端到端 YAMLvLLM 服务、LoRA 微调、多节点 DDP、spot 训练、向量数据库、SkyRL 等可作为编写自有任务配置的起点。【免费下载链接】skypilotThe AI Compute Platform for frontier teams. SkyPilot turns fragmented AI compute into one AI supercomputer, so frontier AI teams build custom intelligence faster.项目地址: https://gitcode.com/GitHub_Trending/sk/skypilot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/9/15 23:09:02

Gitee智能化转型:AI编程助手与MCP协议重塑开发协作

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 23:03:57

LabVIEW调用TOOMOSS实现UDS SID19读取DTC故障码实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 23:03:57

LifeOS 的 extract_insights 模式:用 8 词要点提取最意外洞见

LifeOS 的 extract_insights 模式:用 8 词要点提取最意外洞见 【免费下载链接】LifeOS ⛰️ The Life Operating System — an intent engineering platform that moves you from your current state to your ideal state, in life and work. 项目地址: https://g…

2026/9/15 23:49:06

为什么知网 AIGC 查出来是 0?不是所有 AI 文本都能识别?

最近有些同学反馈,自己查出来的知网 AIGC 检测率为 0,给自己搞得不自信了。 是不是用了假的知网 AIGC 检测系统 ?不是说论文 AIGC 检测挺严格的吗?自己写的论文都有可能会被判为 AI 率超标,为什么我自己查出来的 AI 率…

2026/9/15 23:49:06

知网 AI 检测结果 0,有没有必要额外做维普 AIGC检测?

最近有些同学反馈,自己查出来的知网 AIGC 检测率为 0,给自己搞得不自信了。 是不是用了假的知网 AIGC 检测系统 ?不是说论文 AIGC 检测挺严格的吗?自己写的论文都有可能会被判为 AI 率超标,为什么我自己查出来的 AI 率…

2026/9/15 23:49:06

WPF布尔属性命名规范与最佳实践

1. WPF布尔属性命名的最佳实践在WPF开发中,布尔属性的命名看似简单却暗藏玄机。作为一名长期奋战在WPF前线的开发者,我发现属性命名规范直接影响代码的可读性和维护性。特别是当项目规模扩大、团队协作增多时,一套清晰的命名约定能显著降低沟…

2026/9/15 23:49:06

GPT-5.5和GPT-6是真实模型吗?识别AI命名幻觉与代码防御指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 23:49:06

知网 AIGC 检出率为 0,要不要再用维普复检ai率?

最近有些同学反馈,自己查出来的知网 AIGC 检测率为 0,给自己搞得不自信了。 是不是用了假的知网 AIGC 检测系统 ?不是说论文 AIGC 检测挺严格的吗?自己写的论文都有可能会被判为 AI 率超标,为什么我自己查出来的 AI 率…

2026/9/15 23:44:06

Claude Code 必装插件清单:九个老手实测后留下的组合

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/15 14:22:53

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/15 21:31:11

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/15 11:42:23

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码