ray 简介
Ray是一个开源的分布式机器学习框架,不仅拥有高效的分布式训练能力,也有丰富的机器学习应用,极大地降低了大规模机器学习的门槛,非常适合人工智能方向的科研人员和工程师们学习!
Ray有诸多模块,包括
- 实现基本分布式能力的Ray Core
- 进行数据处理的Ray Data
- 进行训练的Ray Train
- 超参数调整的Ray Tune
- 实现推理的Ray Serve
- 强化学习库Ray RLlib
- 以及集合了多种功能的上层机器学习API Ray AIR
kuberay
安装
官网文档: https://docs.ray.io/en/latest/cluster/kubernetes/getting-started.html
使用 helm 安装 ,以 1.3.0 为例
1 | helm repo add kuberay https://ray-project.github.io/kuberay-helm/ |
验证1
2
3
4
5
6
7
8# kubectl get crd|grep ray
rayclusters.ray.io 2025-06-10T06:21:47Z
rayjobs.ray.io 2025-06-10T06:21:47Z
rayservices.ray.io 2025-06-10T06:21:47Z
# kubectl get pod
NAME READY STATUS RESTARTS AGE
kuberay-operator-5c7f84f8bc-zndrk 1/1 Running 0 24h
安装 raycluster
1 | helm install raycluster kuberay/ray-cluster --version 1.3.0 |
验证
1 | # kubectl get rayclusters |
head 可以理解为 master 节点, worker 工作节点
测试
简单测试1
2
3
4
5export HEAD_POD=$(kubectl get pods --selector=ray.io/node-type=head -o custom-columns=POD:metadata.name --no-headers)
echo $HEAD_POD
# Print the cluster resources.
kubectl exec -it $HEAD_POD -- python -c "import pprint; import ray; ray.init(); pprint.pprint(ray.cluster_resources(), sort_dicts=True)"
通过 sdk
1 | # Execute this in a separate shell. |
使用 Rayjob 和 RayService
可以参考文件1
2
3kubectl apply -f https://raw.githubusercontent.com/ray-project/kuberay/v1.3.0/ray-operator/config/samples/ray-job.sample.yaml
kubectl apply -f https://raw.githubusercontent.com/ray-project/kuberay/v1.3.0/ray-operator/config/samples/ray-service.sample.yaml
`
验证
1 | ❯ kubectl get rayjobs.ray.io |
rayservice
1 | # kubectl get pod |grep rayservice |
添加 ingress 测试
1 | --- |
执行命令1
2
3
4
5
6
7$ curl -sS -X POST -H 'Content-Type: application/json' https://kuberay-serve.grafana.eu.org/calc/ -d '["MUL", 3]'
15 pizzas please!
$ curl -sS -X POST -H 'Content-Type: application/json' https://kuberay-serve.grafana.eu.org/fruit/ -d '["MANGO", 2]'
6
网页查看
