|
--- |
|
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`. |
|
|
|
|