一张“黑洞”照片需半吨重硬盘?!

2019年,人类首次拍摄到黑洞照片,这背后离不开信息技术的支持。科学家使用事件视界望远镜(EHT)网络收集数据,并通过复杂算法处理5PB的海量数据,最终在超级计算机的帮助下,历时一年多完成了黑洞照片的‘冲洗’工作。

640?wx_fmt=gif

640?wx_fmt=jpeg

策划 | 孙浩峰

作者 | 清儿爸

编辑 | LD

出品 | 优快云 云计算

 

这两天,全世界的大大小小屏幕被一张照片刷屏了。甚至今天笔者在公司食堂吃早点的时候,中央电视台也在播报这张照片的来历。究竟是什么照片这么吸睛呢?

 

那就是北京时间 2019 年 4 月 10 日 21 点整,在全球六地同时召开的新闻发布会上,国际组织事件视界望远镜(EHT)发布的人类首张黑洞照片。那是碳基生命历史上,人类第一次直接“拍摄”的黑洞照片。

 

640?wx_fmt=jpeg

       

有关黑洞的科普已经满天飞,相信读者们已经耳濡目染了,本文将不再阐述黑洞的相关知识,这里将带领读者们了解人类首张黑洞照片背后应用到的信息技术。

 

 

 

640?wx_fmt=png

黑洞照片究竟有多难拍?

 

 

为了能够成功拍摄黑洞照片(5500万光年外的室女 A 星系(M87)中心的黑洞),哈佛-史密森天体物理中心博士后研究员 Katie Bouman 带领的科学家团队成立了一个项目,动用分布在全球的八个毫米 / 亚毫米射电望远镜,将这些望远镜组成一个虚拟的、口径接近整个地球的望远镜,这个虚拟的望远镜就称为 “事件视界望远镜”(Event Horizon telescope,EHT)。

 

640?wx_fmt=jpeg

       

为什么要这么大的阵仗来拍摄黑洞呢?这就不得不提到瑞利判据了。

 

640?wx_fmt=jpeg

       

其中λ 为波长,d 为望远镜直径,分辨率为物体尺寸 / 目标距离。

 

简单来说,我们能看到的最小物体是有限的,想看到的物体越小,所需的望远镜口径就需要越大。

 

这次拍摄的黑洞对象距离地球 5500 万光年,对我们来说,就像在地球上试图观测月球上的一枚硬币一样。因此,要想成功拍摄黑洞的难度可想而知。

 

 

 

640?wx_fmt=png

黑洞照片究竟是怎么拍摄的?

 

 

黑洞照片背后的幕后英雄 Katie Bouman 还在麻省理工学院计算机科学和人工智能读研究生时,提出了一种新的算法,将通过 EHT 网络收集的数据拼接在一起。这种算法最终帮助捕获到这张独一无二的照片:超大质量黑洞及其位于 M87 星系中心的阴影。

 

Katie Bouman 曾在TEDx做过演讲《如何拍摄一张黑洞照片》,这场演讲访问网址在:https://www.ted.com/talks/katie_bouman_what_does_a_black_hole_look_like/。

 

640?wx_fmt=jpeg

       

用最简单的语言来说就是,EHT 使用称为氢脉泽(hydrogen masers)的原子钟来协调不同地点的观测,这个原子钟精确到每 1 亿年误差一秒钟。EHT 依赖于干涉测量技术,这有点像通过试图通过在池塘边缘放置探测器来测量发出的涟漪来重建扔进池塘的石头。与此同理,EHT 将来自八座望远镜的信号组合起来,通过计算机输入,才能将一堆难以理解的光点转换成视觉图像。

 

那么问题来了,这个项目收集的数据量如此之大,仅一个晚上,EHT 生成的数量也达到了前所未有的水平,高达 5PB,约合 5242880GB。现在一般普通电脑硬盘是 500GB,那么 EHT 生成的 5PB 数据,需要一万块 500GB 硬盘才能装满,而这一万块硬盘就达半吨之重。

 

如此海量的数据是无法通过互联网传输的,只能放到硬盘中,由研究人员亲自坐飞机带到美国和德国的研究机构,利用超级计算机将原始数据合成为我们所看到的人类首张黑洞照片。

 

 

 

640?wx_fmt=png

黑洞照片是如何“冲洗”出来的?

 

 

要将 EHT 产生的海量数据转换成图像的关键之一是,需要开发一种新的、复杂的算法。这些算法不仅需要将数据组合起来,还需要滤除由大气湿度等因素引起的噪声,因为噪声会使无线电波产生扭曲。还需要逐波精确同步远距离望远镜捕获的信号。但是,EHT 收集来的数据仍然有很多地方需要填补。

 

Bouman 提出算法后,进行了一系列精心设计的测试,旨在确保 EHT 的图像不是某种形式的技术故障或侥幸造成的。为了保证结果的准确性,在最终数据处理的时候,严谨的科学家们在两个不同的地方分别处理、分别验证。全世界范围内设立了两个数据中心,一个是位于美国的麻省理工学院,另外一个是位于德国的马普射电所,二者彼此独立地处理数据,也彼此验证和校对,保证了最终结果的准确可靠。

 

