30分钟拉起Ray集群并部署Stable Diffusion模型服务

简介: Ray 是一个支持模型训练、测试以及部署的开源平台,由加州大学伯克利分校的 RISELab 开发。它旨在简化大规模机器学习、强化学习和分布式计算任务的开发与部署。阿里云计算巢实现了Ray Cluster的一键部署,帮助用户能够便捷地使用分布式集群训练和测试自己的模型。

30分钟拉起Ray集群并部署Stable Diffusion模型服务

Ray 平台简介

Ray 是一个支持模型训练、测试以及部署的开源平台,由加州大学伯克利分校的 RISELab 开发。它旨在简化大规模机器学习、强化学习和分布式计算任务的开发与部署。Ray 的设计目标是提供高性能、灵活性和易用性,使开发者能够轻松构建和扩展复杂的分布式应用程序。无论是处理海量数据、训练深度学习模型,还是运行强化学习算法,Ray 都能提供强大的支持。

Ray提供了大量的帮助文档,其中包含许多示例和教程,帮助用户快速掌握如何通过Ray进行模型训练、测试和部署。

还提供了大量适用于生产环境中的模型服务化的例子,涉及大语言模型,强化学习,机器学习模型, 图像生成(Stable Diffusion),图像分类,文本分类和目标检测等众多领域和方向, 帮助模型开发者能够快速通过Ray构建和部署模型服务。


Ray 的核心能力

1. 分布式计算

  • 分布式训练:Ray 提供了分布式训练的能力,支持多机多卡的模型训练,显著缩短训练时间。
  • 并行任务执行:Ray 支持将任务分解为多个子任务,并在分布式环境中并行执行,从而高效处理大规模数据和计算密集型任务。
  • 动态任务调度:Ray 提供了一个灵活的任务调度器,可以根据资源需求动态分配计算资源,优化任务执行效率。
  • 容错机制:内置的容错机制能够在节点故障时自动恢复任务,确保系统的高可用性。

2. 模型训练和测试

  • 支持主流机器学习框架:Ray 可以与 TensorFlow、PyTorch 等主流机器学习框架无缝集成,加速模型训练和推理。
  • 支持强化学习:Ray 集成了 RLlib,这是一个强大的强化学习库,支持多种算法(如 DQN、PPO、A3C 等),适用于各种强化学习场景。
  • 高效仿真环境:Ray 可以与仿真环境(如 OpenAI Gym)结合,快速构建和测试强化学习模型。
  • 超参数调优:通过 Ray Tune(Ray 的超参数优化库),用户可以高效地进行超参数搜索,找到最优模型配置。

3. 服务编排与部署

  • Ray Serve:Ray 提供了一个轻量级的服务编排框架(Ray Serve),用于部署和管理机器学习模型和服务。它支持多模型组合、动态扩展和低延迟推理。
  • 实时推理:Ray Serve 能够处理高并发的实时推理请求,适合生产环境中的模型服务化。

4. 大规模数据处理

  • Ray Data:Ray 提供了一个分布式数据处理库(Ray Data),用于高效处理大规模数据集。它支持常见的数据操作(如过滤、映射、聚合等),并能与其他 Ray 组件无缝集成。
  • 与大数据生态兼容:Ray 可以与 Apache Spark 等大数据工具结合使用,进一步扩展其数据处理能力。

Ray 的部署方式

通过以上介绍可以看出,Ray 是一个功能强大且灵活的分布式计算平台,适用于从机器学习到科学计算的广泛场景。它的高性能、易用性和丰富的生态系统使其成为开发者的首选工具之一。

那么,该如何部署和使用 Ray 呢?

本地单机部署

Ray支持在不同操作系统下的本地部署,且提供了python、Java、C++以及Docker等情况下的安装方式。

本地集群部署

前提条件: 用户已有k8s集群或可自行创建k8s集群。

由于单机场景下性能有限,难以支持生产场景下的模型训练,Ray还提供了开源的集群版本:KubeRay

用户可根据RayCluster Quickstart流程部署KubeRay,
可根据
RayJob Quickstart体验如何通过KubeRay管理任务,
还可根据
RayService Quickstart体验如何通过KubeRay部署用户应用。
仓库中还提供了一些生产环境中的示例应用,帮助用户快速了解KubeRay下的模型部署过程。

阿里云一键部署

前提条件: 开通阿里云账号。

