中国科学院高能物理研究所计算中心-助理研究员-符世园
一、同步辐射光源装置介绍 #
起源 #
什么是同步辐射光源?它是如何产生的?

同步辐射光源装置的原理是当带电粒子在环内持续转动并加速时会产生同步辐射。这种辐射类似光源,能够发出光线,如同医院拍 X 光时,光线可以穿透物体,呈现其内部物质结构。辐射模式会被压缩成窄锥形,在圆环上产生与粒子轨道相切的辐射,光线由此发出并最终照射到物体上。

该装置的发展历史悠久,1930 年首个粒子加速器建成,1947 年在该加速器上首次检测到同步辐射光。随着技术进步,电子加速器与同步辐射逐渐成为独立研究分支 —— 此前同步辐射依附于加速器,后来开始在加速器外建设专用的同步辐射光源装置。
应用 #
这种光源在材料与生命物质的基础及应用研究中具有广泛用途,涵盖先进材料、能源与环境、极端条件、文化遗产、石油化工、合金等领域。

以文化遗产研究为例,若需确定古董年代,可通过光源穿透物体,分析内部物质结构,在不破坏古董的前提下推断其年代。在合金领域,制造飞机机翼等精密器件时,可通过光源照射检测内部是否存在气泡等缺陷。在健康食品领域,曾通过此类光源解析非典等病毒的结构。
世界上主要的同步辐射光源装置 #

全球范围内已建成超过 50 个同步辐射光源,分布于各大洲,能量与建成年代各异。中国在上海设有上海同步辐射光源装置,北京怀柔正在建设的高能同步辐射光源(HEPS)是《国家重大科技基础设施建设 “十三五” 规划》优先布局的十大设施之一。建成后,它将成为我国首台高能同步辐射光源,也是世界上亮度最高的第四代同步辐射光源。
其核心功能是通过光源解析物体内部构成、物质结构生成及演化全生命周期过程,为材料学、化学、能源科学等领域的基础研究提供支撑。
二、关于HEPS #
HEPS基础介绍 #

上图是怀柔正在建设的HEPS(高能同步辐射光源)的剖面图。带电粒子在环中持续旋转并加速,加速完成后,其发射的X射线将被引导至外部实验大厅中与存储环相切的束线站。这一过程类似于打开多个手电筒,光束照射到外部束线站。束线站内放置样品,类似于人体CT扫描的原理——光线穿透样品后形成投影数据。
每条光束线站针对特定研究技术设计,因此HEPS装置将产生海量实验科技数据。目前项目分多期建设,一期规划十余条光束线站。这些线站建成后,预计每天产生的原始实验数据可达800TB,不包含处理后需保存的重建类数据,峰值数据量可达PB量级。
由于存在多个线站,不同线站产生的数据类型和数据量存在显著差异。例如,成像线站产生的数据类似于医院X光成像,但精度更高,可实现对物体360度全方位扫描并重建三维结构。衍射线站则记录光源照射后产生的衍射图像序列,而谱学线站产生的数据量相对较小。
不同线站产生的数据差异导致了后续处理的复杂性。例如,成像线站需要进行三维结构重建,谱学线站则侧重于谱学特征匹配。不同科学计算任务又衍生出多种计算方法。因此,整个任务场景在数据类型和计算需求上均呈现出高度复杂性。
HEPS数据流向 #


目前HEPS(高能同步辐射光源)实验数据按照分层分级存储策略。由于实验数据量庞大,同时需要为科学家提供计算环境,因此设计了三层存储架构,包括线站存储、中心存储和磁带库。
- 线站存储主要用于接收探测器(DAQ)采集的原始数据,如图像类数据。这一层级具备高性能读写能力,能够快速存储数据以支持在线计算。然而,由于容量有限,数据在此仅短期存储数天,随后会被迁移到中心存储。
- 中心存储的读写性能要求相对较低,但提供了更大的存储容量,可保存数据长达数月,供科学家执行离线计算任务。
- 最终,所有实验数据均需实现长期持久化存储。为此,我们将数据迁移至磁带库。磁带库作为归档存储,确保数据在数十年内可随时调用。未来若出现新的科学算法需求,科学家可随时读取历史数据进行重新计算,从而可能获得新的科学发现。
在此基础上,HEPS数据处理支持多种计算模式:
- 线站快视计算:在实验过程中,用户可实时查看探测器采集的图像,快速判断实验状态(如样品位置、质量及参数设置)。这种计算模式通常在实验大厅本地以单机形式运行,帮助用户在有限的实验时间内快速调整实验条件。
- 在线计算:当数据完成采集并存储后,系统会对数据进行初步处理,生成反馈结果,为实验过程提供指导。
- 离线计算:针对完整数据集进行深度分析,最终生成实验结果。这一模式适用于复杂数据处理和长期研究任务。
通过分层存储与多模式计算的结合,HEPS计算和存储系统不仅满足了海量数据存储需求,还为科学家提供了灵活的计算环境,支持从实时反馈到长期研究的全流程科学探索。
3. HEPS学科应用 #

在HEPS(高能同步辐射光源)数据处理过程中,计算IO模式呈现多样化特征,这源于不同应用场景对数据处理需求的差异性:
- 成像线站:该线站主要执行三维重建任务,生成一系列图像数据。计算过程中需按行提取所有图像的对应行数据,以行切片作为最小计算单元。由于成像线站产生的数据量较大,其IO模式强调高带宽和顺序读取能力。
- 衍散射线站:采用独特的区域划分算法,这种分层切分策略与成像线站的按行切分形成显著区别,其IO模式更侧重随机访问和局部数据聚合。
- X射线吸收光谱(XAS):处理一维谱线数据,最小计算单元为单个数据点。由于数据量相对较小,其IO模式以低延迟和高并发访问为特征。
各线站的IO模式差异反映了其科学目标的多样性,这种多样化的IO模式要求存储系统具备灵活的访问策略和性能优化能力,以满足不同科学任务的需求。

随着人工智能(AI)技术的迅猛发展,传统科学数据处理模式正面临革新。目前已有算法将AI引入科学数据处理流程,以加速整个科学处理过程。AI算法的引入,结合并行加速技术,为线站数据的快速可视化(快视)提供了新的思路和方法。
以衍散射线站为例,传统重建算法处理20GB数据需要至少10小时。然而,随着数据量的不断增长,重建时间将进一步延长。这种延迟不仅影响了科学家的工作效率,也限制了实验的实时性。AI算法的引入显著改善了这一状况:
- 实时重建:通过少量数据实时训练得到AI模型,并将该模型快速部署到计算环境中,后续探测器采集的每张图像数据可实现近实时重建。用户在数据采集过程中即可查看重建结果,无需长时间等待。
- 用户体验优化:AI加速的快视系统大幅缩短了数据处理时间,使科学家能够更高效地调整实验参数,优化实验设计。例如,传统方法需要科学家等待10小时才能看到结果,而AI方法可在数据采集完成后半小时内提供初步反馈。
通过AI技术的应用,科学数据处理从传统的批处理模式转变为实时交互模式。这种转变不仅提升了数据处理效率,还增强了科学家与实验数据之间的互动性,为科学发现提供了更强大的工具支持。未来,随着AI算法的进一步优化和硬件性能的提升,科学数据处理将迎来更高效、更智能的时代。
三、关于Daisy #
Daisy的介绍 #

在面对多学科交叉和复杂方法论的科学场景时,一个通用的底层软件框架显得尤为重要。我们团队开发的Daisy数据分析软件框架(Daisy-Data analysis software framework)正是为应对这一挑战而设计。该框架旨在为HEPS(高能同步辐射光源)及其他科学设施提供高效、灵活且可扩展的数据处理能力,其核心模块包括:
- 用于高吞吐量数据 I/O、多模式数据交换和多源数据访问的数据对象管理模块
- 可扩展的集群计算能力支持,适用于不同规模、不同吞吐量和低延迟的数据处理
- 用于科学软件集成和开发的界面和开发环境
- 特定领域 App 和基于框架的灵活通用工作流管理系统
Daisy-数据引擎 #

