catboost 1.25.1 → 1.27.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (290) hide show
  1. package/DEPLOYMENT.md +22 -15
  2. package/README.md +43 -27
  3. package/binding.gyp +5 -7
  4. package/build_scripts/bootstrap.js +2 -1
  5. package/build_scripts/out/build.js +46 -68
  6. package/build_scripts/out/build_model.js +1 -1
  7. package/build_scripts/out/{build_ya.js → build_native.js} +1 -1
  8. package/build_scripts/out/ci.js +5 -5
  9. package/build_scripts/out/common.js +1 -1
  10. package/build_scripts/out/config.js +32 -18
  11. package/build_scripts/out/install.js +5 -3
  12. package/build_scripts/out/package_prepublish.js +1 -1
  13. package/build_scripts/out/packaging.js +1 -19
  14. package/build_scripts/out/run_tests.js +1 -1
  15. package/build_scripts/out/test.js +8 -3
  16. package/config.json +18 -11
  17. package/inc/catboost/libs/model_interface/c_api.h +367 -5
  18. package/lib/catboost.d.ts +65 -21
  19. package/package.json +4 -4
  20. package/src/api_helpers.cpp +100 -24
  21. package/src/api_helpers.h +8 -7
  22. package/src/api_module.cpp +1 -2
  23. package/src/model.cpp +483 -83
  24. package/src/model.h +24 -9
  25. package/inc/contrib/libs/cxxsupp/system_stl/include/stlfwd +0 -14
  26. package/inc/util/charset/recode_result.h +0 -9
  27. package/inc/util/charset/unicode_table.h +0 -123
  28. package/inc/util/charset/unidata.h +0 -421
  29. package/inc/util/charset/utf8.h +0 -384
  30. package/inc/util/charset/wide.h +0 -843
  31. package/inc/util/charset/wide_specific.h +0 -22
  32. package/inc/util/datetime/base.h +0 -669
  33. package/inc/util/datetime/constants.h +0 -7
  34. package/inc/util/datetime/cputimer.h +0 -124
  35. package/inc/util/datetime/parser.h +0 -292
  36. package/inc/util/datetime/systime.h +0 -47
  37. package/inc/util/datetime/uptime.h +0 -8
  38. package/inc/util/digest/city.h +0 -88
  39. package/inc/util/digest/fnv.h +0 -73
  40. package/inc/util/digest/multi.h +0 -14
  41. package/inc/util/digest/murmur.h +0 -57
  42. package/inc/util/digest/numeric.h +0 -86
  43. package/inc/util/digest/sequence.h +0 -48
  44. package/inc/util/draft/date.h +0 -129
  45. package/inc/util/draft/datetime.h +0 -184
  46. package/inc/util/draft/enum.h +0 -136
  47. package/inc/util/draft/holder_vector.h +0 -102
  48. package/inc/util/draft/ip.h +0 -131
  49. package/inc/util/draft/matrix.h +0 -108
  50. package/inc/util/draft/memory.h +0 -40
  51. package/inc/util/folder/dirent_win.h +0 -46
  52. package/inc/util/folder/dirut.h +0 -121
  53. package/inc/util/folder/filelist.h +0 -81
  54. package/inc/util/folder/fts.h +0 -108
  55. package/inc/util/folder/iterator.h +0 -109
  56. package/inc/util/folder/lstat_win.h +0 -20
  57. package/inc/util/folder/path.h +0 -225
  58. package/inc/util/folder/pathsplit.h +0 -113
  59. package/inc/util/folder/tempdir.h +0 -42
  60. package/inc/util/generic/adaptor.h +0 -134
  61. package/inc/util/generic/algorithm.h +0 -765
  62. package/inc/util/generic/array_ref.h +0 -282
  63. package/inc/util/generic/array_size.h +0 -24
  64. package/inc/util/generic/benchmark/vector_count_ctor/f.h +0 -9
  65. package/inc/util/generic/bitmap.h +0 -1115
  66. package/inc/util/generic/bitops.h +0 -459
  67. package/inc/util/generic/bt_exception.h +0 -24
  68. package/inc/util/generic/buffer.h +0 -232
  69. package/inc/util/generic/cast.h +0 -176
  70. package/inc/util/generic/deque.h +0 -24
  71. package/inc/util/generic/explicit_type.h +0 -42
  72. package/inc/util/generic/fastqueue.h +0 -55
  73. package/inc/util/generic/flags.h +0 -244
  74. package/inc/util/generic/function.h +0 -103
  75. package/inc/util/generic/fwd.h +0 -171
  76. package/inc/util/generic/guid.h +0 -61
  77. package/inc/util/generic/hash.h +0 -2032
  78. package/inc/util/generic/hash_primes.h +0 -140
  79. package/inc/util/generic/hash_set.h +0 -490
  80. package/inc/util/generic/hide_ptr.h +0 -3
  81. package/inc/util/generic/intrlist.h +0 -876
  82. package/inc/util/generic/is_in.h +0 -53
  83. package/inc/util/generic/iterator.h +0 -137
  84. package/inc/util/generic/iterator_range.h +0 -105
  85. package/inc/util/generic/lazy_value.h +0 -66
  86. package/inc/util/generic/list.h +0 -22
  87. package/inc/util/generic/map.h +0 -44
  88. package/inc/util/generic/mapfindptr.h +0 -60
  89. package/inc/util/generic/maybe.h +0 -713
  90. package/inc/util/generic/maybe_traits.h +0 -164
  91. package/inc/util/generic/mem_copy.h +0 -55
  92. package/inc/util/generic/noncopyable.h +0 -38
  93. package/inc/util/generic/object_counter.h +0 -53
  94. package/inc/util/generic/ptr.h +0 -1113
  95. package/inc/util/generic/queue.h +0 -57
  96. package/inc/util/generic/refcount.h +0 -162
  97. package/inc/util/generic/reserve.h +0 -11
  98. package/inc/util/generic/scope.h +0 -65
  99. package/inc/util/generic/serialized_enum.h +0 -406
  100. package/inc/util/generic/set.h +0 -42
  101. package/inc/util/generic/singleton.h +0 -136
  102. package/inc/util/generic/size_literals.h +0 -65
  103. package/inc/util/generic/stack.h +0 -18
  104. package/inc/util/generic/store_policy.h +0 -120
  105. package/inc/util/generic/strbase.h +0 -612
  106. package/inc/util/generic/strbuf.h +0 -552
  107. package/inc/util/generic/strfcpy.h +0 -17
  108. package/inc/util/generic/string.h +0 -1572
  109. package/inc/util/generic/string_hash.h +0 -21
  110. package/inc/util/generic/string_ut.h +0 -1175
  111. package/inc/util/generic/type_name.h +0 -34
  112. package/inc/util/generic/typelist.h +0 -114
  113. package/inc/util/generic/typetraits.h +0 -325
  114. package/inc/util/generic/utility.h +0 -132
  115. package/inc/util/generic/va_args.h +0 -400
  116. package/inc/util/generic/variant.h +0 -631
  117. package/inc/util/generic/variant_traits.h +0 -171
  118. package/inc/util/generic/vector.h +0 -119
  119. package/inc/util/generic/xrange.h +0 -258
  120. package/inc/util/generic/yexception.h +0 -212
  121. package/inc/util/generic/yexception_ut.h +0 -14
  122. package/inc/util/generic/ylimits.h +0 -92
  123. package/inc/util/generic/ymath.h +0 -206
  124. package/inc/util/memory/addstorage.h +0 -93
  125. package/inc/util/memory/alloc.h +0 -27
  126. package/inc/util/memory/blob.h +0 -296
  127. package/inc/util/memory/mmapalloc.h +0 -8
  128. package/inc/util/memory/pool.h +0 -432
  129. package/inc/util/memory/segmented_string_pool.h +0 -194
  130. package/inc/util/memory/segpool_alloc.h +0 -118
  131. package/inc/util/memory/smallobj.h +0 -141
  132. package/inc/util/memory/tempbuf.h +0 -111
  133. package/inc/util/network/address.h +0 -136
  134. package/inc/util/network/endpoint.h +0 -61
  135. package/inc/util/network/hostip.h +0 -16
  136. package/inc/util/network/init.h +0 -60
  137. package/inc/util/network/interface.h +0 -17
  138. package/inc/util/network/iovec.h +0 -65
  139. package/inc/util/network/ip.h +0 -116
  140. package/inc/util/network/nonblock.h +0 -8
  141. package/inc/util/network/pair.h +0 -9
  142. package/inc/util/network/poller.h +0 -58
  143. package/inc/util/network/pollerimpl.h +0 -707
  144. package/inc/util/network/sock.h +0 -608
  145. package/inc/util/network/socket.h +0 -421
  146. package/inc/util/random/common_ops.h +0 -130
  147. package/inc/util/random/easy.h +0 -47
  148. package/inc/util/random/entropy.h +0 -21
  149. package/inc/util/random/fast.h +0 -101
  150. package/inc/util/random/init_atfork.h +0 -3
  151. package/inc/util/random/lcg_engine.h +0 -66
  152. package/inc/util/random/mersenne.h +0 -46
  153. package/inc/util/random/mersenne32.h +0 -50
  154. package/inc/util/random/mersenne64.h +0 -50
  155. package/inc/util/random/normal.h +0 -38
  156. package/inc/util/random/random.h +0 -30
  157. package/inc/util/random/shuffle.h +0 -39
  158. package/inc/util/str_stl.h +0 -266
  159. package/inc/util/stream/aligned.h +0 -99
  160. package/inc/util/stream/buffer.h +0 -119
  161. package/inc/util/stream/buffered.h +0 -225
  162. package/inc/util/stream/debug.h +0 -53
  163. package/inc/util/stream/direct_io.h +0 -43
  164. package/inc/util/stream/file.h +0 -108
  165. package/inc/util/stream/format.h +0 -444
  166. package/inc/util/stream/fwd.h +0 -100
  167. package/inc/util/stream/hex.h +0 -8
  168. package/inc/util/stream/holder.h +0 -44
  169. package/inc/util/stream/input.h +0 -273
  170. package/inc/util/stream/labeled.h +0 -19
  171. package/inc/util/stream/length.h +0 -100
  172. package/inc/util/stream/mem.h +0 -255
  173. package/inc/util/stream/multi.h +0 -32
  174. package/inc/util/stream/null.h +0 -61
  175. package/inc/util/stream/output.h +0 -304
  176. package/inc/util/stream/pipe.h +0 -112
  177. package/inc/util/stream/printf.h +0 -25
  178. package/inc/util/stream/str.h +0 -207
  179. package/inc/util/stream/tee.h +0 -28
  180. package/inc/util/stream/tempbuf.h +0 -21
  181. package/inc/util/stream/tokenizer.h +0 -214
  182. package/inc/util/stream/trace.h +0 -60
  183. package/inc/util/stream/walk.h +0 -35
  184. package/inc/util/stream/zerocopy.h +0 -91
  185. package/inc/util/stream/zerocopy_output.h +0 -57
  186. package/inc/util/stream/zlib.h +0 -173
  187. package/inc/util/string/ascii.h +0 -236
  188. package/inc/util/string/builder.h +0 -39
  189. package/inc/util/string/cast.h +0 -347
  190. package/inc/util/string/cstriter.h +0 -14
  191. package/inc/util/string/escape.h +0 -70
  192. package/inc/util/string/hex.h +0 -59
  193. package/inc/util/string/join.h +0 -194
  194. package/inc/util/string/printf.h +0 -13
  195. package/inc/util/string/reverse.h +0 -16
  196. package/inc/util/string/split.h +0 -1080
  197. package/inc/util/string/strip.h +0 -257
  198. package/inc/util/string/strspn.h +0 -65
  199. package/inc/util/string/subst.h +0 -56
  200. package/inc/util/string/type.h +0 -50
  201. package/inc/util/string/util.h +0 -195
  202. package/inc/util/string/vector.h +0 -132
  203. package/inc/util/system/align.h +0 -50
  204. package/inc/util/system/atexit.h +0 -22
  205. package/inc/util/system/atomic.h +0 -51
  206. package/inc/util/system/atomic_gcc.h +0 -90
  207. package/inc/util/system/atomic_ops.h +0 -189
  208. package/inc/util/system/atomic_win.h +0 -114
  209. package/inc/util/system/backtrace.h +0 -39
  210. package/inc/util/system/byteorder.h +0 -186
  211. package/inc/util/system/compat.h +0 -84
  212. package/inc/util/system/compiler.h +0 -620
  213. package/inc/util/system/condvar.h +0 -71
  214. package/inc/util/system/context.h +0 -181
  215. package/inc/util/system/context_aarch64.h +0 -8
  216. package/inc/util/system/context_i686.h +0 -9
  217. package/inc/util/system/context_x86.h +0 -12
  218. package/inc/util/system/context_x86_64.h +0 -7
  219. package/inc/util/system/cpu_id.h +0 -159
  220. package/inc/util/system/daemon.h +0 -28
  221. package/inc/util/system/datetime.h +0 -98
  222. package/inc/util/system/defaults.h +0 -149
  223. package/inc/util/system/demangle.h +0 -5
  224. package/inc/util/system/demangle_impl.h +0 -23
  225. package/inc/util/system/direct_io.h +0 -71
  226. package/inc/util/system/dynlib.h +0 -119
  227. package/inc/util/system/env.h +0 -32
  228. package/inc/util/system/error.h +0 -95
  229. package/inc/util/system/event.h +0 -122
  230. package/inc/util/system/execpath.h +0 -17
  231. package/inc/util/system/fasttime.h +0 -6
  232. package/inc/util/system/fhandle.h +0 -27
  233. package/inc/util/system/file.h +0 -210
  234. package/inc/util/system/file_lock.h +0 -34
  235. package/inc/util/system/filemap.h +0 -383
  236. package/inc/util/system/flock.h +0 -35
  237. package/inc/util/system/fs.h +0 -156
  238. package/inc/util/system/fs_win.h +0 -29
  239. package/inc/util/system/fstat.h +0 -46
  240. package/inc/util/system/getpid.h +0 -12
  241. package/inc/util/system/guard.h +0 -179
  242. package/inc/util/system/hi_lo.h +0 -139
  243. package/inc/util/system/hostname.h +0 -10
  244. package/inc/util/system/hp_timer.h +0 -36
  245. package/inc/util/system/info.h +0 -12
  246. package/inc/util/system/interrupt_signals.h +0 -22
  247. package/inc/util/system/madvise.h +0 -30
  248. package/inc/util/system/maxlen.h +0 -32
  249. package/inc/util/system/mem_info.h +0 -18
  250. package/inc/util/system/mincore.h +0 -38
  251. package/inc/util/system/mktemp.h +0 -11
  252. package/inc/util/system/mlock.h +0 -43
  253. package/inc/util/system/mutex.h +0 -67
  254. package/inc/util/system/nice.h +0 -3
  255. package/inc/util/system/pipe.h +0 -90
  256. package/inc/util/system/platform.h +0 -246
  257. package/inc/util/system/progname.h +0 -13
  258. package/inc/util/system/protect.h +0 -25
  259. package/inc/util/system/rusage.h +0 -26
  260. package/inc/util/system/rwlock.h +0 -78
  261. package/inc/util/system/sanitizers.h +0 -122
  262. package/inc/util/system/sem.h +0 -41
  263. package/inc/util/system/shellcommand.h +0 -472
  264. package/inc/util/system/shmat.h +0 -32
  265. package/inc/util/system/sigset.h +0 -78
  266. package/inc/util/system/spin_wait.h +0 -10
  267. package/inc/util/system/spinlock.h +0 -121
  268. package/inc/util/system/src_location.h +0 -25
  269. package/inc/util/system/src_root.h +0 -68
  270. package/inc/util/system/sys_alloc.h +0 -43
  271. package/inc/util/system/sysstat.h +0 -52
  272. package/inc/util/system/tempfile.h +0 -34
  273. package/inc/util/system/thread.h +0 -167
  274. package/inc/util/system/tls.h +0 -307
  275. package/inc/util/system/types.h +0 -119
  276. package/inc/util/system/unaligned_mem.h +0 -67
  277. package/inc/util/system/user.h +0 -5
  278. package/inc/util/system/utime.h +0 -6
  279. package/inc/util/system/valgrind.h +0 -48
  280. package/inc/util/system/winint.h +0 -43
  281. package/inc/util/system/yassert.h +0 -121
  282. package/inc/util/system/yield.h +0 -4
  283. package/inc/util/thread/factory.h +0 -65
  284. package/inc/util/thread/fwd.h +0 -30
  285. package/inc/util/thread/lfqueue.h +0 -406
  286. package/inc/util/thread/lfstack.h +0 -188
  287. package/inc/util/thread/pool.h +0 -388
  288. package/inc/util/thread/singleton.h +0 -42
  289. package/inc/util/ysafeptr.h +0 -427
  290. package/inc/util/ysaveload.h +0 -700
