ubuntu10.2
已下载docker
————————————————
1.安装和测试nvidia docker:Installing Docker and The Docker Utility Engine for NVIDIA GPUs — NVIDIA AI Enterprise documentation
1.1.在执行restart时候,报错(存疑:有时候并不生效,就关闭再start,没发现什么问题):
Failed to allocate directory watch: Too many open files
(1)逐行执行:
vim /etc/sysctl.conf
fs.inotify.max_user_instances=512
fs.inotify.max_user_watches=262144
(2)使之生效:
sysctl -p
就可以restart了。
执行(1)时候,a插入后,esc后,按 :wq 或者wq!时候,不行,因为该文件可能是只读的,所以要采用
:w !sudo tee %
1.2.删除多余镜像:
如果要删除本地的镜像,可以使用 docker rmi (注意rm为删除容器,而rmi为删除镜像,其中i代表image)命令,它的具体语法如下:
docker rmi [OPTIONS] IMAGE [IMAGE…]
如:sudo docker rmi 7e913212889f
其中:
docker rmi:Docker删除镜像的命令关键词;
OPTIIONS: 命令选项,-f强制删除镜像;
IMAGE:需要删除的镜像。这里的镜像可以用“镜像短ID”、“镜像长ID”、“镜像名”、“镜像的digest”来标识。
2.在docker中拉取paddlepaddle镜像,并建立容器:
2.1.启动docker:
systemctl start docker
2.2.下载pp镜像,即安装pp:开始使用_飞桨-源于产业实践的开源深度学习平台
拉取预安装的pp镜像:
nvidia-docker pull registry.baidubce.com/paddlepaddle/paddle:2.3.2-gpu-cuda10.2-cudnn7
2.3.查看镜像:
sudo docker images
2.4 构建和启动容器:PaddleOCR/environment_en.md at release/2.6 · PaddlePaddle/PaddleOCR · GitHub
因为要进行的项目是ocr的,所以以pp镜像为基础,创建一个叫ppocr的容器。
在自己本地的ppocr目录里:
sudo nvidia-docker run -p 8899:8899 --name ppocr -it -v $PWD:/home/A/pp/ppocr registry.baidubce.com/paddlepaddle/paddle:2.3.2-gpu-cuda10.2-cudnn7 /bin/bash
因为我安装时候,没有选择后台运行(-d)ppocr容器,所以安装并启动后,直接进去了 /home 里面,ls查看里面有什么。home里有我命令里冒号后指定的路径,(其他两个不知道是什么)。cd / 应该是根目录,ls 查看。 直接切换到~/ppocr里.
用镜像构建并进入Docker容器(这个命令退出容器容器不会消失)
(1)run:是新建一个容器,后面可加-d(以后台模式运行,不马上进入)。
(2)-p(小写):可以指定要映射的IP和端口,(这里:端口映射到宿主机8899端口),在一个指定端口上只可以绑定一个容器。
(3)--name + 容器名
(4)-it :好像是与容器交互方式,暂时不涉及)
(5)-v :挂载命令,$PWD变量会展开为当前路径的绝对路径,当然也可以替换为本地的绝对路径。
$PWD 是当前路径/目录,我当前是在 .../ppocr 路径/目录里,所以会把这个目录挂载到冒号:后面的 容器的/home/A/pp/ppocr目录里(在容器中会自动生成这个目录)
(6)倒数第二个内容:以它为镜像创建容器
ps:错误案例:这个有问题,只是映射了和本地路径相同的路径,没有达到挂载的作用。
sudo nvidia-docker run -p 8899:8899 --name ppocr -it -v $PWD registry.baidubce.com/paddlepaddle/paddle:2.3.2-gpu-cuda10.2-cudnn7 /bin/bash
2.5 (可省略)在容器中安装pp-gpu
这一步在docker中不需要了,在官网和实践中看出:
拉取镜像的命令=安装这一步的命令,且容器就是以镜像(内含镜像)而建立的。
cd 到我建立的ppocr里面
pip show paddlepaddle-gpu:(本地不行,只是文件同步,环境还没有),确实已经有了
(当时安装怕出错:还是安装了。)
python3 -m pip install paddlepaddle-gpu -i https://mirror.baidu.com/pypi/simple
3 docker下载自己要的项目和配置环境——Paddleocr
3.1(不需要)安装:Install PaddleOCR Whl Package,类似于调用接口快速体验,是quick start里面的。
中文文档里说 通过Python脚本使用PaddleOCR whl包,whl包会自动下载ppocr轻量级模型作为默认模型。
https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.6/doc/doc_en/quickstart_en.md
pip3 install paddleocr -i https://mirror.baidu.com/pypi/simple
官网是:
pip install "paddleocr>=2.0.1" # Recommend to use version 2.0.1+
-i ...是我不加会read timed out
3.2 下载源码:
用git clone 下载失败,好像是容器里配置ssh,所以下载zip到本地,解压到目标路径,自动实现docker同步。
https://github.com/PaddlePaddle/PaddleOCR
3.2.1.测试同步情况
本地放个111.py,在容器里运行一下。
3.3.配置环境:
因为之后开发在本地,不可能在docker里用vim开发,所以打算先在本地弄好在生成requirements,再配到容器里。
4 在本地完成pp安装、源码下载等过程
在本地打开的ocr项目里,选择一个位置建立虚拟环境,在环境里:
安装pp-gpu:
python -m pip install paddlepaddle-gpu==2.3.2 -i https://pypi.tuna.tsinghua.edu.cn/simple
(这个就是相当于docker拉取pp镜像那一步)
(不需要)安装ppocr whl:
pip install paddleocr -i https://mirror.baidu.com/pypi/simple
安装环境:
pip install -r requirments.txt