我的工作主要聚焦于Daisy的数据引擎,目标是克服HEPS(高能同步辐射光源)场景的复杂性,满足多样化需求。具体包括以下几个方面:
- 功能支持
在功能上,需要支持各种算法,统一不同应用在IO上的接口参数,能够兼容不同的数据格式及IO方法库,包括特定学科应用的IO方法库。例如,XAS(X射线吸收光谱)的Larch方法库,也需要将其集成进来,以更好地支持科学家的实验。
- 并行集群与数据调度
需要支持在并行集群上进行高效调度,同时支持从磁盘读取的数据。这些数据也有可能通过ZMQ发送。之所以选择ZMQ,是因为光源装置的探测器端部署了一套受学科场景专用的系统,该系统采用ZMQ进行数据的发送与接收。
四、HEPS IO瓶颈 #

目前在整个流程中遇到了一些IO瓶颈问题,有以下几种可能的解决方法:
- 线站本地资源限制:线站本地资源有限,无法执行复杂的计算任务。我们需要快速建立计算资源到线站的数据通路,以便用户能够快速看到实验的正确性结果,包括图像的正确性、重建参数及重建结果的正确性。
- 应用模式多样性:目前在整个光源领域缺乏统一的解决方案,需要开发出一种统一的数据流供给方法。
- 数据格式与计算需求不匹配:数据格式和计算需求之间存在不匹配的问题,希望在整个过程中进行一些数据重构,以解决这一问题。
- 在线计算中的IO延迟:数据落盘再读取导致了一些IO延迟问题。在某些应用中,数据读取阶段占据了约一半的时间,严重影响了科学计算的效率和科研成果的产出。因此,需要开发一个高性能的数据缓存池来缓解这一问题。
五、基于Alluxio的IO加速缓存层 #
基于目前遇到的诸多问题和后续的规划,团队引入了Alluxio作为IO加速的缓存层。
光源数据流的主要场景?
- 科学计算的数据流与业界的数据流存在差异。业界数据流通常以一条条消息形式存在,类似数据库表格中的一条数据。而科学计算的数据流从探测器获取的是一张图或一些数据,单个数据流的大小可能达到MB甚至GB量级;
- 科学计算的数据需要反复调试,因此数据会被多次读取;
- 科学计算的数据消费模式与数据产生模式不同。例如,数据可能按帧生成一张张图片,但应用需要按行处理这些数据;
- 传统的科学软件处理模式通常以文件为主。
为什么选择Alluxio?
- Alluxio的核心优势:
- 分布式内存管理能力:能够有效提升数据读写速度;
- 统一命名空间:简化数据访问;
- 高效性能:加入Alluxio后,IO速度有望超过线站存储;
- Alluxio使用方式灵活:
- 通过Fuse模式挂载项目,应用可以快速进行测试、部署和验证;
- 支持Java原生接口和Python接口,用户可以在脱离现有框架的情况下访问Alluxio中的数据;
- 多数据源单点访问能力:可以将不同的存储源(如线站存储和离线存储)统一挂载到Alluxio中进行管理;
- 良好的可扩展性:性能可随worker数量的增加而线性提升。
通过调研与对比,同时结合对Alluxio的这些特性的考虑,团队最终选择了Alluxio用于解决科学计算中IO瓶颈。
六、HEPS数据流服务 #
构建通用化、高性能的数据流服务平台 #

我们构建了一个通用且高性能的数据流服务平台。在此平台中,Alluxio充当计算集群数据供给的核心组件。当前Alluxio集群基于内存构建,数据未进行持久化存储。通过将Flink与Alluxio协同工作,实现了科学数据流的高效编排以及对计算节点的数据供给。
传统模式下,探测器产生的数据需先落盘才能被计算节点访问。而现在的架构的引入在原有数据通路上增加了一条额外的数据流路径,旨在实现对计算节点的实时数据供给与处理。
这种设计优化了数据访问流程,避免了数据落盘带来的IO延迟,从而显著提升了科学计算的效率。同时,Alluxio的内存级数据访问能力确保了数据处理的高性能,为实时数据分析提供了有力支持。
设计相关数据流动策略 #

