Skip to content

Split config and execution concepts and objects #327

@kendrickb-nvidia

Description

@kendrickb-nvidia

Priority Level

Medium

Task Summary

The single SafeSynthesizer object with both configuration (with_training()) and execution (run()) methods doesn't align with other projects like data designer and has led to considerable confusion.

We want to refactor these objects that users primarily interact with to be more explicit. Step 1: You create a configuration, Step 2: and then use that to execute.

Also related to #115 , may be solved together, may not be.

Technical Details & Implementation Plan

Initial list of requirements

  1. Interleaving configuration changes and execution on the same instance should be impossible by construction
  2. Make it clear when config resolve() happens, exactly once when converting to execution mode (as a method, as a separate object, etc.)
  3. Review Data Designer's setup and be explicit about following that pattern, or why we need a different pattern for Safe Synthesizer
  4. Review method names and align with what the method is doing. Notably the with_training() style. See bug bash feedback below.

Bug bash feedback:

May be a super nit: rename .with_generate(), .with_train(), .with_evaluate(), etc to with_generation(), with_training(), with_evaluation(). I think it reads better and aligns with what you are doing - providing configurations for those steps.

Dependencies

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    taskDevelopment task

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions