摘要
论文链接:https://ieeexplore.ieee.org/document/9378798
本文介绍了一些应用于遥感数据图像领域的分布式深度学习算法,强调云服务架构在遥感图像数据管理、计算、服务提供等方面相比于其他并行和分布式架构(集群计算和网格计算)所能提供的便利。
遥感图像专有名词
缩写 | 全拼 | 翻译 |
---|---|---|
EO | Earth Observation | |
AVIRIS | Airbone Visible/Infrared Imaging Spectrometer | Airbone可见光/红外成像光谱仪 |
AVIRIS-NG | Airbone Visible/Infrared Imaging Spectrometer New Generation | Airbone 新一代可见光/红外成像光谱仪 |
NASA | National aeronautics and Space Administration | 国家航空和航天局 |
mpp | Meters per pixel | 像素/米 |
EnMap | Environmental Mapping and Analysis Program | 环境测绘和分析计划 |
EOSDIS | Earth Observing System Data and Information System | 对地观测系统数据与信息系统 |
NSMC | China National Satellite Meteorological Center | 中国国家卫星气象中心 |
CCRSDA | China Center for Resources Satellite Data | 中国资源卫星数据中心 |
ESA | European Space Agency | 欧洲航天局 |
GEO | Group on Earth OBservations | 地球观测小组 |
HPC | High Performance computing | |
SAR | Synthetic aperture radar | 合成孔径雷达 |
LIDAR | Light Dedection and Ranging | 光探测和测距 |
OLI | Operational land imager | 操作陆地成像仪。 |
ASTER | Advanced spaceborne Thermal Emission and Reflection Radiometer | 先进的星载热发射和反射辐射计 |
VNIR | Visible and near-infrared. | 可见光和近红外。 |
TIR | Thermal infrared | 热红外 |
SWIR | Shortwave infrared | 短波红外线 |
GSD | Ground Sample distance | 地面采样距离 |
PAN | Panchromatic | 全色 |
MSIs | Multispectral images | 多光谱图像 |
HSI | Hyper-spectral images | 高光谱图像 |
PCA | Principal componet analysis | |
TCT | Tasseled cap transformation | 流苏帽改造 |
WT | Wavelet Transform | 小波变换 |
KNN | K近邻 | |
DTs | Decision forests | 决策树 |
RFs | Random forests | 随机森林 |
MLR | Multinomial logistic regression | 多项逻辑回归 |
GMMS | Gaussian mixture Model | 高斯混合模型 |
NB | Naive Bayes-based approaches | 基于朴素贝叶斯的方法 |
HMMs | 隐马尔可夫模型 | |
SVMs | 支持向量机 | |
ANNs | Artificial neural networks | 人工神经网络 |
SAEs | Stacked autoencoders. | 堆叠式自动编码器。 |
DBNs | Deep belief networks | 深度信念网络 |
RNNs | Recurrent neural networks. | 循环神经网络 |
CNN | Covolutional neural networks | 卷积神经网络 |
DNN | Deep neural networks | 深度神经网络 |
RBMs | Restricted Boltzmann machines. | 受限玻尔兹曼机。 |
LSTM | Long short-term memory. | 长短期记忆。 |
RESFlow | Remote Sensing data Flow. | |
InSPIRE | Integrated Sustainable Pan-European Infrastructure for Researchers in Europe | 为欧洲研究人员提供综合可持续泛欧基础设施 |
XSEDE | Extreme Science and Engineering Discovery Environment. | 极限科学与工程发现环境。 |
MTFC | Multi-GPU training framework. | |
PNPE | Parallel neighbor pixel extractor | 并行相邻像素提取器 |
G-POD | Grid processing on demand | 按需网格处理 |
GENESI-DR | Ground European Network for Earth Science Interoperations and Digital Repositories. | 欧洲地球科学互操作和数字存储库地面网络。 |
GiSHEO | Grid Services for training and High Education in Earth Observation | 用于地球观测培训和高等教育的网格服务 |
CEOS | Committee on Earth Observation Satellites | 地球观测卫星委员会 |
DGGS | Discrete global grid systems. | 离散的全球网格系统。 |
CBIR | Content-based image . | 基于内容的图像检索 |
ICP | InterIMAGE cloud Platform. | InterIMAGE 云平台 |
Yarn | Yet Another Resource Negotiator. | 另一位资源谈判者。 |
Saas | Software as a Service. | |
Paas | Platform as a service | |
IaaS | Infrastrucutre as a service | |
API | Application programming interface | |
SDNs | Software-defined networks | 软件定义网络 |
DNs | Domain name servers | 域名服务器 |
HPCC | *High-performance computing challenger | |
HPS | High-performance linpack. | 高性能链接包 |
EC2 | Elastic computing cloud | 弹性计算云 |
IBM SL | IBM softLayer | IBM软件曾 |
MRAP | Mapreduce with Access Patterns | 具有访问模式的 Mapreduce |
GCE | Google computing Engineer | 谷歌计算引擎 |
MPI | Message passing interface. | 消息传递接口 |
BLAS | Basic linear algebra subprogram | 基本线性代数子程序 |
MAP | Maximum a posteriori. | 从后面看最大 |
BS | Block Size | |
MLP | Multilayer perceptron | 多层感知器 |
ReLU | * linear unit.* | 校正线性单元。 |
BFGS | Broyden–Fletcher–Goldfarb–Shanno. | 布罗伊登-弗莱彻-戈德法布-香诺。 |
DGEMM | Double-precision matrix-matrix multiplication | 双精度矩阵-矩阵乘法 |
PS | Parameter server | 参数服务器 |
HDD | Hard disk drive | 磁盘驱动 |
PRACE | Partnership for Advanced Computing in Europe. | 欧洲高级计算合作伙伴关系。 |
UCI | Unified cloud interface | 统一云接口 |
Introduction
A. Big Remote Sensing Data
本节介绍了遥感大数据的属性和面临的主要挑战,以及该领域对分布式计算、存储的迫切需求。回顾了迄今为止在使用云计算架构(与其他 HPC 解决方案,例如商品集群或网格计算平台相比)进行遥感数据解释方面开发的最重要的举措,特别是 专注于深度学习技术及其在云中的实现。
随着遥感图像捕捉设备的增加,遥感数据的捕获近乎形成一个TB级别的遥感数据流,促进了大型遥感数据存储库的创建,而这些数据库只能使用适当的并行和分布式处理技术来利用和处理。
遥感大数据的属性
- 数据容量 (Volumn):获取图像容量级别 TB级/天
- 数据多样性 (Variety):不同卫星所携带的EO仪器导致数百种不同类型的遥感数据被并行传输到各自的地面接收站。
- 数据速度 (Velocity):获取遥感图像的周期从月缩减到日、小时、甚至每分钟,因
除了”3V属性“外,数据异构性(heterogeneity)也是最重要的问题(不同图像捕获器导致遥感图像具有不同的存储格式、数据投影、图像分辨率、图像获取时间等)。
在面对遥感数据爆炸的情况下,对遥感数据处理领域提出了新的挑战
-
数据集成挑战
异构遥感图像数据集成需要构建统一的遥感数据标准、元数据标准、图像标准
-
数据处理挑战
设计计算高效且针对特定应用的数据处理和存储技术(同时提供统一的接口以简化对分布式遥感数据集合的访问)。 在分布式计算系统中,由于网络带宽有限,数据传输通常是限制性能的瓶颈。 此外,任务之间的依赖性可能会引入排序约束,并且这些任务的优化调度对于实现令人满意的处理性能可能至关重要。
扫描二维码关注公众号,回复: 17433107 查看本文章
B. Cloud Computing in Remote Sensing
本节介绍了云平台在遥感数据处理过程中具有的显著优势
现有的公共开放的遥感数据存储库
- http://bigearth.net/
- https://sentinel.esa.int/ NASA 和 ESA提供
云计算的优点
- 凭借其弹性和高透明度,云计算为大遥感数据处理提供了真正独特的范例,其中计算资源可以按需以无处不在的服务的形式容纳
- 此外,现在可以跨地理分布的数据中心为大规模遥感数据提供支持云的遥感数据处理基础设施和服务(极大的减少数据传递所需要的时间)
因此,云与大型遥感数据处理计划的结合揭示了其应对现代遥感应用带来的日益增加的计算和存储挑战的能力,特别是与强大的新深度学习算法结合使用时。
2. Deep Learning in remote sensing
A. Remote Sensing Data Processing
本节介绍了几种常见获取遥感图像的方法,及对应的分辨率等信息。
遥感图像处理技术分为以下几种
- 恢复和去噪方法,可管理采集过程中引入的数据损坏和异常
- 增强对捕获的数据进行转换,以提高某些特征的质量,使它们更适合人类视觉技能来进行视觉分析。 例如,这涉及对比度增强、超分辨率和全色锐化
- 变换方法修改光谱域或空间域中的场景内容,用于特征提取、图像压缩或过滤:比如:PCA、TCT、植被指数或 WT
- 分类方法解释遥感场景的内容。可以区分三个分类级别
- 像素级分类:用语义类别标记场景中的每个像素
- 对象级分类:旨在识别场景中存在的元素(通常通过组合光谱空间特征)
- 场景级分类:通过理解和解释整个场景的特征来为整个场景提供全局含义
- 此外,还可以通过分析每个像素处的光谱混合来进行子像素分析(称为子像素分类或光谱分解)
DL和ML方法主要专注于数据转换(Transformation methods)和分类方法,为复杂非线性系统的回归和分类提供了广泛的处理算法 ,实现了有前途的学习范式以从数据中获取重要信息
这些方法的范围从纯粹的无监督策略到有监督策略,也有大量半监督和基于混合的方法。
例如
-
K-means算法,无监督方法,探索相似性度量将相似的样本分组在一起,并能够发现潜在的模式
-
KNN算法,以监督方式探索样本之间的相似性
-
RF和DT算法是监督方法,其中RF从输入样本的随机采样子空间中开发多个树,然后通过投票/最大值规则组合输出
-
MLR、GMM和naive Bayes-based (NB) 方法是分析数据分布以进行假设的概率模型。
-
HMM和SVM是准确的统计分类器。特别的、SVM被认为是一种高效稳定的高位算法数据分类。该方法学习可以在包含内核的高维特征空间中最好地分离训练样本的决策超平面
-
ANN(人工神经网络) 是由神经元分层组成的多功能经验建模算法,使用突触权重处理输入刺激并通过激活函数传输其响应。
因此,每一层都会细化对输入数据的神经响应,通过调整模型权重获得越来越抽象的表示,并通过前向-后向传播机制从数据中自动学习,以提取最相关的信息。过去几年,深度学习算法在遥感数据分析中得到了广泛的应用。
B. Taxonomy of DL architecture
本节介绍五种神经网络:SAE、DBN、RNN、CNN和GAN(生成对抗网络,GAN逐渐逐渐成为遥感领域的主流架构)
-
SAE
自动编码器实现编码器解码器结构,以无监督的方式从输入数据中学习代码表示。 它定义了一个优化问题,试图通过学习基数 W d W_d Wd和 W e W_e We 优化最小化重建误差
∣ ∣ ( W d σ ( W e X T ) ) T − X ∣ ∣ ||(W_d \sigma(W_eX^T) )^T-X|| ∣∣(Wdσ(WeXT))T−X∣∣
其中 X ∈ R N × B X \in \mathbb{R}^{N \times B} X∈RN×B定义为具有B个特征空间的N个样本的输入矩阵
W e ∈ R B ′ × B W_e \in \mathbb{R}^{B' \times B} We∈RB′×B, 包含编码器的识别权重,将输入特征映射到具有 B ′ ≠ B B' \ne B B′=B的特征的潜在表示上
W d ∈ R B × B ′ W_d \in \mathbb{R}^{B \times B'} Wd∈RB×B′. 包含编码器的生成权重,编码器通过重建输入数据来恢复原始特征空间充当激活函数
SAE通过堆叠多个AutoEncoder 来加深模型,其中堆叠编码器(下半部分)的 AE 找到一系列较低维度的特征,堆叠解码器(上半部分)执行相反的函数
-
DBNs
DBN 是受 RBM (受限玻尔兹曼机)启发的多层生成模型。 RBM 是一个两层随机网络,经过训练,以与 AE(吉布斯采样)类似的方式最小化输入重建误差,其中可见层处理输入数据,隐藏层进行特征提取,捕获观察到的高阶数据相关性 在学习输入数据的概率分布时以可见单位表示[见图3(d)]。 DBN 利用 RBM,连接多个预训练的 RBM,并通过标记数据细化全模型参数
-
RNNs
RNN 通过在其连接中引入循环来保留记忆并学习数据序列。 因此,每个步骤中的神经响应通过内部状态依赖于前一步的神经响应,这创建了顺序依赖性,提供了当前和先前数据样本之间的关联。 根据哪种隐藏状态以及如何管理它们,可以将RNN 分为三种类型:简单的Vanilla RNN,基于栅极的LSTM和简化的门控复发单元(GRU)
-
CNNs
CNN:与其他深度模型(最初使用全连接层实现,例如 AE)相比,CNN 将卷积层引入为一组在 n 维网格中重新排列的局部连接权重。 因此,卷积核充当特征检测提取滤波器,其中神经元响应排列在特征图中,该特征图不仅指示内核检测到的特定刺激(边缘、边界和形状)的存在,还指示这些刺激在空间域中的分布。
这使得能够通过卷积层的分层堆栈在数据中维护和提取抽象和精细的空间关系[见图3©],这些层与其他层(例如激活、归一化和池化函数)相结合,以从原始输入中提取复杂的模式。
卷积核的灵活性已经证明了从原始数据中提取任何类型特征的巨大潜力,而无需应用复杂的预处理机制。
此外,在内核大小和网格组织(生成 1-D、2-D 和 3-D 模型)、层连接(直接、残差、跳过和短连接)、数据路径设置方面具有巨大的架构可塑性, 和宽/深度配置,以及令人印象深刻的泛化能力和对输入数据做出强有力假设的能力,已经将基于卷积的模型建立为最成功和最流行的深度网络。
事实上,这些网络通过派生网络模型代表了图像处理的最新技术,例如残差(ResNets)、密集(DenseNets)和基于胶囊(CapsNets)等
-
GAN
上述网络作为判别模型工作,它将原始输入映射到一些所需的输出(通过学习它们之间的条件分布)以最小化损失函数。
相比之下,生成方法(例如 GAN)学习输入和输出之间的联合概率,对数据分布进行建模以生成新样本,而不仅仅是评估可用样本。 因此,GAN(见图 4)通过对抗过程对随机噪声向量的数据分布进行建模,其中两个神经模型,即生成网络和判别网络,在竞争中同时训练(前者欺骗后者,而 后者是为了避免被前者生成的样本所欺骗)。
3. Implementation
分布式算法的对于深度学习的意义:
在典型的深度学习模型中,有数百万个参数(定义模型),并且需要大量数据来学习这些参数。 这导致计算密集型过程,其中学习步骤消耗大量时间。 因此,提出并行和分布式算法非常重要,这些算法可以运行得更快,并大大减少遥感应用中的训练时间。
下面,介绍三种 HPC 架构(集群、网格和云)来加速遥感应用中的深度学习算法的不同并行化策略。 然后描述了这些不同架构所面临的主要挑战,并对它们进行了简要比较。 本节最后讨论了它们在通过深度学习算法解决遥感问题中的潜在作用。
A. Cluster Computing
在本节中,我们将描述最近文献中一些最相关的方法,以利用集群计算机架构(包括 GPU 集群)来有效解释遥感数据。
-
作为最近最引人注目的发展之一,Lunga 等人。实现 RESFlow 来改进深度学习算法并允许它们对大规模遥感图像执行计算。原文链接
RESFlow 的工作原理是将数据划分为同质分区,这些分区可以适合同质(即基于商品集群)机器中的简单模型。(对不同的同质分区进行模型并行)
RESFlow 使用 Apache Spark来加速 DL 推理。 RESFlow 采用了一种策略来优化分配给单个工作人员的多个执行程序的资源利用率。
-
其他集群计算实现分配训练选项包括 TF、 PyTorch、 或 Horovod。 这些框架提供多种好处。 例如,Pytorch 包含多个扩展(如 NVIDIA Apex),以通过分布式训练简化混合精度,而 Horovod 采用高效的 GPU 间通信
-
与 Apache Spark 类似,一些集群计算方法利用 Kubernetes (k8s) 架构工作流程,它允许 ML/DL 应用程序的部署自动化、扩展和管理,如Democratizing production-scale distributed deep learning中所述。
-
Remote sensing big data classification with high performance distributed deep learning中的工作例证了并行计算环境和编程技术为解决大规模问题(例如遥感数据分类算法的训练)提供的独特优势。作者证明了可以使用包含大量 GPU 的集群计算机有效地实现深度 CNN 的训练。 获得的结果证实,并行训练可以显着减少执行完整训练过程所需的时间,在 GPU 集群中获得几乎线性的可扩展性,而不会损失任何测试精度(GPU 并行)
-
有些工作不需要利用GPU集群来进行计算。例如,在工作MTFC: A multi-GPU training framework for cube-CNN-based hyperspectral image classification中,作者利用只有四个 GPU 的共享内存系统来开发 CNN 的 MTFC(Multi-GPU training framework),用于遥感高光谱图像分类。 作者首先开发了一个 PNPE(Parallel neighbor pixel extractor, 并行相邻像素提取器),它可以根据输入数据自动生成 3D 立方体样本。 然后,他们在MTFC中进行一系列优化,例如任务划分、任务和GPU线程块之间的细粒度映射以及共享内存使用减少。 为了进一步提高训练速度,作者利用 CUDA 流和多个 GPU 同时训练小批量数据样本。 MTFC 的性能优于流行的 ML 框架,例如 Caffe和 Theano,同时提供相同水平的分类精度。
-
论文 Distributed training and inference of deep learning models for multi-modal land cover classification为 DNN 提供了几种并行化方法,考虑到网络开销和最佳资源分配,因为网络通信通常比机器间通信慢(而某些层的计算成本比其他层更高)。 具体来说,作者考虑了multi-model DNN 架构,并确定了在 Apache Spark 上完成训练时优化性能的几种策略(该框架将在第四节中详细描述)。 作者将他们新开发的架构与根据数据并行化方法建模的等效 DNN 架构进行了比较。 论文中的实验表明,模型并行化的方式对资源分配有非常显着的影响,超参数调整可以显着降低网络开销。
-
该领域的其他相关进展包括论文 Fast principal component analysis for hyperspectral imaging based on cloud computing,该论文提出了用于遥感图像降维的 DL 技术的并行版本,该技术也在 Apache Spark 集群中实现。
-
论文 [88] 提出了上述开发的改进版本,在 GPU 集群中可以更好地扩展
-
论文Parallel optimization of pixel purity index algorithm for hyperspectral unmixing based on spark提出了一种用于遥感高光谱数据的基于DL的并行分布式光谱分解算法,同样使用Apache Spark在集群计算机上实现
B. Grid Computing
尽管许多并行系统本质上是同构的,但 HPC 系统的最新趋势是使用高度异构的计算资源(对集群进行横向扩展),其中异构性一般是随着时间的进步技术进步的结果。
随着异构性的增加,网格计算成为一种主要技术,可以促进异构和分布式计算平台中遥感数据的处理。
尽管网格最近已经发展成为具有更高服务质量的架构,例如云。但是当第一个面向网格的架构出现时,使用网格计算进行遥感图像处理有几个原因。
- 首先也是最重要的,所需的计算性能可能无法在本地获得。
- 此外,所需的性能可能无法仅在一个位置获得,可能的解决方案是协作计算( cooperative computing )
- 最后,所需的计算服务可能只能在专门的中心提供,在这种情况下,解决方案是特定于应用程序的计算。 这导致了一些基于网格的方法的开发,这些方法现在大多过渡到云计算实现,见第 3 - C 节中所述。
接下来,我们将讨论一些最相关的贡献,重点是使用网格计算平台通过深度学习算法解决遥感问题。
- GEOGrid 项目:它是专门为集成各种遥感数据集而开发的,并且可以作为一组服务在线访问。
- G-POD:第一个提供基于网格的环境来处理 ESA 提供的卫星图像的平台
- GENESI-DR:作为G-POD的 附加组件,该卫星图像搜索和检索平台提供了用于数字数据发现和检索的高级接口。用于在灾后损失评估的背景下快速搜索、发现和访问遥感图像
- GiSHEO平台:满足了 EO 专业培训服务的重要需求。 针对数据管理、图像处理服务部署、基于工作流的服务组合和用户交互开发了解决方案。 该平台的一个特色是与GENESI-DR目录的连接,该目录免费提供大量遥感数据集。
C. Cloud Computing
云计算解决方案代表了基于网格的方法的演变,并展示了通过互连分布式和专用节点在容错环境中管理和处理大量遥感数据的潜力。
这种策略可以显着降低网格计算中经常涉及的处理成本,从而为遥感数据处理提供自然且廉价的解决方案。
-
[Cloud deep networks for hyperspectral image analysis] 中提出了解决云平台中遥感数据分析的 DL 算法实现的最相关的工作之一,其中作者介绍了一种新的基于云的技术,用于高光谱图像的光谱分析和压缩。 具体来说,作者提供了 AE(Auto Encoder) 的云实现,AE 是一种流行的非线性数据压缩深度网络。 Apache Spark(在第四节中详细描述)通过使用主从架构连接可用的处理节点,充当云计算环境的支柱。 获得的结果表明云计算架构为压缩和解释大型遥感数据集提供了适当的解决方案。
-
论文Scheduling-guided automatic processing of massive hyperspectral image classification on cloud computing architectures提出了一种高光谱图像分类的加速方法,该方法利用调度元启发法在云平台上的多个计算资源之间自动、最佳地分配工作负载。 具有代表性的基于DL的分类处理链首先基于Apache Spark上的MapReduce机制(在第四节中详细描述)分布式和并行实现。
Spark上的最优执行被进一步表述为一个可分割的调度框架,在将可分割和不可分割的子任务分配到计算节点上时,同时考虑了任务执行优先级和任务的可分割性。 调度结果为云环境下高光谱大数据的自动处理提供了优化的解决方案。 实验结果表明,这种方法可以显着加快 Spark 上高光谱图像的分类速度,并在增加数据量方面获得显着的可扩展性。
-
论文[94]使用云计算,使用OpenStack管理框架(在第四节中详细描述)进行面向全球的时空数据模拟。 这是通过借助 DGGS(离散的全球网格系统) 来实现的,DGGS 旨在通过提供离散地理空间数据结构的时空统一框架以及基于深度学习的算法来描绘现实世界的现象,以解决大型遥感数据存储、处理和分析带来的挑战。
-
论文[95]提出了一种基于遥感高光谱图像存储库的新型并行 CBIR(基于内容的信息检索) 系统,该系统在云计算平台上实现。 该方法利用光谱分解和深度学习的信息来准确检索高光谱场景。 为此,作者实现了一种在云计算环境下运行的分布式、基于深度学习的分解方法。 此外,他们还以SaaS(Software as a Service.)模式实现了配备大型光谱库的全球标准分布式高光谱图像存储库(这一概念将在第四节详细描述),通过以下方式为用户提供高光谱大数据存储、管理和检索能力: 强大的网络界面。 然后将并行分解过程合并到 CBIR 系统中,以实现高效的基于分解的内容检索系统。
-
该领域的其他重要贡献包括论文 [97],该论文提出了一种模型,可促进 Apache Spark 算法在云环境中的利用和性能。
-
此外,论文On the architecture of a big data classification tool based on a map reduce approach for hyperspectral image analysis介绍了ICP(InterIMAGE 云平台)数据挖掘包的体系结构,这是一种用于分析遥感数据的分布式工具。
-
论文Spatial computations over terabyte-sized images on Hadoop platforms提出了 Apache Hadoop 的扩展(在第四节中详细描述),它以高度分布式和高效的方式执行处理遥感图像(包括深度学习方法)的操作。
-
论文[100]提出了一种高度可扩展且高效的遥感图像分割模型,能够使用深度学习算法分割非常高分辨率的图像。
-
论文[101]提出了一种基于图像采样的DL云计算方法,该方法将要处理的遥感数据集建模为流服务,并用Voronoi图对其进行划分。
-
论文A remote sensing image cloud processing system based on Hadoop描述了一种基于MapReduce模型的Java软件,用于使用DL方法处理和处理遥感图像
-
论文Massive image data management using HBase and MapReduce提出了一种使用 MapReduce 存储图像的深度方法。(Massive
image data management using HBase and MapReduce)
-
论文High resolution satellite image processing using Hadoop framework还使用MapReduce框架通过Apache Hadoop对遥感数据进行基于DL的并行处理。
-
工作Hadoop based real-time big data architecture for remote sensing Earth observatory system描述了实现通用和集成的EO信息系统的一组要求以及基于深度学习的相关(实时和离线)数据处理技术。
-
论文[106]提出了一种基于深度学习的新方法,用于云中大规模卫星图像的分布式处理。
-
论文[107]提出了一种在云上实现的分布式时空索引架构和一种基于分布式深度学习的算法,用于改进时空查询。
-
论文XHAMI—Extended HDFS and MapReduce interface for image processing applications讨论了重叠数据组织的要求,并提出了 HDFS 的两种扩展(第四节中描述)和用于处理遥感数据的 MapReduce 编程模型。 XHAMI—Extended HDFS and MapReduce interface for image processing applications
-
论文 [109] 描述了一个用于高效分析大图像量的深度学习框架,该框架每天处理 NASA EO-1 卫星获得的数据。
D. Challenges and Comparison
前三小节中描述的不同分布视角表现出许多差异。 作为总结,下表 概述了所讨论策略之间的主要相似点和差异。
Cluster computing | Grid computing | Cloud computing | |
---|---|---|---|
Scalability | 低扩展性 | 低扩展性 | 高扩展性 |
Elasticity | 无 | 无 | 有弹性 |
Heterogeneity(异质性) | 无 | 有 | 有 |
Compute capability | 取决于集群 | 取决于网格 | 取决于需求 |
Business service | 无 | 无 | 有行业服务 |
Private service cost | 中等 | 高 | 基于需求 |
Public service available | 有 | 有 | 有 |
Resource handling/allocation(资源处理/分配) | 集中式 | 分布式 | 集中式、分布式兼有 |
Job queuing | 有 | 有 | 无 |
关于成本,有一些为科研界提供免费的计算平台服务。
- PRACE 就是一个例子, 旨在跨不同学科进行高影响力的科学研究和工程开发。 此外,还有针对不同分布式计算方法的特定项目。
- Condor 是为了研究和教育目的而创建的。
- EGI-InSPIRE 由欧盟委员会创建,旨在帮助欧洲研究区内的科学界利用电网基础设施。 该项目也可用于云计算。
通常,云计算被认为是一种分布式服务,但这并不完全正确。 替代方案是 UCI 或 OpenNebula,它们为云计算管理带来灵活性、可扩展性和简单性。 除了这些项目之外,XSEDE生态系统和 EGI(欧洲电网基础设施)还提供不同的免费替代方案。
云最重要的特征之一(也是其流行的主要原因之一)是其架构的弹性和可扩展性。 由于集群/网格架构仅限于可用的硬件资源,云计算提供了通过利用弹性属性(即使用来自不同基础设施的资源)来增加此类资源的可能性。 这导致计算和通信资源的异构性增加,并导致集中式和分布式资源处理和分配的使用。
最后,云计算的另一个相关特性是**基础设施不需要使用作业队列(如何实现)**来管理来自不同用户的执行。 这显着减少了其他架构(例如集群和网格)所需的作业执行等待时间。
E. Discussion
在本节中,我们讨论在前几小节进行系统回顾后确定的一些重要方面,试图回答相关问题,例如并行和分布式计算作为通过深度学习算法解决遥感问题的有效工具的作用。
在我们的系统回顾中,发现当需要处理大量遥感数据时,基于深度学习的数据处理对分布式计算技术的需求很高。
商品集群计算机(可能包括硬件加速器,例如 GPU)、网格环境、和云计算系统一直是遥感大数据处理最需要的 HPC 平台类型。最近,云计算由于其可扩展性、低成本、面向服务和高性能的特性已成为分布式处理的标准。 因此,该技术提供了处理必须通过大型数据存储库完成的任务的潜力。 因此,云计算可以被视为分析大量遥感数据的最自然的解决方案,也是其他 HPC 技术(例如集群和网格计算)的演变,可以纠正其局限性并扩展其可能性。
我们的文献综述中得出的另一个重要观察结果是,云计算环境中最广泛使用的遥感数据处理工具是 Apache Hadoop ,最近 Apache Spark,也已经成为参考工具。 Spark 和 Hadoop 之间的主要区别在于,前者将数据分布在 RDD 中[117],这样可以更有效地管理。 因此,Spark 相对于 Hadoop 可以获得非常高的加速比。 此外,Spark 提供了一个名为 MLlib的 ML/DL 库,它以分布式并行方式运行,因此它可以为大型遥感数据提供非常好的性能。
尽管 Hadoop 过去已被广泛使用,但 Spark 由于其速度和更好的内存使用率,现在已成为一种标准。 我们的研究还表明,大多数研究人员在处理遥感数据时利用现有的云计算框架,而不是开发新的框架。
在第四节中,我们重点关注云计算作为遥感数据集分布式处理的事实上的范例,并描述了在此背景下采用的最广泛使用的框架和编程语言(其中一些已经在本节中提到), 特别强调面向 DL 的工具的可用性。
4. Focus on Cloud Computing
本节首先介绍有关云计算的一些基本概念,然后概述支持该技术的交付模型、可用的执行框架和编程模型(特别强调专门用于遥感应用的工具)。
A. Cloud Computing Basic
分布式计算技术的进步,加上越来越多的设备(包括遥感仪器)生成和消耗的大量数据,充分利用了新兴云计算技术的采用。 如今,云计算已成为满足广泛用户需求的合适模式,包括数据分析、数据挖掘、遥感、社交媒体以及其他计算和数据密集型应用。
云计算是一种以服务的形式为用户提供无处不在、按需访问远程硬件和软件资源的模式。 该模型已成为一种经济高效的解决方案,相对于以前的集群和网格技术,通常可以减少初始投资、管理和维护成本。 云计算提供弹性计算、存储和网络支付服务。 术语“弹性”是指模型动态适应用户可扩展性和可变工作负载需求的能力
云计算的核心是虚拟化技术。 虚拟化将计算、存储和网络等底层物理资源抽象为一组虚拟资源,通常以称为虚拟机的隔离实例的形式封装。 这种模块化设计实现了一些有利的功能,例如数据实例的复制、容错、安全性(通过限制模块之间的交互)和实例的迁移。
云计算决定了虚拟化资源如何分配、部署和交付给用户。 从这个意义上说,交付模型分为三个基本类别,描述用户访问资源的形式:
- 更高的抽象层次是 SaaS(Software as a Service),用户可以访问通常由云提供商在其云基础设施中开发、管理和维护的最终应用程序。 用户通过 Web 界面访问这些应用程序。 一个常见的例子是用于遥感数据存储库的 CBIR 系统。
- PaaS(Platform as a Service)是指提供开发全栈,包括操作系统、库、管理和监控工具。 访问这些服务的用户通常是软件开发人员,对底层基础设施的控制有限,而底层基础设施由云提供商管理。
- IaaS 模型位于较低的抽象级别,允许用户管理由一组计算、存储和网络虚拟资源组成的弹性基础设施。 用户在此类虚拟资源上开发和部署应用程序并管理基础架构。
在不忽视其优势的情况下,云计算面临着一系列重要的挑战。 最重要的是安全性,即确保授权用户和系统只能访问数据(隐私),并维护数据分布(甚至在地理上)和跨不同位置(例如, 位于不同的遥感数据中心)。 性能是影响云计算采用的另一个关键因素,尤其是通常在紧密耦合的高性能集群上执行的科学应用程序
集群和云有不同的设计目标和特征[125]。 集群的主要目标是性能(由与最小延迟和稳定的高带宽网络连接的专用并行计算资源支持),而云的目标是以合理的成本在弹性平台中提供按需可用的虚拟资源。 因此,技术管理问题(源于虚拟机和多个用户对物理资源的共享使用、动态按需可扩展性、数据移动、虚拟化开销以及异构情况下的工作负载平衡)会影响部署在云上的应用程序的性能基础设施。
B. Deployment Frameworks
后续,我们采用IaaS模型用户的视角,分配通过网络服务连接的虚拟资源池来部署和运行科学应用程序。 作为部署和运行应用程序的有效管理框架,我们重点关注 OpenStack,尽管还有其他开源框架(例如 Apache Cloudstack 和 OpenNebula)提供类似的功能。 接下来,我们将回顾 OpenStack 中可用的多项服务的功能。
Openstack面向管理由大量计算、存储、网络等虚拟资源组成的IaaS云系统的完整生命周期。 Openstack设计架构是高度模块化的。 每个独立的模块实现特定的服务并公开定义良好的API,使系统具有可扩展性并能够支持第三方服务的集成。 接下来概述了 OpenStack 框架的一些主要软件组件,如图 8 所示。我们将它们分为三类。
- 用于部署和管理 VM 和 Linux 容器的计算服务组件。 这些设施从根本上由 Nova 计算引擎支持。 此外,OpenStack 还为硬件加速器(例如 GPU)提供了一个名为 Cyborg 的通用管理框架组件。
- 支持不同网络技术和设备的网络服务组件。 Neutron 是主要组件,它允许管理 SDN 并将虚拟设备附加到这些网络上的端口。
- 存储服务组件,包括用于块存储的 Cinder 组件和提供将非结构化数据安全存储为对象和文件池的服务的 Swift 组件
除了前面提到的计算、网络和存储服务之外,值得注意的是,OpenStack还包括监控、开发、恢复、数据库、虚拟化资源编排、工作负载平衡等多种软件服务。 其中,例如Keystone提供用户和应用程序的安全和身份验证服务。 最后,Horizon 以仪表板的形式提供了一个 Web 界面,用于管理构成云基础设施的虚拟资源。
C. Programming Model
遥感大数据这个术语是指存储、管理和处理以高速率和多种格式生成的大量遥感数据日益增长的需求。 如此巨大的数据流需要具有大计算能力和特定编程设施的灵活并行平台。
与以集群计算机为中心的范例相反,作为消息传递,大数据应用程序需要以数据为中心的方法,其中计算任务应部署在尽可能靠近数据位置的计算资源中。 因此,可以最大限度地减少通过网络的数据移动。 网络带宽的有限能力,加上遥感数据的大量和异构性,极大地影响了性能。
下面,我们回顾一些在大型遥感应用中广泛使用的相关编程模型和应用生态系统。
-
Mapreduce: 它是一种编程模型,旨在开发可扩展且强大的处理大型数据集的应用程序。 它最初由 Google 开发,与分布式 GFS 一起,已成功用于解决许多大型遥感数据问题。 该模型特别适合以数据为中心的环境,例如云计算平台上的大遥感数据处理。
MapReduce 实现最终基于主从方法,其中主进程管理计算节点上任务的自动并行化和调度,并协调它们的执行。 它将每个Map要处理的遥感数据进行分区,并减少任务,并将这些任务安排在尽可能靠近要处理的数据的计算资源上。
为了实现这一点,它依赖于 GFS 来提供要处理的数据块的位置。 这种设计提高了数据局部性并最大程度地减少了通过网络的数据传输,从而提高了性能。
此外,MapReduce会合并Map任务的输出中间文件,并根据输出键合并数据。 这个中间阶段解决了开发人员隐藏的大量通信和协调任务的复杂性。 最后,该实现将处理后的数据块传递给reduce 任务。 此外,MapReduce 实现还添加了了容错机制,以便在必要时检测和重新执行任务。 从这个意义上说,部署的任务之间的通信是通过中间文件来实现的
-
Hadoop Ecosystem
Hadoop已广泛用于并行化遥感数据处理任务。 它是一个流行的开源且可扩展的大数据软件框架,基于 MapReduce 范式、HDFS 和 YARN 资源管理器。
HDFS的基本功能与GFS类似。 数据被分割成固定大小的块并跨多个节点复制以确保容错性和可用性。 它的实现遵循主从方法。 Namenode进程管理元数据(例如块映射信息)并在请求时将该信息传递到MapReduce库。 DataNode进程在各个虚拟资源中执行,有效地存储数据块并为应用程序提供数据读写服务。
MapReduce 功能由 JobTracker 进程实现,该进程接收作业请求并将作业任务调度到不同的节点。 每个节点都由一个TaskTracker进程控制,该进程监视执行情况并在出现问题时向JobTracker报告。 在这种情况下,JobTracker会将所涉及的任务重新提交给相同或不同的TaskTracker。 从这个意义上说,Hadoop 解耦了 MapReduce 编程模型和相关的资源管理。 YARN 提供前面的服务。 其内部架构基于三个主要组件。
- 第一个组件是全局的集群Resouce-Manger进程,它接受作业提交并为应用程序分配资源。 它负责在可用资源中调度应用程序。
- 第二个组件是 NodeManager,一个每个节点的进程。 它负责执行分配给其节点的任务。
- 第三个组件 ApplicationMaster 是一个针对每个应用程序的进程,用于监视应用程序必需品及其生命周期中的状态,并与 ResourceManager 协商资源。
Hadoop 框架已通过多种工具和服务得到增强,形成了所谓的 Hadoop 生态系统,该生态系统已在各种遥感应用中得到利用。 它包括关系数据库管理器(如 Hive)、NoSQL 数据库(如 HBase,一种运行在 HDFS 之上的面向列的分布式数据库)、分布式 ML/DL 和线性代数求解器(如 Mahout)、实时设施(Storm)、高效的 MapReduce 编程模型的替代方案,以及用于编排服务和组件的实用程序 (ZooKeeper)。
-
Apache Spark
Apache Spark:Apache Spark 最初由加州大学伯克利分校开发,旨在提高大数据处理速度。 尽管 MapReduce 模型能够充分适应大量应用程序作为高度并行的批处理作业,但它在交互式应用程序和具有迭代执行模式的应用程序中都会产生显着的延迟,在迭代执行模式中,需要不断地从文件中重新加载相同的数据集系统。
在这方面,Spark 最相关的功能之一是它能够支持内存中的持久数据,这极大地提高了性能。 该功能是在Spark的运行时系统中实现的,称为Spark Core Engine。 除了这个模块之外,Spark 生态系统还包括一组实用程序,例如 Spark SQL,它允许管理按列组织的结构化和半结构化数据,称为 DataFrames,Spark Streaming 模块用于对数据流执行实时处理(非常适合 具有实时约束的遥感应用程序,以及包含分布式 ML 和 DL 算法的 MLlib 库。
Spark遵循主从执行模型,其中一个驱动节点充当主节点(Master)和一组工作节点(Worker)。 执行模型如图 9 所示。
提交到 Spark 的应用程序在驱动节点的上下文中开始执行。 应用程序创建一个 SparkContext 对象,它将主程序中描述的操作序列转换为执行计划。 执行计划表示为 DAG,其中节点是数据元素,边是对这些数据的操作。
SparkContext 将 DAG 分阶段拆分以供任务执行。
然后,SparkContext与Cluster Manager协商资源的获取。 虽然执行 Spark 应用程序的正常形式是使用其自己的本机集群管理器,但 Spark 能够在 YARN 资源管理器之上的 Hadoop 集群上运行。 不管怎样,在获得资源后,SparkContext会在每个worker节点中启动一个Executor进程。 SparkContext根据执行计划将任务调度到worker节点并协调其执行。 相反,执行器负责有效执行分配给其worker节点的任务并提供对数据的访问
RDD是支持Spark模型的主要抽象。 RDD 是跨工作节点分区和分布的对象的只读集合。 将任务分配给工作节点会考虑数据局部性,即分配给工作节点的 RDD 分区中任务要处理的数据的可用性(或接近性)。 RDD 的一个重要特性是数据可以缓存(持久化)在内存中,因此可以以最小的开销在循环并行操作中重用。 此外,RDD是一种容错数据结构。 从这个意义上说,对 RDD 对象的任何操作都会以这样的方式记录:在节点发生故障的情况下,可以使用操作沿袭来重建 RDD。 由于沿袭依赖性变得很大并且管理起来非常耗时,因此用户可能会决定在执行中建立检查点(Checkpoint 机制)。 此外,RDD 对象的不可变特性有利于另一种容错机制,即如果检测到失败或落后任务,则执行正在运行的任务的备份副本(重复)。
RDD 可以根据内存或文件系统中的数据结构创建,也可以使用从任何 Hadoop 服务(包括 HDFS 或 HBase 等数据库)获取的数据。 除了创建 RDD 的机制之外,Spark 还包含一组粗粒度操作来处理 RDD 数据集。 这些操作分为两种类型。
-
Transformations
第一种类型是由Transformations操作给出的,这些转换操作将函数应用于 RDD 并生成转换后的 RDD 数据集作为结果。 反过来,转换又分为窄型(narrow)和宽型(wide),窄型转换涉及任务执行操作的工作节点中的数据,宽型转换涉及跨多个工作节点的数据,因此需要从其他分区复制所需的数据。 数据的移动由驱动程序协调。 API 中定义的转换操作示例包括 map、filter、groupbykey 和 reducebykey
-
Actions
第二种类型的操作称为操作。
操作是从 RDD 检索非 RDD 值(作为统计值或处理值)的操作,并将它们的值返回给驱动程序。 操作的示例包括 count、collect、reduce 和 foreach。 其中一些将应用于数据的函数作为输入参数。
Transformations是延迟执行(lazily)的,即当对Transformations后的 RDD 执行操作时,有效执行一系列Transformations。 在仅将最终结果(而不是转换序列的中间结果)传输到驱动程序的情况下,此机制可以提高性能。
然而,默认情况下,每次对其执行操作时,每个Transformations后的 RDD 都会重新计算。 Spark的持久化机制允许将数据保留在内存中,从而提高RDD上的循环操作的性能(这对于涉及滑动窗口或内核的图像处理操作特别有利,这在许多遥感应用中非常流行)。
此外,Spark 模型中的宽转换是低效操作,由在自己分配的 RDD 分区上运行的独立任务组成,因为此类操作需要数据移动。 每次任务对远程数据执行操作时,SparkContext 都会协调相关节点之间的磁盘 I/O 和网络传输。 这个代价高昂的过程称为洗牌(Shuffle)。 持久化能力通过在内存中缓存将在广泛转换中重用的 RDD 数据,极大地提高了 shuffle 操作的性能,这在许多遥感应用中采用的多尺度图像处理操作中也很流行。
最后,Spark 包含两种额外的机制来避免工作节点之间共享数据的重复副本,称为共享变量。 第一个称为广播,它允许将一组值扩散到工作节点,该节点将保存数据的只读副本。 第二个允许维护在工作节点之间共享的简单(关联)累加器。
-
D. Cloud Computing for scientific Applications
科学应用(包括遥感应用)利用集群的低延迟和专用资源来获得高性能。 相反,云计算提供了弹性多租户(资源分时)和不可预测且不稳定的网络设施。 尽管如此,人们对评估具有成本效益且灵活的云平台是否能够以合理的效率水平执行科学的 HPC 应用程序非常感兴趣。
论文 [131] 提出了 Azure MapReduce,这是一种针对 Microsoft Azure 云基础设施的去中心化 MapReduce 实现,并通过遥感应用程序评估了其(弱规模)可扩展性和性能。
作者声称,云基础设施中的 MapReduce 应用程序表现出与传统集群上执行的 MapReduce 应用程序相当的性能。 相反,工作[132]分析了HPC挑战(HPCC)基准在Amazon EC2云平台上的性能,并得出结论得出的结论是,云基础设施上的一般科学应用程序的性能比集群和超级计算机上的性能至少低一个数量级。 此外,该工作[134]分析了四个商业云计算提供商平台上松散耦合的多任务科学计算应用程序的性能,得出了与上述相同的结论。
[135] 中的深入研究提出了 Amazon EC2 集群计算实例和超级计算机的特性的运行时性能比较。 该论文评估了延迟和带宽微基准、HPCC 矩阵乘法内核、NAS 并行基准以及 NASA 使用的四个全面遥感应用程序。 结果表明,在一个节点中,性能相当,而在多个节点中,云计算基础设施的网络开销对性能影响巨大。
论文[125]评估了不同级别的Amazon IaaS服务。 作者执行微基准测试来提取延迟、带宽、内存和处理服务的原始性能。 此外,他们还执行并行 HPL 基准测试来比较集群和云环境。 目标是确定云平台的优势和局限性。 他们的结论是**,I/O 和网络性能差异是影响应用程序性能的主要因素**。 在云中检测到的主要缺点之一是基于以太网的网络基础设施,它通常不适合高性能计算应用程序(包括遥感应用程序)的需求。
论文[123]提出了 HPC2 模型,通过一系列建议弥合了集群和云平台之间的差距,包括使用 Infiniband 作为网络技术(这在当前云环境中实现的遥感应用中很常见)。
人们一致认为,平台之间的性能差异来自于虚拟化、内存、存储和 I/O 的固有开销以及网络基础设施的延迟。
此外,该工作[140]对公共 IaaS 服务的几个云提供商的性能进行了广泛的研究:Amazon EC2、Microsoft Azure、GCE 和 IBM SL,其结论是,事实上,不同云提供商的基础设施的性能之间存在很大差异。
为了克服集群和云平台之间的差异,一些研究认为在云平台上直接运行集群应用程序是不够的。 这与第三节中描述的许多遥感算法的云实现形成鲜明对比,这些算法只是在云环境中运行可用的基于集群的代码。
例如,论文[141]提出通过优化计算粒度将HPC应用稍微转变为代表性的HPC内核求解器,这对调度和通信/计算重叠有很大影响。
此外,他们还建议对云设施进行改造,以使用瘦虚拟机和CPU亲和力机制。 他们的结论是,通过将 HPC 应用程序(例如遥感应用程序)转变为在云中运行并使云 HPC 感知,延迟和多租户的影响将显着降低。
从这个意义上说,论文[142]建议使用MRAP(具有访问模式的 Mapreduce)模型,该模型通过通常的HPC应用程序数据访问模式语义(非连续和细粒度)扩展MapReduce,同时利用MapReduce固有的可扩展性和容错特性。 这是一个很有前途的解决方案,可以提高第三节中描述的基于 MapReduce 的遥感实现的性能。
5. Machine and Deep Learning Libraries and Frameworks in cloud computing enviroments
人们致力于在云计算基础设施上开发和高效执行 ML 和 DL 应用程序,不仅作为优化的库和服务,而且作为 Spark 和 MapReduce 编程模型之上的应用程序。 在这方面,云提供商为这项具有挑战性的任务提供了多种设施。
其中,亚马逊AWS推出了名为SageMaker的ML平台来构建和训练不同的模型,支持TF和Spark。 IBM 为不同框架提供了工具,包括 TF 和 Keras。GCE 也支持 TF 的使用,并提供基于 GPU 计算设备的基础设施。 另一方面,Microsoft Azure 的服务基于 Kubernetes,并允许为其 ML/DL 资源使用加速器。
然而,ML/DL 学习应用程序的迭代执行模式(其中重复操作相同的数据,如许多遥感数据处理算法)并不自然地适应已建立的云计算编程模型。 虚拟化和网络开销是影响 ML/DL 学习应用效率的关键因素,这些应用通常由高度优化的计算线性代数库支持,例如 BLAS [143] 和基于 MPI [144] 的高性能网络和通信来实现 高性能。
此外,机器学习和深度学习模型在结构复杂性和深度方面也显着增长。 在海量数据集(例如遥感应用中涉及的数据集)上训练模型已成为一项计算量非常大(并且消耗内存)的任务,即使使用 GPU 等专用硬件,通常也需要几天的时间。 为了克服这一限制,人们开发了几种并行训练 ML 和 DL 模型的方法。 并行化方案可以分为三个主要组。
- 第一种类型是数据并行方案,其中在遥感数据集的不相交分区上的不同计算设备中同时训练模型的多个副本。
- 第二种称为模型并行,当模型克服一个计算设备的内存容量时使用; 然后,必须将其分区并部署在多个设备上。
- 最后,最后一种类型是混合并行方案,它合并了数据和基于模型的方法。
这些并行化方案可以作为多种分布式计算方法来实现。 表 3 总结了云计算和集群/网格计算方法的每种方案的不同特征。
Schema | Cloud computing | Cluster/Grid computing |
---|---|---|
Data-parallelism | 主节点保存数据 ;数据和计算相互分离;不同节点之间复制相同模型;Worker节点将自己的结果发给Master节点 | 数据被分去到不同executor中;不同节点之间复制相同模型;Executor 分享中间结果 |
Model-parallelism | 主节点保存数据;数据不分区(数据被复制到不同节点上);模型和计算相互分离;Worker节点将自己的结果发给Master节点 | 数据被复制到不同节点上;模型和计算相互分离;Executor 共享层输出和结果 |
Hybrid-parallelism | 主节点保存数据;数据分区;不同分区使用不同模型;计算取决于数据和模型工作负载;Worker节点将自己的结果发给Master节点 | 数据分片到不同executor上;模型被分区到不同执行者上;计算取决于数据和模型工作负载;Worker节点将自己的结果发给Master节点 |
本节的其余部分概述了云提供商提供的主要框架和库,以应对在云计算基础设施上处理遥感数据时有效训练 ML 和 DL 模型的挑战。
A. Libraries
本节概述了一些在云计算环境中用于高效构建模型的知名 ML 和 DL 库。 这些库过去曾被用来处理和加速遥感应用。
-
Weka
-
MLib
MLlib是一个分布式ML/DL库,提供基于数据并行方案的模型训练。 它是用Scala编程语言开发的,支持Java、Scala和Python编程语言。 其主要特点是可扩展性和众多 ML/DL 算法以及线性代数、统计和优化原语的快速实现。
它基于 Spark 构建,为大量进程执行的数据传输实现高效的通信原语,并使用数据并行方案训练大型模型。 一些特别令人感兴趣的通信原语是广播,它在训练模型的过程中有效地分发数据,以及树结构聚合原语,它收集处理后的数据,避免可能的瓶颈。 MLlib 最初设计为在完全分布式环境中高效运行,这相对于 Weka 具有显着的性能优势。
MLlib的执行模型基于主-从模式,其中主进程充当PS并维护模型全局参数的集中副本。 它结合了每次训练迭代后从工作任务接收到的值。 部署在平台计算资源上的任务处理其分配的数据集分区并将结果传达给 PS。 分配给每个任务的数据分区是分批处理的,每批的大小是一个关键的优化参数,它直接影响模型的准确性和训练的效率。
B. FrameWorks
本节讨论在云环境中开发 ML/DL 应用程序的不同框架。
-
TensorFlowOnSpark
该框架将 TF DL 库的显着功能与 Spark 和 Hadoop 相结合,提供可扩展的 ML/DL 开发和培训平台。 它支持所有 TF 功能,包括异步和同步训练、数据和基于模型的并行方案,以及使用 TensorBoard 进行监控。它还支持在云计算集群上进行基于 TF 的分布式训练,另一个目标是最大限度地减少代码量 运行现有 TF 应用程序所需的重构。 总之,TensorFlowOnSpark 在云基础设施上部署 Spark 集群,并提供将 RDD 和 HDFS 数据注入由工作节点中调度的任务执行的 TF 模型中的设施
-
SparkTorch
SparkTorch:该框架旨在跨 Spark 集群中的节点执行基于 PyTorch 库的代码。 分布式训练在数据并行范式下工作,并使用树缩减(tree reductions)和 PS 机制来组合部署在云平台上的任务的部分结果。
SparkTorch 中有两种主要的训练模式。
- 第一种是异步训练模式,它确保节点中部署的复制模型在每次训练迭代中都是同步的。
- 第二种训练模式,称为Hogwild方法,允许无锁任务访问共享内存以更新参数值。 这种模式消除了与锁定相关的开销。 然而,在这种模式下,任务可能会覆盖其他任务的进度,开发人员声称,当要访问的数据稀疏时,可能会出现这种情况。
-
BigDL
该框架也是在 Apache Spark 之上实现的,以将 DL 应用程序作为标准 Spark 程序运行。 它为大规模分布式应用程序提供支持,并使用统一的管道为数据分析、数据注入神经网络模型以及分布式训练或推理提供高效处理。 在训练之前,模型和 RDD 会在云资源中进行分区并缓存在内存中。 BigDL 支持双参数同步机制。 第一个维护集中式 PS(参数服务器),第二个使用 AllReduce 等集体操作来组合任务计算的参数。 尽管集体消息传递原语并不是特别适合 Spark 集群的执行模型,但 BigDL 使用 Spark 原语实现了高效的 AllReduce 算法,从而允许在云计算环境中集成 DL 算法。
值得注意的是,上述三个框架可以使用两种不同的通信方法。
-
如图所示,PS (参数服务器)方法由一个集中式架构组成,其中计算节点被分为主节点和工作节点。 工作节点维护工作负载和数据分区,而主节点维护全局共享参数。
Worker与Master通信以共享模型每次迭代时生成的权重。 master负责全局权重的聚合。 在云计算环境中,可以在执行中添加或删除额外的Worker。 这必须由系统处理,以便打开任何新的工作人员并向他们发送适当的计算和数据分区。
-
AllReduce-Ring BigDL 方法如图 所示,
由分散式架构组成,其中每个 Spark 任务计算其局部梯度,并将局部梯度划分为 N 个分区。 每个任务管理其相应的参数分区,该参数分区被洗牌到相应的任务以聚合梯度,然后更新相应的权重。 然后,每个任务都会使用更新的权重启动 Spark 广播操作,以便在下一步之前读取这些权重。
此时需要讨论上述两个通信框架及其在云环境中的优缺点。
- 在应用方面,它们都提供了与Spark ML/DL算法的全面集成。 TensorFlowOnSpark 提供了大量算法和应用程序,而 BigDL 则包含广泛的深度学习功能。
- 不同框架的易用性有所不同。 虽然 TensorFlowOnSpark 界面清晰且易于使用,但 BigDL 的文档非常直观,并为 ML/DL 算法提供全面支持。
- 针对分布式训练,SparkTorch提供了异步和同步方案,因 TensorFlowOnSpark异步PS效率很高。 我们还注意到,与 TensorFlowOn-Spark 和 BigDL 实现相比,SparkTorch 还处于不成熟的开发阶段。 因此,后一种框架仍然具有显着的优势。 TensorFlowOnSpark 的一个重要方面是创建检查点以从故障中恢复。 这些检查点由 TF 存储在 HDFS 中。 最后两个框架之间的相似点可以在监控中找到。
- 在扩展性和性能方面,BigDL 比其他框架向前迈进了一步。 这是由多种因素造成的。 首先,它提供了广泛的文档,用于在不同的提供商(如 EC2)中部署 ML/DL 算法。 此外,在执行方面,它在通信步骤中提供了同步 SGD 和优化的 AllReduce。 另一个有趣的点是它只能用于预测,因此它可以从不同的 ML/DL 框架加载模型。 最后,上述框架执行强大的长时间运行任务,而 BigDL 使用短期运行、非阻塞任务进行模型计算。
6. Case Study
本节在云上实现了一个用来处理分类大型高光谱遥感图像DNN网络,并在高光谱成像社区广泛使用的基准分类数据集上进行分类实验。补充证明了在云平台上进行遥感图像处理所能发挥的重要作用(减少处理算法的运行时间,增加节点带来加速比提高等)
推广
笔者会经常在Github仓库中的issue上分享一些研究生阶段所读论文的内容,主要领域包括:分布式系统,一致性协议,分布式事务等,欢迎各位关注笔者的论文笔记仓库,并欢迎讨论,有觉得优秀的论文,也可以在issue中进行推荐