Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[BUG]: list and dict step parameters not shown in Dashboard #3224

Closed
1 task done
blueblasterz opened this issue Nov 27, 2024 · 2 comments
Closed
1 task done

[BUG]: list and dict step parameters not shown in Dashboard #3224

blueblasterz opened this issue Nov 27, 2024 · 2 comments
Assignees
Labels
bug Something isn't working

Comments

@blueblasterz
Copy link

Contact Details [Optional]

No response

System Information

ZENML_LOCAL_VERSION: 0.70.0
ZENML_SERVER_VERSION: 0.70.0
ZENML_SERVER_DATABASE: mysql
ZENML_SERVER_DEPLOYMENT_TYPE: other
ZENML_CONFIG_DIR: /home/pernas/.config/zenml
ZENML_LOCAL_STORE_DIR: /home/pernas/.config/zenml/local_stores
ZENML_SERVER_URL: http://deepthought1.multitel.be:10539
ZENML_ACTIVE_REPOSITORY_ROOT: None
PYTHON_VERSION: 3.10.15
ENVIRONMENT: native
SYSTEM_INFO: {'os': 'linux', 'linux_distro': 'ubuntu', 'linux_distro_like': 'debian', 'linux_distro_version': '24.04'}
ACTIVE_WORKSPACE: default
ACTIVE_STACK: remote-k8s-3dplts
ACTIVE_USER: pernas
TELEMETRY_STATUS: enabled
ANALYTICS_CLIENT_ID: eff00127-6726-4ba6-863b-c261dab51a98
ANALYTICS_USER_ID: 42721ecb-53c9-4fe3-8c70-591a1e7398f3
ANALYTICS_SERVER_ID: 78da78ba-593a-482c-b798-668c5a3a5f0d
INTEGRATIONS: ['airflow', 'bitbucket', 'numpy', 'pandas', 'kaniko', 'kubernetes', 'pigeon', 'pillow', 'pytorch', 'pytorch_lightning', 'scipy', 'sklearn', 'tensorboard']
PACKAGES: {'deprecated': '1.2.14', 'gitpython': '3.1.43', 'mako': '1.3.5', 'markdown': '3.7', 'markupsafe': '3.0.1', 'pillow': '9.5.0', 'pymysql': '1.1.1', 'pyyaml': '6.0.2', 'pympler': '1.1', 'qtpy': '2.4.1', 'sqlalchemy':
'2.0.36', 'sqlalchemy-utils': '0.41.2', 'send2trash': '1.8.3', 'absl-py': '2.1.0', 'aiobotocore': '2.15.2', 'aiohappyeyeballs': '2.4.3', 'aiohttp': '3.10.10', 'aiohttp-retry': '2.9.1', 'aioitertools': '0.12.0', 'aiosignal':
'1.3.1', 'alabaster': '0.7.16', 'alembic': '1.8.1', 'alibi-detect': '0.12.0', 'amqp': '5.2.0', 'annotated-types': '0.7.0', 'antlr4-python3-runtime': '4.9.3', 'anyio': '4.6.2.post1', 'appdirs': '1.4.4', 'argon2-cffi': '23.1.0',
'argon2-cffi-bindings': '21.2.0', 'arrow': '1.3.0', 'astroid': '2.15.8', 'asttokens': '2.4.1', 'async-lru': '2.0.4', 'async-timeout': '4.0.3', 'asyncssh': '2.18.0', 'atpublic': '5.0', 'attrs': '24.2.0', 'babel': '2.16.0',
'bcrypt': '4.0.1', 'beautifulsoup4': '4.12.3', 'billiard': '4.2.1', 'bleach': '6.1.0', 'blinker': '1.8.2', 'boto3': '1.35.36', 'botocore': '1.35.36', 'cachetools': '5.5.0', 'catalogue': '2.0.10', 'celery': '5.4.0', 'certifi':
'2024.8.30', 'cffi': '1.17.1', 'charset-normalizer': '3.4.0', 'click': '8.1.3', 'click-didyoumean': '0.3.1', 'click-params': '0.3.0', 'click-plugins': '1.1.1', 'click-repl': '0.3.0', 'cloudpickle': '2.2.1', 'colorama': '0.4.6',
'comm': '0.2.2', 'compress-pickle': '2.1.0', 'configobj': '5.0.9', 'contourpy': '1.3.0', 'cryptography': '43.0.3', 'cycler': '0.12.1', 'dash': '2.18.1', 'dash-core-components': '2.0.0', 'dash-html-components': '2.0.0',
'dash-table': '5.0.0', 'databricks-sdk': '0.36.0', 'datasets': '2.14.4', 'debugpy': '1.8.7', 'decorator': '5.1.1', 'defusedxml': '0.7.1', 'dictdiffer': '0.9.0', 'dill': '0.3.7', 'diskcache': '5.6.3', 'distro': '1.9.0',
'docker': '7.1.0', 'docutils': '0.18.1', 'dpath': '2.2.0', 'dulwich': '0.22.5', 'dvc': '3.56.0', 'dvc-data': '3.16.7', 'dvc-http': '2.32.0', 'dvc-objects': '5.1.0', 'dvc-render': '1.0.2', 'dvc-s3': '3.2.0', 'dvc-studio-client':
'0.21.0', 'dvc-task': '0.40.2', 'entrypoints': '0.4', 'exceptiongroup': '1.2.2', 'executing': '2.1.0', 'fastjsonschema': '2.20.0', 'filelock': '3.16.1', 'flask': '3.0.3', 'flatten-dict': '0.4.2', 'flufl-lock': '8.1.0',
'fonttools': '4.54.1', 'fqdn': '1.5.1', 'frozenlist': '1.4.1', 'fsspec': '2024.10.0', 'funcy': '2.0', 'gitdb': '4.0.11', 'google-auth': '2.35.0', 'google-auth-oauthlib': '1.0.0', 'grad-cam': '1.4.8', 'grandalf': '0.8',
'graphene': '3.4', 'graphql-core': '3.2.5', 'graphql-relay': '3.2.0', 'greenlet': '3.1.1', 'grpcio': '1.67.0', 'gto': '1.7.1', 'gunicorn': '23.0.0', 'h11': '0.14.0', 'httpcore': '1.0.6', 'httplib2': '0.19.1', 'httpx': '0.27.2',
'huggingface-hub': '0.25.2', 'hydra-core': '1.3.2', 'idna': '3.10', 'imagecorruptions': '1.1.2', 'imageio': '2.36.0', 'imagesize': '1.4.1', 'importlib-metadata': '8.4.0', 'iniconfig': '2.0.0', 'ipykernel': '6.29.5', 'ipython':
'8.28.0', 'ipywidgets': '8.1.5', 'isoduration': '20.11.0', 'isort': '5.13.2', 'iterative-telemetry': '0.0.9', 'itsdangerous': '2.2.0', 'jedi': '0.19.1', 'jinja2': '3.1.4', 'jmespath': '1.0.1', 'joblib': '1.4.2', 'json5':
'0.9.25', 'jsonpointer': '3.0.0', 'jsonschema': '4.23.0', 'jsonschema-specifications': '2024.10.1', 'jupyter': '1.0.0', 'jupyter-client': '8.6.3', 'jupyter-console': '6.6.3', 'jupyter-core': '5.7.2', 'jupyter-events': '0.10.0',
'jupyter-lsp': '2.2.5', 'jupyter-server': '2.14.2', 'jupyter-server-terminals': '0.5.3', 'jupyterlab': '4.2.5', 'jupyterlab-pygments': '0.3.0', 'jupyterlab-server': '2.27.3', 'jupyterlab-widgets': '3.0.13', 'kiwisolver':
'1.4.7', 'kombu': '5.4.2', 'kubernetes': '25.3.0', 'lazy-loader': '0.4', 'lazy-object-proxy': '1.10.0', 'lightning-utilities': '0.11.8', 'llvmlite': '0.42.0', 'lmdb': '1.4.1', 'lz4': '4.3.3', 'markdown-it-py': '3.0.0',
'matplotlib': '3.9.2', 'matplotlib-inline': '0.1.7', 'mccabe': '0.7.0', 'mdit-py-plugins': '0.4.2', 'mdurl': '0.1.2', 'mistune': '3.0.2', 'mlflow': '2.17.0', 'mlflow-skinny': '2.17.0', 'mpmath': '1.3.0', 'multidict': '6.1.0',
'multiprocess': '0.70.15', 'myst-parser': '2.0.0', 'nbclient': '0.10.0', 'nbconvert': '7.16.4', 'nbformat': '5.10.4', 'nbsphinx': '0.9.3', 'nest-asyncio': '1.6.0', 'networkx': '3.4.1', 'nose2': '0.13.0', 'notebook': '7.2.2',
'notebook-shim': '0.2.4', 'numba': '0.59.1', 'numpy': '1.26.4', 'nvidia-cublas-cu12': '12.1.3.1', 'nvidia-cuda-cupti-cu12': '12.1.105', 'nvidia-cuda-nvrtc-cu12': '12.1.105', 'nvidia-cuda-runtime-cu12': '12.1.105',
'nvidia-cudnn-cu12': '8.9.2.26', 'nvidia-cufft-cu12': '11.0.2.54', 'nvidia-curand-cu12': '10.3.2.106', 'nvidia-cusolver-cu12': '11.4.5.107', 'nvidia-cusparse-cu12': '12.1.0.106', 'nvidia-nccl-cu12': '2.18.1',
'nvidia-nvjitlink-cu12': '12.6.77', 'nvidia-nvtx-cu12': '12.1.105', 'oauthlib': '3.2.2', 'omegaconf': '2.3.0', 'opencv-python': '4.10.0.84', 'opentelemetry-api': '1.27.0', 'opentelemetry-sdk': '1.27.0',
'opentelemetry-semantic-conventions': '0.48b0', 'orjson': '3.10.11', 'overrides': '7.7.0', 'packaging': '24.1', 'pandas': '2.2.3', 'pandocfilters': '1.5.1', 'parso': '0.8.4', 'passlib': '1.7.4', 'pathspec': '0.12.1', 'patsy':
'0.5.6', 'pbr': '6.1.0', 'pexpect': '4.9.0', 'phx-class-registry': '4.0.6', 'pip': '24.2', 'platformdirs': '3.11.0', 'plotly': '5.14.1', 'pluggy': '1.5.0', 'prometheus-client': '0.21.0', 'prompt-toolkit': '3.0.48', 'propcache':
'0.2.0', 'protobuf': '5.28.2', 'psutil': '6.0.0', 'ptyprocess': '0.7.0', 'pure-eval': '0.2.3', 'pyarrow': '17.0.0', 'pyasn1': '0.6.1', 'pyasn1-modules': '0.4.1', 'pycparser': '2.22', 'pydantic': '2.8.2', 'pydantic-core':
'2.20.1', 'pydantic-numpy': '3.1.5', 'pydantic-settings': '2.2.1', 'pydantic-yaml': '1.3.0', 'pydot': '1.4.2', 'pygit2': '1.16.0', 'pygments': '2.18.0', 'pygtrie': '2.5.0', 'pylint': '2.17.5', 'pyparsing': '2.4.7', 'pytest':
'7.4.0', 'python-dateutil': '2.9.0.post0', 'python-dotenv': '1.0.1', 'python-json-logger': '2.0.7', 'pytorch-lightning': '2.1.3', 'pytorch-ood': '0.2.0', 'pytz': '2024.2', 'pywavelets': '1.7.0', 'pyzmq': '26.2.0', 'qtconsole':
'5.6.0', 'referencing': '0.35.1', 'regex': '2024.9.11', 'requests': '2.32.3', 'requests-oauthlib': '2.0.0', 'retrying': '1.3.4', 'rfc3339-validator': '0.1.4', 'rfc3986-validator': '0.1.1', 'rich': '13.9.2', 'rpds-py': '0.20.0',
'rsa': '4.9', 'ruamel.yaml': '0.17.40', 'ruamel.yaml.clib': '0.2.8', 's3fs': '2024.10.0', 's3transfer': '0.10.3', 'safetensors': '0.4.5', 'scikit-image': '0.20.0', 'scikit-learn': '1.5.2', 'scipy': '1.14.1', 'scmrepo': '3.3.8',
'seaborn': '0.12.2', 'secure': '0.3.0', 'semver': '3.0.2', 'setuptools': '68.0.0', 'shellingham': '1.5.4', 'shortuuid': '1.0.13', 'shtab': '1.7.1', 'six': '1.16.0', 'smmap': '5.0.1', 'sniffio': '1.3.1', 'snowballstemmer':
'2.2.0', 'soupsieve': '2.6', 'sphinx': '7.2.5', 'sphinx-autodoc-typehints': '1.24.0', 'sphinx-design': '0.5.0', 'sphinx-rtd-theme': '1.3.0', 'sphinxcontrib-apidoc': '0.4.0', 'sphinxcontrib-applehelp': '2.0.0',
'sphinxcontrib-devhelp': '2.0.0', 'sphinxcontrib-htmlhelp': '2.1.0', 'sphinxcontrib-jquery': '4.1', 'sphinxcontrib-jsmath': '1.0.1', 'sphinxcontrib-qthelp': '2.0.0', 'sphinxcontrib-serializinghtml': '2.0.0', 'sqlmodel':
'0.0.18', 'sqlparse': '0.5.1', 'sqltrie': '0.11.1', 'stack-data': '0.6.3', 'statsmodels': '0.14.0', 'sympy': '1.13.3', 'tabulate': '0.9.0', 'tenacity': '9.0.0', 'tensorboard': '2.14.0', 'tensorboard-data-server': '0.7.2',
'terminado': '0.18.1', 'threadpoolctl': '3.5.0', 'tifffile': '2024.9.20', 'tinycss2': '1.3.0', 'tokenizers': '0.13.3', 'toml': '0.10.2', 'tomli': '2.0.2', 'tomlkit': '0.13.2', 'torch': '2.1.2', 'torchmetrics': '1.4.3',
'torchvision': '0.16.2', 'tornado': '6.4.1', 'tqdm': '4.66.5', 'traitlets': '5.14.3', 'transformers': '4.32.1', 'triton': '2.1.0', 'ttach': '0.0.3', 'typer': '0.12.5', 'types-python-dateutil': '2.9.0.20241003',
'typing-extensions': '4.12.2', 'tzdata': '2024.2', 'uri-template': '1.3.0', 'urllib3': '2.2.3', 'validators': '0.18.2', 'vine': '5.1.0', 'voluptuous': '0.15.2', 'wcwidth': '0.2.13', 'webcolors': '24.8.0', 'webencodings':
'0.5.1', 'websocket-client': '1.8.0', 'werkzeug': '3.0.4', 'wheel': '0.44.0', 'widgetsnbextension': '4.0.13', 'wrapt': '1.16.0', 'xxhash': '3.5.0', 'yarl': '1.15.4', 'zc.lockfile': '3.0.post1', 'zenml': '0.70.0', 'zipp':
'3.20.2', 'data-quality': '1.0.0', 'autocommand': '2.2.2', 'backports.tarfile': '1.2.0', 'importlib-resources': '6.4.0', 'inflect': '7.3.1', 'jaraco.collections': '5.1.0', 'jaraco.context': '5.3.0', 'jaraco.functools': '4.0.1',
'jaraco.text': '3.12.1', 'more-itertools': '10.3.0', 'typeguard': '4.3.0'}