前面说过,EHT 收集到的数据仍然有很多空白,这就是 Bouman 的算法以及其他几个算法的用武之地。利用 Bouman 的算法,研究人员创建了三个脚本代码管道来拼合图像。

 

由于这次观测得到的数据高达 10PB,EHT 将这些数据装到硬盘空运到美国马萨诸塞州天文台和德国伯恩天文研究所进行处理,由超级计算机把所有的数据进行集成,超级计算机需要获取相同的信号到达两个望远镜的时刻差(时延)以及时延随着时间的变化快慢(时延率),校正射电波抵达不同望远镜的时间差,最后综合两个望远镜的位置信息、信号的强度以及上述两个参数 —— 时延、时延率,经过校准的资料被用来合成黑洞照片,但面对如此海量的数据,即便是超级计算机浮点计算能达到每秒 14 亿亿次,也划了一年多的时间才完成“冲洗”的工作。虽然人类首张照片是计算合成而得,但也是最为接近真实的照片了。

 

640?wx_fmt=jpeg

       

由此可见,人类为了首张黑洞照片,除了需要海量观测数据,还需要高性能的计算存储能力、相关算法和大数据技术等支撑。

 

拍摄黑洞的相关算法涉及到了大量(稀疏)图像处理、统计理论、非凸优化算法、混合高斯模型、隐马尔科夫模型、贝叶斯推断的问题。通过查阅资料,我发现,给黑洞拍照其实对统计学、计算机科学和运筹学 / 优化理论这些领域实际上也带来了很多有意思的、具有挑战性的问题。

 

当然,黑洞照片的背后也有着人工智能的影子。从本质上来说,这次黑洞成像的问题就是如何通过有随机噪声的稀疏信号去进行图像重构,Katie Bouman 等人的高斯隐马尔科夫模型当然是一种成功的思路,但针对不同的问题,我们是否还可以设计出更好的统计模型呢?针对这种超大规模的图像重构问题我们是否可以有更好的训练算法呢?这些都需要我们的计算机科学家、算法工程师们继续付出努力。

 

作为计算机信息技术的从业人员,最激动的就是这人类首张黑洞照片背后的数学原理和算法实现。黑洞成像的成功不仅让物理学家们感到激动,对于从事图像处理、统计、大数据、计算机科学、优化算法等个方向的研究者们来说也是更加激动的事情。

 

还记得我们的征途吗?我们的征途是星辰和大海!正是有了全世界的计算机科学家和算法工程师、程序员的工作,凭借计算机信息技术的加持,我们人类才能踏上征途……

2019年人工智能系统学:

https://edu.youkuaiyun.com/topic/ai30?utm_source=csdn_bw

 

640?wx_fmt=jpeg

 热 文 推 荐 

 

刘强东割袍弃兄弟,马爸爸醉心 996

马云:“996 是一种巨大的福气”

@程序员,入行物联网的避坑指南!| 技术头条

程序员 996 再上热搜,黑名单增至 84 家!

与云原生及开源大神们的第二次亲密接触 | 全议程重磅发布

V神玩起freestyle! 5位以太坊核心大咖在悉尼的演讲精华全在这了!| 直击EDCON

“重构”黑洞:26岁MIT研究生的新算法 | 人物志

程序员为什么都爱穿冲锋衣?(最全总结)

 

 

System.out.println("点个在看吧!");
console.log("点个在看吧!");
print("点个在看吧!");
printf("点个在看吧!\n");
cout << "点个在看吧!" << endl;
Console.WriteLine("点个在看吧!");
Response.Write("点个在看吧!");
alert("点个在看吧!")
echo "点个在看吧!"

640?wx_fmt=gif点击阅读原文,输入关键词,即可搜索您想要的 优快云 文章。

640?wx_fmt=png你点的每个“在看”,我都认真当成了喜欢

