亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何防止TensorFlow分配GPU內存的全部?

如何防止TensorFlow分配GPU內存的全部?

大話西游666 2019-06-27 16:50:48
如何防止TensorFlow分配GPU內存的全部?我在一個共享計算資源的環境中工作,也就是說,我們有幾臺服務器機器,每個服務器都配備了幾個Nvidia Titan X GPU。對于中小型型號,12 GB的土衛六X通常足以讓2-3人同時在同一個GPU上進行訓練。如果模型足夠小,單個模型不能充分利用土衛六X的所有計算單元,那么與一個接一個的訓練過程相比,這實際上會導致加速。即使在對GPU的并發訪問確實減慢了單個培訓時間的情況下,仍然可以靈活地讓多個用戶同時在GPU上運行。TensorFlow的問題是,默認情況下,當GPU啟動時,它會在GPU上分配全部可用內存。即使對于一個小的兩層神經網絡,我看到12 GB的土衛六X已經用完了。是否有辦法使TensorFlow只分配,例如,4GB的GPU內存,如果一個人知道這個數量足夠一個給定的模型?
查看完整描述

3 回答

?
千萬里不及你

TA貢獻1784條經驗 獲得超9個贊

可以將GPU內存的部分設置為在構造tf.Session通過一個tf.GPUOptions作為任擇條款的一部分config論點:

# Assume that you have 12GB of GPU memory and want to allocate ~4GB:gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.333)sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options))

這個per_process_gpu_memory_fraction作為在同一臺機器上的每個GPU上的進程將使用的GPU內存量的硬上限。目前,這個分數被統一地應用于同一臺機器上的所有GPU;沒有辦法在每個GPU的基礎上設置它。


查看完整回答
反對 回復 2019-06-27
?
汪汪一只貓

TA貢獻1898條經驗 獲得超8個贊

以下是這本書的摘錄Deep Learning with TensorFlow

在某些情況下,進程只需要分配可用內存的子集,或者只在進程需要時增加內存使用量。TensorFlow提供兩種配置會話中控制此操作的選項。第一個是allow_growth選項,它嘗試根據運行時分配的GPU內存,它開始分配很少的內存,并且隨著會話的運行和需要更多的GPU內存,我們擴展了TensorFlow進程所需的GPU內存區域。

1)允許增長:(更靈活)

config = tf.ConfigProto()config.gpu_options.allow_growth = Truesession = tf.Session(config=config, ...)

第二種方法是per_process_gpu_memory_fraction選項,該選項確定each應該分配可見的GPU。注:不需要釋放內存,這樣做甚至會使內存碎片惡化。

2)分配固定內存:

只分配40%每個GPU的總內存:

config = tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction = 0.4session = tf.Session(config=config, ...)

注:不過,只有當您真正想綁定TensorFlow進程上可用的GPU內存時,這才是有用的。


查看完整回答
反對 回復 2019-06-27
  • 3 回答
  • 0 關注
  • 2116 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號