W jaki sposób można zaprogramować w bibliotece keras (lub tensorflow) szkolenie partycjonowania na wielu GPU? Powiedzmy, że jesteś w instancji Amazon ec2, która ma 8 procesorów graficznych i chciałbyś wykorzystać je wszystkie, aby trenować szybciej, ale twój kod dotyczy tylko jednego procesora lub karty graficznej.
python
deep-learning
tensorflow
keras
gpu
Hector Blandin
źródło
źródło
Odpowiedzi:
Z najczęściej zadawanych pytań dotyczących Keras:
https://keras.io/getting-started/faq/#how-can-i-run-a-keras-model-on-multiple-gpus
Poniżej znajduje się wklejony kod, aby umożliwić „równoległość danych”. Oznacza to, że każdy z twoich układów GPU przetwarza niezależnie inny podzbiór twoich danych.
Zauważ, że wydaje się, że jest to poprawne tylko dla backendu Tensorflow w momencie pisania.
Aktualizacja (luty 2018) :
Keras teraz akceptuje automatyczny wybór GPU za pomocą multi_gpu_model, więc nie musisz już kodować liczby gpus. Szczegóły w tym żądaniu Pull . Innymi słowy, włącza to kod, który wygląda następująco:
Ale mówiąc bardziej precyzyjnie , możesz trzymać się czegoś takiego:
Bonus :
Aby sprawdzić, czy naprawdę używasz wszystkich swoich układów GPU, szczególnie NVIDIA, możesz monitorować swoje użycie w terminalu, używając:
Referencje:
źródło
multi_gpu_model(model, gpus=None)
działa w przypadku, gdy jest tylko 1 GPU? Byłoby fajnie, gdyby automatycznie dostosowywał się do liczby dostępnych GPU.TensorFlow za pomocą procesorów graficznych
Oto przykładowy kod, w jaki sposób jest używany, więc dla każdego zadania określona jest lista z urządzeniami / urządzeniami:
tf będzie domyślnie używał GPU do obliczeń, nawet jeśli dotyczy CPU (jeśli jest obecny obsługiwany GPU). więc możesz po prostu zrobić pętlę for: „for d in ['/ gpu: 1', '/ gpu: 2', '/ gpu: 3' ... '/ gpu: 8',]:” oraz w „tf.device (d)” powinien obejmować wszystkie zasoby GPU instancji. Tak więc tf.device () będzie faktycznie używane.
Skalowanie szkolenia modelu Keras do wielu procesorów graficznych
W przypadku Keras za pomocą Mxnet niż args.num_gpus , gdzie num_gpus jest listą wymaganych GPU.
Poza tym ostatnio Horovod z otwartym źródłem Uber i myślę, że jest świetny:
Horowod
źródło
Zasadniczo możesz wziąć przykład z następującego przykładu. Wystarczy zaimportować keras, aby określić wartości zużycia procesora i GPU.
Następnie pasowałbyś do modelu.
Wreszcie, możesz zmniejszyć wartości zużycia, a nie pracę na górnych granicach.
źródło