Ray Notebook使用指南

本文介绍如何访问Ray应用内置的Ray Notebook,并运行一个简单的分布式应用。该方案提供一个预置在云端的JupyterLab环境,用于直接在浏览器中编写和调试Ray程序,无需在本地配置复杂的开发环境。

业务场景说明

在进行大规模数据处理或机器学习模型训练时,本地开发环境往往受限于计算资源,且环境配置复杂、与生产环境不一致。开发者需要一个能够无缝衔接云端大规模计算集群的交互式开发环境,以便快速迭代、调试和验证分布式代码。

Ray Notebook解决了这一问题。它在Ray应用上预置了JupyterLab,允许开发者通过浏览器直接访问,利用整个应用的计算资源进行交互式开发,从而简化了从本地原型到分布式运行的过渡。

准备信息

在提交作业前,您需要从Ray应用中获取应用的连接地址配置信息,并设置您开发环境的私网/公网IP地址到应用白名单中。

实施步骤

此处以公网访问Ray应用内置的Ray Notebook为例。

  1. 登录JupyterLab:

    1. 在浏览器中打开已获取的Jupyter公网地址。

    2. 在密码框(Password or token)中输入secret.jupyterlab.password对应的密钥,进入JupyterLab界面。

    image

  2. Ray程序开发:通过File > New Launcher打开一个新建Notebook、ConsolePython File。image

  3. 运行代码:以Notebook为例,在代码单元格(Cell)中输入并执行以下代码。

    import ray
    import time
    
    
    @ray.remote
    def retrieve_task(item, db):
        time.sleep(item / 10.)
        return item, db[item]
    
    
    if __name__ == "__main__":
        database = [
            "Learning", "Ray", "Flexible", "Distributed", "Python", "for",
            "Machine", "Learning"
        ]
        ray.init()
        db_object_ref = ray.put(database)
        retrieve_refs = [
            retrieve_task.remote(item, db_object_ref) for item in [0, 2, 4, 6]
        ]
        result = [print(data) for data in ray.get(retrieve_refs)]

    运行结果如下:

    image