Skip to content

Draft: Add skip decorator; A few clean ups - #306

Open
cloudw wants to merge 2 commits into
feature/aipfrom
yunw/skip-decorator
Open

cloudw wants to merge 2 commits into
feature/aipfrom
yunw/skip-decorator

Conversation

@cloudw

@cloudw cloudw commented Aug 19, 2024

Copy link
Copy Markdown

Changes:

  • Added skip decorator with a test flow.
  • A few other minor clean-ups.

Fix AIP-8494

@cloudw cloudw self-assigned this Aug 19, 2024
Comment thread metaflow/plugins/aip/interruptible_decorator.py
@cloudw cloudw changed the title Add skip decorator; A few clean ups Draft: Add skip decorator; A few clean ups Aug 19, 2024
Comment thread metaflow/plugins/aip/skip_decorator.py
def __init__(self, check="", next=""):
super().__init__()
self.check = check
self.next = next

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The feature ask is to skip a step.
Introducing conditional branching (a conditional next step -> conditional branching) is out of scope.

There are valid deep reasons to not allow conditional branching; the mainly that upsteam Metaflow OSS has not implemented this feature because conditional branching introduces for complex DAG reasoning and branching that is difficult to test and reason over for the applied scientist. For example, this next conditional could goto any step.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@talebzeghmi talebzeghmi left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you for doing this. I think it's worth investigating whether this should be a true step decorator, or a normal pythonic decorator. I highly recommend keeping this simple by including the example @skip python function decorator and not a Metaflow decorator as exemplified here. That would limit the scope of this work item.

Introducing DAG conditionals is out of scope due to the complexities it introduces (and reduces portability of Metaflow) while diverges this branch (WFSDK) from Metaflow OSS.

self.check = check
self.next = next

def __call__(self, f):

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How and when is __call__ invoke?
I believe that this conflating this Metaflow compiler step decorator with a python function decorator.

@cloudw

cloudw commented Aug 20, 2024

Copy link
Copy Markdown
Author

Thank you for doing this. I think it's worth investigating whether this should be a true step decorator, or a normal pythonic decorator. I highly recommend keeping this simple by including the example @skip python function decorator and not a Metaflow decorator as exemplified here. That would limit the scope of this work item.

Introducing DAG conditionals is out of scope due to the complexities it introduces (and reduces portability of Metaflow) while diverges this branch (WFSDK) from Metaflow OSS.

It does feel like the StepDecorator is complicating the implementation a bit, that's why I'm marking this PR as draft right now. I think the done criteria is not too clear either.

I'll keep this PR as draft for longer without working on it, until this becomes a priority.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants