class_docstr: Callback that streams epoch results to a [Weights & Biases](https://self.wandb.ai/) run.
  
  ```python
  self.wandb.login()
  wandb_logger = WandbCallback(project="sample-self.wandb-project", job_type="train")
  model.fit(X_train, Y_train, callbacks=[wandb_logger])
  ```
class_docstr_tok: ["Callback","that","streams","epoch","results","to","a","[","Weights","&","Biases","]","(","https",":","\/\/self.wandb.ai\/",")","run",".","``","`","python","self.wandb.login","(",")","wandb_logger","=","WandbCallback","(","project=","''","sample-self.wandb-project","''",",","job_type=","''","train","''",")","model.fit","(","X_train",",","Y_train",",","callbacks=","[","wandb_logger","]",")","``","`"]
code: def _add_model_as_artifact(self, model_path: str, epoch: int):
      artifact = self.wandb.Artifact(
          f"model-{self.run.name}",
          type="model",
          metadata={"epoch": epoch, "model_path": model_path},
      )
      artifact.add_dir(model_path)
      self.run.log_artifact(artifact)
  
file_path: elegy/elegy/callbacks/wandb_callback.py
imports: import math
  from typing import Dict, Optional, Union
  from .callback import Callback
label_desc: Use image node_id 3 for calling the WandbCallback obj's underlying member method code with example usage: obj._add_model_as_artifact(model_path, epoch) without return types