如何落地一个算法?

简介: 在解决实际问题的时候,很多人认为只要有机器学习算法就可以了,实际上要把一个算法落地还需要解决很多工程上的难题。本文将和大家分享如何从零开始搭建一个GPU加速的分布式机器学习系统,介绍在搭建过程中遇到的问题和解决方法。

image.png

一 背景

在云计算环境下,虚拟机的负载均衡、自动伸缩、绿色节能以及宿主机升级等需求使得我们需要利用虚拟机(VM)迁移技术,尤其是虚拟机热迁移技术,对于down time(停机时间)要求比较高,停机时间越短,客户业务中断时间就越短,影响就越小。如果能够根据VM的历史工作负载预测其未来的工作负载趋势,就能够寻找到最合适的时间窗口完成虚拟机热迁移的操作。

于是我们开始探索如何用机器学习算法预测ECS虚拟机的负载以及热迁移的停机时间,但是机器学习算法要在生产环境发挥作用,还需要很多配套系统去支持。为了能快速将现有算法在实际生产环境落地,并能利用GPU加速实现大规模计算,我们自己搭建了一个GPU加速的大规模分布式机器学习系统,取名小诸葛,作为ECS数据中台的异构机器学习算法加速引擎。搭载以上算法的小诸葛已经在生产环境上线,支撑阿里云全网规模的虚拟机的大规模热迁移预测。

二 方案

那么一套完整大规模分布式系统机器学习系统需要哪些组成部分呢?

1 总体架构

阿里云全网如此大规模的虚拟机数量,要实现24小时之内完成预测,需要在端到端整个流程的每一个环节做优化。所以这必然是一个复杂的工程实现,为了高效的搭建这个平台,大量使用了现有阿里云上的产品服务来搭建。

整个平台包含:Web服务、MQ消息队列、Redis数据库、SLS/MaxComputer/HybridDB数据获取、OSS模型仓库的上传下载、GPU云服务器、DASK分布式框架、RAPIDS加速库。

1)架构

下图是小诸葛的总体架构图。

image.png

小诸葛是基于RAPIDS+DASK搭建的一个端到端的GPU加速的机器学习平台,整个平台都是基于阿里云上的产品和服务来搭建的。

我们在前端提供了一个基于Tengine+Flask的Web服务用于接受客户端发送来的数据计算请求,并利用消息队列与后端的大规模计算集群解耦。

Dask分布式框架则提供了数据准备和模型训练以及预测的计算节点的管理和调度,同时我们使用了阿里云的MaxComputer做训练阶段离线数据的处理,使用Blink等实时计算引擎做预测阶段的在线数据处理,使用HybridDB分析型数据库存放处理过的在线数据用于实时预测的数据拉取,并使用阿里云的对象存储服务OSS来获取训练数据和保存训练模型,使用GPU云服务器加速机器学习的运算。

2)设计思考

下面讲下平台的核心设计思考。

一个是分布式消息队列的使用:

  • 首先可以实现前端业务平台与后端计算系统的解耦,实现业务处理异步化。
  • 还可以实现高并发:使得系统支持百万以上规模的高并发读写。
  • 另外,如果后端系统出现故障,消息可以在队列里堆积且不丢失,待后端系统恢复后可以继续处理请求,满足高可用。
  • 消息队列的消费者可以是多套计算系统,而且多套系统可以做轮转升级,不影响前端业务,实现了高扩展。

另一个是GPU加速的分布式并行计算后端的设计:

  • 计算资源选择的是阿里云的GPU云服务器。分布式并行计算框架我选择了轻量级的DASK,它更易用更灵活,可以写出自由度更高的并行计算代码,且可以与GPU机器学习加速库RAPIDS很好的结合。
  • 同时通过与MaxComputer、HybridDB等多个数仓的数据链路打通,实现了一个从数据准备、离线训练到在线预测的端到端的计算平台。
  • 我们在数据仓库的选择上做了很多评估和相应的优化设计工作,MaxComputer因其实时性较差用于离线训练数据仓库,SLS实时性不错但不适合大规模并发访问,对于实时预测其数据读取性能也无法满足需求,所以实时预测选择了性能和并发规模更好的Cstore(HybridDB for MySQL,现已升级为AnalyticDB)。

整个平台的搭建涉及内部多个业务团队的合作,就业务需求的分析从而确定了最终算法,以及在数据ETL和数据源性能和稳定性方面的方案确定,和就预测结果如何应用于热迁移任务执行的方案确定,最终实现了一个端到端的平台达成了业务目标。

2 消息队列

消息队列使用的是阿里云的RocketMQ。

image.png

消息队列的使用需要考虑以下几个问题:

1)消息幂等

用于解决投递时消息重复的问题。

