← back to the showcase

Equivalence summary

Every comparison below is a byte compare of the outputs: every predicted value as raw doubles (or at 17 significant digits in printed output). "same" means byte-identical between the official LightGBM 4.7.0 wheel and the TAKT library: the free package's library and the full version's library, both as delivered.

Equivalence matrix (tools/eqmatrix.py): 4,497 prediction cases, 1,060,559,499 values

Library AMD Zen 3 (Ubuntu 24.04, glibc 2.39) AMD Zen 4 (Debian 13, glibc 2.41)
full version 4,497 cases same, 0 of 1,060,559,499 values differ same, 0 differ
free package same, 0 differ same, 0 differ
free package, TAKT_LGBM_CACHE_MB=0 same, 0 differ —

LightGBM's own test suites

Concurrency and long runs

ABI

The TAKT libraries export exactly the same 6,469 dynamic symbols as the official lib_lightgbm.so, need the same shared libraries (libstdc++, libgomp, libm, libc and the others the official one needs) and no symbol versions newer than the official one (glibc 2.27 at most). Built with the official compiler (gcc 12.2.1, gcc-toolset-12) in the manylinux_2_28 image with the official build configuration.

Note on bit-identity across systems

Some of LightGBM's outputs (probabilities, for example) pass through the system maths library, and numpy's own results can depend on the CPU it dispatches to. The TAKT library reproduces the official library's output on the same system; compare the two on the same machine.

Source text: SUMMARY.md

Telegram