* refactor toc * refactor toc * Change to pydata-sphinx-theme and update packages requirement list for ReadtheDocs * Remove customized css for old theme * Add index page to each top bar section and limit dropdown maximum to be 4 * Use js to change 'More' to 'Libraries' * Add custom.css to conf.py for further css changes * Add BigDL logo and search bar * refactor toc * refactor toc and add overview * refactor toc and add overview * refactor toc and add overview * refactor get started * add paper and video section * add videos * add grid columns in landing page * add document roadmap to index * reapply search bar and github icon commit * reorg orca and chronos sections * Test: weaken ads by js * update: change left attrbute * update: add comments * update: change opacity to 0.7 * Remove useless theme template override for old theme * Add sidebar releases component in the home page * Remove sidebar search and restore top nav search button * Add BigDL handouts * Add back to homepage button to pages except from the home page * Update releases contents & styles in left sidebar * Add version badge to the top bar * Test: weaken ads by js * update: add comments * remove landing page contents * rfix chronos install * refactor install * refactor chronos section titles * refactor nano index * change chronos landing * revise chronos landing page * add document navigator to nano landing page * revise install landing page * Improve css of versions in sidebar * Make handouts image pointing to a page in new tab * add win guide to install * add dliib installation * revise title bar * rename index files * add index page for user guide * add dllib and orca API * update user guide landing page * refactor side bar * Remove extra style configuration of card components & make different card usage consistent * Remove extra styles for Nano how-to guides * Remove extra styles for Chronos how-to guides * Remove dark mode for now * Update index page description * Add decision tree for choosing BigDL libraries in index page * add dllib models api, revise core layers formats * Change primary & info color in light mode * Restyle card components * Restructure Chronos landing page * Update card style * Update BigDL library selection decision tree * Fix failed Chronos tutorials filter * refactor PPML documents * refactor and add friesian documents * add friesian arch diagram * update landing pages and fill key features guide index page * Restyle link card component * Style video frames in PPML sections * Adjust Nano landing page * put api docs to the last in index for convinience * Make badge horizontal padding smaller & small changes * Change the second letter of all header titles to be small capitalizd * Small changes on Chronos index page * Revise decision tree to make it smaller * Update: try to change the position of ads. * Bugfix: deleted nonexist file config * Update: update ad JS/CSS/config * Update: change ad. * Update: delete my template and change files. * Update: change chronos installation table color. * Update: change table font color to --pst-color-primary-text * Remove old contents in landing page sidebar * Restyle badge for usage in card footer again * Add quicklinks template on landing page sidebar * add quick links * Add scala logo * move tf, pytorch out of the link * change orca key features cards * fix typo * fix a mistake in wording * Restyle badge for card footer * Update decision tree * Remove useless html templates * add more api docs and update tutorials in dllib * update chronos install using new style * merge changes in nano doc from master * fix quickstart links in sidebar quicklinks * Make tables responsive * Fix overflow in api doc * Fix list indents problems in [User guide] section * Further fixes to nested bullets contents in [User Guide] section * Fix strange title in Nano 5-min doc * Fix list indent problems in [DLlib] section * Fix misnumbered list problems and other small fixes for [Chronos] section * Fix list indent problems and other small fixes for [Friesian] section * Fix list indent problem and other small fixes for [PPML] section * Fix list indent problem for developer guide * Fix list indent problem for [Cluster Serving] section * fix dllib links * Fix wrong relative link in section landing page Co-authored-by: Yuwen Hu <yuwen.hu@intel.com> Co-authored-by: Juntao Luo <1072087358@qq.com>
92 lines
No EOL
3 KiB
Markdown
92 lines
No EOL
3 KiB
Markdown
# A Hello World Example
|
|
|
|
|
|
In this section, you can get started with running a simple native python HelloWorld program and a simple native Spark Pi program locally in a BigDL PPML client container to get an initial understanding of the usage of ppml.
|
|
|
|
|
|
|
|
## a. Prepare Keys
|
|
|
|
* generate ssl_key
|
|
|
|
Download scripts from [here](https://github.com/intel-analytics/BigDL).
|
|
|
|
```
|
|
cd BigDL/ppml/
|
|
sudo bash scripts/generate-keys.sh
|
|
```
|
|
This script will generate keys under keys/ folder
|
|
|
|
* generate enclave-key.pem
|
|
|
|
```
|
|
openssl genrsa -3 -out enclave-key.pem 3072
|
|
```
|
|
This script generates a file enclave-key.pem which is used to sign image.
|
|
|
|
|
|
## b. Start the BigDL PPML client container
|
|
|
|
```
|
|
#!/bin/bash
|
|
|
|
# ENCLAVE_KEY_PATH means the absolute path to the "enclave-key.pem" in step a
|
|
# KEYS_PATH means the absolute path to the keys folder in step a
|
|
# LOCAL_IP means your local IP address.
|
|
export ENCLAVE_KEY_PATH=YOUR_LOCAL_ENCLAVE_KEY_PATH
|
|
export KEYS_PATH=YOUR_LOCAL_KEYS_PATH
|
|
export LOCAL_IP=YOUR_LOCAL_IP
|
|
export DOCKER_IMAGE=intelanalytics/bigdl-ppml-trusted-big-data-ml-python-graphene:devel
|
|
|
|
sudo docker pull $DOCKER_IMAGE
|
|
|
|
sudo docker run -itd \
|
|
--privileged \
|
|
--net=host \
|
|
--cpuset-cpus="0-5" \
|
|
--oom-kill-disable \
|
|
--device=/dev/gsgx \
|
|
--device=/dev/sgx/enclave \
|
|
--device=/dev/sgx/provision \
|
|
-v $ENCLAVE_KEY_PATH:/graphene/Pal/src/host/Linux-SGX/signer/enclave-key.pem \
|
|
-v /var/run/aesmd/aesm.socket:/var/run/aesmd/aesm.socket \
|
|
-v $KEYS_PATH:/ppml/trusted-big-data-ml/work/keys \
|
|
--name=bigdl-ppml-client-local \
|
|
-e LOCAL_IP=$LOCAL_IP \
|
|
-e SGX_MEM_SIZE=64G \
|
|
$DOCKER_IMAGE bash
|
|
```
|
|
|
|
## c. Run Python HelloWorld in BigDL PPML Client Container
|
|
|
|
Run the [script](https://github.com/intel-analytics/BigDL/blob/main/ppml/trusted-big-data-ml/python/docker-graphene/start-scripts/start-python-helloworld-sgx.sh) to run trusted [Python HelloWorld](https://github.com/intel-analytics/BigDL/blob/main/ppml/trusted-big-data-ml/python/docker-graphene/examples/helloworld.py) in BigDL PPML client container:
|
|
```
|
|
sudo docker exec -it bigdl-ppml-client-local bash work/start-scripts/start-python-helloworld-sgx.sh
|
|
```
|
|
Check the log:
|
|
```
|
|
sudo docker exec -it bigdl-ppml-client-local cat /ppml/trusted-big-data-ml/test-helloworld-sgx.log | egrep "Hello World"
|
|
```
|
|
The result should look something like this:
|
|
> Hello World
|
|
|
|
|
|
## d. Run Spark Pi in BigDL PPML Client Container
|
|
|
|
Run the [script](https://github.com/intel-analytics/BigDL/blob/main/ppml/trusted-big-data-ml/python/docker-graphene/start-scripts/start-spark-local-pi-sgx.sh) to run trusted [Spark Pi](https://github.com/apache/spark/blob/v3.1.2/examples/src/main/python/pi.py) in BigDL PPML client container:
|
|
|
|
```bash
|
|
sudo docker exec -it bigdl-ppml-client-local bash work/start-scripts/start-spark-local-pi-sgx.sh
|
|
```
|
|
|
|
Check the log:
|
|
|
|
```bash
|
|
sudo docker exec -it bigdl-ppml-client-local cat /ppml/trusted-big-data-ml/test-pi-sgx.log | egrep "roughly"
|
|
```
|
|
|
|
The result should look something like this:
|
|
|
|
> Pi is roughly 3.146760
|
|
|
|
<br /> |