自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

用積分神經(jīng)網(wǎng)絡(luò)在一分鐘內(nèi)轉(zhuǎn)換DNN

譯文 精選
開發(fā) 前端
在本文中,我們將首先展示如何將4倍圖像的超分辨率EDSR模型轉(zhuǎn)換為INN,然后演示如何實(shí)現(xiàn)針對(duì)模型進(jìn)行結(jié)構(gòu)化修剪,并在完成了將INN轉(zhuǎn)換回離散的DNN,以實(shí)現(xiàn)高效的推理。

譯者 | 陳峻

審校 | 重樓

不知您是否聽說過積分神經(jīng)網(wǎng)絡(luò)(Integral Neural Networks,INN)。作為一種靈活的架構(gòu),它經(jīng)由一次性訓(xùn)練,無需任何微調(diào),便可被轉(zhuǎn)換為任意用戶指定的體積。由于聲波(例如:音樂)可以被任何所需的采樣率(也就是我們常說的:音質(zhì))進(jìn)行采樣,因此INN 可以動(dòng)態(tài)地改變各種數(shù)據(jù)和參數(shù)形狀(即:DNN質(zhì)量)。

上圖展示了INN的三種應(yīng)用。在推理過程中,我們可以根據(jù)不同的硬件或數(shù)據(jù)條件,來動(dòng)態(tài)改變網(wǎng)絡(luò)的體積。這種體積的減小往往是結(jié)構(gòu)化的,并且能夠自動(dòng)導(dǎo)致神經(jīng)網(wǎng)絡(luò)的壓縮和加速。

TheStage.ai團(tuán)隊(duì)在今年的IEEE/CVF CVPR會(huì)議上展示了他們的論文《積分神經(jīng)網(wǎng)絡(luò)(Integral Neural Networks)》。該論文被認(rèn)為是此次活動(dòng)中12 篇僅有的“有望獲獎(jiǎng)”的論文之一。作為一類新型的神經(jīng)網(wǎng)絡(luò),INN將連續(xù)參數(shù)和積分算子相結(jié)合,來表示各個(gè)基本層。在推理階段,INN通過連續(xù)權(quán)重的離散采樣,被轉(zhuǎn)換為普通的DNN表示。由于此類網(wǎng)絡(luò)的參數(shù)沿著過濾器和通道維度是連續(xù)的,因此這會(huì)導(dǎo)致結(jié)構(gòu)化的修剪(pruning),而無需僅通過維度的重新離散化,而進(jìn)行微調(diào)。

在下文中,我們將首先展示如何將4倍圖像的超分辨率EDSR(Enhanced Deep Residual Networks for Single Image Super-Resolution)模型轉(zhuǎn)換為INN的過程,然后演示如何實(shí)現(xiàn)針對(duì)模型的結(jié)構(gòu)化修剪。在完成了將INN轉(zhuǎn)換回離散的DNN后,我們通過將其部署到Nvidia GPU上,以實(shí)現(xiàn)高效的推理??偟恼f來,我們將按照如下順序展開討論:

  1. 簡(jiǎn)介INN
  2. 概述用于超分辨率任務(wù)的EDSR網(wǎng)絡(luò)
  3. 在一行代碼中,通過TorchIntegral框架應(yīng)用,獲取積分的EDSR
  4. 通過快速管道,實(shí)現(xiàn)無需INN微調(diào)的INN結(jié)構(gòu)修剪
  5. 在Nvidia GPU上部署已修剪的模型

首先,讓我們有一個(gè)感性認(rèn)識(shí)。上圖展示的是離散的EDSR特征圖。

而這張是則是INN EDSR的特征圖。很容易看出INN中的通道是被連續(xù)組織的。

無需微調(diào)的DNN修剪

雖然INN中的各個(gè)層面已被積分算子所取代,但是對(duì)于積分算子的實(shí)際評(píng)估,我們需要對(duì)輸入的信號(hào)進(jìn)行離散化,以便采用數(shù)值積分的方法。同時(shí),INN中的各個(gè)層次的設(shè)計(jì)方式是與離散化后的經(jīng)典DNN層(如:全連接或卷積)保持一致的。

上圖展示了積分全連接層評(píng)估的簡(jiǎn)要過程。

4倍圖像的超分辨率EDSR的修剪

