看起来只是一个普通的灯泡,但其售价可能达到了 3000 美元一个,因为这是一个用在高能物理实验中的光电倍增管。
这是知乎上的一个高赞回答描述的物品,其问题是“你的领域有哪些看起来平平无奇,实则科技含量满满的事物?”。在这个问题下,得到了超过 100 个回答。
有句话说的好,叫“透过现象去看本质”,在科学技术领域,有很多看似普通,但却凝结了无数人的智慧和科技成果。今天要要说的,也和这个主题有关,讲一讲数据处理背后那些不容易被发现的科学本质。
本文首发于2019年11月04日的《返朴》。
作者:董乾(中国科学院软件研究所)、刘歆(中国科学院数学与系统科学研究院)
目前,市场上主流手机摄像头的清晰度已经达到两千万像素,国内某著名手机制造商最新推出的一款环绕屏手机的清晰度更是超过了一亿像素,一张照片的容量就要达到100MB。手机的电子防抖功能,手机软件的去噪功能,这些最后都归结为数学模型中的最优化问题,但是无论数据量如何增大,人们对这些功能的要求都是瞬时提供结果。
医用CT机(电子计算机断层扫描仪)拍摄的图像容量更是可以达到GB量级。医学工作者想依靠断层扫描的结果重构人体三维结构需要求解一个几何问题(可归结为最优化问题);想通过千千万万个病人的CT报告信息来总结疾病的规律,核心是统计问题(可归结为最优化问题),这些数学模型的数据量超过了一般计算机可拥有的最大内存。
给咱们蓝色的美丽地球摄影的遥感卫星,它拍摄的照片往往是以TB计,由于卫星自身容量、能量都有限,这些照片会在压缩后实时传回地球上的接收站。地面获取数据后的解压过程需要求解一个被称为稀疏优化的数学模型。而实时不断传回的数据往往会使得用来处理数据的计算机不堪重负。
为了可以“瞬时”处理“实时”到来的“大规模”数据,人们想到了使用拥有多个计算单元的超级计算机来进行分布式、并行计算。下面我们就带大家细细品味分布式优化的前世今生。
1 优化方法是人工智能的数学基础
最优化问题是应用数学的一个分支,顾名思义,是指在一定的条件限制下,选取某种方案使得目标达到最优的一种方法。许多科学工程领域的核心问题最终都归结为优化问题。随着大数据、机器学习和人工智能的迅猛发展,作为这些应用问题的核心数学模型,最优化问题遇到了千载难逢的发展机遇。
另一方面,随着数据量的增大,问题复杂性提高,这给最优化方法的研究带来了巨大的挑战。传统最优化方法的设计思想主要是通过传统的串行计算实现的,无法与硬件的并行架构完美兼容,这降低了传统最优化方法在具有大数据背景的应用领域的可适用性,限制了求解来源于相关应用领域的最优化模型的精度和效率。为了突破这一困境,以分布式存储为基础,以并行计算为核心的分布式优化应运而生,这也使得最优化方法得到了比以往任何时候都更加广泛的应用。
随着信息技术的跨越式发展,近年来,人工智能迎来了一波喷涌式发展。在人工智能的这次发展浪潮中,机器学习奠定了人工智能在统计意义上的基础和合理性,对应的优化算法和配套的硬件计算能力确保了人工智能在实现上的正确性和有效性。
换句话说,目前图像识别、目标检测、语音识别等算法在准确性上所表现出的显著提高离不开机器学习及其对大数据的训练方法。而所谓的“训练方法”,主要是指利用训练数据集找到一组参数,使得由这组参数决定的函数或映射能够尽可能匹配训练数据的特征标签,同时能在一定范围内对其它数据的特征做出预测,给进一步决策提供参考。这里的参数估计问题,就是一个以拟合度为目标的最优化问题。我们根据目标函数的函数值、梯度值等信息,设计求解最优参数的迭代算法,因为数据量极大,所以传统的最优化方法往往不能胜任。最优化方法同人工智能的关系可以参见图1。
图1 优化方法在人工智能中的应用和体现
2 传统最优化方法受到数据爆炸的冲击
图2 IDC预测的2020年全球数据量
3 现代计算机的并行架构推动分布式优化方法的发展
图3 CPU发展历史
图4 Intel Xeon系列处理器架构
图5 Turing TU102 GPU 架构简图
4 分布式优化与并行计算
图6-1 并行计算示意图
图6-2 串行计算示意图
01)代数层面的分布式优化
图7 数据矩阵的分块方式
图8 负载不均衡的情况
02)模型层面的分布式优化
虽然上述分布式优化方法简单易行,但是仅仅是基于已有的串行方法来实现数值计算上的并行,并不能得到新方法。另外,这种并行化的方式不仅依赖于算法的结构,其可扩展性与求解问题的特点有密切的关系。想要突破传统并行算法仅在运算层面上并行的方式,就需要根据计算机的并行架构来设计模型层面上的分布式/并行算法。
模型层面上的分布式优化方法,其基本思想是将大规模问题分解成若干个小规模/子块的子问题进行同时求解,实现算法的分布式/并行计算。与代数层面的传统优化方法并行实现有着本质的不同,模型层面的分布式优化需要指定每个计算核心需要存储的数据、处理的变量,以及各核心间的通信等,达到从模型层面将求解大任务划分为并发执行的小任务的目标,使得算法的并行结构与硬件的并行架构之间一致、协调,从而发挥出现有计算资源的强大能力。
5 分布式优化中的异步计算问题
对于代数层次的分布式优化,容易通过并行数值计算方面的负载均衡技术,使得多个核心发挥出各自的计算性能,避免出现核心的空等待。然而,对于模型层次的分布式优化方法,在每个迭代步中,变量的更新是在所有进程求解完子问题之后再共同进行的。这时,如果每个进程所负责子问题的求解难度不一致,或者每个进程的计算能力不均,就会出现有些进程已经完成子问题的求解,从而等待其它进程完成子问题求解的情形,如图9[8]左边所示。
图9 多进程的异步计算示意图
由于从算法流程上子问题的求解过程无法再进行分割,所以模型层次的分布式优化方法无法像代数层次的分布式优化那样直接利用并行数值计算方面的负载均衡技术。为了解决这一问题,异步计算近年来得到了广泛关注,也即每步迭代中变量的更新只利用当前信息,而缺少了全局同步的过程。
6 结语
参考文献
[1] John Gantz and David Reinsel. The digital universe in 2020: Big data, bigger digital shadows, and biggest growth in the far east. IDC iView, 2007:1–16, 2012.
[2] John Hennessy and David Patterson. Computer Architecture: A Quantitative Approach. Elsevier, 2011.
[3] https://computing.llnl.gov/tutorials/parallel_comp/#Whatis
[4] https://www.nvidia.com/content/dam/en-zz/Solutions/design-visualization/technologies/turing-architecture/NVIDIA-Turing-Architecture-Whitepaper.pdf
[5] https://blog.csdn.net/lynnandwei/article/details/44411465
[6] https://www.top500.org
[7] https://computing.llnl.gov/tutorials/parallel_comp/#DesignLoadBalance
[8] Zhimin Peng, Yangyang Xu, Ming Yan, and Wotao Yin. ARock: an algorithmic framework for asynchronous parallel coordinate updates. SIAM Journal on Scientific Computing, 38-5(2016), A2851–A2879.
通过对数据处理的这番介绍,想必你对其背后包含的精美数学原理有了一些了解。回到开篇被大量讨论的问题,它是来自于知乎「向科学要答案」活动讨论,不知道是否是在指那些横亘在我们面前的科学问题,会有科学带给我们答案。
科学研究之中,总是鼓励我们不断地发现其背后的原理,找到问题最核心的部分,如果你也有想告诉大家的黑科技故事,亦或者有其他科学相关的问题,欢迎向《返朴》投稿(发送到fanpusci@163.com),也可以在知乎搜索「向科学要答案」,你会发现更大的天地,以及一群共同向科学发问的人。
能不能找到正确的答案,没有人知道,但可以相信的是,你总会找到你自己的答案。