近日,加州大学伯克利分校的 Sky Computing 实验室发布了开源框架 SkyPilot,这套框架能够在任何云环境上无缝、且经济高效地运行机器学习与数据科学批量作业,适用于多云和单云用户。SkyPilot 的目标是大大降低云使用门槛、控制运行成本,而且全程无需任何云基础设施专业知识。
SkyPilot GitHub 地址:
https://github.com/skypilot-org/skypilot
据悉,Sky Computing 实验室研发了一年多的时间,SkyPilot 现在已经被 10 多家组织用于多种不同的场景,包括:GPU/TPU 模型训练(将成本降低至三分之一)、分布式超参数调优及百余个 CPU 竞价实例上的生物信息学批量作业 (循环运行成本降低至 1/6.5)等。
将云成本平均降至三分之一?
根据官方介绍,只要给定一项作业及其资源需求(CPU/GPU/TPU),SkyPilot 就能自动找出哪些位置(区 / 区域 / 云)具备运行该作业的计算资源,之后将负载发送至成本最低的位置执行。
SkyPilot 自动在云端执行各项作业,主要包括:
以高可靠方式交付集群,如果发生容量或配额错误,则自动故障转移至其他位置。
将用户代码及文件(从本地或云存储桶)同步至集群。
管理作业排队和执行。
根据官方数据,SkyPilot 能帮助用户大幅减少云成本,一般均可降至三分之一左右:
自动寻找能够提供所需资源的最便宜区 / 区域 / 云(将成本降低至二分之一);
Managed Spot 功能通过使用竞价实例将成本降低至三分之一到六分之一,并可在发生资源抢占时自动恢复;
Autostop 可自动清理空闲集群,化解这一造成云超支的最大“凶手”。
过去几个月来,该实验室逐渐将 SkyPilot 交付给 10 多个组织的数十位机器学习 / 数据科学从业者和研究人员手中。SkyPilot 已被广泛用于交互式开发(例如运行 Jupyter 的 CPU 服务器)、管理各类项目(跨多云环境),甚至扩展至数百项作业。
比如,伯克利 AI 研究所(BAIR)和斯坦福大学的领先机器学习团队,一直在使用 SkyPilot 在云端运行机器学习训练。他们通常会在不更改代码的情况下启动自己的现有机器学习项目,而 SkypIlot 可以配置 GPU 实例、打理集群上的作业排队,并同时运行上百个超参数试验。此外,对于运行在 AWS 上的作业,用户只需要修改一个参数即可将其转由 Google Cloud Platform/Azure 运行。
作为“云际经纪人”的角色
SkyPilot 开发者和博士后研究员 Zongheng Yang 介绍道,构建 SkyPilot 的初衷就是为了契合多云和多区域的发展趋势。他指出,组织越来越倾向于使用多云环境,借此获得更高可靠性、避免云服务商锁定、掌握更强的谈判杠杆等。
Zongheng 对多云带来的成本优势进行了解释。他表示,在硬件相同 / 相似的前提下,选择价格最优的云服务能够节约大量成本。
以 GPU 为例,截至 11 月份时,Azure 的英伟达 A100 GPU 实例价格最低,GCP 和 AWS 分别要比其高出 8% 和 20%。CPU 同样存在价格差异:对于最新的通用实例(配备同样的 vCPU 和内存),不同云服务商的定价差异可能超过 50%。因此,为某项任务选择最合适的云厂商和相应硬件,无疑能显著降低成本、提高性能。
不同硬件的云价格差异,取各家云平台最低价区域内的按需实例价格
用过的开发者可能知道,AWS EC2 instance 的时候经常出现 Insufficient Capacity 错误,即 AWS 这个区没有用户需要的资源了。实际上,优质的云实例资源非常稀缺,搭载英伟达 V100 和 A100 等高端 GPU 的按需实例并不常有,更不要说附带 GPU 或强劲 CPU 的竞价实例。根据经验,用户往往需要等待几十甚至上百小时才能获取如此宝贵的资源。
为了提高获取此类资源的机会,靠谱的办法就是使用多云。假设每家云厂商有 40% 的概率可以提供优质资源,则使用 3 家云服务商就会把成功概率提升至 78%(1–0.6³)。
当然,这些对于跨多个区域的单云用户也同样适用。
首先,不同区 / 区域间的价格差异也很大。对于普通的 GPU/CPU 资源,跨区按需实例的价差可能高达 20%。对于竞价实例,价差更是轻松达到 3 倍。简单来讲,用户可以在同一云服务商的多个区 / 区域间进行选择以降低设施成本。
云内价格差异,“+20%”代表最贵区域的收费比最便宜区域高出 20%
其次,硬件 / 服务产品因云区域而异。例如,GCP 在全球部署有 35 个区域,但 TPU V3 只登陆了其中 2 个区域。另外,跨多个区域时,获取稀缺资源的成功率也更高。
但是不管有多少好处,跨云 / 区域运营确实会极大提升基础设施的管理复杂性。加州大学 AMPLab、RISELab 和现在的 Sky Computing Lab 团队在使用公有云运行机器学习、数据科学、系统、数据库和安全方面的项目时就体会到了。
“使用一个云已经够难了,使用多云会加重最终用户的操作负担,SkyPilot 的开发人员就是想要减轻这种负担。”Zongheng 说道。
“Sky Computing”构想
“今天,越来越多的计算和数据正在进入云端。”Databricks 联合创始人、领导 Sky Computing Lab 的伯克利计算机科学教授 Ion Stoica 说道:“没有回头路可走。”
Stoica 还是 AMPLab 共同创始人、Spark 的核心设计者。他在去年提出了“Sky Computing”构想,这一构想的实质就是想让开发人员构建多云应用程序像构建在单个云上运行的应用程序一样容易。
Sky Computing 与互联网对比
Sky Computing 构想的底层是云兼容层,通过抽象出云计算服务,使在该层之上开发的应用程序无需更改即可在不同的云上运行。兼容层可以从当前很多 OSS 解决方案中构建出来,如操作系统 Linux,集群资源管理器 Kubernetes、Mesos,数据库 MySQL、Postgres,⼤数据执⾏引擎 Spark、Hadoop,机器学习库 PyTorch 、Ten sorflow,通⽤分布式框架 Ray、Erlang 等等。
云兼容层之上云间层,用户可以指定有关其作业应在何处运行的策略。云间层之上是对等层,旨在让云间可以通过建立高速连接互相传递数据,使数据传输又快又便宜,实现更大的工作流动自由。
Sky Computing Lab 的成立就是要建立一个以服务为中介的双向市场,为用户识别和使用最适合他们需求的多云组合。云计算领域的一些知名企业,如谷歌、IBM、英特尔、三星 SDS 和 VMware 都是该实验室的创始赞助商。该实验室的团队包括 60 多名伯克利教职员工和学生。
为彻底改变云行业,加州大学伯克利分校启动 Sky Computing Lab
作为该实验室的产品,SkyPilot 就是 Sky Computing 构想下的产品之一。目前,已经有企业在 SkyPilot 的编程化 API 上构建多云库,这些应用程序从设计之初就具备了跨云能力,可以通过云中立接口驰骋在不同云环境之间。另外,Stoica 参与研发的项目 Skyplane 可以以 10 Gbps 的速度在云 / 区域之间迁移大型数据集,同时压缩数据来降低费用。
结束语
“我已经在 ML 项目中使用 SkyPilot 3 个月了,它确实和听起来一样棒。启动和管理计算的整体体验是经过深思熟虑且符合人体工程学的。”开发者“donnygreenberg”说道。
但并不是所有人叫好,除了对产品本身的质疑外,还有很多人因云成本负担而对云本身失去信心。“有时,人们会发现,先租赁设备直到可以低价购买,并以传统方式托管通常比支付无休止的云费用要便宜得多。”开发者“walrus01”表示。还有人直呼被当时云“降低成本”的炒作迷住了,云实际上并不适合所有企业。
一方面,业内在努力解决各种问题。另一方面,如何消除人们现在的怀疑,也是云提供商需要思考的问题。
参考链接:
https://www.infoq.cn/article/WIm2YhkS1I3z6Zds8tcq
https://news.ycombinator.com/item?id=33964285
评论