【生成人工智能】Ray如何解决生成人工智能基础设施的常见生产挑战

这是我们生成人工智能博客系列的第一部分。在这篇文章中,我们讨论了如何使用Ray来生产常见的生成模型工作负载。即将发布的一篇博客将深入探讨Alpa等项目为什么要使用Ray来扩展大型模型。

生成的图像和语言模型有望改变企业的设计、支持、开发等方式。本博客重点关注围绕基础模型支持工作负载生产部署的基础设施挑战,以及Ray,一个用于扩展ML工作负载的领先解决方案,如何应对这些挑战。最后,我们制定了一个改进路线图,以使事情变得更容易。

如今,领先的人工智能组织使用Ray大规模训练大型语言模型(LLM)(例如,OpenAI训练ChatGPT,Cohere训练其模型,EleutherAI训练GPT-J,Alpa训练多节点训练和服务)。然而,这些模型之所以如此令人兴奋,其中一个原因是可以对开源版本进行微调和部署,以解决特定问题,而无需从头开始训练。事实上,社区中的用户越来越多地询问如何使用Ray来协调他们自己的生成人工智能工作负载,建立由大型玩家训练的基础模型。

在下表中,我们用绿色突出显示了常见的“生产规模”需求(通常从1-100个节点开始)。这包括以下问题:

  • 如何将批量推理扩展到数TB的非结构化数据?
  • 我如何创建一个微调服务,可以根据需要创造新的工作岗位?
  • 如何在多个节点上部署跨多个GPU的模型?

在这篇博客文章中,我们将主要关注这些绿色突出显示的工作负载。

Different scale workloads for generative AI.

Different scale workloads for generative AI.

如果您有兴趣了解使用Ray进行生成人工智能工作负载的代码示例,请查看我们的示例页面。

生成模型:ML工作负载的最新发展

MLOps for GAI

Fig. Based on the latest deep learning models, the compute requirements of generative AI mirror those of traditional ML platforms, only greater.

我们认为生成模型工作负载放大了ML工作负载背后固有的计算挑战。这是沿着两个轴来的:

  • 成本:生成模型更大,训练和服务的计算成本更高。例如,XGBoost/scikit学习模型每个记录可能需要1-10ms,而对这些生成模型的最基本推断将需要1000ms或更多——这是>100x的因子。这种成本的变化使得分布式成为那些希望在生产中使用生成模型的公司的默认要求。
  • 复杂性:部分由于成本的原因,文本生成和图像扩散等用例中出现了新的计算需求,如模型并行服务或增量状态更新(即报告部分结果)。

让我们更具体地按工作量来细分这一趋势。下表总结了常见的人工智能工作负载,以及这些不同用例的基础设施需求是如何随着时间的推移而演变的:

MLOps

如表所示,这些工作负载的成本和复杂性随着时间的推移而增长——尽管该行业的GPU硬件得到了快速改进。接下来,让我们深入探讨从业者在使用生成人工智能处理这些工作负载时可能面临的挑战。

生成型人工智能基础设施面临的挑战

生成型人工智能基础设施为分布式培训、在线服务和离线推理工作负载带来了新的挑战。

1.分布式培训

目前,Ray正在进行一些规模最大的生成模型训练:

  • OpenAI使用Ray来协调ChatGPT和其他模型的训练。
  •  Alpa project 项目使用Ray来协调数据、模型和管道并行计算的训练和服务,并将JAX作为底层框架。
  • Cohere和 EleutherAI 使用Ray与PyTorch和JAX一起大规模训练他们的大型语言模型。

Alpa uses Ray

Fig. Alpa uses Ray as the underlying substrate to schedule GPUs for distributed training of large models, including generative AI models.

生成模型分布式训练的常见挑战包括:

  • 如何在多个加速器之间有效地划分模型?
  • 如何设置您的培训以容忍可抢占实例上的失败?

在即将发布的博客中,我们将介绍项目如何利用Ray来解决分布式培训的挑战。

2.在线服务和微调

我们还看到,人们越来越感兴趣地将Ray用于中等规模(例如1-100个节点)的生成人工智能工作负载。通常,这种规模的用户有兴趣使用Ray来扩展他们已经可以在一个节点上运行的现有训练或推理工作负载(例如,使用DeepSpeed、Accelerate或各种其他常见的单节点框架)。换句话说,为了部署在线推理、微调或培训服务,他们希望运行工作负载的许多副本。

