【MLOps】使用Ray缩放AI

Ray正在人工智能工程领域崭露头角,对扩展LLM和RL至关重要

Spark在数据工程中几乎是必不可少的。Ray正在人工智能工程领域崭露头角。

雷是伦敦大学学院Spark的继任者。Spark和Ray有很多相似之处,例如用于计算的统一引擎。但Spark主要专注于大规模数据分析,而Ray则是为机器学习应用程序设计的。

在这里,我将介绍Ray,并介绍如何使用Ray扩展大型语言模型(LLM)和强化学习(RL),然后总结Ray的怀旧和趋势。

Ray简介

Ray是一个开源的统一计算框架,可以轻松扩展人工智能和Python的工作负载,从强化学习到深度学习,再到模型调整和服务。

下面是Ray的最新架构。它主要有三个组件:Ray Core、Ray AI Runtime和Storage and Tracking。

Ray 2.x and Ray AI Runtime (AIR) (Source: January 2023 Ray Meetup)

Ray Core为构建和扩展分布式应用程序提供了少量核心原语(即任务、参与者、对象)。

Ray AI Runtime(AIR)是一个可扩展的统一ML应用工具包。AIR能够简单地扩展单个工作负载、端到端工作流和流行的生态系统框架,所有这些都只需使用Python。

AIR建立在Ray一流的预处理、培训、调整、评分、服务和强化学习库的基础上,将集成生态系统整合在一起。

Ray实现了工作负载从笔记本电脑到大型集群的无缝扩展。Ray集群由单个头节点和任意数量的连接辅助节点组成。工作节点的数量可以根据Ray集群配置指定的应用程序需求进行自动缩放。头节点运行自动缩放器。

我们可以提交作业以在Ray集群上执行,也可以通过连接到头部节点并运行Ray.init来交互使用集群。

启动并运行Ray很简单。下面将说明如何安装它。

安装Ray

$ pip install ray
████████████████████████████████████████ 100%
Successfully installed ray
$ python
>>>import ray; ray.init()... INFO worker.py:1509 -- Started a local Ray instance. View the dashboard at 127.0.0.1:8265 ...

Install Ray libraries

pip install -U "ray[air]" # installs Ray + dependencies for Ray AI Runtime
pip install -U "ray[tune]"  # installs Ray + dependencies for Ray Tune
pip install -U "ray[rllib]"  # installs Ray + dependencies for Ray RLlib
pip install -U "ray[serve]"  # installs Ray + dependencies for Ray Serve

此外,Ray可以在Kubernetes和云虚拟机上大规模运行。

使用Ray缩放LLM和RL

ChatGPT是一个重要的人工智能里程碑,具有快速增长和前所未有的影响力。它建立在OpenAI的GPT-3大型语言模型家族(LLM)的基础上,采用了Ray。

OpenAI首席技术官兼联合创始人Greg Brockman表示,在OpenAI,我们正在解决世界上一些最复杂、最苛刻的计算问题。Ray为这些最棘手的问题提供了解决方案,并使我们能够比以前更快地大规模迭代。

在SageMaker培训平台的240 ml.p4d.24个大型实例上训练GPT-3大约需要25天。挑战不仅在于处理,还在于记忆。Wu Tao 2.0似乎只需要1000多个GPU来存储其参数。

训练ChatGPT,包括像GPT-3这样的大型语言模型,需要大量的计算资源,估计要花费数千万美元。通过授权ChatGPT,我们可以看到Ray的可扩展性。

Ray试图解决具有挑战性的ML问题。它从一开始就支持培训和服务强化学习模式。

让我们用Python编写代码,看看如何训练大规模的强化学习模型,并使用Ray serve为其提供服务。

步骤1:安装强化学习策略模型的依赖项。

!pip install -qU "ray[rllib,serve]" gym

第二步:定义大规模强化学习策略模型的培训、服务、评估和查询。

import gym
import numpy as np
import requests# import Ray-related libs
from ray.air.checkpoint import Checkpoint
from ray.air.config import RunConfig
from ray.train.rl.rl_trainer import RLTrainer
from ray.air.config import ScalingConfig
from ray.train.rl.rl_predictor import RLPredictor
from ray.air.result import Result
from ray.serve import PredictorDeployment
from ray import serve
from ray.tune.tuner import Tuner# train API for RL by specifying num_workers and use_gpu
def train_rl_ppo_online(num_workers: int, use_gpu: bool = False) -> Result:print("Starting online training")trainer = RLTrainer(run_config=RunConfig(stop={"training_iteration": 5}),scaling_config=ScalingConfig(num_workers=num_workers, use_gpu=use_gpu),algorithm="PPO",config={"env": "CartPole-v1","framework": "tf",},)tuner = Tuner(trainer,_tuner_kwargs={"checkpoint_at_end": True},)result = tuner.fit()[0]return result# serve RL model
def serve_rl_model(checkpoint: Checkpoint, name="RLModel") -> str:""" Serve an RL model and return deployment URI.This function will start Ray Serve and deploy a model wrapperthat loads the RL checkpoint into an RLPredictor."""serve.run(PredictorDeployment.options(name=name).bind(RLPredictor, checkpoint))return f"http://localhost:8000/"# evaluate RL policy
def evaluate_served_policy(endpoint_uri: str, num_episodes: int = 3) -> list:""" Evaluate a served RL policy on a local environment.This function will create an RL environment and step through it.To obtain the actions, it will query the deployed RL model."""env = gym.make("CartPole-v1")rewards = []for i in range(num_episodes):obs = env.reset()reward = 0.0done = Falsewhile not done:action = query_action(endpoint_uri, obs)obs, r, done, _ = env.step(action)reward += rrewards.append(reward)return rewards# query API on the RL endpoint
def query_action(endpoint_uri: str, obs: np.ndarray):""" Perform inference on a served RL model.This will send an HTTP request to the Ray Serve endpoint of the servedRL policy model and return the result."""action_dict = requests.post(endpoint_uri, json={"array": obs.tolist()}).json()return action_dict

步骤3:现在训练模型,使用Ray serve为其服务,评估服务的模型,最后关闭Ray serve。

# training in 20 workers using GPU
result = train_rl_ppo_online(num_workers=20, use_gpu=True)# serving
endpoint_uri = serve_rl_model(result.checkpoint)# evaluating
rewards = evaluate_served_policy(endpoint_uri=endpoint_uri)# shutdown
serve.shutdown()

Ray怀旧与潮流

Ray是作为UCB RISELab的一个研究项目启动的。RISELab是Spark诞生地AMPLab的继任者。

Ion Stoica教授是Spark和Ray的灵魂。他开始以Spark和Anyscale为核心产品创建Databricks。

我有幸在RISELab的早期阶段与研究员合作,见证了Ray的诞生。

Ray's project post at the conference 2017 (Photo courtesy by author)

以上是雷在2017年的项目帖子。我们可以看到,它非常简单,但对于人工智能应用程序来说功能强大。

雷是一艘恒星飞船,正在增殖。它是增长最快的开源之一,正如下面Github的星级数量所示。

Ray正在人工智能工程领域崭露头角,是扩展LLM和RL的重要工具。Ray为未来巨大的人工智能机会做好了准备。

本文:【MLOps】使用Ray缩放AI | 开发者开聊

自我介绍

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

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

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

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

相关文章

【Python机器学习】k近邻——模型复杂度与泛化能力的关系

以某数据进行研究,先将数据集分为训练集和测试集,然后用不同的邻居数对训练集合测试集的新能进行评估: from sklearn.datasets import load_breast_cancer from sklearn.model_selection import train_test_split from sklearn.neighbors imp…

go执行静态二进制文件和执行动态库文件

目的和需求:部分go的核心文件不开源,例如验证,主程序核心逻辑等等 第一个想法,把子程序代码打包成静态文件,然后主程序执行 子程序 package mainimport ("fmt""github.com/gogf/gf/v2/os/gfile"…

ReCAPTCHA 解决方案的自动识别和解决方法

ReCAPTCHA,作为广泛使用的安全措施,旨在区分人类和自动化机器人。然而,技术的进步导致了自动识别和解决 ReCAPTCHA 挑战的方法的发展。在本文中,我们将探讨自动 ReCAPTCHA 识别和解决技术的概念,以及创新解决方案 Caps…

Yapi部署指南:在 Linux 上 Yapi 教程

YApi YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单…

题目:最大数组和(蓝桥OJ 3260)

问题描述: 解题思路: 官方: 总结:使用模拟。排序数组,枚举删除最大个数并推出其删除最小个数 ,即可枚举出每一种可能的区间和,依次比较找最大区间和(使用前缀和求区间和O(1)…

MySQL数据管理(一)

一、列类型 列类型指规定数据库中该列存放的数据类型 列类型分类 数值类型字符串类型日期和时间型数值类型 数值类型 字符串类型 日期和时间类型 MySQL允许“不严格”语法,任何标点符号都可以作为日期部分之间的间隔符,如“24-01-03”、“24.01.03”…

SSM建材商城网站----计算机毕业设计

项目介绍 本项目分为前后台,前台为普通用户登录,后台为管理员登录; 管理员角色包含以下功能: 管理员登录,管理员管理,注册用户管理,新闻公告管理,建材类型管理,配货点管理,建材商品管理,建材订单管理,建材评价管理等功能。 用…

VCoder:大语言模型的眼睛

简介 VCoder的一个视觉编码器,能够帮助MLLM更好地理解和分析图像内容。提高模型在识别图像中的对象、理解图像场景方面的能力。它可以帮助模型显示图片中不同物体的轮廓或深度图(显示物体距离相机的远近)。还能更准确的理解图片中的物体是什…

C#如何将本地文件上传至阿里云OSS中

要想将文件上传至OSS,那么阿里云的AccessKeyId和AccessKeySecret必不可少 一.去哪找AccessKeyId和AccessKeySecret 进入阿里云工作台,点击右上角头像,选择AccessKey管理,就能看到ID了 但是Secret目前阿里云不支持查看了&#xf…

labelme读取文件顺序

labelme版本4.5.10 labelme的目录结构 labelme通过在__main__.py中调用app.py,启动程序读取文件列表的部分在app.py的imageList函数中 def imageList(self):lst []for i in range(self.fileListWidget.count()):item self.fileListWidget.item(i)lst.append(ite…

应用系统如何集成和扩展开源工作流引擎

目前主流的开源流程引擎有activiti、flowable、camunda等,这几个开源流程引擎的版本很多,哪个开源流程引擎哪个版本的功能更多、性能更好,该如何选择请参考:https://lowcode.blog.csdn.net/article/details/116405594 无论您选择…

AR技术改变汽车行业,AR看车、AR车书、AR售后维修震撼登场!

引言: 随着中国汽车市场步入存量发展阶段,车企正迎来新的机遇和挑战。这一发展意味着庞大的汽车后市场需求,同时也要求企业和经销商能够快速响应市场需求,提供高质量的服务。而培养具备全面技能的成熟售后服务人员需要企业投入大…

HubSpot电子邮件:数字化时代的营销利器

在当今数字化时代,电子邮件仍然是企业与客户之间沟通的重要手段之一。而HubSpot电子邮件作为HubSpot全方位解决方案的一部分,不仅简化了营销流程,更为企业提供了强大的工具,助力建立更紧密的客户关系。本文将深入探讨HubSpot电子邮…

深度学习在工地安全帽识别技术的应用与展望

当我们谈论“工地安全帽识别”时,实际上我们在探讨的是如何利用深度学习图像识别技术来提高建筑工地的安全性。这一技术的应用可以显著提高工地安全管理的效率和有效性,是现代建筑工程管理中不可或缺的一部分。以测评的北京富维图像的工地安全帽识别为例…

小兔鲜儿 uniapp - SKU 模块

目录 存货单位(SKU)​ 插件市场​ 下载 SKU 插件​ 使用 SKU 插件​ 插件类型问题​ 核心业务​ 渲染商品规格​ 打开弹窗交互​ 渲染被选中的值​ 存货单位(SKU)​ SKU 概念 存货单位(Stock Keeping Unit&a…

BUUCTF--gyctf_2020_borrowstack1

这是一题栈迁移的题目,先看看保护: 黑盒测试: 用户可输入两次内容,接着看看IDA中具体程序流程: 我们看到溢出内容只有0x10的空间给我们布局,这显然是不足以我们布置rop的。因此肯定就是栈迁移了。迁到什么地…

Vue3地图选点组件

Vue3地图选点组件 <template><div style"width: 100%; height: 500px"><div class"search-container"><el-autocompletev-model"suggestionKeyWord"class"search-container__input"clearable:fetch-suggestion…

error:0308010C:digital envelope routines::unsupported 前端项目错误

直接启动命令中增加&#xff1a; SET NODE_OPTIONS--openssl-legacy-provider && vue-cli-service serve

猫咪主食冻干K9、希喂、SC生骨肉冻干哪款好?详细对比测评这三款产品

随着科学养猫的观念深入人心&#xff0c;越来越多的铲屎官开始关注猫咪主食的营养与健康。主食冻干&#xff0c;作为一种模拟猫咪原始猎食的食品&#xff0c;因其高营养保留而受到广大猫奴的喜爱。相比传统的膨化猫粮&#xff0c;主食冻干更符合猫咪的饮食天性&#xff0c;提供…

计算机Java项目|基于SSM实现的在线考试系统

项目编号&#xff1a;L-BS-ZXBS-04 一&#xff0c;环境介绍 语言环境&#xff1a;Java: jdk1.8 数据库&#xff1a;Mysql: mysql5.7 应用服务器&#xff1a;Tomcat: tomcat8.5.31 开发工具&#xff1a;IDEA或eclipse 后台框架&#xff1a;Spring、SpringMVC、MyBatis …