Skip to main content

Keras layers without using matrix multiplications.

Project description

Keras-MatMulLess (Keras-MML)

PyPI - Python Version PyPI - Version PyPI - Downloads PyPI - License CodeCov Read the Docs - Stable Read the Docs - Latest Code Style - Black Linting - PyLint

We offer no explanation as to why these architectures seem to work; we attribute their success, as all else, to divine benevolence.

Keras layers without using matrix multiplications.

This is a Keras based implementation of some layers mentioned in the papers The Era of 1-bit LLMs: All Large Language Models are in 1.58 Bits and Scalable MatMul-free Language Modeling. Find the documentation here.

Rationale

Traditional, matrix multiplication based layers suffer from a few issues.

  1. They have high inference and computational costs due to the use of matrix multiplications. This hinders the speed at which inference is performed on GPU-less machines.
  2. The memory use for storing full precision weights is very high.
  3. The energy costs of running matrix multiplications is very high.

Matrix multiplication free layers addresses these pain points by removing the key source of costs — matrix multiplications.

Installation

Requirements

Keras-MML has a few requirements, namely

Instructions on how to install Keras can be found here.

Installation Instructions

PyPi

If you use pip, you can install Keras-MML using the command

pip install keras-matmulless
Pre-Release Versions

To install pre-release versions, use the command

pip install --pre keras-matmulless
Nightly Versions

Nightly releases for Keras-MML are primarily found on the TestPyPi page. To install them, use the command

pip install -i https://test.pypi.org/simple/ keras-matmulless

Building From Scratch

First, clone the repository using

git clone https://github.com/PhotonicGluon/Keras-MatMulLess.git
cd Keras-MatMulLess

We recommend to create a virtual environment to install Poetry and the other dependencies into.

python -m venv venv  # If `python` doesn't work, try `python3`

Activate the virtual environment using

source venv/bin/activate

or, if you are on Windows,

venv/Scripts/activate

Now we install Poetry.

pip install poetry

Finally, install the development dependencies. The install.py script helps manage these dependencies.

python install.py dev

If you have not installed a backend (i.e., Tensorflow, PyTorch, or Jax) you can do so here.

python install.py dev --backend BACKEND_NAME

Note that the BACKEND_NAME to be specified here is

  • tensorflow for the Tensorflow backend;
  • torch for the PyTorch backend; and
  • jax for the Jax backend.

If you need to install with CUDA support, run

python install.py dev --backend BACKEND_NAME --with-cuda

That's it! You should now have access to the keras_mml package.

Quickstart

Read the tutorial.

Using Dev Containers

CPU Dev Container

If you already have VS Code and Docker installed, you can click the badge above or here to get started. Clicking these links will cause VS Code to automatically install the Dev Containers extension if needed, clone the source code into a container volume, and spin up a dev container for use.

CUDA

Keras-MML offers a cuda dev container for working with CUDA.

[!IMPORTANT]
Edit the Dockerfile file to set up the architecture properly. By default it is using amd64. So, if you are on a arm64 system, uncomment the appropriate lines in the file!

License

Keras-MML is licensed under the Apache 2.0 license.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

keras_matmulless-0.1.0a3.tar.gz (29.5 kB view hashes)

Uploaded Source

Built Distribution

keras_matmulless-0.1.0a3-py3-none-any.whl (43.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page