Hi! I want to do a very simple and basic python script in a Raspberry Pi which processes the values of each pin and prints them to console using the Concrete library so that i can use FHE. In this situation, I would like to know if a Docker image is actually necessary and, if so, what is its purpouse.
So, to answer to the question in the title (“Is docker always needed?”): no, docker is not always needed, you can use Concrete-ML natively on eg Linux or (intel) macOS or WSL on Windows, Installing - Concrete ML . Docker is mandatory for other OS, eg M1 M2 macOS or native Windows.
Now, regarding your question with Raspberry Pi: could you precise a bit what is your need and expectations? I am not sure I followed what you had in mind, but just let me tell you that normally, Concrete-ML is to be used on a development machine, and then, when you want to put in production, you deploy compiled models on a trusted device (your Raspberry Pi?) and an untrusted server which computes things in FHE.
Hi! Thank you for your fast answer. About my expectations, what I have in mind is to develop a super mini demo in which Machine Learning takes place using homomorphic encryption. So, starting with that idea and without having to waste money, I thought about a python script programmed on the Rasperry Pi so that it recognizes the values of each pin and does some kind of operation (a very simple one) with that values. Maybe I´m wrong because I just started with this topic but I thought that importing Concrete ML in the script and using its methods was enough for making that operation a FHE one.
Concrete-ML is precisely for ML programs, which is maybe too much for a start. What I think you want is to do a simple FHE operation on your Rasperry, so maybe you should have a look to Concrete Framework and its simpler (so-called leveled) operations, like a + b.
However, currently Concrete stack does not support ARM, but it is one of our hot topics for the end of 2022.
Just to clarify: Concrete-ML would be for complex models, where, at the end, you want to deploy on
- a client (which is trusted and is typically where the user has her personal data)
- and a server (which is untrusted) and does its FHE computation, without being able to see any private data
- finally, results are sent back to client, which is the only one able to decrypt it.
Here, depending on your use case, Rasperry Pi may be the client (but then, no FHE operation would be done, except the encryption of data and decryption of result).
And, just to say: it is possible, and I hope, relatively easy and cheap to do an “super mini demo in which Machine Learning takes place using homomorphic encryption”, to take your words:
- just take a computer, like a macOS or Linux
- install Concrete-ML, as explained here
- then, do advanced examples as in the documentation
Okay! I will see both Concrete Framework and the examples with Concrete ML. Thank you for your guidance!