CURRENT STACK

Name: remote-k8s-3dplts
ID: adedaf0a-6bca-4759-89f0-1258cdab6c9a
User: 3dplts / 475f3296-18f1-40f5-9838-64da00323fd3
Workspace: default / 6ded3963-f5f5-4735-8f2b-d7b8da2cb807

ORCHESTRATOR: 3dplts-k8s-orchestrator

Name: 3dplts-k8s-orchestrator
ID: 3076ab13-0169-4311-9cb5-38ea593d797b
Type: orchestrator
Flavor: kubernetes
Configuration: {'synchronous': False, 'timeout': 0, 'service_account_name': 'zenml-service-account', 'step_pod_service_account_name': None, 'privileged': False, 'pod_settings': None, 'orchestrator_pod_settings': None,
'incluster': False, 'kubernetes_context': None, 'kubernetes_namespace': '3dplts', 'local': False, 'skip_local_validations': False, 'parallel_step_startup_waiting_period': None}
User: 3dplts / 475f3296-18f1-40f5-9838-64da00323fd3
Workspace: default / 6ded3963-f5f5-4735-8f2b-d7b8da2cb807

ARTIFACT_STORE: artifact-store-ansible

Name: artifact-store-ansible
ID: bc4c1095-9c59-42f9-a7c8-f6a4057e6fa4
Type: artifact_store
Flavor: s3
Configuration: {'authentication_secret': None, 'path': 's3://mlops-3dplts-zenml-bucket', 'key': '', 'secret': '', 'token': '********', 'client_kwargs': {'endpoint_url': 'http://deepthought1.multitel.be:10502'},
'config_kwargs': None, 's3_additional_kwargs': None}
User: 3dplts / 475f3296-18f1-40f5-9838-64da00323fd3
Workspace: default / 6ded3963-f5f5-4735-8f2b-d7b8da2cb807

