Сбой в ядре CUDA: на устройстве нет доступного образа ядра, Ошибка при запуске модели PyTorch внутри Google Compute VM - PullRequest
0 голосов
/ 24 марта 2020

У меня есть docker изображение модели PyTorch, которое возвращает эту ошибку при запуске внутри виртуальной машины Google Compute Engine, работающей на Debian / Tesla P4 GPU / образ глубокого обучения Google:

CUDA kernel failed : no kernel image is available for execution on the device

Это происходит на линии, где называется моя модель. Модель PyTorch включает в себя пользовательские расширения c ++, я использую эту модель https://github.com/daveredrum/Pointnet2.ScanNet

Мой образ устанавливает их во время выполнения

Образ отлично работает в моей локальной системе. И ВМ, и моя система имеют следующие версии:

Инструменты компиляции Cuda 10.1, V10.1.243

torch 1.4.0

torchvision 0.5.0

Основное отличие состоит в том, что GPU, насколько я знаю,

Local:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 435.21       Driver Version: 435.21       CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  GeForce GTX 960M    Off  | 00000000:01:00.0 Off |                  N/A |
| N/A   36C    P8    N/A /  N/A |    361MiB /  2004MiB |      0%      Default |
+-------------------------------+----------------------+----------------------+

VM:

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 418.87.01    Driver Version: 418.87.01    CUDA Version: 10.1     |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla P4            Off  | 00000000:00:04.0 Off |                    0 |
| N/A   42C    P0    23W /  75W |      0MiB /  7611MiB |      3%      Default |

Если я sh войду в VM torch.cuda.is_available() возвращает true

Поэтому я подозреваю, что это должно быть связано с компиляцией расширений

Это соответствующая часть моего docker файла:

ENV CUDA_HOME "/usr/local/cuda-10.1"
ENV PATH /usr/local/nvidia/bin:/usr/local/cuda-10.1/bin:${PATH}
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
ENV NVIDIA_REQUIRE_CUDA "cuda>=10.1 brand=tesla,driver>=384,driver<385 brand=tesla,driver>=396,driver<397 brand=tesla,driver>=410,driver<411 brand=tesla,driver>=418,driver<419"
ENV FORCE_CUDA=1

# CUDA 10.1-specific steps
RUN conda install -c open3d-admin open3d
RUN conda install -y -c pytorch \
    cudatoolkit=10.1 \
    "pytorch=1.4.0=py3.6_cuda10.1.243_cudnn7.6.3_0" \
    "torchvision=0.5.0=py36_cu101" \
 && conda clean -ya
RUN pip install -r requirements.txt
RUN pip install flask
RUN pip install plyfile
RUN pip install scipy


# Install OpenCV3 Python bindings
RUN sudo apt-get update && sudo apt-get install -y --no-install-recommends \
    libgtk2.0-0 \
    libcanberra-gtk-module \
    libgl1-mesa-glx \
 && sudo rm -rf /var/lib/apt/lists/*

RUN dir
RUN cd pointnet2 && python setup.py install
RUN cd ..

Я уже перезапустил эту строку с s sh на виртуальной машине:

TORCH_CUDA_ARCH_LIST="6.0 6.1 7.0" python setup.py install

Как я думаю, на что ориентируется установка с возможностью вычисления Tesla P4?

Есть ли какие-нибудь другие действия по настройке или устранению неполадок, которые я могу попробовать?

Я ничего не знал о расширениях докеров / ВМ / pytorch, пока пару дней не набрал go, поэтому немного стрелял в темноте. Также это мой первый пост, посвященный стековому потоку, извиняюсь, если не соблюдаю какой-то этикет, не стесняйтесь указывать.

1 Ответ

1 голос
/ 03 апреля 2020

В конце концов я решил эту проблему, вручную удалив все папки, кроме «sr c», в папке, содержащей setup.py

Затем перестроил docker изображение

Затем при создании образа я запустил TORCH_CUDA_ARCH_LIST="6.1" python setup.py install, чтобы установить расширения cuda, нацеленные на правильные вычислительные возможности для графического процессора на виртуальной машине

, и это сработало!

Я полагаю, просто запустив setup.py без удаление ранее установленных папок не полностью перезаписывает расширение

...