消息消费的场景下,消息已投递到消费者并完成业务处理,当客户端给服务端反馈应答的时候网络闪断。为了保证消息至少被消费一次,消息队列 RocketMQ 的服务端将在网络恢复后再次尝试投递之前已被处理过的消息,消费者后续会收到两条内容相同并且 Message ID 也相同的消息。

我们使用Redis数据库记录每条消息的Message Key用于幂等性,在消费时如果发现有重复投递的消息会丢弃掉,避免消息被重复消费执行。

2)消息是无序还是顺序

对于全网预测的批量消息处理,是不需要考虑消息的顺序的,所以为了保证消息的处理性能我们选择无序消息。

3 数据处理及数据平台的选择

数据是一切的根本,首先需要解决海量数据的存储、分析和处理。

  • 我们需要处理的数据可以是如下的不同种类:
  • 实时数据和非实时数据
  • 格式化数据和非格式化数据
  • 需要索引的数据和只需要计算的数据
  • 全量数据和抽样数据
  • 可视化数据和告警数据

每一个分类都对应一种或者多种数据处理、分析和存储方式。

多维度和多数据源是另一个要考虑的问题。对于相对复杂的业务场景,往往需要不同维度的数据(比如我们做热迁移预测使用了实时的CPU利用率数据,还有虚拟机规格等其它多个维度的数据)综合起来考虑。同样,负载场景下也不会只产生一种类型的数据,不是所有数据都是使用统一的方式处理和存储,所以具体实践中往往会使用多个不同的数据源。

公有云上的海量数据都达到了TB、PB以上的级别,传统的数据存储方式已经满足不了需求,因此针对大数据的存储诞生了Hadoop生态。传统的系统数据存储方式在数据量达到一定规模后会带来一系列问题:性能问题、成本问题、单点故障问题、数据准确性问题等等。取而代之的是以HDFS为代表的分布式存储系统。

除了数据存储的问题,实时数据的采集也很重要。业务系统都有各自的实时日志,日志收集工具都和业务服务部署在一起,为了不和线上服务抢占资源,日志收集必须要严格控制占用的资源。同时也不能在收集端进行日志清洗和分析操作,而应该集中收集到一个地方后再处理。

就我们使用的数据仓库而言,初期选择的是ODPS(即MaxCompute,类似于开源的Hadoop系统)和SLS(阿里云的日志服务)。ODPS可作为离线数据仓库存储海量的历史数据,而SLS则存放了海量的实时监控数据(比如我们使用的ECS虚拟机的CPU利用率数据)。

但是数据太多了又会出现信息过载的情况,所以往往需要对数据做聚合后再使用(比如我们CPU利用率的预测是对原始的分钟级采样数据分别做了5分钟平均和1小时平均的聚合)。因为我们发现SLS自带的聚合计算因为计算量太大导致速度非常的慢而无法满足实际计算需求。所以数据中台使用实时计算平台Blink将聚合好的数据存放在了新的SLS仓库里供我们实际计算使用。Blink是集团内部基于Apache开源的实时计算流处理平台Flink进行定制开发和优化后的流计算平台。

在大规模的线上预测时我们又发现,SLS根本无法满足高并发、低延迟的预测数据的拉取,常常因为排队拉不到数据或者拉取速度太慢导致大幅增加预测延迟,在经过评估测试后,我们选择了ECS数据中台提供的Cstore数仓存放聚合后的数据,从Cstore拉取预测需要的数据,从而解决了高并发、低延迟预测数据的拉取问题。

4 GPU加速的分布式并行计算后端的搭建

整个分布式并行计算后端的核心是并行计算框架的选择以及GPU加速。

1)框架选择

在分布式并行计算框架的选择上,有如下一些考虑,SPARK是目前大数据计算的主流分布式并行计算框架,但受限于CPU的性能和成本及SPARK任务无法获得GPU加速(当时搭建小诸葛的时候,SPARK还没有提供GPU加速的完善支持,后来发布的SPARK 3.0预览版开始已经提供了GPU加速的支持,这块的工作我们一直在保持关注和投入,后续会更新相关进展),无法满足全网大规模预测的需求,我们选择了DASK这个轻量级的分布式计算框架结合GPU加速库RAPIDS在GPU云服务器加速我们的算法。

我们利用DASK并行框架惰性计算的特点及提供的代码打包分发所有Dask Worker能力,将Worker执行代码通过Dask Scheduler分发到各个Worker节点,并在后端消息队列消费者收到计算任务后再通过Dask Client将执行任务递交到Dask Scheduler,由Dask Scheduler负责将计算任务调度到指定的Worker节点上完成相应的计算任务。可以看到DASK框架的架构和执行流程跟Spark是很像的,只不过Dask更轻量级一些,且是Python语言生态的框架,适合集成RAPIDS。

