Welcome to the home of project EAGLE. This repository contains a full software stack for the UPCYCLE architecture as well as packaged end-to-end deep learning applications.
First, you will need a linux environment (Windows users: WSL, Mac users: VM). From there, you will need to install the following things:
-
Miniconda3 Python (See below for more details)
-
Suggested: Create a conda environment:
conda create -n eagle-dev python=3.6
-
Activate dev environment:
conda activate eagle-dev
-
Latest TensorFlow:
pip install tensorflow
-
Latest PyTorch:
pip install torch
For cpu only machines , use :
pip install torch==1.10.2+cpu -f https://download.pytorch.org/whl/cpu/torch_stable.html
-
Bazelisk: (Download binary here, add to path as
bazel
) -
Add
export EGL_STACK=/path/to/current-directory
to your.bashrc
-
Add
export EGL_TOOLS=$EGL_STACK/egl-tools
to your.bashrc
-
Add
export LD_LIBRARY_PATH=$EGL_TOOLS/lib
to your.bashrc
Commands from $EGL_STACK
:
make full-rebuild
: Wipe and rebuild everythingmake
: Incremental build
All outputs are stored in $EGL_STACK
Instructions for installing miniconda if you are new:
- Download Miniconda3-latest-Linux-x86_64.sh
bash Miniconda3-latest-Linux-x86_64.sh
- Follow the prompts, selecte defaults for the install
- When prompted to modify your bashrc, type
yes
- log out and back in, or
source .bashrc
We will use several branches for development that are occasionally merged as features are brought together. There will be a single branch for each project (electron-tf, libelectron, libphoton, etc). Here's the general developer flow for upstream changes:
- Developer wants to contribute to project
<foo>
- Developer creates branch named
<foo>/<developer username>
- Developer commits work to this branch
- Developer opens PR to merge
<foo>/<username>
to<foo>
- PR is reviewed, tested and accepted by project owner
Project branches will be merged into main
occasionally to maintain a single
stable branch. Here's the general downstream flow:
- Project merges changes into
main
- Other project branches rebase on
main
to consume changes - User banches rebase on project branch
For all merging, we will use rebase-merge. This means that all PRs must apply cleanly on top of the target branch they are going into. This essentially means the source branch owner is responsible for ensuring their branch is up-to-date.