Hyperparameter Search Feature
When a list or a string starting with "range" is found in the params of a stage, Passport.AddStage() creates a DVC stage using -foreach and -do, passing each combination of those hyperparameters as an argument.
In the MLflowTracker, when such list or string values are detected in the stage's params, a nested run is created under the name of the stage, with child runs named stage_name_{run_number}. DS_VERSION is updated to include the run IDs of the child runs. Each run's hyperparameter set is logged to MLflow.
Additionally, when torch is found in sys.modules, mlflow.pytorch.autolog() is used instead of mlflow.autolog().
In return_md5, if foreach is present in the stage, the cmd is under 'do', and is parsed accordingly.