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.2.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.2-py3-none-any.whl (6.3 MB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: orion_v2_evaluator-2.1.2.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.2.tar.gz
Algorithm Hash digest
SHA256 a77d74f4a76d62d983b2a61e1d21462956e4a989506d006e3559ec3d4a754d32
MD5 bb23fdd50e595b58987ac4002de73b96
BLAKE2b-256 6cdb16284de24a1e8d18238ffdb8d50153c014a29451dae9c23e464e92444196

See more details on using hashes here.

Provenance

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

File metadata

File hashes

Hashes for orion_v2_evaluator-2.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f84ca8d5fdd99ac963ce55046b2a7e78bbe3a3b336f0af6d00c63359ad98152f
MD5 9b672b2c390d48e0b3ae6a6e38a346cd
BLAKE2b-256 297053dffec764bc4c420363744b567b1a293e2030c7d15dd363288920adfaf2

See more details on using hashes here.

Provenance

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