gpu-cost

Fig. A100 GPUs, while providing much more GRAM per GPU, cost much more per gigabyte of GPU memory than A10 or T4 GPUs. Multi-node Ray clusters can hence serve generative workloads at a significantly lower cost when GRAM is the bottleneck.

这种形式的扩展本身可能非常棘手,而且实施起来成本高昂。例如,考虑为多节点语言模型扩展微调或在线推理服务的任务。有许多细节需要解决,例如优化数据移动、容错和自动缩放模型副本。DeepSpeed和Accelerate等框架处理模型运算符的分片,但不处理调用这些模型的高级应用程序的执行。

Layered stack diagram for deployments of generative model workloads.

Fig. Layered stack diagram for deployments of generative model workloads.

即使对于单节点工作负载,用户也经常可以从分发中受益,因为部署小型GPU集群比部署单个高端设备(例如A100 GPU)用于托管模型要便宜得多。这是因为低端GPU通常每GB内存的成本更低。然而,要扩展涉及多台机器的部署是很有挑战性的。如果没有像Ray Serve和Ray Data这样的库,也很难实现开箱即用的高利用率。

3.离线批量推理

在离线方面,这些模型的批量推理也面临着需要数据密集型预处理和GPU密集型模型评估的挑战。Meta和谷歌等公司构建自定义服务(DPP,tf.data服务),以在异构CPU/GPU集群中大规模执行此功能。虽然在过去,这样的服务很少见,但我们越来越多地看到用户询问如何在生成人工智能推理的背景下做到这一点。这些用户现在还需要解决分布式系统在调度、可观察性和容错方面的挑战。

Ray如何应对这些挑战

现有Ray功能

  • Ray Core调度:为了协调从头开始训练生成模型所需的大规模分布式计算,Ray Core灵活地支持在CPU和GPU上调度任务和参与者。对于那些使用Ray进行大规模模型训练的人来说,这一功能尤其有用。放置组允许用户保留GPU或CPU资源组,以放置大型模型的副本,用于多节点微调、推理或训练。
  • Ray Train:Ray的Train库提供了开箱即用的Trainer类,这些类可以运行流行的框架,如分布式TensorFlow、Torch、XGBoost、Horovod等。为了更容易开始使用生成模型,我们添加了与流行框架的集成,如HuggingFace Accelerate、DeepSpeed和Alpa To Train,以及RLHF支持。
  • Ray Serve:Ray Serve为缩放模型部署图提供了一流的API。因为Serve在Ray中运行,所以它在运行特别或辅助计算方面也有很大的灵活性。例如,用户从Serve启动Ray子任务来微调模型,并通过同样在Ray中运行的命名参与者来协调增量结果的返回。

即将推出的功能

  • Ray Data流后端:为了使混合CPU和GPU节点集群上的大规模批量推理更容易大规模运行,我们正在努力为Ray Data添加一流的流媒体推理支持:https://github.com/ray-project/enhancements/pull/18
  • Ray Serve中的异步请求:我们希望增强Ray Serve,以本地处理长时间运行的异步作业,如微调请求。这些请求通常需要几分钟的时间才能运行,比<10秒的正常ML推理作业要长得多,这通常意味着用户必须转向使用外部作业队列:https://github.com/ray-project/ray/issues/32292

我们正在发布的新示例

当然,在理论上可行和在实践中可行之间存在很大的区别。为了弥补这一差距,我们还宣布了几个生成性人工智能示例的初步发布,随着新模型和框架的出现,我们将随着时间的推移进行扩展。

链接的示例可能需要您使用Ray的夜间版本——链接和示例将在Ray 2.4的稳定版本上提供。

  • Stable Diffusion

    • Fine-Tuning

    • Serving

    • Batch Prediction

    • Streaming Batch Prediction: coming in Ray 2.5

  • GPT-J

    • Fine-Tuning

    • Serving

    • Batch Prediction

    • Streaming Batch Prediction: coming in Ray 2.5

  • OPT-66B

    • Fine-Tuning: coming in Ray 2.5

    • Serving: coming in Ray 2.5

    • Batch Prediction: coming in Ray 2.5

    • Streaming Batch Prediction: coming in Ray 2.5

结论

