Разница в производительности между Cloud Compute VM и платформой AI - PullRequest
0 голосов
/ 26 февраля 2020

У меня есть виртуальная виртуальная машина GCP, которая является n1-standard-16, с подключенными 4 графическими процессорами P100 и диском состояния solid для хранения данных. Я буду называть это «ВМ».

Ранее я использовал ВМ для обучения основанного на тензорном потоке CNN. Я хочу отойти от этого и использовать платформу AI, чтобы я мог одновременно выполнять несколько заданий. Однако я столкнулся с некоторыми проблемами.

Проблемы

Когда тренировка запускается на виртуальной машине, я могу установить размер пакета 400, и стандартное время завершения эпохи составляет около 25 минут.

Когда тренировка проводится на машине с платформой AI complex_model_m_p100, которая, как я полагаю, эквивалентна виртуальной машине, я могу установить максимальный размер пакета 128 и стандартное время для эпохи. до завершения 1 час 40 минут.

Различия: виртуальная машина против платформы AI

  • Виртуальная машина использует TF1.12, а платформа AI - TF1.15. Следовательно, есть разница в драйверах графического процессора (CUDA 9 против CUDA 10).

  • Виртуальная машина оснащена приводом состояния solid, что, я думаю, не относится к Машины на платформе AI.

Я хочу понять причину уменьшения размера партии и уменьшить время эпох на платформе AI до сопоставимых уровней с Glamdring. Кто-нибудь еще сталкивался с этой проблемой? Я работаю на правильном компьютере с платформой AI? Любой совет будет приветствоваться!

Ответы [ 2 ]

1 голос
/ 26 февраля 2020

Может быть куча вещей. Есть два способа сделать go, сделать виртуальную машину более похожей на платформу AI:

export IMAGE_FAMILY="tf-latest-gpu" # 1.15 instead of 1.12
export ZONE=...
export INSTANCE_NAME=...

gcloud compute instances create $INSTANCE_NAME \
  --zone=$ZONE \
  --image-family=$IMAGE_FAMILY \
  --image-project=deeplearning-platform-release \
  --maintenance-policy=TERMINATE \
  --metadata="install-nvidia-driver=True"

n, а затем подключить 4 графических процессора.

... или сделать внешний вид платформы AI больше похоже на виртуальную машину: https://cloud.google.com/ai-platform/training/docs/machine-types#gpus -and-tpus , потому что вы используете устаревшую машину прямо сейчас.

0 голосов
/ 05 марта 2020

После следования совету @Frederik Bode и создания реплики ВМ с установленным TF 1.15 и соответствующими драйверами мне удалось решить мою проблему.

Вместо того, чтобы использовать вызов функции multi_gpu_model в tf.keras, на самом деле лучше использовать распределенную стратегию и запустить модель в этой области.

Существует руководство, описывающее, как это сделать. это здесь .

По сути, теперь мой код выглядит следующим образом:

mirrored_strategy = tf.distribute.MirroredStrategy()

with mirrored_strategy.scope():

    training_dataset, validation_dataset = get_datasets()

    model = setup_model()

    # Don't do this, it's not necessary!
    #### NOT NEEDED model = tf.keras.utils.multi_gpu_model(model, 4)

    opt = tf.keras.optimizers.Adam(learning_rate=args.learning_rate)

    model.compile(loss='sparse_categorical_crossentropy',
              optimizer=opt,
              metrics=['accuracy'])

    steps_per_epoch = args.steps_per_epoch
    validation_steps = args.validation_steps

    model.fit(training_dataset, steps_per_epoch=steps_per_epoch, epochs=args.num_epochs,
                validation_data=validation_dataset, validation_steps=validation_steps)

Я настроил небольшой набор данных, чтобы быстро создать прототип.

При использовании одного графического процессора P100 время эпохи составляет в среднем 66 секунд.

При использовании 4 графических процессоров с использованием приведенного выше кода среднее время эпохи составило 19 секунд.

...