ChatGPT背后的开源AI框架Ray,现在值10亿美元

news2024/10/6 11:21:03

Ray 被 OpenAI、亚马逊等科技公司用来开发大模型,是最近异军突起的框架。

最近一段时间,文本生成的人工智能在互联网上掀起了一阵风暴:ChatGPT 因为可以对人们能想到的几乎任何问题提供非常详细、近乎逼真的回答而受到追捧。大模型应用的出现让人们对于 AI 技术突破充满了信心,不过很少有人知道在其背后,一个分布式机器学习框架正为这场生成式 AI 革命提供动力。

分布式计算框架 Ray 来自 A16z 支持的初创公司 Anyscale,它是使 OpenAI 能够强化其训练 ChatGPT 等模型的关键。在 OpenAI 最近的所有大型语言模型背后都有 Ray 的身影 —— 它可能也会是 OpenAI 备受期待的 GPT-4 背后的框架。随着大模型技术的不断落地,业内人士认为通过生成接近人类的内容,一个价值数十亿美元的产业正在形成。

在这一领域,Ray 是影响力最大的框架。在它出现之前,OpenAI 使用自定义工具集合来开发大模型。但 OpenAI 总裁 Greg Brockman 在今年早些时候的 Ray 峰会上就表示,随着面临的挑战增多,该公司已转而使用 Ray。

软件公司 Weights & Biases 的 CEO Lukas Biewald 认为,Ray 已是 AI 世界中炙手可热的后起之秀。「因为新工具出现,你可以在笔记本电脑和大型分布式服务器上运行相同代码。这是巨大的改变,随着模型变得更大,它的重要性也会随之增加,」Biewald 表示。

十亿美元的赌注

随着技术的成熟,Ray 引来了资本市场的关注。Anyscale 的股权成为了一种稀缺的商品,据 Business Insider 报道,有知情人士称,其最近一轮融资是 C 轮融资的延伸,估值超过 10 亿美元,几天内就结束了。

一些投资者将 Anyscale 描述为 Horowitz 充满希望的「下一个 Databricks」—— 这个描述看来不无道理,因为这家初创公司的创始人之一 Ion Stoica 是市值 310 亿美元的数据巨头 Databricks 的联合创始人。

「人工智能的发展速度令人难以置信,人们一直在尝试新方法,」Anyscale 首席执行官 Robert Nishihara 表示。「ChatGPT 结合了此前大语言模型上的大量工作。在此基础上,你需要拥有能够实现灵活性、快速创新,并扩展不同算法和方法的基础设施。」

由于像 ChatGPT 这样热门的新工具背后是越来越大的模型,科技公司不得不重新考虑从头开始开发 AI 的方式。Ray 应运而生,使训练这些庞大的模型变得更加容易,并且可以包含数千亿个数据点,让每个响应都具有准栩栩如生的感觉。

Ray 如何成为机器学习的首选工具

Ray 是一个基于内存共享的分布式计算框架,适用于细粒度的并行计算和异构计算,其提供了一个底层基础架构,用于管理分配机器学习模型训练工作的复杂任务。

在 2017 年,UC Berkeley 的研究人员首次提交了 Ray 的论文《 Ray: A Distributed Framework for Emerging AI Applications 》:

  • 论文链接:https://arxiv.org/abs/1712.05889

  • GitHub:https://github.com/ray-project/ray

在该工作中,研究人员预测了下一代 AI 应用程序的形态:与环境存在连续的交互,并从交互动作中进行学习。这些应用必然越来越多地在动态环境中来完成任务,根据环境的变化作出反应,并执行一系列的动作来达到长期目标。这些特性对于运行环境性能和灵活性等方面提出了全新且苛刻的系统要求,因此研究者提出了基于分布式的 Ray 框架。

Ray 实现了统一接口,可以表达任务并行和基于参与者的计算,由单个动态执行引擎支持。为了满足性能要求,Ray 采用分布式调度程序和分布式容错存储来管理系统的控制状态。它是首个将训练、仿真和服务统一起来的分布式计算框架,基于动态任务执行引擎统一了角色并行(actor)和任务并行(task)的计算,并保障了框架的高可扩展性和高容错性。

Ray 的架构。

基于该工作,2019 年 12 月,UC Berkeley 的 Robert Nishihara、Philipp Moritz 和 Ion Stoica 以及伯克利教授 Michael I. Jordan 创立了 Anyscale,迄今为止该公司已融资 2.6 亿美元。

机器学习从业者通常可以在自己的笔记本电脑上运行使用有限数据集的小型模型,例如预测用户购买产品的简单模型。然而,像 ChatGPT 这样的超大型模型,笔记本电脑是行不通的,这些模型需要大量服务器来训练。

