Контейнерирование кода python с помощью stanfordnlp, использующего gpu - PullRequest
0 голосов
/ 17 марта 2020

Я бы хотел docker контейнировать мой python скрипт, который использует gpu. Причина контейнера заключается в том, что я пытаюсь запустить этот код на сервере, на котором установлена ​​python3 .5, но для stanfordnlp требуется python3 .6 +.

Таким образом, мой подход заключается в создании контейнера, который использует самое последнее изображение python, запустите сценарий python, который будет использовать nvidia gpu.

Ниже приведен фрагмент python код, в который импортируется stanfordnlp для техники лемматизации

import stanfordnlp
import pandas as pd
import string

stanfordnlp.download('en')
nlp = stanfordnlp.Pipeline(processors='tokenize,mwt,lemma,pos', use_gpu=True)

Как вы можете видеть, я явно набрал use_gpu = True, хотя по умолчанию для этой ссылки

* установлено значение True. 1011 * Далее я написал Dockerfile
FROM python:3
WORKDIR /usr/src/app
COPY lemmatizer.py ./
COPY eng_wikipedia_2016_1M-sentences.txt ./
RUN pip install stanfordnlp pandas
CMD [ "python" , "./lemmatizer.py" ]

Когда я собираю, а затем запускаю Dockerfile, используя следующие команды в соответствии с руководствами в этой ссылке , чтобы использовать службы gpu при создании и развертывание контейнера.

nvidia-docker build -t pylemm-gpu .
docker run -it --gpus all pylemm-gpu

После выполнения всех шагов, описанных выше, я все еще получаю сообщение о том, что мой контейнер использует процессор вместо gpu. Я был бы очень признателен за руководство и / или ссылки для правильной настройки моего контейнера, чтобы он мог использовать gpu.

ps Я пробовал использовать часть использования в ссылке и проверил, что мой сервер имеет 3 gpus.

1 Ответ

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

Cuda-драйверы были установлены, как это было показано с помощью команды

nvidia-smi

stanfordnlp использует pytorch, поэтому я вытащил изображение pytorch docker и запустил интерактивно. Я импортировал факел и проверил, была ли установлена ​​cuda, используя

torch.cuda.is_available()

, который возвращал False.

Используя команду ниже

torch.version.cuda

Я проверил версию используемого Cuda на этом изображении

Тогда я понял, что последняя версия Cuda использовалась в pytorch / pytorch: последняя по ссылке . На моем сервере он использовал Cuda версии 10.0, поэтому я искал более старую версию pytorch, используя Cuda версии 10.0 (соответствует моей версии Cuda) по этой ссылке .

Это решило мою проблему, и stanfordnlp, и stanza теперь используют GPU.

...