3d_model / docs /API_OPTIMIZATIONS_WIRED.md
Azan
Clean deployment build (Squashed)
7a87926

API Endpoints - Optimization Parameters Wired Up

All optimization parameters are now exposed through the API endpoints.

βœ… Updated Endpoints

1. /train/start (Fine-tuning)

Request Model: TrainRequest

New Optimization Parameters:

  • gradient_accumulation_steps (int, default: 1) - Gradient accumulation
  • use_amp (bool, default: True) - Mixed precision training
  • warmup_steps (int, default: 0) - Learning rate warmup
  • num_workers (Optional[int], default: None) - Data loading workers
  • resume_from_checkpoint (Optional[str], default: None) - Resume training
  • use_ema (bool, default: False) - Exponential Moving Average
  • ema_decay (float, default: 0.9999) - EMA decay factor
  • use_onecycle (bool, default: False) - OneCycleLR scheduler
  • use_gradient_checkpointing (bool, default: False) - Memory-efficient training
  • compile_model (bool, default: True) - Torch.compile optimization

Example Request:

{
  "training_data_dir": "data/training",
  "epochs": 10,
  "lr": 1e-5,
  "batch_size": 1,
  "use_amp": true,
  "gradient_accumulation_steps": 4,
  "use_ema": true,
  "use_onecycle": true,
  "compile_model": true
}

2. /train/pretrain (Pre-training)

Request Model: PretrainRequest

New Optimization Parameters:

  • All the same as /train/start plus:
  • cache_dir (Optional[str], default: None) - BA result caching directory

Example Request:

{
  "arkit_sequences_dir": "data/arkit_sequences",
  "epochs": 10,
  "lr": 1e-4,
  "use_amp": true,
  "use_ema": true,
  "use_onecycle": true,
  "cache_dir": "cache/ba_results",
  "compile_model": true
}

3. /dataset/build (Dataset Building)

Request Model: BuildDatasetRequest

New Optimization Parameters:

  • use_batched_inference (bool, default: False) - Batch multiple sequences
  • inference_batch_size (int, default: 4) - Batch size for inference
  • use_inference_cache (bool, default: False) - Cache inference results
  • cache_dir (Optional[str], default: None) - Inference cache directory
  • compile_model (bool, default: True) - Torch.compile for inference

Example Request:

{
  "sequences_dir": "data/sequences",
  "output_dir": "data/training",
  "use_batched_inference": true,
  "inference_batch_size": 4,
  "use_inference_cache": true,
  "cache_dir": "cache/inference",
  "compile_model": true
}

πŸ”„ Data Flow

API Request (JSON)
    ↓
Request Model (Pydantic validation)
    ↓
Router Endpoint (training.py)
    ↓
CLI Function (cli.py) - passes through all params
    ↓
Service Function (fine_tune.py / pretrain.py / data_pipeline.py)
    ↓
Optimized Training/Inference

πŸ“ Files Updated

  1. ylff/models/api_models.py

    • Added optimization fields to TrainRequest
    • Added optimization fields to PretrainRequest
    • Added optimization fields to BuildDatasetRequest
  2. ylff/routers/training.py

    • Updated /train/start to pass optimization params
    • Updated /train/pretrain to pass optimization params
    • Updated /dataset/build to pass optimization params
  3. ylff/cli.py

    • Updated train() CLI function to accept optimization params
    • Updated pretrain() CLI function to accept optimization params
    • Updated build_dataset() CLI function to accept optimization params
    • All params are passed through to service functions

🎯 Usage Examples

Fast Training via API

curl -X POST "http://localhost:8000/api/v1/train/start" \
  -H "Content-Type: application/json" \
  -d '{
    "training_data_dir": "data/training",
    "epochs": 10,
    "use_amp": true,
    "gradient_accumulation_steps": 4,
    "use_ema": true,
    "use_onecycle": true,
    "compile_model": true
  }'

Optimized Dataset Building

curl -X POST "http://localhost:8000/api/v1/dataset/build" \
  -H "Content-Type: application/json" \
  -d '{
    "sequences_dir": "data/sequences",
    "use_batched_inference": true,
    "inference_batch_size": 4,
    "use_inference_cache": true,
    "cache_dir": "cache/inference"
  }'

βœ… Status

All optimization parameters are:

  • βœ… Defined in API request models
  • βœ… Validated by Pydantic
  • βœ… Passed through router endpoints
  • βœ… Accepted by CLI functions
  • βœ… Forwarded to service functions
  • βœ… Documented with descriptions and examples

The API is fully wired up to use all optimization capabilities! πŸš€