A transformer-based math library
Project description
MathFormer
MathFormer is a Python library that leverages Transformer-based language models to perform mathematical operations. Unlike standard arithmetic libraries, MathFormer uses Llama-architecture models to "predict" the results of arithmetic operations, token by token, demonstrating the capability of small language models to learn arithmetic rules.
It supports basic arithmetic operations: Addition, Subtraction, Multiplication, and Division.
Features
- Transformer-Powered Arithmetic: Uses specialized Llama-based models for each arithmetic operation.
- Large Number Support: Implements recursive logic to handle multi-digit arithmetic using digit-by-digit prediction (similar to manual calculation).
- Unified API: Easy-to-use functions for
add,sub,mul, anddiv. - Resource Management: Supports lazy loading of models to save memory, and manual unloading.
- Custom Tokenizer: Built-in minimalist tokenizer optimized for mathematical expressions.
Installation
You can install MathFormer via pip:
pip install mathformer
Quick Start
The simplest way to use MathFormer is through the top-level convenience functions. These functions automatically handle model loading when needed.
import mathformer
# Addition
result = mathformer.add(123, 456)
print(f"123 + 456 = {result}") # Output: 579
# Subtraction
result = mathformer.sub(1000, 250)
print(f"1000 - 250 = {result}") # Output: 750
# Multiplication
result = mathformer.mul(12, 12)
print(f"12 * 12 = {result}") # Output: 144
# Division (returns Quotient and Remainder if applicable)
result = mathformer.div(100, 3)
print(f"100 / 3 = {result}") # Output: Q33R1
You can also pass string expressions:
print(mathformer.add("100 + 200"))
print(mathformer.calculate("mul", 50, 4))
Advanced Usage
For more control over resource usage, you can use the MathFormerAPI class directly.
Managing Resources (Load/Unload)
By default, models are lazy-loaded (loaded only when first requested). You can manually load all models at startup or unload them to free GPU/CPU memory.
from mathformer import MathFormerAPI
# Initialize API (lazy_load=False to load everything immediately)
api = MathFormerAPI(lazy_load=True)
# Perform operations
print(api.add(50, 50))
# Unload all models to free memory
api.unload_all()
Context Manager
You can use MathFormerAPI as a context manager to ensure models are cleaned up after use:
from mathformer import MathFormerAPI
with MathFormerAPI() as api:
print(api.mul(99, 9))
# Models are automatically unloaded here
How It Works
MathFormer isn't just calling Python's + or - operators. It actually uses a neural network to predict the result!
- Single-Step Prediction: For small single-digit operations (e.g.,
5+7), it queries a Transformer model customized for that operation. - Multi-Digit Logic: For larger numbers (e.g.,
123+456), the library implements the standard grade-school algorithms (carrying, borrowing, partial products) but delegates the fundamental single-digit arithmetic steps to the Transformer model.
Requirements
- Python >= 3.8
- PyTorch >= 2.0.0
- Transformers >= 4.30.0
License
This project is licensed under the MIT 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mathformer-1.0.1.tar.gz.
File metadata
- Download URL: mathformer-1.0.1.tar.gz
- Upload date:
- Size: 7.9 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0b687cb29cbc164392d0d31a79183558d8ea7ac885adc24a7bc1f80e73fddffc
|
|
| MD5 |
22ede5bc9461d8e805c95c7b3ae3040c
|
|
| BLAKE2b-256 |
d9bb330cbc6e92dca1ecf77827e1e97d95343cdc478761a2f87ff6a29cc83ed7
|
File details
Details for the file mathformer-1.0.1-py3-none-any.whl.
File metadata
- Download URL: mathformer-1.0.1-py3-none-any.whl
- Upload date:
- Size: 7.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b428eac9162e3ae665435e5d4dcfa58c7959db1589402162a212469a2ade1a4f
|
|
| MD5 |
728799fb291c321ef9667db42c57bc31
|
|
| BLAKE2b-256 |
7dcb49d9d316451a43fddb91434bc3d2fdddfb480edf4c1c2fc93991a46a9f64
|