阿里云计算巢提供了Ray的一键部署服务,用户无需手动搭建Ray集群,仅需在创建实例后等待约10分钟,即可体验Ray集群的强大能力。

部署流程

  1. 点击Ray一键部署链接,
    进入创建Ray集群的页面。如没有阿里云账号需要先注册账号哦。
  2. 创建Ray集群时,首先选择新建ACK集群。服务实例名称将作为运行Ray平台的命名空间,将在模型服务部署时使用。
  3. 为保障Ray的流畅运行,Worker节点建议选择 8vCpu 16GiB 以上的规格。如果有Gpu需求,需要选择有Gpu的规格。然后填写实例密码。

    模型部署基本都有Gpu需求,如果需要Gpu,请在此步选择有Gpu的规格。
    本文档在下一节演示了如何在Ray集群上部署Stable Diffusion模型服务,推荐使用ecs.gn7i-c8g1.2xlarge及以上规格,worker节点系统盘大小推荐1024GB以上。
  4. 选择任意一个可用区,然后点击 下一步:确认订单。
  5. 确认依赖权限已授权,如未授权,请点击授权。然后点击 立即创建
  6. 点击 去列表查看
  7. 跳转到计算巢控制台的服务实例界面后,请等待Ray集群创建完成,大约需要10分钟。
  8. 创建Ray集群完成后,点击 Ray集群名称进入Ray集群详情页面。
  9. 点击透出的web url,即可访问到Ray集群的Ray Dashboard。此时Ray集群已经成功运行,可通过 下一节:快速体验模型部署 了解如何在集群内部署自己的模型。

体验模型服务部署

