git submodule update --init --recursive
pip3 install pybind11
g++ python_bindings.cc -o robots_core$(python3-config --extension-suffix) -O3 -Wall -Wextra -Iinclude -Iextern/RobotsCore/extern/pybind11/include -std=c++17 -fPIC $(python3 -m pybind11 --includes) -shared -Iextern/RobotsCore/include/
pip3 install nevergrad spektral
sudo apt-get install mpich
pip3 install mpi4py
$ ls data/
all_data
$ cd data/all_data/
$ gunzip -k *
$ cd ../../
$ g++ prepare_data.cc -o prepare_data --std=c++17 -I extern/RobotsCore/include/ -O3 -Wall -pedantic -Wextra -Wshadow
$ ./prepare_data
$ ls data/
all_data training_data.txt validation_data.txt
mkdir train
python3 train.py --nconv 3 --model train/model_3.h5
# or...
for y in 1 2 3 4 5; do
echo $y
for x in 1 2 3; do
python3 train.py --nconv $y --model train/nconv$y.$x.h5 1>train/nconv$y.$x.log 2>train/nconv$y.$x.err &
done
done
wait
See play_test_benchmarks.sh
and play_test_benchmarks.full_game.sh
We will be using dfo/run_mpi.py
$ python3 dfo/run_mpi.py --help
usage: run_mpi.py [-h] --model MODEL [--opt OPT] [--just_print_layers] [--layers [LAYERS [LAYERS ...]]]
[--scale_coeff SCALE_COEFF] --output_dir OUTPUT_DIR
optional arguments:
-h, --help show this help message and exit
--model MODEL Where should we save the output model?
--opt OPT Which optimizer should we use?
--just_print_layers
--layers [LAYERS [LAYERS ...]]
--scale_coeff SCALE_COEFF
--output_dir OUTPUT_DIR
List layers available to optimize. At the time of writing this, you need to pass a dummy argument to --output_dir
$ python3 dfo/run_mpi.py --model train/nconv1.1.h5.checkpoint.h5 --just_print_layers --output_dir .
dense/kernel:0 (10, 16)
dense/bias:0 (16,)
dense_1/kernel:0 (8, 16)
dense_1/bias:0 (16,)
xe_net_conv/dense/kernel:0 (64, 32)
xe_net_conv/dense/bias:0 (32,)
xe_net_conv/dense_1/kernel:0 (32, 32)
xe_net_conv/dense_1/bias:0 (32,)
xe_net_conv/p_re_lu/alpha:0 (32,)
xe_net_conv/dense_2/kernel:0 (80, 16)
xe_net_conv/dense_2/bias:0 (16,)
xe_net_conv/dense_3/kernel:0 (32, 0)
xe_net_conv/dense_3/bias:0 (0,)
xe_net_conv/dense_4/kernel:0 (32, 1)
xe_net_conv/dense_4/bias:0 (1,)
xe_net_conv/dense_5/kernel:0 (32, 1)
xe_net_conv/dense_5/bias:0 (1,)
dense_2/kernel:0 (16, 16)
dense_2/bias:0 (16,)
dense_3/kernel:0 (16, 1)
dense_3/bias:0 (1,)
Create destination and run on selected layers
cd dfo ; for x in ../*.so; do ln -s $x; done ; cd ..
mkdir 1.1.dfo
mkdir 1.1.dfo/attention
nproc=`grep processor /proc/cpuinfo | wc -l`
mpirun -np $nproc python3 dfo/run_mpi.py --output_dir 1.1.dfo/attention --model train/nconv1.1.h5.checkpoint.h5 --layers xe_net_conv/dense_4/kernel:0 xe_net_conv/dense_4/bias:0 xe_net_conv/dense_5/kernel:0 xe_net_conv/dense_5/bias:0 1>1.1.dfo/attention/log