You need to enable JavaScript to run this app.
导航
Ray镜像列表
最近更新时间:2024.10.12 11:32:02首次发布时间:2024.05.14 19:38:13

EMR on VKE服务提供对外的Ray服务使用的镜像列表,便于用户基于这些镜像做二次开发。

说明

  1. EMR服务提供的对外镜像列表,设置有用户名和密码,可联系EMR服务工程师获取。

(目前emr-vke-public-{region}.cr.volces.com/emr/ray镜像未提供有用户名和密码;emr-vke-public-{region}.cr.volces.com/emr/ray-dsemr-vke-public-{region}.cr.volces.com/emr/ray-ml需要用户名和密码访问)

  1. EMR提供的镜像列表,由于网络的限制,默认只支持在火山引擎的ECS机器上可以访问,包括在ECS机器部署的Pod服务或其他服务。

Ray镜像列表

Ray是一个开源的分布式计算框架,用于构建和运行分布式应用程序。它支持多种编程模型,包括任务并行和数据并行,提供高性能和易用性。Ray通过其灵活的API和高效的运行时,使得并行和分布式计算更加简单和高效。
关于Ray提供三种场景的镜像仓库

  • emr-vke-public-{region}.cr.volces.com/emr/ray:包含Ray及其所需依赖的镜像,内置有Conda、Java8、Hadoop服务。
  • emr-vke-public-{region}.cr.volces.com/emr/ray-ds:在 ray 的基础镜像之上,提供Spark、RayDP及其依赖,可用于数据处理场景。
  • emr-vke-public-{region}.cr.volces.com/emr/ray-ml:在 ray-ds 的镜像之上,提供Torch、Tensorflow及其依赖,可用于机器学习场景。

其中{region}是Ray集群所在的region英文名。目前支持region地区有华北、华东、华南、亚太东南(柔佛)

Region(中文名称)

Region(英文名称)

不同场景下镜像仓库名称

华北

cn-beijing

  • emr-vke-public-cn-beijing.cr.volces.com/emr/ray
  • emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds
  • emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml

华东

cn-shanghai

  • emr-vke-public-cn-shanghai.cr.volces.com/emr/ray
  • emr-vke-public-cn-shanghai.cr.volces.com/emr/ray-ds
  • emr-vke-public-cn-shanghai.cr.volces.com/emr/ray-ml

华南

cn-guangzhou

  • emr-vke-public-cn-guangzhou.cr.volces.com/emr/ray
  • emr-vke-public-cn-guangzhou.cr.volces.com/emr/ray-ds
  • emr-vke-public-cn-guangzhou.cr.volces.com/emr/ray-ml

亚太东南(柔佛)

ap-southeast-1

  • emr-vke-public-ap-southeast-1.cr.volces.com/emr/ray
  • emr-vke-public-ap-southeast-1.cr.volces.com/emr/ray-ds
  • emr-vke-public-ap-southeast-1.cr.volces.com/emr/ray-ml

同时,不同的EMR 产品版本,提供的Ray版本、操作系统版本可能也有所不同。通过镜像Tag来区分

  • 适用于CPU:{ray.version}-py{python.version}-ubuntu{ubuntu.version}[-{build.version}]-{emr.version}
  • 适用于GPU:{ray.version}-cu{cuda.version}-py{python.version}-ubuntu{ubuntu.version}[-{build.version}]-{emr.version}

参数

说明

ray.version

Ray的版本号。示例:2.9.3

python.version

Python版本。示例:3.9

ubuntu.version

Ubuntu系统的版本。示例:20.04

cuda.version

CUDA 版本。示例:11.8.0

emr.version

EMR on VKE服务的产品版本。示例1.2.0

build.version

Ray编译的version信息,是EMR内部维护的版本信息

支持的Tag列表:

  • 2.9.3-py3.9-ubuntu20.04-1.2.0 适配EMR产品版本1.2.0及以上版本
  • 2.9.3-cu11.8.0-py3.9-ubuntu20.04-1.2.0 适配EMR产品版本1.2.0及以上版本
  • 2.22.0-py3.9-ubuntu20.04-1.4.0 适配EMR产品版本1.2.0及以上版本
  • 2.22.0-py3.9-ubuntu20.04-155-1.4.0适配EMR产品版本1.2.0及以上版本
  • 2.22.0-cu11.8.0-py3.9-ubuntu20.04-155-1.4.0适配EMR产品版本1.2.0及以上版本
  • 2.30.0-py3.11-ubuntu20.04-207-1.5.0适配EMR产品版本1.2.0及以上版本
  • 2.30.0-cu11.8.0-py3.11-ubuntu20.04-207-1.5.0适配EMR产品版本1.2.0及以上版本
  • 2.30.0-cu12.1.0-py3.11-ubuntu20.04-211-1.5.0适配EMR产品版本1.2.0及以上版本
  • 2.33.0-py3.11-ubuntu20.04-244-1.6.0适配EMR产品版本1.2.0及以上版本
  • 2.33.0-cu11.8.0-py3.11-ubuntu20.04-244-1.6.0适配EMR产品版本1.2.0及以上版本

