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.0.tar.gz (6.2 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.0-py3-none-any.whl (6.3 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: orion_v2_evaluator-2.1.0.tar.gz
  • Upload date:
  • Size: 6.2 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.0.tar.gz
Algorithm Hash digest
SHA256 0b7059de83af41b4b66cac6a3f969ec940198fed450822a6bea4a134c2a4105a
MD5 0f9f4f8f796c55fb4b434915fa390bff
BLAKE2b-256 527cdf65c24b437ed9ff3ab61e3da316f5fbc3e63667f618ed8edb9c2e2323fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for orion_v2_evaluator-2.1.0.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.0-py3-none-any.whl.

File metadata

File hashes

Hashes for orion_v2_evaluator-2.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 aa202749ba826669a8cfeb8561cedd72339498637c0dede189c4acdb51b28b20
MD5 61e71067a4896bd90577a2bdf85b4477
BLAKE2b-256 7048cb2ffac071b195ec5ee88d85400853a67d17dbb15f3530c8b3a746149d0d

See more details on using hashes here.

Provenance

The following attestation bundles were made for orion_v2_evaluator-2.1.0-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