Skip to content

Releases: acalejos/mockingjay

Initial Release

23 Jun 20:52
Compare
Choose a tag to compare

Initial release of Mockingjay features the three Decision Tree compilation algorithms described at https://github.com/microsoft/hummingbird.

Sample benchmarks comparing the EXGBoost native (C) API predictions to the compiled predictions below. **Please note that for this initial release, only the GEMM strategy can be JIT-Compiled with EXLA.jit -- which leads to very drastic performance improvements.

Operating System: macOS
CPU Information: Apple M1 Max
Number of Available Cores: 10
Available memory: 32 GB
Elixir 1.14.4
Erlang 25.1.2

Benchmark suite executing with the following configuration:
warmup: 5 s
time: 10 s
memory time: 2 s
reduction time: 0 ns
parallel: 1
inputs: none specified
Estimated total run time: 2.27 min

Benchmarking Base ...
Benchmarking Compiled -- GEMM Strategy -- Binary Backend ...
Benchmarking Compiled -- GEMM Strategy -- EXLA Backend ...
Benchmarking Compiled -- GEMM Strategy -- EXLA Backend (JIT) ...
Benchmarking Compiled -- Perfect Tree Traversal Strategy -- Binary Backend ...
Benchmarking Compiled -- Perfect Tree Traversal Strategy -- EXLA Backend ...
Benchmarking Compiled -- Tree Traversal Strategy -- Binary Backend ...
Benchmarking Compiled -- Tree Traversal Strategy -- EXLA Backend ...

Name                                                                    ips        average  deviation         median         99th %
Compiled -- GEMM Strategy -- EXLA Backend (JIT)                      9.62 K       0.104 ms     ±6.81%       0.102 ms       0.137 ms
Base                                                                 6.24 K       0.160 ms    ±23.51%       0.157 ms        0.22 ms
Compiled -- GEMM Strategy -- EXLA Backend                            2.84 K        0.35 ms    ±41.79%        0.34 ms        0.53 ms
Compiled -- Perfect Tree Traversal Strategy -- EXLA Backend          1.46 K        0.69 ms    ±15.53%        0.66 ms        1.04 ms
Compiled -- Tree Traversal Strategy -- EXLA Backend                  0.83 K        1.21 ms    ±23.84%        1.08 ms        1.89 ms
Compiled -- Perfect Tree Traversal Strategy -- Binary Backend      0.0529 K       18.90 ms     ±2.67%       18.81 ms       20.42 ms
Compiled -- GEMM Strategy -- Binary Backend                        0.0300 K       33.39 ms     ±2.38%       33.27 ms       35.61 ms
Compiled -- Tree Traversal Strategy -- Binary Backend              0.0291 K       34.42 ms     ±1.90%       34.33 ms       36.80 ms

Comparison: 
Compiled -- GEMM Strategy -- EXLA Backend (JIT)                      9.62 K
Base                                                                 6.24 K - 1.54x slower +0.0563 ms
Compiled -- GEMM Strategy -- EXLA Backend                            2.84 K - 3.39x slower +0.25 ms
Compiled -- Perfect Tree Traversal Strategy -- EXLA Backend          1.46 K - 6.60x slower +0.58 ms
Compiled -- Tree Traversal Strategy -- EXLA Backend                  0.83 K - 11.64x slower +1.11 ms
Compiled -- Perfect Tree Traversal Strategy -- Binary Backend      0.0529 K - 181.89x slower +18.80 ms
Compiled -- GEMM Strategy -- Binary Backend                        0.0300 K - 321.25x slower +33.28 ms
Compiled -- Tree Traversal Strategy -- Binary Backend              0.0291 K - 331.17x slower +34.31 ms

Memory usage statistics:

Name                                                                  average  deviation         median         99th %
Compiled -- GEMM Strategy -- EXLA Backend (JIT)                       6.67 KB     ±0.00%        6.67 KB        6.67 KB
Base                                                                 39.73 KB     ±0.00%       39.73 KB       39.73 KB
Compiled -- GEMM Strategy -- EXLA Backend                           165.47 KB     ±0.00%      165.47 KB      165.47 KB
Compiled -- Perfect Tree Traversal Strategy -- EXLA Backend         438.43 KB     ±0.26%      438.09 KB      441.55 KB
Compiled -- Tree Traversal Strategy -- EXLA Backend                 656.44 KB     ±0.00%      656.44 KB      656.44 KB
Compiled -- Perfect Tree Traversal Strategy -- Binary Backend     39973.56 KB     ±0.01%    39973.09 KB    39982.52 KB
Compiled -- GEMM Strategy -- Binary Backend                       90790.44 KB     ±0.00%    90790.47 KB    90790.47 KB
Compiled -- Tree Traversal Strategy -- Binary Backend             74027.75 KB     ±0.00%    74027.75 KB    74027.75 KB

Comparison: 
Compiled -- GEMM Strategy -- EXLA Backend (JIT)                       6.67 KB
Base                                                                 39.73 KB - 5.96x memory usage +33.06 KB
Compiled -- GEMM Strategy -- EXLA Backend                           165.47 KB - 24.80x memory usage +158.80 KB
Compiled -- Perfect Tree Traversal Strategy -- EXLA Backend         438.43 KB - 65.71x memory usage +431.75 KB
Compiled -- Tree Traversal Strategy -- EXLA Backend                 656.44 KB - 98.39x memory usage +649.77 KB
Compiled -- Perfect Tree Traversal Strategy -- Binary Backend     39973.56 KB - 5991.35x memory usage +39966.89 KB
Compiled -- GEMM Strategy -- Binary Backend                       90790.44 KB - 13607.93x memory usage +90783.77 KB
Compiled -- Tree Traversal Strategy -- Binary Backend             74027.75 KB - 11095.49x memory usage +74021.08 KB