Skip to content

v0.5.0

Latest

Choose a tag to compare

@geronimo-deploy-cloud geronimo-deploy-cloud released this 30 Jul 20:18
98f2194

Geronimo v0.5.0 Release Notes

This release focuses on ML pipeline rigor and data composition. We've added a comprehensive suite of declarative specifications for splitting, calibrating, and combining data — along with a full rewrite of the GDC backend and a new development philosophy.

🚀 New Features

Model Training Specifications

  • ObjectiveSpec: Declare a model's training objective (loss function) as an optional class attribute on Model. Supports named objectives ("mse", "mae", "binary_crossentropy", "categorical_crossentropy") resolved to sklearn-compatible loss identifiers, as well as custom callables validated for signature compatibility. When None (the default), backward-compatible behavior is preserved.

  • CalibrationSpec: Opt-in probability calibration for classification models via scikit-learn's CalibratedClassifierCV. Supports Platt scaling ("sigmoid") and isotonic regression. Declared as an optional attribute on Model — when None, models train and predict exactly as before. A held-out internal 80/20 split is used for calibration data.

Data Pipeline Specifications

  • SplitSpec: Declare how a DataSource should be split into training and evaluation sets. Supports two strategies:

    • "random" — deterministic random row split by ratio and seed (default 80/20, seed 42).
    • "time" — time-based split using a datetime_column and cutoff timestamp.
      Accessible via data_source.split(), returning (train_df, eval_df).
  • ConcatSpec: Specify row-wise concatenation of multiple DataSource instances with the same schema. Sources are loaded in declaration order and stacked. Useful for combining data from multiple time windows, regions, or upstream sources.

  • OutputSpec: Declare where and in what format batch pipeline outputs should be written. Supports Destination.LOCAL and Destination.S3 with Format.CSV and Format.PARQUET. Attaches as the output attribute on BatchPipeline, keeping pipeline declarations self-contained and inspectable before execution.

Enhanced Feature System

  • Required/Optional Feature Validation: Features can now be declared as required=True (default) or required=False. Missing required features raise ValueError at transform time. Optional features with a default value substitute the default and log a warning; optional features without a default pass through NaN.

  • Data Type Enforcement: Features now accept an optional data_type parameter (e.g., float, int, str). When set, fit()/transform() validate and coerce incoming data to the declared type. Coercible data emits a logging warning; non-coercible data raises TypeError. When not set, no type checking occurs (backward-compatible).

  • args/kwargs for Derived Features: Feature constructors now accept args and kwargs that are bound to derived_feature_fn at definition time. The function signature must accept df as the first argument, followed by the bound positional and keyword arguments. This enables parameterized derived features without changing the SDK invocation pattern.

GDC Backend Rewrite

  • Unified GDC Client: The deploy_cloud backend has been fully refactored into a unified GDC (Geronimo Deploy Cloud) client with a clean REST API interface. Features login verification, project deployment (create → upload → trigger), status polling, log retrieval, teardown, and key synchronization — all through a single GeronimoCloudClient.

  • Generalized Storage Buckets: The concept of storage buckets has been generalized and unified across backends, reducing scattered deploy logic into a single gdc/target.py.

  • Artifact Store Backends: New artifact backends including GDCBackend, MLFlowBackend, S3Backend, and LocalBackend with a shared ArtifactStoreProtocol for interchangeability.

Project Generation Improvements

  • Experiments Package: The experiments/ package is now auto-generated at project startup. This is the designated space for ad-hoc testing and iteration during development, intentionally excluded from production code paths.

  • Pulumi as Default Dependency: Pulumi is now included as a default project dependency, enabling infrastructure-as-code deployments out of the box.

Development Philosophy

  • Karpathy Philosophy: A new CLAUDE.md codifies a development philosophy emphasizing thinking before coding, simplicity first, surgical changes, and goal-driven execution. This guides AI-assisted development within the project.

  • AGENTS.md: A companion file providing project-specific guidance for AI agents, covering architecture, common commands, and data source quirks.

🐛 Bug Fixes

  • Fixed CLI keys bug in testing environment.
  • Corrected default configuration values from AWS to GDC.
  • Resolved GDC refactoring bugs in deployment and authentication flows.
  • Fixed merge conflict tags in .gitignore.
  • Corrected boto3 not-installed emulation.
  • Fixed project name validation regex to allow single-character names and names ending in numbers.