# pllm.pipeline Python API

Public objects, practical usage, and research context for pllm.pipeline.

[View canonical HTML](https://pllm.run/sdk/reference/python/pllm/pipeline/)

Document ID: `pllm.docs.reference.python.pllm.pipeline`  
Release: `0.1.0`

Pipeline records compose component identities into a digestible configuration while leaving live sessions, masks, and credentials outside the object graph. Presence documents API availability, not complete model, security, or deployment coverage; check [implementation status](/sdk/reference/status/) before relying on a path.

## Research context

This API is project infrastructure rather than an implementation of one specific paper. Relevant method pages link their primary sources separately.

## Python SDK example

The example performs a bounded offline task and checks an observable result. It does not download a checkpoint or contact a provider.

```python
import pllm.pipeline as pipeline
from pllm.sources import TinyModel

configured = pipeline.VerifiedMaskedLinearCpu(TinyModel("qwen2"))
assert configured.to_spec()["components"]["verification"]["component"] == "pllm/freivalds-verify/v1"
```

API: [`pllm.pipeline`](/sdk/reference/python/pllm/pipeline/#objects-and-signatures)

## Objects and signatures

### `Experiment`

Immutable `Experiment` record carrying `name`, `pipeline`, `deployment`, `budget` for the workflow where pipeline records compose component identities into a digestible configuration while leaving live sessions, masks, and credentials outside the object graph.

- Canonical object: `pllm.configuration.Experiment`
- Kind: `class`
- Signature/type: `__init__(self, name: str, pipeline: Pipeline, deployment: Deployment, budget: ExecutionBudget) -> None`
- Public exports: `pllm.Experiment`, `pllm.config.Experiment`, `pllm.pipeline.Experiment`
- Public members: `name: str`; `pipeline: Pipeline`; `deployment: Deployment`; `budget: ExecutionBudget`; `__init__(self, name: str, pipeline: Pipeline, deployment: Deployment, budget: ExecutionBudget) -> None`; `classmethod from_spec(cls, spec: Mapping[str, Any], *, providers: Iterable[ProviderDescriptor]=...) -> Self`; `classmethod from_file(cls, path: str \| Path, *, providers: Iterable[ProviderDescriptor]=...) -> Self`; `get_params(self, deep: bool=True) -> dict[str, Any]`; `with_params(self, **changes: object) -> Self`; `to_spec(self) -> dict[str, Any]`; `canonical_bytes(self) -> bytes`; `configuration_digest(self) -> str`; `resolve(self) -> ExperimentProfile`

### `Pipeline`

Immutable `Pipeline` record carrying `model`, `components`, `profile` for the workflow where pipeline records compose component identities into a digestible configuration while leaving live sessions, masks, and credentials outside the object graph.

- Canonical object: `pllm.configuration.Pipeline`
- Kind: `class`
- Signature/type: `__init__(self, model: Model, components: Mapping[str, ComponentRef], profile: str \| None=...) -> None`
- Public exports: `pllm.Pipeline`, `pllm.config.Pipeline`, `pllm.pipeline.Pipeline`
- Public members: `model: Model`; `components: Mapping[str, ComponentRef]`; `profile: str \| None`; `__init__(self, model: Model, components: Mapping[str, ComponentRef], profile: str \| None=...) -> None`; `classmethod from_profile(cls, profile: str, *, model: Model, components: Mapping[str, ComponentRef]) -> Self`; `classmethod from_spec(cls, value: Mapping[str, Any], *, providers: Iterable[ProviderDescriptor]=...) -> Pipeline`; `get_params(self, deep: bool=True) -> dict[str, Any]`; `with_params(self, **changes: object) -> Self`; `to_spec(self) -> dict[str, Any]`; `canonical_bytes(self) -> bytes`; `digest(self) -> str`

### `DirectFHEProfile`

Pipeline(model: 'Model', components: 'Mapping[str, ComponentRef]', profile: 'str | None' = None).

- Canonical object: `pllm.profiles.DirectFHEProfile`
- Kind: `class`
- Signature/type: `__init__(self, model: ModelSource, *, linear: DirectFHE=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`
- Public exports: `pllm.DirectFHEProfile`, `pllm.pipeline.DirectFHEProfile`, `pllm.profiles.DirectFHEProfile`
- Public members: `PROFILE: str`; `__init__(self, model: ModelSource, *, linear: DirectFHE=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`; `property linear: DirectFHE`; `property inference: InferenceRole`; `property kernels: KernelBackend`; `get_params(self, deep: bool=True) -> dict[str, Any]`; `with_params(self, **changes: object) -> DirectFHEProfile`

### `MaskedLinearCpu`

Pipeline(model: 'Model', components: 'Mapping[str, ComponentRef]', profile: 'str | None' = None).

- Canonical object: `pllm.profiles.MaskedLinearCpu`
- Kind: `class`
- Signature/type: `__init__(self, model: ModelSource, *, linear: ProtocolMethod=..., preparation: PreparationProvider=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`
- Public exports: `pllm.MaskedLinearCpu`, `pllm.pipeline.MaskedLinearCpu`, `pllm.profiles.MaskedLinearCpu`
- Public members: `PROFILE: str`; `__init__(self, model: ModelSource, *, linear: ProtocolMethod=..., preparation: PreparationProvider=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`; `property linear: ProtocolMethod`; `property preparation: PreparationProvider`; `property inference: InferenceRole`; `property kernels: KernelBackend`; `get_params(self, deep: bool=True) -> dict[str, Any]`; `with_params(self, **changes: object) -> MaskedLinearCpu`

### `ProprietaryBlinded`

Pipeline(model: 'Model', components: 'Mapping[str, ComponentRef]', profile: 'str | None' = None).

- Canonical object: `pllm.profiles.ProprietaryBlinded`
- Kind: `class`
- Signature/type: `__init__(self, model: ModelSource, *, linear: BlindedLinear=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`
- Public exports: `pllm.ProprietaryBlinded`, `pllm.pipeline.ProprietaryBlinded`, `pllm.profiles.ProprietaryBlinded`
- Public members: `PROFILE: str`; `__init__(self, model: ModelSource, *, linear: BlindedLinear=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`; `property linear: BlindedLinear`; `property inference: InferenceRole`; `property kernels: KernelBackend`; `get_params(self, deep: bool=True) -> dict[str, Any]`; `with_params(self, **changes: object) -> ProprietaryBlinded`

### `ProprietaryGuarded`

Pipeline(model: 'Model', components: 'Mapping[str, ComponentRef]', profile: 'str | None' = None).

- Canonical object: `pllm.profiles.ProprietaryGuarded`
- Kind: `class`
- Signature/type: `__init__(self, model: ModelSource, *, linear: GuardedLinear=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`
- Public exports: `pllm.ProprietaryGuarded`, `pllm.pipeline.ProprietaryGuarded`, `pllm.profiles.ProprietaryGuarded`
- Public members: `PROFILE: str`; `__init__(self, model: ModelSource, *, linear: GuardedLinear=..., inference: InferenceRole=..., kernels: KernelBackend=...) -> None`; `property linear: GuardedLinear`; `property inference: InferenceRole`; `property kernels: KernelBackend`; `get_params(self, deep: bool=True) -> dict[str, Any]`; `with_params(self, **changes: object) -> ProprietaryGuarded`

### `VerifiedMaskedLinearCpu`

Pipeline(model: 'Model', components: 'Mapping[str, ComponentRef]', profile: 'str | None' = None).

- Canonical object: `pllm.profiles.VerifiedMaskedLinearCpu`
- Kind: `class`
- Signature/type: `__init__(self, model: ModelSource, *, linear: ProtocolMethod=..., preparation: PreparationProvider=..., inference: InferenceRole=..., kernels: KernelBackend=..., verification: VerificationScheme=...) -> None`
- Public exports: `pllm.VerifiedMaskedLinearCpu`, `pllm.pipeline.VerifiedMaskedLinearCpu`, `pllm.profiles.VerifiedMaskedLinearCpu`
- Public members: `PROFILE: str`; `__init__(self, model: ModelSource, *, linear: ProtocolMethod=..., preparation: PreparationProvider=..., inference: InferenceRole=..., kernels: KernelBackend=..., verification: VerificationScheme=...) -> None`; `property linear: ProtocolMethod`; `property preparation: PreparationProvider`; `property inference: InferenceRole`; `property kernels: KernelBackend`; `property verification: FreivaldsVerify`; `with_params(self, **changes: object) -> VerifiedMaskedLinearCpu`
