2023年4月
Megatron-DeepSpeed
nvidia apex是什么
APEX是什么 APEX是英伟达开源的,完美支持PyTorch框架,用于改变数据格式来减小模型显存占用的工具。 其中最有价值的是amp(Automatic Mixed Precision),将模型的大部分操作都用Float16数据类型测试,一些特别操作仍然使用Float32。
docker常用命令
一、docker安装
目前服务器基本上都是centos版本的,以下是centos版本安装方案
共有三种安装方式:
官方文档参考:
https://docs.docker.com/engine/install/centos/
其中在线安装,可以使用国内源,教程参考:
https://www.runoob.com/docker/centos-docker-install.html
安装命令如下:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
确定是否安装成功:
docker --version
二、docker调用GPU安装依赖
要注意:要想使用GPU,带部署的服务器也必须要安装以下四个依赖,不安装无法调用GPU:
需要安装4个依赖程序:
yum install -y nvidia-container-toolkit
yum -y install nvidia-container-runtime
yum -y install libnvidia-container-tools
yum -y install libnvidia-container1
可以离线下载安装:
使用命令下载(在可联网机器下载)
distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.repo | sudo tee /etc/yum.repos.d/nvidia-docker.repo yum -y install nvidia-container-toolkit --downloadonly --downloaddir ./ yum -y install nvidia-container-runtime --downloadonly --downloaddir ./ yum -y install libnvidia-container-tools --downloadonly --downloaddir ./ yum -y install libnvidia-container1 --downloadonly --downloaddir ./
(参考:https://juejin.cn/post/7066566268379201544)
安装
sudo rpm -ivh *.rpm
三、docker启动
重启:
systemctl daemon-reload
systemctl restart docker
四、docker导入导出
导出
docker save [OPTIONS] IMAGE [IMAGE...]
-o :输出到的文件。
#将镜像 runoob/ubuntu:v3 生成 my_ubuntu_v3.tar 文档
docker save -o my_ubuntu_v3.tar runoob/ubuntu:v3
导人
docker load --input ./ cuda102_runtime.tar
五、 docker占满根目录解决方案
docker 默认占用根目录位置: /var/lib/docker
解决方法:移动 /var/lib/docker 并设置软连接,最后重启docker
mv /var/lib/docker /data/docker
ln -s /data/docker /var/lib/docker
systemctl daemon-reload
systemctl restart docker
六、 Docker 镜像下载
挑选需要的docker 镜像
Docker镜像链接
https://hub.docker.com
ubuntu带 cuda 的 docker 镜像下载
https://hub.docker.com/r/nvidia/cuda/tags?page=1&name=16.04
需要注意的重点:
1.在centos上面的程序是可以直接在ubuntu镜像下面执行的
2.如果要下载可以直接调用GPU的镜像需要下载含有cuda和cudnn的镜像
3.线上可以用推理环境的镜像:11.2.2-devel-ubuntu20.04,也可以用开发环境镜像:11.2.2-runtime-ubuntu20.04
只是大小不一样。如下图:
4.具体要下载哪个镜像要根据要部署的服务器驱动版本有关系,例如要部署的机器驱动是cuda 11.2对应的版本版本,下载的镜像最好一直,如果大于11.2版本,则无法正常启动镜像或者无法调用GPU,比11.2小的应该可以,但是没有使用。
5.下载镜像后,通过目录共享启动容器,例如:
docker run -it --shm-size="80g" -p 5012:5012 -v /data/liulei/:/data/liulei --gpus all nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04 /bin/bash
可以把conda虚拟环境的目前拷贝到共享目录下面:然后通过虚拟环境的绝对python路径测试虚拟环境是否正常运行,也可以先通过
torch.cuda.is_available()来为true和false来判断GPU是否可用
七、镜像
查看镜像:
docker images
修改镜像名称:
docker tag imageid name:version
八、容器
创建容器
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
OPTION说明(常用):有些是一个减号,有些是两个减号
–name=“容器新名字” 为容器指定一个名称
-d:后台运行容器并返回容器ID,也即启动守护式容器(后台运行)
-i:以交互模式运行容器,通常与-t同时使用
-t:为容器重新分配一个伪输入终端,通常与-i同时使用;也即启动交互式容器(前台有伪终端,等待交互)
-P:随机端口映射,大写P
-p:指定端口映射,小写p
例如 -p 8080:80,即容器的80端口映射到宿主机的8080端口
1.不使用显卡创建 container
docker run -it nvidia/cuda:10.2-cudnn8-runtime-ubuntu16.04 /bin/bash
2.使用显卡
docker run -it -d --shm-size="80g" -p 5000:5000 -v /home/centos/:/home/centos --gpus all belleagi/belle:v1.0 /bin/bash
例如:
docker run -it --shm-size="80g" -p 5012:5012 -v /data/liulei/:/data/liulei --gpus all nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04 /bin/bash
设置网络:
docker run --network=host -it --shm-size="80g" -p 5012:5012 -v /data/liulei/:/data/liulei --gpus all nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04 /bin/bash
2. 查询容器
命令:docker ps [OPTIONS]
OPTIONS说明
-a列出当前所有正在运行的容器+历史上运行过的
-i:显示最近创建过的容器
-n:显示最近n个创建的容器
-q:静默模式,只显示容器编号
docker ps #当前正在运行的容器
docker ps -a #显示所有容器,包括当前没有运行的容器
docker ps -a | grep "" 按照关键词查询
3、 进入容器
存在 docker attach、docker exec 两种方式。
docker attach container_id (**注意:** 如果使用此命令,从容器退出,会导致容器的停止。)
docker exec -it container_id /bin/bash
container_id:详见 docker ps –a 命令输出结果。
docker attach 44fc0f0582d9
4、 退出容器
exit # run进去容器,exit退出,容器停止
ctrl+p+q #run进去容器,ctrl+p+q退出,容器不停止
5、 启动和停止容器
1.启动已经停止的容器
docker start 容器ID或者容器名
2.重启容器
docker restart 容器ID或者容器名
3.停止容器
docker stop 容器ID或者容器名
4.强制停止容器
docker kill 容器ID或者容器名
5.删除已经停止容器
docker rm 容器ID或者容器名
注意:rmi为删除镜像 rm为删除容器
6.强制删除:没有停止的容器
docker rm -f 容器ID或者容器名
九、与宿主机拷贝文件
宿主机 -> docker
docker cp /opt/software/temp/test/test.txt f7b37b56fb98:/home
docker -> 宿主机
docker cp f7b37b56fb98:/home /opt/software/temp/test/test.txt
f7b37b56fb98:container_id
此内容被密码保护
linux常用命令
一、centos中添加用户
1.添加用户
useradd liulei #添加用户
passwd liulei #添加密码
#下面的只有zhy在用,一般服务不用
usermod -aG test01 liulei #给用户分组,注意如果不添加这个可能无法登录,将用户 liulei 添加到组test01
2.修改密码
#需要先登录root权限账户
passwd liulei #用户名
3.给用户添加sudo权限
#先切换为root
#一般服务器
vim /etc/sudoers
centos ALL=(ALL) ALL
#zhy个别服务器
vim /etc/sudoers.d/su
centos ALL=(ALL) NOPASSWD:/bin/su -
二、gcc版本升级
yum install centos-release-scl
yum install devtoolset-8
#激活对应的devtoolset,所以你可以一次安装多个版本的devtoolset,需要的时候用下面这条命令切换到对应的版本
scl enable devtoolset-8 bash
gcc -v
这条激活命令只对本次会话有效,重启会话后还是会变回原来的4.8.5版本,要想随意切换可按如下操作。
首先,安装的devtoolset是在 /opt/rh 目录下的,如图
每个版本的目录下面都有个 enable 文件,如果需要启用某个版本,只需要执行
source ./enable
所以要想切换到某个版本,只需要执行
source /opt/rh/devtoolset-8/enable
永久起效:
vim /etc/profile
#末尾添加
source /opt/rh/devtoolset-7/enable\
#自后重启
source /etc/profile
或者:
如需切换使用如下命令:source /opt/rh/devtoolset-7/enable
或者$USER_HOME/.bashrc 中加入默认就切换。
三、杀进程
1.kill
ps -ef|grep python
kill -9 pid //彻底杀死进程
2.killall
Linux killall (kill processes by name)用于杀死进程,与 kill 不同的是killall 会杀死指定名字的所有进程。kill 命令杀死指定进程 PID,需要配合 ps 使用,而 killall 直接对进程对名字进行操作,更加方便
killall -9 mysql //结束所有的 mysql 进程
3.pkill命令
pkill 命令和 killall 命令的用法相同,都是通过进程名杀死一类进程,除此之外,pkill 还有一个更重要的功能,即按照终端号来踢出用户登录。
pkill -f mysql //结束 mysql 进程
pkill -u mark,danny //结束mark,danny用户的所有进程
w //#使用w命令查询本机已经登录的用户
pkill -9 -t pts/1 //#强制杀死从pts/1虚拟终端登陆的进程
四、下安装包
- pip download -d 保存安装的库及其依赖库的文件夹路径 安装库名 -i 临时换源加快下载速度
例如:pip download -d ./websocket websocket-client -i https://pypi.tuna.tsinghua.edu.cn/simple - pip install --no-index --find-links=库及其依赖库的文件夹路径 离线下载的库名称
例如:pip install --no-index --find-links=./websocket websocket-client
ubuntu下载
五、磁盘空间、操作系统信息
1.Linux查看未挂载的磁盘空间
fdisk -l
2.Linux查看未分配磁盘
lsblk -f
3.Linux查看磁盘挂载
df -h
4.查看隐藏目录大小
du -sh .[!.]*
5.系统信息
centos版本信息:cat /etc/redhat-release
centos内核信息:cat /proc/version
centos操作系统:uname -s
centos内核类型: uname -m
六、查看centos硬件
1.top -c 命令:
top -c
# 按照GB显示
# shift 和E
GiB Mem : 251.4 total, 0.6 free, 250.5 used, 0.3 buff/cache
GiB Swap: 128.0 total, 93.4 free, 34.6 used. 0.1 avail Mem
GiB Mem :物理内存总量(251.4G),空闲内存总量(0.6G),使用中的内存总量(250.5G),缓冲内存量
GiB Swap:交换区总量(128.0G),空闲交换区总量(93.4G),使用的交换区总量(34.6 G),可用交换取总量
(1)mem中 物理内存总量:指的是现在系统内核控制的内存数,
(2)空闲内存总量(free)是内核还未纳入其管控范围的数量。纳入内核管理的内存不见得都在使用中,还包括过去使用过的现在可以被重复利用的内存,内核并不把这些可被重新使用的内存交还到free中去,因此在linux上free内存会越来越少,但不用为此担心
(3)used:使用的内存量
(4)buffer/cache:用作内核缓存的内存量
Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。
当物理内存使用完或者达到一定比例之后,我们可以使用swap做临时的内存使用。当物理内存和swap都被使用完那么就会出错,out of memory。对于使用多大比例内存之后开始使用swap,在系统的配置文件中可以通过调整参数进行修改。
swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。
2、查看内存
free -h
七、查看进程所在位置
1、用ps -ef |grep xxxxx 得到该进程的pid
2、输入ls -l ,结果中 exe链接对应的就是可执行文件的路径
ls -l /proc/18283
八、删除乱码文件
系统下命令行是无法输出汉字的,如果要删除带有汉字的文件或文件夹,只需要查看文件的节点号,删除对应的节点号即可。
通过: ls -i 命令,查看文件的节点号(节点号为每个文件前面显示的数字)
查看节点
ls -i
删除节点
find -inum 7516192896 -delete
九、修改path的方法
修改方法一:
export PATH=/usr/local/mongodb/bin:$PATH
//配置完后可以通过echo $PATH查看配置结果。
生效方法:立即生效
有效期限:临时改变,只能在当前的终端窗口中有效,当前窗口关闭后就会恢复原有的path配置
用户局限:仅对当前用户
修改方法二:
通过修改.bashrc文件:
vim ~/.bashrc
//在最后一行添上:
export PATH=/usr/local/mongodb/bin:$PATH
生效方法:(有以下两种)
1、关闭当前终端窗口,重新打开一个新终端窗口就能生效
2、输入“source ~/.bashrc”命令,立即生效
有效期限:永久有效
用户局限:仅对当前用户
修改方法三:
通过修改profile文件:
vim /etc/profile
/export PATH //找到设置PATH的行,添加
export PATH=/usr/local/mongodb/bin:$PATH
生效方法:系统重启
有效期限:永久有效
用户局限:对所有用户
修改方法四:
通过修改environment文件:
vim /etc/environment
在PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"中加入“:/usr/local/mongodb/bin”
生效方法:系统重启
有效期限:永久有效
防火墙
1.查看当前防火墙状态:
firewall-cmd --state
2.开启防火墙
systemctl start firewalld
service firewalld start
3.关闭防火墙:
systemctl stop firewalld
service firewalld stop