总之,我们认为生成模型正在加速对灵活、统一的框架(如Ray)的需求,以运行ML计算。Ray团队计划添加增强的API,用于大规模处理这些类型的昂贵模型和示例,以及与流行模型和社区框架的集成,使其易于入门。在这里开始学习Ray ML用例,并在我们的示例页面上查看我们使用Ray进行生成人工智能工作负载的代码示例。

文章链接:【生成人工智能】Ray如何解决生成人工智能基础设施的常见生产挑战 | 开发者开聊

自我介绍

  • 做一个简单介绍,酒研年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【架构师研究会】和【开发者开聊】,有更多的内容分享,谢谢大家收藏。
  • 企业架构师需要比较广泛的知识面,了解一个企业的整体的业务,应用,技术,数据,治理和合规。之前4年主要负责企业整体的技术规划,标准的建立和项目治理。最近一年主要负责数据,涉及到数据平台,数据战略,数据分析,数据建模,数据治理,还涉及到数据主权,隐私保护和数据经济。 因为需要,比如数据资源入财务报表,另外数据如何估值和货币化需要财务和金融方面的知识,最近在学习财务,金融和法律。打算先备考CPA,然后CFA,如果可能也想学习法律,备战律考。
  • 欢迎爱学习的同学朋友关注,也欢迎大家交流。全网同号【架构师研究会】

欢迎收藏  【全球IT瞭望】,【架构师酒馆】和【开发者开聊】.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/599754.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android ValueAnimator属性动画ObjectAnimator使View颜色渐变,Kotlin

Android ValueAnimator属性动画ObjectAnimator使View颜色渐变,Kotlin 设置背景颜色渐变: private var iv: ImageView? nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.activit…

如何使用 Python、Node.js 和 Go 创建基于 YOLOv8 的对象检测 Web 服务

1. 介绍 这是有关 YOLOv8 系列文章的第二篇。在上一篇文章中我们介绍了YOLOv8以及如何使用它,然后展示了如何使用 Python 和基于 PyTorch 的官方 YOLOv8 库创建一个 Web 服务来检测图像上的对象。 在本文中,将展示如何在不需要PyTorch和官方API的情况下…

IDEA 2023快捷键

1、main | sout | psvm 2、CTALD 复制当前行 3、ALT SHIFT ↕ 可以把当前行代码进行移动 4、CTRLH 类的继承继承结构 5、CTRLF12 类的成员 6、 SHIFTF6 统一修改变量 7、CTRLATLH 方法调用层级 8、ALT1 是否展示左侧菜单 9、ALTinsert 生成一些代码 10、CTRLP 提示参数…

【React系列】Redux(二)中间件

本文来自#React系列教程:https://mp.weixin.qq.com/mp/appmsgalbum?__bizMzg5MDAzNzkwNA&actiongetalbum&album_id1566025152667107329) 一. 中间件的使用 1.1. 组件中异步请求 在之前简单的案例中,redux中保存的counter是一个本地定义的数据…

给新手的25个建议

前言 最近知乎上,有一位大佬邀请我回答下面这个问题,看到这个问题我百感交集,感触颇多。 在我是新人时,如果有前辈能够指导方向一下,分享一些踩坑经历,或许会让我少走很多弯路,节省更多的学习的…

2024最新阿里云服务器地域(城市)对照表

2024年阿里云服务器地域分布表,地域指数据中心所在的地理区域,通常按照数据中心所在的城市划分,例如华北2(北京)地域表示数据中心所在的城市是北京。阿里云地域分为四部分即中国、亚太其他国家、欧洲与美洲和中东&…

Nginx 的 gzip 压缩

目录 1. 为什么要开启gzip 压缩 2.对网站配置文件进行修改 1. 为什么要开启gzip 压缩 nginx使用gzip压缩主要是为了降低网站的带宽消耗和提升访问速度。通过对页面进行压缩,可以减少传输的数据量,从而减少网络传输的时间和带宽消耗。 当浏览器接收到压…

Java常用API

一、实体JavaBean 接下来,我们学习一个面向对象编程中,经常写的一种类——叫实体JavaBean类。我们先来看什么是实体类? 1. 什么是实体类? 实体类就是一种特殊的类,它需要满足下面的要求: 接下来我们按照…

burpsuite 爆破