镜像列表

下面以华北 Region为例:

Ray的版本

镜像名称

大小

备注依赖包

2.33.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.33.0-cu11.8.0-py3.11-ubuntu20.04-244-1.6.0

6.67GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.33.0-py3.11-ubuntu20.04-244-1.6.0

1.75GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.33.0-cu11.8.0-py3.11-ubuntu20.04-244-1.6.0

7.02GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.33.0-py3.11-ubuntu20.04-244-1.6.0

2.11GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.33.0-cu11.8.0-py3.11-ubuntu20.04-244-1.6.0

10.44GiB

  • tensorflow 2.11.0
  • torch 2.0.1

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.33.0-py3.11-ubuntu20.04-244-1.6.0

3.48GiB

  • tensorflow 2.11.0
  • torch 2.0.1

2.30.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.30.0-py3.11-ubuntu20.04-207-1.5.0

1.76GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.30.0-py3.11-ubuntu20.04-207-1.5.0

2.11GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.30.0-py3.11-ubuntu20.04-207-1.5.0

3.46GiB

  • tensorflow 2.11.0
  • torch 2.0.1

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.30.0-cu11.8.0-py3.11-ubuntu20.04-207-1.5.0

6.67GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.30.0-cu11.8.0-py3.11-ubuntu20.04-207-1.5.0

7.02GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.30.0-cu11.8.0-py3.11-ubuntu20.04-207-1.5.0

10.42GiB

  • tensorflow 2.11.0
  • torch 2.0.1

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.30.0-cu12.1.0-py3.11-ubuntu20.04-211-1.5.0

6.66GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.30.0-cu12.1.0-py3.11-ubuntu20.04-211-1.5.0

7.01GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.30.0-cu12.1.0-py3.11-ubuntu20.04-211-1.5.0

10.82GiB

  • tensorflow 2.11.0
  • torch 2.0.1

2.22.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.22.0-py3.9-ubuntu20.04-178-1.5.0

1.66GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.22.0-py3.9-ubuntu20.04-178-1.5.0

2.01GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.22.0-py3.9-ubuntu20.04-178-1.5.0

3.45GiB

  • tensorflow 2.11.0
  • torch 2.0.1

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.22.0-cu11.8.0-py3.9-ubuntu20.04-178-1.5.0

6.56GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.22.0-cu11.8.0-py3.9-ubuntu20.04-178-1.5.0

6.91GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.22.0-cu11.8.0-py3.9-ubuntu20.04-178-1.5.0

12.09GiB

  • tensorflow 2.11.0
  • torch 2.0.1

2.9.3

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.9.3-py3.9-ubuntu20.04-1.2.0

1.66GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.9.3-py3.9-ubuntu20.04-1.2.0

2.01GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.9.3-py3.9-ubuntu20.04-1.2.0

3.45GiB

  • tensorflow 2.11.0
  • torch 2.0.1

emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.9.3-cu11.8.0-py3.9-ubuntu20.04-1.2.0

6.56GiB

  • Java 8
  • Hadoop 3.3.4

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.9.3-cu11.8.0-py3.9-ubuntu20.04-1.2.0

6.91GiB

  • Spark 3.5.1
  • RayDP 1.7.0

emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.9.3-cu11.8.0-py3.9-ubuntu20.04-1.2.0

12.09GiB

  • tensorflow 2.11.0
  • torch 2.0.1

使用场景

  • 直接使用:EMR提供的镜像可以直接开箱即用,满足相关场景的任务运行。
  • 作为基础镜像:若EMR提供的镜像不完全满足需求时,可以基于这些镜像做二次开发,定义属于特定任务的镜像。

使用示例

