AI + K8S 驱动存储技术变革
在以容器为应用运行载体的 Kubernetes 平台上,运行 AI 训练和推理任务,正逐步成为 AI 厂商以及 AI 应用在企业落地的热点和首选。这两年,国内外陆续有相关的研究报告在关注这两个前沿技术的结合和突破,与之相关的工具和创新型企业也不断涌现。
Gartner 在 2019 年发布的一份关于 AI 的预测报告中指出,在过去的一年里,采用 AI 的企业数量增加了两倍,而 AI 成为了企业 CIO 们考虑的头等大事。CIO 在企业内实施 AI 应用的过程里,必须考虑的五个要素中就有两项与 Kubernetes 相关:
第一,AI 将决定基础架构的选型和决策。在企业对 AI 的使用正在迅速增加的背景下,到 2023 年,人工智能将成为驱动基础架构决策的主要工作负载之一。加快 AI 的落地,需要特定的基础设施资源,这些资源可以与 AI 以及相关基础设施技术一起同步发展。我们认为,以 Kubernetes 强大的编排以及对 AI 模型的支持能力,通过在互联网厂商以及更多客户总结的最佳实践,Kubernetes 将成为企业内部 AI 应用首选的运行环境和平台。
第二,Serverless 将得到更大发展。容器和 Serverless 将使机器学习模型作为独立的功能提供服务,从而以更低的开销运行 AI 应用。Gartner 直接指出了将容器作为机器学习模型的优势和趋势。
关于机器学习,你要知道的事
为了更深入地理解这一技术趋势,我们需要对人工智能、机器学习有基本的理解。
机器学习是人工智能(AI)的分支,它使计算机系统能够使用统计方法,识别或学习大量数据中存在的规律和模式。机器学习将这些模式汇总到一个模型中,通过该模型,计算机就能进行预测或执行具体的识别任务,而无需人为地编写规则来实现对输入数据的识别和处理。简单地说,机器学习是对数据进行处理、统计和归纳,是数据处理的科学。
现代的机器学习需要依赖特定的算法,虽然这些算法大多数在数十年前就已经存在了,但算法的存在并没有使机器学习在那些年就被重视和认可。直到近些年,可用于训练的数据和负担得起的计算能力爆炸式增长、模型训练方法的进步、以及用于开发机器学习解决方案的工具数量和质量飞速增长,才使得人工智能得以快速发展。
我们可以注意到,从基础架构角度,除了强大的算力(云和 GPU 居功至伟)之外,推动机器学习向前发展的两大动力,一是强(爱)大(省事)的程序员们编写了大量支撑机器学习的框架和工具,二是海量的数据成为可能。
机器学习在平台架构上面临的挑战
机器学习只有达到一定规模,才能将模型训练得更为精准,要使机器学习快速扩展规模,工程团队会面临以下的挑战:
数据的管理与自动化
在探索性机器学习的应用里,数据科学家或机器学习工程师需要花费大量时间手动构建和准备新模型所需的数据,如何保护和管理这些耗费大量时间资源获取和准备的数据,本身就是一个需要考虑的问题。
其次,将各种数据转换、特征工程和 ETL pipeline 进行自动化,对于提高建模效率和反复运行机器学习任务是非常必要的。自动化 pipeline 除了对建模过程有很大帮助之外,对推断时为生产模型提供现成的特征数据也起着至关重要的作用。
此外,数据和特征的转换会不断形成新的数据,这些新数据通常不仅需要保留用于训练,还会用于将来的推断过程。因此,提供可伸缩、高性能的数据存储和管理是支持机器学习过程的团队所面临的重大挑战,底层的存储系统需要支持训练和推理工作负载所需的低延迟和高吞吐量访问,避免反复进行数据复制。
有效利用资源
今天,计算能力空前强大,诸如高密度 CPU 内核,GPU 和 TPU 之类的硬件创新正越来越多地服务于机器和深度学习工作负载,从而保证了这些应用程序的计算资源在持续增长。
然而,尽管计算成本在不断下降,由于机器学习的过程实质上是对数据的高密度处理和挖掘,数据具有突发和资源密集的特点,从而使得如何有效利用计算资源,成为大规模应用机器学习面临的挑战。
底层技术架构的复杂性
PaaS 产品和 DevOps 自动化工具的兴起,使软件开发人员可以专注于正在开发的应用程序,而不必担心应用程序所依赖的中间件和基础设施。
同样,为了使机器学习过程能够充分发挥规模和效率,数据科学家和机器学习工程师必须能够专注于模型和数据产品的构建和优化,而不是基础架构。
人工智能建立在快速发展的复杂技术栈上,包括 TensorFlow、PyTorch 等深度学习框架,SciPy,NumPy 和 Pandas 等特定语言库以及 Spark 和 MapReduce 等数据处理引擎。这些工具由 NVIDIA 的 CUDA 等各种底层驱动程序和库支持,使 AI 任务可以利用 GPU,而正确安装和配置这些基础架构非常困难。如何选择一个良好的基础架构,才能帮助 AI 科学家从这些复杂的技术栈中解放出来,将精力投入到模型的优化中,是 AI 企业取得成功的关键。
Kubernetes 为何成为机器学习青睐的支撑平台
Kubernetes 如何化解 AI 平台面临的挑战
容器和 Kubernetes 借助开源的力量,获得巨大发展,通过大量实践,证明了这一技术确实能够帮助 AI 企业应对上述几个的挑战。
数据管理与自动化
Kubernetes 提供了将存储连接到容器化工作负载的基本机制,持久卷 PV 提供了使 Kubernetes 支持有状态应用程序(包括机器学习)的基本支持。
基于这些支持,AI 企业就可以使用各种与 Kubernetes 紧密集成的第三方解决方案来构建高度自动化的数据处理 pipeline,从而确保无需人工干预就能可靠地完成数据转换。
恰当的存储产品可以使 Kubernetes 工作负载获得分布式存储系统中数据的统一访问,内部团队也不再需要通过多种数据访问方式来获取数据,并实现数据和特征跨项目共享的目标。
有效利用资源
Kubernetes 能够跟踪不同工作节点的属性,例如存在的 CPU 或 GPU 的类型和数量,或可用的 RAM 数量。在将作业调度到节点时,Kubernetes 会根据这些属性,对资源进行有效分配。
对于机器学习这种资源密集型工作负载,Kubernetes 最适合于根据工作负载随时自动扩展或收缩计算规模,相对于虚拟机或物理机而言,通过容器完成扩展和收缩更为平稳、快速、简单。
此外,通过 Kubernetes 的命名空间的功能,可以将单个物理 Kubernetes 集群划分为多个虚拟集群,使单个集群可以更轻松地支持不同的团队和项目,每个名称空间都可以配置有自己的资源配额和访问控制策略,满足复杂的多租户需求,从而能更充分地利用各种底层资源。
隐藏复杂性
容器提供了一种独立于语言和框架的,有效打包机器学习工作负载的方式,Kubernetes 则提供了一个可靠的工作负载编排和管理平台,Kubernetes 通过必要的配置选项、API 和工具来管理这些工作负载,从而使工程师可以通过 yaml 文件,即可控制这些上层应用。
使用容器封装数据机器学习任务的另一个好处,是这些工作负载本身的依赖问题已经封装在容器的声明里,从而屏蔽掉机器学习任务对底层技术栈的依赖。这样,无论在开发者笔记本电脑、训练环境还是生产集群上,这些 AI 任务都可以正确地保持依赖关系并顺利运行。
Kubernetes+机器学习的良好生态系统
Kubernetes 已经成为云原生时代编排框架的事实标准,各种资源、任务都可以使用 Kubernetes 进行编排和管理,当然也包括机器学习任务。基于 Kubernetes,大量开发者和公司已经提供了众多开源或商业的工具(包括:Argo、Pachyderm、Katib、KubeFlow、RiseML 等),通过这些工具,AI 公司可以进一步提升机器学习任务在 Kubernetes 上运行的效率,增强使用 Kubernetes 进行机器学习的能力。
另一方面,很多 Kubernetes 开源版本或商业发行版都支持基于 Kubernetes 对 GPU 进行很好的调度和管理,在数据分析和计算层面上看,这为机器学习与 Kubernetes 的结合扫清了障碍。
机器学习运行在 Kubernetes 上对存储系统提出了哪些要求
前面提到过,机器学习快速发展的两大动力,一是框架和工具的支持,这一点已经通过 Kubernetes 以及类似 TensorFlow、PyTorch、KubeFlow 等工具实现;二是机器学习必须依赖海量的数据。在 Kubernetes 被机器学习广泛接受和使用的背景下,机器学习对海量数据的存储系统提出了哪些要求?结合对多个一流的 AI 企业的交流和了解,我们发现以下一些特点:
机器学习需要依赖海量的数据,这些数据基本都是以非结构化的文件形式存在,例如数十亿张图片、语音片段、视频片段等,存储系统需要能支持数十亿规模的文件。
这些文件大小通常在几百 KB 到几 MB 之间,存储系统需要保证小文件的高效存储和访问。
由于上层的机器学习任务是通过 Kubernetes 进行管理和调度,这些任务需要访问的存储也要通过 Kubernetes 进行分配和管理,存储系统需要对 Kubernetes 进行很好的适配和支持。
多个机器学习任务经常需要共享一部分数据,意味着多个 Pod 需要共享访问(读写)一个 PV,底层存储系统需要支持 RWX 访问模式。
机器学习需要使用到 GPU 等计算资源,存储系统在海量小文件前提下,需要能提供足够的多客户端并发访问性能,才能使 GPU 资源得到充分利用。
YRCloudFile 如何应对 Kubernetes+机器学习的场景
我们可以从 Kubernetes 支持以及机器学习的数据特点两个维度来分析 YRCloudFile 在这一新型场景上的优势。
YRCloudFile 从设计到实现,首要场景就是解决 Kubernetes 环境中,容器化应用对存储的访问需求,也借此成为国内首个入选 CNCF LandScape Container-Native Storage 的存储产品。为此,YRCloudFile 支持:
CSI、FlexVolume 的访问插件。通过 CSI 插件,在对 Kubernetes 没有任何侵入的前提下,Kubernetes 可以为机器学习应用申请独立或共享的存储资源。
支持数百个 Pod 同时访问同一个 PV 资源,并能够将这些 Pod 快速并发拉起,满足机器学习的多个任务共享访问数据(RWX 读写模式)的要求,解决了基于块存储方案在这方面的天然缺陷。
在机器学习任务的 Pod 需要跨节点重建时,Pod 可以在新节点上快速访问到原有数据,无需人为干预和接入,完全满足自动化的基本诉求,块存储容器解决方案在这方面也存在不足。
其次,在机器学习海量小文件的数据特点上,YRCloudFile 相对于其它开源或商业产品也具有明显优势:
YRCloudFile 在数十亿小文件规模下,无论文件操作性能(重点考验元数据处理能力),或者是小文件读写带宽(重点考察元数据处理和存储的并发访问性能),都保持平稳的性能。相较于其它传统的云原生存储或分布式文件存储,YRCloudFile 在海量小文件的支持上,都具有优势。
在机器学习场景下,网络的选择和性能尤为重要,以 Mellanox 为代表的网络供应商,在 InfiniBand 通信协议上,针对机器学习做了大量优化,提供了 GPUDirect、SHARP 等高级的网络特性。YRCloudFile 完全支持在 InfiniBand、RoCE 网络环境下运行,并提供比传统 TCP 网络环境更高的读写性能,从而更好地支持机器学习任务。
通过这篇文章,我们可以清晰地看到 Kubernetes 在人工智能、机器学习这一新型应用场景下得到快速应用的趋势,并深入理解了这个趋势背后的技术推动力。同时,我们也了解到 Kubernetes+机器学习的结合,对数据的存储系统提出了哪些新的需求,YRCloudFile 在这一新场景和趋势下,所凸显出的优势更为明显。目前,YRCloudFile 已经在一流的 AI 企业中得到了实践和应用。YRCloudFile 会结合在实际生产环境中发现的机器学习对数据访问的具体特点,进行更深层次的优化,在这个崭新的应用场景中扩大领先地位,继续助力 AI 企业提升机器学习的效率和水平。
版权声明: 本文为 InfoQ 作者【焱融科技】的原创文章。
原文链接:【http://xie.infoq.cn/article/ef85720aeacd27e121e8b534b】。文章转载请联系作者。
评论