Installation of *deepG* === ###### tags: `Howto` ## on Luna ```bash export LC_ALL="en_US.UTF-8" export LD_LIBRARY_PATH=LD_LIBRARY_PATH:/usr/local/cuda-10.0/lib64/ ``` - Use `nvidia-smi` to check availability of GPUs on the server ### Installation of dependencies ```r install.packages("hdf5r", configure.args="--with-hdf5=/usr/bin/h5cc") install.packages("devtools") install.packages("tensorflow") library(tensorflow) install_tensorflow(version="2.0.0-gpu", method = "conda", conda_python_version = "3.7") ``` You can test if `tensorflow` is installed correct by typing `tensorflow::tf_config()`. The expected output is: ``` TensorFlow v2.0.0 (/usr/local/lib/python2.7/dist-packages/tensorflow) Python v3.7 (/usr/bin/python) ``` ### Installation of *deepG* ``` devtools::install_github("hiddengenome/deepG") library(deepG) ``` ### Installation of additional python packages If you need to install other python packages to same environment: ```bash conda activate r-reticulate pip install package_name ``` ## on DGX-1 login ```bash ssh username@grid.bifo.helmholtz-hzi.de ssh pmuench@bioinf026 screen -r ``` install R ```bash export TAR="/bin/tar" conda env list conda activate r-reticulate conda install -c r r which R ``` install packages ```r install.packages("devtools") devtools::install_github("rstudio/tensorflow") install.packages("hdf5r", configure.args="--with-hdf5=/usr/bin/h5cc") devtools::install_github("hiddengenome/deepG") #install_tensorflow(version="2.0.0-gpu", method = "conda", conda_python_version = "3.7") tensorflow::tf$`__version__` ``` ```R library(deepG) trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, use.cudnn = TRUE, run.name ="dgx-single", layer.size = 512, tensorboard.log = "/vol/projects/pmuench/tensorboard") trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, layer.size = 512, gpu.num = 7, merge.on.cpu = FALSE, use.multiple.gpus = TRUE, use.cudnn = TRUE, tensorboard.log = "/vol/projects/pmuench/tensorboard", run.name ="dgx-multi") ``` ## on other grid servers This is what I needed to run to install it, e.g. you might need to change the paths ```bash unset PYTHONPATH export PATH=/home/pmuench/anaconda3/envs/r-retriculate/bin:/home/pmuench/anaconda3/bin:/home/pmuench/anaconda3/condabin:/usr/lib64/openmpi/bin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin export LD_LIBARY_PATH=/home/pmuench/anaconda3/envs/r-retriculate/lib/ ``` ```r remove.packages("deepG", lib = .libPaths()) install.packages("hdf5r", configure.args="--with-hdf5=/usr/bin/h5cc") devtools::install_github('hiddengenome/deepG@statesWithAmbNucleotides') library(deepG) ``` ## server independent options ### disable eager mode ``` library(tensorflow) tf$compat$v1$disable_eager_execution() ``` ## multi-GPU trainings ### test with dummy generator ```R devtools::install_github("hiddengenome/deepG@dummyGenerator") # single trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, use.cudnn = TRUE, run.name ="dgx-single-dummy", layer.size = 512, dummyGen = TRUE) # multiple trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, use.cudnn = TRUE, run.name ="dgx-mult-dummy", layer.size = 512, dummyGen = TRUE, gpu.num = 7, merge.on.cpu = FALSE, use.multiple.gpus = TRUE) # 3 GPUS trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, use.cudnn = TRUE, run.name ="dgx-mult3-dummy", layer.size = 512, dummyGen = TRUE, gpu.num = 3, merge.on.cpu = FALSE, use.multiple.gpus = TRUE) ``` ### non-eager mode sometimes e.g. for multi-GPU learning you need to disable eager mode ```r library(deepG) library(tensorflow) tf$compat$v1$disable_eager_execution() # 352ms/step with dummy on 2 GPUS trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, use.cudnn = TRUE, run.name ="dgx-mult-dummy-non-eager", layer.size = 512, dummyGen = TRUE, gpu.num = 2, merge.on.cpu = FALSE, use.multiple.gpus = TRUE, steps.per.epoch = 500) # 333ms/step without dummy on 2 GPUs trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, use.cudnn = TRUE, run.name ="dgx-mult-dummy-non-eager", layer.size = 512, dummyGen = FALSE, gpu.num = 2, merge.on.cpu = FALSE, use.multiple.gpus = TRUE, steps.per.epoch = 500) # test 1 CPU scope trainNetwork(path = "/vol/projects/pmuench/ncbi_genomes/train/", path.val = "/vol/projects/pmuench/ncbi_genomes/test/", maxlen = 100, use.cudnn = TRUE, run.name ="dgx-mult-2", batch.size = 4096, dummyGen = TRUE, gpu.num = 8, merge.on.cpu = FALSE, use.multiple.gpus = TRUE, steps.per.epoch = 500, layer.size = 512, layers.lstm = 4,max.queue.size = 10000, use.codon.cnn =FALSE) ```