客户案例 > 案例详情

月之暗面 Kimi 大模型基于阿里云 ACK 实现海量数据预处理

3

突发性任务资源利用率提升

45%

综合计算成本降低

99.95%

单任务 TB 级数据处理稳定性

客户介绍

月之暗面是一家专注于人工智能技术研发与应用的创新型企业,其核心产品 Kimi 依托自研的大语言模型,为用户提供了高效、精准的 AI 智能助手服务。Kimi 凭借多轮对话、长文本理解、跨领域推理等能力,广泛应用于 AI 搜索、数据分析、内容生成等场景,受到海量专业用户和企业的欢迎。

月之暗面作为基础模型创业公司,为了加速大模型的训练迭代,在模型数据预处理方面,需要高性价比、弹性灵活的 CPU 和 GPU 算力满足模型迭代的业务需求。

业务挑战

数据作为大模型训练过程中的重要素材,对于提升模型性能、优化模型效果有着重要作用,高质量的数据对于月之暗面这样的大模型公司来说至关重要。模型数据预处理需要对海量的文本和多模态数据清洗,数据类型包括了文本、图片、音频及视频等多种格式。在用户原有的架构下,数据预处理任务均基于自建的 Ray 和 Spark 框架开展,经过一段时间的验证和运行,遇到了如下痛点问题及挑战:

  • 大规模集群的稳定性挑战:大规模 Spark/Ray 集群稳定性较差,难以保障 TB 级数据预处理任务的稳定执行。

  • 资源弹性效率低:在面对突发任务或数据量波动时,计算资源无法快速按需扩缩,导致计算资源浪费或任务延迟。例如,在处理小规模数据时,集群资源可能过度分配;而在大规模任务突发时,又无法及时扩容,严重影响处理任务的及时性。因此,月之暗面团队希望具备短任务按需极致弹性的能力,以更好地适应动态变化的工作负载。

  • 缺少可观测体系和灵活调度机制:使用数据的业务方涉及不同方向的团队或小组,需要进行资源分配和任务优先级配置,以保证高优先级任务的稳定运行。但由于缺少任务级别的监控能力,难以实时观测任务进度、资源使用情况,导致无法及时调整调度策略,进一步影响了集群整体运行效率。

阿里云的解决方案

针对月之暗面在大规模集群稳定性、资源弹性效率、可观测与灵活调度等方面的痛点需求,阿里云给出了以阿里云容器服务 Kubernetes 版(ACK)为核心、对 Ray 和 Spark 任务进行深度优化的解决方案。

通过 ACK 的全托管免运维,解决了大规模集群的稳定性问题。同时充分发挥 ACK 在极致弹性和多样算力方面的关键能力,实现了任务的按需极致弹性伸缩。此外,借助 ACK 集成的可观测工具和灵活调度机制,月之暗面实现了任务级别的监控和资源动态分配,满足了不同业务团队对任务优先级的灵活调度需求。该方案为月之暗面带来了显著的效率提升,并大幅优化了成本投入。

Ray/Spark on ACK 稳定免运维

KubeRay 托管方案

阿里云 ACK 服务提供了托管的 KubeRay 组件,并在开源社区版本的基础上进行了稳定性优化。用户无需自己安装和维护开源的 KubeRay,只需要关心如何使用 RayCluster,RayJob 等 CRD 资源与自己的业务或者工作流引擎结合即可,极大简化了用户维护的工作投入。KubeRay 在 ACK 集群中快速部署能力,也广泛服务于各类数据科学家、ML 工程师、平台工程师及开发人员等。

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-operator,还具备了以下多项优势:

  • 添加了对阿里云其他组件的集成,例如 ack-kube-queue 作业排队功能。

  • Spark Operator 通过 webhook 补足了原生 Spark 不支持的 K8s 特性,包括:driver/executor 的 tolerations、nodeSelector、数据卷挂载等能力。

  • 集成了 airflow/argo 等工作流编排框架。

  • 方便使用 Git 等版本控制系统对 Spark 作业 YAML 清单文件进行版本化管理。

使用 Zeppelin 进行交互式 Spark 作业开发

随着数据开发工作的持续进行,数据处理的范围和团队成员也迎来了快速增长。数据探索效率差、开发作业交互性缺失等问题开始逐一显现。为了解决这些问题,阿里云提供 Zeppelin 在 ACK 中一键部署的能力,支持月之暗面持续高效的处理数据。

Apache Zeppelin 是一款大数据交互式分析和可视化的 Notebook 工具,可以用于实现数据的接入、发现、转换、分析和可视化等能力。其前端提供了丰富的可视化图形库,后端以解释器(Interpreter)这种插件结构扩展的方式,集成了 Spark、Flink、JDBC、Markdown、Shell 等各种常见的解释器。这使得数据分析人员可以很方便地使用 SQL 在 Zeppelin Notebook 中进行数据开发。

大规模弹性最佳实践

使用 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 实例,充分节省成本。

使用对象存储 OSS 助力大规模数据处理

海量算力需要与高效的数据存储和读取能力相匹配,才能真正实现大规模数据处理的高效执行。阿里云 OSS 凭借卓越的高性能、高可用和稳定性优势,在月之暗面的大规模数据预处理场景中,为海量数据的存储与快速处理提供了可靠的保障。

在实际任务中,OSS 支持了极高的并发处理能力和带宽需求,QPS 最高可达数十万、OSS 内网 Tbps 级读写带宽,有力地应对了海量数据高并发的读写请求,确保数据处理流程顺畅无阻。

月之暗面团队使用阿里云 OSS 的资源池流控组能力,实现了 Bucket 级别带宽调整,通过对不同请求者按需灵活调配带宽,保障在高负载时段,关键服务与计算密集型任务优先获取充足资源。此外,通过配置流控事件,在触及预设阈值时,会迅速向任务管理员发送通知,全方位守护了数据处理任务的稳定运行。

在数据的安全保障方面,依赖阿里云 OSS 的多版本控制功能,月之暗面团队还实现了对文件内容变化的追溯,避免数据丢失问题。通过开启 OSS 文件版本控制能力,针对数据文件的覆盖和删除操作将会以历史版本的形式保存下来。在遇到数据误删除或文件被覆盖的情况时,OSS 的多版本控制功能支持将存储在 Bucket 中的对象恢复至任意时刻的历史版本,从而有效地保障数据的完整性和可用性。

搭建完善的可观测体系

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 监控能力,极大地简化了运维流程,提升了生产环境中的稳定性和可靠性。

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 中呈现。

日志服务 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%。