> For the complete documentation index, see [llms.txt](https://docs.zama.org/concrete-ml/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.zama.org/concrete-ml/get-started/cloud.md).

# Inference in the cloud

This document illustrate how Concrete ML model and DataFrames are deployed in client/server setting when creating privacy-preserving services in the cloud.

Once compiled to FHE, a Concrete ML model or DataFrame generates machine code that execute prediction, training or pre-processing on encrypted data. During this process, Concrete ML generates [the private encryption keys](/concrete-ml/get-started/concepts.md#cryptography-concepts) and [the public evaluation keys](/concrete-ml/get-started/concepts.md#cryptography-concepts).

## Communication protocols

The overall communications protocol to enable cloud deployment of machine learning services can be summarized in the following diagram:

![](/files/2q2gxjAMmnY2BxEPZmjE)

The steps detailed above are:

1. **Model Deployment**: The model developer deploys the compiled machine learning model to the server. This model includes the cryptographic parameters. The server is now ready to provide private inference. Cryptographic parameters and compiled programs for DataFrames are included directly in Concrete ML.
2. **Client request**: The client requests the cryptographic parameters (client specs). Once the client receives them from the server, the *secret* and *evaluation* keys are generated.
3. **Key exchanges**: The client sends the *evaluation* key to the server. The server is now ready to accept requests from this client. The client sends their encrypted data. Serialized DataFrames include client evaluation keys.
4. **Private inference**: The server uses the *evaluation* key to securely run prediction, training and pre-processing on the user's data and sends back the encrypted result.
5. **Decryption**: The client now decrypts the result and can send back new requests.

For more information on how to implement this basic secure inference protocol, refer to the [Production Deployment section](/concrete-ml/guides/client_server.md) and to the [client/server example](https://github.com/zama-ai/concrete-ml/blob/release/1.9.x/docs/advanced_examples/ClientServer.ipynb). For information on training on encrypted data, see [the corresponding section](/concrete-ml/built-in-models/training.md).


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.zama.org/concrete-ml/get-started/cloud.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
