/matxscript

The model pre-processing and post-processing framework

Primary LanguageC++Apache License 2.0Apache-2.0

MatxScript

Documentation | 文档 | Contributors | Release Notes

MatxScript is an ahead of time compiler for a subset of the Python language, with a focus on a unified research and service framework for machine learning

Installation

pip install matxscript

A Quick Example

import matx
import timeit

def fib(n: int) -> int:
    if n <= 1:
        return n
    else:
        return fib(n - 1) + fib(n - 2)


if __name__ == '__main__':
    fib_script = matx.script(fib)
    
    # test on Macbook with m1 chip
    print(f'Python execution time: {timeit.timeit(lambda: fib(30), number=10)}s')  # 1.59s
    print(f'Matx execution time: {timeit.timeit(lambda: fib_script(30), number=10)}s') # 0.03s

License

© Bytedance Inc. Licensed under an Apache-2.0 license.

Contribute to MatxScript

Everyone is welcomed to contribute. We value all forms of contributions, including, but not limited to:

  • Code reviewing of the existing patches.
  • Documentation and usage examples
  • Community participation in issues.
  • Code readability and developer guide
    • We welcome contributions that add code comments to improve readability
    • We also welcome contributions to docs to explain the design choices of the internal.
  • Test cases to make the codebase more robust
  • Tutorials, blog posts, talks that promote the project.

Acknowledgement

We learned a lot from the following projects when building MatxScript.

  • TVM: Part of MatxScript's IR and Runtime originates from TVM. We also learned and adapted some part of codegen pipeline from TVM.

  • Python: Part of the runtime code comes from cpython for align the semantics

  • Folly: We adopted the idea of FBString to design our runtime::string_core

  • abseil-cpp: The string_view structure and ByteHash algorithm originates from abseil

  • rapidjson: The json module is implemented based on rapidjson