栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

cube开源一站式云原生机器学习平台--ray 多机分布式计算

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

cube开源一站式云原生机器学习平台--ray 多机分布式计算

全栈工程师开发手册 (作者:栾鹏)
一站式云原生机器学习平台

ray的基本原理和架构

另一篇文章介绍了ray的基本原理和架构以及单机多进程使用ray的方法。
https://blog.csdn.net/luanpeng825485697/article/details/88242020

ray 多机分布式

有时候单台机器多进程也无法快速完成代码运行,这个时候就需要多机器实现:
1、单机器算力有限,核数不足
2、有些运行有机器白名单显示,需要多台机器ip增加并发处理

分布式计算集群

为了方便的实现一个ray多机分布式集群,这里直接使用

https://github.com/tencentmusic/cube-studio 开源的云原生一站式机器学习平台。
使用ray这个模板,填上自己的worker数量,初始化脚本和python启动命令

分布式原理和代码

基本原则

driver端就是启动脚本的地方,driver端解析要处理那些任务,并把每个任务发送给headnode,headnode会根据slavenode的运行情况分发这些任务,当当前有空闲slavenode时,driveiu会发起新的任务。

主要变更

原有代码

def fun1(index):
    # 这里是耗时的任务
    return 'back_data'

def main():
    for index in [...]:
         fun1(index)    # 直接执行任务

if __name__=="__main__":
    main()

新代码

import ray,os


@ray.remote
def fun1(index):
    # 这里是耗时的任务,大内存可序列化对象提前put,不然需要每次网络传输。
    print(index)
    # return result

def main():
    tasks=[]
    for index in [...]:
        tasks.append(fun1.remote(index))   # 建立远程函数
        # 每操作一定数量就先运行
        if len(tasks)>100000:
            result = ray.get(tasks) 
            tasks=[]

    result = ray.get(tasks)   #  获取任务结果

if __name__=="__main__":
    
    head_service_ip = os.getenv('RAY_HOST','')
    if head_service_ip:
        # 集群模式
        head_host = head_service_ip+".pipeline"+":10001"
        ray.util.connect(head_host)
    else:
        # 本地模式
        ray.init()

    main()

单机运行使用ray.init()启动会自动使用多进程
多级运行时使用ray.util.connect(head_host) 会自动链接多机环境

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/934017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号