docstr: Save the BigDL model to model_path
  
  :param model_path: path to save the trained model.
  :return:
docstr_tok: ["Save","the","BigDL","model","to","model_path",":","param","model_path",":","path","to","save","the","trained","model",".",":","return",":"]
code: def save(self, model_path):
      """
      Save the BigDL model to model_path
  
      :param model_path: path to save the trained model.
      :return:
      """
      try:
          model = self.get_model()
          model.saveModel(
              model_path + ".bigdl", model_path + ".bin", True
          )
      except ValueError:
          raise ValueError("You should fit before calling save")
  
imports: from zoo.orca.learn.metrics import Metric
  from zoo.orca.learn.utils import bigdl_metric_results_to_dict
  from zoo.pipeline.nnframes import NNEstimator, NNModel
  from zoo.pipeline.estimator import Estimator
  from zoo.orca.learn.spark_estimator import Estimator
  from zoo.orca.data import SparkXShards
  from bigdl.optim.optimizer import MaxEpoch
  from zoo.feature.common import FeatureSet
  from zoo.orca.learn.metrics import Accuracy
  from pyspark.sql.dataframe import DataFrame
label_desc: Use image node_id 6 for calling the BigDLEstimator obj's underlying member method code with example usage: obj.save(model_path) without return types