根据业务需求,我们设计了以下几种计算任务:数据准备任务、训练任务、预测任务,并为不同的任务配置了相应的Dask Worker完成相应计算。与此相适应的消息队列也设计了相应的消息Topic,Web Server也设计了相应的统一的HTTP报文格式。

训练和计算任务的Worker部署在GPU服务器上,而数据准备阶段目前没有GPU加速则部署在CPU服务器上。

针对每种任务,设计了丰富的参数选择,可以灵活支持预测目标(集群维度、NC维度、VM维度)、算法模型(ARIMA、LSTM、XGBoost等)、算法任务(回归任务、分类任务等)等不同的计算任务。

计算后端与多个数据源打通,实现离线训练数据(ODPS)和在线预测数据(CStore)的自动拉取,模型的自动保存和拉取(OSS),构成了一个闭环的端到端的计算平台。

2)GPU加速

为了提升计算的效率,我们采用了RAPIDS加速库实现了核心算法的GPU加速。

RAPIDS,全称Real-time Acceleration Platform for Integrated Data Science。顾名思义,RAPIDS是一个针对数据科学和机器学习的GPU加速库。借助RAPIDS,我们可以使用GPU来加速大数据和机器学习算法。

image.png

在项目过程中,我们对算法、计算任务流程做了大量的优化,最终只用了8台小规格GPU服务器就实现了原本需要50台+大规格CPU服务器(2000+ vCPU)才能完成的预测任务,成本大幅下降为之前的1/10。

5 模型更新及评估发布系统

一个完整的机器学习平台还需要提供自动的离线训练系统和模型评估和发布系统。

目前线上运行的小诸葛实现了自动化的在线实时预测,但是模型的评估、更新及发布还未完全实现自动化,这也是目前正在补充和完善的工作。

目前,小诸葛已经提供了线上测试评估数据的自动化生成和采集,后续结合自动化的模型评估系统和模型发布系统,将可以实现真正意义上的全流程自动化。

三 总结

云原生背景下,越来越多的业务系统选择在云上构建自己的业务平台,借助于公有云完善的技术生态,使得搭建一个可用于生产环境的企业级平台变得不再那么困难。

同时通过小诸葛平台,实现了GPU加速机器学习的工程落地,实际的业务效果来看,也证明了GPU在加速数据科学领域的巨大价值潜力。

