日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Julia重新思考ML工具,并對現代ML工具需要做的工作提供一些見解

DPVg_AI_era ? 來源:lq ? 2018-12-06 09:17 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

隨著機器學習等領域的飛速發(fā)展,亟需一門適用于該領域的編程語言。Julia官方博客發(fā)文探討了如何使用Julia重新思考ML工具,并對現代需要做的工作提供了一些見解。

自從Julia團隊提出“需要一流的語言、編譯器和機器學習(ML)生態(tài)系統(tǒng)”以來,該領域呈現出一些有趣的發(fā)展趨勢。

在現有的系統(tǒng)如TensorFlow或PyTorch中,不僅權衡問題(tradeoff)沒有得到解決,而且它們的“邊界”比以往任何時候都更加明顯,因為這兩個框架都包含不同的“靜態(tài)圖(static graph)”和“動態(tài)圖機制(eager execution)”接口。

在目前的框架還不夠完善的情況下,一些激動人心的新項目如雨后春筍般出現,完全省去了圖(graph),并將可微分編程(differentiable programming)引入主流:

Theano團隊的Myia將Python的一個子集區(qū)分并編譯為高性能GPU代碼;

Swift for TensorFlow擴展了Swift,可以將兼容的函數編譯為TensorFlow圖;

Flux生態(tài)系統(tǒng)正在使用許多聚焦于ML的工具擴展Julia的編譯器,包括gradients、CUDA內核編譯、自動批處理以及對TPU等新硬件的支持。

所有這些項目都擁有巨大的潛力,但團隊認為Julia更有優(yōu)勢。

本文探討了團隊如何使用Julia重新思考ML工具,并對現代ML工具需要做的工作提供一些見解。

Flux加持,Julia更適于機器學習

我們需要一種語言來編寫可微算法,而Flux使得Julia成為了這樣的一門語言。Julia專為數學和數值計算而設計,非常適合表達ML算法。同時,它在編譯器中融合了現代設計和新思想,更容易滿足最前沿ML的高性能需求。

在典型的框架中,所有的內容需要用幾十萬行的C++代碼來堆砌,而Flux僅僅是幾千行簡單的Julia代碼。只需要一個用于gradient的包(Zygote.jl),一個用于支持GPU的包(CuArrays.jl),“撒”上一些輕便的功能,“烘烤”十五分鐘,便可彈出一個功能齊全的ML堆棧。

與其他下一代ML系統(tǒng)一樣,Flux致力于提供較為直觀的界面,并對任何類型的圖形構建或性能注釋采取強硬措施。

Julia支持Flux所有特性,包括控制流、數據結構和宏等。用戶可以在Jupyter notebook上交互式編程,并將高性能數字與便捷的繪圖、可視化做結合。

但Julia也想獲取傳統(tǒng)“靜態(tài)圖”框架的優(yōu)勢——零開銷的“源到源”AD、操作符融合、多GPU/分布式訓練和單二進制(single-binary)部署。

這該如何實現呢?需要直接從Julia編寫的語法中提取和分析“靜態(tài)圖”,這實際上是編譯器完全正常的工作。從某些角度來看,大多數ML系統(tǒng)問題都是經過深入研究的標準編譯器問題。使用編譯語言就足以解決許多問題,擴展編譯器是解決更多問題的最佳方法。

在此只介紹這個領域當前工作中的一個示例—即獲取梯度、編譯GPU和TPU以及自動批處理。

采用“梯度”

我們突破了反向模式微分(reverse-mode differentiation)的極限,將其視為一個語言級別的問題?,F有框架通過跟蹤(tracing)來實現這一點。引入了一種新的張量類型,它記錄了所執(zhí)行的所有基本數學操作,產生了一個圖形(或符號表達式),其中刪除了主機語言的控制流和數據結構。

然而,這帶來了一個困難的權衡:我們要么接受解釋器的開銷(eager execution),要么凍結用戶控制流,并限制可以構建的模型的種類(static graphs)。

