在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

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

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何給TPU-MLIR添加新的算子

jf_pJlTbmA9 ? 來(lái)源:jf_pJlTbmA9 ? 作者:jf_pJlTbmA9 ? 2023-08-18 11:29 ? 次閱讀

眾所周知,一個(gè)完整的模型實(shí)際上是由一系列算子組成的,所以如果我們想讓編譯器更通用,那么支持盡可能多的算子就是一個(gè)繞不開(kāi)的工作。

wKgZomTeybWAcNOYAAHzDXqnsac585.jpg

這樣無(wú)論算子是來(lái)自onnx、Caffe、PyTorch中的哪個(gè)框架,我們都可以在TPU-MLIR中找到對(duì)應(yīng)的算子來(lái)表達(dá)。

首先,要添加一個(gè)新的算子,我們就需要像前端轉(zhuǎn)換那一集里提到的先進(jìn)行算子定義。

wKgaomTeybiAVK57AANInlDchHo291.jpg

在 MLIR 中,您可以直接使用 TableGen 工具來(lái)完成定義工作,而不是自己實(shí)現(xiàn)所有包含每個(gè)算子的輸入、輸出和屬性的 cpp 模板。

在 TPU-MLIR 中,不同 dialect 的算子定義在不同的 td 文件中,這些算子將在編譯器 build 時(shí)注冊(cè)在相應(yīng)的 Dialect 下。

但是定義部分只是生成了模板,也就是說(shuō),我們的編譯器還不知道這個(gè)算子會(huì)對(duì)輸入張量做什么處理,所以我們需要通過(guò)實(shí)現(xiàn)相應(yīng)目錄下的 inference 方法來(lái)完成這部分工作。

wKgZomTeybqAM-D5AALgO5YwdwA540.jpg

在 Top dialect 中,除了 inference 接口,我們還需要為每個(gè)算子實(shí)現(xiàn)是 FLOPs 和 Shape 接口。 前者用于計(jì)算浮點(diǎn)運(yùn)算量,后者用于在輸出 shape 未知的情況下推理出輸出 shape。

在 MLIR 中,我們有 RankedTensorType 和 UnRankedTensorType。

這些接口的聲明是在 td 文件中被要求的,所以所有從 Top_Op 類派生的算子都需要聲明這些接口。

同樣,我們還必須為每個(gè) Tpu 算子實(shí)現(xiàn) inference 接口。 由于我們可以直接從 Top 算子獲取 FLOPs 和 Shape 信息,所以這里不需要再實(shí)現(xiàn)這些接口。

wKgaomTeybuAIERzAAJkc8XaXlA185.jpg

由于 Top 和 Tpu 算子是在 CPU 上做推理工作,所以有時(shí)我們會(huì)把推理工作交給 oneDNN,一個(gè)跨平臺(tái)的神經(jīng)網(wǎng)絡(luò)庫(kù),主要用于提高 CPU 上的推理性能。 不過(guò)這部分我就不再細(xì)說(shuō),如果大家有興趣的話,我們可以再做一個(gè)視頻來(lái)介紹一下。

所以如果大家想了解 oneDNN 的話,記得在視頻底下留言讓我們知道。

我們知道,TPU 算子最終會(huì)被用于不同硬件的代碼生成,所以對(duì)于這個(gè) Dialect 中的算子,需要為每個(gè)硬件實(shí)現(xiàn)額外的接口。

wKgZomTeyb2ACf7TAAI_YVs7gmE203.jpg

其中 LocalGenInterface 用于應(yīng)用了 LayerGroup 的算子,而 沒(méi)有應(yīng)用 LayerGroup 的算子則會(huì)使用 GlobalGenInterface。 所以你會(huì)看到所有的算子中都有 GlobalGenInterface,但只有其中一部分算子實(shí)現(xiàn)了 LocalGen。

在 GlobalGen 中,張量在 Global Memory 里,因此我們需要做的是準(zhǔn)備后端 API 所需的所有參數(shù),例如算子的屬性以及輸入和輸出張量的 Global 地址。

對(duì)于 LocalGen,張量位于 Local Memory 中,這意味著它已經(jīng)完成了將 tensor 從 Global 到 Local Mmeory 的搬運(yùn),因此我們需要調(diào)用 local 的后端 API。 此外,在量化的情況下,有時(shí)我們需要計(jì)算緩沖區(qū)大小以存儲(chǔ)中間結(jié)果。 這是因?yàn)橹虚g結(jié)果通常以更高位的數(shù)據(jù)類型存儲(chǔ)。 比如在 int8 量化中,我們需要先將計(jì)算結(jié)果存儲(chǔ)為 int16 或者 int32 數(shù)據(jù),然后再重新量化回 int8。

完成定義和接口實(shí)現(xiàn)工作后,還有一件需要完成的事情就是 lowering。

在 TopToTpu pass 中,我們需要應(yīng)用算子轉(zhuǎn)換的 Pattern set,這需要我們?yōu)槊總€(gè)硬件中的每個(gè)算子實(shí)現(xiàn)轉(zhuǎn)換 Pattern。

wKgZomTeyb-AKahuAAOVTr0hooM046.jpg

一共要做 3 步,首先,在頭文件中聲明 Lowering pattern。 接著,實(shí)現(xiàn)該 Pattern, 然后將其添加到 Pattern set 中。

如本例所示,我們?cè)趯?shí)現(xiàn) Pattern 部分主要要做的是將當(dāng)前的 Top op 替換為對(duì)應(yīng)的 Tpu op,并根據(jù)指定的量化模式設(shè)置該 op 的 Type。

至此,添加新算子的工作就完成了。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 模型
    +關(guān)注

    關(guān)注

    1

    文章

    3461

    瀏覽量

    49774
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1651

    瀏覽量

    49712
  • 算子
    +關(guān)注

    關(guān)注

    0

    文章

    16

    瀏覽量

    7318
  • pytorch
    +關(guān)注

    關(guān)注

    2

    文章

    808

    瀏覽量

    13668
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    yolov5量化INT8出錯(cuò)怎么處理?

    [Success]: tpuc-opt yolov5l_bm1684_int8_sym_tpu.mlir --mlir-disable-threading --strip-io-quant=\"
    發(fā)表于 01-10 06:40

    TPU-MLIR開(kāi)發(fā)環(huán)境配置時(shí)出現(xiàn)的各種問(wèn)題求解

    按照 TPU-MLIR 開(kāi)發(fā)指南進(jìn)行環(huán)境配置: 2.1. 代碼下載? 代碼路徑: https://github.com/sophgo/tpu-mlir 克隆該代碼后, 需要在Docker中編譯
    發(fā)表于 01-10 08:02

    FP16轉(zhuǎn)換報(bào)錯(cuò)的原因?

    /tpu-mlir_v1.2.8-g32d7b3ec-20230802/lib/libbackend_1684x.so(+0x3194f3) [0x7fafc50964f3] /workspace
    發(fā)表于 01-10 08:01

    【算能RADXA微服務(wù)器試用體驗(yàn)】+ GPT語(yǔ)音與視覺(jué)交互:2,圖像識(shí)別

    /download.sh 下載完成后,應(yīng)該可以看到文件夾中出現(xiàn)以下模型: ./models ├── BM1684 │├── yolov8s_fp32_1b.bmodel# 使用TPU-MLIR編譯,用于
    發(fā)表于 07-14 23:36

    TPU透明副牌.TPU副牌料.TPU抽粒廠.TPU塑膠副牌.TPU再生料.TPU低溫料

    清源塑膠經(jīng)營(yíng). 供應(yīng)TPU塑膠原料.副牌.再生顆粒料.TPU塑膠.TPU透明副牌. 再生粒子.白色.黑色.透明. 注塑料.擠出料. 壓延等等..聚醚. 脂肪料. 聚酯料.硬度70A--98A.
    發(fā)表于 11-21 17:21

    在“model_transform.py”添加參數(shù)“--resize_dims 640,640”是否表示tpu會(huì)自動(dòng)resize的?

    resize和letterbox的處理,在“TPU-MLIR入門(mén)快速指南.pdf”里的“使用TPU做前處理”里提到了“圖像裁剪”,沒(méi)看明白,能詳細(xì)解釋下的嗎?
    發(fā)表于 09-18 07:56

    TPU-MLIR中的融合處理

    TPU-MLIR中的融合處理
    的頭像 發(fā)表于 08-18 11:29 ?630次閱讀
    <b class='flag-5'>TPU-MLIR</b>中的融合處理

    如何使用TPU-MLIR進(jìn)行模型轉(zhuǎn)換

    TPU-MLIR之精度驗(yàn)證
    的頭像 發(fā)表于 08-21 10:41 ?949次閱讀
    如何使用<b class='flag-5'>TPU-MLIR</b>進(jìn)行模型轉(zhuǎn)換

    基于STE的QAT算法

    TPU-MLIR之量化感知訓(xùn)練(下)
    的頭像 發(fā)表于 08-21 10:46 ?825次閱讀
    基于STE的QAT算法

    TPU-MLIR之量化感知訓(xùn)練

    TPU-MLIR之量化感知訓(xùn)練(上)
    的頭像 發(fā)表于 08-21 10:47 ?976次閱讀
    <b class='flag-5'>TPU-MLIR</b>之量化感知訓(xùn)練

    TPU-MLIR量化敏感層分析,提升模型推理精度

    背景介紹TPU-MLIR編譯器可以將機(jī)器學(xué)習(xí)模型轉(zhuǎn)換成算能芯片上運(yùn)行的bmodel模型。由于浮點(diǎn)數(shù)的計(jì)算需要消耗更多的計(jì)算資源和存儲(chǔ)空間,實(shí)際應(yīng)用中往往采用量化后的模型(也稱定點(diǎn)模型)進(jìn)行推理。相比
    的頭像 發(fā)表于 10-10 10:17 ?1723次閱讀
    <b class='flag-5'>TPU-MLIR</b>量化敏感層分析,提升模型推理精度

    如何適配新架構(gòu)?TPU-MLIR代碼生成CodeGen全解析!

    背景介紹TPU-MLIR的CodeGen是BModel生成的最后一步,該過(guò)程目的是將MLIR文件轉(zhuǎn)換成最終的Bmodel。本文介紹了CodeGen的基本原理和流程,并記錄了針對(duì)BM1684X等新架構(gòu)
    的頭像 發(fā)表于 11-02 08:34 ?2092次閱讀
    如何適配新架構(gòu)?<b class='flag-5'>TPU-MLIR</b>代碼生成CodeGen全解析!

    深入學(xué)習(xí)和掌握TPU硬件架構(gòu)有困難?TDB助力你快速上手!

    TDB介紹TDB(TPUDeBugger)是針對(duì)TPU-MLIR編譯出來(lái)的BModel設(shè)計(jì)的一系列調(diào)試工具集合,可以支持對(duì)BModel反匯編、結(jié)構(gòu)可視化、單步執(zhí)行仿真等功能,使用方法靈活。能夠
    的頭像 發(fā)表于 12-22 08:33 ?1035次閱讀
    深入學(xué)習(xí)和掌握<b class='flag-5'>TPU</b>硬件架構(gòu)有困難?TDB助力你快速上手!

    如何高效處理LMEM中的數(shù)據(jù)?這篇文章帶你學(xué)會(huì)!

    WeightReorder是TPU-MLIR的一個(gè)pass(參考TPU-MLIR編譯流程圖),其完成了對(duì)部分常量數(shù)據(jù)的Layout變化和合并。本文介紹其中ConvlotionKernel
    的頭像 發(fā)表于 01-19 08:33 ?1063次閱讀
    如何高效處理LMEM中的數(shù)據(jù)?這篇文章帶你學(xué)會(huì)!

    基于TPU-MLIR:詳解EinSum的完整處理過(guò)程!

    EinSum介紹EinSum(愛(ài)因斯坦求和)是一個(gè)功能強(qiáng)大的算子,能夠簡(jiǎn)潔高效地表示出多維算子的乘累加過(guò)程,對(duì)使用者非常友好。本質(zhì)上,EinSum是一個(gè)算子族,可以表示多種基礎(chǔ)操作,如矩陣乘法
    的頭像 發(fā)表于 02-19 13:08 ?952次閱讀
    基于<b class='flag-5'>TPU-MLIR</b>:詳解EinSum的完整處理過(guò)程!
    主站蜘蛛池模板: 亚洲 欧美 校园 | 精品一区二区三区视频 | 国产在线综合网 | 成人网在线观看 | xxx亚洲日本 | 亚洲欧美色中文字幕 | 天堂网www在线观看 天堂网www在线资源中文 | 男女爱爱免费视频 | 69女poren60| 欧美日本色 | 四虎4444hu4影视最新地址 | 久久综合色88 | 人人干人人干人人干 | 日韩成人午夜 | 午夜无遮挡怕怕怕免费视频 | 国产成人优优影院 | 色中色资源 | 久久网免费视频 | 欧美黄色大片免费观看 | 天天射天天射 | 亚洲欧美视频在线播放 | 全部免费特黄特色大片农村 | 午夜影院在线观看免费 | 色噜噜狠狠狠狠色综合久一 | aa黄色毛片| 亚洲免费在线观看 | 午夜女上男下xx00xx00动态 | 韩国男女无遮挡高清性视频 | 狠狠狠狠操 | 久久精品视频热 | 亚洲欧洲日韩综合 | 国产三级在线播放 | 国产一级αv片免费观看 | 国产拍拍 | 久久免费公开视频 | 亚洲不卡视频在线观看 | 日本三级香港三级人妇 m | 男女爱爱视频免费 | 亚洲美女高清一区二区三区 | 国产特黄 | 婷婷色5月 |