FHE concrete-ml license:apache-2.0 endpoints_compatible region:us
---
license: apache-2.0
tags:
- FHE
- concrete-ml
---
<p align="center">
<!-- product name logo -->
  <img width=600 src="https://cdn-uploads.huggingface.co/production/uploads/6286462340423ef48fb6c45e/ElX3V79ViRx0BUcCPVJQG.png">
  <a href="https://github.com/zama-ai/concrete-ml"> 📁 Github</a> | <a href="https://docs.zama.ai/concrete-ml"> 📒 Documentation</a> | <a href="https://zama.ai/community"> 💛 Community support</a> | <a href="https://github.com/zama-ai/awesome-zama"> 📚 FHE resources by Zama</a>
</p>
<hr>

# MNIST digit classification with a CNN with Concrete ML

In this repository, we classify MNIST digits, without seing digits! Indeed, digits are sent encrypted to the HF endpoints, and are classified (with a small torch CNN model) without the server seeing the digits in the clear, thanks to fully homomorphic encryption (FHE). This is done thanks to Zama's Concrete ML.

Concrete ML is Zama's open-source privacy-preserving ML package, FHE. We refer the reader to fhe.org or Zama's websites for more information on FHE.

## Deploying a compiled model on HF inference endpoint

If you would like to deploy, it is very easy.
- click on 'Deploy' button in HF interface
- chose "Inference endpoints"
- chose the right model repository
- (the rest of the options are classical to HF end points; we refer you to their documentation for more information)
and then click on 'Create endpoint'

And now, your model should be deployed, after few secunds of installation.

## Using HF entry points on privacy-preserving models

Now, this is the final step: using the entry point. You should:
- if your inference endpoint is private, set an environment variable HF_TOKEN with your HF token
- edit `play_with_endpoint.py`
- replace `API_URL` by your entry point URL

Finally, you'll be able to launch your application with `python play_with_endpoint.py`.