Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Draft] Concepts and Architecture #2

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

mortendahl
Copy link
Member

The aim of this RFC is to define a common vocabulary for TF Encrypted.

@mortendahl mortendahl self-assigned this Sep 25, 2019

- **Local tensors** are a specific type of TFE tensors used to represent plaintext values held locally by a player. Technically they are just small wrappers over raw tensors, but including extra metadata about locality and ownership. This metadata is used by e.g. kernels and protocols, as well as for detecting privacy violations.

- **Operations** are abstract targets used when defining secure computations, for instance `tfe.matmul` and `tfe.keras.Dense`.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we want to include tfe.keras.Dense as an Operation? A vanilla Dense contains several Operations, specifically MatMul and BiasAdd, but might not be an Operation itself.


- **Protocols** are sets of kernels, and are hence not specific about *what* is being computed but rather *how* it is. They are typically used as context handlers, under which an abstract specification of a function is made concrete via the implied mapping from operations to kernels. Note that this roughly matches how "protocol" is used in e.g. MPC.

- **Functionalities** are protocols implementing a specific task and exposed as functions, for instance mapping from and to local tensors. This roughly follows the idea of ideal functionality from the UC framework yet are more intended to be user-facing.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What would the user want these for? I can see e.g. testing as one, but would be interested if you had others!


- **Raw tensors** are the built-in TensorFlow tensors.

- **Local tensors** are a specific type of TFE tensors used to represent plaintext values held locally by a player. Technically they are just small wrappers over raw tensors, but including extra metadata about locality and ownership. This metadata is used by e.g. kernels and protocols, as well as for detecting privacy violations.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd also add representation as metadata (e.g. native TF data types, fixed-point, quantized, etc.)

@mortendahl mortendahl changed the title [WIP] Terminology in TF Encrypted [Draft] Concepts and Architecture Nov 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants