前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一日多技,技能-Linux-Python 006

一日多技,技能-Linux-Python 006

作者头像
老表
发布2022-10-31 08:44:03
7920
发布2022-10-31 08:44:03
举报
文章被收录于专栏:用户2910674的专栏

Linux

“1、vim 操作:光标快速移动到行首/行尾? ”

在非编辑模式下(一般按 ESC 进入非编辑模式):

  • 0键移动到行首
  • $键(shift + 4)移动到行尾

“2、shell 脚本传递参数? ”

创建镜像后如果快速运行镜像,docker run 有很多参数,只有少部分会修改,如果每天创建很多容器,每次都完整输入一次命令就很麻烦,容易出错,这时我们可以写一个 shell 脚本,把会修改的值变成参数,然后运行脚本的时候传递会变的参数即可。

  • 脚本内容
代码语言:javascript
复制
docker run -it --rm --gpus all -p $1:5901 $2 bash
  • 简单解释下
代码语言:javascript
复制
docker run 使用镜像创建容器并运行

-it 交互模式运行

--gpus all 使容器内可以调用本地gpu

-p $1:5901 建立本地和容器内的端口映射,本地端口 $1 是脚本的第一个参数,可以启动的时候自定义;5901是容器内的端口,作用:在容器内启动服务部署到5901端口,就可以在本地 通过 localhost:$1 访问了

$2 第二个参数,镜像名称:tag 或者 镜像id
bash 使用 bash 终端

有人可能会好奇,为什么第一个参数不是

0 ,因为 shell 脚本中

0 表示脚本的文件名称,$1 开始才是我们指定的参数。

  • 操作起来

用 vim 新建一个run.sh文件,将上面的脚本内容写入,然后保存文件,再给文件赋予可执行权限。

代码语言:javascript
复制
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'

代码语言:javascript
复制
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

今天分享就这些啦,希望对大家有所帮助,这是一个新栏目,总结下每天遇到的问题,记录分享给大家。

欢迎大家分享下自己每天遇到的问题和解决方法,每周我会从留言中选一些汇总起来,形成一期:〈读者:一日多技〉

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说Python 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux
  • Python
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档