4.8 KiB
4.8 KiB
Detailed Directory Structure
This document provides a comprehensive breakdown of the ML project template directory structure.
Root Level Files
| File | Purpose |
|---|---|
README.md |
Project documentation, installation guide, usage examples |
TODO.md |
Task tracking with weekly focus and daily tasks |
.gitignore |
Git ignore patterns for Python, Jupyter, IDEs, logs, cache |
pyproject.toml |
Project configuration for build system and dependencies |
uv.lock |
Locked dependency versions for reproducibility |
run/ - Execution Layer
pipeline/
Main workflow scripts organized by stage:
| Directory | Purpose |
|---|---|
training/ |
Training execution scripts (training.sh, inference.sh) |
prepare_data/ |
Data preparation and preprocessing pipelines |
analysis/ |
Evaluation and analysis workflows |
conf/
Hydra configuration files organized by module:
| Directory | Purpose |
|---|---|
training/ |
Training hyperparameters, model configs, optimizer settings |
dataset/ |
Dataset configurations, data paths, preprocessing options |
model/ |
Model architecture configurations |
prepare_data/ |
Data preparation parameters |
analysis/ |
Analysis and evaluation configurations |
dir/ |
Directory path configurations |
analysis/ |
Analysis-specific settings |
src/ - Source Code Layer
data_module/ - Data Processing Module
data_module/
├── __init__.py # Module exports
├── utils.py # Data-specific utility functions
├── dataset/ # Dataset implementations
│ ├── __init__.py # Dataset factory and registry
│ └── simple_dataset.py # Simple dataset example
├── augmentation/ # Data augmentation methods
│ ├── __init__.py
│ ├── mixup.py # Mixup augmentation
│ ├── random_shift.py # Random shifting
│ ├── channel_mask.py # Channel masking
│ ├── time_masking.py # Time masking
│ └── add_noise.py # Noise injection
├── collate_fn/ # Batch collation functions
│ ├── __init__.py
│ └── simple_collate_fn.py
├── compute_metrics/ # Metrics computation
│ ├── __init__.py
│ └── simple_compute_metrics.py
├── prepare_data/ # Data preparation logic
│ ├── __init__.py
│ ├── prepare_data.py
│ └── generate_yaml.py
└── data_func/ # Data utility functions
├── __init__.py
└── simple_data_func.py
model_module/ - Model Module
model_module/
├── __init__.py # Module exports
└── model/ # Model implementations
└── [model files]
trainer_module/ - Training Module
Contains training loop logic, validation, and checkpoint management.
analysis_module/ - Analysis Module
Contains evaluation, visualization, and result analysis code.
llm/ - LLM Module
LLM-related code and integrations.
utils/ - Shared Utilities
utils/
├── __init__.py
├── helpers.py # Helper functions (import_modules, etc.)
├── logging.py # Logging configuration
├── get_optimizer.py # Optimizer factory
├── get_scheduler.py # Learning rate scheduler factory
├── get_callback.py # Training callbacks
├── get_activation.py # Activation functions
└── get_checkpoint_aggregation.py # Checkpoint handling
data/ - Data Layer
Following the Cookiecutter Data Science standard:
| Directory | Purpose |
|---|---|
raw/ |
Original, immutable data dump |
processed/ |
Cleaned, transformed data ready for use |
external/ |
Data from third-party sources |
outputs/ - Output Layer
| Directory | Purpose |
|---|---|
logs/ |
Training logs, tensorboard logs |
checkpoints/ |
Model checkpoints for resuming training |
tables/ |
Result tables, CSV outputs |
figures/ |
Plots, visualizations, figures |
Module Interaction Flow
run/pipeline/ -> src/trainer_module/ -> src/model_module/
src/data_module/ src/utils/
src/utils/
run/conf/ -> Hydra config loader -> All modules
File Naming Conventions
- Modules:
simple_dataset.py,custom_model.py - Pipelines:
training.sh,inference.sh - Configs:
config.yaml, dataset-specific names - Utilities: Descriptive names (
get_optimizer.py,helpers.py)
Python Package Structure
Each module is a proper Python package:
- Has
__init__.pywith factory/registry logic - Can be imported as
from src.module import Component - Subpackages are automatically discovered via
import_modules()