使用大量设备训练一个模型要面对一个重要挑战 —— 在不同硬件上协调训练。而 Ray 恰好解决了这个难题,它为从业者提供了一种将不同硬件作为一个单元来管理的机制,用于确定什么数据去哪里,处理故障等等,硬件种类横跨谷歌云、AWS 和其他处理相同问题的产品组合。此外,Ray 还将其他语言中的一个关键编程概念「actor」扩展到 Python,众所周知 Python 是机器学习程序的首选语言。

作为一个分布式计算框架,Ray 有两个关键优势,分别是位置感知(Locality-aware)和任务分配(task placement)。如下图所示,Ray 能够横向扩展系统,以支持高吞吐量的细粒度任务,同时保持容错和低延迟任务调度。

Ray 为 OpenAI 训练大模型消除了巨大的复杂性,为该公司腾出更多时间和精力专注于模型的关键能力。

新一代 AI 需要新的开发工具,Ray 只是一系列迅速兴起的下一代机器学习工具中的一个,这些工具正在迅速颠覆 AI 的开发方式。例如,Google 的 JAX 框架也获得了巨大关注,JAX 有望成为谷歌核心机器学习工具的支柱,已经在 DeepMind 和 Google Brain 被广泛采用。

类似地,由 FirstMark Capital 和 Bessemer Venture Partners 支持的初创公司 Coiled 开发了一个名为 Dask 的并行计算框架。

近来大型语言模型正在释放更多潜力,这些新型机器学习工具将为业内科技巨头和初创公司构建更强大的语言模型。

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

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

相关文章

Mapper代理开发案例及MyBatis核心

本片文章需要参考我的前一篇文章:MyBatis入门案例引入总结,使用mapper代理开发的好处就是可以解决开发中硬编码的问题和简化后期的SQL执行。使用这种方式可以不用写接口的实现类,免除了复杂的方法,使得代码更加清晰易懂按照以前的…

vue的过渡动画(有vue的动画库和ui库的介绍)

一、概念 Vue 在插入、更新或者移除 DOM 时&#xff0c;提供多种不同方式的应用过渡效果。 二、默认过渡 <template><div><button click"isShow!isShow">显示/隐藏</button><transition appear><h1 v-show"isShow" cl…

过滤器和拦截器的使用及管理

参考&#xff1a;(70条消息) Spring过滤器和拦截器的区别_yjc0403的博客-CSDN博客https://www.cnblogs.com/colin220/p/9606412.htm概述过滤器&#xff1a;是在javaweb中&#xff0c;你传入的request、response提前过滤掉一些信息&#xff0c;或者提前设置一些参数&#xff0c;…

Anaconda安装之后Spyder打不开解决办法--目前有用 jupyter notebook 无法正常运行2023.1.7

纯纯小白&#xff0c;探索一天&#xff0c;终于成功&#xff0c;需要我的经历没有白费&#xff0c;让大家少走弯路。 问题描述 从官网下载Anaconda之后&#xff0c;安装&#xff0c;一切正常。打开Anaconda navigator在弹出窗口选择了更新&#xff08;我怀疑这就根源&#xf…

Js逆向教程24-作用域和自执行函数

作者&#xff1a;虚坏叔叔 博客&#xff1a;https://xuhss.com 早餐店不会开到晚上&#xff0c;想吃的人早就来了&#xff01;&#x1f604; Js逆向教程24-作用域和自执行函数 一、变量作用域 1.1局部变量 function jb() {var a"我是局部变量"return a; }1.2全局变…

【Java寒假打卡】Java基础-异常

【Java寒假打卡】Java基础-异常异常概述throws声明异常throw抛出异常try-catch 抛出异常throwable的成员方法异常概述 Exception:称之为异常类&#xff0c;他表示程序本身可以处理的问题 RuntimeException及其子类&#xff1a;运行时异常。&#xff08;空指针异常&#xff0c;…

JUC总结系列篇 (二) : 对线程的理解和使用总结

文章内容&#xff1a; 一.为什么需要多线程 二.线程的创建 三.线程的方法sleep(),run(),wait(),yeid(),join(),interrupt()等方法归纳总结 四.线程的状态及其转换 五.线程的交替执行案例 六.多个线程依次执行案例 七.多线程并发带来的线程安全问题 一.为什么需要多线程&#x…

Linux项目自动化构建工具-make/Makefile

一、前言 会不会写makefile&#xff0c;从一个侧面说明了一个人是否具备完成大型工程的能力。一个工程中的源文件不计数&#xff0c;其按类型、功能、模块分别放在若干个目录中&#xff0c;makefile定义了一系列的规则来指定&#xff0c;哪些文件需要先编译&#xff0c;哪些文件…

前端入门笔记 04 —— Web(html CSS)布局

