使用射線磚

預覽

這個特性是在公共預覽

雷tripwire以上支持創建雷集群和射線應用程序運行在Apache引發集群數據磚。對射線開始使用機器學習的信息,包括教程和示例,請參見射線的文檔。關於雷和Apache火花集成的更多信息,見射線引發API文檔

需求

  • 磚運行時12.0毫升以上。

  • 磚集群運行時訪問模式必須“分配”模式或“沒有隔離共享”模式。

安裝光

使用以下命令安裝線。的(默認)擴展所需的射線儀表板組件。

%皮普安裝(默認的]> =tripwire

創建一個射線集群

創建一個射線集群,使用ray.util.spark.setup_ray_clusterAPI。

ray.util.spark進口setup_ray_cluster,shutdown_ray_clustersetup_ray_cluster(num_worker_nodes=2,num_cpus_per_node=4,collect_log_to_path=“/ dbfs /道路/ / ray_collected_logs”)

ray.util.spark.setup_ray_clusterAPI創建一個射線簇火花。在內部,它創建一個背景火花工作。工作中的每個火花任務創建一個射線工作者節點,和雷頭節點上創建驅動程序。這個論點num_worker_nodes創建代表射線工作者節點的數量。指定數量的CPU或GPU核心分配給每個射線工作者節點,設置參數num_cpus_per_nodenum_gpus_per_node

雷集群創建之後,您就可以直接在你的筆記本運行任何射線應用程序代碼。一個HTML鏈接在新選項卡中打開雷集群儀表板也顯示,允許您查看集群的射線儀表板。

提示

如果您正在使用一個磚分配模式集群,您可以設置num_worker_nodesray.util.spark.MAX_NUM_WORKER_NODES為了使用所有可用的資源為你雷集群。

setup_ray_cluster (#……num_worker_nodes = ray.util.spark.MAX_NUM_WORKER_NODES,)

你可以設置參數collect_log_to_path指定目的地的路徑,你想收集射線集群日誌。日誌收集運行射線集群後關閉。磚建議你設置一個路徑開始/ dbfs /所以日誌保存即使你終止集群的火花。

請注意

調用ray.util.spark.setup_ray_cluster將設置RAY_ADDRESS環境變量的地址創建集群射線,射線應用程序將自動使用這個雷集群。您可以指定一個替代集群地址使用地址論點的ray.initAPI。

運行一線的應用程序

雷集群創建之後,您可以運行任何射線磚筆記本的應用程序代碼。例如,您可以運行一個簡單的射線應用程序在一個數據磚筆記本如下:

進口進口隨機進口時間分數進口分數初始化()@ray遠程defpi4_sample(sample_count):”““pi4_sample sample_count實驗運行,並返回部分時間內循環。”“”in_count=0範圍(sample_count):x=隨機隨機()y=隨機隨機()如果x*x+y*y< =1:in_count+ =1返回分數(in_count,sample_count)SAMPLE_COUNT=1000年*1000年開始=時間時間()未來=pi4_sample遠程(sample_count=SAMPLE_COUNT)pi4=得到(未來)結束=時間時間()大調的=結束- - - - - -開始打印(f“運行{SAMPLE_COUNT}測試了{大調的}秒的)π=pi4*4打印(浮動(π))

從火花DataFrame加載數據

加載一個火花DataFrame射線數據集,首先你需要保存火花DataFrame DBFS使用鑲花或δ格式。為了控製DBFS安全地訪問、磚建議你山雲DBFS對象存儲。然後,您可以創建一個ray.data.Dataset實例從保存的火花DataFrame路徑使用以下輔助方法:

進口進口操作係統urllib.parse進口urlparsedefcreate_ray_dataset_from_spark_dataframe(spark_dataframe,dbfs_tmp_path):spark_df模式(“覆蓋”)拚花(dbfs_tmp_path)fuse_path=“/ dbfs”+urlparse(dbfs_tmp_path)路徑返回數據read_parquet(fuse_path)#例如,讀表作為火花DataFrame三角洲spark_df=火花(“diviner_demo.diviner_pedestrians_data_500”)#提供dbfs位置寫表data_location_2=(“dbfs: / home / example.user@m.eheci.com/data/ray_test/test_data_2”)#火花DataFrame轉換為一線的數據集ray_dataset=create_ray_dataset_from_spark_dataframe(spark_dataframe=spark_df,dbfs_tmp_path=data_location_2)

關閉集群一線

關閉射線集群上運行數據磚,你可以調用ray.utils.spark.shutdown_ray_clusterAPI。

請注意

雷集群也將關閉時間:

  • 你從磚分離互動筆記本集群。

  • 你的磚工作完成。

  • 你的磚集群重新啟動或終止。

調優射線集群配置

每個射線工作者節點的推薦配置是:

  • 每個雷工人最低4個CPU核心節點。

  • 最低10 gb堆內存為每個射線工作者節點。

所以,當調用ray.util.spark.setup_ray_cluster,磚建議設置num_cpus_per_node一個值> = 4。

看到射線工作者節點的內存分配細節調優堆內存為每個射線工作者節點。

射線工作者節點的內存分配

每個射線工作者節點使用兩種類型的內存:堆內存和對象存儲內存。每種類型的分配的內存大小是決定如下所述。

總內存分配給每個射線工作者節點是:

RAY_WORKER_NODE_TOTAL_MEMORY=(SPARK_WORKER_NODE_PHYSICAL_MEMORY/MAX_NUMBER_OF_LOCAL_RAY_WORKER_NODES*0.8)

MAX_NUMBER_OF_LOCAL_RAY_WORKER_NODES是射線工作者節點的最大數量,可以引發工人節點上啟動。這是由參數決定num_cpus_per_nodenum_gpus_per_node

如果你不設置參數object_store_memory_per_node,然後堆內存大小和對象存儲內存大小分配給每個射線工作者節點是:

RAY_WORKER_NODE_HEAP_MEMORY=RAY_WORKER_NODE_TOTAL_MEMORY*0.7OBJECT_STORE_MEMORY_PER_NODE=RAY_WORKER_NODE_TOTAL_MEMORY*0.3

如果你設置參數object_store_memory_per_node:

RAY_WORKER_NODE_HEAP_MEMORY=RAY_WORKER_NODE_TOTAL_MEMORY- - - - - -argument_object_store_memory_per_node

此外,對象存儲內存大小/射線工作者節點有限的共享內存操作係統。最大的價值是:

OBJECT_STORE_MEMORY_PER_NODE_CAP=(SPARK_WORKER_NODE_OS_SHARED_MEMORY/MAX_NUMBER_OF_LOCAL_RAY_WORKER_NODES*0.8)

SPARK_WORKER_NODE_OS_SHARED_MEMORY/dev/shm磁盤容量配置的火花工作節點。

雷儀表板上啟用堆棧跟蹤和火焰圖演員頁麵

在雷儀表板的演員頁麵,您可以查看堆棧跟蹤和火焰圖對於活躍的射線的演員。查看這些信息,使用以下命令安裝“py-spy”在你開始之前雷集群:

%皮普安裝py- - - - - -間諜

例如筆記本電腦

以下筆記本演示如何創建一個雷集群和磚上運行一線的應用程序。

射線在火花啟動筆記本

在新標簽頁打開筆記本

限製

  • 雷不支持集群自動定量。APIray.util.spark.setup_ray_cluster隻能開始射線與固定數量的射線工作者節點集群。

  • 多用戶共享數據磚集群不支持(隔離模式啟用)。

  • 當使用% pip安裝包時,射線集群將關閉。確保你完成後開始射線與% pip安裝你的所有庫。

  • 使用集成覆蓋的配置ray.util.spark.setup_ray_cluster可以導致射線集群變得不穩定和崩潰的射線背景。例如,使用xgboost_ray包和設置RayParams一個演員或cpus_per_actor配置超過雷集群配置集群可以默默地崩潰射線。