相反,如果圖(graph)是Julia自身的語法呢?

將這個想法發(fā)揮到極致,我們構建了Zygote,它直接在SSA形式的IR上工作,并支持控制流,遞歸,數據結構和宏等語言功能。

然后,我們可以通過LLVM之類的編譯器生成的SSA形式的伴隨代碼,并將傳統(tǒng)編譯器優(yōu)化的所有好處應用于我們的前向和反向傳遞。

此外,這種方法為擴展該編譯器基礎結構提供了機會,可以使用更高級和特定于域的優(yōu)化,例如內核融合和編譯到TPU等加速器。 Swift for TensorFlow和Myia開發(fā)人員在源到源AD技術的復興中正在探索類似的方法。

Julia用于此任務的一個關鍵優(yōu)勢是它可用于實現基本數值庫,如微分方程求解器或優(yōu)化庫; 這巧妙地解決了ML社區(qū)日益增長的需求,研究人員通過高性能代碼(如光線跟蹤器和物理引擎)反向傳播,但gradient仍必須在C ++中手動實現。

相比之下,由于Julia的實施是用Julia編寫的,所以從ODE到金融定價模型(financial pricing model)的所有內容都可以輕松地進行區(qū)分。 將這些強大的工具帶入模型是深度學習真正成為可微分編程的地方。

為GPU編寫Julia

GPU編程是現代ML的重要組成部分??蚣茉趦炔刻峁﹥群?,但是用戶只能看到有限的一組數學運算,不能直接對GPU進行編程。相比之下,Julia中的GPU編程一直是一流的CUDA內核(可以很好地編寫并從腳本或筆記本中運行)。

一個簡單的向量加法核看起來與CUDA C等價。

functionkernel_vadd(a,b,c)i=(blockIdx().x-1)*blockDim().x+threadIdx().xc[i]=a[i]+b[i]returnend

但是,Julia的類型特化(type specialization)可以在GPU上實現一組強大的附加抽象。例如,上面的代碼并不局限于密集的浮點數組,而是可以給出稀疏的復數數組。

Julia on TPUs

谷歌最近開放了他們的云TPU使用的XLA IR,使得ML以外的其他框架和用戶都可以利用這個重量級硬件。 XLA功能強大但有限:它無法運行Python解釋器,當然也沒有良好的性能。 然后框架最終處于與gradient相似的位置,只能使用程序跟蹤來撬開Python,最終得到一個快速但更有限的ML語言。

而我們只需要從已經編寫的Julia程序中提取“靜態(tài)圖”并將其直接編譯到XLA,從而允許Julia本身在TPU上運行。(實際上,這只是Julia通常編譯過程的一個簡單擴展,該編譯過程從程序中提取盡可能大的“靜態(tài)子圖”,然后將它們發(fā)送到LLVM。)

這使我們可以充分利用Julia語言的表現力,包括 控制流,遞歸,多調度,高階函數,強大的數據結構和抽象,自定義數字類型,以及現有的包,如微分方程求解器和線性代數例程。所有這些工作都是在TPU中使用高性能收縮陣列引擎的同時進行的。

自動Batching

為了從這些加速器中獲得最大收益,批處理程序通常會同時將前向和反向傳遞應用于多個訓練示例。在一些簡單的情況下,比如卷積網絡,通過將10張圖像按照額外的批處理維度連接起來來處理這個問題是很簡單的。但是在處理各種結構的輸入(如樹或圖)時,這項任務變得更加困難。

大多數研究人員通過手工批處理代碼來解決這一問題。針對不同的框架(DyNet、TensorFlow Fold)提出了不同的解決方案,它們在可能的情況下嘗試將一些高級操作批處理在一起,但是這些操作通常要么有自己的可用性問題,要么無法實現手工編寫的代碼的性能。