响应式布局 屏幕尺寸变化&#xff0c;需要响应式网页设计RWD web页面适应不同屏幕宽度因素 液态站点&#xff0c;拉伸充满浏览器窗口 小屏幕挤成一团&#xff0c;大屏幕空白间隙过大固定宽度 像素为单位固定尺寸 小屏幕滚动&#xff0c;大屏幕空白 实现 设置meta标签媒体查…

数据结构入门5-1(数和二叉树)

目录 注 树和二叉树的定义 树的定义 树的基本术语 二叉树的定义 树和二叉树的抽象数据类型定义 二叉树的性质和存储结构 二叉树的性质 二叉树的存储结构 1. 顺序存储结构 2. 链式存储结构 遍历二叉树和线索二叉树 遍历二叉树&#xff08;traversing binary tree&a…

加密与安全

目录 一、编码算法 1.1、ASCII 1.1.1、ASCII简介 1.1.2、ASCII产生原因 1.1.3、表达方式 1.1.4、标准表 1.1.5、大小规则 1.2、Unicode 1.2.1简介 1.2.2编码和实现 1.3、汉字编码 1.3.1、GB2312-80 标准 1.3.2、GBK 编码标准 1.3.3、GB18030编码标准 1.4、URL编…

【Node】中Express框架连接Mysql实现用户注册接口

Node.js中Express框架连接Mysql实现用户注册接口 处理用户注册接口简单分为三步&#xff1a; 1、注册校验 2、完善逻辑 3、拆分模块 拆分模块能够使部分功能能够复用&#xff0c;封装好各个模块使得模块间只能通过有限的接口互相访问&#xff0c;从而降低耦合&#xff0c;拆分模…

LeetCode[1046]最后一块石头的重量

难度&#xff1a;简单 题目&#xff1a; 有一堆石头&#xff0c;每块石头的重量都是正整数。每一回合&#xff0c;从中选出两块最重的 石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果如下&#xff1a;如果 x …

『年度总结』时光如梭 | 再见 2022 | 你好 2023

⭐创作时间2022年12月31日⭐ ✨结果一直到现在才发&#xff0c;说真的写年度总结还是第一次写比较不熟练&#xff0c;去年有这个活动也有佬叫我参加&#xff0c;不过没参加。今年想着有时间来写下的&#xff0c;结果写到现在才发&#xff0c;这东西说真的挺难写的&#…

机器视觉(九):图像配准

目录&#xff1a; 机器视觉&#xff08;一&#xff09;&#xff1a;概述 机器视觉&#xff08;二&#xff09;&#xff1a;机器视觉硬件技术 机器视觉&#xff08;三&#xff09;&#xff1a;摄像机标定技术 机器视觉&#xff08;四&#xff09;&#xff1a;空域图像增强 …

python简单爬虫

爬虫真是一件有意思的事儿啊&#xff0c;之前写过爬虫&#xff0c;用的是urllib2、BeautifulSoup实现简单爬虫&#xff0c;scrapy也有实现过。最近想更好的学习爬虫&#xff0c;那么就尽可能的做记录吧。这篇博客就我今天的一个学习过程写写吧。 一 正则表达式 正则表达式是一…

格式化电脑重装系统怎么操作

​电脑一但中毒的电脑必须重装系统&#xff0c;而且需要格式化后重装系统&#xff0c;才能将病毒铲除&#xff0c;那么如何将电脑格式化后重装系统呢&#xff1f;能够实现电脑格式化重装系统的方法是U盘重装和光盘重装&#xff0c;由于部分电脑没有光驱&#xff0c;建议用U盘&a…

Redis常见集群方案

Redis常见集群方案 Redis集群方案目前主流的有三种&#xff0c;分别是Twemproxy、Codis和Redis Cluster。 Redis Cluster Redis Cluster 集群是去中心化通过客户端分片的结构&#xff0c;集群元数据信息分布在每个节点上&#xff0c;主备切换依赖于多个节点协商选主。 Red…

C++11之lambda表达式

文章目录一、引入原因二、lambda 表达式的语法1. lambda 表达式各部分说明2.捕捉列表说明三、lambda 表达式的本质一、引入原因 如果待排序元素为自定义类型&#xff0c;需要用户定义排序时的比较规则。 比如&#xff1a; struct Goods {string _name; // 名字double _pr…

idea调试npm、tomcat远程服务(包括docker部署方式)

前言 idea调试npm、tomcat远程服务&#xff1a;包括docker部署方式及非docker部署方式 博客地址&#xff1a;芒果橙的个人博客 【http://mangocheng.com】 调试npm项目 1. 新增一个npm项目 2. 配置package.json及启动脚本 3. debug模式启动 远程调试docker部署的项目 1. 配置…