CentOS7 Tensorflowは、コンピューティング環境を構築する(CUDA + cudnn + jupyterlab(Anaconda3)+ pytorch + Tensorflow)

CentOS7ビルドTensorflowコンピューティング環境

注:この記事では、インストール、必然的な省略、参照のために、後者の試験後の思い出に基づいて書かれていました

0ハードウェアとソフトウェアの準備

  • サーバテーブル1(ハード500G、100Gメモリ、メモリ、ハードディスクをGPUに応じて選択することができるGPU K40c)
  • CentOSの-7-x86_64版 - DVD-1804.iso
  • Anaconda3-2019.03-Linux-x86_64.sh
  • cuda_9.0.176 384.81 linux.run
  • cudnn-9.0-のlinux-x64の-v7.6.5.32.solitairetheme8
  • カーネル-develの-3.10.0-862.3.2.el7.x86_64.rpm
  • カーネルヘッダ-3.10.0-862.el7.x86_64.rpm
  • NVIDIA-Linux-x86_64-384.183.run
  • tensorflow_gpu-2.0.0-CP37-cp37m-manylinux2010_x86_64.whl
  • トーチ-1.3.1-CP37-cp37m-manylinux1_x86_64.whl

    CentOS7をインストール1.

  1. 仮想マシンを作成する場合、すなわちグラフィックK40c PCIデバイスを追加
  2. 大きなルートディレクトリを分割する際ゾーニング、350G以上
  3. 通常のインストールの完了後と変更静的IPゲートウェイ
    VIの/ etc /のsysconfig /ネットワーク-スクリプト/のifcfg-ens192
# 把文件内容修改为
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno192 #使用原NAME
UUID=ae0965e7-22b9-45aa-8ec9-3f0a20a85d11# 使用原UUID
ONBOOT=yes
IPADDR0=192.168.1.30  #根据需要填写
PREFIXO0=24
GATEWAY0=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
  1. インストールの前にいくつかの準備作業
  • 仮想マシンのネットワークXshellピア接続内で使用するツール(非必須)
  • 他のマシンからマシンにインストールする必要なソフトウェアを達しました
scp -r software/ 192.168.1.30:root/
  • 検出グラフィック
lspci
  • ダウンロードドライバカード(レディ)による
    https://www.nvidia.cn/Download/index.aspx

Anaconda3をインストール2.

  1. インストールの依存関係bunzip2
yum install -y bzip2
  1. インストールAnaconda3
bash Anaconda3-2019.03-Linux-x86_ 64.sh
  1. 変更との.bashrcファイルを実行
vi /root/.bashrc
# 添加export PATH=/root/anaconda3/bin:$PATH
source ~./bashrc
python   # 验证python版本
  1. リモートアクセスjupyterノートブックの構成機能
  • コンフィギュレーション・ファイルを生成します
jupyter notebook --generate-config
  • オープンipythonは、例えば、123456に暗号テキストパスワードを作成します
ipython
from notebook.auth import passwd
passwd()
Enter password: 123456
Verify password: 123456
'sha1:e00ee9ab9a42:22e8c0dc771612348eeee698cde8ec77fba42e7f'
exit()
  • 生成された暗号文'SHA:XX ...'ダウンコピーし、デフォルトの設定ファイルを変更する
    のvi〜/ .jupyter / jupyter_notebook_config.py
# 将ip设置为*,意味允许任何IP访问
c.NotebookApp.ip = '*'
# 这里的密码就是上边我们生成的那一串
c.NotebookApp.password = 'sha1:xx...'
# 服务器上并没有浏览器可以供Jupyter打开
c.NotebookApp.open_browser = False
# 监听端口设置为8888或其他自己喜欢的端口
c.NotebookApp.port = 8888
# 允许远程访问
c.NotebookApp.allow_remote_access = True
# 文件目录位置
c.NotebookApp.notebook_dir = u'/root/notebooks/'
  1. スタートjupyterノート:
nohup jupyter lab --allow-root &
  1. ログインjupyterラボ
http://服务器ip地址:8888/lab
  1. ルータを介して、ネットワークが外部のネットワークにマッピングされ、外部ネットワークはjypyterlabアクセスすることができます

グラフィックスドライバをインストールします3。

  1. 私のカーネルバージョンを表示します。
[root@host8 ~]# uname -r
3.10.0-862.el7.x86_64
  1. カーネルバージョンのダウンロードの依存関係を従います
  • カーネル-develの-3.10.0-862.3.2.el7.x86_ 64.rpm
  • カーネルヘッダ-3.10.0-862.el7.x86_64.rpm
    注:一貫したEL7の代表CentOS7,3.10.0-862ニーズやカーネルのバージョン
rpm -ivh kernel-devel-3.10.0-862.3.2.el7.x86_ 64.rpm
rpm -ivh kernel-headers-3.10.0-862.el7.x86_64.rpm
  1. ヌーボーモジュールのロードをブロック
echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist.conf
  1. initramfsイメージファイルを再構築
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
  1. インストールスクリプトを実行
chmod u+x NVIDIA-Linux-x86_64-415.13.run
./NVIDIA-Linux-x86_ 64-384.183.run --kernel-source-path=/usr/src/kernels/3.10.0-862.el7.x86_64

6.インストールの検出結果

nvidia-smi
Sun Nov 24 21:25:10 2019       
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 384.183      Driver Version: 384.183      CUDA Version: 9.0      |
|-------------------------------+----------------------+----------------------+
| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |
| Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |
|===============================+======================+======================|
|   0  Tesla K40c          Off  | 00000000:0B:00.0 Off |                    0 |
| 31%   68C    P0   135W / 235W |  10378MiB / 11439MiB |     95%      Default |
+-------------------------------+----------------------+----------------------+
                                                                               
+-----------------------------------------------------------------------------+
| Processes:                                                       GPU Memory |
|  GPU       PID   Type   Process name                             Usage      |
|=============================================================================|
|    0      9632      C   python                                     10365MiB |
+-----------------------------------------------------------------------------+

4.インストールのCUDA

  1. インストールのCUDA
cd %filename
sh cuda_9.0.176_384.81_linux.run
  1. 選択するために、プロンプトに従います
# q可以直接到达协议底部
# 是否安装NVIDIA driver? no
# 其他选yes或默认
  1. 環境変数を追加
    VI〜/ .bashrcの編集#
在文档末尾添加:
export PATH=/usr/local/cuda-9.0/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-9.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} # 保存退出
  1. 環境変数
    $ソース〜/ .bashrcに
  2. インストール結果を確認するCUDA
cuda-install-samples-9.0.sh ~
cd ~/NVIDIA_CUDA-9.0_Samples/5_Simulations/nbody
make
./nbody
  1. ドライブのバージョンとCUDAのバージョンことを確認します。
cat /proc/driver/nvidia/version 
nvcc -V

5.インストールcudnn

  1. ダウンロードcudnn(レディ)
  2. インストールcudnn
cd %filepath
mv cudnn-9.0-linux-x64-v7.6.5.32.solitairetheme8 cudnn-9.0-linux-x64-v7.6.5.32.tgz
tar -xzvf cudnn-9.0-linux-x64-v7.tgz
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 /usr/local/cuda/lib64/libcudnn*
  1. cudnnを確認します
...似乎没有验证?找不到了

6.インストールTensorFlow、Pytorch

  1. パッケージをインストールする準備ができました
  • tensorflow_ GPU-2.0.0-CP37-cp37m-manylinux2010のx86 _64.whl
  • トーチ-1.3.1-CP37-cp37m-manylinux1_のx86 _64.whl
  1. インストールTensorFlow
pip install tensorflow_ _gpu-2.0.0-cp37-cp37m-manylinux2010_ x86 _64.whl 
  1. TensorFlowを確認
#Open a new terminal if not done yet
activate tensorflow
python
>>> import tensorflow as tf
>>> hello = tf.constant('Hello, TensorFlow!')
>>> sess = tf.Session()
>>> print(sess.run(hello))
  1. インストールPytorch
pip install torch-1.3.1-cp37-cp37m-manylinux1_ x86 _64.whl 
  1. Pytorchを確認
$ python
>>> import torch
>>> torch.__version__

付録1:オンCentOS7 LVMパーティション調整(resize2fsの:スーパーブロックにおける不良マジック番号開こうとしながら...)

  1. ソリューション:
    ①LVMにパーティションの種類を確認する
    ②homeパーティションが未使用スペースをたくさん持っている表示、ホーム/にスペースを割り当てることにしました
    >「/」>>再割当て家の家にスペースを追加するためにアンロードホーム>> >>削除ホーム>フォーマットの完全な家>>

  2. 彼が使用するコマンドになります。
