【ray】 分布式计算的搭建和调用以及项目实践

news2024/9/28 5:27:23

目录

  • 0 RAY相关资料
  • 1 ray的简要介绍
  • 2 ray的搭建
  • 3 ray的调用
  • 4 实践代码分析
    • 4.1 ray的配置
    • 4.2 代码中使用ray

0 RAY相关资料

ray 官网:https://docs.ray.io/en/latest/index.html

Ray分布式计算框架详解:https://zhuanlan.zhihu.com/p/460600694

b站视频:https://www.bilibili.com/video/BV1bP41167x7/

1 ray的简要介绍

Ray是UC Berkeley RISELab新推出的高性能分布式的 Python 框架。该框架能够与 PyTorch 配对,是一款面向AI应用的分布式计算框架。

以100个视频的处理为例,利用ray框架将4台机器连接起来测试。全局调度器将100个任务根据机器性能自动分发给不同的机器,A机器32个任务,B机器16个任务,C机器36个任务,D机器处理16个任务,其中每台机器并行处理。

在这里插入图片描述

2 ray的搭建

1、将Anaconda安装至同一根目录下,将计算引擎放置在同一根目录下,连接同一网络,确保处于同一局域网下(注意:ray框架要求环境安装位置与命名相同才可进行多台服务器集群);

2、在多台服务器中创建相同命名的虚拟环境(以moon为例),python版本为同一版本;

3、进入moon虚拟环境;
输入命令:conda activate moon

4、下载ray及项目所需其他依赖包;
输入命令:pip install ray==2.3.0 -i https://pypi.tuna.tsinghua.edu.cn/simple

5、查看服务器ip地址,并将其中一台设置为头节点;
输入命令:ray start --head --node-ip-address xx.xx.xx.155

6、查看服务器ip地址,并将其余服务器设置为从节点;
输入命令:
ray start --address=“xx.xx.xx.155:6379”–node-ip-address=“xx.xx.xx.211”
其中–address=“头结点的ip地址:头结点的端口号”,–node-ip-address=“从节点的ip地址”

7、查看集群部署的cpu总核数,若cpu总核数与集群中设置的头节点+从节点的总核数相同,则集群无误。直接在主节点调用计算引擎,即可实现并发;
查看集群部署的cpu总核数命令:ray status

8、终止已启动的进程。
输入命令:ray stop

3 ray的调用

1、在原代码的基础上加入获取正在执行 Python 的系统主机名:
res = socket.gethostbyname(socket.gethostname())
ray.init(_node_ip_address=res)

2、并在需要并行运行的方法前加上:
@ray.remote

3、调用主方法改为
XX.remote
普通方法调用:
在这里插入图片描述

基于ray的分布式方法调用:
在这里插入图片描述

4 实践代码分析

这里我暂时只能展示项目中的代码

4.1 ray的配置

首先,有四台连着局域网的机器:

xx.xx.xx.247
xx.xx.xx.248
xx.xx.xx.249
xx.xx.xx.250

每台机器都需要进入到moon环节

conda activate moon

使用xx.xx.xx.247作为头节点

ray start --head --node-ip-address xx.xx.xx.247

从节点:
xx.xx.xx.248

ray start --address="xx.xx.xx.247:6379" --node-ip-address="xx.xx.xx.248"

xx.xx.xx.249

ray start --address="xx.xx.xx.247:6379" --node-ip-address="xx.xx.xx.249"

xx.xx.xx.250

ray start --address="xx.xx.xx.247:6379" --node-ip-address="xx.xx.xx.250"

4.2 代码中使用ray

下面给是相关代码
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
项目运行后的样子:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

OpenLayers入门,地图全图显示经纬度网格标记线

专栏目录: OpenLayers入门教程汇总目录 前言 使用OpenLayers实现地图全图显示经纬度网格标记线。方便查看可视区域所处的经纬度区间。 二、依赖和使用 "ol": "^6.15.1"使用npm安装依赖npm install ol@6.15.1使用Yarn安装依赖yarn add olvue中如何使用…

MODBUS-TCP转Ethernet IP 网关连接空压机 配置案例

本案例是工业现场应用捷米特JM-EIP-TCP的Ethernet/IP转Modbus-TCP网关连接欧姆龙PLC与空压机的配置案例。使用设备:欧姆龙PLC,捷米特JM-EIP-TCP网关, ETHERNET/IP 的电气连接 ETHERNET/IP 采用标准的 T568B 接法,支持直连和交叉接…

github Recv failure: Connection reset by peer

Recv failure: Connection reset by peer 背景处理ping一下github网页访问一下github项目git配置git ssh配置再次尝试拉取 疑惑点待研究参考 背景 晚上敲着代码准备提交,执行git pull,报错Recv failure: Connection reset by peer。看着这报错我陷入了沉…

Spring Cloud Eureka 服务注册和服务发现超详细(附加--源码实现案例--及实现逻辑图)

文章目录 EurekaEureka组件可以实现哪些功能什么是CAP原则?服务注册代码实战搭建注册中心服务A搭建服务B搭建启动服务启动注册中心启动服务A启动服务B 结束语 Eureka 这篇文章先讲述一下Eureka的应用场景、代码实现案例,多个服务模块注册到Euraka中&…

