File size: 2,504 Bytes
a6d6517
 
 
d29187e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
---
license: apache-2.0
---

# Template for Concrete ML

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

This directory is used:
- by ML practicioners, to create Concrete ML FHE-friendly models, and make them available to HF users
- by companies, institutions or people to deploy those models over HF inference endpoints
- by developers, to use these entry points to make applications on privacy-preserving ML

## Creating models and making them available on HF

This is quite easy. Fork this template (maybe use this experimental tool https://huggingface.co/spaces/huggingface-projects/repo_duplicator for that), and then:
- install everything with: `pip install -r requirements.txt`
- edit `creating_models.py`, and fill the part between "# BEGIN: insert your ML task here" and
"# END: insert your ML task here"
- run the python file: `python creating_models.py`

At the end, if the script is successful, you'll have your compiled model ready in `compiled_model`. Now you can commit and push your repository (with in particular `compiled_model`, `handler.py`, `play_with_endpoint.py` and `requirements.txt`, but you can include the other files as well).

We recommend you to tag your Concrete ML compiled repository with `Concrete ML FHE friendly` tag, such that people can find them easily.

## Deploying a compiled model on HF inference endpoint

If you find an `Concrete ML FHE friendly` repository that 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
- replace the part between "# BEGIN: replace this part with your privacy-preserving application" and
"# END: replace this part with your privacy-preserving application" with your application

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