Files
2026-06-11 03:33:14 +08:00

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__.py with factory/registry logic
  • Can be imported as from src.module import Component
  • Subpackages are automatically discovered via import_modules()