通过阿里云创建Ray集群后,本节展示如何在Ray集群上部署一个基于 Stable Diffusion 的文本到图像生成服务。更多示例可参考[http://docs.ray.io/en/master/cluster/kubernetes/examples/stable-diffusion-rayservice.html#kuberay-stable-diffusion-rayservice-example)。

确认集群配置足够

⚠️注意: 如果集群配置不够用,会导致Stable Diffusion模型服务部署失败。

  1. 在Ray集群上部署Stable Diffusion模型服务,推荐使用ecs.gn7i-c8g1.2xlarge及以上规格,worker节点系统盘大小推荐1024GB以上。

    官方配置要求如下图。
集群绑定公网IP(如果已绑定可跳过)

⚠️注意: 如果不绑定公网IP,会导致Ray集群拉取模型文件失败,也会导致Ray集群无法提供对外服务。

  1. 在服务实例详情页面,点击 资源 ,查看Ray集群的资源使用情况。
  2. 找到k8s集群,点击名称进入k8s集群详情页面。

  3. 点击 绑定公网IP ,选择已有EIP。如果没有EIP,点击创建EIP,创建完成后,返回该页面绑定公网IP。
     
通过 kubectl 连接 Kubernetes 集群
  1. 在服务实例详情页面,点击 资源 ,查看Ray集群的资源使用情况。
  2. 找到k8s集群,点击名称进入k8s集群详情页面。
  3. 点击连接信息,查看kubeconfig文件。
  4. 点击 安装和设置 kubectl 。这是一个用本地设备管理k8s集群的工具。可根据自身操作系统选择对应的安装方式。

  5. 在本地设备上执行以下命令或自行在目录路径下手动创建$HOME/.kube/config文件,并将kubeconfig文件内容粘贴到该文件中。
sudo mkdir -p $HOME/.kube
sudo touch $HOME/.kube/config
sudo chmod 777 $HOME/.kube/config
vim $HOME/.kube/config
部署模型服务
  1. 将kubeconfig文件内容粘贴到该文件中后,在本地设备上执行以下命令。--namespace={$服务实例名称},需要替换为Ray集群名称。
    如笔者的Ray集群名称为kuberay-tdhrtg,因此下面的指令替换为sudo kubectl config set-context --current --namespace=kuberay-tdhrtg
sudo kubectl config set-context --current --namespace={$Ray集群名称}
  1. 在本地依次执行以下命令。对应Ray官方教程从Step 3之后的部分。
kubectl apply -f https://raw.githubusercontent.com/ray-project/kuberay/master/ray-operator/config/samples/ray-service.stable-diffusion.yaml
kubectl get pods
# Wait until the stable-diffusion is `Running`. About 15 minutes are required for this to complete.
kubectl describe rayservices.ray.io stable-diffusion
# Forward the port of Serve
kubectl port-forward svc/stable-diffusion-serve-svc 8000
# Download `stable_diffusion_req.py`
curl -LO https://raw.githubusercontent.com/ray-project/serve_config_examples/master/stable_diffusion/stable_diffusion_req.py
# Set your `prompt` in `stable_diffusion_req.py`.
# Send a request to the Stable Diffusion model.
python stable_diffusion_req.py

kubectl apply部署Stable Diffusion约需要15分钟。

  1. 运行python stable_diffusion_req.py后,模型会输出一张名为output.png的图片。此时,Stable Diffusion模型服务部署完成。
  2. output.png如下图所示。

更多信息

  1. Ray官网
  2. Ray单机版开源库
  3. Ray集群版开源库
  4. Ray QuickStart帮助文档
  5. Ray 模型服务化示例文档
相关文章
|
Python
分布式框架ray的基本使用记录
分布式框架ray的基本使用记录
985 0
|
5月前
|
机器学习/深度学习 人工智能 数据可视化
AI开源框架:让分布式系统调试不再"黑盒"
Ray是一个开源分布式计算框架,专为支持可扩展的人工智能(AI)和Python应用程序而设计。它通过提供简单直观的API简化分布式计算,使得开发者能够高效编写并行和分布式应用程序 。Ray广泛应用于深度学习训练、大规模推理服务、强化学习以及AI数据处理等场景,并构建了丰富而成熟的技术生态。
858 102
AI开源框架:让分布式系统调试不再"黑盒"
|
缓存 运维 Kubernetes
NVIDIA GPU Operator分析一:NVIDIA驱动安装
背景我们知道,如果在Kubernetes中支持GPU设备调度,需要做如下的工作:节点上安装nvidia驱动节点上安装nvidia-docker集群部署gpu device plugin,用于为调度到该节点的pod分配GPU设备。除此之外,如果你需要监控集群GPU资源使用情况,你可能还需要安装DCCM exporter结合Prometheus输出GPU资源监控信息。要安装和管理这么多的组件,对于运维
5222 0
NVIDIA GPU Operator分析一:NVIDIA驱动安装
|
弹性计算 自然语言处理 测试技术
30分钟私有部署Deepseek-R1和V3,轻松拥有企业专属超大模型
阿里云计算巢推出了基于 ECS镜像、Vllm和Ray集群的超大模型一键部署方案。该方案通过预置标准化环境的ECS镜像,结合自动化云资源编排模板(如Ros模板),将Deepseek-R1和Deepseek-V3的私有化部署流程简化为一键操作。用户无需深入理解底层技术细节,即可在 30分钟内 快速完成模型环境搭建与服务启动,真正实现“开箱即用”的企业级超大模型服务。
|
Oracle 关系型数据库 Linux
PostgreSQL和Oracle中的一条错误消息分析
PostgreSQL服务端的日志里有时会残留一些这样的消息。意思是说客户端的socket意外终止了。 LOG: could not receive data from client: Connection reset by peer. 或中文的 LOG:无法从客户端获得数据: 出现这样的消息有2个可能的原因 1)客户端进程意外结束了 2)客户端进程没有关闭连接就退出了 其中第2点有时比较隐蔽。
2900 0
|
Kubernetes 关系型数据库 网络架构
ray集群部署vllm的折磨
概括如下: 在构建一个兼容多种LLM推理框架的平台时,开发者选择了Ray分布式框架,以解决资源管理和适配问题。然而,在尝试集成vllm时遇到挑战,因为vllm内部自管理Ray集群,与原有设计冲突。经过一系列尝试,包括调整资源分配、修改vllm源码和利用Ray部署的`placement_group_bundles`特性,最终实现了兼容,但依赖于非官方支持的解决方案。在面对vllm新版本和Ray部署的`reconfigure`方法问题时,又需权衡和调整实现方式。尽管面临困难,开发者认为使用Ray作为统一底层仍具有潜力。
|
7月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
339 5
|
7月前
|
人工智能 前端开发 程序员
AI程序员全面上线!聊着天,就把项目开发好了
AI程序员全面上线!聊着天,就把项目开发好了
161 1
|
7月前
|
人工智能 Kubernetes 异构计算
大道至简-基于ACK的Deepseek满血版分布式推理部署实战
本教程演示如何在ACK中多机分布式部署DeepSeek R1满血版。