如何防止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個贊
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

汪汪一只貓
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
2)分配固定內存:
40%
config = tf.ConfigProto()config.gpu_options.per_process_gpu_memory_fraction = 0.4session = tf.Session(config=config, ...)
注:
添加回答
舉報
0/150
提交
取消