Apex 一鍵混合雙精度計算

2021-09-28 11:53:05 字數 1856 閱讀 4648

針對單一optimizer使能amp

對於單一optimizer,使能amp只需要以下修改兩部分即可:

1. **中optimizer之後新增:

optimizer = # ... some optimizer

from apex import amp

amp_handle = amp.init()

2. 修改**中反向迭代部分:

# ... do a bunch of stuff to compute a loss

loss.backward()

optimizer.step()

# ...finish the iteration

修改為# ... same as before

with amp_handle.scale_loss(loss, optimizer) as scaled_loss:

scaled_loss.backward()

optimizer.step()

# ... same as before

針對多optimizer使能amp

多optimizer使能amp相較單一optimizer複雜,需要顯性的warp多個optimizer,並處理多個loss的反向迭代,例如:

amp_handle = amp.init()

optimizer = amp_handle.wrap_optimizer(optimizer, num_loss=2)

optimizer.zero_grad()

loss1 = computeloss1(model)

with optimizer.scale_loss(loss1) as scaled_loss:

scaled_loss.backward()

loss2 = computeloss2(model)

with optimizer.scale_loss(loss2) as scaled_loss:

scaled_loss.backward()

optimizer.step()

amp新增自定義函式

在amp新增自定義函式的支援有兩種方法,分別使用function annotation或者函式顯性註冊如下所示:

對於自定義函式fru

from backend import frubackend

def fru(input, hidden, weight, bias):

# call to cuda code

frubackend(input, hidden, weight, bias)

使用function annotation

@amp.half_function

def fru(input, hidden, weight, bias):

使用顯性註冊

import backend

amp.register_half_function(backend, 'frubackend')

amp.init()

此處的function annotation有三種型別分別是:

類似顯性註冊也有對應三種方式,分別是:

amp.register_half_function(module, function_name)

amp.register_float_function(module, function_name)

amp.register_promote_function(module, function_name)

這裡需要注意的是,採用顯性註冊需要在amp.init()之前。

一鍵回家 Excel一鍵美化報表

報表做得太普通,怎麼美化?就像下面 excel一鍵美化報表,早點回家不加班,看這裡!具體操作 1 選中報表 2 同時按住ctr t,一鍵美化報表。備註 按住 ctrl t 一鍵美化報表!以上就是用excel一鍵美化報表的方法!動手試試吧小夥伴們!往期文章 1.excel自動記錄資料登記時間和修改時間...

ubuntu一鍵安裝LAMP 及一鍵解除安裝

一鍵安裝lamp服務 sudo tasksel install lamp server 一鍵解除安裝lamp sudo tasksel remove lamp server 注意 lamp linux apache mysql php 通過上面的命令解除安裝lamp時不免把linux系統本身的東西解...

C 一鍵關閉啟動服務,一鍵禁用服務

登錄檔操作 public class gf regreadwrite catch 設定路徑為keypath,鍵名為keyname的登錄檔鍵值為keyval static public bool setregval registrykey rootkey,string keypath,string k...