deephealthproject / eddl

European Distributed Deep Learning (EDDL) library. A general-purpose library initially developed to cover deep learning needs in healthcare use cases within the DeepHealth project.
https://deephealthproject.github.io/eddl/
MIT License
34 stars 10 forks source link

Script to run all examples #250

Closed salvacarrion closed 3 years ago

salvacarrion commented 3 years ago

In order to test that every example is working properly, it would be convenient to create a script that executes 1-5 epochs of every example for CPU, GPU, and CUDNN, if the loss/accuracy has increase w.t.r the first epoch or some predefined value.

Example:

We could write something like this: https://github.com/deephealthproject/eddl/tree/develop/scripts/tests

run_tests.sh:

# Download source code
git clone https://github.com/deephealthproject/eddl.git
cd eddl/

# Set source and building path
SOURCE_PATH=$(pwd)
BUILD_PATH=build

# Compile for CPU ##########################
# Remove and install dependencies
conda remove --name eddl --all
conda env create -f environment-cpu.yml
conda activate eddl

# Remove and create build path
rm -R $BUILD_PATH
mkdir $BUILD_PATH

# Generate CPU makefiles
cmake -H${SOURCE_PATH} -B${BUILD_PATH} -DBUILD_TARGET=CUDNN  -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX  -DCMAKE_CXX_COMPILER=/usr/bin/g++-7

# Compile
(cd $BUILD_PATH && make -j$(nproc))

# Run examples
 ./run_examples cpu 5  # build_target num_epochs

# Compile for GPU ##########################
# Remove and install dependencies
conda remove --name eddl --all
conda env create -f environment-cpu.yml
conda activate eddl

# Remove and create build path
rm -R $BUILD_PATH
mkdir $BUILD_PATH

# Generate GPU makefiles
cmake -H${SOURCE_PATH} -B${BUILD_PATH} -DBUILD_TARGET=GPU  -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc -DCMAKE_CXX_COMPILER=/usr/bin/g++-7

# Compile
(cd $BUILD_PATH && make -j$(nproc))

# Run examples
 ./run_examples gpu 5  # build_target num_epochs

# Compile for CUDNN ##########################
# Remove and install dependencies
conda remove --name eddl --all
conda env create -f environment-cpu.yml
conda activate eddl

# Remove and create build path
rm -R $BUILD_PATH
mkdir $BUILD_PATH

# Generate CUDNN makefiles
cmake -H${SOURCE_PATH} -B${BUILD_PATH}  -DBUILD_TARGET=CUDNN  -DCMAKE_PREFIX_PATH=$CONDA_PREFIX -DCMAKE_INSTALL_PREFIX=$CONDA_PREFIX -DCMAKE_CUDA_COMPILER=/usr/local/cuda/bin/nvcc -DCMAKE_CXX_COMPILER=/usr/bin/g++-7

# Compile
(cd $BUILD_PATH && make -j$(nproc))

# Run examples
 ./run_examples cudnn 5  # build_target num_epochs

run_examples.sh:

BUILD_TARGET=$1
EPOCHS=$2
$BUILD_PATH=build

./$BUILD_PATH/bin/cifar_conv $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/cifar_conv_da $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/cifar_resnet $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/cifar_resnet50_da_bn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/cifar_resnet_da_bn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/cifar_vgg16 $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/cifar_vgg16_bn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/cifar_vgg16_gn $BUILD_TARGET $EPOCHS --min-acc 0.3

./$BUILD_PATH/bin/drive_seg $BUILD_TARGET $EPOCHS --min-acc 0.3

./$BUILD_PATH/bin/mnist_auto_encoder $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_conv $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_conv1D $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_conv_dice $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_losses $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_mlp $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_mlp_da $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_mlp_func $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_mlp_initializers $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_mlp_regularizers $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_mlp_train_batch $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_rnn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/mnist_rnn_func $BUILD_TARGET $EPOCHS --min-acc 0.3

./$BUILD_PATH/bin/nlp_machine_translation $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/nlp_sentiment_gru $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/nlp_sentiment_lstm $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/nlp_sentiment_rnn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/nlp_text_generation $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/nlp_video_to_labels $BUILD_TARGET $EPOCHS --min-acc 0.3

./$BUILD_PATH/bin/onnx_cifar_conv $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_cifar_conv_da $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_cifar_resnet $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_cifar_resnet50_da_bn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_cifar_resnet_da_bn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_cifar_vgg16 $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_cifar_vgg16_bn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_cifar_vgg16_gn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_drive_seg $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_export $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_import $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_auto_encoder $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_conv $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_conv1D $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_conv_dice $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_losses $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_mlp $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_mlp_da $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_mlp_func $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_mlp_initializers $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_mlp_regularizers $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_mlp_train_batch $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_rnn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_mnist_rnn_func $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_nlp_machine_translation $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_nlp_sentiment_lstm $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_nlp_sentiment_rnn $BUILD_TARGET $EPOCHS --min-acc 0.3
./$BUILD_PATH/bin/onnx_pointer $BUILD_TARGET $EPOCHS --min-acc 0.3
jonandergomez commented 3 years ago

First version of a script to run all examples available as scripts/tests/run_examples_with_sanitizers.sh in the same directory previous examples exists, i.e. https://github.com/deephealthproject/eddl/tree/develop/scripts/tests

It will be updated during next days till including all the examples but the internal stress tests.

salvacarrion commented 3 years ago

Done