Ray集群搭建 Python Demo

冷不防 2022-08-28 15:50 73阅读 0赞

目录

  • 准备条件(基于linux环境)

    • 参考文献
    • 例子-python Ray集群
      • 1.部署head节点
      • 2.部署worker节点
    • 部署Ray集群
    • 安装Ray(在所有节点上安装)
    • Ray工作原理
    • Ray的优势
    • Ray简介

准备条件(基于linux环境)

  • 这里部署2个节点的集群,准备2个linux环境,ip为

    192.168.2.165 worker节点(内存限制,本地安装只有一个CPU)
    192.168.2.220 head节点(内存限制,本地安装只有一个CPU)

  • 安装 python3:yum install python3

  • Ray学习文档地址:https://ray.readthedocs.io/en/latest/index.html
  • github地址:https://github.com/ray-project/ray

Ray简介

Ray是用于构建和运行分布式应用程序的快速,简单的框架。

Ray与以下库打包在一起,以加快机器学习的工作量:

Tune:可伸缩超参数调整
RLlib:可扩展的强化学习
Distributed Training :分布式培训

Ray的优势

  • 更省时,高效

普通的执行方式是这样的:
在这里插入图片描述

Ray:
在这里插入图片描述

Ray工作原理

在这里插入图片描述
该图片引用来自参考文献1:

安装Ray(在所有节点上安装)

  1. pip3 install ray

在这里插入图片描述

部署Ray集群

1.部署head节点

手动在head节点上启动:

  1. firewall-cmd --add-port=6379/tcp
  2. ray start --head --redis-port=6379

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM1MDYxMzM0_size_16_color_FFFFFF_t_70 4
在这个节点上启动Ray。您可以通过调用向集群添加其他节点:
(Started Ray on this node. You can add additional nodes to the cluster by calling)

  1. ray start --redis-address 192.168.2.220:6379

您可以通过运行Python将一个驱动程序连接到集群
(from the node you wish to add. You can connect a driver to the cluster from Python by running

  1. import ray
  2. ray.init(redis_address="192.168.2.220:6379")

如果从不同的机器连接有问题,请检查防火墙的配置是否正确。如果希望终止已启动的进程,请运行
(If you have trouble connecting from a different machine, check that your firewall is configured properly. If you wish to terminate the processes that have been started, run

  1. ray stop

2.部署worker节点

注意:这里的ip 192.168.2.220 是步骤1中head节点的ip

  1. firewall-cmd --add-port=6379/tcp
  2. ray start --redis-address 192.168.2.220:6379

在这里插入图片描述

日志存放目录:
/tmp/ray

例子-python Ray集群

  1. # -*- coding: utf-8 -*-
  2. import time
  3. import ray
  4. ray.init(redis_address="192.168.2.220:6379")
  5. def f1():
  6. time.sleep(1)
  7. @ray.remote
  8. def f2():
  9. time.sleep(1)
  10. #以下需要十秒。
  11. time1=time.time()
  12. [ f1() for _ in range(50)]
  13. print(time.time()-time1)
  14. #以下需要一秒(假设系统至少有10个CPU)。
  15. time2=time.time()
  16. ray.get([ f2.remote() for _ in range(50)])
  17. print(time.time()-time2)

如上述博客有任何错误或者疑问,请加VX:1755337994,及时告知!万分感激!

发表评论

表情:
评论列表 (有 0 条评论,73人围观)

还没有评论,来说两句吧...

相关阅读

    相关 hbase

    1.上传hbase安装包(测试使用的是hbase1.2.3) 2.解压 3.配置hbase集群,要修改3个文件(首先zk集群已经安装好了) 注意:要把hadoop的hd

    相关 Flume

    1. 概念 集群的意思是多台机器,最少有2台机器,一台机器从数据源中获取数据,将数据传送到另一台机器上,然后输出。接下来就要实现Flume集群搭建。集群如下图所示。 !