十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

深入解析 SkyPilot:在 Kubernetes、Slurm 与 20+ 云上统一运行、管理与扩展 AI 工作负载

深入解析 SkyPilot:在 Kubernetes、Slurm 与 20+ 云上统一运行、管理与扩展 AI 工作负载 深入解析 SkyPilot在 Kubernetes、Slurm 与 20 云上统一运行、管理与扩展 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 是一个面向前沿 AI 团队的系统用于在任何 AI 基础设施上运行、管理和扩展 AI 工作负载。它为 AI 团队提供统一的接口在任意基础设施上运行任务为基础设施团队提供统一的控制平面来管理所有 AI 计算资源。读完本文你将掌握 SkyPilot 的核心抽象Task/Cluster/Cloud、任务 YAML 定义语法、sky launch的完整执行流水线、安装配置方法以及它如何在 Kubernetes、Slurm 与多家云厂商之间实现统一调度、自动故障转移与 GPU 利用率优化。定位一统 AI 计算的控制平面SkyPilot 的核心理念可以概括为一句话把你的碎片化 AI 计算整合成一台 AI 超级计算机。在官方定位中SkyPilot 是一个运行、管理并扩展 AI 工作负载的系统——AI 团队通过它获得在任意基础设施上运行任务的简单接口基础设施团队则通过它获得统一的控制平面涵盖高级调度、伸缩与编排能力。从 sky/execution.py 的入口函数签名可以看到SkyPilot 的核心 APIsky.launch()接受一个sky.Task或实验性的sky.Dag并支持retry_until_up、idle_minutes_to_autostop、down、dryrun、optimize_target、no_setup、fast、resize等丰富的启动参数这构成了整个平台运行-管理-扩展三大能力的底层骨架def launch( task: Union[sky.Task, sky.Dag], cluster_name: Optional[str] None, retry_until_up: bool False, idle_minutes_to_autostop: Optional[int] None, dryrun: bool False, down: bool False, stream_logs: bool True, optimize_target: common.OptimizeTarget common.OptimizeTarget.COST, no_setup: bool False, ... ) - Tuple[Optional[int], Optional[backends.ResourceHandle]]:值得一提的是launch在 sky/execution.py 中被timeline.event、usage_lib.entrypoint与tempstore.with_tempdir装饰说明每次启动都会被纳入使用统计、埋点追踪并且整个启动过程共享一个临时目录、结束后整体回收——这是平台可观测性与资源清洁性的体现。从架构层面看SkyPilot 天然分为三层视角顶层是功能入口Clusters / Jobs / Services分别对应开发、训练、批处理与部署长期运行的推理服务等场景中间是 SkyPilot 核心负责运行、管理、扩展 AI 工作负载底层是可编排的计算资源——Kubernetes、Slurm、云 VMAWS/GCP/Azure 等 20 云以及本地机房on-premise对应的架构示意见仓库根目录 README 中的 skypilot-abstractions-long-2.png。核心价值四大能力支柱1. 对 AI 用户极致的易用性快速拉起计算资源在任何自有基础设施上一条命令即可获得计算环境环境与任务即代码用 YAML 或 Python API 声明式描述环境与任务简单且可移植轻松的任务管理排队、运行、自动恢复大量任务无需人工干预。2. 对 AI 与基础设施团队让 Kubernetes 变简单Slurm 般的易用性 云原生的健壮性既有 HPC 调度器的亲切体验又有 K8s 的弹性与容错本地开发体验直通 K8s可以 SSH 进入 Pod、同步代码、连接 IDE像在本地开发一样操作集群为集群提速支持 gang scheduling集会调度/齐射调度、多集群管理与自动扩缩容。3. 统一多云、多集群、多硬件一个接口搞定所有资源预留 GPU、Kubernetes 集群、Slurm 集群、20 云厂商统一抽象灵活的资源配置GPU/TPU/CPU 统一声明内置智能故障转移auto-failover团队部署与资源共享通过 API Server 支持多用户协作与资源隔离。4. 最大化 GPU 集群利用率Autostop自动停机空闲资源自动清理杜绝占着 GPU 不跑任务的浪费Binpacking装箱调度在共享集群上把任务紧凑地打包到已有节点上减少碎片智能调度器自动把任务调度到最可用的基础设施上兼顾成本与可用性。一分钟上手第一个 SkyPilot 任务任务是什么一个 SkyPilot 任务Task声明四类信息资源需求resources、需要同步的数据workdir / file_mounts、安装命令setup与任务命令run。一旦用这个统一接口YAML 或 Python API写好任务就可以在任何可用基础设施Kubernetes、Slurm、云等上启动从而避免厂商锁定并可以轻松迁移到不同提供商。编写my_task.yamlresources: accelerators: A100:8 # 8x NVIDIA A100 GPU num_nodes: 1 # Number of VMs to launch # Working directory (optional) containing the project codebase. # Its contents are synced to ~/sky_workdir/ on the cluster. workdir: ~/torch_examples # Commands to be run before executing the job. # Typical use: pip install -r requirements.txt, git clone, etc. setup: | cd mnist pip install -r requirements.txt # Commands to run as a job. # Typical use: launch the main program. run: | cd mnist python main.py --epochs 1各字段说明字段作用说明resources.accelerators声明加速器支持A100:88 卡、V100:4等型号:数量语法也支持 TPU、CPU 与多资源组合num_nodes声明要启动的节点数大于 1 即自动形成多节点分布式集群workdir本地工作目录可选内容会同步到集群上的~/sky_workdir/setup任务运行前的安装命令典型用法pip install -r requirements.txt、git clone等只在首次/变更时执行run作为任务执行的命令典型用法启动主程序准备 workdir克隆示例代码git clone https://github.com/pytorch/examples.git ~/torch_examples启动任务注意此示例需要具备 GPU 实例的访问配额sky launch my_task.yamlsky launch背后发生了什么sky launch一条命令背后SkyPilot 为你完成了全部脏活累活寻找最优基础设施在你的集群或云中找出最便宜且有货的资源供给 GPUPod 或 VM若返回容量错误自动故障转移auto-failover到其他区域/可用区同步 workdir把本地workdir同步到已供给的集群自动安装依赖执行任务中的setup命令运行任务并流式输出日志执行run命令日志实时流式返回终端。从源码层面看sky.launch的实现对应 sky/execution.py 中定义的Stage 流水线sky/execution.py每个阶段都是一个可插拔的枚举成员class Stage(enum.Enum): Stages for a run of a sky.Task. CLONE_DISK enum.auto() OPTIMIZE enum.auto() PROVISION enum.auto() SYNC_WORKDIR enum.auto() SYNC_FILE_MOUNTS enum.auto() SETUP enum.auto() PRE_EXEC enum.auto() EXEC enum.auto() DOWN enum.auto()从 sky/execution.py 中_execute对阶段集合的处理可以确认实际执行顺序OPTIMIZE → PROVISION → SYNC_WORKDIR / SYNC_FILE_MOUNTS → SETUP → PRE_EXEC → EXEC → DOWN。其中OPTIMIZE调用优化器确定最优执行计划详见下文智能调度PROVISION供给实例/Pod支持retry_until_up重试直到成功SYNC_WORKDIR / SYNC_FILE_MOUNTS同步工作目录与文件挂载SETUP安装依赖no_setupTrue可跳过EXEC提交任务到集群作业队列并执行DOWN任务结束后按需拆除集群配合--down或--idle-minutes-to-autostop。这一阶段模型贯穿了 README 中描述的全部 5 个heavy-lifting步骤也是理解 SkyPilot 行为如--fast跳过重复供给、--down结束后拆除的关键。安装与配置快速安装SkyPilot 官方推荐用uv安装同样支持pip、nightly 构建与源码安装核心命令如下# Choose your clouds: uv pip install skypilot[kubernetes,aws,gcp,azure,oci,nebius,lambda,runpod,fluidstack,paperspace,cudo,ibm,scp,seeweb,shadeform,verda]安装时按需选择云厂商的 extra 依赖即可若使用uv venv创建环境必须带--seed参数确保环境内含pipSkyPilot 远端构建需要使用uv tool install时则必须带--with pip。SkyPilot 要求 Python 版本范围在 3.93.13 之间pip 安装路径下为 3.73.13详细的安装矩阵可参考 docs/source/getting-started/installation.rst。验证云访问安装完成后运行sky check它会检查各云厂商的凭据与依赖是否就绪输出类似下面的摘要Checking credentials to enable clouds for SkyPilot. AWS: enabled GCP: enabled Azure: enabled OCI: enabled Lambda: enabled Nebius: enabled RunPod: enabled ... Kubernetes: enabled Slurm: enabled如果某些云显示未启用sky check会给出解决提示也可以只检查指定云例如sky check aws gcp。直连 AgentClaude Code、Codex 等SkyPilot 提供了官方 Skill 安装路径安装仓库内 agent/INSTALL.md 的指引即可让 Agent 获得完整的 SkyPilot 使用能力从而直接用自然语言驱动任务编写与启动。BYOC自带云账户SkyPilot 是BYOCBring Your Own Cloud模式——所有任务都运行在你自己的云账户、VPC 与集群内。这意味着没有资源托管费用数据不出你的网络边界安全与合规由你掌控。智能调度与故障转移的原理README 中提到的找最便宜且有货的设施与自动故障转移其底层实现在 sky/optimizer.py 的Optimizer.optimize()中。它接收一个任务 DAG根据优化目标成本或时间为每个任务挑选best_resources并在无可满足资源时抛出ResourcesUnavailableErrordef optimize(dag: dag_lib.Dag, minimize: common.OptimizeTarget common.OptimizeTarget.COST, blocked_resources: Optional[Iterable[...]] None, quiet: bool False) - dag_lib.Dag:优化目标定义在 sky/utils/common.pyclass OptimizeTarget(enum.Enum): COST 0 TIME 1sky.launch的optimize_target参数默认取OptimizeTarget.COST即默认以最低成本为优化目标若追求更快的训练/推理吞吐可以传入OptimizeTarget.TIME切换为最短时间。优化过程中还会对每个候选项计算数据出口egress成本/时间_egress_cost_or_time即把数据从 A 云搬到 B 云的开销也会被纳入决策这与 README 强调的跨云无锁定、轻松迁移设计一脉相承。在供给阶段若首选区域返回容量错误如配额不足、售罄SkyPilot 会按排序自动故障转移到下一个可用区域/云直到成功或抛出资深限度的ResourcesUnavailableError——这正是智能故障转移的实现支撑。为什么 SkyPilot 在 Kubernetes 上尤其值得一试SkyPilot 让 Kubernetes 变得AI-native。它通过两条路径涡轮增压现有 K8s 集群加速 AI/ML 开发速度面向 AI 的友好接口来启动任务与部署大幅简化的 K8s 交互式开发体验SSH 进入 Pod / 同步代码 / 连接 IDE。优化 GPU 调度、利用率与扩缩容高级调度gang scheduling多节点任务齐射调度避免死锁式等待、多节点任务与排队机制多集群支持把所有集群纳入一个控制平面统一管理多云支持一个一致的接口管理众多提供商。对同时运营本地 K8s 与公有云 GPU 的团队这意味着可以先把任务在本地集群跑起来做开发调试需要更多算力时用同一个 YAML 无缝溢出到云上——接口不变、代码不变。可运行的示例库仓库内提供了覆盖开发、训练、推理服务、LLM 模型、AI 应用与常见框架的大量真实示例源码分布在 llm/ 与 examples/ 目录下类别代表性示例训练VerlRL 训练、Finetune Llama 4、TorchTitan、PyTorch、DeepSpeed、NeMo、Ray、Unsloth、Jax/TPU、OpenRLHF推理服务vLLM、SGLang、Ollama模型DeepSeek-R1、Llama 4、Llama 3、CodeLlama、Qwen、Kimi-K2、Kimi-K2-Thinking、MixtralAI 应用RAG、向量数据库ChromaDB、CLIP 等常用框架Airflow、Jupyter、marimo这些示例全部是开箱即用的.yaml任务文件——复制、按需修改resources与run即可复现对应场景。例如启动 vLLM 推理服务只需sky serve up llm/vllm/serve.yaml服务场景或sky launch llm/vllm/serve.yaml单次任务场景GPU 供给、镜像拉取、端口暴露均由 SkyPilot 接管。生态与进一步学习完整的入门路径安装上文→ Quickstart → 任务教程官方文档从 docs/source/getting-started/installation.rst 与 docs/source/getting-started/quickstart.rst 起步参与贡献欢迎各类贡献见 CONTRIBUTING.md反馈渠道问题与功能请求提 GitHub Issue使用咨询走 GitHub Discussions日常交流在 SkyPilot Slack 社区。小结SkyPilot 用一个统一接口把 Kubernetes、Slurm、20 公有云与本地机房编织成一台AI 超级计算机对 AI 用户它是环境与任务即代码的简单入口对基础设施团队它是具备高级调度、装箱、自动停机与多集群编排的统一控制平面。从 sky/execution.py 的九阶段流水线到 sky/optimizer.py 的成本/时间双目标优化再到 llm 与 examples 中开箱即用的示例库整条链路都以写一次、随处跑、省成本、提利用率为最终目标。对于正在多云碎片中挣扎的 AI 团队SkyPilot 提供了一条立即可行的统一路径。【免费下载链接】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),仅供参考
返回列表