使用 gpu 的 stanfordnlp 对 python 代码进行容器化
Containerization of a python code with stanfordnlp that uses gpu
我想 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,尽管根据此 link
默认情况下为 True
接下来我写了一个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 时,根据本 link 中的指南使用以下命令在创建和部署容器时使用 gpu 服务。
nvidia-docker build -t pylemm-gpu .
docker run -it --gpus all pylemm-gpu
执行上述所有步骤后,我仍然收到消息说我的容器正在使用 cpu 而不是 gpu。我真的很感激指南 and/or 链接正确设置我的容器,以便它可以使用 gpu。
p.s。我已经尝试了 link 中的使用部分并检查了我的服务器是否有 3 个 gpus。
Cuda 驱动程序已安装,如命令所示
nvidia-smi
stanfordnlp 使用 pytorch,因此我以交互方式拉取了 pytorch docker 图像和 运行。我导入了 torch 并检查了是否使用
安装了 cuda
torch.cuda.is_available()
返回 False。
使用下面的命令
torch.version.cuda
我检查了该图像中使用的 Cuda 版本
然后我了解到pytorch/pytorch使用的是最新版本的Cuda:根据link. In my server it was using Cuda version 10.0, therefore I searched for an older version of pytorch using Cuda version 10.0 (matches with my Cuda version) from this link最新版本。
这解决了我的问题,stanfordnlp 和 stanza 现在都在使用 GPU。
我想 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,尽管根据此 link
默认情况下为 True接下来我写了一个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 时,根据本 link 中的指南使用以下命令在创建和部署容器时使用 gpu 服务。
nvidia-docker build -t pylemm-gpu .
docker run -it --gpus all pylemm-gpu
执行上述所有步骤后,我仍然收到消息说我的容器正在使用 cpu 而不是 gpu。我真的很感激指南 and/or 链接正确设置我的容器,以便它可以使用 gpu。
p.s。我已经尝试了 link 中的使用部分并检查了我的服务器是否有 3 个 gpus。
Cuda 驱动程序已安装,如命令所示
nvidia-smi
stanfordnlp 使用 pytorch,因此我以交互方式拉取了 pytorch docker 图像和 运行。我导入了 torch 并检查了是否使用
安装了 cudatorch.cuda.is_available()
返回 False。
使用下面的命令
torch.version.cuda
我检查了该图像中使用的 Cuda 版本
然后我了解到pytorch/pytorch使用的是最新版本的Cuda:根据link. In my server it was using Cuda version 10.0, therefore I searched for an older version of pytorch using Cuda version 10.0 (matches with my Cuda version) from this link最新版本。
这解决了我的问题,stanfordnlp 和 stanza 现在都在使用 GPU。