@Thom_Wolf: 人们正在忽视Hugging Face上每周都在进行的AI x Science大型发布,这一次是80TB的天体物理数据……

X AI KOLs Following 工具

摘要

多模态宇宙(MMU)是一个80TB以上的天文巡天数据集,已被转换为HATS parquet格式,使得可以通过LSDB和Hugging Face生态系统在笔记本电脑上进行交叉匹配,无需批量下载。

人们正在忽视Hugging Face上每周都在进行的AI x Science大型发布,这一次是80TB的天体物理数据——真的80TB => https://huggingface.co/blog/hugging-science/multimodal-universe-hats…
查看原文
查看缓存全文

缓存时间: 2026/07/03 12:36

人们可能忽略了Hugging Face上每周都在发生的AI x Science重磅发布——这次是80TB的天体物理学数据,没错就是80TB:https://huggingface.co/blog/hugging-science/multimodal-universe-hats…

硬盘空间不足?80TB以上的天文学数据:从笔记本电脑交叉匹配多模态宇宙

来源:https://huggingface.co/blog/hugging-science/multimodal-universe-hats
返回文章列表 (https://huggingface.co/blog)
Mike Smith 头像 (https://huggingface.co/Smith42)

- TL;DR (https://huggingface.co/blog/hugging-science/multimodal-universe-hats#tldr)

  • 多模态宇宙到底是什么? (https://huggingface.co/blog/hugging-science/multimodal-universe-hats#what-exactly-is-the-multimodal-universe)
  • 为什么你应该关心天文学数据的交叉匹配? (https://huggingface.co/blog/hugging-science/multimodal-universe-hats#why-should-you-care-about-crossmatching-astronomy-data)
  • HATS + LSDB ❤️ Hugging Face 🤗 (https://huggingface.co/blog/hugging-science/multimodal-universe-hats#hats–lsdb-%E2%9D%A4%EF%B8%8F–hugging-face-%F0%9F%A4%97)
  • 直接给我代码示例!🗣️ (https://huggingface.co/blog/hugging-science/multimodal-universe-hats#just-give-me-the-code-examples-%F0%9F%97%A3%EF%B8%8F)
  • 致谢 (https://huggingface.co/blog/hugging-science/multimodal-universe-hats#acknowledgements)

https://huggingface.co/blog/hugging-science/multimodal-universe-hats#tldr
TL;DR
多模态宇宙 (https://arxiv.org/abs/2412.02527)(MMU) 汇集了来自30多个巡天的80TB¹ (https://huggingface.co/blog/hugging-science/multimodal-universe-hats#fn1) 以上数据,全部放在一个地方。交叉匹配(将同一目标在不同巡天中的观测联系起来)是其杀手锏,但此前需要将大量数据下载到本地磁盘。我们厌倦了仅仅为了运行交叉匹配就得用集群,于是在 UniverseTBD (https://discord.gg/rhBJQgSXcV) 和 Hugging Science (https://discord.gg/caqxB63DPd) Discord 服务器上一起解决了这个问题。我们将 MMU 转换为基于 parquet 的 HATS (https://hats.readthedocs.io/) 格式,这样你就可以使用 LSDB (https://lsdb.io/) 和 Hugging Face 生态系统,在笔记本上进行交叉匹配。数据集在这个 Hugging Face 集合 (https://huggingface.co/collections/UniverseTBD/multimodal-universe-hats) 中。无需批量下载,即使是 Gaia 规模的数据,4GB 内存也足够。以下是实际效果:MMU x HATS 交叉匹配在笔记本上运行 (https://asciinema.org/a/1259218)

上面整个运行 ☝️ 实际上就是下面这个 👇:

# /// script
# requires-python = ">=3.12"
# dependencies = ["lsdb", "huggingface-hub"]
# ///
import lsdb
gz10 = lsdb.open_catalog("hf://datasets/UniverseTBD/mmu_gz10")
sdss = lsdb.open_catalog("hf://datasets/UniverseTBD/mmu_sdss_sdss")
xmatch = gz10.crossmatch(sdss, n_neighbors=1).compute()

https://huggingface.co/blog/hugging-science/multimodal-universe-hats#what-exactly-is-the-multimodal-universe

多模态宇宙到底是什么?

简而言之的 MMU。来源:MMU Collaboration (2024)

MMU 就是一群来自各个研究所的天文学家厌倦了每个巡天都有自己的怪癖,决定将所有数据统一成非天文学家也能轻松使用的格式。我们谈论的是超过80TB的星系图像(涵盖全波段)、星系和恒星的光谱、变星光变曲线,以及各类测量数据和物理数据。想法很简单:你不必成为某个特定巡天存档系统的博士,也能加载数据并做出很棒的科学成果。

在天文学中,数据丰富但碎片化;数据摆在那里,但每个巡天的处理方式都略有不同。不同的存储格式、不同的文档,以及不同的陷阱(比如一个巡天用星等存储亮度,另一个用 Jansky 通量),需要熟悉这些才能充分利用数据。MMU 标准化了这一切,并在此基础上提供了方便的交叉匹配工具,让你可以跨巡天关联目标,构建自己的多模态数据集。

不过有一个大问题。在 MMU v1.0 中,交叉匹配要求你下载原始 HDF5 格式的数据。即使是全集 MMU 的一个子集,这也需要相当大的存储空间。单个数据集可以从 Hugging Face 流畅地流式传输,但一旦你想组合它们(而这正是关键!),就需要本地存储,这对许多天文学家来说难以企及。这意味着 MMU 最强大的功能对那些电脑性能“土豆”而非“法拉利”的人来说并不好用。

一个以前可以避免的问题。

所以我们修复了它。我们将各个 MMU 数据集从旧的 HDF5 格式转换为 HATS,并上传到 Hugging Face。LSDB 团队已经在他们的库中构建了流式交叉匹配功能,一旦数据格式正确、位置正确,一切就自然工作了。我们马上会谈到这一点,但首先让我们讨论一下为什么交叉匹配值得这么麻烦。

https://huggingface.co/blog/hugging-science/multimodal-universe-hats#why-should-you-care-about-crossmatching-astronomy-data

为什么你应该关心天文学数据的交叉匹配?

交叉匹配就是这样一个过程:“这张图像、这个光谱、这些测光数据都是对这个天体的描述”。在天文学中,你通过追踪每个巡天在天空中的观测位置,记录该位置,然后如果两个观测位置足够接近,就称之为“同一个天体”。理论上这是一个简单的过程,但当你尝试大规模进行时,简直是一场噩梦。

那么,交叉匹配在天文学家的实践中是怎样的?它又实现了哪些科学呢?一个很好的例子记录在 Michael Stroh 等人的论文“Luminous Late-time Radio Emission from Supernovae Detected by the Karl G. Jansky Very Large Array Sky Survey (VLASS)” (https://arxiv.org/abs/2106.09737) 中。他们拿大约7万个已知超新星样本,与 VLASS 射电巡天进行交叉匹配,然后通过 Chandra、LOFAR、XMM-Newton 和 Swift-XRT 巡天筛选候选体。这样从7万个候选体缩减到仅19个超新星。这些遗迹中的每一个都在爆炸后很多年仍然奇怪地发射射电辐射。通常,超新星的射电辐射会随着激波穿过死亡恒星周围的稀薄气体而可预测地衰减。Stroh 及其同事提出了三种解释:激波可能撞击到了恒星在爆炸前几个世纪抛入太空的致密壳层;射电辐射可能来自一个物质喷流(类似于伽马射线暴中看到的),最初指向远离地球的方向,现在随着速度减慢才进入视野;或者爆炸可能留下了一个快速旋转的中子星,其高能风照亮了周围的碎片。如果不跨五个巡天进行交叉匹配,这些候选体都无法被识别。

人人都知道柏拉图举办最好的派对。

天文交叉匹配也是检验现代机器学习中最辛辣想法之一的关键要素:柏拉图式表征假设 (https://arxiv.org/abs/2405.07987) (PRH)。PRH 认为,在不同数据上使用不同目标训练的神经网络正在趋同于同一个现实图景;一个共享的世界统计模型,就像柏拉图的理想形式在洞穴墙壁上投下的阴影。天文学是检验这个假设的好地方,因为星系图像、光谱、测光和其他测量可以被视为同一基础物理学投下的不同“阴影”。如果 PRH 成立,我们预期更大的神经网络会以越来越相似的方式表示同一天文目标,而与捕捉它的仪器无关。这正是“柏拉图宇宙 (https://arxiv.org/abs/2509.19453)”项目正在检验的。该团队使用 MMU 交叉匹配(将 Hyper Suprime Cam 图像与 Legacy Survey 和 JWST 光学及红外图像、以及 DESI 光谱配对),在1角秒半径内(大约相当于十米外一根头发丝的宽度)。他们比较了视觉变换器、自监督模型和天文学专用架构(如 AstroPT (https://arxiv.org/abs/2405.14930) 和 Specformer (https://arxiv.org/abs/2310.03024) )的内部表征。他们发现,随着模型变大,它们的嵌入空间相似性增加。同一星系最终大致位于不同模型的同一邻域:在完全不同的数据集上训练的模型似乎确实在向某种共享的“柏拉图式”表征空间收敛。结果是,天文学也许能够借力于开放源代码机器学习社区已经做出的巨大投入,通过重新利用和微调通用的现成基础模型,而不是从头开始预训练。而所有这些分析如果没有交叉匹配的数据是不可能实现的;没有能力说“这张图像、这个光谱和这些物理性质都描述了同一星系”。

这些研究展示了多模态宇宙设计要轻松实现的科学类型。但实际执行这些交叉匹配一直需要将相当大块的 MMU(或其他数据)下载到本地磁盘。那么我们如何修复呢?

https://huggingface.co/blog/hugging-science/multimodal-universe-hats#hats–lsdb-%E2%9D%A4%EF%B8%8F–hugging-face-%F0%9F%A4%97

HATS + LSDB ❤️ Hugging Face 🤗

我们与 LINCC Frameworks 合作,将 MMU 转换为 HATS。HATS 是 LSDB 背后的目录格式,LSDB 是一个用于处理 PB 级天文巡天的 Python 库。

通过分层自适应平铺方案划分的 Gaia DR3 数据集。来源:LINCC Frameworks。

HATS 数据集格式将天空划分为“HEALPix”(等面积层级像素化)瓦片。这些是球体的等间距细分网格,同一层级的每个像素覆盖相同的表面积。在 HATS 中,每个 HEALPix 存储在一个单独的 Apache Parquet 文件中,并且天空的划分方式是:密集区域得到较小的 HEALPix 瓦片,稀疏区域得到较大的瓦片。这意味着每个瓦片内的目标数量大致相等,不会产生非常大且难以管理的 *.parquet 文件。这对于流式传输非常有利,因为我们每次只需要在内存中保存一对匹配的瓦片!而且,得益于 HATS 引入的动态平铺,这些瓦片的内存占用足够小,可以轻松放入你笔记本的 RAM 中。你永远不需要一次将整个数据集保存在磁盘上。

在底层,LSDB 比较两个目录的 HATS 分区图,以识别重叠的瓦片对。对于每一对,它只加载那两个 Parquet 文件,并在指定的角半径内运行 KD-tree 空间匹配。由于只加载重叠的瓦片,两个目录中都不出现的大片天空区域被完全跳过。Dask 在瓦片对上并行化,一切都是延迟的:调用 crossmatch() 会构建一个任务图,但直到你说“开始”才执行。CatalogStream 接口正是让这一切对笔记本友好的原因。它不会将整个交叉匹配结果实例化到内存中,而是通过后台预取一次生成一个分区。在我们的 基准测试 (https://github.com/UniverseTBD/hats-crossmatch-benchmark) 中,将包含1.8万个目标的 Galaxy Zoo 10 目录与包含80万个目标的 SDSS 目录在1角秒半径下进行交叉匹配,流式传输时仅使用4 GB 内存。流式传输完整的交叉匹配耗时不到20分钟,第一批结果在4秒内到达。这对于快速迭代非常有利,因为你几乎可以立即开始检查匹配结果。扩展到 SDSS vs Gaia(80万个交叉匹配1.22亿个目标)时,峰值内存保持在4GB 左右。数据集变大了150倍,但所需的内存却没有增加。

https://huggingface.co/blog/hugging-science/multimodal-universe-hats#just-give-me-the-code-examples-%F0%9F%97%A3%EF%B8%8F

直接给我代码示例!🗣️

🤗 datasets 和 CatalogStream 来拯救你。

Hugging Face 非常适合托管 MMU x HATS 数据集,因为 HATS 使用 Apache Parquet,而 HF 原生支持它。这意味着不需要特殊的基础设施,一切开箱即用。此外,我们还可以原生利用 Hugging Face Datasets 和 LSDB 生态系统!这意味着流式传输 MMU 中的天文数据集就像使用你已经熟知并喜爱的 Hugging Face Datasets 栈一样简单:

# /// script
# requires-python = ">=3.12"
# dependencies = ["datasets", "pillow"]
# ///
"""通过 Hugging Face Datasets 流式传输 MMU 数据集。"""
from datasets import load_dataset
gz10 = load_dataset("UniverseTBD/mmu_gz10", split="train", streaming=True)
print(next(iter(gz10)))
{'_healpix_29': 318719439679484682, 'rgb_image': <PIL.Image.Image image mode=RGB size=256x256 at 0x7F...>, 'gz10_label': 7, 'redshift': 0.058778468519449234, 'rgb_pixel_scale': 0.2619999945163727, 'ra': 141.71510314941406, 'dec': 20.576555252075195, 'object_id': '13024'}

如果你想利用 LSDB (https://docs.lsdb.io/en/stable/#) 的交叉匹配和流式传输能力,你可以这样:

# /// script
# requires-python = ">=3.12"
# dependencies = ["lsdb", "huggingface-hub", "matplotlib", "pillow"]
# ///
"""交叉匹配两个 HATS 目录并流式传输结果。"""
import io
import lsdb
import matplotlib.pyplot as plt
from PIL import Image
from lsdb.streams import CatalogStream

# 执行交叉匹配
gz10 = lsdb.open_catalog("hf://datasets/UniverseTBD/mmu_gz10")
sdss = lsdb.open_catalog("hf://datasets/UniverseTBD/mmu_sdss_sdss")
xmatch = gz10.crossmatch(sdss, n_neighbors=1)

rows = next(iter(CatalogStream(catalog=xmatch))).head(4)

# 绘制交叉匹配结果
fig, ax = plt.subplots(2, 4, figsize=(8, 4), sharex="row", sharey="row")
for i, (_, row) in enumerate(rows.iterrows()):
    ax[0, i].imshow(Image.open(io.BytesIO(row["rgb_image_mmu_gz10"]["bytes"])))
    ax[0, i].set_xticks([]); ax[0, i].set_yticks([])
    spec = row["spectrum_mmu_sdss_sdss"][~row["spectrum_mmu_sdss_sdss"]["mask"]]
    ax[1, i].plot(spec["lambda"], spec["flux"], color="hotpink")
    ax[1, i].set_xlabel("波长 [Å]")
    ax[1, 0].set_ylabel("通量")
plt.show()

你还可以继承 LSDB 擅长的所有空间操作功能。我们在单独的 教程 (https://github.com/AstroAI-CfA/tutorial-lsdb) 和 Hugging Face Space (https://huggingface.co/spaces/TobiasPitters/mmu-crossmatch) 中展示了这一点,如果想深入探索,一定要看看!

整个多模态宇宙 v1.0 现在都以 HATS 格式(作为 MMUv1.5)放在 Hugging Face 上(你可以在这里浏览集合 (https://huggingface.co/collections/UniverseTBD/multimodal-universe-hats))。我们希望能一起壮大它。如果你有尚未纳入 MMU 的天文数据,hats-import (https://hats-import.readthedocs.io/en/stable/) 库可以轻松地将你的数据转换为 HATS 并上传到 Hugging Face,这样每个人都能与之交叉匹配。

如果你在寻找多模态游乐场,完整的 MMU 正在等待:挑选几个巡天,用几行代码交叉匹配它们,看看你的模型在获得同一批天体的图像、光谱和测光数据后能学到什么。我们构建这个是因为 MMU 最强大的功能被大多数人没有的硬件锁住了。跨巡天交叉匹配是你只有在合适的机构、合适的集群、拥有合适的凭据和合适的存储预算时才能做的事情。现在,这是你可以在你那台吱吱作响的 ThinkPad 上做的事情。如果你曾经想从事真正的天文学但认为自己做不到,那么你(没错,就是你 🫵 !)可以做到。挑两个巡天,运行本文开头的四行代码。


¹ 80TB 是压缩数据的大小。

相似文章

Hugging Face 数据集突破 100 万!

Reddit r/LocalLLaMA

庆祝 Hugging Face 社区达成 100 万个数据集的里程碑,彰显社区通过开放数据协作推动 AI 发展的共同努力。

@DataScienceHarp:我做了一个数据集,但法律上我不能把它给你。Meta 的 Aria Digital Twin:9 个同步的 MCAP 片段,250 万条消息……

X AI KOLs Following

一篇操作讲解,展示如何将 Meta 的 Aria Digital Twin 第一人称视角数据集(视频、深度、分割、注视、骨架、3D 框)转换为单个同步的 MCAP 文件,并在 FiftyOne 中加载可视化,同时分享了约 300 行代码,任何人都可以在该数据集的非商业许可下运行。