nauticML
An orchestration framework for co-optimizing neural network models on hardware platforms.
Installation
Prerequisites
- Docker
- Conda (or miniconda)
- GPU support (optional, but recommended)
Setup Steps
-
Clone the repository
% git clone <repository-url> % cd nauticML
-
Create Conda Development Environment
To install (just once):
% conda env create -f environment.yml % bash conda/post-install.sh nauticML
Once it is created:
conda activate nauticML
-
Start Prefect and PostgreSQL services
Use Docker Compose to launch the Prefect server and PostgreSQL database:
docker compose up -d
This will start:
- PostgreSQL Database (port not exposed, internal use only)
- Prefect Server (accessible at http://localhost:4200)
-
Configure your experiment
Edit
config.yamlto set up your experiment parameters:- Dataset configuration
- Model architecture and hyperparameters
- Bayesian optimization search space
- Training and evaluation settings
-
Run the optimization pipeline
python run.pyThis will:
- Initialize the experiment
- Load the dataset
- Run Bayesian optimization iterations
- Build and train Bayesian models
- Evaluate model performance
- Track results in Prefect
Configuration
The config.yaml file controls all experiment parameters:
experiment:
seed: 42 # Random seed for reproducibility
save_dir: ./results # Directory for saving results
gpus: [0] # GPU device IDs to use
dataset:
name: mnist # Dataset name
model:
name: lenet # Model architecture
is_quant: false # Enable quantization
dropout_rate: 0.4 # Dropout rate
num_bayes_layer: 3 # Number of Bayesian layers
bayes_opt:
num_iter: 3 # Number of optimization iterations
tunable: # Hyperparameters to optimize
dropout_rate:
space: [0.1, 0.2, 0.3, 0.4]
p_rate:
space: [0.0, 0.1, 0.2]
num_bayes_layer:
space: [1, 2, 3]
Running Experiments
Local Execution
python run.py
Monitor with Prefect UI
After starting Docker Compose, access the Prefect UI at:
http://localhost:4200
The UI provides:
- Real-time flow execution monitoring
- Task logs and performance metrics
- Experiment history and results
Results
Results are saved to the configured save_dir (default: ./results):
- Model checkpoints
- Training logs
- Evaluation metrics
- Optimization summaries
Project Structure
nauticML/
├── nautic/ # Core framework
├── tasks/ # Reusable built-in tasks
├── projects/
│ └── heart25/ # Student project and experiments
├── docker-compose.yaml # Service definitions
└── requirements.txt # Python dependencies
GPU Support
To use GPU acceleration:
- Ensure CUDA-compatible GPU is available
- Configure GPU devices in
config.yaml:experiment: gpus: [0, 1] # Use GPU 0 and 1
Metadata
Release files for nauticml 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| nauticml-0.1.0.tar.gz | 15.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| nauticml-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.2 kB
Release files / nauticml-0.1.0.tar.gz
| Download URL | nauticml-0.1.0.tar.gz |
|---|---|
| Size | 15.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
067212d4a47353c18a3947421e810e30f9b2b5fc169fd313488af152776a4458
|
|
BLAKE2b-256 checksum How to use checksums |
76ec0bfdeacfece9e19f8ec5d037264b0e56f756af4892755eac82406dccb0fb
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.2
|
Release files / nauticml-0.1.0-py3-none-any.whl
| Download URL | nauticml-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b1bbe10bfc134569c118ab4e95a9357ba12e30d832045f8cc0e34d95f00e0182
|
|
BLAKE2b-256 checksum How to use checksums |
ecb1c8656c71e023c925cfe848e19db736993cfbfab0c9c6d0e0bb3bf7c8953b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.2
|