tensorboard ckpt pb 模型的输出节点_PyTorch 1.1.0发布,官方支持TensorBoard,还有更多性能提升!...
點(diǎn)擊上方“AI公園”,關(guān)注公眾號(hào),選擇加“星標(biāo)“或“置頂”
作者:Facebook
編譯:ronghuaiyang
導(dǎo)讀
Facebook剛剛發(fā)布了PyTorch的最新版本,PyTorch1.1.0,這是自從發(fā)布PyTorch1.0以來的又一個(gè)重大的更新。
Facebook剛剛發(fā)布了PyTorch的最新版本,PyTorch1.1.0,這是自從發(fā)布PyTorch1.0以來的又一個(gè)重大的更新,在這個(gè)版本中,最最顯眼的一個(gè)更新就是官方支持TensorBoard了,之前大家都是用的TensorBoardX,這次,終于可以光明正大的使用TensorBoard了,順便吐槽一下visdom,確實(shí)不如TensorBoard好用。
除了TensorBoard之外,其實(shí)還有不少重要的更新,下面給大家提供一些摘要,給大家先過目一遍,我列出了一些要點(diǎn),更多的內(nèi)容大家可以去看看原文。
注意:不再支持CUDA 8.0
重點(diǎn)
TensorBoard (試驗(yàn))
使用TensorBoard對(duì)可視化和模型調(diào)試提供一流的本地支持,這是一個(gè)用于檢查和理解訓(xùn)練運(yùn)行、張量和圖的web應(yīng)用程序套件。PyTorch現(xiàn)在支持TensorBoard通過一個(gè)簡單的 fromtorch.utils.tensorboardimportSummaryWriter命令來寫入日志。直方圖、嵌入、標(biāo)量、圖像、文本、圖形,以及更多東西都可以在訓(xùn)練過程中進(jìn)行可視化。目前,TensorBoard支持還處于試驗(yàn)階段。
[JIT] ScriptModules中的屬性
可以在 ScriptModule上分配屬性,方法是用torch.jit.Attribute指定類型。屬性類似于參數(shù)或緩沖區(qū),但可以是任何類型。當(dāng)你調(diào)用torch.jit.save時(shí),它們將與任何參數(shù)/緩沖區(qū)一起被序列化,因此它們是在模型中存儲(chǔ)任意狀態(tài)的好方法。
例子:
class Foo(torch.jit.ScriptModule): def __init__(self, a_dict): super(Foo, self).__init__(False) self.words = torch.jit.Attribute([], List[str]) self.some_dict = torch.jit.Attribute(a_dict, Dict[str, int]) @torch.jit.script_method def forward(self, input: str) -> int: self.words.append(input) return self.some_dict[input][JIT] 在TorchScript中支持字典和列表
TorchScript現(xiàn)在對(duì)列表和字典類型提供了健壯的支持。它們的行為很像Python列表和字典,支持大多數(shù)內(nèi)置方法,包括簡單的包含操作和 for…in的構(gòu)造方式。
[JIT] 在TorchScript中用戶自己定義類 (試驗(yàn))
對(duì)于更復(fù)雜的有狀態(tài)操作,TorchScript現(xiàn)在支持用 @torch.jit.script標(biāo)注類。使用這種方法的類可以像其他TorchScript模塊一樣在c++中jit編譯和加載。
@torch.jit.scriptclass Pair: def __init__(self, first, second) self.first = first self.second = second def sum(self): return self.first + self.secondDistributedDataParallel新功能和指南
nn.parallel.DistributedDataParallel:現(xiàn)在可以封裝multi-GPU模塊,可以在一臺(tái)服務(wù)器上使用模型并行,以及多臺(tái)服務(wù)器上使用數(shù)據(jù)并行。
突破性的改進(jìn)
- Tensor.set_: Tensor中的device不再可以通過Tensor.set_來改變了. 這通常發(fā)生在使用默認(rèn)CUDA設(shè)備設(shè)置Tensor,然后在另一個(gè)CUDA設(shè)備的Storage中交換Tensor時(shí)。相反,需要從一開始就在正確的設(shè)備上建立Tensor。
- 注意 lr_scheduler.step的順序更改了。
- torch.unique: 把sorted的默認(rèn)值改成了True.
- [JIT]重命名isTensor接口為isCompleteTensor.
- [JIT]去掉了GraphExecutor的python綁定.
- [C++]: many methods on 在Type上的許多方面現(xiàn)在不再退出了,可以使用函數(shù)或者Tensor的方法來起到同樣的效果.
- [C++]:TensorOptions的Backend構(gòu)造器不存在了. (18137).
- [C++, Distributed]: 去掉了c10dProcessGroup::getGroupRank也去掉了.
Tensors / dtypes
- torch.bool: 增加了對(duì)torch.bool類型以及該類型張量 (存儲(chǔ)為1-byte)的支持. 支持NumPy的轉(zhuǎn)化,但是操作現(xiàn)在是有限制的.
優(yōu)化器
- optim.lr_scheduler.CyclicLR: 支持循環(huán)學(xué)習(xí)率和動(dòng)量.
- optim.lr_scheduler.CosineAnnealingWarmRestarts: 新的學(xué)習(xí)率策略:帶熱身重啟的隨機(jī)梯度下降.
- 支持多個(gè)同步的學(xué)習(xí)率策略.
分布式
- torch.distributions: 現(xiàn)在支持多重繼承.
采樣
- quasirandom.SobolEngine: 新采樣器.
DistributedDataParallel
- nn.parallel.DistributedDataParallel: 現(xiàn)在支持帶無用參數(shù)的模型(例如控制流,比如adaptive softmax等等).
提升
- torch.min,torch.max,torch.median,torch.mode,torch.kthvalue,torch.symeig,torch.eig,torch.pstrf,torch.qr,torch.geqrf,torch.solve,torch.slogdet,torch.sort,torch.topk,torch.gels,torch.triangular_solve現(xiàn)在返回一個(gè)名稱元組來描述輸出.
- torch.empty(還有其他的構(gòu)造函數(shù)): 現(xiàn)在可以接受pin_memory參數(shù); 現(xiàn)在不用torch.Storage也可以就那些pin了.. .
- torch.histc: 現(xiàn)在支持CUDA了.
- torch.unique: 增加了return_counts.
- torch.logspace: 增加了指定對(duì)數(shù)底的功能.
- torch.set_printoptions: 增加對(duì)科學(xué)計(jì)數(shù)的支持 .
- torch.btrifact現(xiàn)在可以操作超過3維的tensor.
- torch.kthvalue: 支持CUDA.
- torch.abs: 支持uint8和int8類型.
- torch.stack,torch.cat: 支持CPU半精度tensors.
- torch.cross: 支持負(fù)維度.
- torch.lerp: 增加像支持Tensor一樣支持weight.
- torch.transpose: 和NumPy變得一樣了: 1-d和0-d數(shù)組都可以接受,返回原來一樣的數(shù)組.
- torch.linspace,torch.logspace現(xiàn)在可以使用steps=1和start!=end
- torch.cholesky: 把導(dǎo)數(shù)從三角形矩陣變成對(duì)稱矩陣.
- torch.lerp: 提升了數(shù)值穩(wěn)定性.
- torch.logdet,torch.slogdet: 提升了數(shù)值精度.
- Tensor.__contains__現(xiàn)在支持了.
- Tensor.fill_和torch.zeros在CPU上支持半精度.
- Tensor.resize_as_,Tensor.view: 在CPU上支持半精度.
- Tensorindexing: 允許通過NumPy布爾值來進(jìn)行索引.
- nn.EmbeddingBag: 支持半精度密集后端.
- nn.Embedding: 修改了密集嵌入來和雙后端一起使用.
- nn.MaxPool1d: 允許列表和元組作為output_size輸入.
- nn.CTCLoss: 通過zero_infinity參數(shù)可以支持對(duì)無限的損失置零.
- nn.Dropout: 支持在eval時(shí)使能.
- nn.MSELoss: 對(duì)不合法的廣播進(jìn)行告警.
- nn.Module.load_state_dict: 增加兩個(gè)返回值missing_keys和unexpected_keys.
- nn.parallel.data_parallel: 強(qiáng)制設(shè)備匹配device_ids.
- torch.device: 過去只接受設(shè)備好的地方,現(xiàn)在都可以用這個(gè)了.
- dtype.int8這個(gè)類型的tensors現(xiàn)在可以轉(zhuǎn)換為NumPy數(shù)組了.
- nn.functional.gumbel_softmax: 使用dim參數(shù)運(yùn)行多個(gè)維度的輸入.
- nn.functional.cosine_similarity: 提高了精度.
- torch.autograd: 不再保存不需要的輸入,提高了內(nèi)存效率.
- torch.autograd.profiler: 增加了自身的CPU時(shí)間,總的CPU時(shí)間.
- DataLoader: 支持接受一個(gè)用戶自定義的內(nèi)存pinning函數(shù).
- DataLoader: 在EINTR重試libshm .
- DataLoader: 修改了使用pin_memory和PackedSequence的一個(gè)問題.
- data.utils.collate,data.utils.pin_memory: 現(xiàn)在可以保存名字元組.
- 在許多的索引錯(cuò)誤情況下,使用 IndexError代替RuntimeError.
- 在CPU上支持索引 torch.float16tensor.
- 在inplace操作上增加(有限的)錯(cuò)誤檢測.
- utils.checkpoint.checkpoint: 支持None作為參數(shù) .
- torch.autograd:為one of the variables neededforgradient computation has been modifiedbyan inplace operation異常增加更多的信息.
- cuda.synchronize: 增加一個(gè)設(shè)備參數(shù).
- cuda.reset_max_memory_*: 現(xiàn)在支持了.
- distributions.Independent: 現(xiàn)在可以計(jì)算KL散度了.
- torch.distributed.new_group: 現(xiàn)在支持覆蓋默認(rèn)的backend.
性能
重點(diǎn)
- nn.BatchNormCPU推理速度提升了最高19倍.
- nn.AdaptiveAvgPool: size=1時(shí)通常可以加速30倍.
- nn.EmbeddingBagCPU性能提升了4倍.
- Tensor.copy_: 對(duì)于大的tensor拷貝加速了2~3倍.
- torch.nonzero: 在CPU上現(xiàn)在比numpy塊2倍.
- 改進(jìn)用于為Pascal架構(gòu)和更新的GPU提升了緩存分配器的性能,Mask-RCNN的內(nèi)存利用率提高了10-20%。
- reduction functions: 對(duì)于某些大Tensor的情況下,加速了50-80%.
- [JIT]Graph fuser: 在廣播的存在下,更好地融合向后圖.
- [JIT]Graph fuser:batch_norm推理時(shí)的融合.
- [JIT]Graph fuser:layer_norm推理時(shí)的融合.
英文原文:https://github.com/pytorch/pytorch/releases
更多文章,請(qǐng)關(guān)注微信公眾號(hào):AI公園
與50位技術(shù)專家面對(duì)面20年技術(shù)見證,附贈(zèng)技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的tensorboard ckpt pb 模型的输出节点_PyTorch 1.1.0发布,官方支持TensorBoard,还有更多性能提升!...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: centos 安装jdk_CentOS
- 下一篇: oraclf 复杂查询练习_SQL复杂查