Skip to main content

A package that provides advanced coding tools for training and deploying AI

Project description

instmodel

instmodel is a Python package for building instruction-based neural network models with either a PyTorch or TensorFlow/Keras backend. Build, train, and export models into a compact JSON "instruction" format for lightweight, backend-agnostic inference.


Features

  • Dual Backend: Build models with PyTorch (instmodel.torch) or TensorFlow/Keras (instmodel.tf) — both are optional dependencies.
  • Instruction Model Export: Convert trained models into a JSON-based instruction format that captures architecture, weights, and activations.
  • Backend-Agnostic Inference: Run exported instruction models with pure NumPy via instmodel.instruction_model — no framework required at inference time.
  • Validation: Verify that the instruction model produces the same outputs as the original trained model.

Installation

Install the core package (NumPy inference only):

pip install instmodel

Install with a training backend:

pip install instmodel[pytorch]    # PyTorch backend
pip install instmodel[tensorflow] # TensorFlow/Keras backend

Quick Example — PyTorch

import numpy as np
from instmodel.torch import (
    Dense,
    InputBuffer,
    ModelGraph,
    ff_model,
    validate_torch_model,
)
from instmodel.instruction_model import validate_instruction_model

# 1. Define a simple feed-forward model.
input_buffer = InputBuffer(4, name="simple_input")
hidden = Dense(8, activation="relu", name="hidden_relu_1")(input_buffer)
hidden = Dense(6, activation="relu", name="hidden_relu_2")(hidden)
output = Dense(1, activation="sigmoid", name="output_sigmoid")(hidden)

model_graph = ModelGraph(input_buffer, output)
model_graph.compile(optimizer="adam", loss="binary_crossentropy")

# 2. Train on dummy data.
x_data = np.random.random((10, 4))
y_data = np.random.randint(0, 2, size=(10, 1))
model_graph.fit(x_data, y_data, epochs=1, verbose=0)

# 3. Export to instruction model.
instruction_model = model_graph.create_instruction_model()

# 4. Validate.
torch_pred = model_graph.predict(x_data)
instruction_model["validation_data"] = {
    "inputs": x_data.tolist(),
    "expected_outputs": torch_pred.tolist(),
}
validate_instruction_model(instruction_model)
validate_torch_model(model_graph.get_torch(), instruction_model["validation_data"])

Quick Example — TensorFlow/Keras

import numpy as np
from instmodel.tf import (
    Dense,
    InputBuffer,
    ModelGraph,
    ff_model,
    validate_keras_model,
)
from instmodel.instruction_model import validate_instruction_model

# 1. Define a simple feed-forward model.
input_buffer = InputBuffer(4, name="simple_input")
hidden = Dense(8, activation="relu", name="hidden_relu_1")(input_buffer)
hidden = Dense(6, activation="relu", name="hidden_relu_2")(hidden)
output = Dense(1, activation="sigmoid", name="output_sigmoid")(hidden)

model_graph = ModelGraph(input_buffer, output)
model_graph.compile(optimizer="adam", loss="binary_crossentropy")

# 2. Train on dummy data.
x_data = np.random.random((10, 4))
y_data = np.random.randint(0, 2, size=(10, 1))
model_graph.fit(x_data, y_data, epochs=1, verbose=0)

# 3. Export to instruction model.
instruction_model = model_graph.create_instruction_model()

# 4. Validate.
keras_pred = model_graph.predict(x_data, verbose=0)
instruction_model["validation_data"] = {
    "inputs": x_data.tolist(),
    "expected_outputs": keras_pred.tolist(),
}
validate_instruction_model(instruction_model)
validate_keras_model(model_graph.get_keras(), instruction_model["validation_data"])

API Overview

Both backends expose the same model-building API:

Layer / Op Description
InputBuffer Model input
Dense Fully connected layer
Attention Attention mechanism
Concatenate Concatenate buffers
ReduceSum Sum reduction
Add Element-wise addition
Multiply Element-wise multiplication
MultiplyHeads Head-wise broadcast multiply
AddHeads Head-wise broadcast add
ScaleVectorized Learnable per-element scale
ShiftVectorized Learnable per-element shift
SingleIdEmbeddings Single-ID embedding lookup
MultiIdEmbeddings Multi-ID embedding lookup
ModelGraph Compiles the computation graph for training and export
ff_model Helper to build a feed-forward stack
validate_model Backend-specific validator (alias)

Backend-specific validators:

  • instmodel.tf.validate_keras_model
  • instmodel.torch.validate_torch_model

Backend-agnostic inference:

  • instmodel.instruction_model.instruction_model_inference
  • instmodel.instruction_model.validate_instruction_model

GPU Testing

For running PyTorch tests on RTX 50-series GPUs (CUDA 13.1), a custom Dockerfile is provided:

custom_cuda_builds/Dockerfile.torch.cuda13

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

instmodel-1.0.0.tar.gz (36.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

instmodel-1.0.0-py3-none-any.whl (28.1 kB view details)

Uploaded Python 3

File details

Details for the file instmodel-1.0.0.tar.gz.

File metadata

  • Download URL: instmodel-1.0.0.tar.gz
  • Upload date:
  • Size: 36.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for instmodel-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1abda3c85974efac23fa6db3bf1cb44c2f04a1d96a883b6638674982b5089289
MD5 e398d8791c1846d589524e76791a7c6d
BLAKE2b-256 ffe649ce865a0e1dc3467a5f11de5d6847b08fe784992d0baf8f40e53d0dc400

See more details on using hashes here.

Provenance

The following attestation bundles were made for instmodel-1.0.0.tar.gz:

Publisher: pypi-publish.yml on Joaoprcf/instmodel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file instmodel-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: instmodel-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 28.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for instmodel-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d8fe3b7bef124e18025f7ba8f2b676d5aabf369b0ef1970ed4b504c06fcf8d87
MD5 da872cfe97c680fcc6cdc4547c139831
BLAKE2b-256 aed7e3ba58d3464c154e91f4e48704706dc3a4a8eabe252682cd6ad074263500

See more details on using hashes here.

Provenance

The following attestation bundles were made for instmodel-1.0.0-py3-none-any.whl:

Publisher: pypi-publish.yml on Joaoprcf/instmodel

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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