欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Julia語言在大數據和人工智能領域前景如何

黃文隆2年前13瀏覽0評論

Julia語言在大數據和人工智能領域前景如何?

是否能超越Python不好說,不過Julia 語言發展確實非常迅速,它可以視為同時具備了 Python 的靈活性與 C 的速度,但目前 TensorFlow 和 PyTorch 等框架官方都不支持 Julia 語言。因此近日有研究者借助 XLA 底層編譯器為 Julia 構建 TPU 支持,他們表示該方法能夠將 Julia 程序編寫的 VGG19 模型融合到 TPU 可執行文件中,并調用 TPU 實現高效計算。而 Google.ai 的負責人 Jeff Dean 在推特上也表示「Julia + TPUs = fast and easily expressible ML computations!」

1. 引言

過去的幾年里推動機器學習技術穩步發展的根本性改變之一是訓練和優化機器學習模型的巨大計算力。許多技術都是很年前就已經提出,唯有近幾年提升的計算力可以為現實世界的問題提供足夠優質的解決方案。這些計算能力的很大一部分是通過 GPU 獲取的,其針對向量的計算能力最初是為圖形而設計的,但機器學習模型通常需要執行復雜的矩陣運算,因此 GPU 同樣表現出了非常好的性能。

這些方法及 GPU 在現實世界,尤其是在機器學習領域的成功引發了硬件設計者的一系列創新,他們致力于為機器學習工作負載研發新的加速器。然而,盡管 GPU 很長一段時間都在 CUDA 等軟件系統發力,但這些庫通常不會擴展到新的非 GPU 加速器,為這些加速器開發軟件仍然是一大挑戰。

2017 年,谷歌宣布他們將通過云服務向大眾提供他們專有的 TPU 機器學習加速器。最初,TPU 的使用局限于根據谷歌 TensorFlow 機器學習框架編寫的應用。幸運的是,2018 年 9 月,谷歌通過底層 XLA(Accelerated Linear Algebra)編譯器的 IR 開放了 TPU 的訪問權限。這個 IR 是一個通用的優化編譯器,用于表達線性代數基元的任意計算,因此為使用 TPU 的非 TensorFlow 用戶以及非機器學習工作負載提供了良好的基礎。

在本文中,我們介紹了使用這個接口編譯通用 Julia 代碼的初步工作,它們可以進一步訪問谷歌云的 TPU。這一方法與 TensorFlow(Abadi et al., 2016)采用的方法形成對比,后者沒有編譯 python 代碼,而是先用 Python 構建一個計算圖,然后再對這個計算圖進行編譯。它在美學上類似于 JAX(Frostig et al., 2018),JAX 的目標是通過跟蹤和 Offload 高級數組運算來 Offload Python 本身編寫的計算。然而重要的是,我們不依賴于追蹤,而是利用 Julia 的靜態分析和編譯能力來編譯整個程序,包括傳遞到設備端的所有控制流。

值得一提的是,我們的方法允許用戶在編寫模型時充分利用 Julia 語言的表現力。這些表現力主要體現在一些高級特征上,如多重派發、高階函數和現有庫,如微分方程求解器(Rackauckas & Nie,2017)和通用線性代數例程等。由于只在純 Julia 代碼上運行,所以它也與 Zygote.jl(Innes, 2018)自動微分工具兼容,該工具能執行自動微分作為高級編譯過程。總的來說,我們能夠編譯使用 Flux 機器學習框架編寫的完整機器學習模型,將模型的前向、反向傳播及訓練回路融合成一個可執行文件,并 Offload 到 TPU 中。

論文:Automatic Full Compilation of Julia Programs and ML Models to Cloud TPUs

論文鏈接:https://arxiv.org/abs/1810.09868

摘要:谷歌的云 TPU 是一種前景廣闊的新型機器學習工作負載硬件架構,近年來已經成就了谷歌很多里程碑式的機器學習突破。如今,谷歌已經在其云平臺上為大眾提供 TPU,最近又進一步開放,允許非 TensorFlow 前端使用。我們描述了一種通過這一新 API 及谷歌 XLA 編譯器將 Julia 程序的適當部分 Offload 到 TPU 的方法和實現。我們的方法能夠將 Julia 程序編寫的 VGG19 模型及其正向傳播完全融合到單個 TPU 可執行文件中,以便 Offload 到設備上。我們的方法與 Julia 代碼上現有的基于編譯器的自動微分技術很好地結合在一起,因此也能夠自動獲得 VGG19 反向傳播并采用類似的方法將其 Offload 到 TPU。使用我們的編譯器訪問 TPU,我們能夠在 0.23 秒內完成批量為 100 張圖像的 VGG19 前向傳播,而 CPU 上的原始模型則需要 52.4s。我們的實現僅需不到 1000 行的 Julia 代碼,無需根據 TPU 對核心 Julia 編譯器或任何其他 Julia 包進行特有的更改。

7 結果

7.4 在 TPU 上進行評估

圖 2:不同批大小對應的 VGG19 前向傳播時長。

圖 3:被編譯為 XLA 后,Metalhead.jl VGG19 前向傳播和反向傳播的指令數分解。

java flux架構,Julia語言在大數據和人工智能領域前景如何