Używam Keras z tensorflow jako zaplecza. Mam jeden skompilowany/wyszkolony model.Keras + Tensorflow: Prognozy dla wielu procesorów graficznych
Moja pętla przewidywania jest wolna, więc chciałbym znaleźć sposób na zrównoleglenie wywołań predict_proba
, aby przyspieszyć działanie. Chciałbym wziąć listę partii (danych), a następnie według dostępnego gpu, uruchomić model.predict_proba()
nad podzestawem tych partii.
Zasadniczo:
data = [ batch_0, batch_1, ... , batch_N ]
on gpu_0 => return predict_proba(batch_0)
on gpu_1 => return predict_proba(batch_1)
...
on gpu_N => return predict_proba(batch_N)
wiem, że jest to możliwe w czystej Tensorflow przypisać do danego ops GPU (https://www.tensorflow.org/tutorials/using_gpu). Jednak nie wiem, w jaki sposób przekłada się to na moją sytuację, odkąd zbudowałem/skompilowałem/wyszkoliłem mój model za pomocą api Keras'a.
Myślałem, że może potrzebowałem po prostu użyć modułu wieloprocesorowego Pythona i rozpocząć proces na Gpu, który działałby pod numerem predict_proba(batch_n)
. Wiem, że jest to teoretycznie możliwe, biorąc pod uwagę inne stanowisko SO: Keras + Tensorflow and Multiprocessing in Python. Jednak nadal pozostawia mi dylemat polegający na tym, że nie wiem, jak właściwie "wybrać" gpu do obsługi procesu.
Moje pytanie sprowadza się do: w jaki sposób można przeprowadzić jeden rzutowania równoległego dla jednego modelu w Kerasie na wielu procesach gpusowych, używając Tensorflow jako zaplecza Keras?
Dodatkowo jestem ciekawy, czy podobne równoległości do przewidywania jest możliwe tylko z jednym gpu.
Przykład wysokopoziomowego opisu lub kodu byłby bardzo doceniany!
Dzięki!
Po szkoleniu i zapisaniu modelu jako json, po przeładowaniu modelu z json i predykcji, nie powiodło się, ponieważ nie wie, jak go naprawić lub jakie jest najlepsze rozwiązanie? – bygreencn
Tak, jest to znany problem z tym kodem. Po uruchomieniu tej funkcji - zmieniasz wykres. W ten sposób musisz zapisać tylko jedną gałąź, aby móc ją później załadować, aby przewidzieć na pojedynczym gpu – Temak
, dzięki której moja epoka zmieni się z 40 na 1000 sekund ... – AdAbsurdum