全部產品
Search
文件中心

Lindorm:使用RAY資源群組

更新時間:Apr 02, 2026

本文介紹如何使用阿里雲Lindorm的RAY資源群組,通過準備環境、提交作業處理資料並上傳結果,提供作業狀態監控與日誌查看等功能。

重要

RAY資源群組目前處於邀測階段,如有使用需求,請聯絡Lindorm支援人員(DingTalk號:s0s3eg3)申請使用名額。

前提條件

準備工作

  1. 登入Lindorm管理主控台。在左上方選擇執行個體所屬的地區。在实例列表頁,單擊目標執行個體ID或者目標執行個體所在行操作列的管理

  2. 实例详情頁的配置信息地區,單擊计算引擎操作列的资源组管理

  3. 资源组详情介面,將滑鼠移至上方在RAY資源群組操作列的WebUI之上,擷取資源群組的WebUI地址,例如:http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/

  4. 在用戶端安裝RAY Client。以Python3為例,執行pip3 install ray[default]安裝RAY Client。

    說明

    安裝後,可執行ray --version驗證是否安裝成功。

RAY資源群組鑒權

Ray資源群組使用計算引擎token進行身份認證,以防止未授權的用戶端訪問叢集API和提交作業。

token擷取方式:用於進行計算資源鑒權的token

通過Ray命令列管理作業鑒權配置

Ray 資源群組提供 2 種方式在命令列中配置鑒權。

  • 方法一:在命令列中通過 --headers 參數傳遞 token。

    ray job submit \
      --address "http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/" \
      --headers '{"Authorization": "Bearer xxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx"}' \
      --runtime-env-json '{"working_dir": "."}' \
      -- python yourRayJob.py
  • 方法二:設定 RAY_AUTH_MODE + RAY_AUTH_TOKEN 環境變數。

    export RAY_AUTH_MODE=token
    export RAY_AUTH_TOKEN=xxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx
    
    ray job submit \
      --address "http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/" \
      --runtime-env-json '{"working_dir": "."}' \
      -- python yourRayJob.py
    說明

    此方式需滿足RAY用戶端版本號碼不低於2.52.0。

Ray Dashboard 鑒權配置

首次訪問 Ray 資源群組 WebUI 地址時,需要填寫 token 配置以獲得存取權限。

