背景:我们需要在CentOS 6.3服务器上配置PyTorch与gcc,以便运行相应的程序。
目录
方案一: 基于 conda 环境安装 pytorch-1.0,然后打包整个环境,直接在集群中使用。
优点:省去了编译步骤,后续升级支持简单。
缺点:发布版本往往对分布式训练支持不佳,一些特性需要通过源码编译才能集成进去。
方案二: 基于 pytorch-1.0 源码编译。(暂时使用此方案,若后续遇到问题行不通时,再回来尝试方案一)
优点:可以根据需要集成新特性。
缺点:在 CentOS6.3 系统上编译会遇到各种问题,风险高,可能需要大量的 hack 和 workaround。
一、版本查看
此版本为最初版本,安装后版本会发生变化。
1.1 CentOS版本查看
cat /etc/issue
[[email protected] ~]$ cat /etc/issue
CentOS release 6.3 (Final)
Kernel \r on an \m
关于CentOS:
https://baike.baidu.com/item/centos/498948?fr=aladdin
中文意思是社区企业操作系统,是Linux发行版之一。,CentOS是操作系统,redhat的再编译版本,免费的服务器系统
1.2 CUDA版本
查看CUDA驱动版本
驱动版本即为cuda driver version
输入nvidia-smi,看到我们服务器上的为:
NVIDIA-SMI 384.81 Driver Version: 384.81
输入 cat /proc/driver/nvidia/version
NVRM version: NVIDIA UNIX x86_64 Kernel Module 384.81 Sat Sep 2 02:43:11 PDT 2017
GCC version: gcc version 4.8.2 (GCC)
CUDNN
[[email protected] ~]$ cat /usr/local/cuda/version.txt
CUDA Version 7.5.18
[[email protected] ~]$ cat /usr/local/cuda/include/cudnn.h | grep CUDNN_MAJOR -A 2
cat: /usr/local/cuda/include/cudnn.h: No such file or directory
看上去,服务器上并没有安装CUDNN
另个服务器上:
[xingxiangrui@yq01-gpu-yq-face-21-5 ~]$ cat /usr/local/cuda/version.txt
CUDA Version 8.0.44
1.3 python版本
[[email protected] ~]$ python
Python 2.6.6 (r266:84292, Jun 18 2012, 14:18:47)
[GCC 4.4.6 20110731 (Red Hat 4.4.6-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
二、下载镜像
http://wiki.baidu.com/pages/viewpage.action?pageId=666085497
2.1 环境下载
优先下载百度给的镜像
我们下载python3.6配上的 PyTorch 1.0
# Python3.6 + PyTorch1.0
[[email protected] ~]$ wget -e "http_proxy=cp01-sys-hic-gpu-02.cp01:8888" http://cp01-sys-hic-gpu-02.cp01/HGCP_DEMO/py36_pytorch1.0_env0.1.3.tar.gz
--2019-03-21 15:37:44-- http://cp01-sys-hic-gpu-02.cp01/HGCP_DEMO/py36_pytorch1.0_env0.1.3.tar.gz
Resolving cp01-sys-hic-gpu-02.cp01... 10.92.96.33
Connecting to cp01-sys-hic-gpu-02.cp01|10.92.96.33|:8888... connected.
Proxy request sent, awaiting response... 200 OK
Length: 1021679842 (974M) [application/octet-stream]
Saving to: "py36_pytorch1.0_env0.1.3.tar.gz"
100%[====================================>] 1,021,679,842 528K/s in 33m 38s
2019-03-21 16:11:23 (494 KB/s) - "py36_pytorch1.0_env0.1.3.tar.gz" saved [1021679842/1021679842]
2.2 解压环境
tar xvzf py36_pytorch1.0_env0.1.3.tar.gz
关于解压 xvzf含义
https://zhidao.baidu.com/question/501957191.html
解压后,产生一个env文件夹。
[[email protected] ~]$ ls
env py36_pytorch1.0_env0.1.3.tar.gz
[[email protected] ~]$ env/bin/python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34)
[GCC 7.3.0] on linux
注意,原始服务器上的python版本为2.6.6,直接键入python命令行即可。
我们的版本为3.6.8,打开方式为输入 env/bin/python ***
2.3 安装第三方包
# 1. 使用 pip 安装
env/bin/python -m pip install [包文件] # 注意,直接使用 env/bin/pip 安装会有路径依赖问题
# 2. 从源码编译安装,一般在源码目录下会提供 setup.py 编译&&安装脚本
env/bin/python setup.py # 注意事项:如果第三方库的 setup.py 操作涉及到C/C++源码编译,请务必确认如下事项:
# 1. GCC 为 jumbo 安装的 gcc5.2,与pytorch的工具链对齐,详细原因见 http://wiki.baidu.com/pages/viewpage.action?pageId=666651706
# 2. `strings /lib/libc.so.6 | grep GLIBC` `strings /lib64/libc.so.6 | grep GLIBC`最高版本为 GLIBC_2.12。否则可能出现本地能运行但集群无法运行的情况。
需要注意的是输入为 env/bin/python -m pip intstall , 不可以直接用env/bin/pip
(上面那个服务器,因为CUDNN版本问题导致torch引入出现bug,服务器与内网的连接依然有问题,于是)
三、安装成功
3.1 如上流程
下载安装包
# Python3.6 + PyTorch1.0
wget -e "http_proxy=cp01-sys-hic-gpu-02.cp01:8888" http://cp01-sys-hic-gpu-02.cp01/HGCP_DEMO/py36_pytorch1.0_env0.1.3.tar.gz
解压与安装
tar xvzf py36_pytorch1.0_env0.1.3.tar.gz
3.2 安装成功
[xingxiangrui@yq01-gpu-yq-face-21-5 ~]$ ls
env py36_pytorch1.0_env0.1.3.tar.gz
[xingxiangrui@yq01-gpu-yq-face-21-5 ~]$ env/bin/python
Python 3.6.8 |Anaconda, Inc.| (default, Dec 30 2018, 01:22:34)
[GCC 7.3.0] on linux
加入torch,未报错就成功
>>> import torch
>>>
此时已经可以运行cycle GAN
四、安装gcc
扩展gcc版本一起匹配,这样可以加入扩展的工具包。
4.1 安装Jumbo
#下载
bash -c "$( curl http://jumbo.baidu.com/install_jumbo.sh )"; source ~/.bashrc
#运行
jumbo
4.2 用Jumbo装gcc 5.2
查找可安装的版本
jumbo search gcc
[xingxiangrui@yq01-gpu-yq-face-21-5 ~]$ jumbo search gcc
colorgcc 1.3.2-1
A Perl wrapper to colorize the output of compilers with warning/error
messages matching the gcc output format
gcc46 4.6.3-5
The GNU Compiler Collection (4.6.x)
gcc48 4.8.3-1
The GNU Compiler Collection (4.8.x)
gcc49 4.9.2-1
The GNU Compiler Collection (4.9.x). The libsanitizer is not included,
since it does not compile well on linux 2.6.9.
gcc5 5.2.0-1
The GNU Compiler Collection (5.x).
gcc53 5.3.0-1
The GNU Compiler Collection (5.3).
安装
[xingxiangrui@yq01-gpu-yq-face-21-5 ~]$ jumbo install gcc5
==> Calculating dependencies....
==> Packages to be installed:
#。。。。。
==> Installation of gcc5 done!
==> Installation done.