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

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


前言

开源地址:https://github.com/data-infra/cube-studio

cube studio 开源的国内最热门的一站式机器学习mlops/大模型训练平台,支持多租户,sso单点登录,支持在线镜像调试,在线ide开发,数据集管理,图文音标注和自动化标注,任务模板自定义,拖拉拽任务流,模型分布式多机多卡训练,超参搜索,模型管理,推理服务弹性伸缩,支持ml/tf/pytorch/onnx/tensorrt/llm模型0代码服务发布,以及配套资源监控和算力,存储资源管理。支持机器学习,深度学习,大模型 开发训练推理发布全链路。支持元数据管理,维表,指标,sqllab,数据etl等数据中台对接功能。支持多集群,边缘集群,serverless集群方式部署。支持计量计费,资源额度限制,支持vgpu,rdma,国产gpu,arm64架构。

aihub模型市场:支持AI hub模型市场,支持400+开源模型应用一键开发,一键微调,一键部署。

gpt大模型:支持40+开源大模型部署一键部署,支持ray,volcano,spark等分布式计算框架,支持tf,pytorch,mxnet,mpi,paddle,mindspre分布式多机多卡训练框架,支持deepspeed,colossalai,horovod分布式加速框架,支持llama chatglm baichuan qwen系列大模型微调。支持llama-factory 100+llm微调,支持大模型vllm推理加速,支持智能体私有知识库,智能机器人。

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,time


@ray.remote
def fun1(arg):
    # 这里是耗时的任务,函数内不能引用全局变量,只能使用函数内的局部变量。
    print(arg)
    time.sleep(1)
    return 'back_data'


def main():
    tasks=[]
    tasks_args = range(100)
    for arg in tasks_args:
        tasks.append(fun1.remote(arg))  # 建立远程函数
    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) 会自动链接多机环境

猜你喜欢

转载自blog.csdn.net/luanpeng825485697/article/details/125055961