提交RAY作業

  1. 在用戶端準備RAY作業。

    本文以使用RAY資源群組處理阿里雲Object Storage Service服務OSS中test-bucket空間下的test-data檔案為例,展示如何編寫指令碼處理OSS資料,並上傳結果至OSS。以下是用戶端ray_job_test目錄下編寫的RAY作業邏輯指令碼ray-oss-example.py 。

    import ray
    import sys
    
    from ossfs import OSSFileSystem
    import tempfile
    import ossfs
    
    ray.init()
    
    @ray.remote
    def process(oss_key: str, oss_secret: str, filename: str):
        print("Processing %s" % filename)
        fs = oss_filesystem(oss_key, oss_secret)
        # Download to local
        tmp_filename = tempfile.NamedTemporaryFile(delete=False).name
        fs.get_file(filename, tmp_filename)
        print("tmp file name is %s" % tmp_filename)
    
        with open(tmp_filename, 'rb') as f:
            content = f.read()
            print(content)
    
        # Put to OSS
        result_remote_filename = f"{filename}_result"
        fs.put_file(tmp_filename, result_remote_filename)
        return "success"
    
    def oss_filesystem(oss_key: str, oss_secret: str) -> OSSFileSystem:
        return ossfs.OSSFileSystem(
            endpoint="oss-cn-hangzhou-internal.aliyuncs.com", # OSS Endpoint
            key=oss_key, 
            secret=oss_secret 
        )
    
    if __name__ == "__main__":
        if (len(sys.argv) < 2):
            raise ValueError("python %s oss_key oss_secret" % __file__)
    
        oss_key = sys.argv[1]
        oss_secret = sys.argv[2]
        base = "/test-bucket/test-data/"  # /<bucketname>/path
        fs = oss_filesystem(oss_key, oss_secret)
    
        files = [item['name'] for item in fs.ls(base) if item['name'] != base]
    
        for file in files:
            print("Head processing %s" % file)
            result = ray.get(process.remote(oss_key, oss_secret, file))
            print(f"{file} is processed, status is {result}")
    
    ray.shutdown()

    參數說明

    參數

    樣本

    說明

    endpoint

    oss-cn-hangzhou-internal.aliyuncs.com

    OSS的Endpoint。擷取Endpoint,請參見地區和Endpoint

    base

    /test-bucket/test-data/

    需要處理的 OSS 檔案路徑。

    說明
    • RAY支援在@ray.remote()註解中為每一個Task/Actor 聲明其運行所需要使用的資源情況,例如通過num_cpus、num_gpus分別為Task/Actor聲明運行所需的 CPU、GPU資源,詳細參數請參考文檔

    • RAY支援以pipeline的方式在跨節點的異構資源上(CPU/GPU)調度資料處理任務,相比傳統Batch處理方式可顯著提升資料處理效率,詳細參數請參考文檔

  2. 提交作業到指定RAY資源群組。

    1. 進入作業所在路徑:執行cd ray_job_test

    2. 提交作業:執行ray job submit --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --runtime-env-json '{"working_dir": "."}' --address RAY_ADDRESS -- python my_job.py oss_key oss_secret

      參數說明

      參數

      樣本

      說明

      RAY_ADDRESS

      http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/

      指定RAY資源群組的WebUI訪問地址

      my_job.py

      ray-oss-example.py

      執行指令檔名。

      oss_key

      yourAccessKeyID

      訪問OSS檔案的阿里雲帳號或RAM使用者的AccessKey ID和 AccessKey Secret。如何擷取AccessKey ID和AccessKey Secret,請參見擷取AccessKey

      oss_secret

      yourAccessKeySecret

      RAY_AUTH_TOKEN

      8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2

      RAY資源群組鑒權所需token

      樣本

      ray job submit --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --runtime-env-json '{"pip": ["ossfs"], "working_dir": "."}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ -- python ray-oss-example.py yourAccessKeyID yourAccessKeySecret

      返回已提交作業的SUBMISSION_ID,如raysubmit_gmSnPSFqmEXG****,查看作業狀態命令列中需使用該參數。

查看作業運行狀態

您可以在瀏覽器中訪問RAY資源群組的WebUI地址,通過RAY Dashboard即時監控作業運行狀態、作業日誌和作業列表。

作業營運

Ray支援通過不同的方式查看、管理作業:

  • 命令列方式:Ray提供ray job子命令用於查看、管理作業,詳情可參考Ray Jobs CLI API

  • Python SDK方式:Ray 提供python lib,支援通過JobSubmissionClient來查看、管理作業,詳情可參考Python SDK API

  • REST API方式:Ray提供REST API,通過HTTP請求調用查看、管理作業。詳情可參考Ray Jobs REST API

    說明

    請使用WebUI地址作為REST API入口URL來訪問Ray REST API。

下面以用戶端命令列為例,展示如何查看、管理作業。

  • 查看作業運行狀態。

    ray job status --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESS SUBMISSION_ID

    樣本:

    ray job status --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ raysubmit_gmSnPSFqmEXG****
  • 查看作業日誌。

    ray job logs --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESS SUBMISSION_ID

    樣本:

    ray job logs --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ raysubmit_gmSnPSFqmEXG****
  • 查看作業列表。

    ray job list --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESS

    樣本:

    ray job list --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/
  • 終止作業。

    ray job stop --headers '{"Authorization": "Bearer RAY_AUTH_TOKEN"}' --address RAY_ADDRESS SUBMISSION_ID

    樣本:

    ray job stop --headers '{"Authorization": "Bearer 8f2e1a3c-9b4d-4e5f-a6c2-d7b8f9e0a1b2"}' --address http://alb-57k7r581oht8rd****.cn-hangzhou.alb.aliyuncsslb.com/ray/raycg/dashboard/ raysubmit_gmSnPSFqmEXG****