原因
新申请了几台服务器,有GPU机器以及CPU机器,需要给配置下运行环境。对于GPU与CPU而言,大致流程差不多,只是GPU会麻烦一些,需要安装NVIDIA相关的驱动及加速包等。不过有了docker后,可以将能运行好的项目用docker打包后,直接在新机器上部署就能跑动了,但这比较适用于服务端部署时候使用,如果是个人开发,还是建议单独配置下环境较好。
分配到服务器后,大致需要安装及配置以下几项内容:
- 联系运维开通个人账户,及机器访问外网权限及端口权限;
rz/sz
: SecureCRT上传与保存文件命令;Anaconda
:便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本;git
: 版本控制;docker
: 开源的应用容器引擎;CUDA
: NVIDIA推出的运算平台;CUDNN
: 用于深度神经网络的GPU加速库;nccl
: 多卡GPU并行
1. 申请权限
对于有的公司而言,可能个人对机器拥有所有的权限,这一步就无需进行了。但有的公司对于权限管理比较严格,干啥都需要发邮件申请权限,需要向运维组或者平台组申请相应的权限,主要有:
-
sudo权限;
-
外网访问权限、端口权限;
-
公司git项目访问权限;
-
… …
2. sz/rz安装
sz
是利用ZModem协议来从Linux服务器传送文件到本地,一次可以传送一个或多个文件;rz
是相对应的从本地上传文件到Linux服务器;
安装也比较简单,终端输入对应系统的命令即可,安装lrzsz
apt-get install lrzsz
yum install lrzsz
使用方法
rz filename # 上传文件
sz filename # 下载文件
注意: rz上传文件时,当有相同名的文件存在时候,无法覆盖,操作被忽略;
相关的命令操作可以参考:
3. Anaconda 安装
Anaconda
是一个便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本的管理器,官网介绍:https://www.anaconda.com/products/individual,这个软件对于需要多种环境及多人共用同一台机器时候非常方便。能够创建多个虚拟环境以满足不同的项目环境需求,避免不同项目所需依赖包的版本不同而导致冲突。
其安装也非常的简单,下载好对应的安装文件后
bash ./Anaconda3-5.2.0-Linux-x86_64.sh
相应的安装步骤网上已经有很多的介绍,这里可以参考以下两个安装教程
注意的地方:
更换conda镜像源:
原始的conda源在
conda install
软件时候比较慢,可以更换为国内的镜像源来实现加速。常用的镜像源有阿里、中科大、清华等# 清华 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ # 中科大的源 conda config –-add channels https://mirrors.ustc.edu.cn/anaconda/pkgs/free/ # 阿里云的源 conda config --add channels http://mirrors.aliyun.com/pypi/simple/
更换pip镜像源:
原始的pip源在
pip install
软件时候比较慢,可以更换为国内的镜像源来实现加速。常用的镜像源有阿里、中科大、豆瓣等# 命令法 pip install numpy -i https://pypi.douban.com/simple/ # 创建文件永久法 修改 `~/.pip/pip.conf`并设置内容如下 [global] index-url = https://pypi.douban.com/simple/
4. Git安装
git
是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。这个工具在自己开发项目中,或者是写作开发项目时非常有用,控制版本迭代,而不会因为覆盖让代码丢失。
安装非常简单
apt-get install libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev
apt-get install git
---
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel
yum -y install git-core
这里不做过多的操作介绍,具体可以参考下面的链接
注意的地方:
- 配置个人的用户名称和电子邮件地址,这样在使用的时候不用频繁需要输入账户和密码
git config --global user.name "xxxx" git config --global user.email xxx@xxxx
- 配置别名, 以节省每次提交时输入的字符
git config --global alias.st status git config --global alias.co checkout git config --global alias.ci commit git config --global alias.br branch
5. Docker安装
Docker
是一个开源的应用容器引擎, 它可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
安装非常简单:
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
详细资料请参考
以上是CPU/GPU机器都需要安装的相关软件,如果服务器具有GPU,还需要安装GPU相关的配套软件
这篇文章介绍的比较详细
6. CUDA安装
CUDA
英文全称是Compute Unified Device Architecture,是一个并行计算平台和编程模型,能够使得使用GPU进行通用计算变得简单和优雅。
安装需要查好GPU版本对应的cuda版本,查询地址:
https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
安装比较简单
# 1.下载对应的软件包并安装
# 按需求下载cuda的安装文件 cuda安装包:https://developer.nvidia.com/cuda-toolkit-archive
sudo sh cuda_9.0.176_384.81_linux.run
# 2.设置环境变量
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/cuda-9.0/lib64
export PATH=$PATH:/usr/local/cuda-9.0/bin
export CUDA_HOME=$CUDA_HOME:/usr/local/cuda-9.0
注意的地方:
一台服务器可以有多版本的cuda,这是由于不同的深度学习工具包所最终依赖的cuda版本不一样,而多位开发人员使用的深度学习工具不统一。
可以在同一台服务器上安装多个cuda版本,只是最终在链接的时候需要修改一下
多版本CUDA切换:
7. CUDNN安装
CUDNN
是NVIDIA打造的针对深度神经网络的加速库,是一个用于深层神经网络的GPU加速库。
安装比较简单:
# 1.下载对应的软件包压缩包
# 按需求下载载cudnn的安装文件:https://developer.nvidia.com/rdp/cudnn-archive
# 2.解压并安装
sudo cp cuda/include/cudnn*.h /usr/local/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/local/cuda/lib64/
sudo chmod a+r /usr/local/cuda/include/cudnn*.h
sudo chmod a+r /usr/local/cuda/lib64/libcudnn*
# 3.查看版本
cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
8. nccl安装
安装 nccl
英伟达官网 https://developer.nvidia.com/nccl/nccl-legacy-downloads
根据自己的 cuda 选择对应的nccl,后面根据自己的 nccl2 和 cuda 版本修改相关命令
总结
网上的教程有很多,找到适合自己的最好,另外对命令慎重,有些命令也不一定对,反而对整体环境造成不可逆的升级等。尽量对每一行的命令做什么操作有所了解。
参考
- https://zhuanlan.zhihu.com/p/32925500
- https://blog.csdn.net/lambert310/article/details/52412059
- https://www.cnblogs.com/believepd/p/10499844.html
- https://www.cnblogs.com/leton/p/11674796.html
- https://blog.csdn.net/ZZXin_/article/details/87951381
- https://blog.csdn.net/weixin_42279044/article/details/83181686
- https://zhuanlan.zhihu.com/p/47330858
- https://my.oschina.net/u/2306127/blog/1801491
- https://segmentfault.com/a/1190000016634056
- https://cloud.tencent.com/developer/article/1528323
- https://blog.csdn.net/weixin_51066144/article/details/129847830