class_docstr: Class that defines the methods necessary to hook into process.
class_docstr_tok: ["Class","that","defines","the","methods","necessary","to","hook","into","process","."]
code: def on_train_start(self, model, config, config_fp, *args, **kwargs):
      if self.cometml_experiment:
          # todo v0.4: currently not clear way to set model graph
          # see: https://github.com/comet-ml/issue-tracking/issues/296
          # if model:
          #     self.cometml_experiment.set_model_graph(
          #         str(model._graph.as_graph_def()))
  
          if config:
              if config_fp:
                  base_name = os.path.basename(config_fp)
              else:
                  base_name = "config.yaml"
              if "." in base_name:
                  base_name = base_name.rsplit(".", 1)[0] + ".json"
              else:
                  base_name = base_name + ".json"
              self.cometml_experiment.log_asset_data(config, base_name)
  
file_path: ludwig/ludwig/contribs/comet.py
imports: import logging
  import os
  from datetime import datetime
  from ludwig.api_annotations import PublicAPI
  from ludwig.callbacks import Callback
  from ludwig.utils.package_utils import LazyLoader
label_desc: Use image node_id 3 for calling the CometCallback obj's underlying member method code with example usage: obj.on_train_start(model, config, config_fp) without return types