摘要:月之暗面是一家专注于人工智能技术研发与应用的创新型企业,其核心产品Kimi依托自研的大语言模型,为用户提供了高效、精准的AI智能助手服务。Kimi凭借多轮对话、长文本理解、跨领域推理等能力,广泛应用于AI搜索、数据分析、内容生成等场景,受到海量专业用户和企业的
阿里云弹性计算阿里云基础设施
2025年03月27日 17:12浙江
一、前言
月之暗面是一家专注于人工智能技术研发与应用的创新型企业,其核心产品Kimi依托自研的大语言模型,为用户提供了高效、精准的AI智能助手服务。Kimi凭借多轮对话、长文本理解、跨领域推理等能力,广泛应用于AI搜索、数据分析、内容生成等场景,受到海量专业用户和企业的欢迎。
月之暗面作为基础模型创业公司,为了加速大模型的训练迭代,在模型数据预处理方面,需要高性价比、弹性灵活的CPU和GPU算力满足模型迭代的业务需求。
二、需求背景及痛点
数据作为大模型训练过程中的重要素材,对于提升模型性能、优化模型效果有着重要作用,高质量的数据对于月之暗面这样的大模型公司来说至关重要。模型数据预处理需要对海量的文本和多模态数据清洗,数据类型包括了文本、图片、音频及视频等多种格式。在用户原有的架构下,数据预处理任务均基于自建的Ray和Spark框架开展,经过一段时间的验证和运行,遇到了如下痛点问题及挑战:
1. 大规模集群的稳定性挑战:大规模Spark/Ray集群稳定性较差,难以保障TB级数据预处理任务的稳定执行。
2. 资源弹性效率低:在面对突发任务或数据量波动时,计算资源无法快速按需扩缩,导致计算资源浪费或任务延迟。例如,在处理小规模数据时,集群资源可能过度分配;而在大规模任务突发时,又无法及时扩容,严重影响处理任务的及时性。因此,月之暗面团队希望具备短任务按需极致弹性的能力,以更好地适应动态变化的工作负载。
3. 缺少可观测体系和灵活调度机制:使用数据的业务方涉及不同方向的团队或小组,需要进行资源分配和任务优先级配置,以保证高优先级任务的稳定运行。但由于缺少任务级别的监控能力,难以实时观测任务进度、资源使用情况,导致无法及时调整调度策略,进一步影响了集群整体运行效率。
三、阿里云Ray/Spark on ACK
整体解决方案
针对月之暗面在大规模集群稳定性、资源弹性效率、可观测与灵活调度等方面的痛点需求,阿里云给出了以阿里云容器服务Kubernetes版(ACK)为核心,对Ray和Spark任务进行深度优化的解决方案。
通过ACK的全托管免运维,解决了大规模集群的稳定性问题。同时充分发挥ACK在极致弹性和多样算力方面的关键能力,实现了任务的按需极致弹性伸缩。此外,借助ACK集成的可观测工具和灵活调度机制,月之暗面实现了任务级别的监控和资源动态分配,满足了不同业务团队对任务优先级的灵活调度需求。该方案为月之暗面带来了显著的效率提升,并大幅优化了成本投入。
1. Ray/Spark on ACK稳定免运维
a. KubeRay托管方案
阿里云ACK服务提供了托管的KubeRay组件, 并在开源社区版本的基础上进行了稳定性优化。 用户无需自己安装和维护开源的KubeRay,只需要关心如何使用RayCluster,RayJob等CRD资源与自己的业务或者工作流引擎结合即可,极大简化了用户维护的工作投入。KubeRay在ACK集群中快速部署能力,也广泛服务于各类数据科学家,ML工程师,平台工程师及开发人员等。
b. Spark-Operator托管方案
Spark Operator基于K8s中常见的Operator模式,定义了SparkApplication和SchedulerSparkApplication两种CRD(自定义资源),允许用户通过编写YAML资源清单来提交Spark作业,而无需手动构造冗长的spark-submit提交命令,因此广泛应用于各类数据预处理任务中。
为了满足用户对Spark on容器集群的需求,阿里云ACK应用市场提供了ack-spark-operator组件。用户无需自行维护Spark Operator,即可快速构建起Spark计算集群。此外,ack-spark-operator组件相比于开源spark-opreator,还具备了以下多项优势:
• 添加了对阿里云其他组件的集成,例如ack-kube-queue作业排队功能。
• Spark Operator通过webhook补足了原生Spark不支持的K8s 特性,包括:driver/executor的tolerations、nodeSelector、数据卷挂载等能力。
• 集成了airflow/argo等工作流编排框架。
• 方便使用Git等版本控制系统对Spark作业YAML清单文件进行版本化管理。
c. 使用Zeppelin进行交互式Spark作业开发
随着数据开发工作的持续进行,数据处理的范围和团队成员也迎来了快速增长。数据探索效率差、开发作业交互性缺失等问题开始逐一显现。为了解决这些问题,阿里云提供Zeppelin在ACK中一键部署的能力,支持月之暗面持续高效的处理数据。
Apache Zeppelin是一款大数据交互式分析和可视化的Notebook工具,可以用于实现数据的接入、发现、转换、分析和可视化等能力。其前端提供了丰富的可视化图形库,后端以解释器(Interpreter)这种插件结构扩展的方式,集成了Spark、Flink、JDBC、Markdown、Shell等各种常见的解释器。这使得数据分析人员可以很方便地使用SQL在Zeppelin Notebook中做数据开发。
2. 大规模弹性最佳实践
a. 使用ACS弹性资源及BestEffort,实现经济高效运行Spark
在处理大规模数据时,合理调配计算资源至关重要。在月之暗面数据团队日常的Spark作业中,计算资源涵盖了ECS固定实例、ACS弹性资源以及ACS BestEffort算力,可以根据需求灵活选择。
阿里云容器计算服务ACS(Alibaba Cloud Container Compute Service,ACS)为Kubernetes提供了基础的容器Pod运行环境,通过将Spark作业中的driver和executor pod动态调度至ACS,实现了Serverless Spark作业执行。同时,每个ACS容器实例依托轻量级虚拟化安全沙箱技术进行完全隔离,确保容器实例间互不干扰。
在部分任务场景中,月之暗面大量采用了ACS BestEffort算力,不仅确保了任务的高效执行,还有效的节省了计算成本。BestEffort算力是一种灵活的资源调度策略,特别适合短时间运行的Job任务以及具备高扩展性和容错率的无状态应用。
将Spark作业部署在ACS上还具有以下显著优势:
•超大容量:集群无需额外配置即可获得最多5万Pod容量,无需提前规划。
•秒级弹性:可在极短时间内创建出数千个Pod以交付大量算力,无需担心业务高峰期间Pod创建时延受到影响。
•节约成本:Pod按需创建,按量计费,不会由于资源闲置造成资源浪费,并且能够支持Spot实例,充分节省成本。
b. 使用对象存储OSS助力大规模数据处理
海量算力需要与高效的数据存储和读取能力相匹配,才能真正实现大规模数据处理的高效执行。阿里云OSS凭借卓越的高性能、高可用和稳定性优势,在月之暗面的大规模数据预处理场景中,为海量数据的存储与快速处理提供了可靠的保障。
在实际任务中,OSS支持了极高的并发处理能力和带宽需求,QPS最高可达数十万、OSS内网Tbps级读写带宽,有力地应对了海量数据高并发的读写请求,确保数据处理流程顺畅无阻。
月之暗面团队使用阿里云OSS的资源池流控组能力,实现了Bucket级别带宽调整,通过对不同请求者按需灵活调配带宽,保障在高负载时段,关键服务与计算密集型任务优先获取充足资源。此外,通过配置流控事件,在触及预设阈值时,会迅速向任务管理员发送通知,全方位守护了数据处理任务的稳定运行。
在数据的安全保障方面,依赖阿里云OSS的多版本控制功能,月之暗面团队还实现了对文件内容变化的追溯,避免数据丢失问题。通过开启OSS文件版本控制能力,针对数据文件的覆盖和删除操作将会以历史版本的形式保存下来。在遇到数据误删除或文件被覆盖的情况时,OSS的多版本控制功能支持将存储在Bucket中的对象恢复至任意时刻的历史版本,从而有效地保障数据的完整性和可用性。
3. 完善的可观测体系
a. ACK深度集成Prometheus监控能力
在实际应用场景中,用户通过提交RayJob来创建RayCluster,以完成对数据集的处理任务。在此过程中,对RayCluster的性能监测至关重要。原生RayCluster虽然提供了用于查看指标(metric)信息的dashboard,但用户需要手动部署开源的Prometheus和Grafana,这种方式难以确保组件的稳定性,并且缺乏专业运维人员的支持。
Ray on ACK方案深度集成了阿里云Prometheus的监控能力,为RayCluster量身定制了监控大盘。用户只需安装ack-prometheus组件以及相应的ACK Pod Monitor和Service Monitor资源,便可迅速收集RayCluster的Metric数据,并通过专门的RayCluster监控大盘进行直观展示。
借助于云产品的紧密集成,Ray on ACK方案为用户提供了高可用的RayCluster监控能力,极大地简化了运维流程,提升了生产环境中的稳定性和可靠性。
b. ACK Spark/Ray History Server构建作业监控能力
Spark/Ray均提供了功能丰富的Web UI用于对作业的执行情况进行监控展示,用户可以通过Web UI很方便地查看作业的运行情况,包括了正在运行和已经完成的Jobs、每个Job的提交时间、执行时间和详细进度等关键信息。
ACK应用市场提供了ack-spark/ray-history-server组件,支持HDFS、OSS、OSS-HDFS作为日志存储后端。月之暗面团队在各类作业中将事件日志写入到OSS,再通过在History Server中配置相同的OSS路径,就可以快速实现解析该日志并在Web UI中呈现。
c. 日志服务SLS统一ECS/ACS Pod日志收集
在容器集群运行Spark作业时,日志分散在不同Pods中,导致日志管理复杂。月之暗面团队借助阿里云日志服务(SLS),充分发挥其一站式日志采集、加工及查询分析能力,实现了对Spark日志的高效管理。
Spark业务日志分为事件日志、引擎日志和业务日志。事件日志通过特定SDK写入OSS,供Spark History Server解析渲染;引擎日志和业务日志则同时输出至控制台和指定文件,用于后续查询分析。
由于Spark作业同时使用ECS和ACS资源,而两者日志收集方式不同,通过创建SLS提供的AliyunConfig资源,可以轻松统一ECS/ACS Pod的日志收集配置,进一步提升了日志管理的便捷性和效率。
月之暗面通过这一系列方案,极大地简化了日志收集和分析流程,使得开发人员能够专注于业务逻辑的优化,而无需花费大量时间在日志管理上。统一的日志收集配置提高了月之暗面的系统稳定性和可靠性,为海量数据的预处理提供了坚实基础。
四、业务收益及展望
通过阿里云全托管容器化方案的实施,月之暗面在数据处理能力、资源利用效率和运维管理维度实现了全方位升级:
•稳定性跃升:基于ACK全托管的Ray/Spark组件,单任务TB级数据处理稳定性达到99.95%,故障定位时效提升60%,保障了模型训练数据供给的连续性。
•大幅提升弹性效率:通过ECS+ACS混合弹性架构,短任务资源供给时间缩短至秒级,突发性任务资源利用率提升3倍,综合计算成本降低45%。
•资源管理精细化:结合OSS的资源池流控能力与优先级调度策略,高优先级任务SLA达标率提升至99%+,资源冲突率下降95%。
•全链路可观测:Prometheus+SLS的云原生监控体系,实现全链路指标可视化,异常检测响应速度提升50%,日志分析效率提高40%。
五、客户原声
阿里云ACK+ACS的容器解决方案为我们的大模型数据预处理带来了质的飞跃。稳定性大幅提升,资源弹性高效,成本显著降低,运维管理也更加轻松。期待未来与阿里云继续深入合作,共同探索更高效、低成本的数据处理方案,推动大模型技术的持续进步。
-- 月之暗面技术专家James Wang
来源:爱生活的Lily呀