Hi all,
having an issue and need some help for Python project inside a Udacity course.
We shall use Python 3.8, therefore I am using 3.8.16 and having created a virtual env starting from that version and activated virtual env.
Using Jupyter Lab I am trying to use a pipeline for mlflow, hydra and wandb I am getting the same error as mentioned e.g. in
I tried already the mentioned protobuf version 3.20.0 and 3.20.1 and different wandb versions via conda.yml, always getting the same error:
name: download_data
channels:
- conda-forge
- defaults
dependencies:
- python=3.8
- requests=2.24.0
- pip=20.3.3
- mlflow=2.1.1
- hydra-core=1.3.1 #1.0.6
# - wandb=0.13.10
- pip:
#- wandb==0.10.21
- protobuf==3.20.0
- wandb==0.12.2
- hydra-joblib-launcher==1.1.2
Still getting the following stacktrace for the ML model and its param setting:
mlflow run . -P hydra_options=“random_forest_pipeline.random_forest.max_depth=5”
2023/02/12 17:55:15 INFO mlflow.utils.conda: === Creating conda environment mlflow-8284cfd5101c5c151da499d35f932662f514265c ===
Collecting package metadata (repodata.json): …working… done
Solving environment: …working… done
Preparing transaction: …working… done
Verifying transaction: …working… done
Executing transaction: …working… done
Installing pip dependencies: …working… done
2023/02/12 18:02:28 INFO mlflow.projects.utils: === Created directory /tmp/tmpcv9ww8ry for downloading remote URIs passed to arguments of type ‘path’ ===
2023/02/12 18:02:28 INFO mlflow.projects.backend.local: === Running command ‘source /home/ilona/miniconda3/bin/…/etc/profile.d/conda.sh && conda activate mlflow-8284cfd5101c5c151da499d35f932662f514265c 1>&2 && python main.py $(echo random_forest_pipeline.random_forest.max_depth=5)’ in run with ID ‘a6d323399b9242c1b227bae18109b69d’ ===
2023/02/12 18:02:39 INFO mlflow.utils.conda: Conda environment mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f already exists.
2023/02/12 18:02:39 INFO mlflow.projects.utils: === Created directory /tmp/tmpsxd_dtnx for downloading remote URIs passed to arguments of type ‘path’ ===
2023/02/12 18:02:39 INFO mlflow.projects.backend.local: === Running command ‘source /home/ilona/miniconda3/bin/…/etc/profile.d/conda.sh && conda activate mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f 1>&2 && python run.py --train_data exercise_6/data_train.csv:latest
–model_config /home/ilona/MLOps/nd0821-c2-build-model-workflow-exercises/lesson-4-training-validation-experiment-tracking/exercises/exercise_11/starter/outputs/2023-02-12/18-02-33/random_forest_config.yml’ in run with ID ‘59002ca997e54d1dac9fd30e5a418009’ ===
Traceback (most recent call last):
File “run.py”, line 15, in
import wandb
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/wandb/init.py”, line 38, in
from wandb import sdk as wandb_sdk
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/wandb/sdk/init.py”, line 12, in
from .wandb_init import init # noqa: F401
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/wandb/sdk/wandb_init.py”, line 29, in
from .backend.backend import Backend
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/wandb/sdk/backend/backend.py”, line 17, in
from …interface import interface
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/wandb/sdk/interface/interface.py”, line 18, in
from wandb.proto import wandb_internal_pb2 as pb
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/wandb/proto/wandb_internal_pb2.py”, line 15, in
from wandb.proto import wandb_telemetry_pb2 as wandb_dot_proto_dot_wandb__telemetry__pb2
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/wandb/proto/wandb_telemetry_pb2.py”, line 34, in
_descriptor.FieldDescriptor(
File “/home/ilona/miniconda3/envs/mlflow-70e71a7afdc413046f59e7b87abd03dc50d8745f/lib/python3.8/site-packages/google/protobuf/descriptor.py”, line 560, in new
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
- Downgrade the protobuf package to 3.20.x or lower.
- Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
More information: Changes made on May 6, 2022 | Protocol Buffers Documentation
…
In advance, thank you very much for help and solution proposals,
Ilona