這篇文章主要為大家展示了keras如何用多gpu并行運(yùn)行,內(nèi)容簡而易懂,希望大家可以學(xué)習(xí)一下,學(xué)習(xí)完之后肯定會(huì)有收獲的,下面讓小編帶大家一起來看看吧。

一、多張gpu的卡上使用keras
有多張gpu卡時(shí),推薦使用tensorflow 作為后端。使用多張gpu運(yùn)行model,可以分為兩種情況,一是數(shù)據(jù)并行,二是設(shè)備并行。
二、數(shù)據(jù)并行
數(shù)據(jù)并行將目標(biāo)模型在多個(gè)設(shè)備上各復(fù)制一份,并使用每個(gè)設(shè)備上的復(fù)制品處理整個(gè)數(shù)據(jù)集的不同部分?jǐn)?shù)據(jù)。
利用multi_gpu_model實(shí)現(xiàn)
keras.utils.multi_gpu_model(model, gpus=None, cpu_merge=True, cpu_relocation=False)
具體來說,該功能實(shí)現(xiàn)了單機(jī)多 GPU 數(shù)據(jù)并行性。 它的工作原理如下:
將模型的輸入分成多個(gè)子批次。
在每個(gè)子批次上應(yīng)用模型副本。 每個(gè)模型副本都在專用 GPU 上執(zhí)行。
將結(jié)果(在 CPU 上)連接成一個(gè)大批量。
例如, 如果你的 batch_size 是 64,且你使用 gpus=2, 那么我們將把輸入分為兩個(gè) 32 個(gè)樣本的子批次, 在 1 個(gè) GPU 上處理 1 個(gè)子批次,然后返回完整批次的 64 個(gè)處理過的樣本。
參數(shù)
model: 一個(gè) Keras 模型實(shí)例。為了避免OOM錯(cuò)誤,該模型可以建立在 CPU 上, 詳見下面的使用樣例。
gpus: 整數(shù) >= 2 或整數(shù)列表,創(chuàng)建模型副本的 GPU 數(shù)量, 或 GPU ID 的列表。
cpu_merge: 一個(gè)布爾值,用于標(biāo)識(shí)是否強(qiáng)制合并 CPU 范圍內(nèi)的模型權(quán)重。
cpu_relocation: 一個(gè)布爾值,用來確定是否在 CPU 的范圍內(nèi)創(chuàng)建模型的權(quán)重。如果模型沒有在任何一個(gè)設(shè)備范圍內(nèi)定義,您仍然可以通過激活這個(gè)選項(xiàng)來拯救它。
返回
一個(gè) Keras Model 實(shí)例,它可以像初始 model 參數(shù)一樣使用,但它將工作負(fù)載分布在多個(gè) GPU 上。
例子
import tensorflow as tf
from keras.applications import Xception
from keras.utils import multi_gpu_model
import numpy as np
num_samples = 1000
height = 224
width = 224
num_classes = 1000
# 實(shí)例化基礎(chǔ)模型(或者「模版」模型)。
# 我們推薦在 CPU 設(shè)備范圍內(nèi)做此操作,
# 這樣模型的權(quán)重就會(huì)存儲(chǔ)在 CPU 內(nèi)存中。
# 否則它們會(huì)存儲(chǔ)在 GPU 上,而完全被共享。
with tf.device('/cpu:0'):
model = Xception(weights=None,
input_shape=(height, width, 3),
classes=num_classes)
# 復(fù)制模型到 8 個(gè) GPU 上。
# 這假設(shè)你的機(jī)器有 8 個(gè)可用 GPU。
parallel_model = multi_gpu_model(model, gpus=8)
parallel_model.compile(loss='categorical_crossentropy',
optimizer='rmsprop')
# 生成虛擬數(shù)據(jù)
x = np.random.random((num_samples, height, width, 3))
y = np.random.random((num_samples, num_classes))
# 這個(gè) `fit` 調(diào)用將分布在 8 個(gè) GPU 上。
# 由于 batch size 是 256, 每個(gè) GPU 將處理 32 個(gè)樣本。
parallel_model.fit(x, y, epochs=20, batch_size=256)
# 通過模版模型存儲(chǔ)模型(共享相同權(quán)重):
model.save('my_model.h6')另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享名稱:keras如何用多gpu并行運(yùn)行-創(chuàng)新互聯(lián)
分享地址:http://www.chinadenli.net/article16/iipdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、建站公司、外貿(mào)建站、品牌網(wǎng)站制作、網(wǎng)站改版、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容