An easy-to-use system for conducting adversarial machine learning analysis using OpenMPI, XML control files, and user-written plugins.
Explore Jespipe Docs »
Report Bug
·
Request Feature
·
Discussions
·
Releases
Welcome to the Jespipe repository! Our default branch is for the development of the Jespipe v0 Experimental release. If you are interested in helping us publish a professional, robust release of Jespipe, please check out our contributing guidelines!
- Quick Start
- What's Included
- Documentation
- Bugs and Feature Requests
- Contributing
- Versioning
- Creators
- Copyright and License
- Citation
The recommended runtime environment for Jespipe is on High-Performance Computing clusters, but your system only has to meet the following minimum requirements in order to run Jespipe:
Category | Minimum Requirement |
---|---|
Operating System: | CentOS 7 or newer, Debian 10 or newer, OpenSUSE 15.3 or newer, RedHat Enterprise Linux 7 or newer, Ubuntu 18.04 or newer |
Number of Processor Cores: | Bare minimum: 2 cores - 4 threads; Recommended: 8 cores - 16 threads |
RAM: | Bare minimum: 4GB; Recommended: 16GB |
GPU: | Not required but recommended for larger-scale models and computationally instensive attacks. |
GCC Version: | GCC version 8.3.1 or greater |
Python Version: | 3.5+, 3.8+, 3.9.5, or 3.9.6 |
It is strongly recommended that you use Jespipe on a High-Performance Computing cluster because while Jespipe's system resource consumption is minimal, under-powered machines will be quickly overwhelmed by large-scale adversarial analyses.
Use the following commands to install Jespipe's system-level dependencies according to your operating system.
sudo yum update
sudo yum groupinstall "Development Tools" "Development Libraries"
wget https://www.python.org/ftp/python/3.9.6/Python-3.9.6.tar.xz -O - | tar -xJv
cd Python-3.9.6
./configure --enable-shared --enable-optimizations
make && sudo make install
sudo zypper update
sudo zypper install -t pattern devel_basis
sudo zypper install python39-base python39-devel python39-pip
sudo apt-get update
sudo apt-get install build-essential python3.9-full python3.9-dev python3-pip
Use the following commands to install OpenMPI according to your operating system.
sudo yum install openmpi openmpi-devel
sudo zypper install openmpi4 openmpi4-libs openmpi4-devel openmpi4-config openmpi4-docs
sudo apt-get install openmpi-bin openmpi-common openmpi-doc
With the system-level dependencies and OpenMPI installed on your system, use the following commands to set Jespipe up on your system.
To install Jespipe from a release, first download a release and then use the following commands:
tar -xzvf jespipe-<release-number>.tar.gz
cd jespipe-<release-number>
pip install -r requirements.txt
python setup.py install
To install Jespipe from source, use the following commands:
git clone https://github.com/NucciTheBoss/jespipe.git
cd jespipe
pip install -r requirements.txt
python setup.py install
If all went well, you should be able to print out Jespipe's version info without issue:
$ python main.py --version
_ _ ___ ___ __
| | (_) / _ \ / _ \/_ |
| | ___ ___ _ __ _ _ __ ___ __ _| | | | | | || |
_ | |/ _ \/ __| '_ \| | '_ \ / _ \ \ \ / / | | | | | || |
| |__| | __/\__ \ |_) | | |_) | __/ \ V /| |_| | |_| || |
\____/ \___||___/ .__/|_| .__/ \___| \_/ \___(_)___(_)_|
| | | |
|_| |_|
Jespipe-v0.0.1 Copyright (C) 2021 Jason C. Nucciarone, Eric Inae, Sheila Alemany
This program comes with ABSOLUTELY NO WARRANTY; for details please see the LICENSE file.
This is free software, and you are welcome to redistribute it
under certain conditions; please visit https://github.com/NucciTheBoss/jespipe for more details.
-
If this is your first time using Jespipe for conducting adversarial machine learning analysis, please check out our Introduction to Jespipe tutorial!
-
If you are familiar with Jespipe, but like to learn all that Jespipe is capable of, please look through our documentation.
-
If you are an old pro with Jespipe, have fun!
jespipe
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── LICENSE
├── LICENSE_DOCS
├── README.md
├── .config.json
├── main.py
├── requirements.txt
├── setup.py
├── assets
├── contrib
│ ├── build-tools
│ ├── diagrams
│ │ └── drawio
│ └── pseudocode
├── etc
│ ├── skel
│ │ ├── control-templates
│ │ └── plugin-templates
│ │ ├── attack
│ │ ├── manip
│ │ ├── model
│ │ └── plot
│ └── ursula
├── examples
│ ├── control-files
│ ├── datasets
│ │ ├── google-stock
│ │ ├── google-stock-xgb
│ │ └── ozone-level-detection
│ └── plugins
│ ├── attacks
│ ├── manips
│ ├── models
│ │ └── RNN
│ └── plots
├── jespipe
│ └── plugin
│ ├── attack
│ ├── clean
│ ├── manip
│ └── train
└── utils
├── appinfo
├── filesystem
├── managerops
├── workeradmin
└── workerops
There are about 80+ files distributed with a release of Jespipe so it would not be practical to go through all of them, but here is a list of the most important files and directories:
-
README.md
- A copy of this README. -
LICENSE
- A copy of the GNU General Public License version 3. -
.config.json
- Default configuration file for Jespipe. -
main.py
- The Jespipe application. -
requirements.txt
- File to install all of Jespipe's external dependencies. -
setup.py
- File to install jespipe-plugin module.
-
assets
- Pictures and text files used by Jespipe. -
contrib
- Files to help with the development of Jespipe. -
etc
- Extra configuration files and skeleton files for Jespipe. -
examples
- Examples for Jespipe. -
jespipe
- The jespipe-plugin module needed for plugins. -
utils
- Helper functions used by Jespipe.
Jespipe's documentation is currently hosted using GitHub's Wiki pages here. If you interested in adding to the documentation such as add on to the Wikipages or adding more forms of documentation (manpages, readthedocs, Sphinx, etc.), please check out our contributing guidelines!
Have a bug or feature request that you want to submit? Please read through Jespipe's issue guidelines first and search for existing and closed issues. If your issue or idea has not been addressed yet, feel free to open a new issue.
The Jespipe developers have provided the following issue templates for submitting a bug report and/or feature request:
Please read through our contributing guidelines. Included are directions for opening issues, coding standards, and how to submit contributions to Jespipe.
All Python code should follow the standards outlined in PEP 8, PEP 257, and PEP 484. All function and class docstrings should follow the reStructuredText Markup Specification.
For transparency into Jespipe's release cycle and in an attempt to support older High-Performance Computing clusters, Jespipe is maintain under the the Semantic Versioning guidelines. Jespipe's developers may sometimes make mistakes, but we will adhere to these rules as best we can.
See the releases section of Jespipe's repository for changelogs for each release version of Jespipe. Sometimes they might not be pretty, but the Jespipe developer's will do their darnest to summarize the most noteworthy changes in each release.
-
Jason C. Nucciarone - Pennsylvania State University - Lead Author
-
Eric Inae - Andrews University - Attack Plugin Contributor
-
Sheila Alemany - Florida International University - Data Manipulation and Model Training Plugin Contributor
Code and documentation copyright © 2021 Jason C. Nucciarone, Eric Inae, and Sheila Alemany. Code released under the GNU General Public License version 3. Documentation is released under the BSD 3-Clause License.
If you use Jespipe for your research, please include the following citation in your paper:
@inproceedings{
title={Jespipe: A Plugin-Based, Open MPI Framework for Adversarial Machine Learning Analysis},
author{Alemany, Sheila and Nucciarone, Jason and Pissinou, Niki},
booktitle={2021 IEEE International Conference on Big Data (Big Data)},
year={2021},
organization={IEEE}
}