Использование tensorflow с поддержкой VERBS без устройства infiniband

Меня интересует поддержка RDMA в tensorflow 1.15 для рабочих процессов и серверов параметров для прямой связи без использования ЦП. У меня нет устройств infiniband VERBS, но я могу построить тензорный поток из исходного кода с поддержкой VERBS.

bazel build --config=opt --config=cuda --config=verbs //tensorflow/tools/pip_package:build_pip_package

после sudo yum install libibverbs-devel на centos-7. Однако после установки pip собранного пакета через

./bazel-bin/tensorflow/tools/pip_package/build_pip_package /tmp/tensorflow_pkg && pip install /tmp/tensorflow_pkg/tensorflow-1.15.0-cp36-cp36m-linux_x86_64.whl,

мое обучение не удалось со следующей ошибкой:

F tensorflow/contrib/verbs/rdma.cc:127] Check failed: dev_list No InfiniBand device found

Это ожидаемо, так как на моей машине нет оборудования infiniband. Но нужен ли мне infiniband, если моя работа выполняется не на нескольких компьютерах, а на одном компьютере? Я просто хочу проверить, может ли RDMA значительно ускорить обучение параметров на основе сервера. Спасибо.


person John Jiang    schedule 20.07.2020    source источник
comment
Это не РДМА. Если вы переносите данные из одной памяти графического процессора в другую память графического процессора на том же компьютере, GPUDirect RDMA не используется. Как и Infiniband.   -  person Robert Crovella    schedule 20.07.2020
comment
@RobertCrovella Знаете ли вы о какой-либо структуре, которая поддерживает произвольную передачу памяти графического процессора в память графического процессора, более гибкую, чем та, которую предлагает NCCL?   -  person John Jiang    schedule 20.07.2020
comment
NCCL — это коллективная библиотека. Если вы выполняете коллективные операции, это должно быть довольно хорошо и включено в большинство платформ DL. Я полагаю, что для произвольной связи вы просто используете напрямую GPUDirect P2P или CUDA IPC. У меня нет конкретных рецептов или инструкций.   -  person Robert Crovella    schedule 20.07.2020


Ответы (1)


Но действительно ли мне нужен Infiniband, если моя работа выполняется не на кросс-машине, а на одной машине?

Нет, и, похоже, вы неправильно понимаете, что такое RDMA. RDMA (GPUDirect) — это способ для сторонних устройств, таких как сетевые интерфейсы и адаптеры хранения, напрямую записывать данные в память графического процессора через шину PCI. Он предназначен для повышения производительности нескольких узлов в таких вещах, как вычислительные кластеры. Это не имеет ничего общего с операциями с несколькими графическими процессорами в одном узле (одноранговые соединения), когда графические процессоры, подключенные к одному узлу, могут напрямую обращаться к памяти друг друга без обращения к центральному процессору.

person Community    schedule 20.07.2020