ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

基于 DVC 的云上机器学习实验:SkyPilot 与 DVC 流水线集成实战

基于 DVC 的云上机器学习实验:SkyPilot 与 DVC 流水线集成实战 基于 DVC 的云上机器学习实验SkyPilot 与 DVC 流水线集成实战【免费下载链接】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导读examples/dvc示例展示了如何在 SkyPilot 上运行由 DVC 管理的机器学习流水线通过一份dvc_pipeline.yaml任务定义SkyPilot 会自动拉起带 GPU 的云实例、同步本地代码与 SSH/Git 凭据然后在远端执行dvc pull、dvc exp run与dvc exp push实现数据拉取 → 云端实验 → 结果回推的完整闭环。读完本文你将掌握在 SkyPilot 任务中编排 DVC 实验的核心配置方法、每个字段的底层语义以及将实验结果版本化回 Git/DVC 远程存储的完整操作流程。示例概览一份 YAML 承载整个 DVC 实验该示例位于仓库 examples/dvc 目录包含两个文件README.md一句话说明示例用途——This example shows how to use DVC with SkyPilotdvc_pipeline.yaml承载全部技术细节的 SkyPilot 任务定义文件。与examples/README.md中对本示例的官方描述一致其定位是使用 DVC 在云上轻松运行 ML 流水线并把结果通过 git 与云存储桶版本化管理。整份配置并不长却完整覆盖了 SkyPilot 任务的核心要素资源声明、代码/凭据同步、环境搭建与执行命令。下面逐段展开解析。逐字段解析 dvc_pipeline.yaml1. 任务命名与资源声明name: dvc-pipeline resources: accelerators: T4:1 infra: aws/us-east-2name: dvc-pipeline任务名sky launch提交后用于标识作业与复用集群。accelerators: T4:1请求 1 张 NVIDIA T4 GPU。字符串格式为类型:数量等价于 dict 写法{T4: 1}。对应源码sky/resources.py中Resources类对accelerators的定义sky/resources.py底层会将其解析为Dict[str, int]并通过加速器目录自动推断可满足需求的云实例类型。infra: aws/us-east-2以云/区域形式直接指定基础设施这是infra字段的标准格式cloud/region或cloud/region/zone见 sky/resources.py。此处等价于传统写法cloud: awsregion: us-east-2但infra更加紧凑且优先级高于分开的cloud/region参数。若省略infraSkyPilot 会在所有已配置云上按成本/可用性自动选型这也是 docs/source/examples/auto-failover.rst 中推荐的灵活用法。2. workdir代码目录随任务同步上云workdir: .workdir指向 DVC 项目根目录含dvc.yaml、.dvc数据目录、requirements.txt等。SkyPilot 会将该目录递归同步到远端实例的~/sky_workdir且setup与run命令都在该目录下执行。源码层面见Task类的workdir定义sky/task.py它既支持本地目录整目录同步也支持 git 仓库形式。要点由于workdir: .相对于 YAML 文件位置解析运行时应在examples/dvc目录内执行sky launch若你复用此配置需确保当前目录就是你的 DVC 项目根目录。3. file_mounts把 SSH 密钥与 Git 配置带入云端file_mounts: ~/.ssh/id_rsa: ~/.ssh/id_rsa ~/.ssh/id_rsa.pub: ~/.ssh/id_rsa.pub ~/.gitconfig: ~/.gitconfigfile_mounts是{远端路径: 本地路径}映射将本地文件原样挂载到远端实例见 sky/task.py 与set_file_mounts的实现sky/task.py。这里挂载三项文件的原因非常明确是为后续dvc exp push origin服务的~/.ssh/id_rsa与~/.ssh/id_rsa.pub远端以 SSH 方式与 git 远程仓库如 GitHub 私有仓库交互时需要私钥认证。把本机密钥对挂载到远端即可让云端实例免密 clone/push。~/.gitconfig携带本机的 git 用户信息user.name/user.email与常用别名确保dvc exp push origin产生的 commit 有正确的作者信息。安全提示把~/.ssh/id_rsa复制到云实例会扩大私钥暴露面。更稳妥的做法是使用 SkyPilot 的sky launch --ssh-key机制注入临时密钥对或在短生命周期集群上使用本配置生产环境请结合自身密钥管理策略权衡。4. setup搭建 DVC 运行环境setup: | pip install -r requirements.txt pip install dvc[s3]setup是执行run之前的一次性环境准备命令见 sky/task.py 的定义。它天然具备幂等 可缓存的语义SkyPilot 会复用已完成 setup 的集群后续提交任务无需重复安装。pip install -r requirements.txt安装 DVC 项目自身的 Python 依赖。注意该文件需要存在于你的 DVC 项目根目录即workdir中因为setup在workdir下执行。pip install dvc[s3]安装 DVC 本体及 S3 扩展boto3 等。[s3]表示启用 S3 远程存储支持DVC 远程既可以是对象存储桶也可以是任何 git 远程可到达的路径。5. run云端执行的 DVC 实验三步曲run: | # pull data versioned by DVC from DVC remote dvc pull # run DVC pipeline as an experiment dvc exp run --pull --allow-missing # push experiment results to DVC remote dvc exp push originrun是任务真正执行的命令块三行命令构成完整的 DVC 实验闭环dvc pull从 DVC 远程存储示例中的 S3拉取由 DVC 版本管理的数据与模型文件恢复到工作区使本地项目与.dvc文件锁定的数据版本一致。dvc exp run --pull --allow-missing作为一次 DVC 实验experiment运行流水线由项目中的dvc.yaml定义如数据切分、训练、评估等 stage。--pull实验运行前先拉取最新实验数据--allow-missing允许部分数据暂缺与第 1 步dvc pull配合容错数据尚未完全下载的情况避免因缺失文件直接中断。dvc exp push origin把本次实验的指标、参数与产物提交并推送到 git 远程origin。这依赖前面file_mounts挂载的 SSH 密钥与 git 配置才能通过认证。由此一次云端 GPU 上的模型训练实验就完成了数据 → 训练 → 版本化归档的全流程实验结果作为 DVC 实验记录存在于 git 中数据产物存于 DVC 远程存储随时可复现与对比。前置条件与运行方式使用本示例的前提依据examples/README.md的说明使用前必须已具备一个 DVC 项目包含dvc.yaml定义的流水线数据 stage、训练 stage 等可参考 DVC 官方 Data Pipelines 文档构建一个 DVC 远程存储如 S3 桶用于存放版本化数据dvc remote add配置云端运行时通过dvc[s3]支持一个 git 远程仓库作为dvc exp push origin的目标并已正确配置 SSH 访问安装好的 SkyPilot 与云凭据已配置 AWS 访问凭据本示例固定使用aws/us-east-2可替换为其他infra。提交任务在examples/dvc目录下执行sky launch dvc_pipeline.yamlSkyPilot 会按序完成创建/复用集群 → 同步workdir→ 应用file_mounts→ 执行setup→ 执行run。若需交互式查看进度可加-i也可将run替换为交互式 shell 便于调试 DVC 命令。源码视角这些字段背后发生了什么理解字段背后的实现有助于排查问题和做扩展setup与run都在workdir下执行见 sky/task.py。因此dvc pull、dvc exp run天然定位到被同步上来的 DVC 项目无需cd。accelerators字符串解析sky/resources.py的_set_accelerators会将T4:1拆分为{T4: 1}sky/resources.py随后由 optimizer 在目标云上挑选满足单卡 T4 的最优实例。infra解析infra字符串通过InfraInfo.from_str解析出 cloud/region/zonesky/resources.py因此本示例等价于cloud: awsregion: us-east-2的旧式写法二者不可同时指定。file_mounts校验expand_and_validate_file_mounts会把源路径展开为绝对路径并校验本地存在sky/task.py若本机不存在~/.ssh/id_rsa等文件任务会在提交阶段直接报错这提醒我们该示例要求本机已配置好 SSH 密钥。扩展与注意事项更换基础设施把infra改为其他已配置云如gcp/us-central1或省略以启用多云自动选型accelerators也可换成V100:1、H100:8等更大规格以加速训练。数据量较大时若 DVC 远程是 S3 且数据达数十 GBdvc pull耗时较长可考虑用 SkyPilot 的存储挂载如sky.Storage把数据桶直接挂载进实例减少反复下载。密钥安全如前述file_mounts携带私钥到云端会扩大暴露面建议在专用、短生命周期的实验集群上使用并定期轮换密钥。多实验对比dvc exp push origin会把每次实验推回 git配合dvc exp show即可在本地对比多轮实验的指标这正是把云端 GPU 算力与 DVC 实验追踪结合的核心价值。总结examples/dvc示例用不到 20 行 YAML 展示了 SkyPilot 与 DVC 的经典集成模式resources声明算力、workdir同步代码、file_mounts注入 SSH 与 git 凭据、setup装配dvc[s3]环境、run执行拉数据 → 跑实验 → 推结果三步曲。该模式可平滑迁移到你自己的 DVC 项目——只需把workdir指向你的流水线仓库、配置好 DVC 远程与 git 远程即可让任意规模的训练实验在云端 GPU 上以可复现、可版本化、可对比的方式运行。【免费下载链接】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),仅供参考
返回列表