Jaki jest powód użycia parameter server w nauczaniu rozproszonym tensorflow?

Krótka wersja: czy nie możemy przechowywać zmiennych w jednym z workerów i nie używać serwerów parametrów?

Wersja długa: Chcę zaimplementować synchroniczne rozproszone uczenie się sieci neuronowych w TensorFlow. Chcę, aby każdy pracownik miał pełną kopię modelu podczas szkolenia.

Przeczytałem distributed TensorFlow tutorial i code Of distributed training imagenet i nie zrozumiałem dlaczego potrzebujemy serwerów parametrów.

I zobacz, że są one używane do przechowywania wartości zmiennych i replica_device_setter dba o to, aby zmienne były równomiernie rozłożone między serwerami parametrów (prawdopodobnie robi to coś więcej, nie byłem w stanie w pełni zrozumieć kodu).

Pytanie brzmi: dlaczego nie użyjemy jednego z workerów do przechowywania zmiennych? Czy osiągnę to, jeśli użyję

with tf.device('/job:worker/task:0/cpu:0'):

Zamiast

with tf.device(tf.train.replica_device_setter(cluster=cluster_spec)):

Dla Variaibles? Jeśli to działa to czy jest minus w porównaniu do rozwiązania z parametrami serwerów?

Author: kolesov93, 2016-09-18

2 answers

Użycie parametru server może zapewnić lepsze wykorzystanie sieci i pozwala skalować modele do większej liczby maszyn.

Konkretny przykład, załóżmy, że masz parametry 250M, obliczenie gradientu na każdym pracowniku zajmuje 1 sekundę, a jest 10 pracowników. Oznacza to, że każdy pracownik musi wysyłać / odbierać 1 GB danych do 9 innych pracowników co sekundę, co wymaga 72 Gb / s przepustowości sieci full duplex na każdym pracowniku, co nie jest praktyczne.

Bardziej realistycznie ty może mieć przepustowość sieci 10 Gb / s na pracownika. Możesz zapobiec wąskim gardłom sieci, używając parametru serwer podzielony na 8 maszyn. Każda maszyna robocza komunikuje się z każdym parametrem maszyny dla 1/8 parametrów.

 23
Author: Yaroslav Bulatov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-09-18 20:00:46

Inną możliwością jest użycie rozproszonej wersji TensorFlow, która automatycznie obsługuje dystrybucję i wykonywanie danych na wielu węzłach za pomocą MPI w backendzie.

Niedawno opracowaliśmy taką wersję w firmie MaTEx: https://github.com/matex-org/matex , oraz referat opisujący https://arxiv.org/abs/1704.04560

Wykonuje trening synchroniczny i zapewnia kilka równoległych formatów czytnika zbiorów danych.

Z przyjemnością Ci pomożemy, jeśli potrzebujesz pomocy!

 0
Author: Abhinav Vishnu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-04 01:37:41