class_docstr: Wrapper that trains a separate LGBM Booster for each quantile level.
class_docstr_tok: ["Wrapper","that","trains","a","separate","LGBM","Booster","for","each","quantile","level","."]
code: def fit(self, **train_params_base):
      import lightgbm as lgb
  
      from .callbacks import early_stopping_custom
  
      start_time_global = time.time()
  
      for q in self.quantile_levels:
          train_params = copy.deepcopy(train_params_base)
          train_params["params"]["alpha"] = q
          if self.early_stopping_callback_kwargs is not None:
              es_kwargs = copy.deepcopy(
                  self.early_stopping_callback_kwargs
              )
              if self.time_limit_global is not None:
                  es_kwargs["start_time"] = time.time()
                  es_kwargs[
                      "time_limit"
                  ] = self.time_limit_global / len(self.quantile_levels)
              # Don't add a logging callback to avoid printing logs for each base booster
              train_params["callbacks"] = [
                  early_stopping_custom(**es_kwargs)
              ]
          else:
              train_params["callbacks"] = []
  
          self.model_dict[q] = lgb.train(**train_params)
          if self.time_limit_global is not None:
              time_left = self.time_limit_global - (
                  time.time() - start_time_global
              )
              if time_left <= 0 and len(self.model_dict) != len(
                  self.quantile_levels
              ):
                  raise TimeLimitExceeded
      return self
  
imports: import copy
  import os
  import time
  from typing import List, Optional
  import numpy
  import pandas
  from pandas import DataFrame, Series
  from autogluon.common.utils.try_import import try_import_lightgbm
  from autogluon.core.constants import BINARY, MULTICLASS, QUANTILE, REGRESSION, SOFTCLASS
  from autogluon.core.utils.exceptions import TimeLimitExceeded
label_desc: Use image node_id 2 for calling the QuantileBooster obj's underlying member method code with example usage: obj.fit() and returns: self