Skip to main content

Crate silvic_core

Crate silvic_core 

Source
Expand description

LightGBM-compatible gradient boosting: binning, leaf-wise tree growth on quantized integer histograms, and LightGBM 3.3.5 model.txt output.

boosting::train grows trees through a Backend (this crate’s CpuBackend, or the Metal and CUDA backends of silvic-gpu) and reduces histograms across ranks through a Collective (LocalCollective for one process, silvic-net’s TCP ring across many). Quantized histograms are integer sums, so training is bit-reproducible and a model trained on N ranks equals the one trained on all rows in one process.

Re-exports§

pub use backend::Backend;
pub use backend::CpuBackend;
pub use boosting::train;
pub use boosting::train_from;
pub use boosting::IterationReport;
pub use collective::Collective;
pub use collective::LocalCollective;
pub use config::Params;
pub use data::BinnedDataset;
pub use model::Model;

Modules§

backend
The device operations the learner drives. A backend holds the training set (dataset 0) and the validation sets (1..) in its own memory, their f32 scores, the training gradients and a partition array of training row indices in which every leaf of the tree being grown is a contiguous range.
boosting
The boosting loop (LightGBM 3.3.5 GBDT::Train/GBDT::TrainOneIter, src/boosting/gbdt.cpp).
collective
The collectives distributed training runs on, in the shape of LightGBM’s Network (allreduce, allgather) but over a transport the caller supplies.
config
Training parameters under LightGBM 3.3.5’s names and aliases (config.h), parsed from a JSON object the way LightGBM’s Python package passes them: numbers or numeric strings, booleans or "true"/"false", lists as JSON arrays or comma-separated strings.
data
Binned training data: every feature value replaced by a bin index (a byte), features packed into groups whose bins fit one GPU threadgroup’s shared histogram.
metric
Evaluation metrics, as LightGBM 3.3.5 names and computes them: NDCGMetric (ndcg@k), RegressionMetric<L2Metric> (l2), RegressionMetric<RMSEMetric> (rmse), BinaryMetric<BinaryLoglossMetric> (binary_logloss) and AUCMetric (auc).
model
A trained model in LightGBM 3.3.5’s text format (GBDT::SaveModelToString), which LightGBM 3.3.5 and 4.x load and lleaves compiles, and the predictor over it.
objective
Gradients of the training objectives on the host: the CPU backend’s implementation and the reference the GPU kernels are tested against.
quantize
Gradient quantization (LightGBM 4’s GradientDiscretizer, use_quantized_grad) and the counter-based random numbers behind stochastic rounding and bagging.
tree
A regression tree in LightGBM 3.3.5’s own array layout (include/LightGBM/tree.h), so Tree::ToString output is a field-by-field dump.

Enums§

SilvicError
Every failure silvic reports. Cheap to clone: a collective failure on one rank is surfaced on every call after it.

Type Aliases§

Result