在基于擴(kuò)散模型和Transformer的高端神經(jīng)網(wǎng)絡(luò)等架構(gòu)中,我們往往需要用到圖像超分辨率任務(wù)。它是一項(xiàng)被廣泛使用的計(jì)算機(jī)視覺任務(wù),往往被用在通過已知或未知的退化算子,來增強(qiáng)圖像。其典型應(yīng)用場(chǎng)景莫過于使用雙立方下采樣(Bicubic Downsampling),來作為退化算子的經(jīng)典超分辨率形式。由于EDSR 架構(gòu)包含了 ResNet(殘差神經(jīng)網(wǎng)絡(luò),目前被廣泛地用于各類深度學(xué)習(xí)問題)和最終的4倍上采樣塊,非常適合我們后續(xù)的演示,因此我們將重點(diǎn)關(guān)注4EDSR架構(gòu)。

上圖展示了EDSR的邏輯架構(gòu)。該架構(gòu)由一系列緊接著上采樣塊的殘差塊(Residual Blocks)所組成。此處的上采樣塊則是由多個(gè)卷積和上采樣(Upsample)層組成。

在上圖中,左側(cè)是:殘差塊的架構(gòu);而右側(cè)是:4倍超分辨率的上采樣塊。其中,每個(gè)上采樣層都有2倍的規(guī)模。

EDSR架構(gòu)的修剪細(xì)節(jié)

結(jié)構(gòu)化的修剪往往涉及刪除整個(gè)過濾器或通道,進(jìn)而對(duì)作為EDSR中主要構(gòu)建塊的殘差塊,產(chǎn)生獨(dú)特的影響。而在該架構(gòu)中,由于每個(gè)狀態(tài)都是通過向輸入添加Conv -> ReLU -> Conv塊來更新的,因此輸入和輸出信號(hào)必須具有相同數(shù)量的參數(shù)。那么通過創(chuàng)建修剪依賴關(guān)系圖,我們便可以在TorchIntegral框架中有效地管理這些。下圖展示了每個(gè)殘差塊的第二卷積,是如何形成單個(gè)組的。

也就是說,為了修剪殘差塊中的第二卷積,我們有必要修剪每個(gè)殘差塊中的所有第二卷積。當(dāng)然,為了更靈活的設(shè)置,我們實(shí)際上應(yīng)該在所有殘差塊中,修剪第一卷積的過濾器,從而實(shí)現(xiàn)對(duì)第二卷積通道的修剪。

EDSR模型轉(zhuǎn)換為INN EDSR

接著,為了實(shí)現(xiàn)針對(duì)預(yù)訓(xùn)練的DNN轉(zhuǎn)換,我們需要利用特殊的過濾器通道排列算法,進(jìn)一步平滑插值(interpolation)。此類排列算法不但能夠保留模型的質(zhì)量,而且會(huì)使得DNN的權(quán)重,看起來像是從連續(xù)函數(shù)中采樣出來的一樣。

上圖展示了從DNNINN 的轉(zhuǎn)換。我們使用著名的“旅行推銷員問題(Travelling Salesman Problem,即:給定一系列城市和每對(duì)城市之間的距離,求解訪問每一座城市一次并回到起始城市的最短回路。)”公式,來排列各個(gè)離散的權(quán)重。在完成排列后,我們將獲得更平滑的權(quán)重,同時(shí)它也保證了預(yù)訓(xùn)練DNN的質(zhì)量不會(huì)下降。具體請(qǐng)參見如下代碼段:

import torch
import torchintegral as inn
from super_image import EdsrModel

# creating 4x EDSR model
model = EdsrModel.from_pretrained("eugenesiow/edsr", scale=4).cuda()

# Transform model layers to integral.
# continous_dims and discrete dims define which dimensions
# of parameters tensors should be parametrized continuously
# or stay fixed size as in discrete networks.
# In our case we make all filter and channel dimensions
# to be continuous excluding convolutions of the upsample block.
model = inn.IntegralWrapper(init_from_discrete=True)(
 model, example_input, continuous_dims, discrete_dims
).cuda()

積分網(wǎng)格調(diào)整:DNN結(jié)構(gòu)化訓(xùn)練的后期修剪

所謂積分網(wǎng)格調(diào)整(Integration grid tuning),是指在SGD(隨機(jī)梯度下降)的優(yōu)化過程中,平滑地選擇參數(shù)張量(parameter tensors)的操作。其過濾器應(yīng)針對(duì)由用戶定義的數(shù)字,來進(jìn)行采樣。與上述過濾器和通道刪除方法不同,由INN生成的過濾器,可以通過插值操作,來組合多個(gè)離散過濾器。注意,INN在過濾器和通道維度的參數(shù)張量上,引入了軟按索引選擇(soft select-by-index)的操作。具體請(qǐng)參見如下代碼段:

# Set trainable gird for each integral layer
# Each group should have the same grid
# During the sum of continuous signals
# We need to sample it using the same set of points

for group in model.groups:
 new_size = 224 if 'operator' in group.operations else 128 
 group.reset_grid(inn.TrainableGrid1D(new_size))