QT多线程的示例

想象现在有一个场景,一共有三个线程线程A需要产生1000以内的随机数,线程B需要对这些随机数进行冒泡排序,线程C需要对这些随机数进行快速排序,主线程用来显示线程A的随机数,并且显示线程A和线程B的处理结果,…

机器学习 | Python实现NARX模型预测控制

机器学习 | Python实现NARX模型预测控制 目录 机器学习 | Python实现NARX模型预测控制效果一览基本介绍研究内容程序设计参考资料效果一览 基本介绍 机器学习 | Python实现NARX模型预测控制 研究内容 贝叶斯黑盒模型预测控制,基于具有外源输入的非线性自回归模型的预期自由能最…

后端通过CorsRegistry对象配置了全局跨域,但是前端仍然报CORS跨域错误

后端通过CorsRegistry配置了全局跨域,但是前端仍然报CORS跨域错误 问题背景 在实现登录功能时,我先是通过CorsRegistry配置了全局跨域,然后配置了一个登录拦截器后前端就报错CORS跨域错误 问题原因 前置知识 首先我们来了解一下什么是跨域错误…

hw技战法整理参考

目录 IP溯源反制 账户安全策略及预警 蜜罐部署联动方案

【42万字,2902页】全网最全《零基础网络安全/黑客自学笔记》,爆肝分享!

这次为大家带来一份零基础也能学会的《全网最全黑客自学笔记》,“全网最全”可不是吹牛的,整个笔记一共42万字,2902页,95个章节。 这份笔记涵盖了网络安全导论、渗透测试基础、网络基础、Linux操作系统基础、web安全等等入门知识…

基于应用值迭代的马尔可夫决策过程(MDP)的策略的机器人研究(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

【SSM】问题集锦(持续更新)

目录 1.错误500:Servlet.init() for servlet DispatcherServlet threw exception Error creating bean with name ‘sqlSessionFactory’ defined in class path reso 主要解决方法可参考这篇文章 我自己的问题是因为spring上下文应用程序关联问题 2.org.apache.c…

带你了解什么是XxxxMapper.xml-SQL 映射文件

文章目录 XxxxMapper.xml-SQL 映射文件官方文档XxxMapper.xml-基本介绍SQL 映射文件常用的几个顶级元素(按照应被定义的顺序列出): XxxMapper.xml-详细说明新建Module xml-mapper代码准备基本使用parameterType(输入参数类型)parameterType(输…

新产品:Stimulsoft Forms 2023.3.1 Crack

Stimulsoft Forms 是一个用于交互式收集和处理用户数据的组件。表单工具可以轻松集成到您的项目或应用程序中,具有直观且用户友好的界面,并允许您创建丰富的表单模板。Stimulsoft Forms 是应用程序中与用户交互的新水平 什么是 Stimulsoft Forms&#xf…

[JAVAee]文件操作-IO

本文章讲述了通过java对文件进行IO操作 IO:input/output,输入/输出. 建议配合文章末尾实例食用 目录 文件 文件的管理 文件的路径 文件的分类 文件系统的操作 File类的构造方法 File的常用方法 文件内容的读写 FileInputStream读取文件 构造方法 常用方法 Scan…

VLAN原理(Virtual LAN 虚拟局域网)

VLAN(Virtual LAN 虚拟局域网) 1、广播/广播域 2、广播的危害:增加网络/终端负担,传播病毒, 3、如何控制广播?? ​ 控制广播隔离广播域 ​ 路由器物理隔离广播 ​ 路由器隔离广播缺点&…

BLE配对和绑定

参考:一篇文章带你解读蓝牙配对绑定 参考:BLE安全之SM剖析(1) 参考:BLE安全之SM剖析(2) 参考:BLE安全之SM剖析(3) 目录 前言基本概念解读Paring(配对)Bonding(绑定)STK短期秘钥、LTK长期秘钥等 …

通过案例实战详解elasticsearch自定义打分function_score的使用

前言 elasticsearch给我们提供了很强大的搜索功能,但是有时候仅仅只用相关度打分是不够的,所以elasticsearch给我们提供了自定义打分函数function_score,本文结合简单案例详解function_score的使用方法,关于function-score-query…

const对象不能调用其他非const成员函数,const成员函数不能调用其他非const成员,

在C语言中我们知道const关键字修饰的变量具有常量属性,简称常变量。即修饰后的变量不能再次修改,而C中是兼容C语言的,同样具备该特性,但C引入了引用(&)所以const的用法就更多了。 我们知道引用的对象必…

rust 闭包函数

函数有自己的类型,可以像使用基础类型一样使用函数,包括将函数保存在变量中、保存在 vec 中、声明在结构体成员字段中。闭包函数也是函数,也有自己的类型定义。不过,函数实际上是指针类型,在 rust 所有权中属于借用的关…

主从搭建失败的原因

1、Slave_IO_Running是connecting,Slave_SQL_Running是yes 是因为从机使用配置的主机信息没有登陆到主机里面!修改(从机里面) 2、Slave_IO_Running是yes,Slave_SQL_Running是no 原因是主机和从机里的数据不一致: 导致&#xff…