Linux
“1、vim 操作:光标快速移动到行首/行尾? ”
在非编辑模式下(一般按 ESC 进入非编辑模式):
- 按
0
键移动到行首 - 按
$
键(shift 4)移动到行尾
“2、shell 脚本传递参数? ”
创建镜像后如果快速运行镜像,docker run 有很多参数,只有少部分会修改,如果每天创建很多容器,每次都完整输入一次命令就很麻烦,容易出错,这时我们可以写一个 shell 脚本,把会修改的值变成参数,然后运行脚本的时候传递会变的参数即可。
- 脚本内容
docker run -it --rm --gpus all -p $1:5901 $2 bash
- 简单解释下
docker run 使用镜像创建容器并运行
-it 交互模式运行
--gpus all 使容器内可以调用本地gpu
-p $1:5901 建立本地和容器内的端口映射,本地端口 $1 是脚本的第一个参数,可以启动的时候自定义;5901是容器内的端口,作用:在容器内启动服务部署到5901端口,就可以在本地 通过 localhost:$1 访问了
$2 第二个参数,镜像名称:tag 或者 镜像id
bash 使用 bash 终端
有人可能会好奇,为什么第一个参数不是
0 表示脚本的文件名称,$1 开始才是我们指定的参数。
- 操作起来
用 vim 新建一个run.sh
文件,将上面的脚本内容写入,然后保存文件,再给文件赋予可执行权限。
vim run.sh
chmod x run.sh
下次我们要docker run 创建并运行容器的时候,就可以直接用我们新建的这个脚本了。
代码语言:javascript复制./run.sh 本地端口 镜像id
# 如 ./run.sh 5901 42f1d7451649
完美。
“3、unzip 解压乱码怎么办? ”
unzip 解压一个 zip 资源文件,解压出来的文件名称都乱码了(如上图)。这种情况,一般是压缩包编码问题导致,在 unzip 时添加 -O 参数,参数值为:cp936(cp936 即 code page 936(代码页936)是以GBK(国标扩展字符集)为基础的编码)。
代码语言:javascript复制unzip -O cp936 案例2资源-1663747915.zip
Python
“1、'ConfigDict' object has no attribute 'device' ”
运行 mmdetection demo的时候出现标题中错误,在 mmdetection/demo/MMDet_InstanceSeg_Tutorial.ipynb 的Train a new detector
的第一个代码块中 加入:cfg.device='cuda'
:
from mmdet.datasets import build_dataset
from mmdet.models import build_detector
from mmdet.apis import train_detector
# Build dataset
datasets = [build_dataset(cfg.data.train)]
# Build the detector
model = build_detector(cfg.model)
# Add an attribute for visualization convenience
model.CLASSES = datasets[0].CLASSES
# Create work_dir
'''
这里加入
'''
cfg.device='cuda'
mmcv.mkdir_or_exist(osp.abspath(cfg.work_dir))
train_detector(model, datasets, cfg, distributed=False, validate=True)
参考:https://github.com/open-mmlab/mmdetection/issues/7901
“2、Cuda11.3 安装 tensorflow1.15? ”
tensorflow 官网中,tf1.15 只支持cuda10.0(也就是官方给你编译好的包只有基于cuda10.0的),而较新的显卡(比如 安培系列,A2000 A40等),只支持 cuda 11及以上。
如果想在 安培系列 显卡上使用 tf1.15,就只有自己重新编译安装 tf(不一定能成功,还贼麻烦),这里给大家分享一种方法:安装:nvidia tensorflow,这是英伟达官方出的一个开源项目,支持在 cuda11 上安装使用 tf1.15,与官方的 TensorFlow 1.15版本兼容。
安装要求:
代码语言:javascript复制- Ubuntu 20.04 或者更高版本
- 显卡算力大于等于5.2
- 有 GPU 显卡,安装了 cuda11 或者更高版本和对应的 NVIDIA 显卡驱动
- Python 3.8
- pip 19.0 or later
除了必须有显卡,安装了显卡驱动和cuda,其他的也可以不一致,这样需要自己编译安装,具体方法参考:https://github.com/NVIDIA/tensorflow#build-from-source
如果按官方指定配置来,就简单多了,直接从官方源下载安装编译好的 whl 包即可。
代码语言:javascript复制pip install nvidia-pyindex
pip install nvidia-tensorflow
今天分享就这些啦,希望对大家有所帮助,这是一个新栏目,总结下每天遇到的问题,记录分享给大家。
欢迎大家分享下自己每天遇到的问题和解决方法,每周我会从留言中选一些汇总起来,形成一期:〈读者:一日多技〉