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 _validate_scaling_config(
      cls, scaling_config: ScalingConfig
  ) -> ScalingConfig:
      # Todo: `trainer_resources` should be configurable. Currently it is silently
      # ignored. We catch the error here rather than in
      # `_scaling_config_allowed_keys` because the default of `None` is updated to
      # `{}` from XGBoost-Ray.
      if scaling_config.trainer_resources not in [None, {}]:
          raise ValueError(
              f"The `trainer_resources` attribute for {cls.__name__} "
              f"is currently ignored and defaults to `{{}}`. Remove the "
              f"`trainer_resources` key from your `ScalingConfig` to resolve."
          )
      return super(GBDTTrainer, cls)._validate_scaling_config(
          scaling_config=scaling_config
      )
  
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 4 for calling the GBDTTrainer obj's underlying member method code with example usage: obj._validate_scaling_config(cls, scaling_config) and returns: super