炼丹师的优雅内功:从机器学习,分布式练习到k8s云计算
写在前面的话了解我的朋友应该都知道,我之前不绝负责的是云原生网络相关的工作,对容器化,k8s 基本上属于有肯定的知识储备。以是本系列的文章重要是一个云原生从业职员的角度去切入到机器学习和大数据方面,对应有肯定k8s知识储备的朋友来说大概比较友爱,但是对于一些炼丹师朋友来说大概是一个全新的角度,如果需要一些云原生的基础知识的话,也可以看我云原生基础的专栏。
本文只是一个基础的概况和本专栏的介绍,后续专栏内容会从启动本身的一个简朴的机器学习使命开始,到k8s如何支持,在超大规模机器学习集群中如何加快,如何在超大规模的计算集群中提高GPU 的利用率等等。
什么是机器学习
机器学习是AI 的一种应用范畴,讲人话就是通过算法和统计模型让计算机从大量的数据中学习,关键头脑是利用数据来练习模型,,让模型能够自动发现数据中的模式并作出预测或决议。
tensorflow
常常炼丹的炼丹师们肯定很了解了,谷歌开源的一个机器学习框架,可以构建各种机器学习的模型,还支持分布式练习
PyTorch
facebook 开源的机器学习框架,对于学习者来说更加友爱灵活,py代码可读性更强,同时也支持分布式练习
机器学习的大模型练习
从chatgpt开始,大模型练习就开始风就开始吹遍整个炼丹圈,在大家还在讨论未来AI 会给我们生存带来什么样的变革的时候各个大厂已经开始布局本身的大模型练习
和小模型练习相比,大模型对大规模的分布式并行练习有更强的需求
起首是模型本身非常之大,以至于单机单卡乃至单机多卡无法满足,我们不得不把单个模型拆分到多个GPU上存储
其次大模型练习的计算量更大,数据源更大,对算力要求更高我们除了上更高算力的GPU 之外也需要为大模型练习搭建大规模的练习集群
而因为一些政治缘故原由,导致一些高端GPU (比如阉割过算力的A800和H800)国内无法买到,不但没有让国内大模型练习降温,反而催化一批国产GPU的发展,身为炼丹师的我们在现在或者未来都会有显着的打仗。
分布式练习计谋
分布式练习有多种,我在这里只列出一些常用的三种
[*] 数据并行,在数据并行中每个GPU 都要相同的模型副本,数据集拆分到多份给不同GPU进行练习。每一轮迭代练习完成之后,各个GPU 需要把各自计算梯度进行全局同步,然后各个GPU计算出下一轮迭代用到的参数。在数据并行中,网络上对各个GPU 上的梯度做一次Allreduce ,通讯数据量和模型参数规模成正比,对网络要求比较高。
[*] 流水线并行 神经网络模型通常都是多层神经元的组合,包括大模型底层的 Transformer 模型也是如许。我们可以把模型按照神经元的层次进行拆分,不同层放到不同的 GPU 上去。这种并行计谋需要不同 GPU 之间做层间点到点数据传递,传输的内容包括正向计算里的激活值和反向计算里的梯度值。这种通讯在一个迭代里至少会发生几十次,但通讯量一样平常不大,对网络的性能要求相对较低。
[*] 第三种并行计谋就是张量并行,也就是连合多个 GPU 同时做一个张量计算,(比如我们大学学到的线性代数,对两个大矩阵的乘法,可以拆分成多个小矩阵进行相乘,在张量并行计谋中,我们可以把很大的矩阵拆分成若干小矩阵放到多个GPU中进行计算)。但是这种并行计谋中很显着需要频繁的多个GPU 之间做Allreduce,对网络带宽要求是最大的
https://img-blog.csdnimg.cn/img_convert/2baf4c5030c3ce0c074e452a83ac2f85.png
三种计谋各有特色,在实际的大规模练习集群中其实是三种计谋同时存在的
在单机多卡的机器中我们可以采取张量并行,充实使用NVlink(nvlink 可以明白成是一个高速的PCIe总线,对比PCIe 总线而言nvlink 在各个卡间做通讯速度更快带宽更大)的高带宽
当模型过大,单机放不下我们可以采取流水线并行
为了加快我在使用多路数据并行
每路内部都是张量并行和流水线并行
https://img-blog.csdnimg.cn/img_convert/f5a0791c5e6ec16b3290dfd8fcf47470.png
k8s 办理分布式练习
k8s 之于大模型分布式练习,可以说有着自然的承接优势,多机多卡的练习集群完全可以通过K8S 搭建和维护,练习使命可以使用job 进行分发,多种调治计谋让有限的GPU 资源可以更高效的利用。kubernetes 自带的服务发现可以简化分布式练习过程中的配置问题
kubeflow
Kubeflow是在k8s平台之上针对机器学习的开辟、练习、优化、部署、管理的工具集合,内部集成的方式融合机器学习中的很多范畴的开源项目,比如Jupyter、tfserving、Katib、Fairing、Argo等。可以针对机器学习的不同阶段:数据预处理惩罚、模型练习、模型预测、服务管理等进行管理。只要安装了k8s,可以在当地、机房、云环境中部署。
volcano
Volcano是CNCF 下首个也是唯一的基于Kubernetes的容器批量计算平台,重要用于高性能计算场景。它提供了Kubernetes现在缺 少的一套机制,这些机制通常是机器学习大数据应用、科学计算、殊效渲染等多种高性能工作负载所需的。作为一个通用批处理惩罚平台,Volcano与几乎所有的主流计算框 架无缝对接,如Spark 、TensorFlow 、PyTorch 、 Flink 、Argo 、MindSpore 、 PaddlePaddle 等。它还提供了包括基于各种主流架构的CPU、GPU在内的异构设备混合调治能力。Volcano的设计 理念创建在15年来多种系统和平台大规模运行各种高性能工作负载的使用经验之上,并结合来自开源社区的最佳头脑和实践。
后续介绍
本文作为前言介绍部门,不会对内容进行更深入的分析,背面会推出如下内容,或者大家有想要了解的内容接待向我分享
炼丹师的优雅内功一:tensorflow on kubernetes
炼丹师的优雅内功二:PyTorch on kubernetes
炼丹师的优雅内功三:kubeflow 如何承接机器学习使命
炼丹师的优雅内功四:volcano 批量处理惩罚容器计算业务
炼丹师的优雅内功五:大规模计算集群的机密RDMA网络,IB网络和RoCe的纠葛
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]