V1Param

polyaxon.polyflow.params.params.V1Param(value=None, ref=None, connection=None, to_init=None, to_env=None, context_only=None)

Params can provide values to inputs/outputs.

Params can be passed in several ways

  • literal values that the user sets manually.
  • a reference from a previous run, in which case Polyaxon will validate during the compilation time if the user who initiated the run has access to that organization/project/run.
  • a reference from an upstream operation in the context of a DAG.

When a param is passed from the CLI or directly in the YAML/Python specification, it will be validated against the inputs/outputs defined in the component

  • Args:
    • value: any
    • ref: str, optional
    • context_only: bool, optional
    • connection: str, optional
    • to_init: bool, optional
    • to_env: str, optional

YAML usage

params:
  loss:
    value: MeanSquaredError
  preprocess:
    value: true
  accuracy:
    value: 0.1
  outputs_path:
    ref: ops.upstream-job1
    value: outputs.images_path

Python usage

from polyaxon.polyflow import V1Param
params = {
    "loss": V1Param(value="MeanSquaredError"),
    "preprocess": V1Param(value=True),
    "accuracy": V1Param(value=0.1),
    "outputs-path": V1Param(ref="ops.upstream_job1", value="outputs.images_path")
}

Fields

value

The value to pass, if no ref is passed then it corresponds to a literal value, and will be validated eagerly. Otherwise it will be a future validation during the compilation time.

params:
  loss:
    value: MeanSquaredError
  learning_rate:
    value: 0.001

The value could be coming from the context, for example:

params:
  current_project:
    value: {{globals.project_name}}
  current_run:
    value: {{globals.uuid}}
  fully_resolved_artifacts_path:
    value: {{globals.run_artifacts_path}}
  fully_resolved_artifacts_outputs_path:
    value: {{globals.run_outputs_path}}

Resolving values from the IO (inputs/outputs) of the reference:

  specific_input:
    value: {{inputs.input_name}}
  specific_outputs:
    value: {{outputs.output_name}}
  all_inputs_dict:
    value: {{inputs}}
  all_outputs_dict:
    value: {{outputs}}
  specific_input:
    value: {{inputs.input_name}}
  specific_outputs:
    value: {{outputs.output_name}}

Resolving paths from the artifacts and lineages of the reference:

  run_artifacts_subpath_without_context:
    value: {{artifacts}}
  run_artifacts_outputs_subpath_without_context:
    value: {{artifacts.outputs}}
  run_path_of_lineage:
    value: {{artifacts.lineage_name}}
  run_tensorboard_path_from_lineage:
    value: {{artifacts.tensorboard}}
  run_tensorboard_path_from_lineage:
    value: {{artifacts.tensorboard}}

Resolving artifacts manually from the reference based on the ArtifactsType

  files_and_dirs:
    value:
      - files: ["subpath/file1", "another/subpath/file2.ext"]
      - dirs: ["subpath/dir1", "another/subpath/dir2"]

Note: the difference between using artifacts.lineage_name and ArtifactsType, is that the former will only expose the path based on any lineage logged during the runtime, the later is a manual way of selecting specific files and dirs.

ref

Ref corresponds to a reference of an object.

A reference could be a previous run in the database or an operation in DAG that has not been executed yet.

params:
  loss:
    value: outputs.loss
    ref: ops.upstream-job-1
params:
  loss:
    value: outputs.loss
    ref: runs.fcc462d764104eb698d3cca509f34154

contextOnly

A flag to signal to Polyaxon that this param should not be validated against the inputs/outputs, and it's only used to resolve some information and inject it into the context.

params:
  convolutions:
    contextOnly: true
    value:
      conv1:
         kernels: [32, 32]
         size: [2, 2]
         strides: [1, 1]
      conv2:
         kernels: [64, 64]
         size: [2, 2]
         strides: [1, 1]

Polyaxon will not check if this param was required by an input/output, and will inject it automatically in the context to be used. You can use for example {{ convolutions.conv1 }} in the specification.

connection

A connection to use with the parameter. if the initial Input/Output definition has a predefined connection and this connection is provided, it will override the that value and will be added to the context.

toInit

if True the param will be converted to an init container.

For example, to initialize some artifacts without using the init section, you can use toInit to turn an artifacts value or git value to an init container:

  files_and_dirs:
    toInit: true
    value:
      - files: ["subpath/file1", "another/subpath/file2.ext"]
      - dirs: ["subpath/dir1", "another/subpath/dir2"]

toEnv

N.B: Requires Polyaxon CLI and Polyaxon Agent/CE version >= 1.12

If passed, it will be converted automatically to an environment variable.

param1:
  toEnv: ENV_VAR_NAME_TO_USE
  value: "some value"