This is Cameron Whaley's personal repository for EMADE/AAD. I worked under Dr. Jason Zutty on the Automated Algorithm Design VIP project at Georgia Tech. This fork uses EMADE's genetic programming engine to create Neural Network architectures for any dataset. I worked on this project from Spring 2020 -- Fall 2021, co-leading the team in my final semester. Here is that semester's final presentation.
Evolutionary Multi-objective Algorithm Design Engine
This project is licensed under the terms of the MIT license.
EMADE requires Python v3.8.5
EMADE requires the following Python libraries:
- numpy
- pandas
- keras
- deap
- scipy
- psutil
- lxml
- matplotlib
- hmmlearn
- PyWavelets
- multiprocess
- sqlalchemy
- networkx
- tensorflow
- networkx
- lmfit
- cython
- scikit-image
- opencv-python (imported as cv2)
- pymysql
- mysqlclient Optional:
- tensorflow-gpu Required Only For Windows:
- scoop
Note: Compiling Tensorflow from source code can allow it to take advantage of more CPU instruction sets, and even integrated GPUs on some chips (e.g. Intel Xeon).
- Install Git. Run
sudo apt-get install git
(for Ubuntu/Debian) in the terminal. Check here for package managers on other Linux distros. - Install Git LFS. You can find Linux installation instructions here.
- This includes running the
git lfs install
command, this must be done prior to the cloning of the repository from github or the data files will not be properly downloaded.
- This includes running the
- Run
git config --global credential.helper cache
in the terminal to reduce username and password prompts - Clone the git repository. Run
git clone https://github.gatech.edu/emade/emade
at your home directory.- If you struggle with authentication, try https://[email protected]/emade/emade
- Install Anaconda 3. Read documentation for conda environment management here.
- Make sure to type
yes
when it asks if you would like the 'installer to prepend the Anaconda3 install location to PATH'.
- Make sure to type
- Close your current terminal and open a new terminal to change your default python version.
- Run
cd emade
in the terminal. - Run
conda install python==3.8.5 opencv
in the terminal. - Run
conda install "seuptools>=57,<58"
in the terminal. - Install the required packages by running
conda install numpy pandas tensorflow==2.6.0 keras==2.6.0 scipy psutil lxml matplotlib PyWavelets sqlalchemy networkx cython scikit-image mysqlclient pymysql scikit-learn tensorflow-datasets==4.3 sep nltk textblob spectral
and subsequentlypip install xgboost lmfit multiprocess hmmlearn deap==1.2.2 opencv-python keras-pickle-wrapper
. Conda has superior features resolving dependencies, but not all required packages are in the standard conda repositories. Therefore, we use both.
- If mysqlclient fails to install due to a missing mysql_config dependency, try to install libmysqlclient-dev or search for a similar package for your OS. [e.g. on Debian use apt-cache search libmysqlclient]
- If a recently upgraded package has created a version conflict, you can force conda to install a previous version of a package by using this syntax: conda install numpy=1.14.5
- Install scoop as well if you're on Windows
- If hmmlearn fails to build on Windows, install the Microsoft 2017 build tools, then
conda install -c conda-forge hmmlearn
- Run
bash reinstall.sh
(macOS/Linux) orreinstall
(windows) in the terminal to build all the required files. - Install MySQL server (https://dev.mysql.com/downloads/installer/) and configure an empty SQL schema (i.e. a database with a name and login credentials, but no tables). Note that you can do a local run of EMADE with sqllite by manually running didLaunch.py as described below, but to take advantage of Emade's distributed architecture, you will need MySQL. Also, the GUI of MySQL Workbench is very helpful. [note on Debian linux you may simply run sudo apt-get install mysql-client mysql server]
-
Note that you will first need to populate the input_file with your database info (IP address, login, password, etc.). Examples are in the templates/ directory. Note that if you're running a local run, the string "localhost" will resolve as your local IP.
-
Run
python src/GPFramework/launch.py templates/<input-file>
from the top-level directory. Emade is now running, and writing its output to your local disk. Check your current working directory for "masterXXXXX.out/.err" and "workerXXXXX.out/.err" files. Note that it may take several minutes for EMADE to write its first output to masterXXXXX.out and several more for workerXXXXX.out.