我们针对HEPS(高能同步辐射光源)场景实施了特定的数据流动策略优化。主要措施包括:
- 避免产生大量小文件以缓解IO瓶颈:由于探测器输出的数据是逐张图像生成的,若每张图像单独存储为一个文件,将导致文件系统压力过大,且后续读写性能不佳。因此,系统会在积累一定数据量后,再触发写盘操作,以减少小文件的产生。
- 动态分流策略:根据科学计算的应用特性,实施动态分流策略。例如,在HEPS成像线站中,逐帧生成的图像可在内存中直接进行切片处理。这在一定程度上保证了Alluxio中存储的数据与计算需求的匹配度。
- 可定制的数据流任务处理拓扑:整个流程支持可定制的数据流任务处理拓扑结构。系统能够根据探测器流数据的特性,自动选择后续处理流程。由于不同科学计算任务对IO模式的需求各异,该问题可在流程中通过自动化与自适应机制得到解决。
七、基于Alluxio的分布式内存缓存池 #
构建分布式内存缓存池,以文件形式存储数据,满足海量科学数据驻存需求 #

基于Alluxio的部分,我们首先构建了一个由七个节点组成的内存分布式缓存层,以文件形式存储实验产生的数据,从而满足海量科学数据的存储需求。目前部署了一个7TB大小的Alluxio内存集群,验证了读写性能能够随节点扩展实现线性增长。
集群部署情况 #

目前,我们的集群部署基于Kubernetes(K8S)构建的数据流服务集群。每个节点均配置了一个Flink worker和一个Alluxio worker。为满足Alluxio的内存需求,每个节点预留了1TB内存。节点间通过100G网络进行高速连接。DAQ(数据采集系统)传入的网络带宽在100G到200G之间,而连接到计算集群的后端网络带宽为100G。
目前的集群性能 #
在这种部署环境下,与Alluxio的工程师一起做了性能测试。关于Fuse的部分,首先是batchsize大概是1MB左右,对于团队来说就相当于是Alluxio中数据分块分多少性能最好。可能因为数据量比较大,所以一般batchsize在1MB时性能是最好的。
(1)Fuse顺序读性能

Fuse模式下顺序读的单线程能够到2.4GB。但客户端能到12GB基本是到了网络带宽的极限,集群吞吐大概能到65GB/s。
(2)Fuse顺序写性能
关于写性能,由于团队需要的场景基本都是顺序写和顺序读,所以测的都是顺序读写的性能,而Fuse Posix顺序写的单线程比读要弱一点。单客户端能够达到网络带宽极限的性能。

八、未来展望 #

目前该集群环境正在进行网络升级服务,目标是将性能发挥到极致。当前Alluxio集群内部采用双百G网卡互联,网络带宽为200Gbps。初步测试显示,单个Worker的输出性能可达20GB/s,占用了网络带宽的75%。未来五年内,HEPS(高能同步辐射光源)计划新增30条线站,数据容量和通量预计将达到现有规模的两倍以上。
目标是构建一个面向光源类大科学装置的通用、高性能IO加速层,以应对不同学科方法的需求。该架构将支持自动化Pipeline和通用工作流编排,同时兼容Ray、Spark等计算框架,以及异构存储和多样化文件结构。通过统一处理多装置的数据源,能够实现高效的数据管理和计算加速。
九、目前存在的问题及可能的解决方法 #
目前的工作还都是比较初期的阶段,存在的问题也还在持续探索,如何发挥Alluxio的能力,科学计算的场景可能和业界的场景不太一致。最近遇到的一个问题就是:由于集群是基于纯内存部署的,没有持久化层,所以当出现宕机或者内存条损坏的情况,可能就会引起数据丢失的问题。目前可以通过增加副本的数量,避免对业务产生影响。因为是内存数据需要一个比较好的数据清理策略,要持续的产生数据、清理数据,如何制定策略,尽可能降低对Alluxio的影响,以及其他对于用户来说更细力度的流量监测、用户配额的控制。

