MMClassification 图像分类使用
OpenMMLab 是香港中文大学-商汤科技联合实验室 MMLab 自 2018 年 10 月开源的一个计算机视觉领域的 AI 算法框架。其包含了众多计算机视觉多个方向的算法框架,本篇介绍 MMClassification 库,运行服务器 Ubuntu 18.04。
安装MMClassification 的安装需要在一些基础库之上进行,如 pytorch,mmcv 等。假设显卡驱动、cuda、cudnn 等均已安装配置好,接下来就是安装 python 和一些包。我们这里采用 miniconda 来进行 python 安装和环境配置。
123456789101112131415161718192021222324# 安装 minicondawget https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -O miniconda.shchmod +x miniconda.shbash ./miniconda.sh -b -p /opt/miniconda# 配置 miniconda 环境echo &q ...
linux 上使用 samba 共享文件夹给 windows
想要在 Windows 客户端上像访问本地文件一样来访问 Linux 服务器上的文件,除了 rsync、sftp 等工具外能近似满足该需求,最经典、最方便的方式还是使用 Samba。本篇介绍如何使用 Samba 共享 Linux 文件给 Windows。
简介Samba 是 Linux 和 Unix 系统上实现 smb 协议的一个软件,分为服务端和客户端。smb 是一种在局域网上共享文件和打印机的一种通信协议,为局域网内的不同计算机之间提供文件和打印机等资源的共享服务。
Samba 监听端口有 TCP 139、445,UDP 137、138,其中 TCP 端口对应的服务是 smbd 服务,提供对服务器中文件、打印资源的共享访问;UDP 端口对应的服务是 nmbd 服务,提供基于 NetBIOS 主机名称的解析。
Samba 的使用用户都是系统用户,在 /etc/passwd 中,密码通过如下命令设置:
123456# username 取值 /etc/passwd,设置的密码可以与系统用户密码不同smbpasswd -a username# -a 表示添加系统用户为 Samba 用 ...
linux 中 screen 的使用
通过终端在远程服务器上执行长时间运行的任务时,因为突然的断开导致 SSH 会话终止,使得程序运行失败!使用 screen 能够避免上面情况的发生。同时,让我们在一个终端上可以运行多个终端程序,并可以自由切换这些终端。
Screen 或 GNU Screen 是一个终端多路复用器。换句话说,这意味着您可以启动一个屏幕会话,然后在该会话中打开任意数量的窗口(虚拟终端)。在 Screen 中运行的进程在它们的窗口不可见时将继续运行,即使您断开连接也是如此。
安装 screenDebian or Ubuntu 操作系统安装方法如下:
12sudo apt updatesudo apt install screen -y
RedHat or CentOS or Fedora 操作系统安装方法如下:
1sudo yum install screen
使用 screen123456789101112131415161718192021222324252627282930313233343536373839# 创建一个名字为 main 的 screen 终端screen -S main# 查看 ...
linux 下使用 rz 和 sz 传输文件
与 Linux 服务器互相传输文件方法很多,有 scp,sftp,rsync 等等。sz (从服务器发送下载文件) 和 rz (从本地发送上传文件) 是比较有交互性和方便的小文件传输方式。
rz\sz 使用 ZMODEM 协议,因此终端需要支持该协议才能使用该命令。常见的软件 windterm\xshell\securecrt\le putty 等支持。
安装12sudo apt updatesudo apt install lrzsz
rz 上传文件到服务器直接把文件拖动到终端上即可。或者使用命令方式:
123rz# orrz -be
会弹出一个交互界面,选择需要上传的文件(可多选)进行上传。常见选项有:
123456789101112131415161718192021222324252627282930-+, --append 将文件内容追加到已存在的同名文件-a, --ascii 以文本方式传输-b, --binary 以二进制方式传输,推荐使用--delay-startup N 等待 N 秒-e, --escape 对所有控制字符转义,建议使用-E, --re ...
putty 的 ppk 和 openssh 的 rsa 密钥互转
putty 密钥格式是 ppk,它无法被 openssh 直接使用。反过来,openssh 的密钥 id_rsa 也无法被 putty 所使用。如果想要在不同软件下使用,需要进行密钥格式转换。
ppk 转 id_rsa如果有 putty 软件,那么可以在软件上直接操作。我们这里使用命令行操作方式。首先按照命令:
12sudo apt updatesudo apt install putty-tools -y
转换方法如下:
1234# ppk 转换为 id_rsaputtygen test.ppk -O private-openssh -o id_rsa# ppk 转换为 id_rsa.pubputtygen test.ppk -O public-openssh -o id_rsa.pub
id_rsa 转 ppk1puttygen id_rsa -o test.ppk
参考文献
PuTTY的ppk密钥与OpenSSH密钥之间的相互转换
开启 JupyterLab 代码自动提示功能
JupyterLab 不仅能够书写代码而且也非常方便书写说明内容以及 $\LaTeX{}$ 代码,另外,它支持多种编程语言。在 Pycharm 中集成了自动代码提示,文件跳转等,在 JupyterLab 中也可以实现。本篇对其进行介绍。
安装基本包1234pip install jupyterlab-lsppip install 'python-lsp-server[all]'# 也可采用方法:进入 JupyterLab,点击扩展,搜索 @krassowski/jupyterlab-lsp 点击安装即可。jupyter labextension install @krassowski/jupyterlab-lsp
重启 jupyterlab12# 我这里是 jupyterhubsudo systemctl restart jupyterhub.service
重启后已经可以使用代码提示了。但需要注意两点:
代码提示需要 tab 键配合。后面设置如何自动提示;
代码跳转个人编写的包正常,conda 和 pip 安装的包不能成功。后面进行配置。
代码自动提示 ...
ubuntu upgrade 不升级某些包
使用 ubuntu 的更新命令 sudo apt upgrade -y 时总是会升级所有的包,但是有些包是不能或不便升级的,如 GPU 驱动程序等,升级后可能会导致无法使用。有时升级某些软件后会导致系统重启失败等。本篇介绍如何抑制某些包不升级。
update & upgrade当使用一段时间后,或需要更新某个软件包时,总会运行如下的命令,检查更新:
1sudo apt update
当运行上面的命令后,会提示我们有多少包需要更新,使用如下命令,可以查看详细信息:
1sudo apt list --upgradable
当我们想要升级罗列的所有软件包时,我们可以使用如下命令:
1sudo apt upgrade -y
当我们想要只升级某一个软件包时,我们可以使用如下命令:
123sudo apt install --only-upgrade [packagename]# orsudo apt install [packagename]
但是,如果我们需要升级的软件比较多,但又不是所有软件都想要升级,那么我们不能够使用 sudo apt upgrade,但使用 sudo apt ...
pytorch 分布式训练
如何利用多 GPU、多服务器分布式训练深度学习模型,本篇介绍 pytorch 分布式训练相关。
一些概念
node 物理节点,即服务器、机器。注意每一个节点可以有多个 GPU,即一机多卡
rank 进程序号,常用于进程通信。每个进程对应一个 rank
local_rank 相对于 rank (整个分布式集群而言),local_rank 表示一台机器内部的相对进程序号。rank 和 locak_rank 独立,当是单机多卡时,rank 等同于 local_rank
nnodes 物理节点个数
node_rank 物理节点序号
nproc_per_node 每个物理节点上面运行的进程数,常对应想要运行的 GPU 个数,因此取值小于物理节点上 GPU 个数。
group 进程组,默认只有一个组
world size 全局并行数,即一个分布式任务中,全局 rank 的数量。
例子:每个 node 包含 8 个 GPU,且 nproc_per_node=4, nnodes=5,机器的 node_rank=10,请问 world_size 是多少?全局并行数 w ...
python 日志管理
程序运行的日志能够有效的帮助我们查看程序运行的情况。python 内置的日志模块是 logging,通过它能够有效的记录 python 程序运行的情况。
日志例子编写一个日志的例子,保存到 /workspace/proj-pf/common-scripts/monitor.py
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768import loggingimport timefrom datetime import datetimefrom logging import handlersclass MyLogger(object): # 5个日志级别 levels = { "debug": logging.DEBUG, "info": logging.INFO, "w ...
编译安装 GPU 版 ffmpeg
ffmpeg 是适用于 Linux 和类 Unix 系统的免费开源视频转换软件。视频图片处理使用 GPU 能明显提高速度,缩减运行时间。本篇介绍如何编译安装 GPU 版 ffmpeg 及使用方法。以 Ubuntu 18.04 为例。
Nvidia 驱动和 GPU 加速库安装想使用 GPU 加速计算,就需要 GPU 驱动和加速库。请参考我的另一篇博文安装: 深度学习的 GPU 环境的配置
实践中,我首先配置的 NVIDIA 驱动版本是:NVIDIA-Linux-x86_64-470.129.06.run,CUDA 加速框架是:cuda_11.1.0_455.23.05_linux.run,深度学习加速库是: cudnn-linux-x86_64-8.6.0.163_cuda11-archive.tar.xz,编译安装 FFMPEG 后出现:Driver does not support the required nvenc API version. Required: 12.0 Found: 11.1,然后重新安装 NVIDIA 驱动版本:NVIDIA-Linux-x86_64-52 ...
结合 aria2 和 AriaNg 打造简单易用的 web 界面的文件下载工具
d7420555dbd47e034be0c72be203a7e36d3e813088b6c9fcd2ce16fa36ffa6676c61aa58c99c5a3c528f049f556628b1c6bd0a497abc06801c77972eda5e12868cffd5a93c2a7430a0bb312e226eb87a5b415a91131ace98f68e8f1e7b4fa36ccf3a3c383a999d2cd1d247294ac9b4003c0fa9e236fad7f9e47e786c6aec02556a6c1638cea9f8f71309e8f29f50157db883016b5e2587c1cf279f17f9f0de62084ddde50ab03c9bbe466d2160832bc0e413805d887df24061153e41082bd8940c6a77e9ed52d96a58948d9ca678bd1226323b2068ee8ae6c7ef639bf7e256d4e2ccf21b45ae77ac5cfba55f1e794a36343be82f319849af8 ...