Git Product home page Git Product logo

x-time's Introduction

X-TIME: An in-memory engine for accelerating machine learning on tabular data with CAMs

Introduction

X-TIME is a simulator framework for tree based machine learning (ML) accelerator based on analog content addressable memories (CAM).

At Hewlett Packard Labs we recently developed analog CAMs based on memristors1. Compared to traditional CAM that can store values, the analog CAM stores a range returning a match if the analog input is within the stored range. We demonstrated that analog CAM can map and accelerate decision trees, resulting in tremendous speedup comparaed to other accelerators thank to the massively parallel threshold look-up operation2.

This repository contains the code for our recent work "X-TIME: An in-memory engine for accelerating machine learning on tabular data with CAMs"3

Abstract: "Structured, or tabular, data is the most common format in data science. While deep learning models have proven formidable in learning from unstructured data such as images or speech, they are less accurate than simpler approaches when learning from tabular data. In contrast, modern tree-based Machine Learning (ML) models shine in extracting relevant information from structured data. An important requirement in data science is to reduce model inference latency in cases where, for example, models are used in closed loop with simulation to accelerate scientific discovery. However, the hardware accelera- tion community has mostly focused on deep neural networks, and largely ignored other forms of machine learning. Previous work has described the use of an analog content addressable memory (CAM) component for efficiently mapping random forest. In this work, we focus on an overall analog-digital architecture implementing a novel increased precision analog CAM and a programmable network on chip allowing the inference of state- of-the-art tree-based ML models, such as XGBoost and CatBoost. Results evaluated in a single chip at 16nm technology show 119× lower latency at 9740× higher throughput compared with a state- of-the-art GPU, with a 19W peak power consumption."

contact: [email protected]

Training machine learning models

The training Python-based subproject implements scripts to train machine learning models and optimize their hyperparameters. The documentation provides details on what datasets and machine learning models are available out of the box and how to train new models.

Compiling machine learning models for the X-TIME architecture

The compiler Python-based subproject implements scripts to compiler pre-trained machine learning models (currently supporting sklearn, XGBoost and CatBoost) in a format accepted by the cycle accurate simulator, and currently support all models trained with the training subproject.

Running functional and cycle-accurate simulation

The cycle_accurate subproject implements C++ scripts to build functional blocks and Python scripts to create X-TIME architecture and run the cycle-accurate simulation. In addition to the functional verification of the simulated system, it evaluates the performance (accruacy, latency, throughput, energy efficiency, area, utilization) of the system.

Contributing to XTIME

Thank you for your interest in contributing to XTIME! If you have found a bug or want to ask a question or discuss a new feature (such as adding support for new datasets or ML models), please open an issue. Once a new feature has been implemented and tested, or a bug has been fixed, please submit a pull request.

  • Python. Some of the subprojects provide unit tests. Make sure they run. It's also a good idea to provide unit tests along with new features. We generally follow PEP-8 programming guidelines. Development environments such as PyCharm and VSCode can help you follow these guidelines. Some subprojects (example pyproject.toml file) provide configurations for tools such as isort, black and flake8. Please make sure to run these tools before submitting a pull request.

In order for us to accept your pull request, you will need to sign-off your commit. This page contains more information about it. In short, please add the following line at the end of your commit message:

Signed-off-by: First Second <email>

License

XTIME is licensed under Apache 2.0 license.

Footnotes

  1. Li, C., Graves, C.E., Sheng, X. et al. Analog content-addressable memories with memristors. Nat Commun 11, 1638 (2020). https://doi.org/10.1038/s41467-020-15254-4

  2. Pedretti, G., Graves, C.E., Serebryakov, S. et al. Tree-based machine learning performed in-memory with memristive analog CAM. Nat Commun 12, 5806 (2021). https://doi.org/10.1038/s41467-021-25873-0

  3. Pedretti, G., Moon, J., Bruel, P. et al. X-TIME: An in-memory engine for accelerating machine learning on tabular data with CAMs. arXiv:2304.01285 (2023). https://arxiv.org/abs/2304.01285

x-time's People

Contributors

sergey-serebryakov avatar gpedretti avatar moonjohn-hpe avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.