CONTAINER_REGISTRY: registry-ansible

Name: registry-ansible
ID: b3b51373-1dc2-49ef-a76f-7c1cd947b1e2
Type: container_registry
Flavor: default
Configuration: {'authentication_secret': None, 'uri': 'registry.multitel.be/signal/tef/mlops-registry/3dplts', 'default_repository': None}
User: 3dplts / 475f3296-18f1-40f5-9838-64da00323fd3
Workspace: default / 6ded3963-f5f5-4735-8f2b-d7b8da2cb807

EXPERIMENT_TRACKER: mlflow-3dplts-ansible

Name: mlflow-3dplts-ansible
ID: 45d25a5e-ffd5-4517-99dd-6d28a555c653
Type: experiment_tracker
Flavor: mlflow
Configuration: {'experiment_name': None, 'nested': False, 'tags': {}, 'tracking_uri': 'http://deepthought1.multitel.be:10533', 'tracking_username': '', 'tracking_password': '', 'tracking_token': '********',
'tracking_insecure_tls': False, 'databricks_host': None, 'enable_unity_catalog': False}
User: 3dplts / 475f3296-18f1-40f5-9838-64da00323fd3
Workspace: default / 6ded3963-f5f5-4735-8f2b-d7b8da2cb807

IMAGE_BUILDER: image-builder-ansible

Name: image-builder-ansible
ID: c0a11672-ed99-45ac-b988-ec829a372c82
Type: image_builder
Flavor: local
Configuration: {}
User: 3dplts / 475f3296-18f1-40f5-9838-64da00323fd3
Workspace: default / 6ded3963-f5f5-4735-8f2b-d7b8da2cb807

MODEL_REGISTRY: model-registry-ansible

Name: model-registry-ansible
ID: 93b7d6e6-80a6-438d-8dc9-26231be4d9e0
Type: model_registry
Flavor: mlflow
Configuration: {}
User: 3dplts / 475f3296-18f1-40f5-9838-64da00323fd3
Workspace: default / 6ded3963-f5f5-4735-8f2b-d7b8da2cb807

What happened?

I recently upgraded ZenML from 0.64.0 to 0.70.0.

In the Dashboard, when looking at a run, we can click on a step and go to the "Configuration" tab. In this tab there is a "parameters" section that contains the raw parameters passed to the step.

Since I upgraded to 0.70.0, it seems that parameters of type dict and list are not displayed. int and str are still displayed.

Note that when I programmatically retrieve the step configuration with something like this :

from zenml.client import Client
run = Client().get_run_step("95318c42-a57b-46cc-81f2-f618cefc2bc7")
print(run.config.parameters)

