EMR on VKE 服务提供对外的 Ray 服务使用的镜像列表,便于用户基于这些镜像做二次开发。
说明
(目前emr-vke-public-{region}.cr.volces.com/emr/ray镜像未提供有用户名和密码;emr-vke-public-{region}.cr.volces.com/emr/ray-ds和emr-vke-public-{region}.cr.volces.com/emr/ray-ml需要用户名和密码访问)
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(英文名称) | 不同场景下镜像仓库名称 |
|---|---|---|
华北2(北京) | cn-beijing |
|
华北2(北京)自动驾驶云 | cn-beijing-selfdrive |
|
华东2(上海) | cn-shanghai |
|
华东2(上海)自动驾驶云1 | cn-shanghai-autodriving |
|
华南1(广州) | cn-guangzhou |
|
亚太东南(柔佛) | ap-southeast-1 |
|
同时,不同的 EMR 产品版本,提供的Ray版本、操作系统版本可能也有所不同。通过镜像 Tag 来区分:
{ray.version}-py{python.version}-ubuntu{ubuntu.version}[-{build.version}]-{emr.version}{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及以上版本2.36.0-py3.11-ubuntu20.04-329-3.12.0适配 EMR 产品版本3.12.0及以上版本2.36.0-cu11.8.0-py3.11-ubuntu20.04-329-3.12.0适配 EMR 产品版本3.12.0及以上版本2.39.0-cu11.8.0-py3.11-ubuntu20.04-380-3.13.0 适配 EMR 产品版本3.14.0及以上版本2.39.0-py3.11-ubuntu20.04-380-3.13.0适配 EMR 产品版本3.14.0及以上版本2.44.0-cu12.2.2-py3.11-ubuntu22.04-562-3.15.1适配 EMR 产品版本3.15.0及以上版本2.44.0-py3.11-ubuntu22.04-562-3.15.1适配 EMR 产品版本3.15.0及以上版本2.46.0.0-py3.11-ubuntu22.04-680-3.17.0适配 EMR 产品版本3.17.0及以上版本2.46.0.0-cu12.4.1-py3.11-ubuntu22.04-680-3.17.0适配 EMR 产品版本3.17.0及以上版本2.46.0.1-py3.11-ubuntu22.04-729-3.18.0适配 EMR 产品版本3.18.0及以上版本2.46.0.1-cu12.4.1-py3.11-ubuntu22.04-729-3.18.0适配 EMR 产品版本3.18.0及以上版本2.50.1.0-py3.11-ubuntu22.04-845-3.19.0适配 EMR 产品版本3.19.0及以上版本2.50.1.0-cu12.9.1-py3.11-ubuntu22.04-845-3.19.0适配 EMR 产品版本3.19.0及以上版本以华北 Region为例:
Ray 的版本 | 镜像名称 | 大小 | 备注依赖包 | 说明 |
|---|---|---|---|---|
2.50.1.0 | emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.50.1.0-py3.11-ubuntu22.04-845-3.19.0 | 2.64GiB |
| 若需获取其他 Python 版本的镜像 ID,需要把 py3.11 替换为对应的 Python 版本,并将把结尾的845-3.19.0替换成以下结尾:
|
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.50.1.0-py3.11-ubuntu22.04-845-3.19.0 | 2.96GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.50.1.0-py3.11-ubuntu22.04-845-3.19.0 | 4.43GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.50.1.0-cu12.9.1-py3.11-ubuntu22.04-845-3.19.0 | 8.49GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.50.1.0-cu12.9.1-py3.11-ubuntu22.04-845-3.19.0 | 8.81GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.50.1.0-cu12.9.1-py3.11-ubuntu22.04-845-3.19.0 | 14.01GiB |
| ||
2.46.0.1 | emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.46.0.1-py3.11-ubuntu22.04-729-3.18.0 | 2.55GiB |
| 若需获取其他 Python 版本的镜像 ID,需要把 py3.11 替换为对应的 Python 版本,并将把结尾的729-3.18.0替换成以下结尾:
|
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.46.0.1-py3.11-ubuntu22.04-729-3.18.0 | 2.88GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.46.0.1-py3.11-ubuntu22.04-729-3.18.0 | 4.27GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.46.0.1-cu12.4.1-py3.11-ubuntu22.04-729-3.18.0 | 6.92GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.46.0.1-cu12.4.1-py3.11-ubuntu22.04-729-3.18.0 | 7.24GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.46.0.1-cu12.4.1-py3.11-ubuntu22.04-729-3.18.0 | 10.99GiB |
| ||
2.46.0.0 | emr-vke-public-cn-beijing.cr.ivolces.com/emr/ray:2.46.0.0-py3.11-ubuntu22.04-680-3.17.0 | 4.85GiB |
| 若需获取其他 Python 版本的镜像 ID,需要把 py3.11 替换为对应的 Python 版本,并将把结尾的680-3.17.0替换成以下结尾:
|
emr-vke-public-cn-beijing.cr.ivolces.com/emr/ray-ds:2.46.0.0-py3.11-ubuntu22.04-680-3.17.0 | 5.35GiB |
| ||
emr-vke-public-cn-beijing.cr.ivolces.com/emr/ray-ml:2.46.0.0-py3.11-ubuntu22.04-680-3.17.0 | 9.37GiB |
| ||
emr-vke-public-cn-beijing.cr.ivolces.com/emr/ray:2.46.0.0-cu12.4.1-py3.11-ubuntu22.04-680-3.17.0 | 12.9GiB |
| ||
emr-vke-public-cn-beijing.cr.ivolces.com/emr/ray-ds:2.46.0.0-cu12.4.1-py3.11-ubuntu22.04-680-3.17.0 | 13.4GiB |
| ||
emr-vke-public-cn-beijing.cr.ivolces.com/emr/ray-ml:2.46.0.0-cu12.4.1-py3.11-ubuntu22.04-680-3.17.0 | 21.5GiB |
| ||
2.44.0 | emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.44.0-py3.11-ubuntu22.04-562-3.15.1 | 4.2GiB |
| 若需获取其他 Python 版本的镜像 ID,需要把 py3.11 替换为对应的 Python 版本,并将把结尾的562-3.15.1替换成以下结尾:
|
emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.44.0-cu12.2.2-py3.11-ubuntu22.04-562-3.15.1 | 13.3GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.44.0-py3.11-ubuntu22.04-562-3.15.1 | 4.7GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.44.0-cu12.2.2-py3.11-ubuntu22.04-562-3.15.1 | 13.8GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.44.0-py3.11-ubuntu22.04-562-3.15.1 | 8.7GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.44.0-cu12.2.2-py3.11-ubuntu22.04-562-3.15.1 | 21.8GiB |
| ||
2.39.0 | emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.39.0-cu11.8.0-py3.11-ubuntu20.04-380-3.13.0 | 7.1GiB |
| — |
emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.39.0-py3.11-ubuntu20.04-380-3.13.0 | 2.18GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.39.0-py3.11-ubuntu20.04-380-3.13.0 | 2.54GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.39.0-cu11.8.0-py3.11-ubuntu20.04-380-3.13.0 | 7.45GiB |
| ||
3emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.39.0-cu11.8.0-py3.11-ubuntu20.04-380-3.13.0 | 10.87GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.39.0-py3.11-ubuntu20.04-380-3.13.0 | 3.91GiB |
| ||
2.36.0 | emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.36.0-py3.11-ubuntu20.04-329-3.12.0 | 4.11GiB |
| — |
emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.36.0-cu11.8.0-py3.11-ubuntu20.04-329-3.12.0 | 13.6GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.36.0-py3.11-ubuntu20.04-329-3.12.0 | 4.6GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.36.0-cu11.8.0-py3.11-ubuntu20.04-329-3.12.0 | 14.1GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.36.0-py3.11-ubuntu20.04-329-3.12.0 | 8.84GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.36.0-cu11.8.0-py3.11-ubuntu20.04-329-3.12.0 | 22.1GiB |
| ||
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 |
| — |
emr-vke-public-cn-beijing.cr.volces.com/emr/ray:2.33.0-py3.11-ubuntu20.04-244-1.6.0 | 1.75GiB |
| ||
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 |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.33.0-py3.11-ubuntu20.04-244-1.6.0 | 2.11GiB |
| ||
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 |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.33.0-py3.11-ubuntu20.04-244-1.6.0 | 3.48GiB |
| ||
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 |
| — |
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.30.0-py3.11-ubuntu20.04-207-1.5.0 | 2.11GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.30.0-py3.11-ubuntu20.04-207-1.5.0 | 3.46GiB |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| — |
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.22.0-py3.9-ubuntu20.04-178-1.5.0 | 2.01GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.22.0-py3.9-ubuntu20.04-178-1.5.0 | 3.45GiB |
| ||
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 |
| ||
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 |
| ||
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 |
| ||
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 |
| — |
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ds:2.9.3-py3.9-ubuntu20.04-1.2.0 | 2.01GiB |
| ||
emr-vke-public-cn-beijing.cr.volces.com/emr/ray-ml:2.9.3-py3.9-ubuntu20.04-1.2.0 | 3.45GiB |
| ||
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 |
| ||
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 |
| ||
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 |
|
下面以直接使用为例进行解释,也可以参考使用自定义 Docker 镜像运行作业。
您可以使用下述命令生成秘钥:
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_SERVER、DOCKER_USER、DOCKER_PASSWORD:Docker 镜像仓库地址、用户名和密码,可以联系下 EMR 服务工程师获取相关参数值。以 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}