GitHub - mirecl/catboost-cgo: CatBoost a fast, scalable, high performance Gradient Boosting on Decision Trees library. Golang using Cgo for blazing fast inference CatBoost Model 🚀 (original) (raw)
CatBoost-Cgo
Evaluation library is the fastest way for inference a model CatBoost. The library provides a C API.
The C API interface can be accessed from any programming language (example Golang + Cgo).
Prebuilt shared library (*.so | *.dylib) artifacts are available of the releases page on GitHub CatBoost project.
The shared library:
- Should be in
/usr/local/lib - Or set path in environment
CATBOOST_LIBRARY_PATH - Or set path manual in source code
SetSharedLibraryPath(see example below)
For more information, see https://catboost.ai/en/docs/concepts/c-plus-plus-api_dynamic-c-pluplus-wrapper.
Compatibility
| Previous versions | v1.2.2 | v1.2.3 | v1.2.4 | v1.2.5 | v1.2.6 | v1.2.7 | v1.2.8 |
|---|---|---|---|---|---|---|---|
| 🚫 (not testing) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ |
Features
Supported functionality (https://catboost.ai/en/docs/concepts/python-quickstart):
- CatBoostRegressor ✅
- CatBoostClassifier ✅
- CatBoostRanker ✅
Supported prediction types (https://github.com/catboost/catboost/blob/master/catboost/libs/model/enums.h):
- RawFormulaVal ✅
- Probability ✅
- Class ✅
- RMSEWithUncertainty ✅
- Exponent ✅
Limitation
Supported operating system and architectures:
| Operating system | CPU architectures | GPU support using CUDA |
|---|---|---|
| MacOS | ✅ (x86_64) | 🚫 |
| Linux | ✅ (x86_64) | ✅ (x86_64) |
| Windows 10 and 11 | 🚫 | 🚫 |
If you use GPU - only device 0 is supported for now. More details: catboost/catboost#2774.
Supported Type:
- Numeric ✅
- Categorical ✅ (https://catboost.ai/en/docs/features/categorical-features)
- Text 🚫 (https://catboost.ai/en/docs/features/text-features)
- Embeddings 🚫 (https://catboost.ai/en/docs/features/embeddings-features)
Installation
- Install catboost-cgo:
go get github.com/mirecl/catboost-cgo
- Download CatBoost shared library from release page: https://github.com/catboost/catboost/releases
- Save CatBoost shared library in
/usr/local/libor manual set path:
import ( cb "github.com/mirecl/catboost-cgo/catboost" )
func main(){ cb.SetSharedLibraryPath(...) }
- See examples of use