df -h                     # 查看磁盘空间
lsblk                    # 查看块设备详情
fdisk -l                        # 查看分区详情
lvremove\lvcreate               # 逻辑卷删除/创建
lvdisplay\vgdisplay\pvdisplay   #查看逻辑卷/卷组/物理卷
xfs_growfs                      # 加载xfs_growfs

3.手順:

  • 分析:ビューのパーティションの詳細、それは家庭のスペースでルートパーティションに転送することができ、LVM論理ボリュームとしてSDA2を見ます
# lsblk
NAME            MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0               2:0    1     4K  0 disk
sda               8:0    0   300G  0 disk
├─sda1            8:1    0   500M  0 part /boot
└─sda2            8:2    0 299.5G  0 part
  ├─centos-root 253:0    0    50G  0 lvm  /
  ├─centos-swap 253:1    0   9.8G  0 lvm  [SWAP]
  └─centos-home 253:2    0 239.6G  0 lvm  /home
sr0              11:0    1  1024M  0 rom
  • /ホームのバックアップ
# mkdir /tmp/home
# cp -r /home/* /tmp/home
  • umountのアンロード
# umount /home
umount: /home: target is busy.
        (In some cases useful info about processes that use
         the device is found by lsof(8) or fuser(1))
# 如果提示busy,则使用fuser解除占用
# fuser -m -v -i -k /home
  • 削除自宅論理ボリューム(LV)、スペース空いたボリュームグループ(VG)の家に来ました
# lvremove /dev/mapper/centos-home
Do you really want to remove active logical volume home? [y/n]: y
  Logical volume "home" successfully removed
  • 再調整/サイズ
# lvextend -L 250G /dev/mapper/centos-root  # 调整到250G
Size of logical volume centos/root changed from 50.00 GiB (12800 extents) to 250.00 GiB (64000 extents).
Logical volume root successfully resized.
  • xfs_growfs更新
# xfs_growfs /dev/mapper/centos-root
meta-data=/dev/mapper/centos-root isize=256    agcount=4, agsize=3276800 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=13107200, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal               bsize=4096   blocks=6400, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 13107200 to 65536000
  • スペースの残りの部分は、ホーム内に再分類しました
# lvcreate -l +100%free -n home centos      # -n 指定lv的名字,centos是vg的名字 
  Logical volume "home" created.
  • フォーマットが作成されたことを忘れないでください
# mkfs.xfs /dev/centos/home
meta-data=/dev/centos/home       isize=256    agcount=4, agsize=2601472 blks
         =                       sectsz=4096  attr=2, projid32bit=1
         =                       crc=0        finobt=0
data     =                       bsize=4096   blocks=10405888, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=0
log      =internal log           bsize=4096   blocks=5081, version=2
         =                       sectsz=4096  sunit=1 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
  • 再マウントビュー
# mount /dev/mapper/centos-home /home
  • 完成
(base) [root@localhost ~]# df -h
Filesystem               Size  Used Avail Use% Mounted on
/dev/mapper/centos-root  400G  114G  287G  29% /
devtmpfs                  50G     0   50G   0% /dev
tmpfs                     50G     0   50G   0% /dev/shm
tmpfs                     50G  9.0M   50G   1% /run
tmpfs                     50G     0   50G   0% /sys/fs/cgroup
/dev/sda1                950M  164M  787M  18% /boot
tmpfs                    9.9G   36K  9.9G   1% /run/user/0
/dev/mapper/centos-home   20G   33M   20G   1% /home
  • 家のバックアップと復元

付録2:

  1. ダウンロードtensorflow:https://pypi.org
  2. ダウンロードcudnn:https://developer.nvidia.com/cudnn
  3. ダウンロードPytorch:https://developer.nvidia.com/cuda-toolkit
    ...

リファレンス

  1. ゼロドライブの取り付けCentos7 + GPU + cuda9.0 + cudnn + theano
  2. NVIDIAのグラフィックスドライバがインストールcentos7
  3. Ubuntu16.04 +アナコンダ+ Cuda9.0 + cudnn7.0 + Tensorflow + Pytorch深い学習環境の設定
  4. NVIDIA-1080tiドライブ、CUDA、cudnn、TensorFlowを取り付けCentOS7.3
  5. centos7 python3.5に基づいTensorflow1.9.0をマウント
  6. centos7に設定Jupyterラボサーバー
  7. Jupyterディレクトリ(Linuxシステム)を保存デフォルトを変更
  8. CentOS7 LVMパーティション調整で

おすすめ

転載: www.cnblogs.com/xianyuxianyuxian/p/11982831.html