Skip to main content

Python bindings for the Orion FHE evaluator

Project description

orion-evaluator

Python bindings to the Orion Go evaluator. Runs FHE inference on compiled models.

Why keys are passed as bytes

The Evaluator constructor accepts serialized MemEvaluationKeySet bytes, not Go object handles:

evaluator = Evaluator(params_dict, keys_bytes)  # bytes, not handles

This looks weird if you're generating keys and running inference in the same Python process — you serialize a Go object to bytes just to deserialize it back into a Go object on the other side. The reason: Go has shitty FFI.

Each CGO shared library (.so) embeds its own Go runtime with its own GC, goroutine scheduler, and cgo.Handle table. The lattigo package (keygen, encrypt, decrypt) and orion-evaluator (inference) are separate .so files, so a cgo.Handle from one means nothing to the other. They are two isolated Go worlds in the same process. There is no way to share Go pointers across them.

So we serialize to bytes as the common language between the two runtimes. This is also the right interface for real deployments where keys come over the network from a remote client.

Usage

from orion_evaluator import Model, Evaluator

# Context manager support (recommended — auto-cleanup on block exit)
with Model.load(model_bytes) as model:
    params_dict, manifest, input_level = model.client_params()
    with Evaluator(params_dict, keys_bytes) as evaluator:
        result_ct_bytes = evaluator.forward(model, input_ct_bytes)

# Or explicit close()
model = Model.load(model_bytes)
evaluator = Evaluator(params_dict, keys_bytes)
result_ct_bytes = evaluator.forward(model, input_ct_bytes)
evaluator.close()
model.close()

Errors

All errors raise from orion_evaluator.errors:

  • EvaluatorError — base class for all evaluator errors
  • ModelLoadError(EvaluatorError) — raised by Model.load() on invalid data

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

orion_v2_evaluator-2.1.3.tar.gz (6.3 MB view details)

Uploaded Source

Built Distribution

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

orion_v2_evaluator-2.1.3-py3-none-any.whl (6.3 MB view details)

Uploaded Python 3

File details

Details for the file orion_v2_evaluator-2.1.3.tar.gz.

File metadata

  • Download URL: orion_v2_evaluator-2.1.3.tar.gz
  • Upload date:
  • Size: 6.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for orion_v2_evaluator-2.1.3.tar.gz
Algorithm Hash digest
SHA256 3a488e303b44c1bfd99e0fe5450cf4a9aba59bbfa2a261ba1da865054201de3e
MD5 afb26fa26e6fe3b79da06ebb20040510
BLAKE2b-256 8d218c8265879666e02a29ad1b9cb858f8215fa92dd594846547f5cd44b36aa5

See more details on using hashes here.

Provenance

The following attestation bundles were made for orion_v2_evaluator-2.1.3.tar.gz:

Publisher: release.yml on butvinm/orion

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

File details

Details for the file orion_v2_evaluator-2.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for orion_v2_evaluator-2.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 9f93ab7fe7461c1f3ab033c9739316009ae3aabfd5516e24131fdba98ca55bf7
MD5 33a52a076496046654bd03b0d47e3d67
BLAKE2b-256 90879185310b43773e343be5576de06c0867174816aff804ba7f9d7acec2c296

See more details on using hashes here.

Provenance

The following attestation bundles were made for orion_v2_evaluator-2.1.3-py3-none-any.whl:

Publisher: release.yml on butvinm/orion

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