# Prepare model for tuning of integration grid
model.grid_tuning()
# Start training
train(model, train_data, test_data)

由于積分網(wǎng)格調(diào)整是一種快速的優(yōu)化過程,可以在小型校準(zhǔn)集上進(jìn)行,因此其優(yōu)化結(jié)果便是已在結(jié)構(gòu)上壓縮了的DNN。我們?cè)趩晤w Nvidia A4000 上的測(cè)試表明:對(duì)完整的Div2k數(shù)據(jù)集的積分網(wǎng)格進(jìn)行調(diào)整,通常需要4分鐘。 那么,在四倍A4000上的分布式設(shè)置,就能夠幾乎實(shí)現(xiàn)4倍的加速,其優(yōu)化時(shí)間將僅為1分鐘。

如上圖所示,在實(shí)驗(yàn)中,我們發(fā)現(xiàn):500張圖片與包含4000張圖片的完整訓(xùn)練集 Div2k,所給出的結(jié)果是相同的。

性能

如果我們需要將修剪后的INN模型轉(zhuǎn)換為離散模型,則可以使用以下代碼行:

model = model.transform_to_discrete()
# then model can be compiled, for instance
# compilation can add an additional 1.4x speedup for inference
model = torch.compile(model, backend='cudagraphs')

當(dāng)輸入分辨率為64x64時(shí),我們便可以在RTX A4000上提供每秒幀數(shù)(FPS)了??梢姡衔纳傻?/span>INN模型可以被輕松轉(zhuǎn)換為離散模型,并被部署在任何NVIDIA GPU上。至此,已壓縮的模型幾乎實(shí)現(xiàn)了2倍的加速度。

如上圖所示,左側(cè)是4倍雙立方放大圖像;右側(cè)則是使用INN的經(jīng)50%壓縮的EDSR模型。下表展示了更詳細(xì)的對(duì)比:

模型

體積 FP16

FPS RTX A4000

PSNR(峰值信噪比)

EDSRorig.

75MB

170

30.65

INN EDSR 30%

52MB

230

30.43

INN EDSR 40%

45MB

270

30.34

INN EDSR 50%

37MB

320

30.25

小結(jié)

在上文中,我們簡(jiǎn)述了《積分神經(jīng)網(wǎng)絡(luò)》一文的基本成果:憑借著4倍EDSR模型的訓(xùn)練后修建,我們僅通過單行代碼和1分鐘的積分網(wǎng)格微調(diào),便實(shí)現(xiàn)了近2倍的加速度。針對(duì)上述話題,您可以通過查看如下資源,以獲取更多有關(guān)高效模型部署的信息與更新。

  1. INN項(xiàng)目站點(diǎn)--https://inn.thestage.ai/?ref=hackernoon.com
  2. INN 項(xiàng)目的Github資源--https://github.com/TheStageAI/TorchIntegral?ref=hackernoon.com
  3. 與本文相關(guān)的支持代碼--https://github.com/TheStageAI/TechBlog/tree/main/inn_edsr_grid_tuning_medium?ref=hackernoon.com

譯者介紹

陳峻(Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。

原文標(biāo)題:Unleashing 2x Acceleration for DNNs: Transforming Models with Integral Neural Networks in Just 1 Min,作者:thestage

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2017-03-30 19:28:26

HBase分布式數(shù)據(jù)

2018-07-31 16:10:51

Redo Undo數(shù)據(jù)庫數(shù)據(jù)

2017-02-21 13:00:27

LoadAverage負(fù)載Load

2020-05-21 19:46:19

區(qū)塊鏈數(shù)字貨幣比特幣

2018-06-26 05:23:19

線程安全函數(shù)代碼

2017-07-06 08:12:02

索引查詢SQL

2022-07-18 06:16:07

單點(diǎn)登錄系統(tǒng)

2016-09-12 17:28:45

云存儲(chǔ)應(yīng)用軟件存儲(chǔ)設(shè)備

2018-12-12 22:51:24

Java包裝語言

2020-07-09 07:37:06

數(shù)據(jù)庫Redis工具

2020-07-17 07:44:25

云計(jì)算邊緣計(jì)算IT

2011-02-21 17:48:35

vsFTPd

2015-11-12 10:32:40

GitHub控制系統(tǒng)分布式

2016-12-16 11:05:00

分布式互斥線程

2018-03-27 09:28:33

緩存策略系統(tǒng)

2021-08-06 08:50:45

加密貨幣比特幣區(qū)塊鏈

2020-06-11 08:04:12

WDMDWDMMWDM

2013-11-15 07:24:50

4G LTE圖解

2024-06-21 15:03:00

2009-12-02 17:21:19

Cisco路由器配置
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)