Tensorflow

应用介绍

TensorFlow™是一个基于数据流编程的符号数学系统,被广泛应用于各类机器学习算法的编程实现。TensorFlow支持多种客户端语言下的安装和运行,平台暂只支持python语言。

在GPU加速计算上,TensorFlow支持在Linux和Window系统下使用统一计算架构(CUDA)高于3.5的NVIDIA GPU,本平台使用CUDA10.1版本,安装tensorflow2.x版本均可正常使用,推荐安装最新的tensorflow版本。

使用指南

在公共集群中选择GPU集群后,点击控制台,进入终端。

Conda环境变量配置

GPU集群已安装Anaconda,需要在自己的根目录下通过编辑``.bashrc``文件来配置Anaconda的路径。

.bashrc用于存储并加载个人的终端配置和环境变量。bash在每次启动时都会加载/ .bashrc文件的内容。

~/.bashrc文件中添加:export PATH=/opt/app/anaconda3/bin:$PATH:

$ echo 'export PATH=/opt/app/anaconda3/bin:$PATH' >> ~/.bashrc

然后运行source命令使配置的环境变量生效:

$ source ~/.bashrc

创建TensorFlow环境

在终端输入命令创建tensorflow环境:

$ conda create --name tensorflow python=3.7

提示

命令中的tensorflow为环境名称,用户可自行更改。

随后Anaconda会检查并提示需要在虚拟环境安装一些包,输入y确认。等待环境创建完毕后,需要激活环境,使用以下命令激活:

$ source activate tensorflow

关于Conda的使用,可参考Conda指南

安装tensorflow-gpu

在创建的tensorflow环境中,输入以下命令安装tensorflow:

$ conda install tensorflow-gpu

该命令默认安装最新的TensoFlow版本。如果想指定安装的版本,在上述命令后添加‘=version’。等待安装结束后即可使用TensorFlow。

使用Slurm提交单节点任务

平台使用Slurm作业管理系统来进行作业调度。因此,要使用平台计算节点,就需要使用Slurm提交需要运行的程序。以下是使用sbatch脚本方式提交的样例test.sh。

1#!/bin/csh
2#SBATCH --nodes=1
3#SBATCH --ntasks-per-node=1
4#SBATCH --time=4:00:00
5python tf_test.py

sbatch用于配置作业参数,--nodes为使用的节点数,--ntasks-per-node为每个节点所运行的任务数。其他详细的参数配置参考该文档

然后在终端执行:sbatch test.sh,Slurm提交作业后,会将日志输出到用户根目录下,文件名为slurm-作业编号.out

使用Slurm多节点提交任务

如果需要多个节点多个GPU进行计算,则需要在代码中添加TensorFlow提供的分布式计算API:

1tf.distribute.cluster_resolver.SlurmClusterResolver(
2    jobs=None,
3    port_base=8888,
4    gpus_per_node=None, gpus_per_task=None,
5    tasks_per_node=None, auto_set_gpu=True, rpc_layer='grpc')

然后在sbatch脚本中,配置与之匹配的节点数目。

API详细信息:

https://tensorflow.google.cn/api_docs/python/tf/distribute/cluster_resolver/SlurmClusterResolver