Examples: query, "exact match", wildcard*, wild?ard, wild*rd
Fuzzy search: cake~ (finds cakes, bake)
Term boost: "red velvet"^4, chocolate^2
Field grouping: tags:(+work -"fun-stuff")
Escaping: Escape characters +-&|!(){}[]^"~*?:\ with \, e.g. \+
Range search: properties.timestamp:[1587729413488 TO *] (inclusive), properties.title:{A TO Z}(excluding A and Z)
Combinations: chocolate AND vanilla, chocolate OR vanilla, (chocolate OR vanilla) NOT "vanilla pudding"
Field search: properties.title:"The Title" AND text
Answered
How Can I Ensure Tasks In A Pipeline Have The Same Environment As The Pipeline Itself? It Seems A Bit Counter-Intuitive That The Pipeline (Executed Remotely) Captures The Local Environment, But The Tasks (Executed Remotely) Do Not Use That Same Environmen

How can I ensure tasks in a pipeline have the same environment as the pipeline itself? It seems a bit counter-intuitive that the pipeline (executed remotely) captures the local environment, but the tasks (executed remotely) do not use that same environment?

  
  
Posted 2 years ago
Votes Newest

Answers 42


It’s just that for the packages argument, ClearML says:

If not provided, packages are automatically added based on the imports used inside the wrapped function.

So… 🤔

  
  
Posted 2 years ago

Alternatively, it would be good to specify both some requirements and auto-detect 🤔

  
  
Posted 2 years ago

  • This then looks for a module called foo , even though it’s just a namespaceI think this is the issue, are you using python package name spaces ?
    (this is a PEP feature that is really rarely used, and I have seen break too many times)
    Assuming you have from from foo.mod import what are you seeing in pip freeze ? I'd like to see if we can fix this, and better support namespaces
  
  
Posted 2 years ago

I’d like to refrain from manually specifying the dependencies, since it adds a lot of overhead to extend

  
  
Posted 2 years ago

There's no decorator, just e.g.

def helper(foo: Optional[Any] = None):
    return foo

def step_one(...):
    # stuff

Then the type hints are not removed from helper and the code immediately crashes when being run

  
  
Posted 2 years ago

Exactly, it should have auto-detected the package.

  
  
Posted 2 years ago

There's code that strips the type hints from the component function, just think it should be applied to the helper functions too :)

  
  
Posted 2 years ago

Yes. Though again, just highlighting the naming of foo-mod is arbitrary. The actual module simply has a folder structured with an implicit namespace:

foo/
  mod/
    __init__.py
    # stuff

FWIW, for the time being I’m just setting the packages to all the packages the pipeline tasks sees with:

    packages = get_installed_pkgs_detail()
    packages = [f"{name}=={version}" if version else name for name, version in packages.values()]
    packages = task.data.script.requirements.get('pip', task.data.script.requirements.get('poetry')) or packages
    print(f"Task requirements:\n{packages}")
    tmp_requirements_file = "tmp_reqs.txt"
    with open(tmp_requirements_file, "w") as f:
        f.write("\n".join(packages) if isinstance(packages, list) else packages)
    
    # ...
    
    pipe.add_function_step(..., packages=tmp_requirements_file)
  
  
Posted 2 years ago

Still; anyone? 🥹 @<1523701070390366208:profile|CostlyOstrich36> @<1523701205467926528:profile|AgitatedDove14>

  
  
Posted 2 years ago

It is. In what format should I specify it? Would this enforce that package on various components? Would it then no longer capture import statements?

  
  
Posted 2 years ago

And is this repo installed on the pipeline creating machine ?
Basically I'm asking how come it did not automatically detect it?

  
  
Posted 2 years ago

For example:

my-repo @ git+
  
  
Posted 2 years ago