在TensorFlow裡模擬宇宙!提升模擬計算速度,成本降低1000倍

2020-12-03 大數據文摘

大數據文摘出品

來源:tensorflowblog

編譯:睡不著的iris、劉俊寰

去年6月,俄羅斯天文學家兼碼農小哥開發了一款名叫Space Engine的宇宙模擬遊戲,目前,該遊戲已經收到2639份測評,絕大部分都是好評。

不過,Space Engine還只是在遊戲層面對宇宙的一種呈現,試想以下,如果用數值模擬的基礎工具,從觀測的海量宇宙數據進行分析……

停!看到這兒也大概能猜到,這樣的模擬計算肯定代價不菲,而且通常需要在大規模的超級算計算機上離線運行

但是,若是提升模擬計算速度,將其與機器學習組件整合到統一框架內,會有什麼不同呢?

這便是新的N體宇宙模擬代碼FlowPM在做的。

沒錯,文摘菌今天給大家展示的就是,如何使用TensorFlow模擬自己的小宇宙,並說明為什麼它對宇宙學有著激動人心的前景展望,搓搓小手跟進了~

圖1:(藍色)通過2dFGRS測量的宇宙結構,(紅色)使用N體模擬生成的千禧年宇宙結構。

N體宇宙模擬

簡單來說,N體模擬的方法是為了解釋宇宙演化中的非線性演化問題,科學家們提出的一套研究宇宙學的數值模擬方法

在宇宙學領域,N體模擬還原了宇宙是如何從誕生之初的大爆炸演變至今的

如果我們按照物質初始分布,將大量的粒子放置在一個盒子中,由於引力的牽引,粒子會不斷移動。而最終的粒子狀態,就是對浩瀚宇宙結構的再現。例如,從這個分布中,你可以看到星系和星系群是如何分布的。

這些結構的形成和演化取決於一些與宇宙相關的基礎問題,諸如宇宙中有多少物質?宇宙膨脹有多快?導致宇宙膨脹的黑物質和暗能量有哪些特性?

現代的宇宙學研究用強大的望遠鏡覆蓋了遼闊的觀測區域,繪製出了這些結構,時間甚至可以追溯到幾十億年前。通過將N體模擬的預測與觀測數據進行比較,可以幫助我們解答前述基礎問題,從而提高對宇宙的誕生和演化的理解。

FlowPM:一個TensorFlow的宇宙N體求解程序

隨著幾十年研究的更迭,N體模擬已是宇宙學界的主要研究工具。

得益於機器學習和統計推理領域的最新進展,一個完全基於TensorFlow實現的N體宇宙模擬程序FlowPM應運而生了。

在這裡,我們使用Google Colab notebook對其進行實驗,同時,以下主要提供TF1的編寫代碼

首先需要設置好邊長、網格大小和執行代碼片段等模擬參數,隨後的執行模擬代碼片段就非常簡單了,完整的代碼如下所示,如此就能生成下圖所示的大型結構。

# Generate Gaussian initial conditions for the matter distributioninitial_conditions = flowpm.linear_field(N, L, ipklin, batch_size=batch)# Sample particles, i.e. generate the initial displacement and velocitystate = flowpm.lpt_init(initial_conditions, a0=a0)# Evolve particles from initial state down to present time with N-Body simulationsfinal_state = flowpm.nbody(state, stages, N)# Visualize final density field i.e interpolate the particles to a gridFinal_field = flowpm.cic_paint(tf.zeros_like(initial_conditions), final_state[0])#Execute the graph!with tf.Session() as sess:ic, istate, fstate, sim = sess.run([initial_conditions, state, final_state, final_field])

圖2 :(左)N體模擬啟動時,宇宙中物質的初始分布;(右)在模擬的最終快照,物質的最終分布。可以清楚地看到大型結構,具有暈圈,長絲和空洞塌陷。

或許不少人會疑惑,TensorFlow真有這麼香?文摘菌把話撂這,還這真有這麼香,TensorFlow的優勢主要體現在以下兩個方面。

首先是分析和推理,TensorFlow模擬為宇宙學家提供了前所未有的獨特功能,也就是我們所說的可微性(differentiability)。這個功能為科學家提供一種新的分析工具,例如開發基於模擬的有效推理技術。

不僅如此,這個功能還支持量化各類輸入參數的調整對最終觀察的影響。在伯克利宇宙中心,研究者們對時光倒流和重構初始狀態十分感興趣,這也有助於更好地了解現在的宇宙結構,但這是有前提的,必須先解決一個百萬維度的高度非線性優化問題,即模擬過程得可微,而這,FlowPM就能做到,重構後的圖如下所示。

從最終的黑物質的大型宇宙結構(右邊)如何重建宇宙初始狀態(左邊)

另一個就是混合物理/深度學習模擬,在N體模擬運用深度學習組件時,你會需要開發一個混合前向模型。但是,利用當前的計算資源,不可能高度準確地同時模擬所有的組件,只能依據科研目標,在不同元素之間進行取捨,例如宇宙可觀察的深度、星系可見的範圍和形成星系的多維物理過程等。

然而現在,我們可以用深度學習替代模型,將這些元素自然地整合進N體模擬中。在BCCP,科學家們開發了一個這樣的混合模擬,如下圖所示。假如我們要模擬宇宙中的氣體動量密度,目前,這類觀察採用混合模擬實現代價非常大,但使用一個端到端的FlowPM模型,成本至少可以降低1000倍。

一個混合模擬的示例,用兩層的非線性變換(網絡)補充PM模擬的暗物質輸出(左),以模擬宇宙(中心)的氣體動量密度。將使用昂貴1000倍的混合模擬所模擬與真相進行比較(右)

採用Mesh TensorFlow分布式框架仿真

雖然原理看上去很簡單,但實際的挑戰還是很大的,畢竟宇宙真的很龐大!

為了準確匹配當前和未來的觀測,我們要同時模擬數以億計的粒子的變化。

要實現這個,N體宇宙模擬主要有以下兩個難點:

連續演化數十億個粒子,計算成本非常高。要估算所有粒子之間的重力,需要計算所有的粒子對,當計算規模擴展至N2,無法得出結果。但幸運的是,可以在FlowPM中使用一種叫做particle-mesh(PM)的方法,即把一個Ng規格的網格離散空間,使用高度優化的3D快速傅立葉變換計算整個空間的力,這將計算成本從N2g降到了Nglog(Ng)。儘管算法進行了優化,但模擬數以萬計的粒子也非常佔用內存。結果是一個有效尺寸為1024x1024x1024的最小的模擬網格,都無法再單個GPU上顯示。因此,我們需要一個模型並行框架來支撐大規模模擬,這也正是Mesh TensorFlow的用武之地。

Mesh TensorFlow框架可以輕鬆地使用分布式張量來表示模擬,並持續追蹤分布式梯度和設備之間的存儲通信,通過Mesh TensorFlow編寫N體求解程序,可以將巨大的仿真量跨多個超級計算機進行分布。

在這種模擬中,每一步操作和網格組件在一個時間步長可以演化出不同的空間區域。在雲端TPU部署相同的模擬代碼,可以模擬128個128x128x128網格的獨立宇宙,或者部署在國家計算機(NERSC)的64個GPU上模擬一個1024x1024x1024的宇宙。

除了支持大規模仿真,模型並行框架允許通過將計算任務分配給多個處理器來加速中間尺寸的模擬,如下圖所示,FlowPM的平均模擬速度比當前的可微python模擬器FastPM快了40倍不止。

使用FastPM(在Cori Haswell內核上運行基於CPU的python代碼)和FlowPM(在Cori GPU上運行基於GPU的Mesh TensorFlow代碼)模擬2563網格PM,比較1個步長內時間縮放與處理器數量

展望

過去的三十多年,數值模擬是大型宇宙的研究基石。現在,有了FlowPM,研究即將邁出新的一步,將模擬器集成在包含深度學習組件的統一框架內,同時保持對潛在現象的準確物理理解

在宇宙學中,這種結合不僅促生了新穎的分析工具,在研究體系中加入深度模型攻克棘手的歷史難題。這些活躍的研究領域,加速催生下一代宇宙研究,在未來的十年之際可以觀察宇宙中成千上萬的個體。

多虧了Mesh TensorFlow模型並行框架,使得物理建模和機器學習的融合得以實現,希望成分分析和FlowPM計算工具的發展,讓宇宙學以外的領域也得以受益

相關報導:

https://blog.tensorflow.org/2020/03/simulating-universe-in-tensorflow.html

相關焦點

  • TensorFlow Lite發布重大更新!支持移動GPU、推斷速度提升4-6倍
    乾明 發自 凹非寺量子位 出品 | 公眾號 QbitAITensorFlow用於行動裝置的框架TensorFlow Lite發布重大更新,支持開發者使用手機等行動裝置的GPU來提高模型推斷速度。在進行人臉輪廓檢測的推斷速度上,與之前使用CPU相比,使用新的GPU後端有不小的提升。
  • 步履不停:TensorFlow 2.4新功能一覽!
    集合運算        https://github.com/tensorflow/tensorflow/blob/master/tensorflow/python/ops/collective_ops.py
  • TensorFlow極速入門
    最後給出了在 tensorflow 中建立一個機器學習模型步驟,並用一個手寫數字識別的例子進行演示。1、tensorflow是什麼?tensorflow 是 google 開源的機器學習工具,在2015年11月其實現正式開源,開源協議Apache 2.0。
  • TensorFlow官方發布消息稱將引入一個新的優化工具包
    它的名字是訓練後量化(post-training quantization),這是模型量化的一類,主要優點有: 模型佔用存儲空間縮小75% 如果是主要由卷積層組成的模型,執行速度提高10–50% 如果是基於RNN的模型,執行速度提高3倍 內存、算力要求的降低也意味著大多數模型的功耗會大幅降低 內存、算力、功耗,這是模型量化的主要優化對象
  • 教程| 如何用TensorFlow在安卓設備上實現深度學習推斷
    從源安裝和配置 TensorFlow(https://www.tensorflow.org/install/install_sources)。3.在 TensorFlow 目錄下運行下列命令行:bazel build tensorflow/tools/graph_transforms:transform_graphbazel-bin/tensorflow/tools/graph_transforms/transform_graph \ --in_graph=/your/.pb/file \ --outputs="output_node_name
  • TensorFlow極簡教程:創建、保存和恢復機器學習模型
    代碼的結構與之前相同,唯一不同的是這次使用張量(tensor)操作來定義誤差。使用張量可以並行(parallel)運行代碼。每個數據點被看作是來自獨立同分布的樣本。因為每個數據點假定是獨立的,所以計算也是獨立的。當使用張量時,每個數據點都在分隔的計算內核上運行。我們有 8 個數據點,所以如果你有一個有八個內核的計算機,它的運行速度應該快八倍。
  • 谷歌正式發布TensorFlow 1.5,究竟提升了哪些功能?
    機器之心對這次更新的重大改變以及主要功能和提升進行了編譯介紹,原文請見文中連結。GitHub 地址:https://github.com/tensorflow/tensorflow/releases/tag/v1.5.0原始碼(zip):https://github.com/tensorflow/tensorflow/archive/v1.5.0.zip原始碼(tar.gz):https://github.com/tensorflow/tensorflow
  • 玩轉TensorFlow?你需要知道這30功能
    地址是:tensorflow.org/tfx/?網址:https://github.com/tensorflow/tensor2tensor13)XLA(線性代數計算加速)XLA 是線性代數領域特定的編譯器
  • 深度解讀TensorFlow,了解它的最新發展!
    Tensorboard是tensorflow內置的一個可視化工具,它通過將tensorflow程序輸出的日誌文件的信息可視化,使得tensorflow程序的理解、調試和優化更加簡單高效。Tensorboard的可視化依賴於tensorflow程序運行輸出的日誌文件,因而tensorboard和tensorflow程序在不同的進程中運行。
  • 提升1000倍!未來計算「加速度」
    當天,該研究院集成光電、神經擬態計算、量子計算、保密計算和機器編程等前沿領域的負責人悉數到場,揭秘了他們計劃開啟未來計算、致力於1000倍性能提升的諸多顛覆性研究。 拐點已至 2004年,英特爾提出了一個宏大的目標,讓光作為連接技術的基礎。
  • 谷歌大腦語言模型速度是 T5 速度的 7 倍
    近日,Google Brain 團隊在預印本發布論文《SWITCH TRANSFORMERS: SCALING TO TRILLION PARAMETER MODELS WITH SIMPLE AND EFFICIENT SPARSITY》,宣布利用萬億級參數進行預訓練的稀疏模型 SWITCH TRANSFORMERS 的誕生,該方法可以在控制通信和計算資源的情況下提升訓練的穩定性,同等計算資源條件下比
  • TensorFlow 攜手 NVIDIA,使用 TensorRT 優化 TensorFlow Serving...
    HTTP/REST API at:localhost:8501 …$ curl -o /tmp/resnet/resnet_client.py https://raw.githubusercontent.com/tensorflow/serving/master/tensorflow_serving/example/resnet_client.py
  • 機器學習主要的特點是模擬人類的學習過程
    本文通過量子信息技術與語音識別的深度聯繫,展現了量子信息技術與語音識別的有機結合,揭示量子信息技術在語音識別方面的潛力,有助於提升量子信息技術在語音識別領域的有效性。現在現在是機器學習的爆發年代,從智慧型手機的大火開始,機器學習開始受到了非常多的追捧。機器學習主要的特點是模擬人類的學習過程,對於這一點也給本人觸動。
  • tensorflow初級必學算子
    在之前的文章中介紹過,tensorflow框架的核心是將各式各樣的神經網絡抽象為一個有向無環圖,圖是由tensor以及tensor變換構成;雖然現在有很多高階API可以讓開發者忽略這層抽象,但對於靈活度要求比較高的算法仍然需要開發者自定義網絡圖,所以建議開發者儘量先學習tf1.x
  • 終於來了,TensorFlow 新增官方 Windows 支持
    現在你可以使用命令 C:\> pip install tensorflow 安裝 TensorFlow 了。GPU 支持的命令:C:\> pip install tensorflow-gpu有關 TensorFlow Windows 支持的更多細節請閱讀 r0.12 的版本注釋。
  • 如果我們生活在模擬計算之中,那麼我們能模擬出另外的宇宙嗎
    瑞典哲學家發表了一篇《模擬論證》的論文,深度地質疑了現實的本質,得出的結果是我們生活在計算模擬之中。從這以後,各種科幻作品便喜歡探討人們生活在模擬環境的想法,其中最著名的便是《黑客帝國》。如果事情真的如所料想的那樣,那麼我們有沒有辦法也模擬出一個宇宙呢?
  • 解密NVIDIA GPU加速宇宙學N體模擬計算 | 公開課預告
    宇宙學N體模擬是研究外太空星系形成、暗物質、暗能量等重大科學問題的重要手段,目前N體模擬常用的算法之一是粒子網絡(Particle-Mesh,PM)算法。為準確模擬出宇宙的結構,宇宙學家們需要同時模擬數億個粒子的演化。
  • 如何優雅地用TensorFlow預測時間序列:TFTS庫詳細教程
    如果在Github上搜索「tensorflow time series」,會發現star數最高的tgjeon/TensorFlow-Tutorials-for-Time-Series已經和TF 1.0版本不兼容了,並且其他的項目使用的方法也各有不同,比較混亂。
  • 關於TensorFlow,你應該了解的9件事
    TensorFlow 下載地址:https://www.tensorflow.org/install/TensorFlow 初始教程:https://www.datacamp.com/community/tutorials/tensorflow-tutorial
  • 分享TensorFlow Lite應用案例
    內存大小控制機制存在一定的問題,例如模型本身在計算時只有 20MB,但加載到內存之後的運行時峰值可能會飆升 40 到 70MB。   TF Lite 對於 CNN 類的應用支持較好,目前對於 RNN 的支持尚存在 op 支持不足的缺點。