TVM優化原理學習

2021-10-07 14:58:18 字數 620 閱讀 4818

tvm對於神經網路的優化主要有兩部分,計算圖優化和運算元優化,下面分開說明。

計算圖優化

例如運算元融合,常量傳播等。這一步是在ir層面完成,現在tvm是使用relay ir來描述計算圖。優化的過程蘊含在relay.build中,參考

op運算元優化

對於乙個給定的計算問題,該如何對映到後端硬體上呢?tvm的方案是張量表示式,schedule + auto-tuning。對於乙個給定的計算,會有很多種實現方式,每一種實現方式稱為乙個schedule。例如gemm計算中,矩陣的分塊大小,資料預取步長等等。我們要做的就是在所有schedule中,找到效能表現最好的schedule。

這裡就有很多問題,比如給定的計算問題該怎麼描述呢?對應的解決是tvm的張量表示式,可以更好的體現計算的資料特性。

再比如該如何確定出不同的schedule呢?

再比如,乙個很重要的問題是,可能有billion量級的schedule,每個schedule都嘗試的話,用時肯定是不可接受的。所以就有了autotvm這樣基於machine learning的搜尋方式,可能使用gbdt來進行決策,減小搜尋空間。

Traceroute原理學習

traceroute 可以讓我們看到 ip資料報從一台主機傳到另一台主機所經過的路由。曾經介紹過 ip記錄路由的選項 rr,為什麼不使用這個選項而另外開發乙個新的應用程式 traceroute呢?原因有三 其一,並不是所有的路由器都支援記錄路由這個選項 其二,記錄路由一般是單向的選項,傳送端設定了該...

Spring原理學習

簡介 spring 框架是乙個分層架構,由 7 個定義良好的模組組成。spring 模組構建在核心容器之上,核心容器定義了建立 配置和管理 bean 的方式。組成 spring 框架的每個模組 或元件 都可以單獨存在,或者與其他乙個或多個模組聯合實現。每個模組的功能如下 核心容器 核心容器提供 sp...

Mysql 原理學習

7 27 2 併發控制和鎖的概念 併發會 有可能產生 資料髒讀 多個操作修改 同乙個資料時,產生髒資料。解決併發問題的解決方案 鎖的機制 1 共享鎖 2 排它鎖 讀鎖和寫鎖 select 時 加讀鎖,其他的select 操作可以讀取,但是不能修改 update 時 加寫鎖,其他的 操作不了。鎖的粒度...