日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

机器学习编译入门课程学习笔记第一讲 机器学习编译概述

發(fā)布時間:2023/12/31 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 机器学习编译入门课程学习笔记第一讲 机器学习编译概述 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 1. 課程簡介
  • 2. 本節(jié)課內容大綱
  • 3. 機器學習編譯的定義
  • 4. 機器學習編譯的目標
  • 5. 為什么要學習機器學習編譯?
  • 6. 機器學習編譯的核心要素
    • 6.1. 備注:抽象和實現
  • 7. 總結

1. 課程簡介

??該門課程是由XGBoost的作者陳天奇進行授課的。 從2022年6月18日正式開始(新鮮出爐的),每周講授一節(jié)課程。具體內容可參考鏈接:中文官網或者英文官網。如果有相關問題也可以在討論區(qū)進行留言:中文討論區(qū)、英文討論區(qū)。

課程目錄如下所示:

  • 機器學習編譯概述
  • 張量算子函數
  • 張量函數與整網模型的整合
  • 整合自定義計算庫
  • 自動化程序優(yōu)化
  • 與機器學習框架的整合
  • 自定義硬件后端
  • 自動張量化
  • 計算圖優(yōu)化:算子融合和內存優(yōu)化
  • 部署模型到服務環(huán)境
  • 部署模型到邊緣設備
  • ??客觀來說,本課程并不適合機器學習或者深度學習的初學者。但強烈推薦同學們先學習第一課:機器學習編譯概述。然后再決定是否進行更加深入的學習。

    ??本節(jié)課的slides鏈接如下:https://mlc.ai/summer22-zh/slides/1-Introduction.pdf;notes鏈接如下:https://mlc.ai/zh/chapter_introduction/。

    2. 本節(jié)課內容大綱

  • 什么是機器學習編譯?
  • 機器學習編譯的目標是什么?
  • 為什么要學習機器學習編譯?
  • 機器學習編譯的核心要素是什么?
  • 3. 機器學習編譯的定義

    ??機器學習編譯 (machine learning compilation, MLC) 是指,將機器學習算法從開發(fā)形態(tài),通過變換和優(yōu)化算法,使其變成部署形態(tài)。簡單來說,就是將訓練好的機器學習模型應用落地,部署在特定的系統(tǒng)環(huán)境之中的過程。

    #mermaid-svg-3XmHl123LLsU371Y {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-3XmHl123LLsU371Y .error-icon{fill:#552222;}#mermaid-svg-3XmHl123LLsU371Y .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-3XmHl123LLsU371Y .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-3XmHl123LLsU371Y .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-3XmHl123LLsU371Y .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-3XmHl123LLsU371Y .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-3XmHl123LLsU371Y .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-3XmHl123LLsU371Y .marker{fill:#333333;stroke:#333333;}#mermaid-svg-3XmHl123LLsU371Y .marker.cross{stroke:#333333;}#mermaid-svg-3XmHl123LLsU371Y svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-3XmHl123LLsU371Y .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-3XmHl123LLsU371Y .cluster-label text{fill:#333;}#mermaid-svg-3XmHl123LLsU371Y .cluster-label span{color:#333;}#mermaid-svg-3XmHl123LLsU371Y .label text,#mermaid-svg-3XmHl123LLsU371Y span{fill:#333;color:#333;}#mermaid-svg-3XmHl123LLsU371Y .node rect,#mermaid-svg-3XmHl123LLsU371Y .node circle,#mermaid-svg-3XmHl123LLsU371Y .node ellipse,#mermaid-svg-3XmHl123LLsU371Y .node polygon,#mermaid-svg-3XmHl123LLsU371Y .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-3XmHl123LLsU371Y .node .label{text-align:center;}#mermaid-svg-3XmHl123LLsU371Y .node.clickable{cursor:pointer;}#mermaid-svg-3XmHl123LLsU371Y .arrowheadPath{fill:#333333;}#mermaid-svg-3XmHl123LLsU371Y .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-3XmHl123LLsU371Y .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-3XmHl123LLsU371Y .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-3XmHl123LLsU371Y .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-3XmHl123LLsU371Y .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-3XmHl123LLsU371Y .cluster text{fill:#333;}#mermaid-svg-3XmHl123LLsU371Y .cluster span{color:#333;}#mermaid-svg-3XmHl123LLsU371Y div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-3XmHl123LLsU371Y :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}轉換開發(fā)形態(tài)部署形態(tài)

    ??開發(fā)形態(tài)是指我們在開發(fā)機器學習模型時使用的形態(tài)。典型的開發(fā)形式包括用 PyTorch、TensorFlow 或 JAX(主要指的是深度學習學習模型)等通用框架編寫的模型描述,以及與之相關的權重。

    ??部署形態(tài)是指執(zhí)行機器學習應用程序所需的形態(tài)。它通常涉及機器學習模型的每個步驟的支撐代碼、管理資源(例如內存)的控制器,以及與應用程序開發(fā)環(huán)境的接口(例如用于Android 應用程序的Java API)。


    ??不同的AI應用對應的部署環(huán)境是互不相同的。以下圖為例:電商平臺不可或缺的推薦系統(tǒng)算法通常是部署在云平臺(服務器)上;自動駕駛算法通常是部署在車輛上的專用計算設備;手機的各種APP以語音轉文字的輸入法為例,最終是部署在手機上的計算設備的。

    ??在進行機器學習模型部署時,不僅要考慮硬件系統(tǒng)環(huán)境,與此同時也需要考慮軟件環(huán)境(如操作系統(tǒng)環(huán)境、機器學習平臺環(huán)境等)。

    4. 機器學習編譯的目標

    ??機器學習編譯的直接目標包括兩點:最小化依賴和利用硬件加速。機器學習編譯的最終目的是實現性能(時間復雜度、空間復雜度)優(yōu)化。

    ??最小化依賴可以認為是集成(Integration)的一部分,提取出與應用相關的庫(刪除與應用無關的庫),從而減少應用的大小,達到節(jié)省空間的目的。

    ??利用硬件加速指的是利用硬件本身的特性進行加速??梢酝ㄟ^構建調用原生加速庫的部署代碼或生成利用原生指令(如 TensorCore)的代碼來做到這一點。

    5. 為什么要學習機器學習編譯?

    • 構建機器學習部署的解決方案。
    • 對現有機器學習框架形成更加深刻的理解。

    6. 機器學習編譯的核心要素

    • 張量 (Tensor) 是執(zhí)行中最重要的元素。張量是表示神經網絡模型執(zhí)行的輸入、輸出和中間結果的多維數組。

    • 張量函數 (Tensor functions) 神經網絡的“知識”被編碼在權重和接受張量和輸出張量的計算序列中。我們將這些計算稱為張量函數。值得注意的是,張量函數不需要對應于神經網絡計算的單個步驟。部分計算或整個端到端計算也可以看作張量函數。也就是說,不僅單個函數可以認為是張量函數,也可以把其中一部分(或者整個整體)看作是張量函數。


    ??下圖中舉了個實際的例子,第一個linear層和relu計算被折疊成一個linear_relu 函數,這需要有一個特定的linear_relu的詳細實現。

    6.1. 備注:抽象和實現

    ??對同樣的目標有不同顆粒度的表示。例如對linear_relu而言,既可以使用左邊兩個框圖進行表示,也可以用右邊的循環(huán)進行表示。

    ??我們使用抽象 (Abstraction)來表示我們用來表示相同張量函數的方式。不同的抽象可能會指定一些細節(jié),而忽略其他實現(Implementations)細節(jié)。例如,linear_relu 可以使用另一個不同的 for 循環(huán)來實現。

    ??抽象和實現可能是所有計算機系統(tǒng)中最重要的關鍵字。抽象指定“做什么”,實現提供“如何”做。沒有具體的界限。根據我們的看法,for 循環(huán)本身可以被視為一種抽象,因為它可以使用 python 解釋器實現或編譯為本地匯編代碼。

    ??機器學習編譯實際上是在相同或不同抽象下轉換和組裝張量函數的過程。我們將研究張量函數的不同抽象類型,以及它們如何協同工作以解決機器學習部署中的挑戰(zhàn)。

    ??在后續(xù)課程中分別會涉及到四種類型的抽象:

    • 計算圖
    • 張量程序
    • 庫(運行時)
    • 硬件專用指令

    7. 總結

    • 機器學習編譯的目標

      • 集成與最小化依賴
      • 利用硬件加速
      • 通用優(yōu)化
    • 為什么學習機器學習編譯

      • 構建機器學習部署解決方案
      • 深入了解現有機器學習框架
      • 為新興硬件建立軟件棧
    • 機器學習編譯的關鍵要素

      • 張量和張量函數
      • 抽象和實現是值得思考的工具

    總結

    以上是生活随笔為你收集整理的机器学习编译入门课程学习笔记第一讲 机器学习编译概述的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。