Hi SmugSnake6 , can you please elaborate on what exactly is happening and what you were expecting to happen?
Yes sure CostlyOstrich36 , I'm just trying to pass some arguments from my __main__
to my pipeline_entry()
to my component get_best_model()
. But for some reason, I'm getting None
into get_best_model
instead of what I've given it in pipeline_entry
Weeell it seems to work with version 1.7.0 and not with 1.7.1
But this works strangely:
` @PipelineDecorator.component(cache=False, execution_queue="default")
def get_param():
return 'hello'
@PipelineDecorator.component(cache=False, execution_queue="default")
def get_best_model(task_ids):
import ...
print('task_ids:', task_ids, type(task_ids)) # task_ids: None <class 'NoneType'>
...
@PipelineDecorator.pipeline(
name='...',
project='...',
version='0.1'
)
def pipeline_entry(task_ids: List[str], ...):
print(task_ids, type(task_ids)) # ['a8f9a023a7404400a27aff44a945cff1', 'c63f6606ef76475cb9549ad71aaeaff6', 'a40d6eca53a347dd9b383afa65560960'] <class 'list'>
param = get_param()
get_best_model(param)
...
if name == 'main':
PipelineDecorator.run_locally()
pipeline_entry(
task_ids=[
'a8f9a023a7404400a27aff44a945cff1',
'c63f6606ef76475cb9549ad71aaeaff6',
'a40d6eca53a347dd9b383afa65560960',
]
) `
CostlyOstrich36 This looks like a bug? Here's a simpler version of it and what I'm getting:
` from clearml.automation.controller import PipelineDecorator
@PipelineDecorator.component(cache=False)
def step_one(my_arg):
print('step_one/my_arg:', my_arg) # step_one/my_arg: None
# I should not get None here! At least that's what I'm expecting
@PipelineDecorator.pipeline(name='custom pipeline logic', project='examples', version='0.0.5')
def executing_pipeline(my_arg):
print('my_arg:', my_arg) # my_arg: hello
step_one(my_arg)
if name == 'main':
PipelineDecorator.run_locally()
executing_pipeline(
my_arg='hello',
) `
SmugSnake6 what's the clearml version you are using ?
Hmm there was a commit there that was "fixing" some stuff , apparently it also broke it
Let me see if we can push an RC (I know a few things are already waiting to be released)
This will fix it, the issue is the "no default value" that breaks the casting@PipelineDecorator.component(cache=False) def step_one(my_arg=""):
Hmm let me check I think you are correct here