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.
- 仮想マシンを作成する場合、すなわちグラフィックK40c PCIデバイスを追加
- 大きなルートディレクトリを分割する際ゾーニング、350G以上
- 通常のインストールの完了後と変更静的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
- インストールの前にいくつかの準備作業
- 仮想マシンのネットワークXshellピア接続内で使用するツール(非必須)
- 他のマシンからマシンにインストールする必要なソフトウェアを達しました
scp -r software/ 192.168.1.30:root/
- 検出グラフィック
lspci
- ダウンロードドライバカード(レディ)による
https://www.nvidia.cn/Download/index.aspx
Anaconda3をインストール2.
- インストールの依存関係bunzip2
yum install -y bzip2
- インストールAnaconda3
bash Anaconda3-2019.03-Linux-x86_ 64.sh
- 変更との.bashrcファイルを実行
vi /root/.bashrc
# 添加export PATH=/root/anaconda3/bin:$PATH
source ~./bashrc
python # 验证python版本
- リモートアクセス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/'
- スタートjupyterノート:
nohup jupyter lab --allow-root &
- ログインjupyterラボ
http://服务器ip地址:8888/lab
- ルータを介して、ネットワークが外部のネットワークにマッピングされ、外部ネットワークはjypyterlabアクセスすることができます
グラフィックスドライバをインストールします3。
- 私のカーネルバージョンを表示します。
[root@host8 ~]# uname -r
3.10.0-862.el7.x86_64
- カーネルバージョンのダウンロードの依存関係を従います
- カーネル-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
- ヌーボーモジュールのロードをブロック
echo -e "blacklist nouveau\noptions nouveau modeset=0" > /etc/modprobe.d/blacklist.conf
- initramfsイメージファイルを再構築
mv /boot/initramfs-$(uname -r).img /boot/initramfs-$(uname -r).img.bak
dracut /boot/initramfs-$(uname -r).img $(uname -r)
- インストールスクリプトを実行
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
- インストールのCUDA
cd %filename
sh cuda_9.0.176_384.81_linux.run
- 選択するために、プロンプトに従います
# q可以直接到达协议底部
# 是否安装NVIDIA driver? no
# 其他选yes或默认
- 環境変数を追加
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}} # 保存退出
- 環境変数
$ソース〜/ .bashrcに - インストール結果を確認するCUDA
cuda-install-samples-9.0.sh ~
cd ~/NVIDIA_CUDA-9.0_Samples/5_Simulations/nbody
make
./nbody
- ドライブのバージョンとCUDAのバージョンことを確認します。
cat /proc/driver/nvidia/version
nvcc -V
5.インストールcudnn
- ダウンロードcudnn(レディ)
- インストール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*
- cudnnを確認します
...似乎没有验证?找不到了
6.インストールTensorFlow、Pytorch
- パッケージをインストールする準備ができました
- tensorflow_ GPU-2.0.0-CP37-cp37m-manylinux2010のx86 _64.whl
- トーチ-1.3.1-CP37-cp37m-manylinux1_のx86 _64.whl
- インストールTensorFlow
pip install tensorflow_ _gpu-2.0.0-cp37-cp37m-manylinux2010_ x86 _64.whl
- 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))
- インストールPytorch
pip install torch-1.3.1-cp37-cp37m-manylinux1_ x86 _64.whl
- Pytorchを確認
$ python
>>> import torch
>>> torch.__version__
付録1:オンCentOS7 LVMパーティション調整(resize2fsの:スーパーブロックにおける不良マジック番号開こうとしながら...)
ソリューション:
①LVMにパーティションの種類を確認する
②homeパーティションが未使用スペースをたくさん持っている表示、ホーム/にスペースを割り当てることにしました
>「/」>>再割当て家の家にスペースを追加するためにアンロードホーム>> >>削除ホーム>フォーマットの完全な家>>- 彼が使用するコマンドになります。
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:
- ダウンロードtensorflow:https://pypi.org
- ダウンロードcudnn:https://developer.nvidia.com/cudnn
- ダウンロードPytorch:https://developer.nvidia.com/cuda-toolkit
...
リファレンス
- ゼロドライブの取り付けCentos7 + GPU + cuda9.0 + cudnn + theano
- NVIDIAのグラフィックスドライバがインストールcentos7
- Ubuntu16.04 +アナコンダ+ Cuda9.0 + cudnn7.0 + Tensorflow + Pytorch深い学習環境の設定
- NVIDIA-1080tiドライブ、CUDA、cudnn、TensorFlowを取り付けCentOS7.3
- centos7 python3.5に基づいTensorflow1.9.0をマウント
- centos7に設定Jupyterラボサーバー
- Jupyterディレクトリ(Linuxシステム)を保存デフォルトを変更
- CentOS7 LVMパーティション調整で