[mephi-hpc] Пример установки TensorFlow для GPU на Basis и Tensor

anikeev anikeev at ut.mephi.ru
Wed Jan 18 17:06:58 MSK 2023


Уважаемые пользователи!

Вашему вниманию предлагается пример установки TensorFlow для GPU на
кластеры Basis и Tensor.

ВНИМАНИЕ! TensorFlow для GPU требует использования несвободных
приложений NVIDIA CUDA Toolkit и NVIDIA CuDNN. Внимательно ознакомьтесь
с лицензиями этих приложений перед установкой!

https://docs.nvidia.com/cuda/eula/index.html
https://docs.nvidia.com/deeplearning/cudnn/sla/index.html

Обратите внимание, что эти лицензии ограничивают дальнейшее
распостранение, коллективную работу и включают пункты об экспортном
контроле.

Обратите внимание, что, согласно официальной документации, TensorFlow
требует специальные версии CUDA Toolkit и CuDNN, не совпадающие с
установленными на кластерах системно.

https://www.tensorflow.org/install/pip

Пример установки:

anikeev at basis:~$ curl
https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh -
o Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
...
Do you accept the license terms? [yes|no]
>>> yes

Miniconda3 will now be installed into this location:
/home/anikeev/miniconda3

  - Press ENTER to confirm the location
  - Press CTRL-C to abort the installation
  - Or specify a different location below

[/home/anikeev/miniconda3] >>> /mnt/pool/6/anikeev/tf/miniconda3
PREFIX=/mnt/pool/6/anikeev/tf/miniconda3
...
Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[no] >>> yes
...
anikeev at basis:~$ source ~/.bashrc
(base) anikeev at basis:~$ conda -V
conda 22.11.1
(base) anikeev at basis:~$
(base) anikeev at basis:~$ conda create --name tf python=3.9
...
Proceed ([y]/n)? y
...
(base) anikeev at basis:~$ conda install -c conda-forge cudatoolkit=11.2
cudnn=8.1.0
...
Proceed ([y]/n)? y
...
(base) anikeev at basis:~$ export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/
(base) anikeev at basis:~$ mkdir -p $CONDA_PREFIX/etc/conda/activate.d
(base) anikeev at basis:~$ echo 'export
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$CONDA_PREFIX/lib/' >
$CONDA_PREFIX/etc/conda/activate.d/env_vars.sh
(base) anikeev at basis:~$ pip install tensorflow
(base) anikeev at basis:/mnt/pool/6/anikeev/tf$ cat tf_test.sh 
#!/bin/bash
#
#SBATCH --partition=gpu
#SBATCH --nodes=1
#SBATCH --gres=gpu:1
#SBATCH --gres-flags=enforce-binding
#SBATCH --ntasks=1
#SBATCH --time=2:00:00

python3 -c "import tensorflow as tf;
print(tf.config.list_physical_devices('GPU'))"
python3 -c "import tensorflow as tf;
tf.debugging.set_log_device_placement(True); a = tf.constant([[1.0,
2.0, 3.0], [4.0, 5.0, 6.0]]); b = tf.constant([[1.0, 2.0], [3.0, 4.0],
[5.0, 6.0]]); c = tf.matmul(a, b); print(c)"
(base) anikeev at basis:/mnt/pool/6/anikeev/tf$ sbatch tf_test.sh
(base) anikeev at basis:/mnt/pool/6/anikeev/tf$ tail slurm-5382.out 
tf.Tensor(
[[22. 28.]
 [49. 64.]], shape=(2, 2), dtype=float32)
input: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
_EagerConst: (_EagerConst):
/job:localhost/replica:0/task:0/device:GPU:0
output_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0
a: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
b: (_Arg): /job:localhost/replica:0/task:0/device:GPU:0
MatMul: (MatMul): /job:localhost/replica:0/task:0/device:GPU:0
product_RetVal: (_Retval): /job:localhost/replica:0/task:0/device:GPU:0


-- 
С уважением,
ведущий инженер отдела UNIX-технологий НИЯУ МИФИ,
к.ф.-м.н. Аникеев Артем.
email: aaanikeyev at mephi.ru, anikeev at ut.mephi.ru

Best regards,
MEPhI UNIX-technology department lead engineer,
Artem Anikeev, Ph.D.
e-mail: aaanikeyev at mephi.ru, anikeev at ut.mephi.ru






More information about the hpc mailing list