code: def load(results_path, model_subpath, lazy_load=True):
      model_path = os.path.join(results_path, model_subpath)
      logger.info(f"Loading model framework from {model_path}")
  
      json_desc = json.load(
          open(os.path.join(model_path, "framework.json"))
      )
  
      joblib_version_computer = joblib.__version__
      joblib_version_framework = json_desc.get("joblib_version")
  
      if (
          joblib_version_framework is not None
          and joblib_version_computer != joblib_version_framework
      ):
          raise AutoMLException(
              f"Joblib version mismatch. Computer: {joblib_version_computer}, Framework: {joblib_version_framework}. Change to Framework version!"
          )
  
      mf = ModelFramework(json_desc["params"])
      mf.uid = json_desc.get("uid", mf.uid)
      mf._name = json_desc.get("name", mf._name)
      mf._threshold = json_desc.get("threshold")
      mf.train_time = json_desc.get("train_time", mf.train_time)
      mf.final_loss = json_desc.get("final_loss", mf.final_loss)
      mf.metric_name = json_desc.get("metric_name", mf.metric_name)
      mf._is_stacked = json_desc.get("is_stacked", mf._is_stacked)
      mf._single_prediction_time = json_desc.get(
          "single_prediction_time", mf._single_prediction_time
      )
      predictions_fname = json_desc.get("predictions_fname")
      if predictions_fname is not None:
          mf._oof_predictions_fname = os.path.join(
              results_path, predictions_fname
          )
  
      mf.learners = []
      for learner_desc, learner_subpath in zip(
          json_desc.get("learners"), json_desc.get("saved")
      ):
          learner_path = os.path.join(results_path, learner_subpath)
          l = AlgorithmFactory.load(
              learner_desc, learner_path, lazy_load
          )
          mf.learners += [l]
  
      mf.preprocessings = []
      for p in json_desc.get("preprocessing"):
          ps = Preprocessing()
          ps.from_json(p, results_path)
          mf.preprocessings += [ps]
  
      return mf
  
imports: import copy
  import gc
  import json
  import logging
  import os
  import sys
  import time
  import uuid
  import zipfile
  import numpy
  import pandas
  from supervised.algorithms.factory import AlgorithmFactory
  from supervised.algorithms.registry import BINARY_CLASSIFICATION, MULTICLASS_CLASSIFICATION, REGRESSION, AlgorithmsRegistry
  from supervised.callbacks.callback_list import CallbackList
  from supervised.exceptions import AutoMLException
  from supervised.preprocessing.exclude_missing_target import ExcludeRowsMissingTarget
  from supervised.preprocessing.preprocessing import Preprocessing
  from supervised.utils.additional_metrics import AdditionalMetrics
  from supervised.utils.config import LOG_LEVEL
  from supervised.utils.metric import Metric
  from supervised.validation.validation_step import ValidationStep
  from supervised.utils.jsonencoder import MLJSONEncoder
  import joblib
  import optuna
  from supervised.tuner.optuna.tuner import OptunaTuner
  from supervised.utils.config import mem
  from supervised.utils.learning_curves import LearningCurves
label_desc: Use image node_id 25 for calling the ModelFramework obj's underlying member method code with example usage: obj.load(results_path, model_subpath, lazy_load) and returns: mf