靶场搭建:phpstudy的安装与靶场搭建 - junlin623 - 博客园 (cnblogs.com) 账号字典:XXTK: 一些弱口令、fuzz字典 (gitee.com) 网盘链接:https://pan.baidu.com/s/1v5pAwaTwoeCnJgkUXf3iLQ?pwd=mllm 提取码:mllm --来自百度网盘超级会员V2的分享 一、暴力破解 - 基于…

将Django项目从本地上传至宝塔服务器(踩坑记录)

文章目录 写在前面配置本地文件配置宝塔面板解决遇到问题展示运行结果热门文章 自我介绍 ⭐2022年度CSDN 社区之星 Top6 ⭐2023年度CSDN 博客之星 Top16 ⭐2023年度CSDN 城市之星 Top2(苏州) ⭐CSDN Python领域 优质创作者 ⭐CSDN 内容合伙人 推荐热门…

jmeter下载及安装配置

📢专注于分享软件测试干货内容,欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢软件测试面试题分享: 1000道软件测试面试题及答案📢软件测试实战项目分享: 纯接口项目-完…

lvs+keepalived+nginx实现四层负载+七层负载

目录 一、lvs配置 二、nginx配置 三、测试 3.1 keepalived负载均衡 3.2 lvskeepalived高可用 3.3 nginx高可用 主机IPlvs01-33 11.0.1.33 lvs02-3411.0.1.34nginx0111.0.1.31nginx0211.0.1.32VIP11.0.1.30 4台主机主机添加host [rootnginx01 sbin]# cat /etc/hosts 127.0.0.…

【力扣每日一题】力扣2478从链表中移除节点

题目来源 2478.从链表中移除节点 题目描述 给你一个链表的头节点 head 。 移除每个右侧有一个更大数值的节点。 返回修改后链表的头节点 head 。 示例 示例1: 输入:head [5,2,13,3,8] 输出:[13,8] 解释:需要移除的节点是 5 …

针对CSP-J/S的冲刺练习:Day 4 提高题

一、审题 时间限制:1000ms 内存限制:256MB 平均AC率:7.89% 题目描述 输出一个n*n大小的螺旋矩阵。 螺旋矩阵的样子: 输入描述 共一行,一个正整数n,表示矩阵变长的长度 输出描…

【电路笔记】-电感器

电感器 文章目录 电感器1、概述2、电感器的时间常数3、电感器示例1 电感器是一种由线圈组成的无源电气元件,其设计目的是利用电流通过线圈而产生的磁力和电力之间的关系。 1、概述 在本中,我们将看到电感器是一种电子元件,用于将电感引入到电…

使用Apache Commons Chain实现命令模式

第1章:引言 大家好,我是小黑。今天咱们来聊聊一个挺有意思的话题:如何用Apache Commons Chain实现命令模式。首先,得先搞明白什么是命令模式,对吧?命令模式,它其实是一种设计模式,主…

嵌入式科普(9)vscode无法跳转和恢复默认配置

一、目的/概述 二、解决办法 2.1 使能Intelli Sense Engine 2.2 vscode恢复默认配置 2.3 c/c与clangd冲突 嵌入式科普(9)vscode无法跳转和恢复默认配置 一、目的/概述 1、2024年的第一天突然vscode无法跳转,莫名其妙 2、尝试了各种设置和插件都无效,卸…

快递物流怎么寄最便宜?你一定要知道的5个方法 !

家人们,临近年关,大家的钱包是不是鼓鼓的了,难免的亲戚朋友之间会相互寄送一些东西,所以最近因为需要经常寄快递物流,小编所以特地整理了5个我们平时个人寄快递便宜的方法攻略,推荐第五个,实用干…

【Java集合篇】HashMap 在 get 和 put 时经过哪些步骤

HashMap在get和put时经过哪些步骤? ✔️ 典型解析✔️get方法✔️put方法✔️ 拓展知识仓✔️ HashMap如何定位key✔️ HashMap定位tablelndex的骚操作作✔️HashMap的key为null时,没有hashCode是如何存储的?✔️ HashMap的value可以为null吗? 有什么优缺点讷? …

群太多,有什么办法可以定时、批量、标签分类群发的吗?

你或许会遇到微信群组过多而导致管理困难等问题吗?对于如何高效地管理众多微信群组,实现分类管理同样具有不可忽视的重要性。 实际上,对此问题小编收到了部分朋友的疑问:“既然可以为微信好友添加标签,那为何不能为微…