Then I do get all the parameters.

Reproduction steps

  • have ZenML 0.70.0 (I have not tested other versions of ZenML, except 0.64.0 where I did not have the issue)
  • Execute this pipeline: (I included my kubernetes setup for transparency, I don't think it changes the result)
from zenml.integrations.kubernetes.pod_settings import KubernetesPodSettings
from zenml.integrations.kubernetes.flavors import KubernetesOrchestratorSettings
from zenml import pipeline, step


@step()
def dummy(int_arg: int, str_arg: str, dict_arg: dict, list_arg: list[int]):
    print(f"{int_arg = }")
    print(f"{str_arg = }")
    print(f"{dict_arg = }")
    print(f"{list_arg = }")


if __name__ == "__main__":
    k8s_orchestrator_settings = KubernetesOrchestratorSettings(
        pod_settings=KubernetesPodSettings(
            resources={
                "requests": {"cpu": "1", "memory": "1Gi"},
                "limits": {"cpu": "1", "memory": "1Gi"},
            }
        ),
        orchestrator_pod_settings=KubernetesPodSettings(
            resources={
                "requests": {"cpu": "1", "memory": "2Gi"},
                "limits": {"cpu": "1", "memory": "2Gi"},
            }
        ),
    )
    @pipeline(
        name="debug",
        settings={
            "orchestrator.kubernetes": k8s_orchestrator_settings,
        },
        enable_cache=False,
    )
    def pipeline():
        dummy(
            int_arg=123,
            str_arg="hello",
            dict_arg={"a": 1, "b": 2},
            list_arg=[1, 2, 3],
        )

    # pipeline.build()
    pipeline()
  • Go to the Dashboard for the run, and see that the "Configuration" tab for step "dummy" does not display the dict and list args:
    image

Relevant log output

No response

Code of Conduct

  • I agree to follow this project's Code of Conduct
@blueblasterz blueblasterz added the bug Something isn't working label Nov 27, 2024
@Cahllagerfeld
Copy link
Contributor

Hey @blueblasterz,
thanks for reporting it 🚀

I was able to reproduce the bug, and already found the place in the code 👍
I'll keep you posted on some updates for the fix

@Cahllagerfeld
Copy link
Contributor

I just merged the PR with the fix. It will be part of the next up comming release.

I would close the issue for now, but in case anything unexpected is still happening feel free to reopen it 👍

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants