Как Хоровод координирует обучение?

Я пытаюсь научиться обучать распределенную модель Keras и найти horovod, я создал кластер Google Cloud Kubernetes (GKE) и установил Kubeflow с mpi-оператором и драйверами nvdia.

Я попытался запустить образец https://github.com/uber/horovod/blob/master/examples/keras_mnist_advanced.py

Я создал образ Docker с таким определением:

FROM uber/horovod:0.15.2-tf1.12.0-torch1.0.0-py3.5

# Temporary fix until Horovod pushes out a new release.
# See https://github.com/uber/horovod/pull/700
RUN sed -i '/^NCCL_SOCKET_IFNAME.*/d' /etc/nccl.conf


RUN mkdir /home/mnist
WORKDIR /home/mnist
ADD keras_mnist_advanced.py /home/mnist

RUN ldconfig /usr/local/cuda/lib64/stubs

CMD mpirun \
 python keras_mnist_advanced.py

подтолкнул его в репозиторий проекта и заставил его работать со следующим Yaml

apiVersion: kubeflow.org/v1alpha1
kind: MPIJob
metadata:
  name: keras-mnist-1
spec:
  replicas: 3
  template:
    spec:
      containers:
      - image: us.gcr.io/$ProjectName/keras-mnist:1.0
        name: keras-mnist

Это запускает 3 рабочих и запускает, сохраняет контрольные точки только на worker-0, все хорошо, но журналы действительно смущают меня,

Я получаю 3 строки журналов (одна на одного работника)

I  x_train shape: (60000, 28, 28, 1)

I  60000 train samples

I  10000 test samples

I  x_train shape: (60000, 28, 28, 1)

I  60000 train samples

I  10000 test samples

I  x_train shape: (60000, 28, 28, 1)

I  60000 train samples

I  10000 test samples

I  Epoch 1/24

I  Epoch 1/24

I  Epoch 1/24
...
2019-02-09 17:48:19.763 VET Epoch 24/24
2019-02-09 17:48:19.763 VET Epoch 24/24
2019-02-09 17:48:19.763 VET Epoch 24/24

2019-02-09 17:49:27.756 VET Using TensorFlow backend.
2019-02-09 17:49:27.756 VET Test loss: 0.01727276442445009
2019-02-09 17:49:27.756 VET Test accuracy: 0.994

2019-02-09 17:49:27.756 VET Using TensorFlow backend.
2019-02-09 17:49:27.756 VET Test loss: 0.01727276442445009
2019-02-09 17:49:27.756 VET Test accuracy: 0.994

2019-02-09 17:49:27.756 VET Using TensorFlow backend.
2019-02-09 17:49:27.756 VET Test loss: 0.01727276442445009
2019-02-09 17:49:27.756 VET Test accuracy: 0.994

Я не понимаю, работает ли модель 24 эпохи на каждого работника, и каждая из них заканчивается "3 моделями" или работает 24 эпохи между 3 и объединяет результаты.

Может кто-нибудь объяснить, как на самом деле работает horovod и могу ли я что-то сделать, чтобы он лучше координировался и воспользовался ресурсами?

Как я могу извлечь одну модель в конце?

0 ответов

Другие вопросы по тегам