KeOpsΒΆ
For large datasets, setting use_keops=True represents pairwise costs and transport plans symbolically with KeOps LazyTensors.
model = Champollion(use_keops=True)
In KeOps mode, the Sinkhorn potentials remain ordinary torch tensors, but result.cost and result.plan may be symbolic objects.
result.cost_is_symbolic
result.plan_is_symbolic
High-level operations such as annotation transfer, barycentric projection, and top matches are designed to work with symbolic plans when possible.
Dense materialization is explicit and guarded by a size limit:
dense_plan = result.materialize_plan(max_entries=50_000 * 50_000)
Increase max_entries only when you intentionally want to allocate the full dense matrix.