我們認為這個問題與單程序多數據(SPMD)編程的問題是相同的,后者已經被語言和編譯器社區(qū)研究了幾十年,并且在最近的批處理方法(如matchbox)中變得很明顯。實際上,它與GPU內部使用的并行模型非常相似,并且已經實現為CPUSIMD單元的編譯器變換。

從這項工作中獲得靈感,我們正在Julia中實現相同的轉換,為標量SIMD單元和模型級批處理提供SPMD編程。這使我們能夠實現在單個示例上編寫簡單代碼的理想,同時仍然在現代硬件上獲得最佳性能。

總結

我們認為,機器學習的未來取決于語言和編譯技術,特別是擴展新的或現有的語言,以滿足ML研究的高要求。這不僅對ML社區(qū)有好處,對一般的數值編程也有好處;能夠很好地支持差異化、向量化和外來硬件的語言將足以推動科學的許多進步。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯系本站處理。 舉報投訴
  • 編譯器
    +關注

    關注

    1

    文章

    1673

    瀏覽量

    51999
  • 機器學習
    +關注

    關注

    67

    文章

    8567

    瀏覽量

    137289

原文標題:Julia官宣:為機器學習構建一種語言和編譯器

文章出處:【微信號:AI_era,微信公眾號:新智元】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    深度剖析ML610Q431/ML610Q432:8位內置LCD驅動的微控制器

    深度剖析ML610Q431/ML610Q432:8位內置LCD驅動的微控制器 公司變更說明 2020年10月1日,LAPIS Semiconductor實施了公司拆分,成立了LAPIS
    的頭像 發(fā)表于 04-15 11:40 ?180次閱讀

    ML610Q428/ML610Q429 8位微控制器:性能與應用解析

    ML610Q428/ML610Q429 8位微控制器:性能與應用解析 在電子設備不斷發(fā)展的今天,微控制器作為核心部件,其性能和功能對于設備的整體表現起著至關重要的作用。今天我們要探討的是 LAPIS
    的頭像 發(fā)表于 04-15 11:40 ?181次閱讀

    ML610Q407/ML610Q408/ML610Q409 8位微控制器:特性、參數與應用指南

    ML610Q407/ML610Q408/ML610Q409 8位微控制器:特性、參數與應用指南 公司變更說明 2020年10月1日,LAPIS Semiconductor Co., Ltd. 進行了
    的頭像 發(fā)表于 04-15 11:40 ?190次閱讀

    LAPIS ML610Q482P 8位微控制器:設計與應用的理想之選

    LAPIS ML610Q482P 8位微控制器:設計與應用的理想之選 在電子設計領域,選擇款合適的微控制器對于項目的成功至關重要。LAPIS SEMICONDUCTOR的ML610Q482P 8位
    的頭像 發(fā)表于 04-15 09:40 ?434次閱讀

    ML610Q438/ML610Q439 8位微控制器深度剖析

    ML610Q438/ML610Q439 8位微控制器深度剖析 、概述 在電子設計領域,高性能、低功耗的微控制器直是工程師們的理想之選。LAPIS SEMICONDUCTOR的
    的頭像 發(fā)表于 04-15 09:40 ?455次閱讀

    LAPIS SEMICONDUCTOR ML610Q435/ML610Q436:高性能8位微控制器的卓越之選

    LAPIS SEMICONDUCTOR ML610Q435/ML610Q436:高性能8位微控制器的卓越之選 在電子設計領域,選擇款合適的微控制器對于項目的成功至關重要。LAPIS
    的頭像 發(fā)表于 04-15 09:30 ?417次閱讀

    如何使用keil C51生成個可以ISP的用戶程序

    使用芯片ML51EB9AE,LDROM 4K,使用新唐提供的ISP_UART0,生成的用戶bin文件加載后無法運行。請問用戶bin在編譯的時候需要做一些地址偏移么?如何進行地址偏移
    發(fā)表于 01-25 21:49

    BGSA403ML10:低電阻天線調諧開關的卓越之選

    BGSA403ML10:低電阻天線調諧開關的卓越之選 在電子工程師的日常工作中,天線調諧開關的選擇至關重要,它直接影響著整個射頻系統(tǒng)的性能。今天,我們就來深入了解款優(yōu)秀的低電阻天線調諧開關
    的頭像 發(fā)表于 12-21 11:25 ?837次閱讀

    Amphenol FCI Basics MicroSpaceXS? 提取工具解析

    Amphenol FCI Basics MicroSpaceXS? 提取工具解析 在電子工程師的日常工作中,線束返工是個常見的任務。而要高效、安全地完成線束返工,款合適的提取
    的頭像 發(fā)表于 12-11 16:00 ?627次閱讀

    嵌入式開發(fā)工具版本的選擇策略

    ,很多時候,還會親自下載安裝嘗鮮。 新版本有時候會引入一些bug,所以用新版本做項目定要【慎重】,并不定完全適合你的項目。 軟件工具是否需要
    發(fā)表于 11-25 06:11

    Anritsu安立ML2487A射頻功率計:精準功率測量的可靠之選

    與實驗室技術人員進行射頻功率測量的理想工具。 為確保此類精密儀器長期保持卓越的測量性能,專業(yè)的校準與維護支持至關重要。 深圳市寶安區(qū)沙井方豐瑞儀器設備經營部 在射頻測試設備服務領域具備專業(yè)能力,可為ML2487A用戶提供全面的技
    的頭像 發(fā)表于 11-20 10:33 ?743次閱讀
    Anritsu安立<b class='flag-5'>ML</b>2487A射頻功率計:精準功率測量的可靠之選

    AT_DEVICE支持ML307嗎?

    這個到底支不支持ML305 ML307,圖形界面有 ,但是保存配置后并沒有這個文件,如果沒有就在介紹上刪掉吧,浪費天時間加這個東西
    發(fā)表于 09-11 07:42

    4G網絡AT模塊:ml307A 總是連接失敗,為什么?

    使用 AT client 連接 ml307A 4G網絡,在多個地方使用網絡,然后就經常出現連接失敗或關閉失?。? [E/at.skt.ml307] ml307 device(ml
    發(fā)表于 09-11 07:05

    利用超微型 Neuton ML 模型解鎖 SoC 邊緣人工智能

    應用。 為什么選擇 Neuton 作為開發(fā)人員,在產品中使用邊緣人工智能的兩個最大障礙是: ML 模型對于您所選微控制器的內存來說太大。 創(chuàng)建自定義 ML 模型本質上是個手動過程,需要
    發(fā)表于 08-31 20:54

    普迪飛 | AI預測建模工具,釋放AI/ML的強大潛力!

    半導體行業(yè)始終引領著變革性技術革新的浪潮,驅動制造流程的復雜性不斷升級,從而延長了產品上市時間,增加了研發(fā)成本,并且導致問題出現時出現代價昂貴的延誤。半導體制造商們在應對重重挑戰(zhàn)時,全面預測生產
    的頭像 發(fā)表于 08-19 13:53 ?543次閱讀
    普迪飛 | AI預測建模<b class='flag-5'>工具</b>,釋放AI/<b class='flag-5'>ML</b>的強大潛力!
    福州市| 资兴市| 泗阳县| 遂宁市| 布拖县| 平果县| 涡阳县| 盘锦市| 湾仔区| 沐川县| 锡林浩特市| 眉山市| 中卫市| 新宁县| 塔河县| 普格县| 福海县| 河津市| 怀宁县| 银川市| 安吉县| 大同市| 靖安县| 鄄城县| 边坝县| 西贡区| 平武县| 新邵县| 宝山区| 岳阳县| 江永县| 南汇区| 裕民县| 安塞县| 屯昌县| 南阳市| 辽宁省| 基隆市| 盐源县| 普洱| 鄂伦春自治旗|