From 707203954cb67330eaf08d2bd944c34af3d79662 Mon Sep 17 00:00:00 2001 From: agent-dd492b85242a98c5 Date: Sun, 19 Apr 2026 19:30:51 +0200 Subject: [PATCH] build(agent): new-agents-3#dd492b iteration --- README.md | 10 ++++++++++ .../adapters/__init__.py | 4 ++++ .../adapters/pytorch_adapter.py | 19 +++++++++++++++++++ .../adapters/tensorflow_adapter.py | 17 +++++++++++++++++ 4 files changed, 50 insertions(+) create mode 100644 catopt_flow_category_theoretic_compositi/adapters/__init__.py create mode 100644 catopt_flow_category_theoretic_compositi/adapters/pytorch_adapter.py create mode 100644 catopt_flow_category_theoretic_compositi/adapters/tensorflow_adapter.py diff --git a/README.md b/README.md index 06ee334..974386a 100644 --- a/README.md +++ b/README.md @@ -39,3 +39,13 @@ Roadmap (high level) - A small DSL sketch (LocalProblem/SharedVariables/PlanDelta) and a Graph-of-Contracts registry. This project aims for clean, production-grade code with strong test coverage and clear extension points. + +Adapters (Starter) +- This repo now includes two starter adapters to bootstrap cross-framework optimization flows: +- PyTorchAdapter and TensorFlowAdapter +- Path: catopt_flow_category_theoretic_compositi/adapters +- Each adapter implements a minimal adapt(local_problems) -> GlobalProblem using the core Planner. +- Example usage: +- from catopt_flow_category_theoretic_compositi.adapters import PyTorchAdapter +- adapter = PyTorchAdapter(budget_gpu=2.0) +- global_plan = adapter.adapt(local_problems) diff --git a/catopt_flow_category_theoretic_compositi/adapters/__init__.py b/catopt_flow_category_theoretic_compositi/adapters/__init__.py new file mode 100644 index 0000000..7e292c6 --- /dev/null +++ b/catopt_flow_category_theoretic_compositi/adapters/__init__.py @@ -0,0 +1,4 @@ +from .pytorch_adapter import PyTorchAdapter +from .tensorflow_adapter import TensorFlowAdapter + +__all__ = ["PyTorchAdapter", "TensorFlowAdapter"] diff --git a/catopt_flow_category_theoretic_compositi/adapters/pytorch_adapter.py b/catopt_flow_category_theoretic_compositi/adapters/pytorch_adapter.py new file mode 100644 index 0000000..7708141 --- /dev/null +++ b/catopt_flow_category_theoretic_compositi/adapters/pytorch_adapter.py @@ -0,0 +1,19 @@ +from typing import List + +from ..core import LocalProblem, GlobalProblem, Planner + + +class PyTorchAdapter: + """Starter PyTorch adapter that maps a collection of LocalProblems to a GlobalProblem + using the planner with a given GPU budget. + """ + + name = "pytorch" + + def __init__(self, budget_gpu: float = 1.0) -> None: + self.budget_gpu = budget_gpu + + def adapt(self, local_problems: List[LocalProblem]) -> GlobalProblem: + # Simple, vendor-agnostic mapping via Planner. Could be extended with PyTorch-specific + # resource modeling, hooks, and data-plane metadata in the future. + return Planner.build_global_plan(local_problems, self.budget_gpu) diff --git a/catopt_flow_category_theoretic_compositi/adapters/tensorflow_adapter.py b/catopt_flow_category_theoretic_compositi/adapters/tensorflow_adapter.py new file mode 100644 index 0000000..6b2d10b --- /dev/null +++ b/catopt_flow_category_theoretic_compositi/adapters/tensorflow_adapter.py @@ -0,0 +1,17 @@ +from typing import List + +from ..core import LocalProblem, GlobalProblem, Planner + + +class TensorFlowAdapter: + """Starter TensorFlow adapter that maps a collection of LocalProblems to a GlobalProblem + using the planner with a given GPU budget. + """ + + name = "tensorflow" + + def __init__(self, budget_gpu: float = 1.0) -> None: + self.budget_gpu = budget_gpu + + def adapt(self, local_problems: List[LocalProblem]) -> GlobalProblem: + return Planner.build_global_plan(local_problems, self.budget_gpu)