@@ -41,20 +41,6 @@ var fs_1 = require("fs");
41
41
  var download_1 = require("./download");
42
42
  var path_1 = require("path");
43
43
  var config_1 = require("./config");
44
- function copyHeadersRecursively(srcPath, targetPath) {
45
- for (var _i = 0, _a = fs_1.readdirSync(srcPath); _i < _a.length; _i++) {
46
- var part = _a[_i];
47
- var path = path_1.join(srcPath, part);
48
- var target = path_1.join(targetPath, part);
49
- if (fs_1.lstatSync(path).isDirectory()) {
50
- copyHeadersRecursively(path, target);
51
- continue;
52
- }
53
- if (path_1.extname(path) === '.h') {
54
- download_1.copyFile(path, target);
55
- }
56
- }
57
- }
58
44
  function prepareHeaders() {
59
45
  var incDir = './inc';
60
46
  if (!fs_1.existsSync(incDir)) {
@@ -63,10 +49,6 @@ function prepareHeaders() {
63
49
  var rootPath = '../..';
64
50
  var cApiPath = 'catboost/libs/model_interface/c_api.h';
65
51
  download_1.copyFile(path_1.join(rootPath, cApiPath), path_1.join(incDir, cApiPath));
66
- var stlfwdPath = 'contrib/libs/cxxsupp/system_stl/include/stlfwd';
67
- download_1.copyFile(path_1.join(rootPath, stlfwdPath), path_1.join(incDir, stlfwdPath));
68
- var utilPath = 'util';
69
- copyHeadersRecursively(path_1.join(rootPath, utilPath), path_1.join(incDir, utilPath));
70
52
  }
71
53
  exports.prepareHeaders = prepareHeaders;
72
54
  function generateConfigForVersion(version) {
@@ -75,7 +57,7 @@ function generateConfigForVersion(version) {
75
57
  return __generator(this, function (_b) {
76
58
  switch (_b.label) {
77
59
  case 0:
78
- console.log("Preparing config for verion " + version);
60
+ console.log("Preparing config for version " + version);
79
61
  return [4 /*yield*/, config_1.createConfigForVersion(version)];
80
62
  case 1:
81
63
  _a = _b.sent(), config = _a[0], error = _a[1];
@@ -45,7 +45,7 @@ function allTests() {
45
45
  case 0: return [4 /*yield*/, build_1.compileBindings()];
46
46
  case 1:
47
47
  _a.sent();
48
- return [4 /*yield*/, test_1.test()];
48
+ return [4 /*yield*/, test_1.test(process.argv.indexOf('--have-cuda') > -1)];
49
49
  case 2:
50
50
  _a.sent();
51
51
  return [2 /*return*/];
@@ -38,13 +38,18 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
38
38
  Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.test = void 0;
40
40
  var common_1 = require("./common");
41
- function test() {
41
+ function test(haveCuda) {
42
42
  var _a;
43
43
  return __awaiter(this, void 0, void 0, function () {
44
- var result;
44
+ var cmd, result;
45
45
  return __generator(this, function (_b) {
46
46
  switch (_b.label) {
47
- case 0: return [4 /*yield*/, common_1.execProcess('node ./lib/tests/model.js')];
47
+ case 0:
48
+ cmd = 'node ./lib/tests/model.js';
49
+ if (haveCuda) {
50
+ cmd += ' --have-cuda';
51
+ }
52
+ return [4 /*yield*/, common_1.execProcess(cmd)];
48
53
  case 1:
49
54
  result = _b.sent();
50
55
  if (result.code !== 0) {
package/config.json CHANGED
@@ -1,27 +1,34 @@
1
1
  {
2
- "linux": [
2
+ "linux-x64": [
3
3
  {
4
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/libcatboostmodel.so",
5
- "sha256": "ebc47ea32da1473220930014e1c705c07e7d60eda356325fabef691cd7ca8ab3",
4
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.10/libcatboostmodel-linux-x86_64-1.2.10.so",
5
+ "sha256": "de32f8e147ee8f969599a00b7145e8561b943e916b0132b811037f8f71952a0e",
6
6
  "targetFile": "libcatboostmodel.so"
7
7
  }
8
8
  ],
9
- "mac": [
9
+ "linux-arm64": [
10
10
  {
11
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/libcatboostmodel.dylib",
12
- "sha256": "47e92550090944cdcd0af8157b7dc198fd04cc814d9662c99160bd6b227d63bb",
11
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.10/libcatboostmodel-linux-aarch64-1.2.10.so",
12
+ "sha256": "d1b5d12f57ef72fd43505d9fbc1ea30d93d54ef0f305484c6bbfde8642e99a5b",
13
+ "targetFile": "libcatboostmodel.so"
14
+ }
15
+ ],
16
+ "darwin-universal2": [
17
+ {
18
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.10/libcatboostmodel-darwin-universal2-1.2.10.dylib",
19
+ "sha256": "c31067d8df69e0be3dd353a06853d64f2e74bab1097512fc2d0db76add75514e",
13
20
  "targetFile": "libcatboostmodel.dylib"
14
21
  }
15
22
  ],
16
- "win": [
23
+ "win32-x64": [
17
24
  {
18
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/catboostmodel.dll",
19
- "sha256": "388921ad26d36a5fe865bf446f42a9f9e1e84fed3d2c0e104c4a777880bd6b27",
25
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.10/catboostmodel-windows-x86_64-1.2.10.dll",
26
+ "sha256": "668d8867940a0832accaad6004e249f11ecc48eb63eb1d65551cfdd37c1939ad",
20
27
  "targetFile": "catboostmodel.dll"
21
28
  },
22
29
  {
23
- "url": "https:/github.com/catboost/catboost/releases/download/v0.25.1/catboostmodel.lib",
24
- "sha256": "b0acab2cf28bfcdd5e5a47be3c0e54a0bbb27f9c6efaff17d4fa2ee0a315b65b",
30
+ "url": "https:/github.com/catboost/catboost/releases/download/v1.2.10/catboostmodel-windows-x86_64-1.2.10.lib",
31
+ "sha256": "59b77bef6058548991d5eb942958999e0c3c21145f86bf0338d8f765d9975e9f",
25
32
  "targetFile": "catboostmodel.lib"
26
33
  }
27
34
  ]
@@ -3,6 +3,11 @@
3
3
  #include <stdbool.h>
4
4
  #include <stddef.h>
5
5
 
6
+
7
+ #define CATBOOST_APPLIER_MAJOR 1
8
+ #define CATBOOST_APPLIER_MINOR 2
9
+ #define CATBOOST_APPLIER_FIX 10
10
+
6
11
  #if defined(__cplusplus)
7
12
  extern "C" {
8
13
  #endif
@@ -36,6 +41,8 @@ CATBOOST_API void AddCatFeatures(DataWrapperHandle* dataWrapperHandle, const cha
36
41
 
37
42
  CATBOOST_API void AddTextFeatures(DataWrapperHandle* dataWrapperHandle, const char*** textFeatures, size_t textFeaturesSize);
38
43
 
44
+ CATBOOST_API void AddEmbeddingFeatures(DataWrapperHandle* dataWrapperHandle, const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize);
45
+
39
46
  CATBOOST_API DataProviderHandle* BuildDataProvider(DataWrapperHandle* dataWrapperHandle);
40
47
 
41
48
  typedef void ModelCalcerHandle;
@@ -46,6 +53,12 @@ enum EApiPredictionType {
46
53
  APT_RMSE_WITH_UNCERTAINTY = 2,
47
54
  APT_PROBABILITY = 3,
48
55
  APT_CLASS = 4,
56
+ APT_MULTI_PROBABILITY = 5,
57
+ };
58
+
59
+ enum ECatBoostApiFormulaEvaluatorType {
60
+ CBA_FET_CPU = 0,
61
+ CBA_FET_GPU = 1,
49
62
  };
50
63
 
51
64
  /**
@@ -63,14 +76,17 @@ CATBOOST_API void ModelCalcerDelete(ModelCalcerHandle* modelHandle);
63
76
  /**
64
77
  * If error occured will return stored exception message.
65
78
  * If no error occured, will return invalid pointer
66
- * @return
79
+ * The underlying variable is thread-local so:
80
+ * - it is thread-safe to get it
81
+ * - indicates only errors that happened in the current thread
82
+ * @return Error message string. Uses UTF-8 encoding
67
83
  */
68
84
  CATBOOST_API const char* GetErrorString();
69
85
 
70
86
  /**
71
87
  * Load model from file into given model handle
72
88
  * @param calcer
73
- * @param filename
89
+ * @param filename path to the file. Uses UTF-8 encoding
74
90
  * @return false if error occured
75
91
  */
76
92
  CATBOOST_API bool LoadFullModelFromFile(
@@ -89,15 +105,49 @@ CATBOOST_API bool LoadFullModelFromBuffer(
89
105
  const void* binaryBuffer,
90
106
  size_t binaryBufferSize);
91
107
 
108
+
109
+ /**
110
+ * Use model directly from given memory region with zero-copy method
111
+ * @param calcer
112
+ * @param binaryBuffer pointer to a memory buffer where model file is mapped
113
+ * @param binaryBufferSize size of the buffer in bytes
114
+ * @return false if error occured
115
+ */
116
+ CATBOOST_API bool LoadFullModelZeroCopy(
117
+ ModelCalcerHandle* modelHandle,
118
+ const void* binaryBuffer,
119
+ size_t binaryBufferSize);
120
+
92
121
  /**
93
- * Use CUDA gpu device for model evaluation
122
+ * Use CUDA GPU device for model evaluation
94
123
  */
95
124
  CATBOOST_API bool EnableGPUEvaluation(ModelCalcerHandle* modelHandle, int deviceId);
96
125
 
126
+ /**
127
+ * Get supported formula evaluator types
128
+ * formulaEvaluatorTypes array must be deallocated using free() after use.
129
+ *
130
+ * @param modelHandle model handle
131
+ * @param formulaEvaluatorTypes address of the pointer to an array that will be initialized with formula evaluator types
132
+ * @param formulaEvaluatorTypesCount address of the variable where the size of formulaEvaluatorTypes array will be stored
133
+ * @return true on success, false on error
134
+ */
135
+ CATBOOST_API bool GetSupportedEvaluatorTypes(
136
+ ModelCalcerHandle* modelHandle,
137
+ enum ECatBoostApiFormulaEvaluatorType** formulaEvaluatorTypes,
138
+ size_t* formulaEvaluatorTypesCount);
139
+
140
+
97
141
  /**
98
142
  * Set prediction type for model evaluation
99
143
  */
100
- CATBOOST_API bool SetPredictionType(ModelCalcerHandle* modelHandle, EApiPredictionType predictionType);
144
+ CATBOOST_API bool SetPredictionType(ModelCalcerHandle* modelHandle, enum EApiPredictionType predictionType);
145
+
146
+ /**
147
+ * Set prediction type for model evaluation with string constant
148
+ */
149
+ CATBOOST_API bool SetPredictionTypeString(ModelCalcerHandle* modelHandle, const char* predictionTypeStr);
150
+
101
151
 
102
152
  /**
103
153
  * **Use this method only if you really understand what you want.**
@@ -105,7 +155,7 @@ CATBOOST_API bool SetPredictionType(ModelCalcerHandle* modelHandle, EApiPredicti
105
155
  * Flat here means that float features and categorical feature are in the same float array.
106
156
  * @param calcer model handle
107
157
  * @param docCount number of objects
108
- * @param floatFeatures array of array of float (first dimension is object index, second if feature index)
158
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
109
159
  * @param floatFeaturesSize float values array size
110
160
  * @param result pointer to user allocated results vector
111
161
  * @param resultSize Result size should be equal to modelApproxDimension * docCount
@@ -118,6 +168,73 @@ CATBOOST_API bool CalcModelPredictionFlat(
118
168
  const float** floatFeatures, size_t floatFeaturesSize,
119
169
  double* result, size_t resultSize);
120
170
 
171
+
172
+ /**
173
+ * **Use this method only if you really understand what you want.**
174
+ * Calculate raw model predictions on flat feature vectors
175
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
176
+ * Flat here means that float features and categorical feature are in the same float array.
177
+ * @param calcer model handle
178
+ * @param docCount number of objects
179
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
180
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
181
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
182
+ * @param floatFeaturesSize float values array size
183
+ * @param result pointer to user allocated results vector
184
+ * @param resultSize Result size should be equal to modelApproxDimension * docCount
185
+ * (e.g. for non multiclass models should be equal to docCount)
186
+ * @return false if error occured
187
+ */
188
+ CATBOOST_API bool CalcModelPredictionFlatStaged(
189
+ ModelCalcerHandle* modelHandle,
190
+ size_t docCount,
191
+ size_t treeStart, size_t treeEnd,
192
+ const float** floatFeatures, size_t floatFeaturesSize,
193
+ double* result, size_t resultSize);
194
+
195
+
196
+ /**
197
+ * **Use this method only if you really understand what you want.**
198
+ * Calculate raw model predictions on transposed dataset layout
199
+ * @param calcer model handle
200
+ * @param docCount number of objects
201
+ * @param floatFeatures array of array of float (first dimension is feature index, second is object index)
202
+ * @param floatFeaturesSize float values array size
203
+ * @param result pointer to user allocated results vector
204
+ * @param resultSize Result size should be equal to modelApproxDimension * docCount
205
+ * (e.g. for non multiclass models should be equal to docCount)
206
+ * @return false if error occured
207
+ */
208
+ CATBOOST_API bool CalcModelPredictionFlatTransposed(
209
+ ModelCalcerHandle* modelHandle,
210
+ size_t docCount,
211
+ const float** floatFeatures, size_t floatFeaturesSize,
212
+ double* result, size_t resultSize);
213
+
214
+
215
+ /**
216
+ * **Use this method only if you really understand what you want.**
217
+ * Calculate raw model predictions on transposed dataset layout
218
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
219
+ * @param calcer model handle
220
+ * @param docCount number of objects
221
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
222
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
223
+ * @param floatFeatures array of array of float (first dimension is feature index, second is object index)
224
+ * @param floatFeaturesSize float values array size
225
+ * @param result pointer to user allocated results vector
226
+ * @param resultSize Result size should be equal to modelApproxDimension * docCount
227
+ * (e.g. for non multiclass models should be equal to docCount)
228
+ * @return false if error occured
229
+ */
230
+ CATBOOST_API bool CalcModelPredictionFlatTransposedStaged(
231
+ ModelCalcerHandle* modelHandle,
232
+ size_t docCount,
233
+ size_t treeStart, size_t treeEnd,
234
+ const float** floatFeatures, size_t floatFeaturesSize,
235
+ double* result, size_t resultSize);
236
+
237
+
121
238
  /**
122
239
  * Calculate raw model predictions on float features and string categorical feature values
123
240
  * @param calcer model handle
@@ -139,6 +256,32 @@ CATBOOST_API bool CalcModelPrediction(
139
256
  const char*** catFeatures, size_t catFeaturesSize,
140
257
  double* result, size_t resultSize);
141
258
 
259
+ /**
260
+ * Calculate raw model predictions on float features and string categorical feature values
261
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
262
+ * @param calcer model handle
263
+ * @param docCount object count
264
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
265
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
266
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
267
+ * @param floatFeaturesSize float feature count
268
+ * @param catFeatures array of array of char* categorical value pointers.
269
+ * String pointer should point to zero terminated string.
270
+ * @param catFeaturesSize categorical feature count
271
+ * @param result pointer to user allocated results vector
272
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
273
+ * (e.g. for non multiclass models should be equal to docCount)
274
+ * @return false if error occured
275
+ */
276
+ CATBOOST_API bool CalcModelPredictionStaged(
277
+ ModelCalcerHandle* modelHandle,
278
+ size_t docCount,
279
+ size_t treeStart, size_t treeEnd,
280
+ const float** floatFeatures, size_t floatFeaturesSize,
281
+ const char*** catFeatures, size_t catFeaturesSize,
282
+ double* result, size_t resultSize);
283
+
284
+
142
285
  /**
143
286
  * Calculate raw model predictions on float features and string categorical feature values
144
287
  * @param calcer model handle
@@ -164,6 +307,101 @@ CATBOOST_API bool CalcModelPredictionText(
164
307
  const char*** textFeatures, size_t textFeaturesSize,
165
308
  double* result, size_t resultSize);
166
309
 
310
+
311
+ /**
312
+ * Calculate raw model predictions on float features and string categorical feature values
313
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
314
+ * @param calcer model handle
315
+ * @param docCount object count
316
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
317
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
318
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
319
+ * @param floatFeaturesSize float feature count
320
+ * @param catFeatures array of array of char* categorical value pointers.
321
+ * String pointer should point to zero terminated string.
322
+ * @param catFeaturesSize categorical feature count
323
+ * @param textFeatures array of array of char* text value pointers.
324
+ * String pointer should point to zero terminated string.
325
+ * @param textFeaturesSize text feature count
326
+ * @param result pointer to user allocated results vector
327
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
328
+ * (e.g. for non multiclass models should be equal to docCount)
329
+ * @return false if error occured
330
+ */
331
+ CATBOOST_API bool CalcModelPredictionTextStaged(
332
+ ModelCalcerHandle* modelHandle,
333
+ size_t docCount,
334
+ size_t treeStart, size_t treeEnd,
335
+ const float** floatFeatures, size_t floatFeaturesSize,
336
+ const char*** catFeatures, size_t catFeaturesSize,
337
+ const char*** textFeatures, size_t textFeaturesSize,
338
+ double* result, size_t resultSize);
339
+
340
+
341
+ /**
342
+ * Calculate raw model predictions on float features and string categorical feature values
343
+ * @param calcer model handle
344
+ * @param docCount object count
345
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
346
+ * @param floatFeaturesSize float feature count
347
+ * @param catFeatures array of array of char* categorical value pointers.
348
+ * String pointer should point to zero terminated string.
349
+ * @param catFeaturesSize categorical feature count
350
+ * @param textFeatures array of array of char* text value pointers.
351
+ * String pointer should point to zero terminated string.
352
+ * @param textFeaturesSize text feature count
353
+ * @param embeddingFeatures array of array of array of float (first dimension is object index, second is feature index, third is index in embedding array).
354
+ * String pointer should point to zero terminated string.
355
+ * @param embeddingFeaturesSize embedding feature count
356
+ * @param result pointer to user allocated results vector
357
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
358
+ * (e.g. for non multiclass models should be equal to docCount)
359
+ * @return false if error occured
360
+ */
361
+ CATBOOST_API bool CalcModelPredictionTextAndEmbeddings(
362
+ ModelCalcerHandle* modelHandle,
363
+ size_t docCount,
364
+ const float** floatFeatures, size_t floatFeaturesSize,
365
+ const char*** catFeatures, size_t catFeaturesSize,
366
+ const char*** textFeatures, size_t textFeaturesSize,
367
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
368
+ double* result, size_t resultSize);
369
+
370
+
371
+ /**
372
+ * Calculate raw model predictions on float features and string categorical feature values
373
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
374
+ * @param calcer model handle
375
+ * @param docCount object count
376
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
377
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
378
+ * @param floatFeatures array of array of float (first dimension is object index, second is feature index)
379
+ * @param floatFeaturesSize float feature count
380
+ * @param catFeatures array of array of char* categorical value pointers.
381
+ * String pointer should point to zero terminated string.
382
+ * @param catFeaturesSize categorical feature count
383
+ * @param textFeatures array of array of char* text value pointers.
384
+ * String pointer should point to zero terminated string.
385
+ * @param textFeaturesSize text feature count
386
+ * @param embeddingFeatures array of array of array of float (first dimension is object index, second is feature index, third is index in embedding array).
387
+ * String pointer should point to zero terminated string.
388
+ * @param embeddingFeaturesSize embedding feature count
389
+ * @param result pointer to user allocated results vector
390
+ * @param resultSize result size should be equal to modelApproxDimension * docCount
391
+ * (e.g. for non multiclass models should be equal to docCount)
392
+ * @return false if error occured
393
+ */
394
+ CATBOOST_API bool CalcModelPredictionTextAndEmbeddingsStaged(
395
+ ModelCalcerHandle* modelHandle,
396
+ size_t docCount,
397
+ size_t treeStart, size_t treeEnd,
398
+ const float** floatFeatures, size_t floatFeaturesSize,
399
+ const char*** catFeatures, size_t catFeaturesSize,
400
+ const char*** textFeatures, size_t textFeaturesSize,
401
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
402
+ double* result, size_t resultSize);
403
+
404
+
167
405
  /**
168
406
  * Calculate raw model prediction on float features and string categorical feature values for single object
169
407
  * @param calcer model handle
@@ -184,6 +422,30 @@ CATBOOST_API bool CalcModelPredictionSingle(
184
422
  double* result, size_t resultSize);
185
423
 
186
424
 
425
+ /**
426
+ * Calculate raw model prediction on float features and string categorical feature values for single object
427
+ * taking into consideration only the trees in the range [treeStart; treeEnd)
428
+ * @param calcer model handle
429
+ * @param treeStart the index of the first tree to be used when applying the model (zero-based)
430
+ * @param treeEnd the index of the last tree to be used when applying the model (non-inclusive, zero-based)
431
+ * @param floatFeatures array of float features
432
+ * @param floatFeaturesSize float feature count
433
+ * @param catFeatures array of char* categorical feature value pointers.
434
+ * Each string pointer should point to zero terminated string.
435
+ * @param catFeaturesSize categorical feature count
436
+ * @param result pointer to user allocated results vector (or single double)
437
+ * @param resultSize result size should be equal to modelApproxDimension
438
+ * (e.g. for non multiclass models should be equal to 1)
439
+ * @return false if error occured
440
+ */
441
+ CATBOOST_API bool CalcModelPredictionSingleStaged(
442
+ ModelCalcerHandle* modelHandle,
443
+ size_t treeStart, size_t treeEnd,
444
+ const float* floatFeatures, size_t floatFeaturesSize,
445
+ const char** catFeatures, size_t catFeaturesSize,
446
+ double* result, size_t resultSize);
447
+
448
+
187
449
  /**
188
450
  * Calculate raw model predictions on float features and hashed categorical feature values
189
451
  * @param calcer model handle
@@ -212,6 +474,15 @@ CATBOOST_API bool CalcModelPredictionWithHashedCatFeaturesAndTextFeatures(
212
474
  const char*** textFeatures, size_t textFeaturesSize,
213
475
  double* result, size_t resultSize);
214
476
 
477
+ CATBOOST_API bool CalcModelPredictionWithHashedCatFeaturesAndTextAndEmbeddingFeatures(
478
+ ModelCalcerHandle* modelHandle,
479
+ size_t docCount,
480
+ const float** floatFeatures, size_t floatFeaturesSize,
481
+ const int** catFeatures, size_t catFeaturesSize,
482
+ const char*** textFeatures, size_t textFeaturesSize,
483
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
484
+ double* result, size_t resultSize);
485
+
215
486
  /**
216
487
  * Methods equivalent to the methods above
217
488
  * only returning a prediction for the specific class
@@ -242,6 +513,16 @@ CATBOOST_API bool PredictSpecificClassText(
242
513
  int classId,
243
514
  double* result, size_t resultSize);
244
515
 
516
+ CATBOOST_API bool PredictSpecificClassTextAndEmbeddings(
517
+ ModelCalcerHandle* modelHandle,
518
+ size_t docCount,
519
+ const float** floatFeatures, size_t floatFeaturesSize,
520
+ const char*** catFeatures, size_t catFeaturesSize,
521
+ const char*** textFeatures, size_t textFeaturesSize,
522
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
523
+ int classId,
524
+ double* result, size_t resultSize);
525
+
245
526
  CATBOOST_API bool PredictSpecificClassSingle(
246
527
  ModelCalcerHandle* modelHandle,
247
528
  const float* floatFeatures, size_t floatFeaturesSize,
@@ -266,6 +547,16 @@ CATBOOST_API bool PredictSpecificClassWithHashedCatFeaturesAndTextFeatures(
266
547
  int classId,
267
548
  double* result, size_t resultSize);
268
549
 
550
+ CATBOOST_API bool PredictSpecificClassWithHashedCatFeaturesAndTextAndEmbeddingFeatures(
551
+ ModelCalcerHandle* modelHandle,
552
+ size_t docCount,
553
+ const float** floatFeatures, size_t floatFeaturesSize,
554
+ const int** catFeatures, size_t catFeaturesSize,
555
+ const char*** textFeatures, size_t textFeaturesSize,
556
+ const float*** embeddingFeatures, size_t* embeddingDimensions, size_t embeddingFeaturesSize,
557
+ int classId,
558
+ double* result, size_t resultSize);
559
+
269
560
  /**
270
561
  * Get hash for given string value
271
562
  * @param data we don't expect data to be zero terminated, so pass correct size
@@ -289,12 +580,64 @@ CATBOOST_API int GetIntegerCatFeatureHash(long long val);
289
580
  */
290
581
  CATBOOST_API size_t GetFloatFeaturesCount(ModelCalcerHandle* modelHandle);
291
582
 
583
+ /**
584
+ * Get expected indices of float features used in the model.
585
+ * indices array must be deallocated using free() after use.
586
+ * @param modelHandle model handle
587
+ * @param indices indices of the features
588
+ * @param count indices size
589
+ * @return true on success, false on error
590
+ */
591
+ CATBOOST_API bool GetFloatFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
592
+
292
593
  /**
293
594
  * Get expected categorical feature count for model
294
595
  * @param calcer model handle
295
596
  */
296
597
  CATBOOST_API size_t GetCatFeaturesCount(ModelCalcerHandle* modelHandle);
297
598
 
599
+ /**
600
+ * Get expected indices of category features used in the model.
601
+ * indices array must be deallocated using free() after use.
602
+ * @param modelHandle model handle
603
+ * @param indices indices of the features
604
+ * @param count indices size
605
+ * @return true on success, false on error
606
+ */
607
+ CATBOOST_API bool GetCatFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
608
+
609
+ /**
610
+ * Get expected text feature count for model
611
+ * @param calcer model handle
612
+ */
613
+ CATBOOST_API size_t GetTextFeaturesCount(ModelCalcerHandle* modelHandle);
614
+
615
+ /**
616
+ * Get expected indices of text features used in the model.
617
+ * indices array must be deallocated using free() after use.
618
+ * @param modelHandle model handle
619
+ * @param indices indices of the features
620
+ * @param count indices size
621
+ * @return true on success, false on error
622
+ */
623
+ CATBOOST_API bool GetTextFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
624
+
625
+ /**
626
+ * Get expected embedding feature count for model
627
+ * @param calcer model handle
628
+ */
629
+ CATBOOST_API size_t GetEmbeddingFeaturesCount(ModelCalcerHandle* modelHandle);
630
+
631
+ /**
632
+ * Get expected indices of embedding features used in the model.
633
+ * indices array must be deallocated using free() after use.
634
+ * @param modelHandle model handle
635
+ * @param indices indices of the features
636
+ * @param count indices size
637
+ * @return true on success, false on error
638
+ */
639
+ CATBOOST_API bool GetEmbeddingFeatureIndices(ModelCalcerHandle* modelHandle, size_t** indices, size_t* count);
640
+
298
641
  /**
299
642
  * Get number of trees in model
300
643
  * @param calcer model handle
@@ -307,6 +650,15 @@ CATBOOST_API size_t GetTreeCount(ModelCalcerHandle* modelHandle);
307
650
  */
308
651
  CATBOOST_API size_t GetDimensionsCount(ModelCalcerHandle* modelHandle);
309
652
 
653
+ /**
654
+ * Get number of dimensions for current prediction
655
+ * For default `APT_RAW_FORMULA_VAL`, `APT_EXPONENT`, `APT_PROBABILITY`, `APT_CLASS` prediction type GetPredictionDimensionsCount == GetDimensionsCount
656
+ * For `APT_RMSE_WITH_UNCERTAINTY` - returns 2 (value prediction and predicted uncertainty)
657
+ * @param calcer model handle
658
+ */
659
+ CATBOOST_API size_t GetPredictionDimensionsCount(ModelCalcerHandle* modelHandle);
660
+
661
+
310
662
  /**
311
663
  * Check if model metadata holds some value for provided key
312
664
  * @param calcer model handle
@@ -325,6 +677,16 @@ CATBOOST_API size_t GetModelInfoValueSize(ModelCalcerHandle* modelHandle, const
325
677
  */
326
678
  CATBOOST_API const char* GetModelInfoValue(ModelCalcerHandle* modelHandle, const char* keyPtr, size_t keySize);
327
679
 
680
+
681
+ /**
682
+ * Get names of features used in the model.
683
+ * individual strings in featureNames array and featureNames array itself must be deallocated using free() after use.
684
+ *
685
+ * @return true on success, false on error
686
+ */
687
+ CATBOOST_API bool GetModelUsedFeaturesNames(ModelCalcerHandle* modelHandle, char*** featureNames, size_t* featureCount);
688
+
689
+
328
690
  #if defined(__cplusplus)
329
691
  }
330
692
  #endif