<think>我们正在讨论如何验证BGP是否因为缺少黑洞路由而拒绝发布IPv6前缀。根据之前的讨论,BGP的`network`命令要求被通告的前缀必须存在于本地路由表中,否则BGP不会通告该前缀。因此,验证的关键在于检查两个地方:本地路由表和BGP的表。 验证步骤: 1. 检查本地路由表,确认要通告的IPv6前缀是否存在。 命令示例(以华为设备为例):`display ipv6 routing-table <prefix>` 如果不存在,则BGP无法通告。 2. 检查BGP的配置和状态: a. 查看BGP配置中是否已经配置了`network`命令来通告该前缀。 命令:`display bgp ipv6 configuration` 或类似命令查看配置。 b. 查看BGP的IPv6路由表,检查该前缀是否被BGP学习到(即是否在BGP表中)。 命令:`display bgp ipv6 routing-table` 如果在该表中没有看到该前缀,说明BGP没有通告(可能是因为本地路由表中没有该前缀)。 3. 另外,可以查看BGP的日志或调试信息(如果要更详细的信息),但生产环境中慎用调试。 4. 模拟添加黑洞路由后,再次检查BGP表,看前缀是否出现。 引用[1]中提到:在R1上查看收到的mp-bgp路由,但ping不通,因为中间R3、R4没有运行bgp+,没路由是黑洞。这里虽然提到了黑洞,但指的是中间设备没有路由导致流量被丢弃(路由黑洞),而不是我们这里所说的用于通告的本地黑洞路由。但是,它说明了一个问题:如果路由没有正确传播,通信就会失败。 在我们的场景中,我们关注的是本地设备是否因为缺少黑洞路由而没有通告前缀。因此,验证方法主要是检查本地路由表和BGP表。 总结验证方法: - 如果配置了BGP的`network`命令,但在BGP路由表中看不到该前缀,同时本地路由表也没有该前缀,那么基本可以确定是因为缺少黑洞路由(或其他方式注入该前缀)导致BGP拒绝通告。 下面我们用一个具体的步骤来描述: 假设我们要通告前缀`2001:db8:1000::/48`。 步骤1:检查BGP配置中是否有以下配置: ``` bgp 100 ipv6-family unicast network 2001:db8:1000:: 48 ``` 步骤2:检查设备的路由表,查看前缀`2001:db8:1000::/48`是否存在: ``` display ipv6 routing-table 2001:db8:1000:: 48 ``` 如果返回结果为空,则说明该前缀不在路由表中。 步骤3:检查BGP的IPv6路由表,查看该前缀是否在BGP表中: ``` display bgp ipv6 routing-table 2001:db8:1000:: 48 ``` 如果不在,则说明BGP没有通告该前缀。 步骤4:此时,我们可以添加黑洞路由: ``` ipv6 route-static 2001:db8:1000:: 48 NULL0 ``` 步骤5:再次检查路由表,确认黑洞路由已存在。 步骤6:再次检查BGP的IPv6路由表,此时应该能看到该前缀已经被BGP通告(即在BGP表中出现)。 通过步骤4~6,我们验证了:在添加黑洞路由之前前缀不在BGP表中,添加之后出现,说明之前是因为缺少黑洞路由导致BGP拒绝通告。 另外,在引用[3]中提到了BGP的Open报文协商多协议能力,这里要注意,即使配置了通告,如果对端没有协商IPv6地址族的能力,也不会收到通告。但我们现在关注的是本地是否通告,所以主要检查本地设备。 因此,验证方法的核心是检查本地路由表和BGP表的前缀存在性。 下面,我们按照要求生成相关问题。 </think>### 验证BGP因缺少黑洞路由而拒绝发布IPv6前缀的方法 #### 验证步骤: 1. **检查BGP通告状态** 使用命令查看BGP是否成功安装前缀: ```cisco show bgp ipv6 unicast 3FFF:10:1000::/48 ``` - 若输出显示 **"Not advertised to any peer"** 且 **"Status: s - suppressed"**,表示前缀未被通告[^1][^3] - 关键字段验证: ```markdown Network Next Hop Metric LocPrf Weight Path *>i 3FFF:10:1000::/48 ::FFFF:192.0.2.1 0 100 0 i ``` 若缺失`*>`(有效路由标识),说明通告失败 2. **检查本地路由表** 验证黑洞路由是否存在: ```cisco show ipv6 route 3FFF:10:1000::/48 ``` - 正常应显示: ```markdown S 3FFF:10:1000::/48 [1/0] via Null0, directly connected ``` - 若返回 **"Route not found"** ,确认黑洞路由缺失[^1] 3. **查看BGP调试日志** 启用调试抓取BGP通告过程: ```cisco debug bgp ipv6 unicast updates ``` 典型错误日志: ```log %BGP-4-MISSING_ROUTE: No matching route for network 3FFF:10:1000::/48 %BGP-3-NOTIFY: No valid route for advertised prefix ``` 4. **对比配置前后状态** | **操作阶段** | **BGP表状态** | **路由表状态** | **结论** | |--------------|---------------|----------------|----------| | 仅配置`network` | ❌ 前缀缺失 | ❌ 路由缺失 | 通告失败 | | 添加黑洞路由后 | ✔️ 前缀出现 | ✔️ 黑洞路由存在 | 黑洞路由是触发条件 | #### 根本原因分析: 根据BGP协议机制: 1. BGP的`network`命令依赖 **RIB-LOCAL**(本地路由表)存在对应前缀 2. IPv6路由满足最长前缀匹配规则 (`DST地址/Netmask`)[^4] 3. 缺少黑洞路由时,前缀未进入路由表,违反BGP通告先决条件[^3] > ⚠️ **关键验证点** > 当`show bgp ipv6 unicast`显示前缀状态为 **"r RIB-failure"** (路由表安装失败) 时,即可确认因缺少黑洞路由导致通告失败。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值