相关实践学习
阿里云云原生数据仓库AnalyticDB MySQL版 使用教程
云原生数据仓库AnalyticDB MySQL版是一种支持高并发低延时查询的新一代云原生数据仓库,高度兼容MySQL协议以及SQL:92、SQL:99、SQL:2003标准,可以对海量数据进行即时的多维分析透视和业务探索,快速构建企业云上数据仓库。 了解产品 https://www.aliyun.com/product/ApsaraDB/ads
目录
相关文章
|
24天前
|
缓存 BI 测试技术
2026通义千问Qwen3.7-Max全解:Agent智能体底座,架构拆解与API实操教程
随着智能体应用快速落地,面向长周期自主任务的大模型成为开发选型的重点,新版通义千问Qwen3.7‑Max作为旗舰文本大模型,主打Agent智能体底座能力,在复杂推理、工程代码开发、超长文档处理、多轮工具调用等方面进行大规模优化,能够支撑长时间连续自动化任务。很多开发者在初次接触该模型时,容易混淆它与同系列其他版本的能力差异,不清楚MoE混合专家架构的运行逻辑,在API接入、工具调用编排时遇到参数配置、返回格式异常等问题。本文将从核心功能、底层技术架构、实操使用方法三个维度完整解析Qwen3.7‑Max,附带可直接运行的API调用代码,讲解参数配置方法,梳理开发过程中的限制条件与避坑要点,帮助开
519 2
|
2月前
|
缓存 人工智能 自然语言处理
通义千问Qwen大模型全系列模型深度解析:能力矩阵、行业落地、选型定价与API实操完整教程(Max/Plus/Flash/Coder/Omni)
随着生成式AI从单点Demo走向企业规模化落地,很多团队在选型大模型时容易陷入困惑:不知道该选用旗舰模型还是轻量模型,分不清文本、视觉、全模态、编程模型各自适用场景,不清楚不同档位模型的价格差异,也不熟悉API集成、上下文缓存、批量推理等工程化手段。通义千问Qwen并非单一模型,而是一套分层完整的大模型家族,覆盖旗舰复杂推理、均衡长文本、高并发轻量任务、代码开发、图像视频理解、全模态音视频交互等多个品类,同时提供在线API调用、开源本地部署两种方案。本文将完整梳理Qwen全系列模型能力矩阵,拆解每一类模型的技术特点、适用业务场景,介绍金融、制造、政务、电商、软件研发等行业落地案例,详细讲解按量
724 0
|
11月前
|
人工智能 运维 供应链
制造企业RPA选型不踩坑:从场景落地到产品推荐,这篇全说透
凌晨两点,制造企业仍陷在手工录入、数据孤岛与重复劳动中。RPA以“数字员工”身份破局,实现财务、生产、供应链等多环节自动协同,降本增效、零误差、可追溯。实在智能实在Agent融合大模型,让“一句话”即可完成复杂流程,助力企业迈向智能自动化新时代。
991 6
|
3月前
|
JSON 自然语言处理 小程序
天气数据API,实时天气预报与历史天气查询
天气预报API是面向企业与开发者的标准化气象服务接口,支持地名/IP/坐标等多方式查询,提供实时天气、7天预报、生活指数、空气质量及预警等全维度数据,更新及时(实况30分钟刷新)、稳定高并发,适配APP、农业、物流、政务等场景,支持多语言接入与私有化部署。
1222 0
天气数据API,实时天气预报与历史天气查询
|
3月前
|
机器学习/深度学习 人工智能 数据可视化
实测解读|阿里云GPU云服务器gn7i/gn6v主流GPU实例算力、显存、小时/月付成本全测评
在大模型私有化部署、深度学习训练、AIGC图像视频生成、科学仿真计算等场景中,GPU云服务器已经成为开发者与企业最常用的弹性算力底座。自研大模型微调、本地私有推理服务、AI绘画、视频生成任务,对显存带宽、FP16/FP8算力、网络吞吐都有着硬性要求,很多新手在选型阶段很容易混淆共享vGPU与物理独占GPU、不同实例族的硬件差异,同时对按量计费、月付、包年、节省计划的实际支出预估偏差极大,经常出现选卡不当造成显存溢出、高峰算力不足、长期使用成本超预期等问题。本文将梳理主流GPU实例完整配置规格、明细计费标准,同时附上标准化基准测评方案、可直接运行的测试脚本,结合私有化大模型部署场景做横向对比,帮
478 0
|
10月前
|
数据采集 安全 测试技术
代理IP从哪里获取?有什么不同?
代理IP来源决定质量与合规性,获取途径影响便捷与风险。数据中心IP性价比高但易被封;住宅IP隐匿性强却成本高;机房拨号IP兼具稳定与隐蔽。正规途径首选专业服务商,次选云平台API、自建服务器,免费代理慎用。认清差异,按需选择,规避风险。
代理IP从哪里获取?有什么不同?
|
7月前
|
弹性计算 安全 测试技术
阿里云新用户账号注册流程、新老用户判定及2026年新用户优惠活动
2026年,初次选购阿里云产品的用户需先完成账号注册与实名认证以享受新用户优惠。注册可通过支付宝扫码或账号密码方式进行,并建议绑定电子邮箱。实名认证分个人和企业两类,企业认证可享更高购买限额和专属优惠。新用户判定标准为无收费云产品购买记录,新用户可参与云产品免费试用、轻量应用服务器抢购、ECS云服务器折扣等多重优惠活动,建议用户根据业务需求选择适合的优惠活动,并在购买前领取优惠券以进一步降低成本。
2177 6
|
6月前
|
人工智能
阿里云企业级云盘:5个人、存储空间200GB,费用价格6.63元1个月、79.60元1年
阿里云盘企业版(CDE)是AI加持的企业级网盘,支持智能检索、知识库问答等。提供多档套餐:5人200GB仅6.63元/月;5人500GB 169.90元/年;20人2TB 749.00元/年。详细参考阿里云盘企业版官网:https://t.aliyun.com/U/wbANEa
712 0
|
7月前
|
人工智能 自然语言处理 安全
2026 最新版 OpenClaw 进阶优化版,Windows 一键安装更专业(包含新安装包)
2026 最新版 OpenClaw 进阶优化安装包,在官方版本基础上,升级汉化精度、优化运行效率,新增系统适配优化功能,解决旧版卡顿、乱码、兼容性差等问题。内置专业配置脚本,自动检测系统版本与硬件参数,精准匹配运行设置,全程无代码干预、免命令操作,一键完成安装与汉化,安装后功能完整、响应迅速,适配专业办公、学习等进阶场景,满足专业用户的使用需求。
|
9月前
|
Web App开发 人工智能 机器人
2026年阿里云无影云电脑部署OpenClaw(Clawdbot)小白零基础教程
在AI自动化工具飞速发展的2026年,OpenClaw(原Clawdbot)凭借其轻量高效、开源免费、全场景适配的核心优势,成为个人办公提效、企业轻量化数字化转型的首选工具。与传统聊天机器人不同,OpenClaw并非单纯的对话工具,而是一款具备真实操作能力的个人AI助手,可实现邮件管理、日历规划、网页自动化、多平台IM集成等多种功能,既能部署在本地设备,也能完美适配阿里云无影云电脑,兼顾便捷性与云端稳定性,即便毫无技术基础的小白,也能快速完成部署落地。
596 1