class_docstr: Abstract class for scaling gradient-boosting decision tree (GBDT) frameworks.
  
  Inherited by XGBoostTrainer and LightGBMTrainer.
  
  Args:
      datasets: Datasets to use for training and validation. Must include a
          "train" key denoting the training dataset.
          All non-training datasets will be used as separate
          validation sets, each reporting a separate metric.
      label_column: Name of the label column. A column with this name
          must be present in the training dataset.
      params: Framework specific training parameters.
      dmatrix_params: Dict of ``dataset name:dict of kwargs`` passed to respective
          :class:`xgboost_ray.RayDMatrix` initializations.
      num_boost_round: Target number of boosting iterations (trees in the model).
      scaling_config: Configuration for how to scale data parallel training.
      run_config: Configuration for the execution of the training run.
      resume_from_checkpoint: A checkpoint to resume training from.
      metadata: Dict that should be made available in `checkpoint.get_metadata()`
          for checkpoints saved from this Trainer. Must be JSON-serializable.
      **train_kwargs: Additional kwargs passed to framework ``train()`` function.
code: def _generate_trainable_cls(self) -> Type["Trainable"]:
      trainable_cls = super()._generate_trainable_cls()
      trainer_cls = self.__class__
      scaling_config = self.scaling_config
      ray_params_cls = self._ray_params_cls
      default_ray_params = self._default_ray_params
  
      class GBDTTrainable(trainable_cls):
          @classmethod
          def default_resource_request(cls, config):
              # `config["scaling_config"] is a dataclass when passed via the
              # `scaling_config` argument in `Trainer` and is a dict when passed
              # via the `scaling_config` key of `param_spec`.
              updated_scaling_config = config.get(
                  "scaling_config", scaling_config
              )
              if isinstance(updated_scaling_config, dict):
                  updated_scaling_config = ScalingConfig(
                      **updated_scaling_config
                  )
              validated_scaling_config = (
                  trainer_cls._validate_scaling_config(
                      updated_scaling_config
                  )
              )
              return _convert_scaling_config_to_ray_params(
                  validated_scaling_config,
                  ray_params_cls,
                  default_ray_params,
              ).get_tune_resources()
  
      return GBDTTrainable
  
imports: import logging
  import os
  import tempfile
  import warnings
  from dataclasses import dataclass
  from typing import TYPE_CHECKING, Any, Dict, Optional, Type
  from ray import train, tune
  from ray._private.dict import flatten_dict
  from ray.train import Checkpoint, RunConfig, ScalingConfig
  from ray.train.constants import MODEL_KEY, TRAIN_DATASET_KEY
  from ray.train.trainer import BaseTrainer, GenDataset
  from ray.tune import Trainable
  from ray.tune.execution.placement_groups import PlacementGroupFactory
  from ray.util.annotations import DeveloperAPI
label_desc: Use image node_id 14 for calling the GBDTTrainer obj's underlying member method code with example usage: obj._generate_trainable_cls() and returns: GBDTTrainable, _convert_scaling_config_to_ray_params