下面以直接使用为例进行解释,也可以参考使用自定义 Docker 镜像运行作业

  1. 环境准备
    1. 部署EMR on VKE产品中Ray服务。
    2. 通过kubectl命令运行RayJob作业,需要安装kubectl工具(参考安装和设置 kubectl),且配置火山引擎VKE集群的连接信息(参考连接VKE集群)。
  2. 生成密钥

您可以使用下述命令生成秘钥:

kubectl create secret docker-registry my-docker-secret --docker-server={DOCKER_REGISTRY_SERVER} --docker-username={DOCKER_USER} --docker-password={DOCKER_PASSWORD}  -n {YOUR_NAMESPACE}

其中

  • my-docker-secret:秘钥名称。 用于下面Yaml文件中imagePullSecrets的值。
  • YOUR_NAMESPACE:执行Ray作业的命名空间。
  • DOCKER_REGISTRY_SERVERDOCKER_USERDOCKER_PASSWORD:docker镜像仓库地址、用户名和密码,可以联系下EMR服务工程师获取相关参数值。
  1. 以RayJob使用示例

以test.yaml文件示例

apiVersion: ray.io/v1
kind: RayJob
metadata:
  name: rayjob-sample
spec:
  entrypoint: python /home/ray/samples/sample_code.py
  # shutdownAfterJobFinishes specifies whether the RayCluster should be deleted after the RayJob finishes. Default is false.
  shutdownAfterJobFinishes: true

  # ttlSecondsAfterFinished specifies the number of seconds after which the RayCluster will be deleted after the RayJob finishes.
  ttlSecondsAfterFinished: 300

  submitterPodTemplate:
    spec:
      imagePullSecrets:
         - name: my-docker-secret
      restartPolicy: OnFailure
      containers:
         - name: submit-image
           image: emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.9.3-py3.9-ubuntu20.04-1.2.0

  # rayClusterSpec specifies the RayCluster instance to be created by the RayJob controller.
  rayClusterSpec:
    rayVersion: '2.9.3' # should match the Ray version in the image of the containers
    # Ray head pod template
    headGroupSpec:
      rayStartParams:
        dashboard-host: '0.0.0.0'
      template:
        spec:
          imagePullSecrets:
            - name: my-docker-secret
          restartPolicy: OnFailure
          containers:
            - name: ray-head
              image: emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.9.3-py3.9-ubuntu20.04-1.2.0
              ports:
                - containerPort: 6379
                  name: gcs-server
                - containerPort: 8265 # Ray dashboard
                  name: dashboard
                - containerPort: 10001
                  name: client
              resources:
                limits:
                  cpu: "1"
                requests:
                  cpu: "200m"
              volumeMounts:
                - mountPath: /home/ray/samples
                  name: code-sample
          volumes:
            - name: code-sample
              configMap:
                # Provide the name of the ConfigMap you want to mount.
                name: ray-job-code-sample
                # An array of keys from the ConfigMap to create as files
                items:
                  - key: sample_code.py
                    path: sample_code.py
    workerGroupSpecs:
      # the pod replicas in this group typed worker
      - replicas: 1
        minReplicas: 1
        maxReplicas: 5
        # logical group name, for this called small-group, also can be functional
        groupName: small-group
        # The `rayStartParams` are used to configure the `ray start` command.
        # See https://github.com/ray-project/kuberay/blob/master/docs/guidance/rayStartParams.md for the default settings of `rayStartParams` in KubeRay.
        # See https://docs.ray.io/en/latest/cluster/cli.html#ray-start for all available options in `rayStartParams`.
        rayStartParams: {}
        #pod template
        template:
          spec:
            imagePullSecrets:
              - name: my-docker-secret
            restartPolicy: OnFailure  
            containers:
              - name: ray-worker
                image: emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.9.3-py3.9-ubuntu20.04-1.2.0
                lifecycle: 
                  preStop:
                    exec:
                      command: [ "/bin/sh","-c","ray stop" ]
                resources:
                  limits:
                    cpu: "1"
                  requests:
                    cpu: "200m"
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: ray-job-code-sample
data:
  sample_code.py: |
    import ray
    import os
    import requests

    ray.init()

    @ray.remote
    class Counter:
        def __init__(self):
            self.name = "test_counter"
            self.counter = 0

        def inc(self):
            self.counter += 1

        def get_counter(self):
            return "{} got {}".format(self.name, self.counter)

    counter = Counter.remote()

    for _ in range(5):
        ray.get(counter.inc.remote())
        print(ray.get(counter.get_counter.remote()))

提交RayJob:

kubectl apply -f test.yaml -n {YOUR_NAMESPACE}