From 21543a05ed37c789711ac04d66ee25becc0e0566 Mon Sep 17 00:00:00 2001 From: gaoping Date: Mon, 11 Oct 2021 10:01:48 +0000 Subject: [PATCH] add docs --- docs/readthedocs/Makefile | 19 + docs/readthedocs/README.md | 15 + docs/readthedocs/_build/.keep | 1 + docs/readthedocs/image/.keep | 1 + docs/readthedocs/image/GitHub-Mark-32px.png | Bin 0 -> 1714 bytes docs/readthedocs/image/colab_logo_32px.png | Bin 0 -> 1684 bytes docs/readthedocs/make.bat | 35 + docs/readthedocs/requirements-doc.txt | 29 + docs/readthedocs/requirements-rtd.txt | 12 + .../readthedocs/source/_static/css/custom.css | 65 + .../source/analytics_zoo_pytext.py | 51 + docs/readthedocs/source/conf.py | 226 ++ .../source/doc/Application/powered-by.md | 70 + .../source/doc/Application/presentations.md | 77 + .../doc/Chronos/Image/automl_hparams.png | Bin 0 -> 158097 bytes .../doc/Chronos/Image/automl_monitor.png | Bin 0 -> 181588 bytes .../doc/Chronos/Image/automl_scalars.png | Bin 0 -> 249945 bytes .../source/doc/Chronos/Image/forecast-RR.png | Bin 0 -> 49999 bytes .../source/doc/Chronos/Image/forecast-TS.png | Bin 0 -> 24661 bytes .../source/doc/Chronos/Overview/chronos.md | 529 +++ .../QuickStart/chronos-anomaly-detector.md | 49 + .../chronos-autotsest-quickstart.md | 116 + ...chronos-tsdataset-forecaster-quickstart.md | 89 + .../Orca/Overview/data-parallel-processing.md | 143 + .../distributed-training-inference.md | 252 ++ .../doc/Orca/Overview/distributed-tuning.md | 211 ++ .../source/doc/Orca/Overview/orca-context.md | 81 + .../source/doc/Orca/Overview/orca.md | 48 + .../orca-autoestimator-pytorch-quickstart.md | 161 + .../QuickStart/orca-autoxgboost-quickstart.md | 88 + .../Orca/QuickStart/orca-keras-quickstart.md | 110 + .../orca-pytorch-distributed-quickstart.md | 133 + .../QuickStart/orca-pytorch-quickstart.md | 134 + .../doc/Orca/QuickStart/orca-tf-quickstart.md | 121 + .../QuickStart/orca-tf2keras-quickstart.md | 123 + .../source/doc/PPML/Overview/ppml.md | 792 +++++ .../doc/PPML/trusted-serving-on-k8s-guide.md | 153 + .../source/doc/PythonAPI/AutoML/automl.rst | 30 + .../PythonAPI/Chronos/anomaly_detectors.rst | 31 + .../doc/PythonAPI/Chronos/automodels.rst | 64 + .../source/doc/PythonAPI/Chronos/autots.rst | 86 + .../doc/PythonAPI/Chronos/autotsestimator.rst | 25 + .../doc/PythonAPI/Chronos/forecasters.rst | 118 + .../source/doc/PythonAPI/Chronos/index.rst | 17 + .../doc/PythonAPI/Chronos/simulator.rst | 10 + .../doc/PythonAPI/Chronos/tsdataset.rst | 24 + .../source/doc/PythonAPI/Friesian/feature.rst | 11 + .../source/doc/PythonAPI/Orca/orca.rst | 45 + .../source/doc/Ray/Overview/ray.md | 100 + .../doc/Ray/QuickStart/ray-quickstart.md | 131 + .../source/doc/UseCase/keras-api.md | 2833 +++++++++++++++++ .../source/doc/UseCase/nnframes.md | 428 +++ .../source/doc/UseCase/spark-dataframe.md | 111 + .../source/doc/UseCase/tensorboard.md | 0 .../source/doc/UseCase/xshards-pandas.md | 121 + .../readthedocs/source/doc/UserGuide/colab.md | 61 + .../source/doc/UserGuide/databricks.md | 59 + .../source/doc/UserGuide/develop.md | 111 + .../source/doc/UserGuide/docker.md | 143 + .../source/doc/UserGuide/hadoop.md | 131 + .../doc/UserGuide/images/Databricks1.PNG | Bin 0 -> 53554 bytes .../doc/UserGuide/images/Databricks2.PNG | Bin 0 -> 65526 bytes .../doc/UserGuide/images/Databricks3.PNG | Bin 0 -> 64359 bytes .../doc/UserGuide/images/Databricks4.PNG | Bin 0 -> 40798 bytes .../doc/UserGuide/images/Databricks5.PNG | Bin 0 -> 38560 bytes .../doc/UserGuide/images/Databricks6.PNG | Bin 0 -> 36643 bytes .../source/doc/UserGuide/images/notebook1.jpg | Bin 0 -> 97717 bytes .../source/doc/UserGuide/images/notebook2.jpg | Bin 0 -> 51440 bytes .../source/doc/UserGuide/images/notebook3.jpg | Bin 0 -> 105392 bytes .../source/doc/UserGuide/images/notebook4.jpg | Bin 0 -> 114990 bytes .../source/doc/UserGuide/images/notebook5.jpg | Bin 0 -> 87998 bytes docs/readthedocs/source/doc/UserGuide/k8s.md | 307 ++ .../source/doc/UserGuide/notebooks.md | 72 + .../source/doc/UserGuide/python.md | 150 + .../readthedocs/source/doc/UserGuide/scala.md | 163 + docs/readthedocs/source/doc/release.md | 179 ++ docs/readthedocs/source/index.rst | 86 + 77 files changed, 9581 insertions(+) create mode 100644 docs/readthedocs/Makefile create mode 100644 docs/readthedocs/README.md create mode 100644 docs/readthedocs/_build/.keep create mode 100644 docs/readthedocs/image/.keep create mode 100644 docs/readthedocs/image/GitHub-Mark-32px.png create mode 100644 docs/readthedocs/image/colab_logo_32px.png create mode 100644 docs/readthedocs/make.bat create mode 100644 docs/readthedocs/requirements-doc.txt create mode 100644 docs/readthedocs/requirements-rtd.txt create mode 100644 docs/readthedocs/source/_static/css/custom.css create mode 100644 docs/readthedocs/source/analytics_zoo_pytext.py create mode 100644 docs/readthedocs/source/conf.py create mode 100644 docs/readthedocs/source/doc/Application/powered-by.md create mode 100644 docs/readthedocs/source/doc/Application/presentations.md create mode 100644 docs/readthedocs/source/doc/Chronos/Image/automl_hparams.png create mode 100644 docs/readthedocs/source/doc/Chronos/Image/automl_monitor.png create mode 100644 docs/readthedocs/source/doc/Chronos/Image/automl_scalars.png create mode 100644 docs/readthedocs/source/doc/Chronos/Image/forecast-RR.png create mode 100644 docs/readthedocs/source/doc/Chronos/Image/forecast-TS.png create mode 100644 docs/readthedocs/source/doc/Chronos/Overview/chronos.md create mode 100644 docs/readthedocs/source/doc/Chronos/QuickStart/chronos-anomaly-detector.md create mode 100644 docs/readthedocs/source/doc/Chronos/QuickStart/chronos-autotsest-quickstart.md create mode 100644 docs/readthedocs/source/doc/Chronos/QuickStart/chronos-tsdataset-forecaster-quickstart.md create mode 100644 docs/readthedocs/source/doc/Orca/Overview/data-parallel-processing.md create mode 100644 docs/readthedocs/source/doc/Orca/Overview/distributed-training-inference.md create mode 100644 docs/readthedocs/source/doc/Orca/Overview/distributed-tuning.md create mode 100644 docs/readthedocs/source/doc/Orca/Overview/orca-context.md create mode 100644 docs/readthedocs/source/doc/Orca/Overview/orca.md create mode 100644 docs/readthedocs/source/doc/Orca/QuickStart/orca-autoestimator-pytorch-quickstart.md create mode 100644 docs/readthedocs/source/doc/Orca/QuickStart/orca-autoxgboost-quickstart.md create mode 100644 docs/readthedocs/source/doc/Orca/QuickStart/orca-keras-quickstart.md create mode 100644 docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-distributed-quickstart.md create mode 100644 docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-quickstart.md create mode 100644 docs/readthedocs/source/doc/Orca/QuickStart/orca-tf-quickstart.md create mode 100644 docs/readthedocs/source/doc/Orca/QuickStart/orca-tf2keras-quickstart.md create mode 100644 docs/readthedocs/source/doc/PPML/Overview/ppml.md create mode 100644 docs/readthedocs/source/doc/PPML/trusted-serving-on-k8s-guide.md create mode 100644 docs/readthedocs/source/doc/PythonAPI/AutoML/automl.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/anomaly_detectors.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/automodels.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/autots.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/autotsestimator.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/forecasters.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/index.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/simulator.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Chronos/tsdataset.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Friesian/feature.rst create mode 100644 docs/readthedocs/source/doc/PythonAPI/Orca/orca.rst create mode 100644 docs/readthedocs/source/doc/Ray/Overview/ray.md create mode 100644 docs/readthedocs/source/doc/Ray/QuickStart/ray-quickstart.md create mode 100644 docs/readthedocs/source/doc/UseCase/keras-api.md create mode 100644 docs/readthedocs/source/doc/UseCase/nnframes.md create mode 100644 docs/readthedocs/source/doc/UseCase/spark-dataframe.md create mode 100644 docs/readthedocs/source/doc/UseCase/tensorboard.md create mode 100644 docs/readthedocs/source/doc/UseCase/xshards-pandas.md create mode 100644 docs/readthedocs/source/doc/UserGuide/colab.md create mode 100644 docs/readthedocs/source/doc/UserGuide/databricks.md create mode 100644 docs/readthedocs/source/doc/UserGuide/develop.md create mode 100644 docs/readthedocs/source/doc/UserGuide/docker.md create mode 100644 docs/readthedocs/source/doc/UserGuide/hadoop.md create mode 100644 docs/readthedocs/source/doc/UserGuide/images/Databricks1.PNG create mode 100644 docs/readthedocs/source/doc/UserGuide/images/Databricks2.PNG create mode 100644 docs/readthedocs/source/doc/UserGuide/images/Databricks3.PNG create mode 100644 docs/readthedocs/source/doc/UserGuide/images/Databricks4.PNG create mode 100644 docs/readthedocs/source/doc/UserGuide/images/Databricks5.PNG create mode 100644 docs/readthedocs/source/doc/UserGuide/images/Databricks6.PNG create mode 100644 docs/readthedocs/source/doc/UserGuide/images/notebook1.jpg create mode 100644 docs/readthedocs/source/doc/UserGuide/images/notebook2.jpg create mode 100644 docs/readthedocs/source/doc/UserGuide/images/notebook3.jpg create mode 100644 docs/readthedocs/source/doc/UserGuide/images/notebook4.jpg create mode 100644 docs/readthedocs/source/doc/UserGuide/images/notebook5.jpg create mode 100644 docs/readthedocs/source/doc/UserGuide/k8s.md create mode 100644 docs/readthedocs/source/doc/UserGuide/notebooks.md create mode 100644 docs/readthedocs/source/doc/UserGuide/python.md create mode 100644 docs/readthedocs/source/doc/UserGuide/scala.md create mode 100644 docs/readthedocs/source/doc/release.md create mode 100644 docs/readthedocs/source/index.rst diff --git a/docs/readthedocs/Makefile b/docs/readthedocs/Makefile new file mode 100644 index 00000000..14ebbfec --- /dev/null +++ b/docs/readthedocs/Makefile @@ -0,0 +1,19 @@ +# Minimal makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +SOURCEDIR = source +BUILDDIR = _build + +# Put it first so that "make" without argument is like "make help". +help: + @$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) + +.PHONY: help Makefile + +# Catch-all target: route all unknown targets to Sphinx using the new +# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS). +%: Makefile + @$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O) diff --git a/docs/readthedocs/README.md b/docs/readthedocs/README.md new file mode 100644 index 00000000..e346fb26 --- /dev/null +++ b/docs/readthedocs/README.md @@ -0,0 +1,15 @@ +# Analytics-zoo-doc Documentation + +To compile the documentation, run the following commands from this directory. + +``` +pip install -r requirements-doc.txt +pip install -U -r requirements-rtd.txt # important for reproducing the deployment environment +make html +open _build/html/index.html +``` + +To test if there are any build errors with the documentation, do the following. + +``` +sphinx-build -b html -d _build/doctrees source _build/html diff --git a/docs/readthedocs/_build/.keep b/docs/readthedocs/_build/.keep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/readthedocs/_build/.keep @@ -0,0 +1 @@ + diff --git a/docs/readthedocs/image/.keep b/docs/readthedocs/image/.keep new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/docs/readthedocs/image/.keep @@ -0,0 +1 @@ + diff --git a/docs/readthedocs/image/GitHub-Mark-32px.png b/docs/readthedocs/image/GitHub-Mark-32px.png new file mode 100644 index 0000000000000000000000000000000000000000..8b25551a97921681334176ee143b41510a117d86 GIT binary patch literal 1714 zcmaJ?X;2eq7*4oFu!ne{XxAht2qc?8LXr|_LPCfTpaBK7K$c{I0Ld=NLIOeuC;@2) zZ$K%a)k+m-s0>xHmKxL%0V&0TRzzznhgyqrIC$F)0{WwLXLrBvd*^wc_uSc%h%m9E z{W5z3f#4_!7RvAyFh6!S_*<8qJ%KOIm?#E|L=rJQq=gB5C6WLG5;c?r%V0>EmEH#X z5eSwPRa6WXBMs#$5H%GtW2go-in9p>zW@UYDNNWc^XOXZQ? z1QjEV00I#$3^1wQUJ8&-2UsjB-G|9y(LDhMNN3PM{APL4eYi{(m*ERcUnJa{R+-3^ z34^A6;U^v`8N*O6ji%S@sd{fJqD`XFIUJ5zgTe5^5nj414F(y!G&=H(f)Lgzv?>%+ zAsWD}2qhpH7>|TU`X&W6IxDNuO_vET7|j5oG&&VDr!)hUO8+0KR?nh!m<)a!?|%yG zqOwq!CWCcIhE{<$E|F|@g>nP6FoYr6C<8>D?ID9%&5J(4oSbR1I^byW*g@__U z4QsF&uJSEcFeleM3~ChjEQGbHOjsGDMbyAl(p=Ttv9RaVo8~I#js@@Y9C^_2U})yn zzSHU%6FxuY?d;&65MyR({^lU*3$z$ZllDb(o&<7d;A_`h2U+3~BJ2Hv`{W}KEU801#cv_B|9Cm!ynR{S`AMsSn z;7E=B;mb!wx$L;S>yGXG^6=&WlQn9$s?&L%Y1D8TI^MlKB1DqsEng$>f4=xYWBoPI z_S1p!sJ#d2?YI4kPA{k}Eby?F=f-J9zIc`YDl^pzjVm~9ebE?Hn?t0Nx+la|D0MB; z9)2xv1G>a1|A9kQ>~DV<=X3-4yC&n!m8-3K#P z{X@0zRuQsy$+N ziSCoLJU{Z$nQy4A4Y5UJ07$5FA~qL2%Q+cLaqDU?Lz3?=BC5;Nk6BbTmmceEaM>-Z zi>O&-dSE=%ex;vcvCOk{*JQ5^_4M z4lW7%l9IqY(z7pV(?I@@8=KPFO82)O{VDI18-*d-k$YmI^XiuPs_LuFw<^ZcD}yP5 c*NrbeloN*74g`U%%F6r~k%+>C^#XapzmV0H-2eap literal 0 HcmV?d00001 diff --git a/docs/readthedocs/image/colab_logo_32px.png b/docs/readthedocs/image/colab_logo_32px.png new file mode 100644 index 0000000000000000000000000000000000000000..4888368fb92c78df4f13c8f094efc9f4cd71bfc4 GIT binary patch literal 1684 zcmV;F25b3=P)aB^>EX>4U6ba`-PAVE-2F#rGvnd3@N%}XuHOjal;%1_J8 zN##-i17i~|6H60IqeKG(0}BHPFf=eQHUyGJK(;wlDA51~n3$WT0in5BvY9D}&jkQa zx)o>}E!d0z00rPlL_t(oh3%G0Y+Y9shQGD;KKJ@QoH%x)04hOA4QZUFq_Im>VPRZB zXGN&e1yn#8f+7$?oe(C433NbFm>|IrlzR+NPzcov3o$=2gde*@=zs zs+Xb2|U zS#R|PVm9P&e_nBB6}RU5=#aN3(c9|{d9$?+-|)dkhrA3Q&D!s^$p?C!>fPeRThs;L zsGgMjkIlCY6~USwW9`V)#&_J4FZ<1iFN7FUmt}M8eB)R<0yksG&EPiPUyPmco0$7D z!oAwz5)`N#F}2I6Js*P{NczT}xAFc&1}0Jfo4Wt2hTmr@{aW-1B7i|PV8PzB7!K-% zb3c~hi%T|&mtnFM16IIK^bbeTUuc)Vn_9%`5yL_&d#YZAyh0+xh4g!F+xYiwvTt+H zjzexk?vtco)qt6WRe@E_JE5r9<;JY2eMPqY?b)^w(gqLXy^rh0o`V>~T4*3ROiaYg z5CJnI)P%6V`VHiBSR5vR9lyFz^D`GFa!atJzcfv9bN(#O@g_=eESftbs}n$TSg8 z(KW*_0`*9&hG3`@ipd&QCV0J*)p5HMsO=g3_m1t4Q@fs$p8S@0C9R7}-msu$@9kPTOQZ2?3-O$)>on0vwKLfr7gKcZ zl%sknrCdl@uKf%cl<;inaqS2PS&Atlo>-UI-D}potZ7X3c^$ z3v?E|&QE_^9-My0M*4D8Hb$NUI+sLtzB~uag*SHX)%Ce@ycRM9(SmwgYP_P`U;QG0 zP4?xuurboPB+N`i+5Xzo_Q#}~b%pP;6q+sQfJRpFh73y8zz`B~wiwUIBmF;x38+k^ ztC`QNKM|Qo#c4m!|2S@~*zH-Ypw4UA=H{4b6_x$xYtG!t|wr5k4gs$A| zsdFoB*yNa?9p-uK?L)+id)qv}5{1#ix4;gN#`X-$+HKfm!ao(K$c61x>sjpisMGFl zL5s*jG`ng>r3)Tb?`P+92DeVQ}OZLGg|grn4YOqznsVAGn{z}tL565~us~eJ>b~q=BH)%~X@an{C$tQF=GUUPqo2inC#zMNHV*O#1~?e1IhOBqcN@g!^*i0kc zLaY{WJ|&c904LsknD@fjx=Z2+j=Gdj8kx e{(br1mVW{+cUFSMVc4_)0000NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/docs/readthedocs/requirements-doc.txt b/docs/readthedocs/requirements-doc.txt new file mode 100644 index 00000000..bc500b6b --- /dev/null +++ b/docs/readthedocs/requirements-doc.txt @@ -0,0 +1,29 @@ +sphinx-copybutton +sphinx-version-warning +sphinx-click +sphinx-jsonschema +sphinxemoji +click +tensorflow==1.15.2 +bigdl==0.12.0 +ray[tune]==1.2.0 +ray==1.2.0 +torch==1.7.1 +Pygments==2.3.1 +setuptools==41.0.1 +docutils==0.14 +mock==1.0.1 +pillow==5.4.1 +sphinx==4.0.2 +alabaster>=0.7,<0.8,!=0.7.5 +commonmark==0.8.1 +recommonmark==0.5.0 +readthedocs-sphinx-ext<2.2 +sphinx_rtd_theme==0.5.2 +scikit-learn==0.22.2.post1 +tsfresh==0.18.0 +pystan==2.19.1.1 +prophet +pmdarima +sphinx_markdown_tables +numpy==1.21.2 \ No newline at end of file diff --git a/docs/readthedocs/requirements-rtd.txt b/docs/readthedocs/requirements-rtd.txt new file mode 100644 index 00000000..bbebe395 --- /dev/null +++ b/docs/readthedocs/requirements-rtd.txt @@ -0,0 +1,12 @@ +Pygments==2.3.1 +setuptools==41.0.1 +docutils==0.14 +mock==1.0.1 +pillow==5.4.1 +alabaster>=0.7,<0.8,!=0.7.5 +commonmark==0.8.1 +recommonmark==0.5.0 +readthedocs-sphinx-ext<1.1 +sphinx-book-theme +sphinx_rtd_theme +sphinx_markdown_tables diff --git a/docs/readthedocs/source/_static/css/custom.css b/docs/readthedocs/source/_static/css/custom.css new file mode 100644 index 00000000..023bf856 --- /dev/null +++ b/docs/readthedocs/source/_static/css/custom.css @@ -0,0 +1,65 @@ +/*Extends the docstring signature box.*/ +.rst-content dl:not(.docutils) dt { + display: block; + padding: 10px; + word-wrap: break-word; + padding-right: 100px; +} +/*Lists in an admonition note do not have awkward whitespace below.*/ +.rst-content .admonition-note .section ul { + margin-bottom: 0px; +} +/*Properties become blue (classmethod, staticmethod, property)*/ +.rst-content dl dt em.property { + color: #2980b9; + text-transform: uppercase; +} + +.rst-content .section ol p, +.rst-content .section ul p { + margin-bottom: 0px; +} + +div.sphx-glr-bigcontainer { + display: inline-block; + width: 100%; +} + +td.tune-colab, +th.tune-colab { + border: 1px solid #dddddd; + text-align: left; + padding: 8px; +} + +/* Adjustment to Sphinx Book Theme */ +.table td { + /* Remove row spacing */ + padding: 0; +} + +table { + /* Force full width for all table */ + width: 136% !important; +} + +img.inline-figure { + /* Override the display: block for img */ + display: inherit !important; +} + +#version-warning-banner { + /* Make version warning clickable */ + z-index: 1; +} + +span.rst-current-version > span.fa.fa-book { + /* Move the book icon away from the top right + * corner of the version flyout menu */ + margin: 10px 0px 0px 5px; +} + +/* Adjustment to Version block */ +.rst-versions { + z-index: 1200 !important; +} diff --git a/docs/readthedocs/source/analytics_zoo_pytext.py b/docs/readthedocs/source/analytics_zoo_pytext.py new file mode 100644 index 00000000..8ab1deb3 --- /dev/null +++ b/docs/readthedocs/source/analytics_zoo_pytext.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python + +# +# Copyright 2018 Analytics Zoo Authors. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import re + + +def _process_docstring(app, what, name, obj, options, lines): + liter_re = re.compile(r'\s*```\s*$') + + liter_flag = False + + offset = 0 + for j in range(len(lines)): + i = j+offset + line = lines[i] + # first literal block line + if not liter_flag and liter_re.match(line): + liter_flag = True + lines.insert(i+1, '') + offset += 1 + lines[i] = '::' + # last literal block line + elif liter_flag and liter_re.match(line): + liter_flag = False + lines[i] = '' + # regular line within literal block + elif liter_flag: + line = ' ' + line + lines[i] = line + # regualr line + else: + lines[i] = line.lstrip() + + +def setup(app): + app.connect("autodoc-process-docstring", _process_docstring) diff --git a/docs/readthedocs/source/conf.py b/docs/readthedocs/source/conf.py new file mode 100644 index 00000000..7a17121b --- /dev/null +++ b/docs/readthedocs/source/conf.py @@ -0,0 +1,226 @@ +# -*- coding: utf-8 -*- +# +# Configuration file for the Sphinx documentation builder. +# +# This file does only contain a selection of the most common options. For a +# full list see the documentation: +# http://www.sphinx-doc.org/en/master/config + +# -- Path setup -------------------------------------------------------------- + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +# +import os +import sys +import glob +import shutil +import urllib + +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.insert(0, '.') +sys.path.insert(0, os.path.abspath('.')) +sys.path.insert(0, os.path.abspath("../../../pyzoo/")) + + +# -- Project information ----------------------------------------------------- +import sphinx_rtd_theme +html_theme = "sphinx_rtd_theme" +html_theme_path = [sphinx_rtd_theme.get_html_theme_path()] +#html_theme = "sphinx_book_theme" +html_theme_options = { + "repository_url": "https://github.com/intel-analytics/analytics-zoo", + "use_repository_button": True, + "use_issues_button": True, + "use_edit_page_button": True, + "path_to_docs": "doc/source", + "home_page_in_toc": True, +} + +# The suffix of source filenames. +from recommonmark.parser import CommonMarkParser +source_suffix = {'.rst': 'restructuredtext', + '.txt': 'markdown', + '.md': 'markdown',} + +master_doc = 'index' + +project = 'Analytics Zoo' +copyright = '2020, Analytics Zoo Authors' +author = 'Analytics Zoo Authors' + +# The short X.Y version +#version = '' +# The full version, including alpha/beta/rc tags +#from zoo import __version__ as version +#release = version + + +# -- General configuration --------------------------------------------------- + +# If your documentation needs a minimal Sphinx version, state it here. +# +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +#extensions = [ + # 'sphinx.ext.autodoc', +#] +extensions = [ + 'sphinx.ext.autodoc', + 'sphinx.ext.viewcode', + 'sphinx_click.ext', + 'sphinx-jsonschema', + 'sphinx.ext.napoleon', + 'sphinxemoji.sphinxemoji', + 'sphinx_copybutton', + 'sphinx.ext.mathjax', + 'recommonmark', + 'sphinx_markdown_tables' +] + + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# +# This is also used if you do content translation via gettext catalogs. +# Usually you set "language" from the command line for these cases. +language = None + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +# This pattern also affects html_static_path and html_extra_path. + +#exclude_patterns = [] + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +exclude_patterns = ['_build'] +#todo_include_todos = False + + +# -- Options for HTML output ------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +#html_theme = 'alabaster' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +# html_theme_options = {} + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# Custom sidebar templates, must be a dictionary that maps document namesan +# to template names. +# +# The default sidebars (for documents that don't match any pattern) are +# defined by theme itself. Builtin themes are using these templates by +# default: ``['localtoc.html', 'relations.html', 'sourcelink.html', +# 'searchbox.html']``. +# +# html_sidebars = {} + + +# -- Options for HTMLHelp output --------------------------------------------- + +# Output file base name for HTML help builder. +htmlhelp_basename = 'Analytics Zoo Documentation' + + +# -- Options for LaTeX output ------------------------------------------------ + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # + # 'papersize': 'letterpaper', + + # The font size ('10pt', '11pt' or '12pt'). + # + # 'pointsize': '10pt', + + # Additional stuff for the LaTeX preamble. + # + # 'preamble': '', + + # Latex figure (float) alignment + # + # 'figure_align': 'htbp', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + (master_doc, 'analytics-zoo.tex', 'analytics-zoo Documentation', + 'analytice-zoo', 'manual'), +] + + +# -- Options for manual page output ------------------------------------------ + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + (master_doc, 'analytics-zoo', 'analytics-zoo Documentation', + [author], 1) +] + + +# -- Options for Texinfo output ---------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + (master_doc, 'analytics-zoo', 'analytics-zoo Documentation', + author, 'analytics-zoo', 'One line description of project.', + 'Miscellaneous'), +] + + +# -- Options for Epub output ------------------------------------------------- + +# Bibliographic Dublin Core info. +epub_title = project + +# The unique identifier of the text. This can be a ISBN number +# or the project homepage. +# +# epub_identifier = '' + +# A unique identification for the text. +# +# epub_uid = '' + +# A list of files that should not be packed into the epub file. +epub_exclude_files = ['search.html'] + +autoclass_content = 'both' +autodoc_member_order = 'bysource' + +# app setup hook for AutoStructify +from recommonmark.transform import AutoStructify +def setup(app): + app.add_config_value('recommonmark_config', { + 'auto_toc_tree_section': 'Contents', + 'enable_math': False, + 'enable_inline_math': False, + 'enable_eval_rst': True, + 'enable_auto_doc_ref': True, + }, True) + app.add_transform(AutoStructify) diff --git a/docs/readthedocs/source/doc/Application/powered-by.md b/docs/readthedocs/source/doc/Application/powered-by.md new file mode 100644 index 00000000..3408ab2d --- /dev/null +++ b/docs/readthedocs/source/doc/Application/powered-by.md @@ -0,0 +1,70 @@ +# Powered By +--- + +* __Alibaba__ +
[Deploy Analytics Zoo in Aliyun EMR](https://partners-intl.aliyun.com/help/doc-detail/93155.htm) +
[Better Together: Privacy-Preserving Machine Learning](https://www.intel.com/content/www/us/en/artificial-intelligence/posts/alibaba-privacy-preserving-machine-learning.html) +* __Baosight__ +
[LSTM-Based Time Series Anomaly Detection Using Analytics Zoo for Apache Spark and BigDL at Baosight](https://software.intel.com/en-us/articles/lstm-based-time-series-anomaly-detection-using-analytics-zoo-for-apache-spark-and-bigdl) + * __Burger King__ +
[Context-Aware Fast Food Recommendation at Burger King with RayOnSpark](https://medium.com/riselab/context-aware-fast-food-recommendation-at-burger-king-with-rayonspark-2e7a6009dd2d) +
[How Intel and Burger King built an order recommendation system that preserves customer privacy](https://venturebeat.com/2021/04/06/how-intel-and-burger-king-built-an-order-recommendation-system-that-preserves-customer-privacy/) +* __CERN__ +
[Deep Learning Pipelines for High Energy Physics using Apache Spark with Distributed Keras on Analytics Zoo](https://databricks.com/session_eu19/deep-learning-pipelines-for-high-energy-physics-using-apache-spark-with-distributed-keras-on-analytics-zoo) +
[Topology classification at CERN's Large Hadron Collider using Analytics Zoo](https://db-blog.web.cern.ch/blog/luca-canali/machine-learning-pipelines-high-energy-physics-using-apache-spark-bigdl) +
[Deep Learning on Apache Spark at CERN's Large Hadron Collider with Intel Technologies](https://databricks.com/session/deep-learning-on-apache-spark-at-cerns-large-hadron-collider-with-intel-technologies) +* __China Telecom__ +
[Face Recognition Application and Practice Based on Intel Analytics Zoo: Part 1](https://mp.weixin.qq.com/s/FEiXoTDi-yy04PJ2Mlfl4A) (in Chinese) +
[Face Recognition Application and Practice Based on Intel Analytics Zoo: Part 2](https://mp.weixin.qq.com/s/VIyWRORTAVAAsC4v6Fi0xw) (in Chinese) +* __Cray__ +
[A deep learning approach for precipitation nowcasting with RNN using Analytics Zoo in Cray](https://conferences.oreilly.com/strata/strata-ny-2018/public/schedule/detail/69413) +* __Dell EMC__ +
[Build AI on PowerEdge with Domino Data Labs, Apache Spark and Analytics Zoo](https://community.emc.com/community/products/rs_for_ai/blog/2019/09/19/build-ai-on-poweredge-with-domino-data-labs-and-apache-spark) +
[AI-assisted Radiology Using Distributed Deep +Learning on Apache Spark and Analytics Zoo](https://www.dellemc.com/resources/en-us/asset/white-papers/solutions/h17686_hornet_wp.pdf) +
[Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest X-rays](https://databricks.com/session/using-deep-learning-on-apache-spark-to-diagnose-thoracic-pathology-from-chest-x-rays) +* __GoldWind__ +
[Intel big data analysis + AI platform helps GoldWind to build a new energy intelligent power prediction solution](https://www.intel.cn/content/www/cn/zh/analytics/artificial-intelligence/create-power-forecasting-solutions.html) +* __Inspur__ +
[Inspur End-to-End Smart Computing Solution with Intel Analytics Zoo](https://dpgresources.intel.com/asset-library/inspur-end-to-end-smart-computing-solution-with-intel-analytics-zoo/) +* __JD__ +
[Object Detection and Image Feature Extraction at JD.com](https://software.intel.com/en-us/articles/building-large-scale-image-feature-extraction-with-bigdl-at-jdcom) +* __MasterCard__ +
[Deep Learning with Analytic Zoo Optimizes Mastercard Recommender AI Service](https://software.intel.com/en-us/articles/deep-learning-with-analytic-zoo-optimizes-mastercard-recommender-ai-service) +* __Microsoft Azure__ +
[Use Analytics Zoo to Inject AI Into Customer Service Platforms on Microsoft Azure: Part 1]( https://software.intel.com/en-us/use-analytics-zoo-to-inject-ai-into-customer-service-platforms-on-microsoft-azure-part-1) +
[Use Analytics Zoo to Inject AI Into Customer Service Platforms on Microsoft Azure: Part 2](https://www.infoq.com/articles/analytics-zoo-qa-module/?from=timeline&isappinstalled=0) +* __Midea__ +
[Industrial Inspection Platform in Midea and KUKA: Using Distributed TensorFlow on Analytics Zoo](https://software.intel.com/en-us/articles/industrial-inspection-platform-in-midea-and-kuka-using-distributed-tensorflow-on-analytics) +
[Ability to add "eyes" and "brains" to smart manufacturing](https://www.intel.cn/content/www/cn/zh/analytics/artificial-intelligence/midea-case-study.html) (in Chinese) +* __MLSListings__ +
[Image Similarity-Based House Recommendations and Search](https://software.intel.com/content/www/us/en/develop/articles/using-bigdl-to-build-image-similarity-based-house-recommendations.html) +* __NeuSoft/BMW__ +
[Neusoft RealSight APM partners with Intel to create an application performance management platform with active defense capabilities](https://platform.neusoft.com/2020/01/17/xw-intel.html) (in Chinese) +* __NeuSoft/Mazda__ +
[JD, Neusoft and Intel Jointly Building Intelligent and Connected Vehicle Cloud for HaiMa(former Hainan Mazda)](https://www.neusoft.com/Products/Platforms/2472/4735110231.html) +
[JD, Neusoft and Intel Jointly Building Intelligent and Connected Vehicle Cloud for Hainan-Mazda](https://platform.neusoft.com/2020/06/11/jjfa-haimaqiche.html) (in Chinese) +* __Office Depot__ +
[Real-time Product Recommendations for Office Depot Using Apache Spark and Analytics Zoo on AWS](https://software.intel.com/en-us/articles/real-time-product-recommendations-for-office-depot-using-apache-spark-and-analytics-zoo-on) +
[Office Depot product recommender using Analytics Zoo on AWS](https://conferences.oreilly.com/strata/strata-ca/public/schedule/detail/73079) +* __SK Telecom__ +
[SK Telecom, Intel Build AI Pipeline to Improve Network Quality](https://networkbuilders.intel.com/solutionslibrary/sk-telecom-intel-build-ai-pipeline-to-improve-network-quality) +
[Vectorized Deep Learning Acceleration from Preprocessing to Inference and Training on Apache Spark in SK Telecom](https://databricks.com/session_na20/vectorized-deep-learning-acceleration-from-preprocessing-to-inference-and-training-on-apache-spark-in-sk-telecom) +
[Apache Spark AI Use Case in Telco: Network Quality Analysis and Prediction with Geospatial Visualization](https://databricks.com/session_eu19/apache-spark-ai-use-case-in-telco-network-quality-analysis-and-prediction-with-geospatial-visualization) + * __Talroo__ +
[Uses Analytics Zoo and AWS to Leverage Deep Learning for Job Recommendations](https://software.intel.com/en-us/articles/talroo-uses-analytics-zoo-and-aws-to-leverage-deep-learning-for-job-recommendations) +
[Job recommendations leveraging deep learning using Analytics Zoo on Apache Spark and BigDL](https://conferences.oreilly.com/strata/strata-ny-2018/public/schedule/detail/69113) +* __Telefonica__ +
[Running Analytics Zoo jobs on Telefónica Open Cloud’s MRS Service](https://medium.com/@fernando.delaiglesia/running-analytics-zoo-jobs-on-telef%C3%B3nica-open-clouds-mrs-service-2e64bc823c50) +* __Tencent__ +
[Analytics Zoo helps Tencent Cloud improve the performance of its intelligent titanium machine learning platform](https://www.intel.cn/content/www/cn/zh/service-providers/analytics-zoo-helps-tencent-cloud-improve-ti-ml-platform-performance.html) +
[Tencent* Cloud Leverages Analytics Zoo to Improve Performance of TI-ONE* ML Platform](https://software.intel.com/content/www/us/en/develop/articles/tencent-cloud-leverages-analytics-zoo-to-improve-performance-of-ti-one-ml-platform.html) +
[Enhance Tencent's TUSI Identity Practice with Intel Analytics Zoo](https://mp.weixin.qq.com/s?__biz=MzAwNzc5NzM5Mw==&mid=2651030944&idx=1&sn=d6e06c6e14a7355971953a501689b232&chksm=808f8a5eb7f80348fc8e88c4c9e415341bf43ef6bdf3fd4f3001da89e2c9ba7fa2ed5deeb09a&mpshare=1&scene=1&srcid=0412WxM3eWdsLLoO2TYJGWbS&pass_ticket=E6l%2FfOZNKjhr05lsU7inAVCi7mAy5LFEehvEJOS2ZGdHg6%2FH%2BeBQisHA9sfXDOoy#rd) (in Chinese) +* __UC Berkeley RISELab__ +
[RayOnSpark: Running Emerging AI Applications on Big Data Clusters with Ray and Analytics Zoo](https://medium.com/riselab/rayonspark-running-emerging-ai-applications-on-big-data-clusters-with-ray-and-analytics-zoo-923e0136ed6a) +
[Scalable AutoML for Time Series Prediction Using Ray and Analytics Zoo](https://medium.com/riselab/scalable-automl-for-time-series-prediction-using-ray-and-analytics-zoo-b79a6fd08139) +* __World Bank__ +
[Using Crowdsourced Images to Create Image Recognition Models with Analytics Zoo using BigDL](https://databricks.com/session/using-crowdsourced-images-to-create-image-recognition-models-with-bigdl) +* __Yunda__ +
[Intelligent transformation brings "quality change" to the express delivery industry](https://www.intel.cn/content/www/cn/zh/analytics/artificial-intelligence/yunda-brings-quality-change-to-the-express-delivery-industry.html) (in Chinese) + diff --git a/docs/readthedocs/source/doc/Application/presentations.md b/docs/readthedocs/source/doc/Application/presentations.md new file mode 100644 index 00000000..f0f053ce --- /dev/null +++ b/docs/readthedocs/source/doc/Application/presentations.md @@ -0,0 +1,77 @@ +# Presentations +--- + +**Tutorial:** + +- Analytics Zoo: Distributed TensorFlow and Keras on Apache Spark, [AI conference](https://conferences.oreilly.com/artificial-intelligence/ai-ca-2019/public/schedule/detail/77069), Sep 2019, San Jose ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Tutorial%20Analytics%20ZOO.pdf)) + +**Talks:** + +- Context-aware Fast Food Recommendation with Ray on Apache Spark at Burger King, [Data + AI Summit Europe 2020](https://databricks.com/session_eu20/context-aware-fast-food-recommendation-with-ray-on-apache-spark-at-burger-king), November 2020, ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/1118%20Context-aware%20Fast%20Food%20Recommendation%20with%20Ray%20on%20Apache%20Spark%20at%20Burger%20King.pdf)) + +- Cluster Serving: Distributed Model Inference using Apache Flink in Analytics Zoo, [Flink Forward 2020](https://www.flink-forward.org/global-2020/conference-program#cluster-serving--distributed-model-inference-using-apache-flink-in-analytics-zoo), October 2020, ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/1020%20Cluster%20Serving%20Distributed%20Model%20Inference%20using%20Apache%20Flink%20in%20Analytics%20Zoo%20.pdf)) + +- Project Zouwu: Scalable AutoML for Telco Time Series Analysis using Ray and Analytics Zoo, [Ray Summit Connect 2020](https://anyscale.com/blog/videos-and-slides-for-the-fourth-ray-summit-connect-august-12-2020/), August 2020, ([slides](https://anyscale.com/wp-content/uploads/2020/08/Ding-Ding-Connect-slides.pdf)) + +- Cluster Serving: Distributed Model Inference using Big Data Streaming in Analytics Zoo, [OpML 2020](https://www.usenix.org/conference/opml20/presentation/song), July 2020, ([slides](https://www.usenix.org/sites/default/files/conference/protected-files/opml20_talks_43_slides_song.pdf)) + +- Scalable AutoML for Time Series Forecasting using Ray, [OpML 2020](https://www.usenix.org/conference/opml20/presentation/huang), July 2020, ([slides](https://www.usenix.org/sites/default/files/conference/protected-files/opml20_talks_84_slides_huang.pdf)) + +- Scalable AutoML for Time Series Forecasting using Ray, [Spark + AI Summit 2020](https://databricks.com/session_na20/scalable-automl-for-time-series-forecasting-using-ray), June 2020, ([slides](https://www.slideshare.net/databricks/scalable-automl-for-time-series-forecasting-using-ray)) + +- Running Emerging AI Applications on Big Data Platforms with Ray On Apache Spark, [Spark + AI Summit 2020](https://databricks.com/session_na20/running-emerging-ai-applications-on-big-data-platforms-with-ray-on-apache-spark), June 2020, ([slides](https://www.slideshare.net/databricks/running-emerging-ai-applications-on-big-data-platforms-with-ray-on-apache-spark)) + +- Vectorized Deep Learning Acceleration from Preprocessing to Inference and Training on Apache Spark in SK Telecom, [Spark + AI Summit 2020](https://databricks.com/session_na20/vectorized-deep-learning-acceleration-from-preprocessing-to-inference-and-training-on-apache-spark-in-sk-telecom), June 2020, ([slides](https://www.slideshare.net/databricks/vectorized-deep-learning-acceleration-from-preprocessing-to-inference-and-training-on-apache-spark-in-sk-telecom?from_action=save)) + +- Architecture and practice of big data analysis and deep learning model inference using Analytics Zoo on Flink, [Flink Forward Asia 2019](https://developer.aliyun.com/special/ffa2019-conference?spm=a2c6h.13239638.0.0.21f27955PCNMUB#), Nov 2019, Beijing ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Architecture%20and%20practice%20of%20big%20data%20analysis%20and%20deep%20learning%20model%20inference%20using%20Analytics%20Zoo%20on%20Flink(FFA2019)%20.pdf)) + +- Data analysis + AI platform technology and case studies, [AICon BJ 2019](https://aicon.infoq.cn/2019/beijing/), Nov 2019, Beijing ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/AICON%20AZ%20Cluster%20Serving%20Beijing%20Qiyuan_v5.pdf)) + +- Architectural practices for building a unified big data AI application with Analytics-Zoo, [QCon SH 2019](https://qcon.infoq.cn/2019/shanghai/presentation/1921), Oct 2019, Shanghai ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Architectural%20practices%20for%20building%20a%20unified%20big%20data%20AI%20application%20with%20Analytics-Zoo.pdf)) + +- Building AI to play the FIFA video game using distributed TensorFlow, [TensorFlow World](https://conferences.oreilly.com/tensorflow/tf-ca/public/schedule/detail/78309), Oct 2019, Santa Clara ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Building%20AI%20to%20play%20the%20FIFA%20video%20game%20using%20distributed%20TensorFlow.pdf)) + +- Deep Learning Pipelines for High Energy Physics using Apache Spark with Distributed Keras on Analytics Zoo, [Spark+AI Summit](https://databricks.com/session_eu19/deep-learning-pipelines-for-high-energy-physics-using-apache-spark-with-distributed-keras-on-analytics-zoo), Oct 2019, Amsterdam ([slides](https://www.slideshare.net/databricks/deep-learning-pipelines-for-high-energy-physics-using-apache-spark-with-distributed-keras-on-analytics-zoo)) + +- Apache Spark AI Use Case in Telco: Network Quality Analysis and Prediction with Geospatial Visualization, [Spark+AI Summit](https://databricks.com/session_eu19/apache-spark-ai-use-case-in-telco-network-quality-analysis-and-prediction-with-geospatial-visualization), Oct 2019, Amsterdam ([slides](https://www.slideshare.net/databricks/apache-spark-ai-use-case-in-telco-network-quality-analysis-and-prediction-with-geospatial-visualization)) + +- LSTM-based time series anomaly detection using Analytics Zoo for Spark and BigDL, [Strata Data conference](https://conferences.oreilly.com/strata/strata-eu/public/schedule/detail/74077), May 2019, London ([slides](https://cdn.oreillystatic.com/en/assets/1/event/292/LSTM-based%20time%20series%20anomaly%20detection%20using%20Analytics%20Zoo%20for%20Spark%20and%20BigDL%20Presentation.pptx)) + +- Game Playing Using AI on Apache Spark, [Spark+AI Summit](https://databricks.com/session/game-playing-using-ai-on-apache-spark), April 2019, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/game-playing-using-ai-on-apache-spark.pdf)) + +- Using Deep Learning on Apache Spark to Diagnose Thoracic Pathology from Chest X-rays in DELL EMC, [Spark+AI Summit](https://databricks.com/session/using-deep-learning-on-apache-spark-to-diagnose-thoracic-pathology-from-chest-x-rays), April 2019, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Using%20Deep%20Learning%20on%20Apache%20Spark%20to%20diagnose%20thoracic%20pathology%20from%20.._.pdf)) + +- Leveraging NLP and Deep Learning for Document Recommendation in the Cloud, [Spark+AI Summit](https://databricks.com/session/leveraging-nlp-and-deep-learning-for-document-recommendations-in-the-cloud), April 2019, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Leveraging%20NLP%20and%20Deep%20Learning%20for%20Document%20Recommendation%20in%20the%20Cloud.pdf)) + +- Analytics Zoo: Distributed Tensorflow, Keras and BigDL in production on Apache Spark, [Strata Data conference](https://conferences.oreilly.com/strata/strata-ca/public/schedule/detail/72802), March 2019, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Analytics%20Zoo-Distributed%20Tensorflow%2C%20Keras%20and%20BigDL%20in%20production%20on%20Apache%20Spark.pdf)) + +- User-based real-time product recommendations leveraging deep learning using Analytics Zoo on Apache Spark in Office Depot, [Strata Data conference](https://conferences.oreilly.com/strata/strata-ca/public/schedule/detail/73079), March 2019, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/User-based%20real-time%20product%20recommendations%20leveraging%20deep%20learning%20using%20Analytics%20Zoo%20on%20Apache%20Spark%20and%20BigDL%20Presentation.pdf)) + +- Analytics Zoo: Unifying Big Data Analytics and AI for Apache Spark, [Shanghai Apache Spark + AI meetup](https://www.meetup.com/Shanghai-Apache-Spark-AI-Meetup/events/255788956/), Nov 2018, Shanghai ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Analytics%20Zoo-Unifying%20Big%20Data%20Analytics%20and%20AI%20for%20Apache%20Spark.pdf)) + +- Use Intel Analytics Zoo to build an intelligent QA Bot for Microsoft Azure, [Shanghai Apache Spark + AI meetup](https://www.meetup.com/Shanghai-Apache-Spark-AI-Meetup/events/255788956/), Nov 2018, Shanghai ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Use%20Intel%20Analytics%20Zoo%20to%20build%20an%20intelligent%20QA%20Bot%20for%20Microsoft%20Azure.pdf)) + +- A deep learning approach for precipitation nowcasting with RNN using Analytics Zoo in Cray, [Strata Data conference](https://conferences.oreilly.com/strata/strata-ny-2018/public/schedule/detail/69413), Sep 2018, New York ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/A%20deep%20learning%20approach%20for%20precipitation%20nowcasting%20with%20RNN%20using%20Analytics%20Zoo%20on%20BigDL.pdf)) + +- Job recommendations leveraging deep learning using Analytics Zoo on Apache Spark in Talroo, [Strata Data conference](https://conferences.oreilly.com/strata/strata-ny-2018/public/schedule/detail/69113), Sep 2018, New York ([slides](https://cdn.oreillystatic.com/en/assets/1/event/278/Job%20recommendations%20leveraging%20deep%20learning%20using%20Analytics%20Zoo%20on%20Apache%20Spark%20and%20BigDL%20Presentation.pdf)) + +- Accelerating Deep Learning Training with BigDL and Drizzle on Apache Spark, [Spark + AI Summit](https://databricks.com/session/accelerating-deep-learning-training-with-bigdl-and-drizzle-on-apache-spark), June 2018, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Accelerating%20deep%20learning%20on%20apache%20spark%20Using%20BigDL%20with%20coarse-grained%20scheduling.pdf)) + +- Using Crowdsourced Images to Create Image Recognition Models with Analytics Zoo in World Bank, [Spark + AI Summit](https://databricks.com/session/using-crowdsourced-images-to-create-image-recognition-models-with-bigdl), June 2018, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Using%20Crowdsourced%20Images%20to%20Create%20Image%20Recognition%20Models%20with%20Analytics%20Zoo%20using%20BigDL.pdf)) + +- Building Deep Reinforcement Learning Applications on Apache Spark with Analytics Zoo using BigDL, [Spark + AI Summit](https://databricks.com/session/building-deep-reinforcement-learning-applications-on-apache-spark-using-bigdl), June 2018, San Francisco ([slides](https://github.com/analytics-zoo/analytics-zoo.github.io/blob/master/presentations/Building%20Deep%20Reinforcement%20Learning%20Applications%20on%20Apache%20Spark%20with%20Analytics%20Zoo%20using%20BigDL.pdf)) + +- Using BigDL on Apache Spark to Improve the MLS Real Estate Search Experience at Scale, [Spark + AI Summit](https://databricks.com/session/using-bigdl-on-apache-spark-to-improve-the-mls-real-estate-search-experience-at-scale), June 2018, San Francisco + +- Analytics Zoo: Building Analytics and AI Pipeline for Apache Spark and BigDL, [Spark + AI Summit](https://databricks.com/session/analytics-zoo-building-analytics-and-ai-pipeline-for-apache-spark-and-bigdl), June 2018, San Francisco + +- Using Siamese CNNs for removing duplicate entries from real estate listing databases, [Strata Data conference](https://conferences.oreilly.com/strata/strata-eu-2018/public/schedule/detail/65518), May 2018, London ([slides](https://cdn.oreillystatic.com/en/assets/1/event/267/Using%20Siamese%20CNNs%20for%20removing%20duplicate%20entries%20from%20real%20estate%20listing%20databases%20Presentation.pdf)) + +- Classifying images on Spark in World Bank, [AI conference](https://conferences.oreilly.com/artificial-intelligence/ai-ny-2018/public/schedule/detail/64939), May 2018, New York ([slides](https://cdn.oreillystatic.com/en/assets/1/event/280/Classifying%20images%20in%20Spark%20Presentation.pdf)) + +- Improving user-merchant propensity modeling using neural collaborative filtering and wide and deep models on Spark BigDL in Mastercard, [Strata Data conference](https://conferences.oreilly.com/strata/strata-ca-2018/public/schedule/detail/63897), March 2018, San Jose ([slides](https://cdn.oreillystatic.com/en/assets/1/event/269/Improving%20user-merchant%20propensity%20modeling%20using%20neural%20collaborative%20filtering%20and%20wide%20and%20deep%20models%20on%20Spark%20BigDL%20at%20scale%20Presentation.pdf)) + +- Accelerating deep learning on Apache Spark using BigDL with coarse-grained scheduling, [Strata Data conference](https://conferences.oreilly.com/strata/strata-ca-2018/public/schedule/detail/63960), March 2018, San Jose ([slides](https://cdn.oreillystatic.com/en/assets/1/event/269/Accelerating%20deep%20learning%20on%20Apache%20Spark%20using%20BigDL%20with%20coarse-grained%20scheduling%20Presentation.pptx)) + +- Automatic 3D MRI knee damage classification with 3D CNN using BigDL on Spark in UCSF, [Strata Data conference](https://conferences.oreilly.com/strata/strata-ca-2018/public/schedule/detail/64023), March 2018, San Jose ([slides](https://cdn.oreillystatic.com/en/assets/1/event/269/Automatic%203D%20MRI%20knee%20damage%20classification%20with%203D%20CNN%20using%20BigDL%20on%20Spark%20Presentation.pdf)) + diff --git a/docs/readthedocs/source/doc/Chronos/Image/automl_hparams.png b/docs/readthedocs/source/doc/Chronos/Image/automl_hparams.png new file mode 100644 index 0000000000000000000000000000000000000000..a4f901f25d41e32d36657bad82ddf3e4a08bc50d GIT binary patch literal 158097 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ν+@6n%qW9@w}B04B6Iw;>*+J3oD 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%0Dfal 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

a?r;6+j=E~e1$q6CTIPbp$wccU|Ej!5zE1|b? z;fa*;kP?f+Kid$%Y1Lu)jV#k{ozOU4A%b`wVHh2apX6$ZkNebqUUz=!bv+P8QAxNR zRS@%75hq==XZ&E%{MS472he9oYVZZlut>N4HsRx5YJic3=yA@&mTSywgS0r8zSdya zwUESN)bsK!9=q(imUfI|kyEws;Jd<`3k2Q<$4$3M%R6!5d8P~qIu_NI*I}=ukdk(d z7{<)e0S=KyhVkr7`n$DRgm)mqUG-I>W2N%$>sg@RP19K?Apc z*H=nk**Dep0Td~1Ic)FQs&vYR!`c$i-z&1}mQ}p-iwHCl>+29OhI%W$$M{v<--|fZ zuNsqLG)~LMtH~s}UIDZB6v0(U7I*#YSus5FL$A2m)5P0T_Sjj=c#@K~<$v?G9Scf# zIDhV{C@*uqunM#%P|rdBuGp8HvO&x%G{Q;L8XP%R3H0}rBRdy$GDNNslOSfNeX_x! zd~G9;nf9@Zw;lnSRCF<6#8_ngbmLO_R|ieMsyT@tn39R<4roiDEnNpNTh<3X_CQ@_ zNryU{(xnMaVeUrodl3;`()>auYgrdjt^WIgv);R?`7%kM9uCrGP9e&aO-mw7Ik#-x zgSW;WYugNhu3vT%Rw0S+_x1iL(!V>A%YAiyf%}jMd@@=&Vcv9!t$UDaZPlr3`ZQ^E zA7Ww+<|zb4)5NMDQ4Z-7IlJBBI^Xfcg|8Q0nONY^B-Wevav5AOgln7G=2HE~TOSuR z{Khtj_Gw68CwaQ%?^HsM8a8W3vqVvCyD$f8K|z6Vg9{+1k0hJfN`&REEQCs&CW{=e z4oYiw&~G<+v$x)Y6n3rK14lIy!T~5&YF1B{^B4c-Q&Wr2x2)`VM=xD}B@8n;%@DKM z?~%FqSgQiPNe<}ZPY=Lq*#c+D#SF0jogFkQ$1MiUBTjJxUVRvny^}9eg;s>`>jv_( z)A<`eEEW=vUTr`~lHSzp^9gVJbANkYEJE22IT)e9;Y;uYyztB3>j*t~SEz2ooc!3& zTa_aL$SvR#jSzRDdr;#d-O|*JiT&(#pQu_Qsx>WspPppS8Kb;!}(y%+i_2Z@U z!sSuwi9h5yfWPVDuOs(WO`eMdjkwc6f|Cuo+SOTd%eM3I#ei6Yh3`twPP9u&Puxw} zr<+(1-NSk5fSrjS#RFrV^nf|{hSWF4%^SzvnhVBM(v8MIOTW9$SKxaDk7r6oq#hpHlg=H z%G4aQ$O5H(SHOAw-B`4@aa-9}6Cwwffs98+qkz6Db@qrV?ApPDJDul~<8Q58-tEE_+Yi^VI3g zW#LzchDxXq2IQPQ{I(NS8dfkYA~K|6Yc?;Bf(TnSY5nE!463-jy%qA+PteO5 z(Z8UO+wFhk<%M}>TT-&HoT|}t?^}=ejB>M9Z+58`D;%tNI1Tp%jTAwl_=1o{Ew&`E=*cB&TH?qakm2`#!B=}EaGlBbce#9uR%n5Tim9h1{7=# zQClx|Z`SE_u-7>~D#g`!PiRgF(NYavn0#-h6Q z(S+^kdOZ9TNrJzf-~E>8$+*v7IWmGl{gYQ)K4HHNzD!U)TCz)Yemy-~MOifl3Z+V( z>HeAVB()p{GqjDJZmJkw6Je{|pjW@MvL_CsN82USAtpO`{#2j|zxqzp0LEb3VQqkz zSBJGO2LoJfYdCZ7_j|A$te(KehGc&o7~SjxQUhLxJflhIsa2zi2X`5x&%Ibgic%EL z7D4qOdzF|-7mz4v8WAg!kLoSOU%{}dk=|CJUoiYBKR`^gzAem4a zCq6JU#X{6`H7t#rt(>kuqGcW%A>JWor8^qFc3~6Fyx(USVC<6|-roNIw5xv?@2-)f z;!cqn!61Xda|Q9241s(JC}@MvAfkujL<~6AF05A87h;3aX+N}vZmjgQ&DE8nh4zpX zcarIHF8um6kUiS9zn+w-t*x!|q$29Wln^nNUPNEA&bBc9=QZmoD^M!rvIXa)>VrOZ z3F%H|(nML)DM!*<0Cjx@>$u&(DR+_rw3E~WN<_Ses;C}QM&yR&zhi0$?6(F@QP=+H z=B>Y9vSpq zd<_h_Fn`7REL4mGU75rqLri5fiu=4o`#+_ib_EDYNJvBsU}HQ@RX-dpTp$bsB8?T{ z&xu%%5WGhAbQ-n~&ZmqVxY#<*W|qqNjI~YJpFd6oP!(9~NLnL|OBBk;Yd6yaFlEx` zl3{w$zM#!s&$V#iA{js7;hh9N78nbn|Ei+Svc|DgkyrF#o|*c@Mjo1OSz~KMfWuM= z%|KXQS3hA|k&24;I<|;U^Lqn=|JcpAc-6zzB8rq(4!=iO!{&WgwaTG%P7z;-eyL@9 zEWPFLF?yu5hO$nZ#z3-Vu+&?Ci+t6VR$XVS%+TyGVWZx%YN}r4K{>2-|8ZF59NMGF zh4IOKQ|Mto2>NDwGj)w1W~Af!&Y&c_7mMPlBS`wx(v-hPn$11*ytcI6^4je87l6WX zoWAHp!vv!5#_i?~1fPCZ#ckn9@vgpAnNf)hFYA}>oKheutVhu|cK}UI5z6*ak-|+AaWd&6@+yxhQzdzGH>MW^hl9PBY z0%ZVN(x_(pzrVQ`A~ON(R=ZY3@4P?@5f#cLCO?LWcd>vQdVw&3>5;)tmNJqJDL4}( z5?>Ryse`?q!newSVcXguwn*_NFUUlLC&wyD&F@K1L+o%d^+(F#>5e9bUrA~EC?`K= zvgaaQ()6LHW?)TEOvYu4AAnJQXBI+sH#ASuoqG!G=1>89RedfH&pmV3`UCX(V{ZIs z_tz`fP4nk`WPVT$Xon{uerb7We*ye-ey6%-4ALeICkiL&GtU|&5g`;kKi$U%=2U#k z45ZD|qE0gW;I$MQ|HcYzKe`;4b=*vKGH7r-S&Z#2!0rO>pVB3trmJ~M6`B(UxUeae zhvOKbUIdxUg-9CIZ4cJiKzcfmk3MISup{=SdiN_4I^D@l+S&zTiY{I(qJf5=w#|`l zvl+kpjK0-N=5(_{8qtd1C^=hhKBc7ic;XxvHhB!^Q`Hh-shCKTn|rV+r@nO4L5x9! zv(q8A?G2grG^FA5A}Z3UFoo+*^P0TIH~=HgqQeHb&^BXj=kQMDy#PLNn6b4YSuAF@ z%Z6VI#&`|;vYJjS1M!%Sj*f`vXgz@1umOX6;P~=351#$}^-I4Vpu%^<#CQ>uDHj{g zxs^m^=|&H1+;ukL9t?_g%s9G@Hmp_N#&nr9bK7WDqI#JJA7jvLw{1A_ zlpA9WC!7a$1X>NW$KM#7+km=7(>X{GKB~5kxc+8RPVPY6LjOfvpY}e&d6Oe)e=zQW z3E0JD^y=`FFn@?dsn%hIGiV7um@mQE6|TE;+i1GQg}XYgSy;x|!a!daFkoEbR}E4V z>Q4rCpNlG?iAeJ69d+Wuo4fhnG|E{@|N13}lILoRkWhjb&sBIDR-bpPN8KNmt$IYS zBCqa!uSmY4W{GRFcH9yoX!qm#P^U?6*^cQOQ((n&#ewPkTuPj1 zCAM~t)D(9@1KnpCX=rtiza4mRQ9=weJ5EG}NcqG=yVi>IiuwmSYu0#h^JoMmHP8Up zekZO4fU}P|uM0(UJGP6}8PQsC?UzT_4?ShU-O^NsTJAtWZQ)%O$pX@$${ zzrRYiA_q`z$toWrj0lYkzp*Rj^DYq~+DWQLIHWHXnP1mRzf6HH(|S%1c+V70ALUn! z#tsK^YNvBo1C#1I7W46 zDcEEvHqu6PWrTGLR8$Zh^)~^9#!?d_Qz$-Tih@ISaGi3!!d7K5;@a=LSJQqKm#>44;LeSfb6<&jK46R_#Qv(4x?*U#FIlIEkVS-qlxl0!+{Uko~{GjpUN z*Q!`@*{99@bMm&V1yKv%a!6wwQ`fFnm*G_om1&&wmGSAb6f|jtyf$e53PON``*4_Y zf65LNHV>`k03uO0n<#L!KV5A&Giag4I{$fhGXpCghVIrDs=6PgSZxI4Pu`o69N4~w z{^hX$Mt+VKB4tEpnA-pJr6M;M=2M3Z&7pfUMOiIJ_6(Joxga?8+7>3Xi)h4|f>W_F zJVxrx(~v_KUw%#tHi7@!RV7<3dkz#jtrNDEg<7n`DKyN3JzTy>#3iVhHk?uVp-B}< zAf^1*PE+ar^frf0@YAdJ)m0rW?&LwK_ox+gd?S5cKN$}tLBlt^*lhIR)@Em?-12lS zYAbVBg6XZ=wemcd2OXu$cjWEERO+~@{;_L&WsJp6PDqe6lH}p@Y3}WCE5aGeJIrKT zhjf1Zi*>PuGA4Up62Y@p{!l^Po}2Bgv$y2I9j?GDXy|rM`Q*{X^RPSxRFwiXrQpPv zHBaxDb)cHSdN$>n!7tRlRrosjMSG-erhk&x?K%HVUs7-(Z)Q|#M>9AKvTRyB&yNH}fH1|e1Ncac` z1p{*~<9g5A}xGOcA(WSE-@YwI^~Uz&bk9E9}eO;^0-J+#y8}rYgQN*sDat4u{#^9RjThhg-=R%LnBU z>Eel2A=G7{v~4;N8{ zlV7vS9$6}o1tk}eIO8sT${F}|9kc7S?7W?f5>ZjH6tadNE=@G5Zb|Al0F-wH>dI1N zTlI-a*)}(3SbN5VQhHOi_fvd5XDb88_%m5pc$m{Wv z%OT!S`7z$iz)GV6I-)BRVS*BqGLq}G^D4f4hERF zZB@`Q9%pcm1r6^V>HGUd%^wJqY249qEiD8rF&uB}soE6*;FfP2a@@8*YOj!9oRd~f zt92yz5dwhmWEe9T)t-38SH9buWgT}_{nPC zy_ynNwg(RbeHH4|n&Or{4-ZmibjNLDcbcHutMuGlEn%Oao$+B!-Y=GFwJ9~R=Lxdv z`q-K|7y9DbIXC*g)PCdr1}OP155Hxqaxhfj3y*rE+dp2qz-hzP&D9GRd=ss25JRA8 zJERc1%KeoAY)R(VzCMkSRk_un;T@Yz%e^vvY<;}8)o$E-L|OkX?Q}X{wtRx3di?m_ zT-qb_N(qvF-f@`c;t7S_3X5)gaCszwV!Ltq5tQ-lif5xP(rTDdo4eBFQB%lQ zMpxK94TFJXxvTZ>mZPm4;6eY9JF6c_|Li$XfMbm~%ZeBpgP9lQX;80|F!KZFZ`EP~ zB+3tra}mk)>RVDy(L(5@V>GyZy77KOo}+tQq9nDfu~Si|>=wsiDbb&o)TAdwU4;Om z;6{1q0Izv$$rbx}l=+ON^W&E3`q|i3bp!iZQuk&PK@+_qM9(5M#j476YcHW`Q+ckC z`|L?&>Xk9bMw;xuk7In&y9e(?eeGrO3d;j#w{r92L&1{bzP^axlPT+8_ILA{z2rnX zJ3BczQ8#Q*HinO#=Q$_zHF=;1Nn^OMa8&GkPHK zt^c!h%huL{GZgC=Bh5y9{Sls3AY{y(^9Z}^s1ev;ua#C?V&YU3Wi zVMiFZEB&H@{2jg7e;@XWQkBze(Oq*0X24mUlYoZAXtx)z0rsSrxJyA=4II~Iqa7Bo zCW0h77QqdgnA0H=pZ2Y%max@ZGheft(f5ST_n-8p*fd$Ey@n5$*RhpkC5|kNh*I&% zX;S6oW!RR}ucFGNE`Bp^&EV?Dp&E5g3qb%)?T#f$GA>N!1UD}>&k3-~{?vohi6G-h z|2o**|J1Y}{J8TiXaz$Fe!J{3hSR8i18;!OWANb;r%ZzxzSz+ts0Q2$+TM%9@-2aG zbBW%o;aGLcDHA7(&!`HRVfEs&DRt1u@3EE9ES|bGO1XO{;He0$N}x(pQh3*1`}KLB zy=(c9zUV`{%m466{rsFk2T^QddoT1S)4g>!x`+WXEDJWme)Uj_R;kSp;Y+J(wO z_1a|2nb{-26&7(Vj6z*?k|0TNZRor^)d9TQ{0W}{dY%n2Df!2Y8V01rO%d4e_gzuc z+kkJ((Bll-V*Y{k3S@vpplw%YL&hK*9QK;){h-tvF7%ymR{NiJCMHa({lV#5kMX^Y zwZF!+7j$7{S~VbB=$GEQa(`HjtCxTs^LmlvH$BR96l^KE;2Zc^OGmfx*IK^1oRaVpDvnYYa>-DJ)R=BOlpLTYy26ajWCrIP@W+eR6-b0T>9_XfDGt9Hpon)1 z#R^THNsbOJ0!)C9H1VSg{wH^u2PH>sKwJwY{?0^{8(+%klB)Wo3kKWzwuMW*vJkG; zg1$qpQT*g7h1jjW6j`l3$ofQ#@ya4t&{~MmrGmC|G>{Nl1FjL|6t7xWhX|E@$-wo2eucQ{~UrgcstV1_F4BbYYP<NLzUTI zXQpRjOcnD|OmvsE=Sb;690{9q@cIEtKYw(;A5+27E{KQ?6 z_Nq?PvkRp|d=?*l_%JND31~Yw2}HTNGvT*IblpvcPE?@Y{I zzuA$FmJ7i6l&?~BL9~dac2!I~XJ^8M)uu%83N?f)+e$Sf!nU$vc>w35ds(hz?Ij7YBJ9DwN0wO* zhN^C!ky-MBE*DXj9rXe}bSs+|4ufK59p+;W4_jr`zxRSdT$*XB@Es3IyKJ?mZg#9b zDhfwyA4h!X?2aa;FUS3Yg%4`%E)2Z>~sH=aTPMVj24xdmdk-uy|b=O zE0+ss2Dwu{!JXDP{>6(QREuOWT!9xc+Ku-yEg6Z&u14R^nb8xwE`g(JrSqEeVv zOnY?1#6nrg910o8FHau9e?E7xzRX@)76Tx)CJz8N*E$w=JT~_^-(Uj(uGQBVM7Rt< z7`Rd6UXlJmiCNJc{3ZTDcQhjT$9Od6;8Mfu*0^)Hr~N3U(-&9Eb*yI)Qe>t!j_$28 zhIKxcP+Zwlf~x=r=E5!T*ab@+OgE?Jxt!Z?Xxf&yd0DZI=O%kCxR#0zvD^AFcfOZS ze#cUPg=Ux6gmC(rMa;0Ot$HW1EhMGrX9y>ikzrgRG zXl&&Gt9=FTai6x)@8vN+$ zt2DqC@>-4EMyqK7=27R+yS5u0cZ`h(|u!ybc*VqrGan(~daq6e&$snwEfM#OZ!&~m~uo{QQPEfrL zq$EoM%2p$-Oo231lRWn{Z^Y1zgdNmY_oU7jGuEpf1wzhrkbYp7kp#VnV>iVh)h9;} zG#ByxQMn=Ki-R4rauP-&L5}I-y`{)2hYNYO4DQ_58t-m*xRShvHBNVwF#@mXuQT0; zrK*~n-xZIP3h!rXwR=F^W=ft%uXnxa-7#v^wtw?I!dJD_!I=}7iQI1!?I;uY4gb`$ z>)J}^F8#oJNjnW$^?oUieQ1<$wKO_B5S3HIFfqr=GqM0%f5JK2Q;kqC|0FH~zc!G7 zqQvDuX4=zRR6$f*gC;UpK9D#klbK9S$BH`JwV4ON3_t7QoK@T6mzI+hS3tj8=OG_R z&i|FVO*1*Hl9L>@oo{*Ad9Mu}qZ=79&uk((IWHVF8!M&ozp2q#nGgM8HeX&Qf)L=a zduf8q$oQ{a>)}vxWkGbXfJn~Fn$KEvd@L>2Xy-^+^bfOrT-kqb*dYX8nu$%!@by4c zVxnt%pw&123~$Fw!aW96=BRHYQf*4EY%BfH$1DElOTYiPNVoPmUy8(Z!g9(5Jcg1N zN2$gQvGHK-s7C8ou1qa*rc5lr(k5)!=yalEK8~EYuzKB91SIUFyR= z0-8?GXJ*FyCmW;&rOn%YR_zgC+UvOsPb!NtuNCX+JFzz4(&HBYW(F6YILV{sfECuCdQ}(fvk+@VCRe*p-agPZp~U*Lud@3m zfMHXjydXxKjW6PQSW)L-0I{33SmRY03+@a-xUc(I?-D8zu`2KCsXO?m{R#zBhwe{n z7JMx0Krv}4ENf{d9n^?)b62M}Dn0snzjk_uG^Zo<=$2N*&C(Kq%}NQG#~tFyC1#|{ zTDOqy!e#Keh^5L^dW+8b=5dhi6b}P|f~P8Rzswl~fkL$k;kM8_qVf>A0#P*Blu0W* zK0n`BY&z~|WKi9Pd?#r(F&876%)5M!52-;Xbs*fJFKu3NAYYROM;a{G%&2m`35z0x z!1kB`QZqOLZl5qxZLmDk748?&opO+`@pe#vbel}^duvsdNZFzR+P-Zzbyp8(goPLg zN~s38sD{4O4`Qv%O*SxWYZg2?T=>g*C|$USBQ7BO9`)2&>@~WvdL8|%RA};VUft5y zWZ#xj-V9FN^rbirk~#LQXKI|@d|fwY?x5`8}_>{d}dLO9d>(U#fg=0Ll!o z$?MEF0W<0V&NaB)mzIxzK_mecY>9Xy{LeoWmnv32av2Q*dY}Kz6toiDnPsN62q}3k z_jJ?)FZw_E`c-v`fD%nO+l^)2#&mK#{KN;Up2L-T1FS=#@!Z`z!10)6GytrQ z!)7DEiWqmP76WCTjb!^9gX;L&SbWrvG^ly&c_o7Nd-$a`e%f2)<-0A^ho==p+RxNXhjLyfwNEs-a#Lx$;m>zG=Xd-5 z~Hfbk5a#q`G2dhdbTF2ZXzPoHBMs`528?N{%piP_?4NZ_>m{NkLGzJ#)Zd zC$R}b6>FeaXqG*=C(TC%A)tZ0UF3Fwg5}F@n6Z7CZoDu?qwdVQ{?koq9Oi!$C7(iVjW)zg#>I>?8ejtX6Vf z>WAQ=IOl7Kql#8l%g6XUq+2=?Knvtrq%SFvdzZQ(>Fk_o?~# zPKhK}k{`@Lt{KhbNuLkx9a@1DQ$Sx>zcEHx?!p9)+J|;p;>I&{Q;dUG6f2}fvLyMV&2m>zU7uY-3seIEC>b>c~w3p4(ud7e0>(i*c8bX&W?p!wTqrZ-Uo z#CYJ;rV_1L|A<*OZL8*r+XahTO-ih6UU|JoV=myV2j5aVR8I1}e4uF7kLoIJI=ip{ znpfKCs=+a^fHtZuo;vc6)a^k_M5}m70*pvpp z4H1rR=>-oJb#jm6>rEaBp^jm1at!8)94w+lcH4hA2!lkO%@|w4&4gIY6~2GK!ATtl z=Zh9DaJ2{pn0+%RH#-Iq|B8(%$(MGkGyCdU8lpB*Q5{}1eMQA<$6D;+0WL*T>aOEz z&=4gv>o)>gWfknUL5dlPatp^B8J0%p?6y)|Uf!AK54r6__2#e}&?z5Kf_mKF__Dh|Bxtd<9W7t%WnB z9TBrEv*$pbNIj5Wou+I^rWlXuY$u_jf(hGa?;jwT@bh+_r6r6Y*Lh0ps!P^TXpOtnAW%Cpvc|+{f@Tc zS_@Qw31X%3_Wg!M8W%)dwTi*F7kCrNx`!v2m#fEgHJjykpTBp!3Tc#I-b`&g{d9X` zYsDt`;Y?W4S)UthPv}$`F1Q%01IV0c5Io>%=>%uk<;SC5NdfZUc>TT@Pw}S+nj;#l>?C5y-chaN3g0Ft=5IS&~8-?Qvg182(Yo zLFdbYHXisPey)HoZ|)&xd4YZ>zWe}3$Y3lh1Rwhx%X||K6XE*Gpr}@K_*1{DGGyw4 za3-hPB=L?Oh{C)_z!vlw#*E>oChZO_DfeW!uoCsIL;Mhpx>|TA%rRD)KWm#*9{d(w z*)ncaj=6kD5^nwTJkSk01Kse`bj>O*tfi{wyT@aD;mrA)VLOM`_V?)o#{#n(a=;La zm{^}9@w?7<-#uB*)1#kSxcs8Ym37X#NS3@1CI?5Tm+1*+&stsvK0CZ5bjDXw7S-=_RzNH_4M|x|M7*O`%B-* zA*XSCN{RR%2hyc)1%jKB;2hy_n+4OtP{SwhPQOnHk5PeT{9cx1mFs8g-8su?gMNIK zygWSL^R#O<_*EwUv|NsI_j8w4w|`{942W*B4s*?Ju1m4#RdNvM!HiVFW~q1@aZBR63rdh7GZ>Cgul*?5XL zIItiDpM1N!Arvap2?c}~ibA7NWCD7cY$g^6y^JitFBBty2dy|XeJOaYk-m}jklfm&c0ga@5DgnX^p+D za=s-gEkihrGTMlZBU`e+dpkrs4sC#WIeG#_~yADz+P;IrLBp#UVS~p z`sn?hMw4vbN{wIP=*KW^6@8@RVZbStZCe9pfF=yhO zNW|Q4l2uOSwCJN)Z;0~qb*>EZK@d67=Et~#nV6Fawny0DQ`4~EU1jFagSd=x8uUUFzOASm2WsN-Y{vb14x;#?0OI4;(3j(G7$Al?$7xQz zprhg6!0!e9Se|+JgHB~p`84;s;@-sl0N0_l4O$D<58OtEqUDYf^INZj0IJdm%ZTd&Y2WB43=te1-Ap za+rjq&#(HYe04-ro33qZ68C9L)~1VxCy(}GdT2*b;#zJ9$}pcom@Kg*BYg?nWpu)N z?VcSCmrB%_0o7TcN;~}~)w!|a35E37s&Fz{!iH@x>9VWRvy-pvT+H%fP*C3)D$$cW2k zB)iQB>nxPE)4bu`O=Cx7I99%yA>r8LsMAP$kJ)d<WH!%U{a%m zp^dxF0nv}!h%xA6gr}6W#Dn!g)>Z+>H8G|f$LyXFqtVVerzR(7_!aA;$pX8cCfX!Gnht(V zCgAS!{bNGJHP&btHHM@L@GJFzd9#jpEgbJN#NH%6_d{0;WN;7jz<^{}C|l&n0`p>C zb+$3o^@50pOergqM6IBKdOx8A3q~ViR#h9pr-j_>Zn)Dv4V?tLowHttfVmYPql?$>XFXI8)B2y~qL?w1Aohh@so=&AXs2Q+I>w zud-~^oV;paLA4Dq;M&dUdJ}Ii(uJ2RcnyMQ6iY-Jp+nH6UdO$`oY$?dY`{#yYHL2o znr)%Ln@H$8^4|x?B%6vGfNkY%#QC{YQ;4OKdLV>ccJ;82q(y@X2Fw&U ziLiF*A>*$oNAK=TgE%l5U@Kme8}ZMD`z8eOkGU&F=^7%Cz{AelZdX#LkX;N&dx`D0 z=s(eh8TTDOiBlTYSg0KK3ziy;rm#wev_(cn$}B#FsqE6w)Axtdw^Mu+YDdFv%pA`9 zxmS8)-MH90R6N~M{nJo?{w_kJ9Px|c{3!P+PwSf{Q#T-17PSRv9Yt0FYM0`=PB2&? zC?+k;bVw03P9h#(J2Jpg`y;5`fh;0HUoxlqH>^5sg+hEVH zgzKZ~JF+%Q=fI}vIM;iTO0%(=2yKx5m05S_-gM`M$kpy_7JoUKr|tb7_pfr^S2StG z@miAiyr~8~9>&W<-Qa7|z)7Sz{)M2h4v*Yx^i=Tqf}0jV?#HcrwuRO>)q#2hUFvq2 zvK@7#ep)m<&EB51j@mOPOKB+O7dYgF9S0UH99nDDq1vU$2SOIw0|a9RlZt)0!m4~T_P|H^{LkO_FwGv=Vc)U>SAG9ErX2=!5#G~zAgbWKiUrGy1^t%LTyhT%<&5>ed7Q)GFE6tLPdz2sU zM+eTwN)W_E4nKeJ#d$NdJE9=@=QE(D`X*rVe|%_(x57WgiyjLL`o3juDtRc}0Yr5Fk-m5mWum;P;ps6XPYQ&-8y5D$ccd4^O zS6xSVvz0oh7vH7MExyxNYT@@Q0uG0U$*{1nz2}k0?H*uVt&1fZh#}%zgL}#VMyiBa z>PhI-(_$XJA=+C~*Y2<#9bS(RwbGzvEvyU5`uJ_y1VJR&85z!UAQFD z0Nntw!tEM;-^i&Dciq|0Z?0Br6xqMusNP`#Yu)kOps01;8*1qX?xjJj6m~L0BW?zb z8Co^k@z2j}S>wk7Y+BV>UEzdil)66n@{MjbnXzDTA#%#G!L!QcMdy%Mm z__GH!`qsuWd#`r@FFEGF<}4mE_fL>0ZxR}@fPDJ1Cxux(=Y)9-=LkGULfY2Ui|3~X z)|;{F;BF-RI(Yz;j7v|I$42!9Bz6H8#I@2b0}k_L6u|c3n&>N3`Ppz58X%XUK4u%& zU)lWo$`z^n4+RtO=J@oz=e?_02j%QP-H%BT$OQqMl<1h9U+5f{dECPWGU$PaeV8-? zA)qag&Ew}>$RgrQ6mV?w_jzL+)wC99+oc*m?9v>iHA3Dj@&Rn1H@a(GM-2impiEIx zRqZqOL*FP$Y@fqGlg;bwd|)av!pY6b8UJR71>tmC6KI1^8IpzOo3Lxa=jv5R(;s^K zq8oF}cHA6j5x&muX76d#5NPS(3(TrQ3M(1T)_mL3_EHn_aH`}YR#!3;a%DB?ii7e`9>&iFmJ@_#p>mJ)H5u;ps zDoEPLSh>1&AG#Df9hidB=so#@%;RsnM_PLx-qc(xb0Ie!WnY0I==e>~tchoU{yy>C zX&Sx4{X*rd*s!zN@2h1WsDfOD!`QvKy45?zBWI5=U}Yos_`GubWjEf$+me^d=ySIH zC|%vis{e%gg6BL=IA3|xLoF49n!zMjYbfeDrG)}b9>v03c6db~{PCP83-;gbkpw`u z^Gd{l)o+7-63!lfW_cd|j;kGDA4PX&HW{kO_KYI-$rhWvh0$g|@4OL3A3-6a5JM8?Sd$~r7 zdEy!SabvD|<}n^cA#DwiKRuTH&Twb*Zbta5w!5@Ne~p})zVXnZ+rxgL?VE2RSQ@5} zhPhWLEbK`ddH;miC?&E#C?96@Ox1B#X6xVjakuedUL@8Vj z+>mqf&S)HfEuNK&Oab{0Tc4QHN@b$9oA?s0HhpC#%c`QQ$EK^RMOgC%-#I?t)%Z93 z(3FY_|Gam1e;^P;ZhBW+jax-8ye>U>=*PycYbiee0W=Bb}fvC;FDQG82CUV`23&c>5pDZdcZ(!YiUYcTs-0MsTXj10(SsiC+4?r-(vn*o<^P6 z)93Q^`a`TPCr6ktWEoc1v1wO}oEGEPw$JsAdGcpmB1wZGc2nkg(q*J1mtNAfl2`s;Eg6u`P zkXYD;?>YFAb#%i2Y3z*>*w0R;cMRT4czpboX7q(> z@R945be=sOE=ek4q@91o z>cjPtgo)YBzfsbCNJvh_U^viPIjF3KL*Km{=M@+Fs$|RMt*DlR)nvWOC%Q$T(?`ie zt6tMn9TDTAs^eK7@~~+wvb_v+n^8es$0`-yDSOyOKG?a3iR1M&XGBCsqVF29(0JS1 z6#D$dlx>D5!BRJB|9QbaB$_=y!C;FW-JSU5r6A--yNo&?=NPrOVpF_)kOE8lnjb7) z|9RZfio|eS4#sI&+A)L!3Xhy=puz8t?r-YO_yD z4sEvN-Y4ai(O-IQu-S1p!ygKI2@##%FVvf-dqvm7W9^qng(+&r)!V@U)6Cg7tjZ>R z9$N2XIvcSN3@EB(%@|(#>znT}19v~^d1xYom^7h3KG6*h+vYAK` z7&;MA^vrK7I-6|s`J^e;>5=0{Qjn-Hm-0-lApQY;>^W7OTU^-r_F9xp$tc0pPQd;f@f*j-<$1shEg?}IU$aKgK*p67MY050S&7+? zGJkqtb|!kRF$ZP3S-42%@7L>fmpHE*&WmJ~!!G+k2qOCh@6b98?Ad2H&Qt#2U(ej4 z_y%Y@2}*>FjcDuGy-?D$T~A3UJUA**u+FMLdGH;7B|;Syw~Dn9V>|xg<&8A_^m|8* z>j3jaaMB-^76kQOyThh&ZdC2FHCD26L`Tq%jfKihp{?k7-?Phm@ZDvDl7%Ei)slCP zm~9X?#~TgAygpvO;Fcam-}G^ENa)I}OX3r&t$rif!BcV-ZOE2;R@aA1ZW`!yws=*T>v1&R(+hY4}up;fw3% zGFQJ0Dojn0?xbI{0uUZtJ2mBhlq~*pT!AT}3XeJQ8^wYyL76pJ~@fczS+T$>cgXQ55C+ zm4A|O)i!pyz@;_4Jgq#feC_#0N<)yS{@nADhg8CViqb(efZfZE6xpU+7NGlS9p*NM zIJPzDO9XV9Ia;Rxlmyn=HJw#j)Oum0`W_WN%Kr)TJ zKdGeq`aO|3QhAK-@NXD8b!)%CrhT@IfLvq2`*hkU$@ktA8iziux4Iul4k#z!iPSTw z$6~vRIt~fH!!-A8QfX8|4?ZbqsrKR0$VQ%?-cP+JdCm{zY!{vvh@#cHNX|koG4Srv5@B&ko^KkpgWTmEMKg`-d_mx({tZ3rQ1KM&goZS=z5ss(UFb*WW_VGl9N8+( zfJNaolFY^kk2*q>v9ZI&>En^Nm8B6-uJ)1;Y1JRNJ`>K}V6f%$I}xQ-##8xc9u%K0e@G@e1m7 z7nsZy))yv@I%Z_sgLoY(%EL$NohF(K5UPz2n}gWK+RJIDylcc)f7c(dT&uFkdAssn zC(eN9e<|j8?o*d#w?CO3bVq>GP^Tb~S#tf{CWngI>*L%MC3^6S+Qj>dO?7b4E29hA zhhelRdL3mOLvLUn)8;>2@tVA*2g%0;-puF5M=lLH>L!?zZ>Jw*Mc`c1%w~sN+VEBQ zAFj7F@tsVT)Nd-6^Tx?93sT>Ja?j#Wuk<`fpIJ+i@K=*08$B{a61`pG+HX|SYL@X3 zURRSLd+_a4=_N60)n4mpbwbKAzbJ?1hsVm)gSb+o~Tp_`COn5qdS~i`ZBsN+FdT~8E z{o2HB@q4(3m3nKsL}H+AtKyCVF|{d-=Jjt%(qf=WCV~xoLu#0!&~nQ6g_A%zH0@UY zP~pZsHGN1qfU_GTZ;AN>wIVj;uI8l?$JH%f*7*X%D8uE12BtuAe~EG8haA?`$g#k? z3!FZVmx~DkTSNox``_$Q^nlXS7Jo>MK=Oe7w(G_7nKQ_I9!}(t_3OPy$>E@j|8{YN z|D_@4Uk;M|4i?7#Mhe(Jl!P5KpU)e?@;-OYOD{fmCAfcH?=0J72z3GbAt$mutSIL9 zhO^Vt+m6IOMU~IbM%`CRs*r{m6_;GdXY5hMHhiN2FQW+O(>K+Yhte`1pZKyti9xPi z#b$0-Ycjy*?x{+vEIm1XR!)M5t@Zv-_75%4Hym8qbDL0QCkKUWz4)R?Y7D4ll~-tv zBIM)6_m{<6x6a8RsIRM8e&k+~^`(h&&cf$aJA&&w<5DtAgE~aM(|*b z6_x2Ny5@sy8iu5ALkCuY1EDS_c=Xm8hR8TCgw6_WqbpwWR~$k>s-WV2+nk+5r712_ zIo?NZR1rkrL9Yirz-O&~ecfdF@!MI(T%@|6%EHePJUSIm}ina;RD78 zqcL^xXEx__^r1_ASKW}*BxQ}lbEQXYB9{z{L*&Og{XR;g1VNLsakZ5xTBG^|vz{ZF zkUY+5Y5gE7qY|9JsdXggAJs|>FMLWfLcd{gOgwieVWcavZ#St-cUDkRTFM2E;vWvj zSsoC}d3*3nUUkGGYP9g^UT;&Y9rn9~z!~}kbE;10V8139jaV;*y3RfNpR&IC90vZ? zAH!>mssL&T+M+y!E_c|!L95^^tR4i?m3K-5Q=w#c0$aE<>S23w+V01!l|>Mp{Zt3K zoa=`bzelMXutN`LW@aXMZ;Tc!W;qLY2tku zlpkz{DYm`})xiAd<4_pTXmKcJ#}k@U3$L*&)*POQ*RPd|mIw0dq(;HaAxQ@z)nF?Q z-7{}+8HpWPQJG{oCOw8J14ZsxuB zZNiX-!B5&~?6LUWzqj41j%9|-Smm=H4ZVshs5jvg3YkXlXZ}syFT(2k0(XDo*`Xx* z{g7=42W;fHFoIx#;00nhN+1n-cQidWBLg2<76{oD^~lp1X5KE2M469BIjLQkl^;DKl}At1P(Y zVc<>qOj;9?v63d*p_3}ySSFTR$|q4kK*vEWByXBjyMWUoA6E`#Fvm{Q-H!>Ef~ITn-NJ;M?j#ro@hajUS@vZ zUro?)y(=*1Vy#61Eq+}k`*^O}KydF{F4<;QZTGM+jeo>y$(4GgCEB!-?bG(BlfYJn z0!E|C{=8!azb4m2Ex3J7jtLmY@If&m~Q=hHSlGJRpy2ig0^&SI8Yyyc| zPRVnk7#)VLnwN-+uR*}#w-E3WY)w4>Jfw)d>v8B4bKx~(Y#2o#KLh`tv?{3bwC}r$LGwJ! z=qWJ0^Xvl$l2wRh0lOXdp1?A8jh72w9t6PLEZVQsk=qXws}4A@d0%blxFGK4@D1Vl z^7|?&8$DcTw)^Z4u(9~GenAR<74uif@S0p$48swD4tu^F8lyV>&(ucc`ZuIT`TAs3 zMj04Wj&dqKk0tnYB_MS9o4HVxFlx)3HsQiR5_>HX+HxM1Z$l`uV{KzoHE_AvA3Yg?&D^5^Xn+5woTeXw9`k(? z<;>zyGF6mcVFq^7zvH?_U9cUiEQ&+yRo9Q~ zb4(N20Zf1koQvG9+-;dDRzwqILVsWIdsR93Vb)R%-uDRr_?o8(Q z+h{<=eVr1MxvX~TNcPnevWyQkg5SC_)LYkr38pqMHb^&GNi1!(HK5=-~?+Ls-2 z%9K2O5z>w<3TLB11(jvm7JwE%L0h`M*_7ney7|dq0^LG1xo;qM1o`7d>&bI>t4j`~c3JGNuY#sub#ilzPxD$FGslx-<1=EP zzj2`|Ap}?okFYQ|`<~2s5BB@MdstkhK!OzPFN1d=qtfC*J=m}bNa=czd7xMim`gl6 zH3nVT5(+H2ICvre`Xj$&>OYY&{LjHSyR9(T2wRe^uP#-k`4o}wT|Gs=;#?=GhA-P7 zO|o8Hq7p`LUGUr+S;u(%k#;Uds8rE>FE&@X?yQO~YjjCd%6mm!Xv}J;u%B&fylp*Y zxtb}x;*}-PFM$mFs+AD=g*@d#P%1ju>yLoLd6&twOE_ z8Gc@rkNEom!>}J)nHX89$R83hY+G*|KMM(p$n7tXJqUXQe#Z0*urwh>RzcE?cE6ss z-DccAG&w0Lp}nar+Jr<@wqC#}tE#$p6RioJ339yX0IG{kiMH5!P_}(n>uybSqoN!E zwU4JAIsxKDFs4C!UwV~7#Ab{e`{eU?uV-}#E|Y5rGvs$rFV54QSCA!f3~ng7Tzcf+ zijWeZ2#Glz@K%0-7jczMBcF5v-hU#4*S(clm(-TmT&qj_&m1b&x<7QtH|P{BUEMyG zkK)M)n|5QqNI9>pv)@TZ`=6hdaj*B!`w4FOAYL-qtuyX8-Z3|CyVg{EdVuo>yGe_; z1`m8Q(5Sktev50IN=H7&KVq)@hqX-VaUcXBsQrQ1E*lLHNSre}gjX z@@QV_HhJSm&XO~ak@Wd-ab!wYZQ~E^J68L=#&#iT=7$9@vC>n{PhYO_ zMhb!qhl-E>ib^8{TxC_tpR}neUQe(WlW_Oi@2vgdT@x6nhTa?TBViBRSmQW0K@v;?E?5K--|-y!70U+iRh8Skqp4%tsgSmz-@I z3}If|JK=^T?_KjnoTei{4_E9%Z-4?~O!#Yt5IgcU@GLNTh zwM#`jC2JjTWd=ebt71li=v*m=BvUlHTHN)ge~RHlp1G)r&VO?FT-2|B!}XsqB}XC} z)g@44$tgMO44E&+N*h90m2kE6-as40J@OFGgP)a$7Ds|YW}9ODkj==8B)N^!jFgkd zVU({dg$sQS*HoEy%)Jn|{R2%g#%lV~hXj3Pw2%&7SeUr)vZ@hzNY=r(C1hqhSlJg}OuW47*NSeXVZ|&7vIgrat^pmvVfd!(yC3ksC zXuz6JTKYXrb-o`sd3<(8karq=O8uuec@$n=oh3eb*8&4qlOqXfUvC(q^Oow4as6xJ zR^9|DuAsC`Kq~R<Tq52x-+Nj^4}oh`k#uHkqlNX z&QOM;ps;Wf*nJ}9LV4!?qS`Q67Vc3W74hTz2jfU;{QWn4$wA1P9u)&w_H9;Hmvkso z_`;%sS}m-85@Bmqa>E`_UP70}!SGmC3E%;=+Wz%5#l0JctI7bE6pxd*2b7z2;rbOr ztJyIgz@9EcY+(4U*n-ya{!FOngNz_QsEyBvPHR0Y&90E%2>Kapes`w7X0KDwQBSua ztP>TP{L5~v2-ad(1cHK+d5;?i3P%a}2N;m|i+0Is>o2$ZRxB9L=iQ>>(nPA17S9{a z@9DE*^!>9Fk@Bp32p_#4aU&BTI-&NZe8&Cf^~QwJphSIvc(@N14aEA8ZOr29{3{(A zfKu4TSD%blFx)(48QUDQB38JSWC;3H!+1qi@k%jj`PhGCVK&mag!NE5k{}; z_Ttws@9xLp(E(W~P~OA_<^MNu^h0M~A1YsStUWey^`W(CV#4zcA|*MQlcfs6{!fDV zz$d~-{t>l#;#0`&--Dz+1r0R?NiO6+6Ej8!Jh*dwu2fg`jR2v8yoi=QeS(Bd!F9=N zIkalWo~y|a0yNha9_5k-)pu1!{kKr(M9tie_J1mDouSr4I}1A98BXnclYeHqQ^ zUhbsv!+wNupOUjCw_!ghpEyc$-E{jNGLR7t=s?cB?9$AKg;{UTzpF7UI+>NtBl zIDEfiENYy6B}$PCiSS`~L6z7jGZOvnmK2@`e|o@GPR9pCOd}xl#g|}LL$WJ}L(wI# zz1+2VJYU;L^b>Xs!=om=X~1`SAD-|0IUc|{LdZ9cwD>|&!!XKPvsN#gM`{nFzt697 z5u+#SGxI`7LkP4JzbQ7NkJlCH6T#6-mgTVS*Vi$3_-+iQ)HRe#*V)=6Ak0?7fe{fb z3xT6fuNKGZFRacC9Pa<3DLC)`#a0;A|K!lv3!?brz!63f@SlL@7?P!SbbrXR*#Pxi zKVVv>%Sk(&Co3*~PDgF6r4L(le3TV2S=cJ`(PQ1SrEmz9izkhHQL-)adP>XdyT=H; zzH9j%eK&=XCkH5GP6GURBM+!U78R;}meLm$W_)(K6#+oBRknbMjUzO!$x840Wv?5& z^rMqP;-MN1U0Zj8X)`_01@nHbr$a@v|3j&aqOlS7w&k*Dp{m!{czUV)C37z!^{=bB z5n0v>8sq%(J0qBiy^HjULov?}&HnEm;q?nJ6Oigpz)kf<$vXwC6Q`Rplio+yj)Y4D znuoO=U^U<|70~c}rwmAZJu$BAKjfFr2TB2o{E}(=nK?h8v;mrWt%!OGb9SN+uVd`` z`-k?3lZcpj+0=YeIXWJ{1UuA$<2EKU|5H-25p%rschuz3o`Qx=kslwQhH$B(>_kEu z*Fu`c*LB8y{dxXj8PMN$!`$~kEB60Nzi%aHuTvb1h3LP@mnm6_OpzqK#`mqlA}eKn zF9W!=UxZt6pjIihIEI!dF!L(SE$so|Z ztI3rYG*=&+lbaie`u?;Aa7oH)@jF@W7y-uIqYKfd+I{jdeHmV!>g7zmz&~ACmB0Qf z1J#{jBh$WIYf5KQ$TN_21Mo*0;oj@H(j9ER$MJ_)e+@CL4|{z=VihXOuBG))L{4C^ z+}q2a=%cIl&IbD;sZU73GU4u5--)!?othFrcIAqf*R|$_M`c)ChoKtm3;d}mW4=KP zudG)dg+S^;NQ2`nT;MgHhkPp= z1R^A|hkJJ9z{o0oywM)v6E>feofwS6d0;6{N%)eMg}6c0YXN4@9WnvH$7;OOA@1-V z6i4r+6j|@NIO+uSm*)kGhcSAl{TpR$hoRkvi>@Tshgd|^y^CAK$;j+thhU7GKZ)~K zQwcn7rpDP#8EK(m+i}%b%bgQs)phhY!M(pc=eQew-##VY2zU6u^qW>un12qhX$PJt z9EM>!&^`Qfll}u%DgmJ7KL;!J?+>PA9Q8POJm3;!1axg|F#dq4)1e4gKu5b)4y_sB z!NM9X<^Xt^fL}94X6#sZzH3YKwGIu%zAe;YZ3rLbjvVWZAwf$~mCd&>Ls8>`f204_a5h>>@~=^Xv={- zUmXwXQBu=H+zIvh+$46w_iPQUqM@-QY$^@$LBQPWQ@lr&?Gy;g#!k0#7(mY^5qAjW zxe(hQW{BKuwAg5)cxBvUgS2HVXx_>I;CiGRU;PK1{<0+3@js_wJ&2J6z}Ws%koKDCB}34aCGkvZyR_kRe8fhov;y zJvhrX>ceVkYlX2(HxNY9{OxTcW3(Y5aFvs1W@jf?+T8bnrAM^a%|^y0F?IHc**~j5 zr>iXQb?tJsCvV6R!qCIG0(;7_;@E26w@E@eNX*Hp9@qPDeOTPoq=r2<03NtK7r`*} z^leE_Ox*p36}{MKjcJ*MDulBpr3MHZGcD0=fMlekl!E4amw!7?RvYxk>E(Xia+Hxl zFf=rD4P`?=&W@-x=tl^fov32xjc>@qyJlizPPc`45j66dC;iUS-9)G2Z0B&{CqP-jJSBh2-!t|l$u6%_@AhxUFhr>x9R+rt)zmA%m= zYVXfEx0Sb#m)$nJA2RZ9UZQS@e>zU{&wZ3wu^jNg1JOgnN&9#}c~CkDWV?vJYiCB> zW;QjT{C>T+azY${6=lePjMofADaVFMXbnKz5d85~v<&99zZ%037Z-Pb-Z(QK5U!Wc zlSel$gQ_;|4uW@>H%tVpwqKy9Fd2q1s66#*HCSN3O&z;2M*2!A!aFyAkxB*-6~i>5 zZ0rDbF0yaNH2d3$IvCeGxT|-c+W?l8;F3~$F7XA9An|A~>z1Ppjhrvihb;g>IlVm5 zbxl}(xoLC&tTQKcULRD?`Moxq&OJCF-dwT{g069jNMw1=KR!RqcCaDee&clma1^1o z3^vOY*|b!v7V)jGJ#et+5) zk5#lmg422^gA|3wf!fvG9l!3xNJ%Na6-YHqhtHXV-KxP|2*XW499>#kT3k~zA^Fs2 zYtX7u&S$|_mFZ-Z57^3jbZ*t4P;sjpgzZKP0yzJ9BQ@@ISG35(lOml8cfh%B zF&F`KQBZoZML9^zFD@EhLcvuy(F1|=ZL)NKI=66-ov~fVZq=^O~Tv^Wv`Si<*G!V!EiqN&XO2GFB9o0c-+60+Q(_aQR ztnp$6%OVm}QYgI;-^Sd&d`ZId@Bec#3-B7sJH4YBT!3uI{Y?G_?)_z{0_6jv@AOz; z^vwX&c%pc;@)$W(LJ8|Id>jdCm!j>~R^COAD9PaOy@2qOudj|O(cShYOP zdt*i7Kvv7Zd?g);OwVJ`fZO>5t&5CH)nKVJn3}Y5#@Q)p_g+IP zo5OY7d=A(v^Oy@uc%9iH5YBqy9Js(!;(^!gl4g39xyOc$Z1V)k|c9$CT-AyWg)Kr+>E&+sbm z7+}=+994CSe8b7I zrfe^We|y{ic1nFM(RR%LAa1~|it-Nmx{NgxGY{Vxr!qIcIdT4IEcj9!n}W>Kqy}DH z7H@N8ol;ISb|OYIoO}ZeTJDdcXJr_i`hkNb~ya z0lnN{j2Vco`oMuq#r;^kKg@Z+yGVZnaZqWM*Y1b2E@YzK5nuB9fCFqT(Heg8%w+O= z3H-NI4jfzhTG*AS;OrW+JKAn?xSxA4gFjeimgfkmNYPyL_fSBr(lnPB-Lj6bF&Tdnf*4Zwklfn!Ci6uqx0LC{S7~!@V&6b$)#%|L;XNyX%q^7IIKrz{MhdIqOzM{eqh?prZZtn5ql_KjR>N}|S z_kp`{j_NQGD!y|#V`58VI!Q4|nU%j!xVGWc#Id@N!Wnbb(5+}O?{V+R54kIRJruSx z(JbYI<&A1a)hn$%z5ZVQy*-zD%jCe!K?=?ILt2vyWFG4Kqk{v5FvR+FP@L^U+-!{8 z+=SS9G35)Wa(5IwpFnoNnSI?X0_oRxaqP@PdiO(m3R?Lhp05%$+nRkq(3FRYT% zNOwuMh~TEXyIVn85Rgvk2I-J)knTp1P`ac;K%~3-TpNA9_5R*-{&3)UhCYt5_kCa2 zT62BoTp2@Oo*9UDj;oHwCQ3%ayncAIvlhD17Ra36bSgHMk_g-TcKsNFAw6?dP@13K zIGC3G-bxQZZ^4%#@<<56Teb75*)^eJPB+PwzMg_fLW_CF8D6+(e%BK3a*`Dma|fI4 zhx7*4C)4s9u9(zbIH~LwI+m@FS5ymeV<{^pInlwtJjC0213QzvqTk)${!sR*en}7E z`lZqiv@;ikTt}e3?KBIE5r_GIdGgyqEchq8G5Wjjiy`n{)jSZobf_}T_NJ$K~aHyoB3@dMyRMD8q7*>|N`b#+mV>{mp zbhdxd2LMKYxvwVmSU@|HpD|+al#@zc9|O76as!1$?^+KZs5bR0us_Rkm^@j2`Nk8L zvUj(CML-0B?XQ}To^K)iv4Ye`V~HL{Q)4iN}zw9Zp`mmR# zN;5ltiDohS*|(?G z74|r-$pJ8#MrT5h+!N%kvqh7$F@}0Pddx(EQN^J(bRO}JTDiCmNLu;fmZf}R!JWER%tTi z43NsY>1sH%MU_)f?5}DCip0HwWyhkN zO?mlV)>bHpE{F&d^EE_)y7cD^2K5cIQD__HBE$GOkAhf`KL#oVu@Sj7YQjb(k|g=) z2ZCI?Zq^8)j~)6+7*lU}@v~T4&$A8*Z-eSFnkvSbOHr*CTlIqG?bK-@5{T}0>ide1 z;ux&Rcd5tn8UvUV`c2}89(R-nIEUt%9q6dxy&=}ZyUu-BWon$Xht1-j7HaiL{7W*T0pNG#xmzFttqU|n1Ff~6FgdCFq6M64n>$zEhoR3qQ5Wn zDJ|I`3AtS;%q->lujkW|rXYT*gPpNFRz26`T!!{h5OrPoal9XNDmf#|r?zT>;3Mun zFh8rQ;K9ddSmPrSh?bOsSfF6DKzLwmOFG|d33D?LB6jS=m@u+fhLl_8SC%KxNs?I- zm){KNxti3>`s%k9mKNE!jq00>eAL8kPo5DD~gH7s~JmIo^=QN7kI$*;Z5yW z?ItNiZBpL!^o=602NbT>x=14k_jv(k!ew^7znvH|$$pHIUv;zA`9zE2N@o31K_wPw ztp?63GVk0E!c7S+|3Dg4SjHo01@*Qo;v<9HQej@hdtYdj{Ab0ApHu_gh4kIH$r z)~XjgZ0M>LEg=m3^2;LTIWQ+`IM#T!UO6xu;7?2Cz^rD2=dd8ZpbYw0p5gA5fj`(G z-&HSzV?rB+7lZS+a9#i{*i^(LXg!_9WK{WTF1V6G$f3HR(SV${#)%Q<2H@arOKy2v zOI#6=@se8#Y(5_-&-OY$JdoKIR_s)6(~QS6%sb$XtA7&o(~ny{6W-jX-WcarRdj}Y z@b!1&pbW3`uVkICbdjoWVV?$RPPP4Le7*gE|-~-%iM09FJoj$SK+C03AoL+%njE5Q_*WHz{H+l+oPcQf}zh%As38gy^ z)@8p;&e}DTKgNVJaMMv*EU8HdKhdWZwpM{j-Q76!LnB|&e8w4vr=n3f;Rt}aw6cb) znOV`K%!Q0au)DIHsc>X{V`s8go#$)~b8CH1-BZ-7ZIk0N@JISs-9$-l;bSRmwfEZG z7`;4~>&Ho+o4dRsEj7sxiEt!RlXAyXKMJAt#j9M5srbQAFs>WWQ?2V5dS!pm8m3}=+P&>T<2IJP^?rT!XxzZocj^eyjqEl0 z(eg-&^e4ru%^DJ*q?2VtRp$M;lDAg$`mN0U!gkI8Y$wFw^ zl1LW*gXXzE4WZR-dk(H~)w{O-V;zUK_NhdNu*3A$c{k6?lf~ReJ9SSz``9`~+V__80?JyRwxa)?W2B`#{>ITS$^pSt+*3pQ6|tbtU~P2> zCb&frFCdn7+$m#ize`#2kAuQh)02NXP}(Qp1(!7poupw-1}gcVcCU+msG3N03g??Y z);B@AG3(R5Bzv8Xgz)J6YdFz5>-R!zw<7;u$YnumemaC_P|?eS@g(lYhJhW~K;B%# zQNeZFtz^Tbt~?k5=7(i?WmW?KXy%7OcC-drc0drP;UYETjO%6R6ID0|5^z42I=bt) zAhe{;%Ae7kLohsT%eCCUx0DvA8ak0?4#puAT3Hl~x;&`8p^t6+YPkMZKaLjecI3yb zf?J6E*fHq526}p8BVhKk;3U=yK`N@2Fo76}t$MQ|cwN7<^cu!9ne-9*Q~an9{EzPI z!HN#9F#`AxtdB@&!#U^JOke?OMtc8n-p`2oq4-5;W!QHgDaPK3cY0!aJ@4f@iZ?xP zgQm;uOqgIb`{UKRzS{axkuIl4vV}(A8z#@i;KT|KkLJpBy+dSEU&8K)QIb^-_Qu#O zkEB2KjOuwMTB6q!Uu*p%9rd7OQat$)rm<}afHjdv`sl=k++*EFd+iCj1exgFH*ymg zx~Osp<oXIY@f?XWL;}87ba~WB`8ih*X4>sw_(1K5T*@6)0ReO}mXU{fgZgh$IOI z$@p)KX!6*tB(awJ)>PtP4$Uu*H~8J6vqXHpFsx7t6#IOxVJR4WVEAGUx`oLElWJZa zb1GRL_iF$_iN>-jd^jW65A{rE4sD@5cFg(0^yyq0F|LUQNTs-=X3~s%!|bOyzb3f1%}ou zv4g&M>|5kFj>eFIQ2Kno5bu^~#cugftow1Km=+Lp>>eBSN4Kn;B8ZQ#-H(<2oV7M0 zO$g<5Tgc#!UwQrrN3WakA6`-o)Rk`S&}q|Ki6khIhHFd^0~ezl>rc-38rwweOa-%} z2>Z=vb!PSMib}(2UCcXoKP^OR&Ezwvcu(@&q!b!bA^bMl%~TlQM=`h_!|rr@nyM2o zjxKci{W(!8I-%EgQi!n+AR@{iK9tc%UK5%lD5OI+R3|fG5*}|Cgx_%aon+elC`UE{ z8-^lnX&M(u`peQCL4ucWk|{QqFKp%PU!n7#XJC9N0f{}&Ya@9NgPa|MQqED84kLJW zF(Sx+ynI%o{2b=MeJoE7%O{Q9>KhTU@0ZZ&8erTb?=)c&Xn8yR3{xVnhg%2#B4RoN z8J7ve_Zfz5n8QOCAdPGfki~KwF4S{@A{e&2X5?VmbHcv&N)POkH#8vMo@I=@%5JNK zQF;f1W3DuziH1KE;QrC&wJs(85CJLaZb?1^Wj{j!;TBaX#gX{nXw8$=Ukb5t4v5CT z_om;td^n#av@RB??*X%v#5got-3i*}#e%JZbRa}Bv4)aTR3z5J8;lupOo^tOkxO`2`7M>!i`?m8 zn;#K~t~?wG3_Pxd!1%6WL%!}tInrLw>svXmFQ!h@AH%nKJ$0DQSfbmZP&@)GvaMkQG zmN7N%O5T5{YZ#9@52}oIqTR%J!z%Oh>Zs6zkOJS_d&K?|>NP_bhMi4Yr z@{9M7+RsE3f|scj4)QmH_XeVY$s=hB#ARYX5=2MDww>BpKYSP=RKxVrvh^X|hs@J|i-cxYo< z^X^98_M%l!WM-Plk=?%d4HqUI)LYhe+lc?1XedrKxbhoJe+K6S$@PohU?nw;7w|vG z>zKxC2cIc$zSkPn^b%Kzg`?nJ@rZW`diG+lvOCPVSp#EiwIcJ-gVK&Sw34Cc!EM?z zZOVR7!F3?qNqXw}Ii>5bIdx0)!2wZEg~4!ABjEt|Y{CcG+`56cHTgb z_eZy)RKp@3a~CBZIXSgGOZ&4Z++>Z66AF6TLKijS8i6{WoZTs1 zh?9v;KJRGNxg_;GR+^N7%hAVCmk%p#SClchT^h>T4zJ{`{u;T0mt~>w2-o<#FQ|JE zXzjq%duhlv(j{O2x*rjG_||5pJp4D64&_T^ab@w9Uaajh#`S~~%YKAYJF7bU6|Y9g z68}`)A6={=mc29^2|X4c{}mfE0;0O`6oG{}<#I-Q4QY?8r0#6`m(@s&t(*@=xk}ER z4z@Q-i0?&|@}>(1PK#I1V! z%?&kPK9*?tC!u%ziJ4uFF$Xrx_qK}PuTD&>@g)g9bE{wMii1PRv7qJBhInZrN!msj z#W4-)nF*Xtd3vzr+8IW%01 z>&yy!bU_I}mwmb)top*M3jE?P1zP+neUDqhLE=yH&_Z?uaSNI>t-Xp){`uvFv+oQ2 zYHoDFZKvupQ3PfNv;3ZzSzxVPq^%uAaIv!IuJwZ~EJ~H2dluM}2CY`#HitA$66dx0 zSVZkf`u4tl-&mDU`+Ix@3S#zzMlz%#{8S^O4rOgQ=yI|=+b6jKx9q>jP=Mfl1z+>e z07rEEV)SyXN&({CdTXW+_8IOe0k$c>p8hEjPvB;i2LG|?{$V=+7)Ikqr*l4DGOnlo zynu}-mK?cg*VK5V4?Vd4_Vgo32sirL3Z!WNK=%0p#$z>NxrYX{NY|T$l=z zFU)Ca-)lv}?UV}0a`sfwF}95dR0*=+nCr?b@9rV2d1IcJXgk``LBFL>DUXY&Ys(Ry zoC;TF)tsT=)I4`hMf_RV?Ydc5@?;hQQr7guUS3Ylk(l&Yh=}-NNP~B<7+=w&G0CFo zs<6H#lAnbsSLbYp<0a;8Pw(onjq1}Kg`v#W6C z$!=WfrWJ)_XaUG}ZNT2v&qz%_#6z+4mHoH13Dv10DI(9&sMj zSVb%GnNC4w?E;GU{ex#h$A3UH{zFI_e6x)n`{y2bEAbKrs$2Y}?f<-fVQxyeKE=AH z?dfbpLHFOos?GA{ikYtO20wh|jQ0IQi zeyLPv(+!jND=lTowXvyfOD}@VG^6?THxlm5NpI2#Slf|*n8)b?AFn9_SXWQ}k(l3o z>X)Ekx;+!eCut(>!s_hEL!GO2-#N-g&oh=Xn5Dh1{Fz?Y_UtXhm_j{IIP4KR(lqaZ zCH_-4z#SQYvFGlQaZs$h^;{idXN`Rh%?YQU{8Ta|FXHFV$V&Nj$kRwzd%dL ze@3iO?~RWwYj3=~TgMR{q`2d4h7VIgV|rXrf$>a1FN0xoajgj5wyK>QW5{9-aA*}@}a3#$)w-2SDN1f zf_L^31kZo>ey|(-#AKs$M;yaTLBOd0)6Wl&N}X4!cVF zY|S@H$~@`#`vSJBqa5Xpy%O=wfPKx;&)N4z>jDCy`3AKBpb@gqU=mpNf4OeRis~w0=NvAu%V12_^}1GJ3@;i@KT6C zUkXE>URf|k1g6+TCj7H3rgeoxl8F2FfqL0^{=&#uGvkd?Jis64dxB|tJ17D@B7VxU z-CDt>Jm%gVazQW^mXQfXk0cXdLD5{%=yH5QmiHy8++={zxL(ii0BtRv;caoybx*X$ z6cwRC6b%hc$l(`uwQCi*@K`k!vB$YHQ*;8M49_B!JbE#)hz_3>6jp|5SJ!vHrwDkZ z<&X_S!El*jGL=8FNK0@8a$T%wXEfJ3$ z>9~|<1S~8Vh&mO^=HBt~sBiF|HzgsgYowEAe=K-3^GT~hZ^C3f5e5pa+69c2RN z(Q3iEo6YrgHUbnj&GLjgoT-N!Z%lb`eyA$TX;IYRy-AAy(UB%$YVo;HA=C)=RNe=R zf`X#`m*A8qc?8-U+|d!Ne83m~oaj|~&Pfs6+G4_avtmj%(#CZAq11Veq;cmfb+x|H z_u?c~_poVh9|x(D+BE(m^PS8NSF4maQ+<-pfI|XJtwu%DmPfAdxGiPkq+$Tu zeI48C`dMm-fo6$4Y4zMCnnVALAm41Hl2_cj1u5)tr{NHzAIE`m4af6NE6_G!)A;*w z$0@INIY)3&GK9}`7M&{yt9d&fP2bV-_)qZ#b;UrBs6U|Pzi(ne01*AL&q6;)ap(tG zEK2_8ToPjyc)FZ6)1*egk8Mjj*yEtO1pPqm16H(R{ju6F;kZ&@yQyn>dl}XvX36#; zc>4fDJGX(#n~pEB_M4{`zX3T+<>4S)TvbJGcDO}RZ{dM+DL7^vHR6Y-^TzB;hqk%9 zPY#ccy6l8($hW;=C@wLqcv57q4twcKO7*xgDwBtXJHUltwMTks0FTh&WrmV=paI$M zP-SS|!tFhUV6;k^3*AYCd4!?CZo}Avs-^c+BVCjF;@G#|*qEK_-0IYY0rPBnsS@e6 zht3+hSS^($A8I|_6B$T#i@+s&^P0fHqdL$v5*PENNGxuqmUJf8BSe2jOHx4FUUh@} zL78r}=#T{V@JyIC!`LW#eLDr%b`16X{13KD4(3s4U#uVYl0mtI|Fh7Er9)2BzN%Oo zvHyuoqsEK#Pl0QFJ66Z|HSoUeI(ns7$H&ITKKBEG zROT>4h|nO1^JrvWEK6dkIVx&uvEr)8L1~=))>eHKQPtOG!{r9hAZS65_laYxb|CoH z-s@sDA=HCZb;+6%g^LoLhM_sT^TC!PVRs%%Tu3rI%@9T7nSl zdwHseFXE@*$E6H=CKNoV8Z$8n>uxnaHbyn0)SOO!%m4m&7;V7x^wj*Qs2on$xKhSR zx;QN`L-MQ1-K3IGreUr}zW%U@<_Cj~34&g-(8nfn-a=G$MSvf;Be;A;l&{79d6H){ zOG<0Yn@kX4#c7JhchI4V_QQ4YekHMreRD5Do zNl?;wC$J;1AX#-9H_S;!rUF6xBEv74V_Nrn4A_>U9Pb@5_mvl$>wh#p(2CebgzN$I zl8IYihTVRW5%4Iq(xRNiSl~arX~3cjn0mG)Q7uKJs;`)DgnrzpGC5y5VzvQ^$+%vC zl7H~)1+)#%w7fW6Jq~~8E`q2{e%s9+#};Y?F1&1HmiiAJ9UZc-uTFQeL6%~ob<@rZ z*OMO_8AuA;+8=oe|6X#1Dw0fU#R)r|bqM@ZK2}CD+`kR^5|x zCYVAjCI0B9r-a0apR=*(p0#{@!g!KfbErKuD&f+zaXa6%&J&6^8o4%*{mEn?2QSSd zn!oMLQM%!lw!`})J*aHdplz4F8dNbFW-pKKKCGcziKDTK0)Ysu|!JbNOc+{`6n& zS?Ce23>1p~q6loYalvJH>}XKnQJr9Pt|WCt!}tu<5yVNK zbqkznwx4Yvv%2f8E@C}*KsTz-@8gXzu^!Vf^a#;dvBsOnAF`$BX@rYEaazV>l&4@A zx5vlhzPs@LR`=;$>vUPUCx2LEB;KQWUMupKQ%t5d<(HH%!IL-SzxMTgQHMk*elzrc zf4u({J+%D;ZvZ;6b>jvNJ9l{+hkB<6#h1RtXN%oggCObCjen@w`M|JoEzPZ_JzBg}7&3JrlX$w(I zKvz{&6al?!Bw}522HzvGHAp^#bw%0Cz?vX;q88Xx(l+6fU7ki+BkD*cSnk~FwU><^ z(~@S^)GdPb*m}a#LIOGc8GDEb!WP2h;i zFDqP+)d5Y=^?iOvl7-OPpBEXa9?X{@4tlVAcQRO0)NTyw$4Lc}fI#DaeW6hbd@PlmbajUEMWu=^e2M;25#H*{U$^ zh{TBLtqCG8u)dS`7wa~Rx-ozL7LfavefYqM-$d5Xks89aVjJW(VJTH4s>M45))he0 zDhy4^b)|7h;Ny|nQFQyaeI>(llSeX_`#72MQEUl)u!7nSWY^!6i-N$LT<6?Zyx6vS z&Ci3%dV4a16muRXFcY|RU(wHq1PWTnVVa12y1gNc_lp~(ev#)xEBz_~-JYnspyDq}y zSC@jtg0+IZL+<5Fe!~|f?&{YhW~uP2D7wu?-7C&`ASgk)LbmbXT=XCCbH8<&j~MkE zaQDc=HunIR&m~XIVt!HKXYQdb-j9QRjnVE!5Emcq#*-G8FhR29s5mj6ETd*LSoeXJ zRWsZ!(z3kmZc>J~d@`Tykk*q*X4mc96A#z$Hg+U-vx9U>GgC4`>3P->0QPPLe4mZ{ zc^6$=h3BgXg^+6_NVNmUsv2idS*F^c?~O5YHD#NBUT)3se4qyjLUg2Pde+639UX%+ za_af&Tj&KC{!aPo^U^p8sf1}2BcFn)qj0(f57jB1tKIvwb7h@X-t#~$cKfwWluNeO zXrN2DmfCqj9rDLk+p@1rJItV!Ce#bX)x7nAXol|#s>g#@+vutA_sHfSBKcpgsK00r z2p+n33UVrfQ8uEt8jCSX-r_zV#TV)2Iuw!SBXBbYiK<7*gy^Wh##kmY`D*yZ6tySg z(d$H1Ix&Wq**HG=VF-qWQ@|22DXiPY89-HeK?P|7*e~q-;?Q2@m1csP;Z0 zVBqGOF%F5PX$HHC634(X??p*`0s?}4S*>5_o809n7RmS+I@Jj z7j$E0PiNr!(S9dYqChJdqw18$nuf?$MI%uURrf%_x{4v4KZ3%vS%hH=Uy-(|&E%|j7e&4S-4{Ei3kKiJwcbS`5oWN!lI%+v%Hs6j7(N*1YApIh^ zs5mZsRGGXH+)0Bpvk3IcIlG_F;oh-k?mL~ST<&bX6z1S6>=3O4xSvlrddD8 zpBWm?>yJ79)=PD~hl~YCq5Vn5(e>2CXFCm__)H^Mpc>hK7i{2y<(L~r0Je(1UDCft z+K=z4VkmufPZPrz?cyO4Jwa1E*cx&*9h6??ilEYUSg?6K(#>F}E&l6 z1oqEtAmEm%Jyfd}qZ$J}JUz_!J;euRko|}F{437%HKq@VA8n2Tjx~;P6hAMz$?7r} zycR|}`PBDZy%O`74R)3hl-C;obHMI<-j`JC%z~(Wn`X%tQA5WFCj}fLm-m2M*hRSe z*BV=N7nCX*_AM+DM$c@c_R*0;2seK$@K^|=h_wp+>b{#2z<06i=eXt@z4WQ{J`Xf5 zH6|X%Lacg5@@y|m7?2qUik`1*uFq{L`auLxGj~Ay!22OSJjEMTrQe_2U#JmN1yc1= zmKl?DeSztKB1jaTI*V{yoPzxsT~B^vgs-yq7j*H^nAW37#QMKNUm|fpu!24Hdl8`U zrjm|`8+_s`?x~NR(Z=~U1V37}Pgk{!L*cah$P8mUa{FJV%2wtNNy=FA=ek`XiD}ZD zs3&QR7VySyJjS?j!x3Mlut_~Sw*=1*huLR7sYuh)>a2?zaaqX>W^pBWNtf{*!TQfT zAm{3P6at?`8HjUZjm16YWRItJ-&8NUeM9==DQVtjJSjuL(M<@^pr71J+KucK8rKU= ztQ#8j9o`4&Q+i@#p6;=y0+$4-m(yGPgT50I@rskn^W#LHWY&`1&nP;cX)~%=bmGn7 zwe2ms*Z_QD{ltUXzC0&t@Hq7-h0hUs1m54q9qS;}@BRe*D=*!TM;s-Tite*Rf`XIjJ`P?kO=d=7cn&w0cw@!)OL(kL*{c1s4f>1_n%oPJKiSLyAfv z*vs3qHr7t5l^QPVIXb^*4Z4RmqA$EUA7EEKLcppk79QW7Z|drw0+cVksj1II^@W>t z4mt-*_?bBI=R^X;+yax9o>#|CXrt6e*5%c0AY00?P)p5|YO#38J81}Gjob#FlBOug zUe|fa-%!gi=`N8IxgFb>Y9&>{BP#0%WW!U1iCVfV{!W#SRSQm^SPisg_1Yi^!=DrR z()m`$%e=~tJFA!h4OZz|d!&#eX(TUY`iTl=8?12f~!9L z@+D#JXP%!dL{n9aI)8?)X&<)av7Qte-_=tqu*S&$=+zhReP(IoONQL}V-JSZQ`jGG zk+KPQF77ph+W8)D43!0GM!Qeu>e^WIEoC94bNPwn*0a1<@0X|4f4$ogVnX|>!Ww|V#Mxvx#WRt!0N&puOIR)Uk?s-+_u|u#P6>x zpZYi(0Xz@?3~T?(nX~pk890Acc^;)&dM=M~e=S{f@JtNJb#9A)E_j1uUfhu=-Puk~ z{0PgB2IZBFYzW|1DNYUj*^IEmz|B_}ugG$PTI(dnK{)o(^mhz5#is(#TEI(2!Hj%(Q zckW6xP9QNeEUEeMHe1Pn{Py*WO*lMVauab@-TGmBg(RnLw}Oc8mgwYATiLKD$ITLoi zi_-qB;Ki3^zbuHax8-1E%DGK8ZdnvIWli;X5347NaT<%MYN`lb4CHr>YR`MXbX&+c zvF^x7=UW96fb6h(D$exL2n`hvF&L6dcN{B^-{{yLD{37sAOC0skBq~0 zG$r|{3)JzcOrk@1NG1UP|K}$9kD2Koz3%_MiJ){pEeAy>enJ-9YGoPX*PoZbUx%|y z1p5qwW1akszHJwdVWjf&eTfKS%qrTECH%6;B>%%p3?uSiuM4$Zm~~+$J2)wB35RMz zq|}AUeS%DNqbJEqgkzt=>tWoHKU*ePef!F9=_1_clfVJeMpYiBZE=&J()Og2>u%c`6)(bbZ{!%$9Da<}KuN9)j{oTw^h_8o(F#!>MAJ`I;-Cxp?!ak6# zWuTZ(fo~X}XX~XF7gPwrmAoa0yrS~61RqxwO*s z`L|Eis_T^dl1PWtf*`;Q(lH|r`KTgn(4Ct|jA&^Xy{@QD5%+XWamh4YWey8nrI(fE z41xjt%`zJx&o=gRtGH6+yy!;XVqOdZz3Puqxr_MKYUSspjAmJN$_isD67pl5SA^@m z9{JFatvyNx^V4Y2nZsi|`|G?0Fy*Ti@K-+T#fN;-+i*c5p`CR#Q#qw~bup!YW0q5g zpg#4wkU|=m(-C$Hl~*~N_8h{ouWx@m@K;cSz8zlF%clJNl8VlmS?d)%-6XT2%{2lpC=U0WTxgIaxp?aQWd3B#@tZmqkk2?oH z!m?jLK(eTS3+sw!vj`^q*EkJ*DO+3H1*5~4zn(R%=@<-e7?~8$apC)AAPQ;hmK8l= zSL=E7U0}r)CrSZomFIAjpp;yGX;W$|FcA;{PvO%GefIvGC47$C_{{pvnka<7*imRG zLbCZj_P}Q|DXgTmX0+8BW<~!EYx3sCy1csb&jc@gK2bqSkq;!a#&d4@UH~XMT#5BM zgaspEWe*M76N|M+HsrCKHDgOz(laTE=HTv`MW<2H{^iMVw=dG`d``N=J4}N3Pp?0Y zdMC{Y7VcWkF8?L?yNdJ5TjI>0DH&K&rZC)4?2&bKz@Cb8{truAuuT zMx32P5lEU<3r1{N+3EZqjhYOEBqXDc+X*^yHzYQ9^$M9wYX8} z8`aVuqH%=VzS}0-E=ws9C4dJ4)z+&IAKbFj1PkJfb0|ky$3hpm@v?H71K4jS8pGYh z#l=T+6ZAK6e2qOtxI2%&H?rYoF^L-gqUJ~Z!WY&_F6IysHNj`ceud`}uSVluXnfPuZPS#^a6z` zoL8z{CdT{+GSSA=e5iX0!bzJ)XtMrYbfaUw(mRpRvx~@B&e7|sXN_(S@Hgo%1EEkb zNW#on1hMSz$mnwGN5>Y9V5m`C!q|r$3p;kmcf+5PGZ)$L1hHd|W`OD4IxE|6;Pnw} zj&bG!hMj}XU@Su&cxX;T;76>7f9f1CfJ*kh;@QznxPLC8Q&?H}z`EXmN7E6b-=Sl@ zXn>@>;gJTG_P;rmBZ5YIlG{y>m)|use-2UZtUyvV`pdl2-)03z#}|6<2RJEFHjdBcy00WD z(ME%+2_w-$@ZX-V2p7k05HjsNyHmRePs%-8^lGcmhR8~1h|u@Y zF;k^Rh%dK+ux&X&PQQ7?9#wgPyAd?)ti*^1lkT7R z>-Q{N_q!0*cXRhf(w%nmYS_P5@4gE8NsBNFQi^n4?I&#;t=Aqm@*c(>GVT&NO^&AH z(T;>9)G03S#h-JdZ|=GW$~Qle?hy#iNb!AK?Q&!SvElaSkC4tY?Z8^kM@Ao698}~% z`+{srl0g*TJz_9HJF3mBH*rnGqC^%2&t0#&a^0OE@-c*M$2Bb>5{NkWz@;?+^#>_1?&GNe=tRW*aVjG;{ z)vR@4FKFI4ry?wUqBOg5JEC{oREc#2drAgj=Ku81%rmE-Wy~&P4MxiHZlXN*zY8Z< zIqtkNtn?rq&i%-OlLs7ylnYYLp8!)3l>4~C zH5AGe7_|gH0DaaM&B%X!%YSw79p4It7ttUo14_YC|A7epupWSg-Qcd^-63(B6YA>f z>b2o{EFv}drTQ60lr)ld(Gda`AuZ%JVjFOf`?5q@;VHrU#zmqoU`qLNut z5Dd1bBn(*YVjWvgpOIY7Gsj*Y$+QgmZfAsooX;j~r-3u`krsh`34{7bmZU2}z5N4W zB<;Eg6JmbxE9otICg5n0DbAlgOU>z{v^XxS&vtKH_S_tky`*zS=;GaH|8es+@4E}w zj@L6@^EAYD1$kXp0^Q-{G?XuRA(%eDN!@f*WAU)f5BHoEijz&Q4%14h#Tra5eJ=qH zrIg|Nx-m2tz!X?xSj>@YALvWoH?ec}-Nmfz*45cEz&q=UvgGyGm=W!I8 zfp}p@B32*<5AA2V0b;Vh?phfUfL%Q8R8kv#O@<&Wqx3>80Z&Otjv5Cr+gy=rNk-DTBtW-gDvt2zl=Bj;q~S!`bz@_8 zJ$W*Jbdl8~p|$GreWOtiOR^)kzkaxMw#IVNhQQh6XzpwgpMmY^4at`fRbNmf@!WFfNq$aFeAQQ^hqLy z8VfJOlk}lKlTgmTfVDle6m}FOW?tZI`~PspJ~es0y1GjLbvtM5raI<+kp$KBzw`V5 zCveZG5`s0Dx|3T4O)^wsN`b#{qby*c=mwn=NSchsGLD_K36Za^8{J6LFN2}jQ6(aw zE65qpaT;#CI5HbURv1}WybW7s28@Lzw!@0?^RvuP>k%4x!*#fR!vX;;*#_@s<%dXQ z^OAyBk1Y)O=4;C0S?0Cn?ppP3aL#TlL)KHd&c=3o)D>4*P2Exv1||oyPVv;0@1Z-o z{0I&Y5CIYOo0KV=N8NZ>V1VFyYv+#jX@F-7Ww`#Ljxe-a9v)#t(WEu~`e!-{9g_Aq zV;fiKCdXl5l(*rE!qPTa{9qW_`}OM=-PfJvC@Kj$kmW&OLK{iSCmj_P1q`1_(b2-7 zna~KBmKs;dfpJj(M^29v}-(HV@jE_PlvdbL>!kpYd76*0;qC20PI?U+uG&xmV4X zx=Q3!XMe~!%s0YNG*tu|Mvt0bnWm3+Yoz6uwB4cZTn+rd_PW7|-L)luW66726}mCj zYeXD zR9(O7zzq6+TF5!oXwBHI2`pqS3qjiCF;lZZEB_2G3`kb|zY)&6WE@lm#qb;0E*=@P z`!{3B5T$F0__ulXZ1I|1?97g{ugGjp$4W9^aDw}cYT%`!c%6Uln8rew8U*F(T^+9H zXWYF3nB3~R_2)H?2qySd9KeO~1j_&XZPD+?^MB@BKLc(RA8pv!y(RxcTS3!E{{Md> zDcEnVt#RS$PHWZt72plu)#j&rCbQK4eAEasKj=9)R0!TxLR(k%sMNR(WoW(?z>D8}c{K#E1xG zSM1Df*!7UpNF{7wl0^Rd3Ny`8>0=N zPm46=yUWK-wrn_%jxXN6;FL2E;lu2qqpgzOmN@QVzBtYn6Y*;C0AUuFW3`VCy0}`e zN$IDOfH&vyf5_kW!{{B-pa0S?xL>~b_~+h$$`@}X2$t-1z#aT&eFHSE<T5YUJfyFa1CX1xW= z7c?@&T>}05g4~7hmtT?Nl8`WO5(Tl12L>-pl!LhiO)^L3ohTq;^J2&=?$S@mk^W2XssbO8JC1MUi&`AC2#?-a>wgz|Vwd3j#yH!}Ph zI&M=h&Df$`ULWKWvwyGpZ-6$;!n5YI15W+6rxXhX@Y zEo3a%T4_BaCC)vs4npt#K>1Kp(Eaik z2|xTZC?e$4cBSVE2r~Z_T+*+6^B9B^(tn+oriJ_FadkQZa3I;b zc}Jp_%gxXB&=9=rNPY`x86_pmo71|sT+mm?L&2YrJK%i@pCpuv5K9X)xxp``3w74e zccCuPtnks+*6s{MEpq-!ZL+ZZH3)<^8rKtnoR6UL!$hT64-k3R`3l=5AgLO<-13{{ zHM-DMlmsckSmWCBo+dgSb#)=I8|%T%uU;Zp)4`N2Bi-CQ6W6ao*QAeWLO3$ZN|IcQ zs=YsUc|Vwl`=zoGtlay#G^@W}QyTFm$g%C&k1bvdG(VoQT(d|RilZVKv&pj3JSWmt z-(B}rt;>mJ^o{&kw2^_P&~?11) zw{DON-w&Ed>$t_L@6l&K7ebW@kF7JlBUOf=gf(wwzj3vdpzugilF1F%OQR(vD*xZJ z<^MxOde8Si#{}o=R z6(k>Ai7`dyw$09Nq=d8ys@*L2D4Of;;!dYU4-LfE>liloL2i*hin}Vl#f%h_eZ?`h z9jeeQ(m+b7Z0?4+0e`c?2~Kkn4<@C4-q;B1adpK zJY^Be?jC!bHtDQKs*q);H=nWS)v^b85&$-HdTERI!2!-$q|=X)c?0ZGqIW&RzXbwR z+6Rt~%j({_$7~wtidD#<505&SANQcXgc|BL-kB0BLXg9*CuVK!?`D`Tf7-y26q@C= z-o8)EuR-|lo9~{M1uMt?@Oyuxv=m|@$v@P1>nk1xn{pD)OPj_LAXk8s49sev0T5r& zfCwiag!ZUv3Z$@^KUq0EJX|mOT&f(RXEw|piargx{NaS)pF*dt_l;@<|?n4?JO z|GecU>$?(`^;v=M2|Kt}q83DRREYfwDEPvR3_*LT}H(4g4cwnGf^;cCFeoDD&9sVKUOapndtrAy`Rwk#b1(pVjVuBPzW(y{aPw%O#R)LY=UaIe2C0+6EGW=VMLAh_dz zsaITd`}87?vNCuyGue+ z8eh7RZjhFimh|oy{na_1|2X%a4|m)#?kAeP_gZVuc;+*oX~*a*2GF+s?YDp~=cwU2 z4n;tsEE+nS>JkmB>_-H~GIBw0;X%Q^i|*Q*(2QG8t>c%?%(1EY^4#ddrgYuA@pq2n z^C#P}wQ$?i^T*p&`vAeJ&2}2dkiJyQq;OiIit^X_%iX-Lvm?e7tcxIDnv=Bkc^ya$ zFPjZ;JQa8lN^d@1Jb|2X42J;! zM?1_i94x#Qn4Emi=a_vn`A-b*Y~H=D&qRe0q@?bnZG(|IN-SufWVrbP%t?cos- z5HKu!R^Lzu)(4;V?+TT6U<|_x6NWmWy^F{h*RMf%E4-*2rU}gE&aB5-UGO+;A>UW} z)Lu=2`i)-gWyHG+uncG|LY>z2MMQ_~piJ|2L8@mU%S~NaLF|mtcR(%;-Qp$4(8Acr zjl!0!sL#^}Xu=n{Gr-eLj#}A#452Y6K<^}Lht2BU!c#Kz20*mZ24Q=ShX9!~)P!+l zk+`lFdwJ~(CZEgjdX5Al;+hydNNC^rOkCa)lI|4No3=+kO0 zv%yQI5_g_M_NZ z4SfmHBLB@4{ULjY{QFP}8X6Kx%|0rem->^a^4APZqnDvEhS>PFmi3rEK(w@zE*tWI z6lQvRyf9o24*39}c!+2E+%>4f^LpRZqfK&H&ry0CO_9J*4(`00?xuecYJ~RSNNY)& zYPATr_c@CPYEE7nL+B}kR-H^}GTMjF5)_0z#&h;J06mmY$uahiv!s+JOn4LhjoV=} zbh&pt8`uLjaP#M7y}4?I8~DEqjygGH@+M)9^rD62bmxZ6XRzKggL7|uz0@Wzw9n*=yA zgoc(XDsdNSot+}~M1wS4wji8{ho!*KS`p94z-6)Dvnu1R;s8eVVd%$bT z1xgMM;iPvQj02Cpe2ictte*uE6v&9dDP?v03_D`>p8f21nJv;inN5kYw%>_~ZZ=%Z zr-y#X0fF`uz%v=mbs0U~Djb_gKKXhls`a%y^3mzL{Yl4J(%}HTV3I8FT+v#;o^y%epS z4p0O%e50yL7>@>Pc&P<%iW@-?EnMHl68ciPK;{TRTFJ3vP&$;S+kx_SaeySG(bUK& z7fpbLKoP-<6o!Rc8sj0RDSplxdxj5Mg zc{6(nbpe3*j*z(?Ls}1Xx4;tVkH6xmhzR;!y}80O_GIEIFv_wSeCUM)IDmw8@9cr zCHHw_ej+L$(;Fn!_JcWDH?uWdz-<-r>c)j+bUwN)E96IGfcI(eoTC1Q%O+6)uUf%a z#NwkGfqj?_b-s?DLZEE|(tpOzhlHb=L}X=Qfo>tBRRW-y^_*kAHAO&Cr61}Z z)tnH$SGW$WeqtmHR8T}RkqZHtDn_|DfyloQ>|f)PvV05`oq<>c7_^XX{D)-qed`*~ zi%5up40DdqHCBu}SiI`{44A@Zn_KkI9*z8d#;u4Pyr2g5Bn^GGL%ULar~^PNgnywi zjQQwx(UKX(Sr!)oEs6=qM@gjote0E8r0jcXe33EGh^xnO$WR;==9K~m5i{T2P$gIBlwhTL2q~k zr&9ZcIs#6}Em~-7?DJ>Rgm1N*&kx)La;!*40$qzTHRSMn$RZ588IM&30!kQrw^Sxk zLDXe#4^XIO16o3g^h(@Au0q}Wa`wKY(Lgh8OE5E5J_oo%5ze@<&unHsyg-^sC!KrF z^+e69)qkvQ;`?+V?b%Z1;~qcb)yW@_;PS!#-M)PDZ~*GvcU*qnEq-^qS&l|8VY0=l z$~2o91+gEMlP*lT19fRx9yrwF)okaV_3mo??rvtDxu4EDot~(>j0wsv7dm2UTz0sz zI9^kSY{#FyIh|cHa-`wbx#ZjGu%53QUFisk2h^RfgQ+PgX*%{ucPPeuQDgsJz7WA9 zMTVf)jiEe{MmUW(#ywF){lGWw94-zPA)k0A!T*J}{?!kM0_4qrphN24plqNA0GLJ~ z{Ll2MW_wiZHAS%k)I3 zv7dME>SI@Hd*fb+&P5DN`mVD>Jq z+A}1TS|YlHFhayrTX_oDe)1E1H^XLZ7~%DN%x59w2Nswd&~8t0-`B&L5_g35xWRMY zp8&3sE3)0ZGah|Xi&%R&4^+jrh%;HG11-97zKQD_eX$RKd+@Ce6Xz;pf&=9}#qyJAZ7xYnYaAQ-)U~ zlOfxQP4c6W^Ce${Ww9J5H>F6nz!eDvqx@_aqldZ+Vjl&XV#==u6aH;(Y{n zNp((+SgtAna2TY7MU`ou&1QBTZ$VTxA}WOW2I1!DE94dUWsT{ZL`zyTCs`g~X}!|W2uBav?XV(Tdyl$-}JHwx_F2Px1^ zpc~9cb4riu1y`k+cfCtU&ws?5P#gvw$C@wrOan| zK)4FZ?BSe#A?f)`&71P+H*de4*p7iy8MC7^QeH9*U&q3T&Ev!)_C|5{OsxZ znNb2QVSoi!{zpE^qPRyB+yogsK;Am%_q`U#kjVCM-&Amsei5Qi2E_c)zT|y}j)9MS z#)B7XjHBZilf?bT(ohJ+fS!v>0|^D_K$c@O9Yh<*m8yK~G4(Q{y{Zw-iCGwBmE`wOAPdJEekI` zX%iQY6KyrRT&2$RRC46#WrDY)(QEKzSXAJg#WQey= zT1sy(yUunjj?nZy(xie6Bj+9Xxy!)ToDH*J@?nA~8bJ4RWe9csQ9>sNV*~#vSBB_pRTV-bpb2%ug8^j;M5xPL0^0T9 z%<#U>%KU{S1yf{lk@0{%Mb?{%mz1yE$ zJUvs-jYD~eTogpHUg5VJ>c?||OBP^w5Wj%=e?`|_4^&BI$X!Dr9<>4?dR%Mn?oX}%(N zXP3YEflAD09tI6Yxqj7eDa7mn5#3q&PC&jPAv&9VKr32yf@ShzO}DikHIO&7q}x*H zrhQK$4sjJw%udKjqBo-bX7Kn`Xd0_Pc_fv8r9pG^Q&@bo)r}L-iC4Yb!_}+$XwL+p z-5v!C@Q>Z;3LHby_9MZat;@l{$tAZ-))r~>B}UywMfoR8Gc6^u_HKxB-veg_Q22n zU~bdp;&!T0p#f0CUAuiW7{>TLDf`58lR0#GEEIB?;I*qPPj6NHQu6e8zXgYy(3_V_ zs2ta51|?js!Mhc0x=1^bJtjBceupB@kF0O`z_)gKKJ7%qs*~XCG5@U>^=FMVW~!I| zYAf1Z*%^I$tpsnjDl?cWb`QM>BK+1*6fQTSCFDtS_KY`xh1?G&NPFx9B9!}qiy`b| zX^--K4Rwb@g!CYcn{a|xgw{QpO^V}V)j;XgzHr9ys} zk31Hkw++j;+z`mWGhLs35h_^U7G}P#x)p()PeT`Es)`?sG1m>Km>stLXw`6cZx$So zc+;5oOwW$e|EowLrU}c*MeFs!6KDa|=03={h!EgWY#9)hd5~NAnKHaDM6p|*D9c?( zS$Zi-M{kvmLPW@ai?II9Ab&!>&4w9US)UPVM_!}+glr@Ra7KRdvK@a1+obEW4@U$t zZ^Y5;Qs&dVM@TjA{PaL2h$UGqr(BM= z)NOI?556x1ltwcYt|6jke@pm);@f|D2!Hi~63Kmx|5F|mVEviQ02EPbW@w#Q*Btb8 z_#y-&phD>bDY*m24r+@lZC&nXh2UQ*HviJH^;b!2CD)5|nhwNHt!a*6h?Cqpxkdo^) zx31aO>Yv>uKUvg&d!7etfG`@|m;dd0wKRx@t&_7OK!tbk2z>N(@K-O(zg+EM#NfSK z`AV(6M2d@EIsb%}PoEEP-cbMBik4%WxCKM%r%`%2$m+HGHh**z{&XvQGH)RYkbMU- z<~BCjJ%uu72$f1%va&;%Z6VMR)PU3R{iQGqQ9b-8D*4~Mr=KQsN+-cTA6`^-{^0%) z|MF;mR{N6nhG9Z0+02HYx4bJc@`EyZ{68-{P=bQYmopOkdCgr!TrcL=te00lcp`17`>q4)dq<%kETJE)lQueaZzr_Q7FG&IDkJ zwE%OfM6qn(6k+cfV>ygDa)3U}9|WR$r(LzVX18kAK}K?twD$Yq6MnN*Os!n9gE>Sf z%n1;IAK(oCtndEn6RSnF5=RE4NFXdC=Qv6Lc%g0rv}5@G?HRb9R8>`ZCS_zWMz{e& z8pe%@a!`h7rk$D>Z-Z!fP5M=ie%Sd|!T=HeU&-DtYK<4bI{+4>hY2sD5|FLA7dBxl znREUKsSx{_d|X{!EoyCDLT`@=@O$m*S`W+<1M)9;>Qn$X09p+d0Z|p;nTWYxi!>hs zX^4iF7TuVFj!xNsPDB2fuXS>A5=5E}q@{9?T_~_jni?Ae74)f&Ur&~()_C8#i$nTl zM-Kt+#QI#Ve9VKcwp@6Ng0?N>4x~Z9Xcl=|WB0@XfN5d4 z*9=j{NlF*dl~MaO!|0E6cDN7H5Q+mBGvHO!>#{eM?{}*UO@GC$~>zkTVi;031uIqI=Z(~sM#IbCsV^HFvfoIOi$Y})*9p#c% za~p*GbBDfP0(@IdRn<-NvJVgxcl<|hKSWm?a6^!1h{98~Zqn-eDX9Ik&+J!-X;j7g zgjpK9+9dKYZ%2dllZOArfAj8t<}|QyEoAvqTl#mN`oFm{!TAxba*H&sQNkY4N5QN! zg5=eUUuXG`UMGk!CFkh_Any@=oY&D;=@&@QE$RD@QGeV2$bWv-(;(cML6+PSYZtm- z9b!MDkiUp3LZP>P@tp9Q7fHyNxY9rc4(gZi;2-)Mf7S2m4botKNf7=qb^ITwIWSaU z58x&L^ZojHJ%I7?cTe{JwF`M9rHWkVUZD2ZpDK-W=g)E5D{9f)gfn0|(Y!g9MxL&& z;tGf&J=j{Qp?Ve-`+8`amBqLIvQIN*m9=Q%wWn`>9QxKZQmkY{iNhehY;^8zh*FUR z`euvw>sInX;eGDahs}wJVXs4_hYQH1m%?gjGnZ2sM-Bt6gwq~e4fKqiQef6nrKx3E zt<`>Gb>MPXRe-$CYdUeYj95UCK$~O@;rg=A&W`f>`oYhz;h*u)Ps8}%93~)_hRCb@ zCU^iWvIXi|yTy6htnP3Mu?%>;AT^3%mNuw`TuSq!ZvhW8`mVa*rsyl_1q=c zVS7MDwSMa=vx}ykZ*b=2NsZYhr5O5VG)t!W#YBcroy;zM%m{egbe!4)HgGb6;pB#| z?YU0IvTKyFrM9R*f{DWVDu{f<%)U_d#$9}h4&9lxV)jiaMHb;sTZiGjh@=E*N8OKAoQilWUF zztxyvsv3uqv`K}QB61WYnHrf|fk?|MpLrYGLj(T*i7cFv4GhEQ18zFXB-1jUoKUue zoISp|SOYG#1o>-0;U&gAiILLzmGCP3<*V3O_S{a~<&@}4-nY{y=DCW#4CCc2dV+$Y z#71(s5Jv~mR|RG`dbNHHey86bSFCIH;BO+Ue~*R$yBI7o zyBcmJG;s-K2F{Dl0~zv*Oy=B9J}T6G_X<=SLMWKEd`EwzLI^w)w#iuy{Y=auR!ZW2 zwZI|Q6BEJt!(@A_j7OG3;$&hJayz6RcdXQy5ZA;#Dgxp{AJ-rrg`Et4iP)&K*`E&4spY zS?3{*4C-Zib}Drp?p}W%)~)fc6QNf0E~bv)CM$k5zu5nVvcFyO+dDejZ#<}CfV{80 z|BK4_%gaklA|hFUWf6roO!?=mOfs?;xN-ox@B00lfdLl~E385$9p~kV;F-b!BQr(u zKW{=xKY#YqunOTr@L~w-0+?!gB)7V#5;WTd;Ac{DazI4Ym6k>*FD=mO=Mw%Wv;AJg zkTaCgmjH$aKzy@-$cF!C7mby;BtYu|=0e`<7RZQmnda4yvQim=#m+CL~3nf@|h&7oD&iJni>9>t2m z`Sr&@ed6x%Ad3|EGGR9d-h?&F9gkAy= z!`J(GGHJMq^6Hpjf98gvrYkNwUnMS6UNrbx0$Y?}bgb65&iFEzrHAw03M`rRONslB zHt55oq5Ua@{r}WP1KKVBN0+`0e;b~WvEc>rBBcYf?g`yGbrlmHGNB>h6LX_Rs`8ig z5Hp5u0>@2#CY?gS7p~UTXY@eZCr)HGEQf~0!{uO(^04wI9WhAam97#f*R0^s*ZhDw zz0Z|+pUd=<`^gb}Sqhd+bvxz&uQ=UUR~p(MzIdSK{1~ErxGMqm2g~h$3>JS0WB(po zAzI1GG3&;z%sV)}=%9V7s<+C?>y60pcyu_qB0U$`v&DXZ)qKEn-?bNG4kJ@mG#^Vv zGftlN`jpDv%!`GT9fi7FVtHO~485WAL!zk4vx7r)3c;wVz}?Q;mW%jPblpf9^lE81 zm;rEkMg9YOzMQ=(8q50boChm&BJniu72&7Gv6b>L4Z_#VgL-Y_9%MAcg;hm;PUxzx zxw#HB3|nvT76CMs%hKBRN!BQ3}r431ZruPJ(5w^Mujd_C*jQ3NXD^ z>8u-&663|-pzqFcI0*kYfA>pqHxA{u0lhfay39n{ZOzW&c4HAWSNf(Gwj}Md%4+r? za=}#baTYq|?o5GHZ12jp{2%&TFieRfasv$oMG;_WA@)z{ih6~C3LVw%am3u$C- zj5rV9@Pcc)qs9zy;L9mxjcUWI^9D{+6_*$Gd*D5DGs|R!FW5dT&$;CeK7mCyq3e(O z{0zP+;q`Eot|;QmK@(n&S!}6egqFcKA`plJpiEBL{BO_yYxd=Th~gIM8OF?luh3a# zJ4*+^rf=}M)9T-)=OEn--tm)Qqvl#AuO48$ejEqd)-kz075)q_6YvGIj{y)=${s8Cz?M7Na0~Vkb zr90Cj;{e^}-q!?$yU#=KU~f^bNL1@}9D&gwi{Huv00c$|Kwz=}1V-{6fyo09m@EK+ zA-#Hfst6!a+)GzQF~0ZBuyJxf%_tBkjU%rCdf4~G5(v8QFbFZM( z;0jEKED)@+v9Wb!=>VS?)L>#^0Zmint>;XPj6l@-qPa;z7=l6mt%s8aI`0MWyZL($jvP#bsX`8s*PGzT*f`-x>kx+u~<9UkLRr210#{1*mU+zzOiT z!4(WZgQW&|*!XEc&f|Db%%%pgSfGl^jdw*8d?J);b}CtY->NmJcn>FylCeGvaD2w~ z7*}p`axz127%IT2FtHAdQww0tkT0df+mF^UKTKdnn1}MnJpkH`({!B&woP;)H=Pc% zBw2`TQ6p=fn-(~3eQFLyzD52L%=+jzfPee;UvL)yd5s8JTbFHB{2SD_63oJxpkT_} zjSqxxe_!f*y_28r;a3&T#_nnTi(W$H`s}s`3kn6lL;1P*Io|#eDcW^>#{L7030x9VB?78eb^&j>@c|7I==yA#2fu;W?A)zL|0ofC z2|i*2KvhU&3X!(mr-A6F0jS#$gdkt98COYp+yltp`T+}Dcmnl>{i~fY{!<5%t`Df? zI3|!~?W+j@u8)fZ8vxd4{_BHL>EBxMO#b$RpTE|v0VtM1)`#_Z70tlk|M33j5tV>+ zG31{czXIg%|M8FSe{S>$`{%_cdUNRid11&`-3UL=G^98P`j;C6ejb7K6Xt)a3^1J5 zpcfYxf${R%R}frx)t1l!0mz)h0QiT$Z4df@_5{k29NEMKn1iv8>N@^5C1v}uJ!~&@ z({4bmfYh80@l@4^lRFxhwQ7Pl7aek6ypNZn<&&j`h8Qx?JigSOzhU9AYt#k#UCbZ2 zNIx8j;#+@gw@iB)>hwblrQ)Mr$2cxkYx_G(5#3V$$^G56HQQ<()3QB#xfK(PS zr=1}mx%^%$U>?s3Hk9B#-Z$C3e#ecV4z)tLk029pn}6eo>&MQe!y#99?Yrk= zOr$u8M@>3!M%@n#SmTOE0ikqXui8={2dvO9D3DOu=|QN2uNx0zy*^gbN0_X^*x9b( z_Mm7iBN}NLz!`fOH&c%pyQCX4?*Rp=Kem19RspZH#K;KQLa1G%y=9+$H6Lu)Qn)CF zcwpwV`sHJ~8yVTjdeByYHRnQFk&jrfnRx0tX9SqmHL18VI;otARh}ak(TRr$8EqlY=Q- zYdY=82oPy`o@G2s!7|V-P|~nt4$3cSXP?4W8mq)8Q4WeUlbhH|F_%Hk{qlubN)@R3 z!&cGkdKaZh$stYUla;aRr#%Fiy`-{oU|MLkrRg_(3X_t&1|PwM@Cw+@i2*x0HN3Vr zlaD~0cx$M4X+d&vv^$BO6~?Jsu=V-KO0^H1!LGK2{oQ)kM$~D*E9HAJT?~>hx#-Yq zVoeZA?mZWNnUFYs$k-uJH20W#$Ipsxal*7{3B74W50@-kX97RV4@2yuO7&2f>Hm|jY z$n6zO!qN?oI`Y8*u;}cd6B%Ze4I$qyGdIVG>dQ*Y4%#{mEDo;SF$!8wvjRlX)fmC? zqPLr!#JDEUwG1w76dp+X7G2e5^1%WG+zprmwG=iomy>KDtFR7DBNL)M%Tp^6Gj)wun(t!nfcfs+p zprfy@zqoZ`hNEbwM+5qT{ah<6{p>~5qKN=k3@pW4V#s@8C_@|p3?pyvU)Wdqdda^e z0*YDs?D{IcM^me~c9F2B%*wiZPuD4F_=U)mq_cxL-qm*{%yn}54Zs1{XSi0Cd^fA}K2bLefltf`;cB+%nmBG&sO;Yws zp0NIiw0PT-R+K0g=Z9Y3=2$e7jxtM(dl=rh-Pr`jCBjXQ7t7*Hr&lgKWLh!Sq99vl z`TWL_6g5Il1Xz>{$10|W>->t;#@@X~a+B(SVJfXrw<^MKcf2H~F)z%M-a)0ZMd4VdA~H zxt~ora@?b9_;@bwWeJFDXN0jsM;{X2o0 zJdY2omJA~k!=wF!b}}Qv@;q8}H0n(Sw1SZ<$4Rbr+GQwx-?IDleW$iCtfp5B53+|O zF6QB`yd-~b8OB~dmMQd`eG%{8n%+B$+eU_{vsolF-zu@>-2GUES|ew0 zpNDi-izyK6lz4MJ$m=L~CfFEuj&nx}x&zQ=SR*SI0TIynSQ`&OY;ZwmNMQ@W4h&Xy z{rWHkolu6%k`1o2svciFTGyK6{QE zoJozmE;;I)^291>1w<@8UxpSzL<)EkR|1I=7cUtOb@ha@(U|zRb&a_=oocad()(VaAxWcHY?bLq zoqTI1Svk~*{yHyFY*|~=&j*N4I@Gx1RPm`*SUM$R7B8|n8o)map~tw0mYE(`tJHhX z1P(sAnN*|-DR=myf9Q9WET$lUPoUh<3^{yxC?w2}To_P3!TTDYcC^{Yw)rZ@ zAMY`Z?8^iMrf=8=wQV`gy>)4f)K4S1nY5Uor5>2rc8|Of;@vgISNYJi`0g@mCuGmY zNA&}*pdHBq>c#W+We;PxG;j6Ka#^TCdZa4}-e5g9mZyv=)(;`+0|?LtxV@#;H@nnY zIdn@u5C$|(WE>+973&T@kt5vEOtD)kz&oIYH2cd?$BPV(M+GStY<=V!!6;;T9`Q25 zBM$*=nqh%A*WED?B*bp3m3@)Khy;fk>b&1j<6TE3XT%pI$A&1KHRGWY7UkdQ%8sGP zA;Q~3N5e_|=9*zntL(?HZUz6mQrOwxSFCF8+HYSh4B~dsS9S~&lLiSi&%aFHz*`oP6! z@_o02ZY21QrP(#sD6_*=?rt8<8Xfq&m2K8xeWa}6N2kQ!1;#%Ni0{!_ONL{%w@e>3 ztDjI5cXB~bz3p+5bk{+UW*sp!WqsioisT|}Qp#oViOYiKlTg*X2K!5sJZ=!SZ~rBC z!Z-Ch=K|pZ@QzG1FB23sAua}xZGKsj2&kk_^QOk#f>TW{iJC>`-L1tc8nBz;89kKz zZt0P36+oFrL%?||is9<~F)qB#v+_v^s~x#cNoz0iA!3Ja(T?8^5DFd>iE3>a->RQs z$t66>dR5Vlao4{*?AXh$(c|d6_2`Rn>fYf}i93(lCxEME1me1tV+LaC?^%%o7C2#5 zQ~5qlR|pFDLEp){s$S`QI11y7#lpNSf3bIj-o=jKXG1KCANb<1^abtb{1D46JhQj{ z#4+Qp@??fXx%>Iut`s;Xs`jujdOCrK{5e}#BA*^99vQ0Tc!Fsb>GL6Pd}|?&=?=oowHXDg#>LuDJk5~Xaq)Z^Jz+d zT%S1}#f~fUJw+2=PA>7$m%s=nOBm$nCN%0Ks*=VT<;YU=vEyQvFL8hjB`qyx%h3T(C@f)kgUbVca5ek#i zmW#E}Q+K@#!2Wq>q12nCkssQ+@YmEO%6;Myb84iAS`RNJa0Y8)%bn`fCq6@#n~-ig z(R-=-qts~vrM}q9ka-Wv^RrlH&9w+9l(PV`c{nEdcDaZz1Rh3;0iDg@UUAHEbFA+$ zL(}hRtsTkBtN3;58JxPdptsV?(;nF@mW7} z0GFNO)Uv~KB?FbBRzACLNC-!aL%{Tfm^W3eCiE6waB+tsvKVEV6-?;-M&}PT8~a9< zdZkMGC(|-MEkSoV1%m|oS>a?i%AYYsl1JB`>OUrVmtFzYQ+n7M&vQ1LqkF##xV|*+5B>0@DxW)Dl}b<$Y?SJDE#>-SXIo>6f?^o= zI^Iy(Zg{5=8}O>{QST3YH>#3lC63)BE^iB zjYZn+PDvA=)lAKf_}FmGe1`ZXpu*&y&1d#eAA=`3>kG2w)H@MquRcU!=o-An`Bx}B}KJ^ zRBqn5)qyiSzp@QU%)0|5O?M%j=0JEeOqrINu;R@YL6-L{E~%~bdmltWBYO+_Yu;)2 zEClG&Y>##DyY4EJR+4q7O{wapHpenH$k@$<%LSxIQwnPW?|t_4N1jTdQ!n;56?c|x{e29SqK#E$oK&$ zJ=9ATi@YS(Z=xZ483^9}I-X^Ud3Ard5GYegY)QwqxMckR;|!HUU!={G+V^{e4DQ~G zslTb(0SqB5W&f*E>17#2-H_f~hwcT1u;=g~z&$;$OHgq9N|>_Jz;TYD^MUbA35%tC zsPtVYlO9Vgi?Vbf+L7b%r6Ye(q;Wy1SPZ9FHezR0)3XO*L&KQqgF<&PN~dZ=WsnhzNsFK&I)D?kO7$8SoXO`sGvS>!|b!IxZm17kquX?WGYVwM45TwVY&PB&ZlamqJ4r@yfFI&OAO z!pSLe;*~~~>R?!$N8^}!S~8o z2Dw8j2;==^^r~1Kgi%vYV#)Cy<}bcIoKr4_AOGq_f@v_=Ckkv1>@ofoZE=CEOsFLr z1QusevLoq&0No$`uW9Zv={>()(b=$~N0@xp=%UykmCTxWhU<;(>4PdF^D)*cPwfy; zP_oZvgN<^B&Sf-7auz9+uX!EVhLU-E2GHR1$4!%>7@~{S^r(dj%BLWSW9%#bjp;Oz zY#^guKXH9l{64p_5m0YalW+=i5SOxt5UV~P;PAXr4j6s>WjIS* zhcTd$<|uM1!@;qqKp4?jJ!HW(PatO6hBRf*y@zm

%tNOi%U1gAw${CXOr-i^C*Yx@GQj@czHD1#FJnb#ro>G~pDOg%Q&lj^k_hGVhHF{)% zU(WVPP3np-X;T#UxLwF6r&LB7EQR*_98F_MzYE>a?|}m1RBS`F<;uM{sgyt5qM_z>&yqY*wxYyG;yRQv_6pmlZDf$Tzd#1m43cRPKQ7;L4Tk%CmhBo z^zwA3Il&6OR(l|xkWH(8%pL-^>2SPv4heyZ-{%y(Y{!EP^e|tC*NI`rms_s)SVNc}F9JcajxQl0S75;N zMZ*Y6?nJlWNpN{87G|W2csH1BOUP?Dz`%bH`j~2EJVYyegPX{XnG&n7pU-wWCkOM@SavT*csrlHaH6OMRayB|+3i}{V_}}dI02wAxnJHgOR*y8G<~SB#?62E_El)%hX#k5T@DoO zTz$47mZf>|oAEIhN)_qo1XFl%uBT&WpjHj4e$5Q!JX=jJlN9d|rDg+;9JEbL^0?lQ z(T2AN%REIi?{%1}Ccg6-u$z^0XCizY96h$--*ES)3lbe*^EXwj3#@B}u%iv17JAwgC+$Xa=9M5!(J~1vplFh7N}} z%VOw?x#Cv3_(sWCrFqW}cWBNj_Fc@I$@CCJb=}O|VHG&Fo+zR+jL&feTi@OCk`}8%*bM|j(^ERZZq#~W1RMc_gv&9tOb4$W&kiCCbG`w8Z zM3e0{q;{Gk1u>1wa=dhS@b|-JY;ZFuMNS* z+f52-Ab2@3vQubNGM>K`elaK9N`1EzxWPlLcGxA3nSuH^Zh9)oxOCdIj$@U3hsI@| zuY>>W<_KZW-+L|?y%lw^PnQ3?jpSkOCOKJVhj`U3om^+frLsL-g1MU6S+D*AQp@O+X+~&8e7WmyDs%5 z6hhv6+~GpmG^_n$q7mNN<2c9)M1Y}4YDTH~QAB26&IxcPZSGeg6qaF<@Q~sc2Ue?9 z2HMedO?_oMl(FiJXwa^#DLJe~J{|PesbNUmY4(pIVUaSj6n?xxJhL~;$(F{tVWk!S z!3>@97SW$Iicw~Wg^>;MnMl!n^-ykEeVPQABNt|3SICgF-w>Sd>Xl&ulT&IYxgxQ4 zm(!7_r&wp+WI(GY@AWt`|COcA=b7(6KDzW&Sf{xV_Wa1*|6%^a{}y^)kok!S%L_z@ zVgtDZ5)tNPyn;b%%#zADH{m6uGx!{2F_^>>eI{aicyf3L2ierJMVFC_2HtH)cgpmG z(<18KTYuEr^zq#B?Ss}yFDDm8Xs;U&=3-ic$aH~#*}N0UNq$=jNd{itLjolq0iKFQ z&e7QnyeZixE3r*W*Ocw~J}cQ-yJkDLE@Y@m?L@x{2w zwn(cs?vHR)?xX%19HIiv<#TY$qRmUHS_M$dk}+PZCHwL?NABv@$qzqKik`oDUni*3 zxvNuaf&lf2(jAG%O~(CkN|j#?aZ1~wHHzLtj#mbrt%&d?lFO$PgA zxuG^qr61qk)SQi#L=~)_ZG59L40ulQ+|;7Ku|Sq%xxH<}ykBgf>KtVI4fowiq0{WGGVl1UV0y(`2|??} zj~DBd?s`@M6Hax;s~4WKv)`9Gw<|lOH&Ga(DUq3--1!ExEsmN}sMry#g^7K9{?yB$R>jeeg=fd4dK? zgZ}47C~V8esZ~$)ERCpnC=^D_oB0xRLw2j2J;XE4axAnXtG~A+^C4%psJijb*@~zS0aKGX5J0)Mo@m})8VQ^yjK4+~i zN&oHl2+{PmEb4Umv)B(>W1d8^Mq9QWH}blqFVLP>D#_Mv%YvTpwyikmXs1-_ik_q< zb#q9IXqz zWKq9QS=jd>T?UW3KUv3Y-cQI7Mxhv?8Y2mFelVR!zuD|Sl=9Iw*z zaiom#$++jqYv)30OeR+S38PgDh_v4ie2&9!ZTBC5lo2Qj1$B)mk;hi8~ zoHG8|8su)~Nx18=H>oX8w|pvskjZZ^v{Z|U_+p4oJdRo0Th71Tl&Nx#ex7JO z8-Bn&Z`-_K(ZA!keR(NCU~t5)W3i+|z~3!Fsf}Fq zq#nExCp%`e%xWa~3bn1RrEa1&hFDhlGK+DjXOnxnZlhQCp{I=U6lDvNv%u_7E&tm| zMA=!ZgcW^%Z?@}2@#*u69JnWrNJP>-|JR-*FfmM#HtmvPWk_`eg)qYculrNxPJ3|n zf!%at)fb-IZ*NXNZ1w-H%kg(dzc=_k*P3u|%JJ-`c{BI_m^WYfq?y|?mFLeZ!hiMp zSMR*BW8zcA>1mdIwY98|BaUs8lraB%$JQ$ccf4BPj; zrT>3#`KtAJ*Yred$?2W9`_)dHtvIcB{+q0R^OyUz`TQv>orBG0r&`YVaPIhL>lq7@ z3k?_cp3$4SzrFL#a!_g z%eLvNWh(xk-yQe55>dL3FWh*dz$06e)Xf*Y175b*$#?4KPj&y*ysz);XUmu}@8b_P zMKf%WSrG^<2sE^_L`=CD7+izPZeD)v@pyaH%+JD=w-vv>`aRC*e16664IR%J8d3vO=D*0U_X5RC zgVrYhFI(-GLOgDg%Bk2QAUtc+%@x&YwB|@s4--OX|J-7WaSrcraYQ zcd7iZ+LVdY@BVsi|37>A^%v(O&-{{MD42Zow@cQQlFirnfi4gcelNT-@bcLxdr&SG zaSom);KX65SsZLOw|f5m-enRO_U~L4JC%Q5rQM6yM#Z|P3qRSgGu#RJXlE#!b!COk z*JfZs{dx5Fk&+dGi$7ff8OiVy=Cm7A{$91;w^=^svgCK({Oen+j@i82z9D-3zVDMN zYYv0b{ke_L1!ZS9b211la!Xylek#zgZs*=pe(~DCsBSpAP}7@3v1JA*R^6&9b^bcM zRkkXN+yCeG_H%}{Dfiej7#Kb~A{Rp%vo-+(rGwM==F?^O`RboP{vdtBZt?lRC$nEL zG+cEChT9ZTu*r)cCSRDcS8`v?=jOl5cJ#lv!NBkY6tqw!3t&oE86eIDzrR%?b-@BH}MRIe`IeR+$ z?9bl&UjOR&LB&;StClTWrg-?!{*%j=eN?k-*+2fdLLT_UIAYf$;J@XVlLx<8mQB|f z1pfG^>pshU%a-NgR!^V*2>5%Y_aR%%vSlA%mi=4a27JNyLLg-?c-@B2`wk|t;5!b%PB30QNqDq5{-0I-DQkDE`{YE`x4Bjq9^DSt zICRVX{*LdyB28TLD&KyfId6LV))n!JC%)=H@4Iu!Ega>0Gd#06yHntnGLzYzfQc>S zbx12%WqKuTK{PDRAdH*HP{GiHVj;}cXEy(GZTv>jXWjdYyuvf;M%25j?#pu)_WR#o zdjC-G`{jqe>)O_CeE-9^8&4ui-u*5r%Ko25H7V;r6HgSf9Rqr=S=BQ(YbNpy;9y7W zz}@tsk=MoD6&2|q{mSXF^djzy`v8B_gh`ZAy1!jUcCTwx#I7%$o|{Y{wn*tu&Nx*?5PCLJ|kI ztq=(v<51ueak$|A!|`CF^#0&3VBTb19&#qhs{$MHFzVD*$r>bR!2CO4`gLUJQH$Vs z-f9{MOE`*-VwfVP3gGF=9}!A1qJW1wflin(D~sT}$LwOz1ar)5GQuXm0y`5KEN(q> zG*rjM!oEMhr*Yr7Uu@&%leo$9Yn7eb0Fp_n+SU6kDrsSA>U~y%>6fc9{^R#@>4RCy z=OhrxNYmPbYGz>Z`gAngk=fWt+-$3~uQ|A7&o%}?@v)mKFE1*QsVPN0&XqRt zW5;AM?S_8E#Kq`|GXQ(~;U;A5iq?rA^PYx?67N>Kwo+d%LxORZk^?`AEVMojqW@Tt zL#{M(HmFi%_B&vDPH*u?FVp;)Ek`TDCfAkFEU~qlAT(vjE1od$G$qP!h+zQV%m_EY zx8pvaH9GJSukis<(6}$o`h2BE4usR6+w}w52Q##hBBr?*p(2xLT$K%koPU@YJ^viajAVGAF_{MeD zR$UuPS47EWXZuw(hE~O@$o|CiF_=naRqr(0C3+othL}`5!n-5P zj0TpsN{~p8q$@>A3DRP>D26LRv3QIq)fI|;lp#3>k89l)cA9bp980Nnp0-~4o{AM} zG~Myy7w5j5trS1lAYG0LgGb~#dz-(CAX#X-AUhw{QAdcfx3w_>X5 zafcj$K5zOm6@}%B$-*jRh;CQ#=v6l>!|yuYERQipi2|9FBRHQUG^+jMuMw37HApVB z$TigBdruJi4m_3aX|9E&2U65+nf~fTkg>;vfACLxwe$@t6G05QSpN8Pg~G%)_hRM> z9GPJ+6{l6$exb>GiZJG+r*)<{L@Wv(zp)Oi-*`o-Rv`JS2&e~(< z?htB7Fwu0)o2rRZJaNxGC?-m5<9Em%8_Hx`wJY)J%BaCZX5iwYbE@Na{XiFNd7XJ! zuzq;4CIVX&ja(ybn&K$)$&emM5FDPBowHF?Vaj+weqj{fI{|e+V;z4No7}>nY(S?Z zO12E&ztWZMXJ#V_?zT5eauh@gjJ%J5Bti{ObLEnXGX#peIajiq{U7@yS8C`qI}FwNEgwPtTN=N7jm-t54YarcK|}!Wlmt zjOj;thfdonvY#crnKVj8540ss_D-z5+cTb}tXp6wuu%`ULx)T_36!eF>7W{=`jSjg zs7pd6W+q`yAj)e9EQUYN6kMdn`T*vOF>6q;oiWA90qvLM!gJE2E&5tQG%3hTP_|Wj ztY0E@#B|)PTXQ#GDWoK&vm^3c)@R`@F6MMYtCAQ#I;4}7C^3syrEG~sh(f`J2xh`T z%zck!5w-C|n7j1~8+0bdF_zLlj&)L@*r8KA_!LJ;vRI5CP|11I@q_`>ljJngsNCzB znCQXMu(7#BVMjfZmK&S524_wP66KxmEZWtCsX}q{Y?Tp>lZg~9J``e{8^@LxRXp26 zwX)$imr+q9e%7S_8s;-!T?7-_Rq5S5tre-88J2xb*k*!xSz@H+U#9{*I7AR?g0l>) zG^*XeV}&rGh9goW;=4&94+X!h(Rl&J%5=T!N$r(Hi##g zUcT}o1spk^LhNo?Ls6&gKg){GxE^Oy91?mPpWspaifWxLdyhc@k%Gd8@y+B8y;fUm@@6TW*aj)oyrv(Fd!1X^7(4yZUoa=DdZbFL2>QCh9+1UEs_FgO`QQ#pb)?t)^0MP zfgZ8)oFqxh1&5`t+9I2LzJbQu2x80Wbs|@iXwU>QoFv)FYfsqdf%%ljt#2sfaB`1g z+~M)Gm~38Y2=k5Q4fS&4SM0ZtC>eUguw{HEkHZwy>qMir3#j+F z9cB7?98N%FmXL_sDKI#{dzg~wLrsuKA8Q<3Z-=Zhil(F=0LZUplr*BjGu{}GIcOMW zqn>8`oha$+i;3cDb+0E(zX!%wMe2pxUKfAT^r8l=|8m?fq`Ic`wLrb+F8RvC&`^sQ zJ1*AqF-uteM*B)g*`%UAn=(_)?wOt_Ac(7LR9MjF>3x?K1R!Exrs%y0RBn zP7Uhgf}&=FW+@8#%*K2-d;WkyTrCO3B@;zsB2!WcoF86@uDc>kIK&fPbur4qgbv>v zz~%AGSsW|mm1qbejax-Er7$NkpX=!F8Ha%c3VdrD%J_3p9-I=Xg@YQfvOzzwP_~k! zD$}m$fvFPAmU9WD+l9P4`E~x;Ae;--TtOg(N75h)#((7B{ciK(&_pRdFN~ zG}mo9uJx^Rttl^9l#q(-Dtj#meFPziJbIX+rXviI5Zh(UrCgp%JBZN^B@LP;kB^79fltvhNKAlpWtg+J#cD{_! zGnJ?Pm~$V?q8Ba4~vw0p$oS_{Po>)K%u)9bgUa=f6pFMqTiP zEN9Ap8F=5Qa^F)6uX8+O+k)$UY#iisUPso{q~&M8)>T%L{JM|UKP8XJMN9IGM=9=J z;Uey!DU)VeWTWn8$NjRxFO%nUwm8Vc+%B`-tGaBOY0Bisk%M1WKbx|Dz+cZJoF_E9 zY4Fn;dW^U-D;9z_s45a_!)VoyVs;AbIUSVa=h1DSVYRSj)=8cMBh7}|HhQ6*Sp&^Iam7lRIA}8BM40>jvMIfrQ znd8|>XsoZvU|A8Lyy?ITc&x-P_VkmaWlIuuHVV+WvkFy7iUuHLQSoWYM1Eh!a z_MizNq1$5(PqN&O@+sg`VQoCGe8V$dU2IUEcQ#3h(zPMm>m*z$&RK{=;BI1ir5c}DX(Idiqnx)=gn+_*zqMhsY!3jl$$XDuS8{#x#QPZJ7V`y z2PcJfkaJ0V=|S}Pi$_*Z0CPixmUlf6em7ZCT*#o}%vh<&T8G&Cc3+t>S9(eVhS)F! z;E^}oE-%4bY2Oq*d-`!N-8dt=No7G zKbsV~LdvegYf8J2Vu1;prL z;p*n#gruzrv3NmSIyu+HY`iKc`XH{`{9s%d8`n!8D%_NXisH`Vcp8*DTjuzq+(t-Y7;-9c!g;8KsGjo zAW523dHNb@K3HM|?5?|xb61KCb{dRyi$cr%s3os`-mK-4EqY9<=jubVDQnlQi<|2A z-#N0U%ZBv1n9|ix^V*B%PWQT?d_BvTlM=f(D6JP1r5k^1DD!@%T~zp}!=n*+<4YG4 zyY08}jqikuh4h*8fLyymL<-S01m_%q=rLrRx}Hb9r|c(Eh_$VaRMre$0cF}d;T;kY zWj&ndCN&d#_t+P!^Q6M(3V1&|T$X-kN}Jl;t_;M0+$a-+ImBajDSHXHfFt<&8p>Hq zQ!PC!&k=u^(v(P6jdXLe=OY94jwkNqR?nf#i*}vFPpZ)8&hTnq$OvCHoIXvR5zJCv zb0J}1S0%`IJYG{C>qqNzGsqCnjR;(tD%ORUY2upX#9*=ROd6cz0lQyH%g!>S(3gyJB3WR@B-VoH*W*YqMnW@kD7Z@0lvIs+1?S(qt!!eb5E5*4l=mU7F1&o6l*oFY7uavS<_3 z(FxJi$>!DL^tTA)Qe;>DP)TwarIg23hGg@k2QX_+(p7mT zs&x=U<0%_TnHM#&B;=w4NWC`id%|5P##AXD_kKC;ywTy4UX|Sj&YxT8WQSds81*qWjjZ~lT?{cj(Gwd#QNiY{FKDc|6k*v4qQSe#(MC$ftD zG|aCF;izc+IgqpxI0D!!C22k=G>9W?<672u&+L7apM5*Ub|i!DMVi1muym-6=PuB& znQ;azbZZWF5_`?qA4BujOb5sA6mXMG;pzDl4hH%YCHPOoNn(-{BB3Af{ zso>3fIjy~g9J)dy({E=G#dU9InSCG~ko~ouT>Bu;kaT*Sb&=NyClaEcO$B`yIS4ha znKDU-BmA#Umc||?BnjHmkb@1TUOes-Q%5^cfQ0_ZRs=5O=XB2-E#YJ{lIRf#3>Ip#2F~!XbZ#Dwjx!j+*s*ty+|TsdTS0blMti0c?YPixIO+D+`SkYla2JhI zeJJRlm9sfIjTJ20MJGJ3+zG(!uC(o;RUZkwO;N}1Vk&Eik_yT*W0bniX(B`AOpax; zL*J6!tD-4@?seHmVA-YP)juqykwjdEds7i3(~E~CF;;?3PmJyf8%;C^hqb$m8H@|2 ztHEAO!d(a@L-Cq;(hAfhBe`JOtY}yI@D_=IM0?k58&KHH-oR+FPb{q)&kM z@!xIS;7u|H{FbTb!43Ad2;elroQWqfMLgbg>!nMbbnSSRu&A#{z6Z#BV^Sq8>_ z8OaiLCZ+*SLuN}Aa8>yNE{0uaJXSEx$xXtymugO6Ie15IaV@4I*}#Evch0&1u0=&A zB@`=9BHE8bXGa5&)2c~e1s=-?r_Of`RXj9e9B{mLh8lPGk^U%=E*i{ch=RM@B4ewN zdz3Rkjj?2MXkNjv^2LFoEG{dL+hMa2SDY_nrRRugcIFK>YsmX$!g9fQj6vD!S#Txj zyu+Zuysuc$eu98F*UMDM6kGP+GyYVhzLqoP?Yk-idwEDv(d#Fs^T&cBP+&Era=AvD z@(Dpv4wvj2#Po~vAGkw!Jnyq-p+KB%ji}!6+Ua}Cn-ywy@zScjX{BA2zHGh^ExFdO z0;HT58`Pl?+nG{=BP+X+wl*2?+cb!_{7I6tLT31Y%4&E&Y3$yesY##afE;9F0`aLS zGun_|{D8;qxkJu(VHY@Euj^FFQPw#4WvUjYIYpv#H?d$WRCXBAyG@I2n(7UE==MeP zRplL+U9{`_-TPAwKa%GZw|d$pX$EBK7^Ym^eQd}rnCkU&M8@?3qj07WR;Vg3xRT1F z>Cn>Ots}*j(qr=}e7eA~2&o_4IBgS@BK6Z?PQtn)cLt>#v@t|Z?JZ<#^xfIU51z}2 ziI*lwbNMQ{!`%U|6rTIFU#{gCFu7eiPJx+?sq$jeqCp#iP15u<6<*X;^h^iiJd?j8 z8ERb3Eg)GJ@7upeB(N|=N7acUSvA&<>M6#epm2+nk@>Blpxp;rI4C!m*_6er4yXph zS~d|3b2%NS>NZBdOMm=ok zQ2TgQ$3^%Z=g{GVAd!theDq4ix~#nO}WXn+Iw?nIfk7WkapbJMe(GPz!R|ZWlp??-6S?Cf`^yCpIqDf?ANpH$mA= zoxG&UMmlK#!Ge9Cj^l)e63xCl z_$zaSCY2jOBQY{L^lcw18FHI?(($~*ed5I$g5ah+&HgC&Jlf@)`;JsUVF?G$q?Fbj z$6V;#cFZ#i&!Yxd7aHAlA%{7mefvyFc8Y1LOf%z<2sckA#mwJ=cZ*NyLMdpuqHk&o zddHV1GWjviJd{(h8LiL{9h=r?O0i*0X=FlGbM9g_6E?BVQZ&vDDZq@{ndGZ(kI!Y9 z)ey94acpp;1U{Eep8>l>9ui6KDF5g|x-+nWNsgjw*4{BtO`CB~W`!5V=MmJ;iDvWn zAn<~UD??CI=jzopP<~z==N;1$$#U12Y*A-IZ-P z+mbZ#<(4Te)LzAt7iJ?u<0;2z257c>M{3%!TeTl~H8I)6hoHAwvXFPx)T6uYZ`WcR zly4=mCpVd(?F188=XsVh*Wkg3akTUs-bfi|H%)tMGiS|r;88JjjU@WKv? z00{}e8O3Usb&Cs6141o7zerF|bwk-2bh+?Q;bC7-h}l(XEX15&+ZWjVX-fg;ETT~z zp%te2@DWXAxLRyeZOG^Oc^ z5)-LF9{$2~R&(rmSp-rfdS0}z!PisO#5sG-xTolz(7^*o3waB1K$U^{i{<8YEJ11? zd0-;sR}^o*#CyKmMtzfRwXL6M;FH*WhF5F((-WC^F~e1Xjth_6WXvw-Aw78oHY}Gj z?w+|MvWo|-8JTY>vQmMaPb|gM7 z@`lLbxU;$XWSi=gX0Im?8;Yngyu~tXX?J-`z_>)FqEO7@Dns%w#b)DmO~wV1CUt%! zvB3gyboyhul51FU@j9Ht?1BB`A|WnpdMa#TYUXa8YtzYOBLisj?E^0_1&`??a{Nd$ z(ovt#IxS|w4V;5q>3U@!wn=qJ327#Fx;8S3m=ZRsJX@7MUZ6kmt$xYWtDM-JcuPEOt=ION9w)4x`5ov(jDtHHKKSv({utVakop4}{=NW14| z)ukFSKI<}8N_EGaKMm#khw{bdvIpTC!zUhI9bD7B%k9Srk2m;hGAfi09gq}6v$}8n zZ~_);_M@4dqA>DN%;rz9jG(Ud5_A0r0N{iReRJP<{OigmAIrR-O^QB0EdRpr#C}Bsb6OBJh|Sy6d#7(&_u_KtqWdDR)l^F)Z^mMZra-@(lCr(%u72hI{@ICErkF`C`*#JEfLGZEkHlo90n zd4j~Pj);KZtrFCo`JU%+1r$`pbr`7DD}X9B8T-g)>f@s_M&4VXO8>XEbKbmB4ND)o zX$tGG9K8`71q-_LeU5aqbbGN3GqzV-pobn&yvC>hD?5wH#9%x%??P1{yb$Yn3DYxL8wqKXJ%w zx|eP3E|X)eRSSzESTrXZmbvY2=A7+aBP_Iyr+*w4e-n#p5s6m0Rs?qX#8q=#K(2}8 zIJ#FHhl0N#6R6f)Z9U+>lPYSbh~)Z2A~=FoU^0m{H@l45R1iBEnmRcROLEG%iqAHH z8`CBciesPD))v?eG@VDNP`-WhtZhwYp27IT_Q$gZ4ze{U&66OGzsl91X~jUknjPyF zZyafv6nWOrNvh5&fLj-sC95_}_=12P88KqG&&@N3edWlOlmk<1ET0rcuw9zOcl94c z7^FfQM2xa0g$JhMDm3KK+(~#*7-nutT@BovtPafBcjdxJLDymO!@?9{B}OF_Phj2J+AU>fsAqpm!UG?Ppqd#sO=pKQ>v>^+)s*fp&A z`FV~>5K&&$GJBOG?eQ1fc$c|}rmZM5wi!;j>kNjBw48c+Zsw$R)^^Cslutb67-kHA z_X+qzdGM)+y+ves7C%_u&WV&oA-T4HlYRPjEDfMy)5iIH3E%CPYM+1gLq<`)QNT$H zjQL||>-=KeRV)bSz}LtKhdl!)58=^2^ftCpW1h0Xu^@Na)U_(+#?LW|Y1;-v=9tT! z`l1g^)Wz|n1)h7)JUm>f_|%slfqew0&;Na%bEa)hMH)Fea9?IT&d(bU^s|n#BQZtR zYFDO@HOJO&Q)Gxk*OASKtcL6karKjZ%0mrqhaN=^H4cd+ttwV{|Ej{?30?K)t?oSJ z=L~j;rhej1%%{QeiZ9(E(b6>--)Y_|MsrA*?N(rE{Acsp#QFZk8WSeC=L%tfICz*_ zReSZ&t~O)0S1~gtkQJ;n?9Whz!8Ml%lZKk=?fjp66B^pOB^x6%Qz+Wa0mIE0I6tHg zA`pDqNR^1x_;@n#;E)BCDc+nsldR`;PR>46Vdx=oU&U|%c#0X4EZ-Bz8z(0ujexJQ zB1-BCE++GbKwRVdF3n!20VW@^TwwBvA~h%Q6Mn=p%YUf%Y*xM@raB+PJGM76eXggl_O! z7P3*N@%rVf`VnQp3BbA>=GS#->x{N}f8f*2oA+XZW_R7vcKQh=oDg!=#gzDUgUfP~ zxLzI;XLSIJvmkl-D_zMn#hrSn9$T-?dwTYKE;9HBRGM^D2eq%+d&VL;^I+=EU<0t8 z4tPYN!twj4sFs>}wrX4iKbz$GJMR2?zl+H>Z_k9JZz2i3hW8E7+^}wedn>6+xpqIsjlN_|6{r(~qR|=_PO-i1sp7PbpI-B&i_j{xR3ou_`%=+5T)}Wi8 zf4r{U-IKlc&e3!5qr`4P4`G51c*Jpp1*@|i#Gxo)-vm}{_EjqB|Jb$OH+nJ;BsE~j z;}sO0c3^Zi0md*RMz)Q_t&TKoyJSOC^yyz?ye^LY1i&}Klfnk|XC7G1RPBr1W$*Zu zH^1q?l;>w)Z^Fg7WCspzSV!J9c(mwiwSIt$n>RCn#2nziv5ZEw=mVdy)^7y9=6Zds z(R9?X-XgO5PEVt=-bR_=`zwwCt;G2+0ItPO#0lL!{Ij(;JS_8z@h>Ate&UO#v`S*8Lm+`>Y#_i&W#$vxrQ(% zFhW!vrdlRAbss&=@u}pSkC0#dH1+ZzBG5s5v#y@U zhZR3Z<0(BTe>TUp>+Bmg| zK_KG^_%(?6<^EwgoUyN4Ds;r_Jm4U-RQcZrrn>RaRIc7;Ur<0<+|g>NKA;ThPKobM z8Ng3BFK}>vS-{;_=e-etCbH{y)8G34fd$-B#dpJ*@PUW9&pSoHH@(+3qIdkxXnJcA znK$YRo^oUC)#zAY;vEwWx&U{sP5{dyeWK;n-{egPyr!1gGr&Fhu|0EBu?xQi8UHCqVqwv8{3p^Tox>}#}6+qkHj%L3p)MjIx>otlx8B7!b z1S%BXwUrTDSX~+g+X?Hcd(caiseMciRYvG2fCv4yy}|=}iu^J_NKwJgGVF5U`kjQp z|Ah&0tNVpqiZP&>${!51AgKMeFh`ORqLz0&}<8LMQ1u)rDa&H|Yv_T^xH zO@BbG;%*FhRgV4m^V`eliasD~{TB`^ocQ|f^_uGlXjY$X*|MWA>{qOE7 z#0AN8ZR1hXsCUnD2T5c;yI%a|weRj~g%8ViNqgPFP2W2lYR{9?F}|YhOc|N3$2TVV zB7e@h)DW9dbW6uDt>gQ&p#=AbiElrg8==fr4p@>6T2F(WDW~jcchs#>Us_)o+S?HG z!Gm6m$H3lMAc zvBFO*+ktTn2Wn5*z4#vwH`OteEkP-j^P7?1)8oP~Q!#)P{QPc7zq`(i>o)I}cC4`V z*xU8~`r(l;h?F{%K(PIQt@U?Q=QZ>LF>cwP`Chd;-pilDN%YVc4Y8Vs$a$-E%ua82 zuGLE&YP)(z{qfCwjug)@q3^fiCKsoyhkL4Jw@zTEBSH=dn+I5?(+3JTV{>=%-ZF*2F`kY-n*ecu)uHm z^LAL9RL{$C#xv>&{yz_m&qH|cmYGdWoJg>*S}b~yT=lL zYt@fg*1Q*wU(E4uR_u4u));;fMItqACEYs@)35wYaiE17k#zu~_DH`mGX(f1o3;+|G#gABxcQP$8ZKlnzR;5dUIpRpQN)J)!!_e}7Qtt_E)L&<` zD`OP9j0Kp$OZLYB_w1ck0w#4SgdpF@N&>F2(oUW!zopg}NiT_jNb&;dx+ww!$oEz# z-|7xn`XDL6W3(bqI}|Y4ZymM2-bWeRgats6%bLQLwTPCeh(e!`m&zBFn9e8f2ULLg zM;~QolF6`R7qY9QwGk7R?_I~g-d}4B@7GZD(Q|qlXmbT+y8X;ai|Mbns4)e>7`J%j zb8rgYR{hza?pXP@;~7vOK(fR}6i}Szz3>OiD@p-&Qfvga6oXjE_tvq0({zeaQO#@k zA8U*9>pnYSvOYFi7gKlW-~TZucGRwkmGS#{zldY!(j1g0av;obP~`=ifae+E&$#Wt$pJCD+gyUQy0 zZo?0?D;$3wxP$n)zFi>NlW_vpjRU~kNPu)Pio&E{T(2c?6Y9xoec;0NUS-1Cn2x(_ za1E=V9EzM?JE-iEc0jljaHdWvx;_Pc3nVNi_KT+e2CG44M3~?=+3KUd-3b&@r8_G* z7&)8Y*RZ~C0vT<7aPAx}w>5y|F{*(-5B+Y*sfSYU6M$O!eYb+2D1bw(*Q=dDH?NHp zf4rkEk&BT_I!cPx@E~O!5SBU;raY=sY9~$QJ!t2$_tC#dN$M*`-4q4Xi>HRCiLb_& zeqSS_EP@@-j-lus>1h+IXzfVIO0{l*uU*p)CqpktjqOOs&;d2Br&TFVe)3a+v(4#Z zUyUtU9=M=GOYTu~inNt7+RYmi>xqzxt_ojvgo(F&fcsaBTXM%yQF4~T%Vhl5TGFo! zHHy@REY$lXR_{+UOX2Wy9%w6p!&$W^2!>_fB;1~S)I#G@X@RCFaS;3i)G&yim#z&z zhh-KRJ!(IYZ5#S(;P_AX4G=l5M4t-D*k|ET28v^`#GdU9uxokIIEq27*x$5o!v_b6 zzy4&9szSU+E3ASx5)5RKA9uSPn_kq_ez&qyW%c*tKOLeG8I3!#Izq=YAM|CU787NtyRp(*Lt^~ z`ca$_zYa_O^?UQlgyOD1L49JkK$Q!wa!Y7lfp~M!cwqNZ&tpDryQER1g@E#sx@i9o z#VP+-2>#t&KZnRdN9)KoP5Vy0i_}ZsM|OXDciXru1otnofe%<&Hue0m{=;X#MC*Si z7WlARdJg*^1lO^WcNZt#@rt&PH;K{;r4&-rX~fWXI~k zC57V#I{iB~D=QN?n1VatrebosOhWYG|x8oQ|Sm5vXQSXKX6?1x#Eyv7GMbCp!r;x-)S*3us%ht zGed{;s;F!vBA~RZgtd0$Hew!6`>UhmBNfe`VgrCPdxcQ~fJd|ng5ZbUb<+{k32J@Z zOt0C`xZddgv@}Ci9uMpq;RQ)AR_ha}@;&*%ZX0G9Tq;Dj;F*0SgWxA^CzbyVdX9Sx zuCa};9lcbNCUDEa>)0moa{Yj;M$PAM90kQ{oLr-k;#aJrPc+nUg)fMNncb|Of{Q4Q z=%Z&{1=ZS1dc=ND>d;k#LnC*A$p7V9NG2KAn%)?Z8ZnV!iMC1N+qpV2AQPE3NxcD= zf|TNxGHU!*t4MwpFo%OMNDU5xX4Q)CA#Or#@P`$JlcBK7Mq)xzLC$&^q(jU|$?gqh zyO{hPOviw0$iXWG=i3VhiT1$Uka)38j)?ZaHWp~g<>-QnN-wCB5KJEM>__c0k>UPs z5lb6Ul6enfqa{Zzi1K4PilePEX4jr&n8xOz1%T0lj?3nz0f^{aln#OscJWQo-$6wn z4(}F`Lp#%dQj>U{76??N20j2P(LE^{X@+c;UzY;7nnmd)9}9c=#^`UDpE9AuW4(9- z6F@Kq54mnmX&S1qw3vqLC4M0SKr);|DNv8+M@nj0!=Hq1U-C0hT{X8zQHWIymU*Wm zSc23&DhKZl9l*I~hh6eTMO6nQ&?uG`FvHs|Ybpier|bWYDcURg5IU~6YM3<>-hmnR-Unt&hozVP9##1lxP}D`GFm*lV}PKYr3_T2 zQk-poo&?tPTa~;14r&4n7c0B_LT^nfn>4+#w7g^wkX3_u^oLEBz2vL3&#Vr_LKvsz zf*kZ?_=UYz++fY{LYLjFO|JJCmO?hTj>V7Bh0SK5A(O>R8rYoo+O@O*xDsgW)yM!6 zH#Ruk+ZU9%Ely80|Ff7ei0HHhQJhUfry9`5Q>97{KVK|g)A;IitVQaYAeb1d^*3lg z4zNzzkjJj%A|uzBoZ=iA>Oou{nhAwv%Z0iFkiz%rjpdnRZIo_he*Z#45m4QmfW;PoeKXufsgr+=Ba@!0Q>OeNdjw4EWOou;HSznFD#+Q zmJ|b$`Hh=>6PMoHZpI(}dlvc!qxtV*{{QVv|2c+adamK$ruzRn(R4A%uk#4TA4ikx zr?4X-m#dXBk?{A4q+3QzM?i?sV22ZUY?)eHa4H2)*aSj&Ajl;HOu&4I31OqkY4`v=zd-{#ZKS8@DdTYVz`is!1Qro8HR zkKa9Zg(wvTFg_>}_-~dJ+$uy`uVos5-akIBn9E6_1Qq>~C;e{|mVqjmMdnKWQgrb< zbrJvFDwGd0o8L*xA552D!0O)1Hc;jAzvQ3)rt0H2WiQ|3SiU|J=BSU)y8Rds3}WSxA0tHD4_u%RkQG2aD|& zv)$Yh!<|---1ehJzN-^C-~ZY~!vCX_x$<(`Ned!RU|>58$4Xxpr!>6z>f8|T^^ZPf zv8b^Mij)Xz;SW~?$WGN-=7Dco60#6n@?uU)p9!W+1L&-$(u@O2ltnJggK|B&s*Ud%_#2u8>aR%a0)eT zP`-BbQWQc)D-}iI8K7tXt1Y0(I&s#B)=y~$FuqCJB1)ic`Gsi0_#V9>`M(l1P5vyb ztKc1u6M_L>YJ|K+HqDW8k25v8)vX zw_SVh1WYcPq5(d>TAi6LVY~9OKKy`M!VBBW#>BJ*xao%Q+a2v)|rUJ^lXS$8dVy zfl>P#Kqk8nYAE}8T`KfQe9QDd#~6ZRt`#G_Kqfw+Lu6W4QJ4(0z&bEarku~NMh<0I zi6D8*p1jFi(((!jgSEy#dA%JKcXd(w+MUc4N!LN+p(np`i?T(tK!Gpo6Tiei>aENx z$05a9BpR~nYVBaK{Od~-bXu*2BB$ynO)X>=<*{Se#oTO(UZ&zJ>tyJIdhB+uxuZo9erNp)*>zfuth0FnZon=-_nzH5#&SHk3cIti8FfXZrWct9< z3@UbXiMP2D1-<`;A8#R$x2t(i`O*evNR9%WwQzY%kjFP^ z(RRS5;n^8!a?m2!Y8=U-m}L3^)>hf!e&|eiR)UR3thuW|^c1heNP;SpmULf6N9Dvk zdvVTTu5Mcl&4OAe+uOV>h@6##0*oen1gKuzz#H2Z*`w>NwSAysfyzu!Y3A|LvZEKW zpyR}Hp!V809@>(?hu6-)_3rMm5fPVi1>jYT)&RSt@4;&*11Bc@%cEC`Wz_x&y3%7N zPyS^_Oiy7Pj=~Iy0?=A(OrT(Ogdc}Rc|5-obAON9K_17N+Is;W9LLfVazuMPMW2dF z@;G^@GDXa%u*E6wOqm2;dS2mIXKw#w2@Zs)$o{GE4|}l@6Z_qxnm3p~Q&r3Hu<${B z0bqGR>p`ZthHsh*g&J$Jwxz2J(E)o6=7pH8f& zpR63@u-G*b93`f|KJPB(5E3y_bK2s~1_eQ4q3FTM(?I|0(ERCDt~wz1TU~|PN)$re z{dTg^7gnh3ZA?lT%0iRw{M}as$hes3!J|a>Ig4P#A1u(mlR4;@vxLz?pb5&K zK0++?d-=nW!vEP%<&U1W{!HVMcW0pAUERMqkiKhn^TBcIf6Wv7(?P8N*&gTL*P&ee zZ`tBS4;&)v^wf6sPsgU-RTKQ-2<2xUl(bEM+F$&jKhbGJ$Vb-6uPmC$IRMg;{$Z_y zI|Q}r)q_`@Ghct*YW-iRi})QRA#6C{oj7^3oal- zYk(FwDFMKXTl+w0C~v+?6QoW{r5H@2TrLB_M}U3+t+Ku|;;}}3gqVW}eDks%#gWKf z$67iyzBq6|)Fpixq4{fM&#wy+Iz3VPquwF_xAj0{C7`*|XF{OT0Ol5)&JPu5V-}OH z3-~CI{|M2vI)#p^oajp_*ACucf5c*1TNe1IjZTu`&tw$^frB%Pq70;b*6-Y(*0y;- zB7HLOSUiB;gi2qh?=jz?@)-O0l12_Pscb|D->xhsKUOaJX9MhX9r1_5bWH4Y*zC9G z>rA>M7Ui^N=LG!+8|XZ^Q}z$ya=Tp%u*pVNMCc_MpaTy8-oBfnHje_-7uK99iIMWo z#+NHDDngU&B>JsvEe17?ME~dxBtdQ&zvsOYXv{vv=~NK-RRd)LG(iwL-|_4~5oY_+ z0D}u)$$W3FMvxii?g7W2oxBiR$*xSP0(c$Y&;xk4P=S|I*o=5PuF_}+IcA#?zQ{yD z@?x#4u1d9d%>^c{y(8VFveCqQ&OWTpI^}UqhRE+B@6O~h&+W)!^v1?LOo0(czBWnB z;D$u`v2BMJnZWyJJyVTgQwNoFBNgR+NH5e6Xvi9<+?8yu=Y{x4jPcj3qyC#LJ5{r* z%UrC0mzlsitD)+B(d;Sbns`cnx1R=mhJ*5X6>JGfrz+T_+~4IDRDX+|kAAEu44t%| zZ_4(+mE-@W{o)_qV#fW0LA!xz&d#$zlb$jky>v&Ak z3C)f$X=fQejq`C$c6(ez=;NzIV&MLfCVmy!vRVI7U(U=e_v{YTQ3;N>6hhc2klE6R z6may-P^`7KVLWk2ilGdrBnn1VJZ3IwHBtM0u)4&gJbSH+juG;^X}$a0O}h)1ABn(* z$nrsHCw%EndQVD264a)EP%2pow-5>ja33cXYU5Xr9h;K^(J2DDFiDPbh+PivPG3xo z>k%d+Xym^7m0z1a7IqG3eJc3Al=??AOwirJkZ)2CunqXz`WiY+G%X(kZ)<{l%RdXN zJ&W@|`d>S+jdmhGmACz7n4_zyC`1{6y_#D{tbOBIukAtlkbH)@5(a=HtU?Gm*9+xw zv`F!q(JX9*ONoGJB9E*z>cv)|fnK4DaG&_B^4|oU788DX6JR_O{T4PkkLrqv7~y!r zTApY|ck~)C1Iq*hmhytYk*6I$z*`fo37qg2SmiEJp!W@Hfqc*_;BDjxFlgL}%;HT> z^zk{VE)#jRvj&Tb9+_5-{|DamJm^qER`0v1S7k6qr0;c16bJ!QU*U^Igi(g0*|*@ z0hq%2XwTb_wImNe;EHZ8L&my{5(+cJ9 ztkt7~dYaVj@a&#(Yx>7dZ!sT2Hlyr+ASRY0O}l>wF=1d2jO%zpszLjj+k0qQd|%VxytR6yrRb z+F&*F;JL)8rat)xs2QtQ1fVLG=k>gNSJ3~#_c=K%Rgs~CfL&^Ql^KIPmI zTo|kICyi2#8vDpd!tGocfJN$9;h1#yErJCDsxK?f*-%14%I4SAhAB287uRl0){LFU z6{06i^{b7%3~=g=n(W$L%%jXv`_3y4i`=j$#XkSR5x}TsJCNU%_ELxbJitNydyn9rj5P^WacNk3$aYSho12ezi5>q22EPuf6XMYcgB+MR8;tMeNcf zqmC67kY3}6iZhPj=m;VuIuWCkP$EJg#WDga5K)nyjDw2OiAY`reu6Mn4t@XV>q_7sO6=rQDWj(R8XPpIXDub;P>oIO+}Q3;6U@CdvjlX84?4BwXEQ!~D6t#2YC$E+3S(e={=E8k6rMXKwtL zOs@mQW%)l`uKSnvljas3t(<)#ScB+!vK6|m=lq9fkp(~~(m)1)ashnxJbU4Clmes#Hh(YA}}_bj-WRTXziEw9HFE+Bu^q;3<~z7q4{)@_OAjM_?1t z*yzCAI}RNeh>+`4Gsf$biy;oA+R2wdKBE2E++E;39IV3_aAgHTvSW?KPEps(==B?R zc@(2FDlJIqQ#4oa)#uKR_s}*O8N5rg11hWI9RK+mo&QZ|^Jht%|G(w-XPMT2h&H}> zlmF3++@k-f4XuB%*wbBWrNyUz=lF0Q`ruzkXa4W*2DkN$R8y zspdtJU-D#cE=?BX=a2398{7nN`g58AR`8E|<}P~p=|7(;Rc6|JB|0AYADSh!F7J#- ztxS=>1VMlR^bd?10NPis4b27sJgEQW??KF&goN2w9y4EHT!4>=mB6{rpXehi z|99{s-v~9hD8387jHSWV8E?|#1L!L=1nKL?AJ`xWkGv^r4bZ3KbPGAbDadKE^?%^^ z8k!Ho6l(xXnm?a^0)7SngE0rMnmlaXGW3Nu4UWrlMHm2lVyI3p`DYmS`HHj&*q!gv z`5Lz_rOsmNgzJB1`td73sp$3mC)K*)DMHKt`YT!h1O_%;^6a5zHozJ*0c-G8O-bAw zP-ICo!rut}8*Gj5PTjd=o*C@9`oAxWS%U0N@m0^Tn^$!xAgwhb+AH+LJ}4?h*CC zeet@UEfJ8pVE`)8nkx$P99b1M3CyB3c2G#%HnpG;z+93ACxvr@DDo#tH>Um^#GQQ$KQqL?FtAn*J9G~ zo0JdiC|6^iAyDnad)VhV&0y$L(1; zlr_)9#EztJKxAH_O>}39j$}3UHMw*-!I;}Uz?vT;1Prn)`76d83V^Kp(n56hFp1BF zsOKVC{EL8gYKGD)vw2zFvm{7dxzSx1+o-l70(ewkXv%K@;3iXanp}|yc_IA*a_Pq6 zFMsJfQL=H*=PNbO5Gx_l?V)xwh0?Ga1tBmgAQi1QTM1LI-Ne)lzG zE_weWJ3aEo4hT1U%FT#{yE*C22cv+$ToXyAY z{o_{wbgnw97dnl(D|U3ahJGoEP%j%RU`fu^K%DRS64whc8vux=Z6;A8$HO%ucOik4 zyV7METpE)YR|SZ`k-r#_t_eXb>AWB3A#EMmjAw7R<_pG>P^gkn)WJ#9S4kfZ-V(ks z`Y_#j#LW4m1T1mpeL0RQ&2=LX^L>H<+^zX%Il$>hc4==`@Dryidy}lF-dhLUuKWJ^ z=W`$o-YwJ;06BJtyEdlSqtm$B0K~A=Jk z%(?Y6AVm%R8&_R4Fk4@&_<7Z}=)eC3m>!^AU+fpbG2+?$I)Kyu@BUsxUgvt~tG`*F zgw})eKx69^Lwc&AZh$z_aRBt{6yEd|H_7ReYD%r7*zy{HHEktN=YS*co@>WT%{X(V zst(5~UykXf2ot;FLYkpsjt0f~ZTvia23LYo0ph}($Eb~(2R++8XN2d5vVmq<6loSq zaw{QQC)rd`wiqfdBlvkGI61k<-Vz4Wg(S6dAkYp$MiH89{nx_;?k+#Pq;{$;GsLm$I9u)T${;@hWt*IfZ4f_E5D!$pAHg zP9f*b_!cvY;&YPTIA>ay69&w@bzmsE+yoxSnM>kC`)&EcQJ7kQ$Nq&cM{r|#xG}2E z<&p95l__E?E$J z@BmVWmLhszF1zW0`A~a$WVosRawBNgu^MpQk>!dvddg#pA=N#o^d4*NrcLtqvWa`$ zFvTlay+6SErh0$AY(0Kv{TJ3p&9nY0i1f$o27QAOWDw#Ub4lbw5&5uAZrYUB9Dbck zi}^{K$ec?ws>aHz@p94eO?o;!kpm0d2L`DEc&9-lPI3IqR7;_hnc)qTv4Y02+WiMc ztn84FxIf4?U)M-V!~NEltLTOf5nc_*>X!x4ApN!)%smN}Ju!j|&Ga`;^cMpQvb<$x z(*`%YMnxM*(bi3pqwtedEM@ix}o- z5AYj%*2EI%Q3Z#J;UN0~+1Ehywi-x>bfD4P7R59OIo(~NmX*M~ZnZvcnYqH<@8CZK zUMKLA{@|jTA;7R;P>@tRC2yRnD_-$wsW3XHpB^=@)%Npvi03=wWy1)(7y(nx0sz#J zj}v@%8td4ZJmM}wT9YaK*hc=LBE-!jQB?p~I4B?q*#K$*K#rt|BDGcXs5}3axaqjBIzpB9MAU-t^errNXXQ3N@*3Anh zw1%O$+Uhab+*17T7(|(iza&~pnO@2|a_g|ydqOX%x8$A5rG4fq_oWH$V?1tqu>g?Z zf?^eDX={Icw1<9z7nDh(hXS)sk-yONZTVpv?!&g?#<|-RJKP*h*=eTiEWnGIs@`rl zsO+ua@xez9<0a$OS5<}68)VOK7$1c zj6{P!nu1uSTLEYsGa>29NE)Us%@^BVjcLCJeJ(Mjd^TkTtxVzT$~Vim$hXNa_Tlf1 zt2t^V2jB3ZUkI9pF>q#FIA)TMo9rg2J`()BZgpKnw<&%SK9JJuK}18cher3EbTk<4 zV`?d0MS8!&jt5iR#?Q2sWZ z8QBzdMH#P5P~KGDQr=c3DwCASN`lgSfAZ_ZGHf-HLENlXQq+O?tk{c=a@-SYrodz0vPW zbArwK8RB>8Shbvk7p20asUCa$rdg^!nB%7yRxL~%Dn^MV@*$|2uf~W#^z|e{5oxx< zMNmpyLlTwLyNS3>MO{#(fpBKeY%Apl7 z=u#C;JqPic0t^OxIRn>Xi)rcB=tImRrnUgy@M*@Xy*@w%x(g@M`N6nwi2VJ%L%fHu z-7I<93?Drt{dh(AB#wz1RDg!LM5O{W$s!Heo^EkDs=17k!`F`m0P7B!O>j-%nr^JHaiE*VIsh6=)i%@GXJHS zLBFCxf{RlamF48~Rjg}`5c0ZNz*kg5C5Mt(L<+1IU-QI)<;gb`_y*+!eIHdPR@5Y0 zvlwEB9$EtDtR;>m;=PujJmbM;^HJ=v=kkp&CW*APA0aa_FMbg#N`9QP;OJS`JO~Q z?#t+#P6sp+I4_JYbIp1t^@VRh9|E=SSFd@R>r$kH&W5OlAvoX#N-$JT=xPErKf%`t z&_YUtC{)FukYx`-r4I_sq<773GKxkJ7%IY7Spk@VVpaqt%zL?s+34Z&4Z(W-uf#W7 zNi(@nS#DO^@3I$WiWdcduC8XK8cgQx+0Bgcrf5c($184q0h*9)Nt1w0F-y`d={8e+ zFl&_EB+cCvJZ3Hx1Smg+d$k=we!ks$7RR;4aoYmII~!*i90h}Q(qPh~z09Qt46imt zYFx&qh%2zU8?fkz9Px?bc9k_?54`}ph`-b@GH}MZ(9F4G7rE8VePu5VqG*OVk?$Yt zs|L;B$J()rHO}1?COzB0&MLojw$K+Q2h;%{E3zjE?aK^oFo0W&6^Z*pVP=tzr--6Q zBE7cnO-kguBW!VC%rN#g*UeU3<{^LXQ72OZ#tO(`KgUueu^vcRkT+2T&ipV|BgP5i zL!h}RY1Fte*I=?PJ6k_5%qpCFi4wq{?*`HR%(DSCh)zZ=NkkXD^Quqp9X0=b;$!P@M~Yf(4AAYrRsV`e|!Y_-&w0P_dUeJw- zq%{gdi(+4Rg5@D_yrll8t5XaCH6zuO5jr9?DmME?#hgD2C@MkO!>S*161s+OH-5bR zq4D*ErmuOh@l6tX&z9qH05z3!ptG)_MAU(jIy(;)-|8$BLe;{uGMf?H%4e@6c(sJ4 zOx0MgM_{RafUm>_u$i^6m03aTJ)1;xpe)re|JsM;5RmZPW>_QFr^H}Bx=SrI0(=kg63iq&>)@w#N~Tt(+$xlhYuqPiGsp|S`PBn| z1fG9tcMp`P0|)jjoL`XnhX34Nrl#S4jc1LX1}?NO^}t9+(@H|g(CEaO=)BLngeQl9 zqS@&31`t)W+i|KMg%x}PH^4j|;AcO+?FNgGV+&ftkrnvC2YQ$xZBk4jh}j|Yw6~3N zCWb9DV7@a7tq;c*06cd(r{Q_)b%d280FsIy1nxR|giQHm{szy6#e8}!@HvnScU7DX zFXpyI7th_Dm@gp#Oz`uuc`oS@-6d;?GL4z}!@^xg$kcQ*$I@5qZ=Gn~ z=~m6B)*mhF_ucvZ9zX+a4br~N?^=O3p{;JbV=NFR;(*1B*MP{cL{BGf1?y+Sk?vbM zur}N1h?~N>O|((~w$EZ~s^JGFH+ms=*UXP_U|)I@e?A4fvETLTla>ow-?HHDNe2UA zu@jYfffo-=7mR))7#8b35QXzbFRV#|-iqsbeB?}_?yBMqM+VXMft?vIa<^LBQ|+>A z_k8P^;pQ5LzxetXv}%J#Kv#)WoXDk@jlS=>gkCpx=xE^3V>!S7?se&SyS32nozXjP zGCwZdpSfrQDt_W#e~YkUQXB4GQi|`WZ1shcd^7kuh4S5MNc#-?bGi`sDjdORGB#)z zs>`6s{Zv(YhoOml@mBqKGVe|8m0&hW+zyw&+t_Lmx_Yl?A}yrKbO6e!dX2sQvn>){ zmv7<`?LwUx`O!Gv0MX9vL4n&q%C@O=KO%@H`UxT7K96z!oM(wLYmQU0 zPe0wRI4KKFo>6}%$R;xv_dKLp!|4-T6`IZ$<;4}~7S>r3EVxkSaHM+&hdYJ~tu`OpjM$fZZR^+7 zDD@enabeP(%8M@|3gZvG?A!N;lsdtN+V1T+MC;o=%ztaQrJemU3-zJ~i~QV_eJ@;J zkd;*^tO{3W<4x+Ghve-Y(;IC;8}la~zqPY8b9+KAtKbE&(C5a!3v@1phpV1afKH|sm)B2n%@7qfP=)r}RT1g5zX$b=Fm18$a@i#Mr&cQy zy{f7pVAycEgXeX0?~JkTP7{w)tW%d=4(aiv7KGt5!OR{DH(;G*_c&((Rd2n19;yH4 zP0jAyPpGFqTV-ZxXYSy-WE=UJ8*Z?(wDmZ?`ZrOcoaMw7lZP!?c~l*O#U$kDJ$rer zpE<#l`1&c#=y*IeyaRuM+_fUJ8a^m?)!k`#Nv%k~84fe7Zm!2=-h$^ik)DNH+XW1i zGxRB<+o{gjI3#c>ppbFc9x?V^7cM85vqzxMCfd<_J7Z2*Q zUM6{FKkCX>8r#Ytwdlz!jJ$S`oRMm{3bi^Id5OWeSF}~7s1cTPtH{k3w&6X8j31q6 zcwR@IN50GfXJ#HxU0Ids;=?t!oFt_+lq~jikjLIGBchGHRV#9lNNU?BI{YYH{yutJ z6_1LE?PF50#_^s!?4?1zx4H&fa1#ohtPjr26V8}39!h7ZikylN#-|g>>n-yNQ5_Bt zsNMt~TrEfIo9Ny>w0r0QA?Ey^#C}3Uaw!a4otEz?@Kt~{(_vx`@$W3wO8Twx)Ay_6 zVhq0$dJ`%v<1-DOk*zAazw52Vp2xAt=h;-{bu^Y{j5ui0SKPeA+B6r}p+oDbj8yM1 zpej*}G7FbW>W8#Pm)SIj<;}iX{8J8_BLljMx!dwAY?s74=~!K2nf+>KGo5YTgW8O} zOf;hLx@ydvqkM$GEpaR8r0+f6r}{>C^48h1iEAeU&$|~vtcB^1Co=6XscW2_b;5!N z%qK}f$sx>#ay{p*m0Xvelyr(+I>pKWcKngqnZAi>kT=?((#}&o?~NQ2o-+pqv_x`M&Gjx-QNdmj*}bpTw7ovr$1C=Zd0*ze zudSMdZfU8(7u(xV<0qlB>0Qb4Q?!kp7@#V`>9$0(hMujqw79oxV3b0AIb*IonC-$$ zf};Z2X~eoBH0m`b6B1RNfm+TJl_|S|?K2B#RZHEUW!P8Zy6zyF)U=74t`b5&U&Ju> zu}zfoGvWQHk1AKf4-++n$Y6^-v9C}L`obvW-IDC`20-3AjbLE#J+ee`+FrN#?brIc zx8CkcH-cX;qBi?w8u%Q&D;2{jW673Wn@I>gZJWOC6g+Y9(qi50=AN`g@%kc^i=9<+ zX`~t>FFRsPC)nHOzDqZ*UG(x{VV>^?tyTwKzteiX-P*ayn24zNOg=v*QSGE=VW;ma zZ6++ajcAkQPazT}>P#cHpo}c4xkxN;;8vaBuRydB0(ile@#3_XJJNp2kUW;&-I3T* zgLQUqdC2Vq*Ug;ZoyToc%_0Lx=Z#0^B?LG16*?#fndzdGEso?E>KHG}HRt6?Nr_7ULROYH5pc(~bc4g??op z;+{ud8KyrxPi24i10#`KW@-Baub)=F*^$h%yv2IL0A3FdqucXE;ai6<^w4$7D{orD zI5Ga`qj%=2jy1mQQ3@x{Wzygbd(zR@;-vl*i(&gS8E8y+$Qg!kqc!6YJkX^e@;out z$>a`VS9M2sGduk!f@%EOLK?D+A>PROE_6j26(&}ZzfezX-_^~IS$fC%ZF*4K@j z5uQQrVH}6rTA#1VbT@~J*&~MZqa^YVdpRy8cx!75Dpq)Tfo@i%g=LoE0V~Au-Q~qa z7WOZn!h{NV4xL4m+Vdb6?wWux3DPOAaU_}f%n-&x7C3mVGQ9G=W5iG zF8aNeQoY17TI6yR=fbQ>rW~b>3ZnS&mnF)3$a+E)6k^Kj*JFfM!Oua0CoD@N3yq59 z?M|UyWNgq+$rfg5Bk!|#GDSTjLS7Fmc{D*J5zzGINl~fXwq?4q$PI$*^s~Nh17%b) zXnsa{j++2SLH_!}zBj+58#!3H_iVLhXd|et~mMozXkaZWMMG~|$2%9Q?hz7AC$WmuFh>hl}bUMi9<|Cu>Kt5U8QNv~dFASjwx zh=f%n^20jH_dYO^R2a+IzxU6a3+Q0NA-^I!LpOlu1COA2_~T%1k4~oR<}@%KAK{*Q zH-+A}ImD{^LSv4$p(ori0}^3CPx^%|;0M&7IsG|df%+HydvHax!*b^45};?ho= z(lfZ_%y99jT|p{UUw1Eg8IUOWI6ypVuvQ%xFGGHH5wKbMe~-g2Ue%p>_pGnUf$#l+ zxB*87poyw3ITFJhQRkH09IJZ0;of0D_R_9vQn5e3y)g3^ezXbArgQpk`-`}_ipRj5 zh>#XItSO1L-f)~hH?bC&&a?SYf4&jB>Dml!q5Wo|O`3xNelD5UT?T!+O%F&Dm=BP& z)yYdXn^kYf+Kf_`RkVV$I;%NK)Z|;hKmWtI8bBQQkiXXCQ@-1Qnvy!jz%7~^+ZshZ zKCEgNh(As`>Jec7)#v1xs@zqZ*Z0pB0(THxB1B^aCH_Di!;jC5LmQ<$-~{hz{-lS{ zxbYH?|20Ws;R6u+$WoJB?^y$2wYId13bUd^DN6B)r0H(pY?)hod;~aTXYq2P2FWoq zuhv7YO)j{CTO%Xl`4hZjK=!4#nN<<|;jOt5BTV&J%Fv&g!Z=25GCe8TRzCC?pJ53p zh@Vg3kp#`r($WBA`TG@62-qwE60?Ww`wb)P^ZNt$4vZ>4bq?D?sVL!V(-O>>da@l@ z&P~-{GOAx)6*zq|F~Ak$>wYyZqtzdvEWp?ZOs$U7f&mt#bbKKy+1hJPJIU%SFNhWK z#NsH+HO+je+_;3Il64<3YnXjDdWX8aI^YOw4>)~PtF1zD_OF2nD7rqO%|&;9;W{)L zm9jLTfc&DDn7gutg33)eG|3M3GqM+8bAP5g@Ok3C(oCbn*TXM=S9~;&?0v%txL^#4 z-8Gp@49PO;MQsjq5yXb9OP2FyvW#%tDrq=BlECX(Mku4%+d>JE%>D)k#F~r@{)+O@ zQlh;ubl?$QBY z80;9C=Ku*^43Fi7kRWNJpgN9R{vr`onWiZ1VCSG!7gY44r3)(I(lr9V7Dd>uR$R|7VP{*Smn;o_a8Y$LW z`DdJL2#$!VjbLOHVe&WL zi{VRJI?LYnBQ@GM=(R4@;VH?I4ZQEeW1sUgiV~(Xb)hNEWmqK9RoHl`AO2Nhf6pN) z{i*%)DMoM4xYa!mZ`%80`}PppNO7q;*-04wbyadNs9fdqyN~N%d!ho^m!Dp}|KKr> zUG<86E;GwnSZ?*0s;&lZ9tkosEQ_tJDlRN%B2t(gB5su{*TQm)KhflR)UpaeK)uT% z(cr;JuWHm?A$Qt8yf^Lxva2e|sRenvVhiII%ilBKr+K;e+FlV6YMVo7i&|eP^D;XY zdh}OVKlo2%R8_a7X8vf}m7GbwX=Qd>n34BvrlOLVVbArov~30gy)4Upd`oY>EWH2W zOuB*Sa0Sw8d@jm4HrCt>bxWB324hqm`gdAX&m+|}6L0GOz;!W%;`;%5-KAz5`m5dT z-L(Xe$m{*dOXvc}S7>QNyNMwbG_`Gi3XS2(Jm1A`L46B!m z6c{9gI&O`+p-hY1#-HHXy$JDvEe0uSwb2*@m3m@eK`Ogy-QuBRU&kHa9=~rp@bC4# z+pmB7^|ck-ukPI*UoWvGe@fca3!nO_wocWEx^&sCeD{&hHKD3Vp5HI~v%m3LRe1lm zL&}?NCUyaJs&hR3L!v5U%C#}$iuf1K(YL(6HEF;(5%N9S%1p;!Gfj*|=0yZD$u-#z z?*3_k*OV!@0O#qE<>fb3t#ci?Z@R*iR)7m)L=19k#@G)9thrrmze;}07)vx~GEnRF zi&Fn`R7HsAR9&h>fhqPSbK;NsjSj3XNn^P>xbD8md%^-Qz4x@c+m6LTPC^%B z;pS1HOC)1+6?+%oJtlrJP$aI9+zNCwOz;};Z$qb={K5RO1CPNw1-P4RQT{^0Vzji3 zH?PpSa=UM-*D8~3tz$6zJ44%>XFT=qh1o6W(ofvhb^1nm!9J&$JHE}Q^m4}>X|cci z!QgurPo-dKAp(I;K5|{yC|jQHiTy>s>tj2{Q@(lsb3>o6?pGJCANP~TP9P@NRt}6~ zkDu@VWx(G+&JfhY1Pv+2r-o&&K9Vkb^l!5#u*JN!T34_O!?nO?&-dRh2S1y(eEo6( z_(RPifHUBe_U#HC@N;O@q7UGwmhZKF#^C3bBP$ZL!5_kw{8OD=xh+#lIM4>PkVpCq z)cZ86WQiplJYF_Y&2eeK%Ebb<0=%(#de~yHAyy)aX`iZJKDkZtHMs+)6tO&@%Gq}; z!8o4;Ts7)DVx%?g46fb%eTvv6YXjX^?fEYIrwvZ8A$Y}%DD%k51d7SzHm5$|%Tfl! zmwLAh=41`SQtbVpn&M{utcms&{yvcYN?EDX;*;oa zilEJzdP5bZ7eXnE@KP1KmsQbaQ}E_|kAGxE#CP;DzO(5?GxX~{v`LS_ZcHJuseN@O zR(?MbzRY}QO=fCu4S{~LYo?%4O;Sc8sL{6_JU47(?H9pV)M!PcO>gM)?m>Y>77Nto zvE?$RumkObm3vJsKUH5V^o9J~U(zFTYmK#J9nA6hk+*Y-OMm;3E*oc@WyEs!Q0hn+ z9`3XEhJs|&sJ!h*Jf(i5HyH$Y&T4vt>OVoyy%dgSr5CJ~8SLi{*p!}~Z@X~t&5 zo?ant`!n*hQoY}om9PJ?i~ZfW{`IH+oi>ZjGjao&H7FI8f_}92LelEvn=gF|4xqG`i8`fof^u!5s=Uj%4wEcdu2^b ziC3Gv*0I7R7L_gzca+>?vOQEMX<^We_SiqfZPJBWoK+yLBE8AAoiFD$Izv7SXU~q& z^yJQTeaVrqV+;1-#K(e`d3lNgx(DUiUm3d<$!>O?j3ss!ma(E{pUgIyPxNj(djRS` zW_m2+tF@7Zz4kAA#r4IqZ{F=iU98K|j@2H~LJRBz4LK z@Mm{}tV4D<`x?JKK$ z8h1=?o80C%LF(jiyy{5wk(vh13`|c;ORWx-r;)UpUX5tuvB0kPb75>Z|2qDL{$rh= z3zVzqiSmPA+3r}2JlLJ|@Q8P%#09Z{_HzL)qPW{;Y1pbOzsQ5xxvED9Qv6d{F6w8` z33Nl{R0GW}AA3R;xq3-jeo+Z`P=>7Z!oGeFqr}lxlrdWZlSzN{oK>t}M;J$WkO(Gm zX@yZY5~be6au>8;2v>H1!&08hlD9=pZOfglUi(5@i?rnBf}uY=ul}O<)p^L1*!QI| zGUPJ(k5d&>K9O#&8AV#$#FJ1gy`m}1I?dFl-%I(HyuAS6XVr}9)(?Yl(Gm-#w~;T6IecdqgQQrS+Yzlv*4>3Rd?#>jX$ie~TNEeuU&!DEq|E z$y0PT?i5*_BOV`LaBw1R+d5&zn4Im_jmXNVm}p>TSi+tDNX}6r&QBmpUOkn0yM8fTk4gof02mhfe_67vd~ zgNC!x2xvIepu5bAn^{SDBLCqNetR3Um&MZ3;`pdb{I!No`d||{OK*5iG~m`1AJ7|I z<$m8pe?%L{VxpF97I%oAo`m`|AN%gN!&nl{<;l-_)iRf#MHRR|Ad*(!kQ|R}1MW&6 zTJp)*Zf5Z_mnY%M0$dM_l-CD|+Sp8Z!4kJQ-W!@x$R03y$E# zZ$dB*W*%2OeHJ!5Ey&=CP(K;8B>c7$OUYZDP=NbGN6)@w%#`0pdQ%{4#NJ4}XhiGc zyNHQmM@KIu#xps2Cc$Ac+CQM%-=p-&NapKPCt|)%zbl-`2gxo7S8*SZYpcgXt)Ybb z5(JE6atncz875wp_KMn~jJ^8DFAf;zPEFxH;5xg*X~LZa;tEz!H&Z4+S$E*sd%X}N z4o|sH2!`#2U9mb^b3e`dsTCwn0dCn>zXFaVR?GZ>_nR(la@lv|`CP_}1l9cusl8~< zA7YZ|9%}OJ>r>RGXYp&{pN5Z+rQ%!={QR*K^ORGAk??NfbYUO0lOOFX1azso zR@}ZD6&c#i3B;M~7M9i)=hGW&N5*9%4wLsk04Pc*$r_E zhAK5?y~yRIn5%U z%BFQ4?CzdB(#=e+wpND=dR6S)hn6s!g!ttgAdr?e1cl9tx=b|Byy+Oz0XQ$x+)|4a0_ za*|)}^;-y^&WrG*n;~jQzU{$#5U&&qwIpB=H~C_9&R<&mr2{aM`#%%~UhyEQbZ%QO Ve@{nu8Gz&baM1lg@%}T{{uk`I)E@u< literal 0 HcmV?d00001 diff --git a/docs/readthedocs/source/doc/Chronos/Image/forecast-TS.png b/docs/readthedocs/source/doc/Chronos/Image/forecast-TS.png new file mode 100644 index 0000000000000000000000000000000000000000..0684d0ca733924a476b06023ad93560e5be4be49 GIT binary patch literal 24661 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 literal 0 HcmV?d00001 diff --git a/docs/readthedocs/source/doc/Chronos/Overview/chronos.md b/docs/readthedocs/source/doc/Chronos/Overview/chronos.md new file mode 100644 index 00000000..27abcfe8 --- /dev/null +++ b/docs/readthedocs/source/doc/Chronos/Overview/chronos.md @@ -0,0 +1,529 @@ +# Chronos User Guide + +### **1 Overview** +_Chronos_ is an application framework for building large-scale time series analysis applications. + +You can use _Chronos_ to do: + +- **Data pre/post-processing and feature generation** (using [TSDataset](#data-processing-and-feature-engineering)) +- **Time Series Forecasting** (using [Standalone Forecasters](#use-standalone-forecaster-pipeline), [Auto Models](#use-auto-forecasting-model) (with HPO) or [AutoTS](#use-autots-pipeline) (full AutoML enabled pipelines)) +- **Anomaly Detection** (using [Anomaly Detectors](#anomaly-detection)) +- **Synthetic Data Generation** (using [Simulators](#generate-synthetic-data)) + +--- +### **2 Install** + +Install analytics-zoo with target `[automl]` to install the additional dependencies for _Chronos_. + +```bash +conda create -n my_env python=3.7 +conda activate my_env +pip install --pre --upgrade analytics-zoo[automl] +``` +--- +### **3 Initialization** + +_Chronos_ uses [Orca](../../Orca/Overview/orca.md) to enable distributed training and AutoML capabilities. Init orca as below when you want to: + +1. Use the distributed mode of a standalone forecaster. +2. Use automl to distributedly tuning your model. + +View [Orca Context](../../Orca/Overview/orca-context.md) for more details. Note that argument `init_ray_on_spark` must be `True` for _Chronos_. + +```python +if args.cluster_mode == "local": + init_orca_context(cluster_mode="local", cores=4, init_ray_on_spark=True) # run in local mode +elif args.cluster_mode == "k8s": + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2, init_ray_on_spark=True) # run on K8s cluster +elif args.cluster_mode == "yarn": + init_orca_context(cluster_mode="yarn-client", num_nodes=2, cores=2, init_ray_on_spark=True) # run on Hadoop YARN cluster +``` +View [Quick Start](../QuickStart/chronos-autotsest-quickstart.md) for a more detailed example. + +--- + +### **4 Data Processing and Feature Engineering** + +Time series data is a special data formulation with its specific operations. _Chronos_ provides [`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) as a time series dataset abstract for data processing (e.g. impute, deduplicate, resample, scale/unscale, roll sampling) and auto feature engineering (e.g. datetime feature, aggregation feature). Cascade call is supported for most of the methods. [`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) can be initialized from a pandas dataframe and be directly used in `AutoTSEstimator`. It can also be converted to a pandas dataframe or numpy ndarray for Forecasters and Anomaly Detectors. + +[`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) is designed for general time series processing while providing many specific operations for the convenience of different tasks(e.g. forecasting, anomaly detection). + +#### **4.1 Basic concepts** +A time series can be interpreted as a sequence of real value whose order is timestamp. While a time series dataset can be a combination of one or a huge amount of time series. It may contain multiple time series since users may collect different time series in the same/different period of time (e.g. An AIops dataset may have CPU usage ratio and memory usage ratio data for two servers at a period of time. This dataset contains four time series). + +In [`TSDataset`](../../PythonAPI/Chronos/tsdataset.html), we provide **2** possible dimensions to construct a high dimension time series dataset (i.e. **feature dimension** and **id dimension**). +* feature dimension: Time series along this dimension might be independent or related. Though they may be related, they are assumed to have **different patterns and distributions** and collected on the **same period of time**. For example, the CPU usage ratio and Memory usage ratio for the same server at a period of time. +* id dimension: Time series along this dimension are assumed to have the **same patterns and distributions** and might by collected on the **same or different period of time**. For example, the CPU usage ratio for two servers at a period of time. + +All the preprocessing operations will be done on each independent time series(i.e on both feature dimension and id dimension), while feature scaling will be only carried out on the feature dimension. + +#### **4.2 Create a TSDataset** +Currently [`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) only supports initializing from a pandas dataframe through [`TSDataset.from_pandas`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.from_pandas). A typical valid time series dataframe `df` is shown below. + +You can initialize a [`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) by simply: +```python +# Server id Datetime CPU usage Mem usage +# 0 08:39 2021/7/9 93 24 +# 0 08:40 2021/7/9 91 24 +# 0 08:41 2021/7/9 93 25 +# 0 ... ... ... +# 1 08:39 2021/7/9 73 79 +# 1 08:40 2021/7/9 72 80 +# 1 08:41 2021/7/9 79 80 +# 1 ... ... ... +tsdata = TSDataset.from_pandas(df, + dt_col="Datetime", + id_col="Server id", + target_col=["CPU usage", + "Mem usage"]) +``` +`target_col` is a list of all elements along feature dimension, while `id_col` is the identifier that distinguishes the id dimension. `dt_col` is the datetime column. For `extra_feature_col`(not shown in this case), you should list those features that you are not interested for your task (e.g. you will **not** perform forecasting or anomaly detection task on this col). + +If you are building a prototype for your forecasting/anomaly detection task and you need to split you dataset to train/valid/test set, you can use `with_split` parameter.[`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) supports split with ratio by `val_ratio` and `test_ratio`. +#### **4.3 Time series dataset preprocessing** +[`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) now supports [`impute`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.impute), [`deduplicate`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.deduplicate) and [`resample`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.resample). You may fill the missing point by [`impute`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.impute) in different modes. You may remove the records that are totally the same by [`deduplicate`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.deduplicate). You may change the sample frequency by [`resample`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.resample). A typical cascade call for preprocessing is: +```python +tsdata.deduplicate().resample(interval="2s").impute() +``` +#### **4.4 Feature scaling** +Scaling all features to one distribution is important, especially when we want to train a machine learning/deep learning system. [`TSDataset`](../../PythonAPI/Chronos/tsdataset.html) supports all the scalers in sklearn through [`scale`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.scale) and [`unscale`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.unscale) method. Since a scaler should not fit on the validation and test set, a typical call for scaling operations is: +```python +from sklearn.preprocessing import StandardScaler +scale = StandardScaler() +# scale +for tsdata in [tsdata_train, tsdata_valid, tsdata_test]: + tsdata.scale(scaler, fit=tsdata is tsdata_train) +# unscale +for tsdata in [tsdata_train, tsdata_valid, tsdata_test]: + tsdata.unscale() +``` +[`unscale_numpy`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.unscale_numpy) is specially designed for forecasters. Users may unscale the output of a forecaster by this operation. A typical call is: +```python +x, y = tsdata_test.scale(scaler)\ + .roll(lookback=..., horizon=...)\ + .to_numpy() +yhat = forecaster.predict(x) +unscaled_yhat = tsdata_test.unscale_numpy(yhat) +unscaled_y = tsdata_test.unscale_numpy(y) +# calculate metric by unscaled_yhat and unscaled_y +``` +#### **4.5 Feature generation** +Other than historical target data and other extra feature provided by users, some additional features can be generated automatically by [`TSDataset`](../../PythonAPI/Chronos/tsdataset.html). [`gen_dt_feature`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.gen_dt_feature) helps users to generate 10 datetime related features(e.g. MONTH, WEEKDAY, ...). [`gen_global_feature`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.gen_global_feature) and [`gen_rolling_feature`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.gen_rolling_feature) are powered by tsfresh to generate aggregated features (e.g. min, max, ...) for each time series or rolling windows respectively. +#### **4.6 Sampling and exporting** +A time series dataset needs to be sampling and exporting as numpy ndarray/dataloader to be used in machine learning and deep learning models(e.g. forecasters, anomaly detectors, auto models, etc.). +```eval_rst +.. warning:: + You don't need to call any sampling or exporting methods introduced in this section when using `AutoTSEstimator`. +``` +##### **4.6.1 Roll sampling** +Roll sampling (or sliding window sampling) is useful when you want to train a RR type supervised deep learning forecasting model. It works as the [diagram](#RR-forecast-image) shows. Please refer to the API doc [`roll`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.roll) for detailed behavior. Users can simply export the sampling result as numpy ndarray by [`to_numpy`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.to_numpy) or pytorch dataloader [`to_torch_data_loader`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.to_torch_data_loader). + +```eval_rst +.. note:: + **Difference between `roll` and `to_torch_data_loader`**: + + `.roll(...)` performs the rolling before RR forecasters/auto models training while `.to_torch_data_loader(roll=True, ...)` performs rolling during the training. + + It is fine to use either of them when you have a relatively small dataset (less than 1G). `.to_torch_data_loader(roll=True, ...)` is recommended when you have a large dataset (larger than 1G) to save memory usage. +``` + +```eval_rst +.. note:: + **Roll sampling format**: + + As decribed in RR style forecasting concept, the sampling result will have the following shape requirement. + + | x: (sample_num, lookback, input_feature_num) + | y: (sample_num, horizon, output_feature_num) + + Please follow the same shape if you use customized data creator. +``` + +A typical call of [`roll`](../../PythonAPI/Chronos/tsdataset.html#zoo.chronos.data.tsdataset.TSDataset.roll) is as following: +```python +# forecaster +x, y = tsdata.roll(lookback=..., horizon=...).to_numpy() +forecaster.fit((x, y)) +``` + +##### **4.6.2 Pandas Exporting** +Now we support pandas dataframe exporting through `to_pandas()` for users to carry out their own transformation. Here is an example of using only one time series for anomaly detection. +```python +# anomaly detector on "target" col +x = tsdata.to_pandas()["target"].to_numpy() +anomaly_detector.fit(x) +``` +View [TSDataset API Doc](../../PythonAPI/Chronos/tsdataset.html#) for more details. + +--- +### **5 Forecasting** + +_Chronos_ provides both deep learning/machine learning models and traditional statistical models for forecasting. + +There're three ways to do forecasting: +- Use highly integrated [**AutoTS pipeline**](#use-autots-pipeline) with auto feature generation, data pre/post-processing, hyperparameter optimization. +- Use [**auto forecasting models**](#use-auto-forecasting-model) with auto hyperparameter optimization. +- Use [**standalone forecasters**](#use-standalone-forecaster-pipeline). + + + +| Model | Style | Multi-Variate | Multi-Step | Distributed\* | Auto Models | AutoTS | Backend | +| ----------------- | ----- | ------------- | ---------- | ----------- | ----------- | ----------- | ----------- | +| LSTM | RR | ✅ | ❌ | ✅ | ✅ | ✅ | pytorch | +| Seq2Seq | RR | ✅ | ✅ | ✅ | ✅ | ✅ | pytorch | +| TCN | RR | ✅ | ✅ | ✅ | ✅ | ✅ | pytorch | +| MTNet | RR | ✅ | ❌ | ✅ | ❌ | ✳️\*\*\* | tensorflow | +| TCMF | TS | ✅ | ✅ | ✳️\*\* | ❌ | ❌ | pytorch | +| Prophet | TS | ❌ | ✅ | ❌ | ✅ | ❌ | prophet | +| ARIMA | TS | ❌ | ✅ | ❌ | ✅ | ❌ | pmdarima | + +\* Distributed training/inferencing is only supported by standalone forecasters.
+\*\* TCMF only partially supports distributed training.
+\*\*\* Auto tuning of MTNet is only supported in our deprecated AutoTS API.
+ + +#### **5.1 Time Series Forecasting Concepts** +Time series forecasting is one of the most popular tasks on time series data. **In short, forecasing aims at predicting the future by using the knowledge you can learn from the history.** + +##### **5.1.1 Traditional Statistical(TS) Style** +Traditionally, Time series forecasting problem was formulated with rich mathematical fundamentals and statistical models. Typically, one model can only handle one time series and fit on the whole time series before the last observed timestamp and predict the next few steps. Training(fit) is needed every time you change the last observed timestamp. + +![](../Image/forecast-TS.png) + +##### **5.1.2 Regular Regression(RR) Style** +Recent years, common deep learning architectures (e.g. RNN, CNN, Transformer, etc.) are being successfully applied to forecasting problem. Forecasting is transformed to a supervised learning regression problem in this style. A model can predict several time series. Typically, a sampling process based on sliding-window is needed, some terminology is explained as following: + +- `lookback` / `past_seq_len`: the length of historical data along time. This number is tunable. +- `horizon` / `future_seq_len`: the length of predicted data along time. This number is depended on the task definition. If this value larger than 1, then the forecasting task is *Multi-Step*. +- `input_feature_num`: The number of variables the model can observe. This number is tunable since we can select a subset of extra feature to use. +- `output_feature_num`: The number of variables the model to predict. This number is depended on the task definition. If this value larger than 1, then the forecasting task is *Multi-Variate*. + + +![](../Image/forecast-RR.png) + +#### **5.2 Use AutoTS Pipeline** +For AutoTS Pipeline, we will leverage `AutoTSEstimator`, `TSPipeline` and preferably `TSDataset`. A typical usage of AutoTS pipeline basically contains 3 steps. +1. Prepare a `TSDataset` or customized data creator. +2. Init a `AutoTSEstimator` and call `.fit()` on the data. +3. Use the returned `TSPipeline` for further development. +```eval_rst +.. warning:: + `AutoTSTrainer` workflow has been deprecated, no feature updates or performance improvement will be carried out. Users of `AutoTSTrainer` may refer to `Chronos API doc `_. +``` +```eval_rst +.. note:: + `AutoTSEstimator` currently only support pytorch backend. +``` +View [Quick Start](https://analytics-zoo.readthedocs.io/en/latest/doc/Chronos/QuickStart/chronos-autotsest-quickstart.html) for a more detailed example. + +##### **5.2.1 Prepare dataset** +`AutoTSEstimator` support 2 types of data input. + +You can easily prepare your data in `TSDataset` (recommended). You may refer to [here](#TSDataset) for the detailed information to prepare your `TSDataset` with proper data processing and feature generation. Here is a typical `TSDataset` preparation. +```python +from zoo.chronos.data import TSDataset +from sklearn.preprocessing import StandardScaler + +tsdata_train, tsdata_val, tsdata_test\ + = TSDataset.from_pandas(df, dt_col="timestamp", target_col="value", with_split=True, val_ratio=0.1, test_ratio=0.1) + +standard_scaler = StandardScaler() +for tsdata in [tsdata_train, tsdata_val, tsdata_test]: + tsdata.gen_dt_feature()\ + .impute(mode="last")\ + .scale(standard_scaler, fit=(tsdata is tsdata_train)) +``` +You can also create your own data creator. The data creator takes a dictionary config and returns a pytorch dataloader. Users may define their own customized key and add them to the search space. "batch_size" is the only fixed key. +```python +from torch.utils.data import DataLoader +def training_data_creator(config): + return Dataloader(..., batch_size=config['batch_size']) +``` +##### **5.2.2 Create an AutoTSEstimator** +`AutoTSEstimator` depends on the [Distributed Hyper-parameter Tuning](../../Orca/Overview/distribute-tuning.html) supported by Project Orca. It also provides time series only functionalities and optimization. Here is a typical initialization process. +```python +import zoo.orca.automl.hp as hp +from zoo.chronos.autots import AutoTSEstimator +auto_estimator = AutoTSEstimator(model='lstm', + search_space='normal', + past_seq_len=hp.randint(1, 10), + future_seq_len=1, + selected_features="auto") +``` +We prebuild three defualt search space for each build-in model, which you can use the by setting `search_space` to "minimal","normal", or "large" or define your own search space in a dictionary. The larger the search space, the better accuracy you will get and the more time will be cost. + +`past_seq_len` can be set as a hp sample function, the proper range is highly related to your data. A range between 0.5 cycle and 3 cycle is reasonable. + +`selected_features` is set to "auto" by default, where the `AutoTSEstimator` will find the best subset of extra features to help the forecasting task. +##### **5.2.3 Fit on AutoTSEstimator** +Fitting on `AutoTSEstimator` is fairly easy. A `TSPipeline` will be returned once fitting is completed. +```python +ts_pipeline = auto_estimator.fit(data=tsdata_train, + validation_data=tsdata_val, + batch_size=hp.randint(32, 64), + epochs=5) +``` +Detailed information and settings please refer to [AutoTSEstimator API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/autotsestimator.html#id1). +##### **5.2.4 Development on TSPipeline** +You may carry out predict, evaluate, incremental training or save/load for further development. +```python +# predict with the best trial +y_pred = ts_pipeline.predict(tsdata_test) + +# evaluate the result pipeline +mse, smape = ts_pipeline.evaluate(tsdata_test, metrics=["mse", "smape"]) +print("Evaluate: the mean square error is", mse) +print("Evaluate: the smape value is", smape) + +# save the pipeline +my_ppl_file_path = "/tmp/saved_pipeline" +ts_pipeline.save(my_ppl_file_path) + +# restore the pipeline for further deployment +from zoo.chronos.autots import TSPipeline +loaded_ppl = TSPipeline.load(my_ppl_file_path) +``` +Detailed information please refer to [TSPipeline API doc](../../PythonAPI/Chronos/autotsestimator.html#tspipeline). + +```eval_rst +.. note:: + `init_orca_context` is not needed if you just use the trained TSPipeline for inference, evaluation or incremental fitting. +``` +```eval_rst +.. note:: + Incremental fitting on TSPipeline just update the model weights the standard way, which does not involve AutoML. +``` + +#### **5.3 Use Standalone Forecaster Pipeline** + +_Chronos_ provides a set of standalone time series forecasters without AutoML support, including deep learning models as well as traditional statistical models. + +View some examples notebooks for [Network Traffic Prediction](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/network_traffic/) + +The common process of using a Forecaster looks like below. +```python +# set fixed hyperparameters, loss, metric... +f = Forecaster(...) +# input data, batch size, epoch... +f.fit(...) +# input test data x, batch size... +f.predict(...) +``` +The input data can be easily get from `TSDataset`. +View [Quick Start](../QuickStart/chronos-tsdataset-forecaster-quickstart.md) for a more detailed example. Refer to [API docs](../../PythonAPI/Chronos/forecasters.html) of each Forecaster for detailed usage instructions and examples. + + +###### **5.3.1 LSTMForecaster** + +LSTMForecaster wraps a vanilla LSTM model, and is suitable for univariate time series forecasting. + +View Network Traffic Prediction [notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/network_traffic/network_traffic_model_forecasting.ipynb) and [LSTMForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#lstmforecaster) for more details. + + +###### **5.3.2 Seq2SeqForecaster** + +Seq2SeqForecaster wraps a sequence to sequence model based on LSTM, and is suitable for multivariant & multistep time series forecasting. + +View [Seq2SeqForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#seq2seqforecaster) for more details. + + +###### **5.3.3 TCNForecaster** + +Temporal Convolutional Networks (TCN) is a neural network that use convolutional architecture rather than recurrent networks. It supports multi-step and multi-variant cases. Causal Convolutions enables large scale parallel computing which makes TCN has less inference time than RNN based model such as LSTM. + +View Network Traffic multivariate multistep Prediction [notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/network_traffic/network_traffic_multivariate_multistep_tcnforecaster.ipynb) and [TCNForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#tcnforecaster) for more details. + + +###### **5.3.4 MTNetForecaster** + +MTNetForecaster wraps a MTNet model. The model architecture mostly follows the [MTNet paper](https://arxiv.org/abs/1809.02105) with slight modifications, and is suitable for multivariate time series forecasting. + +View Network Traffic Prediction [notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/network_traffic/network_traffic_model_forecasting.ipynb) and [MTNetForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#mtnetforecaster) for more details. + + +###### **5.3.5 TCMFForecaster** + +TCMFForecaster wraps a model architecture that follows implementation of the paper [DeepGLO paper](https://arxiv.org/abs/1905.03806) with slight modifications. It is especially suitable for extremely high dimensional (up-to millions) multivariate time series forecasting. + +View High-dimensional Electricity Data Forecasting [example](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/examples/tcmf/run_electricity.py) and [TCMFForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#tcmfforecaster) for more details. + + +###### **5.3.6 ARIMAForecaster** + +ARIMAForecaster wraps a ARIMA model and is suitable for univariate time series forecasting. It works best with data that show evidence of non-stationarity in the sense of mean (and an initial differencing step (corresponding to the "I, integrated" part of the model) can be applied one or more times to eliminate the non-stationarity of the mean function. + +View [ARIMAForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#arimaforecaster) for more details. + + +###### **5.3.7 ProphetForecaster** + +ProphetForecaster wraps the Prophet model ([site](https://github.com/facebook/prophet)) which is an additive model where non-linear trends are fit with yearly, weekly, and daily seasonality, plus holiday effects and is suitable for univariate time series forecasting. It works best with time series that have strong seasonal effects and several seasons of historical data and is robust to missing data and shifts in the trend, and typically handles outliers well. + +View Stock Prediction [notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/fsi/stock_prediction_prophet.ipynb) and [ProphetForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#prophetforecaster) for more details. + +#### **5.4 Use Auto forecasting model** +Auto forecasting models are designed to be used exactly the same as Forecasters. The only difference is that you can set hp search function to the hyperparameters and the `.fit()` method will search the best hyperparameter setting. +```python +# set hyperparameters in hp search function, loss, metric... +f = Forecaster(...) +# input data, batch size, epoch... +f.fit(...) +# input test data x, batch size... +f.predict(...) +``` +The input data can be easily get from `TSDataset`. Users can refer to detailed [API doc](../../PythonAPI/Chronos/automodels.html). + +--- +### **6 Anomaly Detection** + +Anomaly Detection detects abnormal samples in a given time series. _Chronos_ provides a set of unsupervised anomaly detectors. + +View some examples notebooks for [Datacenter AIOps](https://github.com/intel-analytics/analytics-zoo/tree/master/pyzoo/zoo/chronos/use-case/AIOps). + +#### **6.1 ThresholdDetector** + +ThresholdDetector detects anomaly based on threshold. It can be used to detect anomaly on a given time series ([notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/AIOps/AIOps_anomaly_detect_unsupervised.ipynb)), or used together with [Forecasters](#forecasting) to detect anomaly on new coming samples ([notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/AIOps/AIOps_anomaly_detect_unsupervised_forecast_based.ipynb)). + +View [ThresholdDetector API Doc](../../PythonAPI/Chronos/anomaly_detectors.html#chronos-model-anomaly-th-detector) for more details. + + +#### **6.2 AEDetector** + +AEDetector detects anomaly based on the reconstruction error of an autoencoder network. + +View anomaly detection [notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/AIOps/AIOps_anomaly_detect_unsupervised.ipynb) and [AEDetector API Doc](../../PythonAPI/Chronos/anomaly_detectors.html#chronos-model-anomaly-ae-detector) for more details. + +#### **6.3 DBScanDetector** + +DBScanDetector uses DBSCAN clustering algortihm for anomaly detection. + +View anomaly detection [notebook](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/AIOps/AIOps_anomaly_detect_unsupervised.ipynb) and [DBScanDetector API Doc](../../PythonAPI/Chronos/anomaly_detectors.html#chronos-model-anomaly-dbscan-detector) for more details. + +--- +### **7 Generate Synthetic Data** + +Chronos provides simulators to generate synthetic time series data for users who want to conquer limited data access in a deep learning/machine learning project or only want to generate some synthetic data to play with. + +```eval_rst +.. note:: + DPGANSimulator is the only simulator chronos provides at the moment, more simulators are on their way. +``` + +#### **7.1 DPGANSimulator** +`DPGANSimulator` adopt DoppelGANger raised in [Using GANs for Sharing Networked Time Series Data: Challenges, Initial Promise, and Open Questions](http://arxiv.org/abs/1909.13403). The method is data-driven unsupervised method based on deep learning model with GAN (Generative Adversarial Networks) structure. The model features a pair of seperate attribute generator and feature generator and their corresponding discriminators `DPGANSimulator` also supports a rich and comprehensive input data (training data) format and outperform other algorithms in many evalution metrics. + +Users may refer to detailed [API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/simulator.html#module-zoo.chronos.simulator.doppelganger_simulator). + +--- +### **8 Useful Functionalities** + + +#### **8.1 AutoML Visualization** + +AutoML visualization provides two kinds of visualization. You may use them while fitting on auto models or AutoTS pipeline. +* During the searching process, the visualizations of each trail are shown and updated every 30 seconds. (Monitor view) +* After the searching process, a leaderboard of each trail's configs and metrics is shown. (Leaderboard view) + +**Note**: AutoML visualization is based on tensorboard and tensorboardx. They should be installed properly before the training starts. + +**Monitor view** + +Before training, start the tensorboard server through + +```python +tensorboard --logdir=/ +``` + +`logs_dir` is the log directory you set for your predictor(e.g. `AutoTSEstimator`, `AutoTCN`, etc.). `name ` is the name parameter you set for your predictor. + +The data in SCALARS tag will be updated every 30 seconds for users to see the training progress. + +![](../Image/automl_monitor.png) + +After training, start the tensorboard server through + +```python +tensorboard --logdir=/_leaderboard/ +``` + +where `logs_dir` and `name` are the same as stated in [Monitor view](#monitor_view). + +A dashboard of each trail's configs and metrics is shown in the SCALARS tag. + +![](../Image/automl_scalars.png) + +A leaderboard of each trail's configs and metrics is shown in the HPARAMS tag. + +![](../Image/automl_hparams.png) + +**Use visualization in Jupyter Notebook** + +You can enable a tensorboard view in jupyter notebook by the following code. + +```python +%load_ext tensorboard +# for scalar view +%tensorboard --logdir // +# for leaderboard view +%tensorboard --logdir /_leaderboard/ +``` + +#### **8.2 ONNX/ONNX Runtime support** +Users may export their trained(w/wo auto tuning) model to ONNX file and deploy it on other service. Chronos also provides an internal onnxruntime inference support for those **users who pursue low latency and higher throughput during inference on a single node**. + +LSTM, TCN and Seq2seq has supported onnx in their forecasters, auto models and AutoTS. When users use these built-in models, they may call `predict_with_onnx`/`evaluate_with_onnx` for prediction or evaluation. They may also call `export_onnx_file` to export the onnx model file and `build_onnx` to change the onnxruntime's setting(not necessary). + +```python +f = Forecaster(...) +f.fit(...) +f.predict_with_onnx(...) +``` +#### **8.3 Distributed training** +LSTM, TCN and Seq2seq users can easily train their forecasters in a distributed fashion to **handle extra large dataset and utilize a cluster**. The functionality is powered by Project Orca. +```python +f = Forecaster(..., distributed=True) +f.fit(...) +f.predict(...) +f.to_local() # collect the forecaster to single node +f.predict_with_onnx(...) # onnxruntime only supports single node +``` +#### **8.4 XShardsTSDataset** +```eval_rst +.. warning:: + `XShardsTSDataset` is still experimental. +``` +`TSDataset` is a single thread lib with reasonable speed on large datasets(~10G). When you handle an extra large dataset or limited memory on a single node, `XShardsTSDataset` can be involved to handle the exact same functionality and usage as `TSDataset` in a distributed fashion. + +```python +# a fully distributed forecaster pipeline +from orca.data.pandas import read_csv +from zoo.chronos.data.experimental import XShardsTSDataset + +shards = read_csv("hdfs://...") +tsdata, _, test_tsdata = XShardsTSDataset.from_xshards(...) +tsdata_xshards = tsdata.roll(...).to_xshards() +test_tsdata_xshards = test_tsdata.roll(...).to_xshards() + +f = Forecaster(..., distributed=True) +f.fit(tsdata_xshards, ...) +f.predict(test_tsdata_xshards, ...) +``` + +### **9 Examples and Demos** +- Quickstarts + - [Use AutoTSEstimator for Time-Series Forecasting](https://analytics-zoo.readthedocs.io/en/latest/doc/Chronos/QuickStart/chronos-autotsest-quickstart.html) + - [Use TSDataset and Forecaster for Time-Series Forecasting](https://analytics-zoo.readthedocs.io/en/latest/doc/Chronos/QuickStart/chronos-tsdataset-forecaster-quickstart.html) + - [Use Anomaly Detector for Unsupervised Anomaly Detection](https://analytics-zoo.readthedocs.io/en/latest/doc/Chronos/QuickStart/chronos-anomaly-detector.html) +- Examples + - [Use AutoLSTM on nyc taxi dataset](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/examples/auto_model/autolstm_nyc_taxi.py) + - [Use AutoProphet on nyc taxi dataset](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/examples/auto_model/autoprophet_nyc_taxi.py) + - [High dimension time series forecasting with Chronos TCMFForecaster](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/examples/tcmf/run_electricity.py) + - [Generate synthetic data with DPGANSimulator in a data-driven fashion](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/examples/simulator) +- Use cases + - [Unsupervised Anomaly Detection](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/AIOps/AIOps_anomaly_detect_unsupervised.ipynb) + - [Unsupervised Anomaly Detection based on Forecasts](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/AIOps/AIOps_anomaly_detect_unsupervised_forecast_based.ipynb) + - [Stock Price Prediction with LSTM](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/fsi/stock_prediction.ipynb) + - [Stock Price Prediction with ProphetForecaster and AutoProphet](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/fsi/stock_prediction_prophet.ipynb) + - [Network Traffic Forecasting with AutoTSEstimator](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/network_traffic/network_traffic_autots_forecasting_experimental.ipynb) + - [Network Traffic Forecasting (using multivariate time series data)](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/network_traffic/network_traffic_model_forecasting.ipynb) + - [Network Traffic Forecasting (using multistep time series data)](https://github.com/intel-analytics/analytics-zoo/blob/master/pyzoo/zoo/chronos/use-case/network_traffic/network_traffic_multivariate_multistep_tcnforecaster.ipynb) diff --git a/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-anomaly-detector.md b/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-anomaly-detector.md new file mode 100644 index 00000000..d3b3078f --- /dev/null +++ b/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-anomaly-detector.md @@ -0,0 +1,49 @@ +# Use Anomaly Detector for Unsupervised Anomaly Detection + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_minn_traffic_anomaly_detector.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_minn_traffic_anomaly_detector.ipynb) + +--- + +**In this guide we will demonstrate how to use _Chronos Anomaly Detector_ for time seires anomaly detection in 3 simple steps.** + +### Step 0: Prepare Environment + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the environment. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo[automl] # install either version 0.10 or latest nightly build +``` + +## Step 1: Prepare dataset +For demonstration, we use the publicly available real time traffic data from the Twin Cities Metro area in Minnesota, collected by the Minnesota Department of Transportation. The detailed information can be found [here](https://github.com/numenta/NAB/blob/master/data/realTraffic/speed_7578.csv) + +Now we need to do data cleaning and preprocessing on the raw data. Note that this part could vary for different dataset. +For the machine_usage data, the pre-processing contains 2 parts:
+1. Change the time interval from irregular to 5 minutes.
+2. Check missing values and handle missing data. + +```python +from zoo.chronos.data import TSDataset + +tsdata = TSDataset.from_pandas(df, dt_col="timestamp", target_col="value") +df = tsdata.resample("5min")\ + .impute(mode="linear")\ + .to_pandas() +``` + +## Step 2: Use Chronos Anomaly Detector +Chronos provides many anomaly detector for anomaly detection, here we use DBScan as an example. More anomaly detector can be found [here](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/anomaly_detectors.html). + +```python +from zoo.chronos.detector.anomaly import DBScanDetector + +ad = DBScanDetector(eps=0.3, min_samples=6) +ad.fit(df['value'].to_numpy()) +anomaly_indexes = ad.anomaly_indexes() +``` + + diff --git a/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-autotsest-quickstart.md b/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-autotsest-quickstart.md new file mode 100644 index 00000000..1d8e2052 --- /dev/null +++ b/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-autotsest-quickstart.md @@ -0,0 +1,116 @@ +# Use AutoTSEstimator for Time-Series Forecasting + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_experimental_autots_nyc_taxi.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_experimental_autots_nyc_taxi.ipynb) + +--- + +**In this guide we will demonstrate how to use _Chronos AutoTSEstimator_ and _Chronos TSPipeline_ to auto tune a time seires forecasting task and handle the whole model development process easily.** + +### **Introduction** + +Chronos provides `AutoTSEstimator` as a highly integrated solution for time series forecasting task with hyperparameter autotuning, auto feature selection and auto preprocessing. Users can prepare a `TSDataset`(recommended, used in this notebook) or their own data creator as input data. By constructing a `AutoTSEstimator` and calling `fit` on the data, a `TSPipeline` contains the best model and pre/post data processing will be returned for further development of deployment. + +`AutoTSEstimator` is experimental and only support LSTM, TCN, and Seq2seq model for now. + +### **Step 0: Prepare Environment** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the environment. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 +conda activate zoo +pip install --pre --upgrade analytics-zoo[automl] +``` + +### **Step 1: Init Orca Context** +```python +if args.cluster_mode == "local": + init_orca_context(cluster_mode="local", cores=4) # run in local mode +elif args.cluster_mode == "k8s": + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2) # run on K8s cluster +elif args.cluster_mode == "yarn": + init_orca_context(cluster_mode="yarn-client", num_nodes=2, cores=2) # run on Hadoop YARN cluster +``` +This is the only place where you need to specify local or distributed mode. View [Orca Context](../../Orca/Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](../../UserGuide/hadoop.md) for more details. + +### **Step 2: Prepare a TSDataset** +Prepare a `TSDataset` and call necessary operations on it. +```python +from zoo.chronos.data import TSDataset +from sklearn.preprocessing import StandardScaler + +tsdata_train, tsdata_val, tsdata_test\ + = TSDataset.from_pandas(df, dt_col="timestamp", target_col="value", with_split=True, val_ratio=0.1, test_ratio=0.1) + +standard_scaler = StandardScaler() +for tsdata in [tsdata_train, tsdata_val, tsdata_test]: + tsdata.gen_dt_feature()\ + .impute(mode="last")\ + .scale(standard_scaler, fit=(tsdata is tsdata_train)) +``` +There is no need to call `.roll()` or `.to_torch_data_loader()` in this step, which is the largest difference between the usage of `AutoTSEstimator` and _Chronos Forecaster_. `AutoTSEstimator` will do that automatically and tune the parameters as well. + +Please call `.gen_dt_feature()`(recommended), `.gen_rolling_feature()`, and `gen_global_feature()` to generate all candidate features to be selected by `AutoTSEstimator` as well as your input extra feature. + +Detailed information please refer to [TSDataset API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/tsdataset.html#tsdataset) and [Time series data basic concepts](https://analytics-zoo.readthedocs.io/en/latest/doc/Chronos/Overview/chronos.html#data-processing-and-feature-engineering). + +### **Step 3: Create an AutoTSEstimator** + +```python +import zoo.orca.automl.hp as hp +from zoo.chronos.autots import AutoTSEstimator +auto_estimator = AutoTSEstimator(model='lstm', # the model name used for training + search_space='normal', # a default hyper parameter search space + past_seq_len=hp.randint(1, 10), # hp sampling function of past_seq_len for auto-tuning +) +``` +We prebuild three defualt search space for each build-in model, which you can use the by setting `search_space` to "minimal","normal", or "large" or define your own search space in a dictionary. The larger the search space, the better accuracy you will get and the more time will be cost. + +`past_seq_len` can be set as a hp sample function, the proper range is highly related to your data. A range between 0.5 cycle and 3 cycle is reasonable. + +Detailed information please refer to [AutoTSEstimator API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/autotsestimator.html#id1) and some basic concepts [here](https://analytics-zoo.readthedocs.io/en/latest/doc/Orca/Overview/distributed-tuning.html#search-space-and-search-algorithms). + +### **Step 4: Fit with AutoTSEstimator** +```python +# fit with AutoTSEstimator for a returned TSPipeline +ts_pipeline = auto_estimator.fit(data=tsdata_train, # train dataset + validation_data=tsdata_val, # validation dataset + epochs=5) # number of epochs to train in each trial +``` +Detailed information please refer to [AutoTSEstimator API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/autotsestimator.html#id1). +### **Step 5: Further deployment with TSPipeline** +The `TSPipeline` will reply the same preprcessing and corresponding postprocessing operations on the test data. You may carry out predict, evaluate or save/load for further development. +```python +# predict with the best trial +y_pred = ts_pipeline.predict(tsdata_test) +``` + +```python +# evaluate the result pipeline +mse, smape = ts_pipeline.evaluate(tsdata_test, metrics=["mse", "smape"]) +print("Evaluate: the mean square error is", mse) +print("Evaluate: the smape value is", smape) +``` + +```python +# save the pipeline +my_ppl_file_path = "/tmp/saved_pipeline" +ts_pipeline.save(my_ppl_file_path) +# restore the pipeline for further deployment +from zoo.chronos.autots import TSPipeline +loaded_ppl = TSPipeline.load(my_ppl_file_path) +``` +Detailed information please refer to [TSPipeline API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/autotsestimator.html#tspipeline-experimental). + +### **Optional: Examine the leaderboard visualization** +To view the evaluation result of "not chosen" trails and find some insight or even possibly improve you search space for a new autotuning task. We provide a leaderboard through tensorboard. +```python +# show a tensorboard view +%load_ext tensorboard +%tensorboard --logdir /tmp/autots_estimator/autots_estimator_leaderboard/ +``` +Detailed information please refer to [Visualization](https://analytics-zoo.readthedocs.io/en/latest/doc/Chronos/Overview/chronos.html#Visualization). diff --git a/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-tsdataset-forecaster-quickstart.md b/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-tsdataset-forecaster-quickstart.md new file mode 100644 index 00000000..f52db491 --- /dev/null +++ b/docs/readthedocs/source/doc/Chronos/QuickStart/chronos-tsdataset-forecaster-quickstart.md @@ -0,0 +1,89 @@ +# Use TSDataset and Forecaster for Time-Series Forecasting + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_nyc_taxi_tsdataset_forecaster.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_nyc_taxi_tsdataset_forecaster.ipynb) + +--- + +**In this guide we will demonstrate how to use _Chronos TSDataset_ and _Chronos Forecaster_ for time seires processing and forecasting in 4 simple steps.** + +### **Step 0: Prepare Environment** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the environment. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo[automl] # install latest nightly build +``` + +### Step 1: Data transformation and feature engineering using Chronos TSDataset + +[TSDataset](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/tsdataset.html) is our abstract of time series dataset for data transformation and feature engineering. Here we use it to preprocess the data. + +Initialize train, valid and test tsdataset from raw pandas dataframe. + +```python +from zoo.chronos.data import TSDataset +from sklearn.preprocessing import StandardScaler + +tsdata_train, tsdata_valid, tsdata_test = TSDataset.from_pandas(df, dt_col="timestamp", target_col="value", + with_split=True, val_ratio=0.1, test_ratio=0.1) +``` +Preprocess the datasets. Here we perform: + +- deduplicate: remove those identical data records +- impute: fill the missing values +- gen_dt_feature: generate feature from datetime (e.g. month, day...) +- scale: scale each feature to standard distribution. +- roll: sample the data with sliding window. +- For forecasting task, we will look back 3 hours' historical data (6 records) and predict the value of next 30 miniutes (1 records). + +We perform the same transformation processes on train, valid and test set. + +```python +lookback, horizon = 6, 1 + +scaler = StandardScaler() +for tsdata in [tsdata_train, tsdata_valid, tsdata_test]: + tsdata.deduplicate().impute().gen_dt_feature()\ + .scale(scaler, fit=(tsdata is tsdata_train))\ + .roll(lookback=lookback, horizon=horizon) +``` + +### Step 2: Time series forecasting using Chronos Forecaster + +After preprocessing the datasets. We can use [Chronos Forecaster](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/Chronos/forecasters.html) to handle the forecasting tasks. + +Transform TSDataset to sampled numpy ndarray and feed them to forecaster. + +```python +x, y = tsdata_train.to_numpy() +x_val, y_val = tsdata_valid.to_numpy() +# x.shape = (num of sample, lookback, num of input feature) +# y.shape = (num of sample, horizon, num of output feature) + +forecaster = TCNForecaster(past_seq_len=lookback, # number of steps to look back + future_seq_len=horizon, # number of steps to predict + input_feature_num=x.shape[-1], # number of feature to use + output_feature_num=y.shape[-1]) # number of feature to predict +res = forecaster.fit((x, y), validation_data=(x_val, y_val), epochs=3) +``` + +### Step 3: Further deployment with fitted forecaster + +Use fitted forecaster to predict test data + +```python +x_test, y_test = tsdata_test.to_numpy() +pred = forecaster.predict(x_test) +pred_unscale, groundtruth_unscale = tsdata_test.unscale_numpy(pred), tsdata_test.unscale_numpy(y_test) +``` + +Save & restore the forecaster. + +```python +forecaster.save("nyc_taxi.fxt") +forecaster.restore("nyc_taxi.fxt") +``` diff --git a/docs/readthedocs/source/doc/Orca/Overview/data-parallel-processing.md b/docs/readthedocs/source/doc/Orca/Overview/data-parallel-processing.md new file mode 100644 index 00000000..988e2d06 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/Overview/data-parallel-processing.md @@ -0,0 +1,143 @@ +# Distributed Data-Parallel Processing + +--- + +**Orca provides efficient support of distributed data-parallel processing pipeline, a critical component for large-scale AI applications.** + +### **1. TensorFlow Dataset and PyTorch DataLoader** + +Orca will seamlessly parallelize the standard `tf.data.Dataset` or `torch.utils.data.DataLoader` pipelines across a large cluster in a data-parallel fashion, which can be directly used for distributed deep learning training, as shown below: + +TensorFlow Dataset: +```python +import tensorflow as tf +import tensorflow_datasets as tfds +from zoo.orca.learn.tf.estimator import Estimator + +def preprocess(data): + data['image'] = tf.cast(data["image"], tf.float32) / 255. + return data['image'], data['label'] + +dataset = tfds.load(name="mnist", split="train", data_dir=dataset_dir) +dataset = dataset.map(preprocess) +dataset = dataset.shuffle(1000) + +est = Estimator.from_keras(keras_model=model) +est.fit(data=dataset) +``` + +Pytorch DataLoader: +```python +import torch +from torchvision import datasets, transforms +from zoo.orca.learn.pytorch import Estimator + +train_loader = torch.utils.data.DataLoader( + datasets.MNIST("/tmp/mnist", train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=batch_size, shuffle=True) + +est = Estimator.from_torch(model=torch_model, optimizer=torch_optim, loss=torch_criterion) +zoo_estimator.fit(data=train_loader) +``` + +Under the hood, Orca will automatically replicate the _TensorFlow Dataset_ or _PyTorch DataLoader_ pipeline on each node in the cluster, shard the input data, and execute the data pipelines using Apache Spark and/or Ray distributedly. + +_**Note:** Known limitations include:_ +1. _TensorFlow Dataset pipeline that contains transformations defined in native python function, such as `tf.py_func`, `tf.py_function` +and `tf.numpy_function` are currently not supported._ +2. _TensorFlow Dataset pipeline created from generators, such as `Dataset.from_generators` are currently not supported._ +3. _For TensorFlow Dataset and Pytorch DataLoader pipelines that read from files (including `tf.data.TFRecordDataset` and `tf.data.TextLineDataset`), one needs to ensure that the same file paths can be accessed on every node in the cluster._ + +#### **1.1. Data Creator Function** +Alternatively, the user may also pass a *Data Creator Function* as the input to the distributed training and inference. Inside the *Data Creator Function*, the user needs to create and return a `tf.data.Dataset` or `torch.utils.data.DataLoader` object, as shown below. + +TensorFlow: +```python +import tensorflow as tf +import tensorflow_datasets as tfds +def preprocess(data): + data['image'] = tf.cast(data["image"], tf.float32) / 255. + return data['image'], data['label'] + +def train_data_creator(config, batch_size): + dataset = tfds.load(name="mnist", split="train", data_dir=dataset_dir) + dataset = dataset.map(preprocess) + dataset = dataset.shuffle(1000) + dataset = dataset.batch(batch_size) + return dataset +``` + +Pytorch: +```python +def train_data_creator(config, batch_size): + train_loader = torch.utils.data.DataLoader( + datasets.MNIST(config["dir"], train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=batch_size, shuffle=True) + return train_loader +``` + +### **2. Spark Dataframes** +Orca supports Spark Dataframes as the input to the distributed training, and as the input/output of the distributed inference. Consequently, the user can easily process large-scale dataset using Apache Spark, and directly apply AI models on the distributed (and possibly in-memory) Dataframes without data conversion or serialization. + +```python +df = spark.read.parquet("data.parquet") +est = Estimator.from_keras(keras_model=model) # the model accept two inputs and one label +est.fit(data=df, + feature_cols=['user', 'item'], # specifies which column(s) to be used as inputs + label_cols=['label']) # specifies which column(s) to be used as labels +``` + +### **3. XShards (Distributed Data-Parallel Python Processing)** + +`XShards` in Orca allows the user to process large-scale dataset using *existing* Python codes in a distributed and data-parallel fashion, as shown below. + +```python +import numpy as np +from zoo.orca.data import XShards + +train_images = np.random.random((20, 3, 224, 224)) +train_label_images = np.zeros(20) +train_shards = XShards.partition([train_images, train_label_images]) + +def transform_to_dict(train_data): + return {"x": train_data[0], "y": train_data[1]} + +train_shards = train_shards.transform_shard(transform_to_dict) +``` + +In essence, an `XShards` contains an automatically sharded (or partitioned) Python object (e.g., Pandas Dataframe, Numpy NDArray, Python Dictionary or List, etc.). Each partition of the `XShards` stores a subset of the Python object and is distributed across different nodes in the cluster; and the user may run arbitrary Python codes on each partition in a data-parallel fashion using `XShards.transform_shard`. + +View the related [Python API doc](./data) for more details. + +#### **3.1 Data-Parallel Pandas** +The user may use `XShards` to efficiently process large-size Pandas Dataframes in a distributed and data-parallel fashion. + +First, the user can read CVS, JSON or Parquet files (stored on local disk, HDFS, AWS S3, etc.) to obtain an `XShards` of Pandas Dataframe, as shown below: +```python +from zoo.orca.data.pandas import read_csv +csv_path = "/path/to/csv_file_or_folder" +shard = read_csv(csv_path) +``` + +Each partition of the returned `XShards` stores a Pandas Dataframe object (containing a subset of the entire dataset), and then the user can apply Pandas operations as well as other (e.g., sklearn) operations on each partition, as shown below: +```python +def negative(df, column_name): + df[column_name] = df[column_name] * (-1) + return df + +train_shards = shard.transform_shard(negative, 'value') +``` + +In addition, some global operations (such as `partition_by`, `unique`, etc.) are also supported on the `XShards` of Pandas Dataframe, as shown below: +```python +shard.partition_by(cols="location", num_partitions=4) +location_list = shard["location"].unique() +``` diff --git a/docs/readthedocs/source/doc/Orca/Overview/distributed-training-inference.md b/docs/readthedocs/source/doc/Orca/Overview/distributed-training-inference.md new file mode 100644 index 00000000..983748ef --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/Overview/distributed-training-inference.md @@ -0,0 +1,252 @@ +# Distributed Training and Inference + +--- + +**Orca `Estimator` provides sklearn-style APIs for transparently distributed model training and inference** + +### **1. Estimator** + +To perform distributed training and inference, the user can first create an Orca `Estimator` from any standard (single-node) TensorFlow, Kera or PyTorch model, and then call `Estimator.fit` or `Estimator.predict` methods (using the [data-parallel processing pipeline](./data-parallel-processing.md) as input). + +Under the hood, the Orca `Estimator` will replicate the model on each node in the cluster, feed the data partition (generated by the data-parallel processing pipeline) on each node to the local model replica, and synchronize model parameters using various *backend* technologies (such as *Horovod*, `tf.distribute.MirroredStrategy`, `torch.distributed`, or the parameter sync layer in [*BigDL*](https://github.com/intel-analytics/BigDL)). + +### **2. TensorFlow/Keras Estimator** + +#### **2.1 TensorFlow 1.15 and Keras 2.3** + +There are two ways to create an Estimator for TensorFlow 1.15, either from a low level computation graph or a Keras model. Examples are as follow: + +TensorFlow Computation Graph: +```python +# define inputs to the graph +images = tf.placeholder(dtype=tf.float32, shape=(None, 28, 28, 1)) +labels = tf.placeholder(dtype=tf.int32, shape=(None,)) + +# define the network and loss +logits = lenet(images) +loss = tf.reduce_mean(tf.losses.sparse_softmax_cross_entropy(logits=logits, labels=labels)) + +# define a metric +acc = accuracy(logits, labels) + +# create an estimator using endpoints of the graph +est = Estimator.from_graph(inputs=images, + outputs=logits, + labels=labels, + loss=loss, + optimizer=tf.train.AdamOptimizer(), + metrics={"acc": acc}) +``` + +Keras Model: +```python +model = create_keras_lenet_model() +model.compile(optimizer=keras.optimizers.RMSprop(), + loss='sparse_categorical_crossentropy', + metrics=['accuracy']) +est = Estimator.from_keras(keras_model=model) +``` + +Then users can perform distributed model training and inference as follows: + +```python +dataset = tfds.load(name="mnist", split="train") +dataset = dataset.map(preprocess) +est.fit(data=mnist_train, + batch_size=320, + epochs=max_epoch) +predictions = est.predict(data=df, + feature_cols=['image']) +``` +The `data` argument in `fit` method can be a Spark DataFrame, an *XShards* or a `tf.data.Dataset`. The `data` argument in `predict` method can be a spark DataFrame or an *XShards*. See the *data-parallel processing pipeline* [page](./data-parallel-processing.md) for more details. + +View the related [Python API doc]() for more details. + +#### **2.2 TensorFlow 2.x and Keras 2.4+** + +Users can create an `Estimator` for TensorFlow 2.x from a Keras model (using a _Model Creator Function_). For example: + +```python +def model_creator(config): + model = create_keras_lenet_model() + model.compile(optimizer=keras.optimizers.RMSprop(), + loss='sparse_categorical_crossentropy', + metrics=['accuracy']) + return model +est = Estimator.from_keras(model_creator=model_creator) +``` + +The `model_creator` argument should be a function that takes a `config` dictionary and returns a compiled Keras model. + +Then users can perform distributed model training and inference as follows: + +```python +def train_data_creator(config, batch_size): + dataset = tfds.load(name="mnist", split="train") + dataset = dataset.map(preprocess) + dataset = dataset.batch(batch_size) + return dataset +stats = est.fit(data=train_data_creator, + epochs=max_epoch, + steps_per_epoch=total_size // batch_size) +predictions = est.predict(data=df, + feature_cols=['image']) +``` + +The `data` argument in `fit` method can be a spark DataFrame, an *XShards* or a *Data Creator Function* (that returns a `tf.data.Dataset`). The `data` argument in `predict` method can be a spark DataFrame or an *XShards*. See the *data-parallel processing pipeline* [page](./data-parallel-processing.md) for more details. + +View the related [Python API doc]() for more details. + +***For more details, view the distributed TensorFlow training/inference [page]().*** + +### **3. PyTorch Estimator** + +**Using *BigDL* backend** + +Users may create a PyTorch `Estimator` using the *BigDL* backend (currently default for PyTorch) as follows: + +```python +model = LeNet() # a torch.nn.Module +model.train() +criterion = nn.NLLLoss() + +adam = torch.optim.Adam(model.parameters(), args.lr) +est = Estimator.from_torch(model=model, optimizer=adam, loss=criterion) +``` + +Then users can perform distributed model training and inference as follows: + +```python +est.fit(data=train_loader, epochs=args.epochs) +predictions = est.predict(xshards) +``` + +The input to `fit` methods can be a `torch.utils.data.DataLoader`, a Spark Dataframe, an *XShards*, or a *Data Creator Function* (that returns a `torch.utils.data.DataLoader`). The input to `predict` methods should be a Spark Dataframe, or an *XShards*. See the *data-parallel processing pipeline* [page](./data-parallel-processing.md) for more details. + +View the related [Python API doc]() for more details. + +**Using `torch.distributed` or *Horovod* backend** + +Alternatively, users can create a PyTorch `Estimator` using `torch.distributed` or *Horovod* backend by specifying the `backend` argument to be "torch_distributed" or "horovod". In this case, the `model` and `optimizer` should be wrapped in _Creater Functions_. For example: + +```python +def model_creator(config): + model = LeNet() # a torch.nn.Module + model.train() + return model + +def optimizer_creator(model, config): + return torch.optim.Adam(model.parameters(), config["lr"]) + +est = Estimator.from_torch(model=model, + optimizer=optimizer_creator, + loss=nn.NLLLoss(), + config={"lr": 1e-2}, + backend="torch_distributed") # or backend="horovod" +``` + +Then users can perform distributed model training and inference as follows: + +```python +est.fit(data=train_loader_func, epochs=args.epochs) +predictions = est.predict(data=df, + feature_cols=['image']) +``` + +The input to `fit` methods can be a Spark DataFrame, an *XShards*, or a *Data Creator Function* (that returns a `torch.utils.data.DataLoader`). The `data` argument in `predict` method can be a Spark DataFrame or an *XShards*. See the *data-parallel processing pipeline* [page](./data-parallel-processing.md) for more details. + +View the related [Python API doc]() for more details. + +***For more details, view the distributed PyTorch training/inference [page]().*** + +### **4. MXNet Estimator** + +The user may create a MXNet `Estimator` as follows: +```python +from zoo.orca.learn.mxnet import Estimator, create_config + +def get_model(config): + net = LeNet() # a mxnet.gluon.Block + return net + +def get_loss(config): + return gluon.loss.SoftmaxCrossEntropyLoss() + +config = create_config(log_interval=2, optimizer="adam", + optimizer_params={'learning_rate': 0.02}) +est = Estimator.from_mxnet(config=config, + model_creator=get_model, + loss_creator=get_loss, + num_workers=2) +``` + +Then the user can perform distributed model training as follows: +```python +import numpy as np + +def get_train_data_iter(config, kv): + train = mx.io.NDArrayIter(data_ndarray, label_ndarray, + batch_size=config["batch_size"], shuffle=True) + return train + +est.fit(get_train_data_iter, epochs=2) +``` + +The input to `fit` methods can be an *XShards*, or a *Data Creator Function* (that returns an `MXNet DataIter/DataLoader`). See the *data-parallel processing pipeline* [page](./data-parallel-processing.html) for more details. + +View the related [Python API doc]() for more details. + +### **5. BigDL Estimator** + +The user may create a BigDL `Estimator` as follows: +```python +from bigdl.nn.criterion import * +from bigdl.nn.layer import * +from bigdl.optim.optimizer import * +from zoo.orca.learn.bigdl import Estimator + +linear_model = Sequential().add(Linear(2, 2)) +mse_criterion = MSECriterion() +est = Estimator.from_bigdl(model=linear_model, loss=mse_criterion, optimizer=Adam()) +``` + +Then the user can perform distributed model training and inference as follows: +```python +# read spark Dataframe +df = spark.read.parquet("data.parquet") + +# distributed model training +est.fit(df, 1, batch_size=4) + +#distributed model inference +result_df = est.predict(df) +``` + +The input to `fit` and `predict` methods can be a *Spark Dataframe*, or an *XShards*. See the *data-parallel processing pipeline* [page](./data-parallel-processing.html) for more details. + +View the related [Python API doc]() for more details. + +### **6. OpenVINO Estimator** + +The user may create a OpenVINO `Estimator` as follows: +```python +from zoo.orca.learn.openvino import Estimator + +model_path = "The/file_path/to/the/OpenVINO_IR_xml_file" +est = Estimator.from_openvino(model_path=model_path) +``` + +Then the user can perform distributed model inference as follows: +```python +# ndarray +input_data = np.random.random([20, 4, 3, 224, 224]) +result = est.predict(input_data) + +# xshards +shards = XShards.partition({"x": input_data}) +result_shards = est.predict(shards) +``` + +The input to `predict` methods can be an *XShards*, or a *numpy array*. See the *data-parallel processing pipeline* [page](./data-parallel-processing.html) for more details. + +View the related [Python API doc]() for more details. diff --git a/docs/readthedocs/source/doc/Orca/Overview/distributed-tuning.md b/docs/readthedocs/source/doc/Orca/Overview/distributed-tuning.md new file mode 100644 index 00000000..8cfbe457 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/Overview/distributed-tuning.md @@ -0,0 +1,211 @@ +# Distributed Hyper-parameter Tuning + +--- + +**Orca `AutoEstimator` provides similar APIs as Orca `Estimator` for distributed hyper-parameter tuning.** + +### **1. AutoEstimator** + +To perform distributed hyper-parameter tuning, user can first create an Orca `AutoEstimator` from standard TensorFlow Keras or PyTorch model, and then call `AutoEstimator.fit`. + +Under the hood, the Orca `AutoEstimator` generates different trials and schedules them on each mode in the cluster. Each trial runs a different combination of hyper parameters, sampled from the user-desired hyper-parameter space. +HDFS is used to save temporary results of each trial and all the results will be finally transferred to driver for further analysis. + +### **2. Pytorch AutoEstimator** + +User could pass *Creator Function*s, including *Data Creator Function*, *Model Creator Function* and *Optimizer Creator Function* to `AutoEstimator` for training. + +The *Creator Function*s should take a parameter of `config` as input and get the hyper-parameter values from `config` to enable hyper parameter search. + +#### **2.1 Data Creator Function** +You can define the train and validation datasets using *Data Creator Function*. The *Data Creator Function* takes `config` as input and returns a `torch.utils.data.DataLoader` object, as shown below. +```python +# "batch_size" is the hyper-parameter to be tuned. +def train_loader_creator(config): + train_loader = torch.utils.data.DataLoader( + datasets.MNIST(dir, train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=config["batch_size"], shuffle=True) + return train_loader +``` +The input data for Pytorch `AutoEstimator` can be a *Data Creator Function* or a tuple of numpy ndarrays in the form of (x, y), where x is training input data and y is training target data. + +#### **2.2 Model Creator Function** +*Model Creator Function* also takes `config` as input and returns a `torch.nn.Module` object, as shown below. + +```python +import torch.nn as nn +class LeNet(nn.Module): + def __init__(self, fc1_hidden_size=500): + super(LeNet, self).__init__() + self.conv1 = nn.Conv2d(1, 20, 5, 1) + self.conv2 = nn.Conv2d(20, 50, 5, 1) + self.fc1 = nn.Linear(4*4*50, fc1_hidden_size) + self.fc2 = nn.Linear(fc1_hidden_size, 10) + + def forward(self, x): + pass + +def model_creator(config): + # "fc1_hidden_size" is the hyper-parameter to be tuned. + model = LeNet(fc1_hidden_size=config["fc1_hidden_size"]) + return model +``` + +#### **2.3 Optimizer Creator Function** +*Optimizer Creator Function* takes `model` and `config` as input, and returns a `torch.optim.Optimizer` object. +```python +import torch +def optim_creator(model, config): + return torch.optim.Adam(model.parameters(), lr=config["lr"]) +``` + +Note that the `optimizer` argument in Pytorch `AutoEstimator` constructor could be a *Optimizer Creator Function* or a string, which is the name of Pytorch Optimizer. The above *Optimizer Creator Function* has the same functionality with "Adam". + +#### **2.4 Create and Fit Pytorch AutoEstimator** +User could create a Pytorch `AutoEstimator` as below. +```python +from zoo.orca.automl.auto_estimator import AutoEstimator + +auto_est = AutoEstimator.from_torch(model_creator=model_creator, + optimizer=optim_creator, + loss=nn.NLLLoss(), + logs_dir="/tmp/zoo_automl_logs", + resources_per_trial={"cpu": 2}, + name="lenet_mnist") +``` +Then user can perform distributed hyper-parameter tuning as follows. For more details about the `search_space` argument, view the *search space and search algorithms* [page](#search-space-and-search-algorithms). +```python +auto_est.fit(data=train_loader_creator, + validation_data=test_loader_creator, + search_space=search_space, + n_sampling=2, + epochs=1, + metric="accuracy") +``` +Finally, user can get the best learned model and the best hyper-parameters for further deployment. +```python +best_model = auto_est.get_best_model() # a `torch.nn.Module` object +best_config = auto_est.get_best_config() # a dictionary of hyper-parameter names and values. +``` +View the related [Python API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/AutoML/automl.html#orca-automl-auto-estimator) for more details. + +### **3. TensorFlow/Keras AutoEstimator** +Users can create an `AutoEstimator` for TensorFlow Keras from a `tf.keras` model (using a *Model Creator Function*). For example: + +```python +def model_creator(config): + model = tf.keras.models.Sequential([tf.keras.layers.Dense(config["hidden_size"], + input_shape=(1,)), + tf.keras.layers.Dense(1)]) + model.compile(loss="mse", + optimizer=tf.keras.optimizers.SGD(config["lr"]), + metrics=["mse"]) + return model + +auto_est = AutoEstimator.from_keras(model_creator=model_creator, + logs_dir="/tmp/zoo_automl_logs", + resources_per_trial={"cpu": 2}, + name="auto_keras") +``` + +Then user can perform distributed hyper-parameter tuning as follows. For more details about `search_space`, view the *search space and search algorithms* [page](#search-space-and-search-algorithms). +```python +auto_est.fit(data=train_data, + validation_data=val_data, + search_space=search_space, + n_sampling=2, + epochs=1, + metric="accuracy") +``` +The `data` and `validation_data` in `fit` method can only be a tuple of numpy ndarrays. We haven't support *Data Create Function* now. The numpy ndarray should also be in the form of (x, y), where x is training input data and y is training target data. + +Finally, user can get the best learned model and the best hyper-parameters for further deployment. +```python +best_model = auto_est.get_best_model() # a `torch.nn.Module` object +best_config = auto_est.get_best_config() # a dictionary of hyper-parameter names and values. +``` +View the related [Python API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/AutoML/automl.html#orca-automl-auto-estimator) for more details. + +### **4. Search Space and Search Algorithms** +For Hyper-parameter Optimization, user should define the search space of various hyper-parameter values for neural network training, as well as how to search through the chosen hyper-parameter space. + +#### **4.1 Basic Search Algorithms** + +For basic search algorithms like **Grid Search** and **Random Search**, we provide several sampling functions with `automl.hp`. See [API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/AutoML/automl.html#orca-automl-hp) for more details. + +`AutoEstimator` requires a dictionary for the `search_space` argument in `fit`. +In the dictionary, the keys are the hyper-parameter names, and the values specify how to sample the search spaces for the hyper-parameters. + +```python +from zoo.orca.automl import hp + +search_space = { + "fc1_hidden_size": hp.grid_search([500, 600]), + "lr": hp.loguniform(0.001, 0.1), + "batch_size": hp.choice([160, 320, 640]), +} +``` + +#### **4.2 Advanced Search Algorithms** +Beside grid search and random search, user could also choose to use some advanced hyper-parameter optimization methods, +such as [Ax](https://ax.dev/), [Bayesian Optimization](https://github.com/fmfn/BayesianOptimization), [Scikit-Optimize](https://scikit-optimize.github.io), etc. We supported all *Search Algorithms* in [Ray Tune](https://docs.ray.io/en/master/index.html). View the [Ray Tune Search Algorithms](https://docs.ray.io/en/master/tune/api_docs/suggestion.html) for more details. +Note that you should install the dependency for your search algorithm manually. + +Take bayesian optimization as an instance. You need to first install the dependency with + +```bash +pip install bayesian-optimization +``` + +And pass the search algorithm name to `search_alg` in `AutoEstimator.fit`. +```python +from zoo.orca.automl import hp + +search_space = { + "width": hp.uniform(0, 20), + "height": hp.uniform(-100, 100) +} + +auto_estimator.fit( + data, + search_space=search_space, + metric="mean_loss", + mode="min", + search_alg="bayesopt", +) +``` +See [API Doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/AutoML/automl.html#orca-automl-auto-estimator) for more details. + +### **4. Scheduler** +*Scheduler* can stop/pause/tweak the hyper-parameters of running trials, making the hyper-parameter tuning process much efficient. + +We support all *Schedulers* in [Ray Tune](https://docs.ray.io/en/master/index.html). See [Ray Tune Schedulers](https://docs.ray.io/en/master/tune/api_docs/schedulers.html#schedulers-ref) for more details. + +User can pass the *Scheduler* name to `scheduler` in `AutoEstimator.fit`. The *Scheduler* names supported are "fifo", "hyperband", "async_hyperband", "median_stopping_rule", "hb_bohb", "pbt", "pbt_replay". +The default `scheduler` is "fifo", which just runs trials in submission order. + +See examples below about how to use *Scheduler* in `AutoEstimator`. +```python +scheduler_params = dict( + max_t=50, + grace_period=1, + reduction_factor=3, + brackets=3, + ) + +auto_estimator.fit( + data, + search_space=search_space, + metric="mean_loss", + mode="min", + search_alg="skopt", + scheduler = "AsyncHyperBand", + scheduler_params=scheduler_params +) +``` +*Scheduler* shares the same parameters as ray tune schedulers. +And `scheduler_params` are extra parameters for `scheduler` other than `metric` and `mode`. diff --git a/docs/readthedocs/source/doc/Orca/Overview/orca-context.md b/docs/readthedocs/source/doc/Orca/Overview/orca-context.md new file mode 100644 index 00000000..737dfb9e --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/Overview/orca-context.md @@ -0,0 +1,81 @@ +# Orca Context + +--- + +`OrcaContext` is the main entry for provisioning the Orca program on the underlying cluster (such as K8s or Hadoop cluster), or just on a single laptop. + +--- +### **1. Initialization** + +An Orca program usually starts with the initialization of `OrcaContext` as follows: + +```python +from zoo.orca import init_orca_context + +init_orca_context(...) +``` + +In `init_orca_context`, the user may specify necessary runtime configurations for the Orca program, including: + +- *Cluster mode*: Users can specify the computing environment for the program (a local machine, K8s cluster, Hadoop/YARN cluster, etc.). +- *Physical resources*: Users can specify the amount of physical resources to be allocated for the program on the underlying cluster, including the number of nodes in the cluster, the cores and memory allocated for each node, etc. + +The Orca program simply runs `init_orca_context` on the local machine, which will automatically provision the runtime Python environment and distributed execution engine on the underlying computing environment (such as a single laptop, a large K8s or Hadoop cluster, etc.). + +View the related [Python API doc]() for more details. + +--- +### **2. Python Dependencies** + +A key challenge for scaling out Python program across a distributed cluster is how to properly install the required Python environment (libraries and dependencies) on each node in the cluster (preferably in an automatic and dynamic fashion). + +For K8s cluster, the user may install required Python packages in the container and specify the `container_image` argument when `init_orca_context`. For Hadoop/YARN cluster, the user may use `conda` to create the Python virtual environment with required dependencies on the local machine, and `init_orca_context` will automatically detect the active `conda` environment and provision it on each node in the cluster. + +You can also add .py, .zip or .egg files to distribute with your application by specifying `extra_python_lib` in `init_orca_context`. If you depend on multiple Python files we recommend packaging them into a .zip or .egg. Those files will be added to each node's python search path. + +```python +init_orca_context(..., extra_python_lib="func1.py,func2.py,lib3.zip") +``` + +View the user guide for [K8s](../../UserGuide/k8s.md) and [Hadoop/YARN](../../UserGuide/hadoop.md) for more details. + +--- +### **3. Execution Engine** + +Under the hood, `OrcaContext` will automatically provision Apache Spark and/or Ray as the underlying execution engine for the distributed data processing and model training/inference. + +Users can easily retrieve `SparkContext` and `RayContext`, the main entry point for Spark and Ray respectively, via `OrcaContext`: + +```python +from zoo.orca import OrcaContext + +sc = OrcaContext.get_spark_context() +ray_ctx = OrcaContext.get_ray_context() +``` + +--- +### **4. Extra Configurations** + +Users can make extra configurations when using the functionalities of Project Orca via `OrcaContext`. + +* `OrcaContext.log_output`: Default to be False. `OrcaContext.log_output = True` is recommended when running Jupyter notebook (this will display all the program output in the notebook). Make sure you set it before `init_orca_context`. + +* `OrcaContext.serialize_data_creator`: Default to be False. `OrcaContext.serialize_data_creator = True` would add a file lock when initializing data for distributed training (this may be useful if you run multiple workers on a single node and they download data to the same destination). + +* `OrcaContext.pandas_read_backend`: The backend to be used for reading data as Panda DataFrame. Default to be "spark". See [here](./data-parallel-processing.html#data-parallel-pandas) for more details. + +* `OrcaContext.train_data_store`: Default to be "DRAM". `OrcaContext.train_data_store = "DISK_n"` (e.g., "DISK_2") if the training data cannot fit in memory (this will store the data on disk, and cache only 1/n of the data in memory; after going through the 1/n, it will release the current cache, and load another 1/n into memory). Currently it works for TensorFlow and Keras Estimators only. + +* `OrcaContext.barrier_mode`: Whether to use Spark barrier execution mode to launch Ray. Default to be True. You can set it to be False if you are using Spark below 2.4 or you need to have dynamic allocation enabled. + +--- + +### **5. Termination** + +After the Orca program finishes, the user can call `stop_orca_context` to release resources and shut down the underlying Spark and/or Ray execution engine. + +```python +from zoo.orca import stop_orca_context + +stop_orca_context() +``` diff --git a/docs/readthedocs/source/doc/Orca/Overview/orca.md b/docs/readthedocs/source/doc/Orca/Overview/orca.md new file mode 100644 index 00000000..7d138fee --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/Overview/orca.md @@ -0,0 +1,48 @@ +# The Orca Library + +Most AI projects start with a Python notebook running on a single laptop; however, one usually needs to go through a mountain of pains to scale it to handle larger data set in a distributed fashion. The _**Orca**_ library seamlessly scales out your single node Python notebook across large clusters (so as to process distributed Big Data). + +First, initialize [Orca Context](orca-context.md): + +```python +from zoo.orca import init_orca_context + +# cluster_mode can be "local", "k8s" or "yarn" +sc = init_orca_context(cluster_mode="yarn", cores=4, memory="10g", num_nodes=2) +``` + +Next, perform [data-parallel processing in Orca](data-parallel-processing.md) (supporting standard Spark Dataframes, TensorFlow Dataset, PyTorch DataLoader, Pandas, etc.): + +```python +from pyspark.sql.functions import array + +df = spark.read.parquet(file_path) +df = df.withColumn('user', array('user')) \ + .withColumn('item', array('item')) +``` + +Finally, use [sklearn-style Estimator APIs in Orca](distributed-training-inference.md) to perform distributed _TensorFlow_, _PyTorch_, _Keras_ and _BigDL_ training and inference: + +```python +from tensorflow import keras +from zoo.orca.learn.tf.estimator import Estimator + +user = keras.layers.Input(shape=[1]) +item = keras.layers.Input(shape=[1]) +feat = keras.layers.concatenate([user, item], axis=1) +predictions = keras.layers.Dense(2, activation='softmax')(feat) +model = keras.models.Model(inputs=[user, item], outputs=predictions) +model.compile(optimizer='rmsprop', + loss='sparse_categorical_crossentropy', + metrics=['accuracy']) + +est = Estimator.from_keras(keras_model=model) +est.fit(data=df, + batch_size=64, + epochs=4, + feature_cols=['user', 'item'], + label_cols=['label']) +``` + +See [TensorFlow](../QuickStart/orca-tf-quickstart.md) and [PyTorch](../QuickStart/orca-pytorch-quickstart.md) quickstart for more details. + diff --git a/docs/readthedocs/source/doc/Orca/QuickStart/orca-autoestimator-pytorch-quickstart.md b/docs/readthedocs/source/doc/Orca/QuickStart/orca-autoestimator-pytorch-quickstart.md new file mode 100644 index 00000000..b56ed156 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/QuickStart/orca-autoestimator-pytorch-quickstart.md @@ -0,0 +1,161 @@ +# Enable AutoML for PyTorch + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoestimator_pytorch_lenet_mnist.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoestimator_pytorch_lenet_mnist.ipynb) + +--- + +**In this guide we will describe how to enable automated hyper-parameter search for PyTorch using Orca `AutoEstimator`.** + +### **Step 0: Prepare Environment** + +[Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) is needed to prepare the Python environment for running this example. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # zoo is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo[ray] +pip install torch==1.7.1 torchvision==0.8.2 +``` + +### **Step 1: Init Orca Context** +```python +from zoo.orca import init_orca_context, stop_orca_context + +if cluster_mode == "local": + init_orca_context(cores=4, memory="2g", init_ray_on_spark=True) # run in local mode +elif cluster_mode == "k8s": + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=4, init_ray_on_spark=True) # run on K8s cluster +elif cluster_mode == "yarn": + init_orca_context( + cluster_mode="yarn-client", cores=4, num_nodes=2, memory="2g", init_ray_on_spark=True, + driver_memory="10g", driver_cores=1) # run on Hadoop YARN cluster +``` + +This is the only place where you need to specify local or distributed mode. View [Orca Context](./../Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +### **Step 2: Define the Model** + +You may define your model, loss and optimizer in the same way as in any standard PyTorch program. + +```python +import torch +import torch.nn as nn +import torch.nn.functional as F + +class LeNet(nn.Module): + def __init__(self, fc1_hidden_size=500): + super(LeNet, self).__init__() + self.conv1 = nn.Conv2d(1, 20, 5, 1) + self.conv2 = nn.Conv2d(20, 50, 5, 1) + self.fc1 = nn.Linear(4*4*50, fc1_hidden_size) + self.fc2 = nn.Linear(fc1_hidden_size, 10) + + def forward(self, x): + x = F.relu(self.conv1(x)) + x = F.max_pool2d(x, 2, 2) + x = F.relu(self.conv2(x)) + x = F.max_pool2d(x, 2, 2) + x = x.view(-1, 4*4*50) + x = F.relu(self.fc1(x)) + x = self.fc2(x) + return F.log_softmax(x, dim=1) + +criterion = nn.NLLLoss() +``` +After defining your model, you need to define a *Model Creator Function* that returns an instance of your model, and a *Optimizer Creator Function* that returns a PyTorch optimizer. Note that both the *Model Creator Function* and the *Optimizer Creator Function* should take `config` as input and get the hyper-parameter values from `config`. + +```python +def model_creator(config): + model = LeNet(fc1_hidden_size=config["fc1_hidden_size"]) + return model + +def optim_creator(model, config): + return torch.optim.Adam(model.parameters(), lr=config["lr"]) +``` + +### **Step 3: Define Dataset** + +You can define the train and validation datasets using *Data Creator Function* that takes `config` as input and returns a PyTorch `DataLoader`. + +```python +import torch +from torchvision import datasets, transforms + +torch.manual_seed(0) +dir = './dataset' +test_batch_size = 640 + +def train_loader_creator(config): + train_loader = torch.utils.data.DataLoader( + datasets.MNIST(dir, train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=config["batch_size"], shuffle=True) + return train_loader + +def test_loader_creator(config): + test_loader = torch.utils.data.DataLoader( + datasets.MNIST(dir, train=False, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=test_batch_size, shuffle=False) + return test_loader +``` + +### **Step 4: Define Search Space** +You should define a dictionary as your hyper-parameter search space. + +The keys are hyper-parameter names which should be the same with those in your creators, and you can specify how you want to sample each hyper-parameter in the values of the search space. See [automl.hp](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/AutoML/automl.html#orca-automl-hp) for more details. + +```python +from zoo.orca.automl import hp + +search_space = { + "fc1_hidden_size": hp.choice([500, 600]), + "lr": hp.choice([0.001, 0.003]), + "batch_size": hp.choice([160, 320, 640]), +} +``` + +### **Step 5: Automatically Fit and Search with Orca AutoEstimator** + +First, create an `AutoEstimator`. You can refer to [AutoEstimator API doc](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/AutoML/automl.html#orca-automl-auto-estimator) for more details. + +```python +from zoo.orca.automl.auto_estimator import AutoEstimator + +auto_est = AutoEstimator.from_torch(model_creator=model_creator, + optimizer=optim_creator, + loss=criterion, + logs_dir="/tmp/zoo_automl_logs", + resources_per_trial={"cpu": 2}, + name="lenet_mnist") +``` + +Next, use the `AutoEstimator` to fit and search for the best hyper-parameter set. + +```python +auto_est.fit(data=train_loader_creator, + validation_data=test_loader_creator, + search_space=search_space, + n_sampling=2, + epochs=1, + metric="accuracy") +``` + +Finally, you can get the best learned model and the best hyper-parameters. + +```python +best_model = auto_est.get_best_model() +best_config = auto_est.get_best_config() +``` + +**Note:** You should call `stop_orca_context()` when your application finishes. diff --git a/docs/readthedocs/source/doc/Orca/QuickStart/orca-autoxgboost-quickstart.md b/docs/readthedocs/source/doc/Orca/QuickStart/orca-autoxgboost-quickstart.md new file mode 100644 index 00000000..8006b35d --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/QuickStart/orca-autoxgboost-quickstart.md @@ -0,0 +1,88 @@ +# Use AutoXGBoost to auto-tune XGBoost parameters + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoxgboost_regressor_sklearn_boston.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoxgboost_regressor_sklearn_boston.ipynb) + +--- + +**In this guide we will describe how to use Orca AutoXGBoost for automated xgboost tuning** + +Orca AutoXGBoost enables distributed automated hyper-parameter tuning for XGBoost, which includes `AutoXGBRegressor` and `AutoXGBClassifier` for sklearn`XGBRegressor` and `XGBClassifier` respectively. See more about [xgboost scikit-learn API](https://xgboost.readthedocs.io/en/latest/python/python_api.html#module-xgboost.sklearn). +### **Step 0: Prepare Environment** + +[Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) is needed to prepare the Python environment for running this example. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # zoo is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo[ray] +pip install torch==1.7.1 torchvision==0.8.2 +``` + +### **Step 1: Init Orca Context** +```python +from zoo.orca import init_orca_context, stop_orca_context + +if cluster_mode == "local": + init_orca_context(cores=6, memory="2g", init_ray_on_spark=True) # run in local mode +elif cluster_mode == "k8s": + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=4, init_ray_on_spark=True) # run on K8s cluster +elif cluster_mode == "yarn": + init_orca_context( + cluster_mode="yarn-client", cores=4, num_nodes=2, memory="2g", init_ray_on_spark=True, + driver_memory="10g", driver_cores=1) # run on Hadoop YARN cluster +``` + +This is the only place where you need to specify local or distributed mode. View [Orca Context](./../Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +### **Step 2: Define Search space** + +You should define a dictionary as your hyper-parameter search space. + +The keys are hyper-parameter names you want to search for `XGBRegressor`, and you can specify how you want to sample each hyper-parameter in the values of the search space. See [automl.hp](https://analytics-zoo.readthedocs.io/en/latest/doc/PythonAPI/AutoML/automl.html#orca-automl-hp) for more details. + +```python +from zoo.orca.automl import hp + +search_space = { + "n_estimators": hp.grid_search([50, 100, 200]), + "max_depth": hp.choice([2, 4, 6]), +} +``` + +### **Step 3: Automatically fit and search with Orca AutoXGBoost** + +First create an `AutoXGBRegressor`. + +```python +from zoo.orca.automl.xgboost import AutoXGBRegressor + +auto_xgb_reg = AutoXGBRegressor(cpus_per_trial=2, + name="auto_xgb_classifier", + min_child_weight=3, + random_state=2) +``` + +Next, use the `AutoXGBRegressor` to fit and search for the best hyper-parameter set. + +```python +auto_xgb_reg.fit(data=(X_train, y_train), + validation_data=(X_test, y_test), + search_space=search_space, + n_sampling=2, + metric="rmse") +``` + +### **Step 4: Get best model and hyper parameters** + +You can get the best learned model and the best hyper-parameter set for further deployment. The best model is an sklearn `XGBRegressor` instance. + +```python +best_model = auto_xgb_reg.get_best_model() +best_config = auto_xgb_reg.get_best_config() +``` + +**Note:** You should call `stop_orca_context()` when your application finishes. diff --git a/docs/readthedocs/source/doc/Orca/QuickStart/orca-keras-quickstart.md b/docs/readthedocs/source/doc/Orca/QuickStart/orca-keras-quickstart.md new file mode 100644 index 00000000..623111f5 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/QuickStart/orca-keras-quickstart.md @@ -0,0 +1,110 @@ +# Keras 2.3 Quickstart + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/keras_lenet_mnist.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/keras_lenet_mnist.ipynb) + +--- + +**In this guide we will describe how to scale out _Keras 2.3_ programs using Orca in 4 simple steps.** (_[TensorFlow 1.5](./orca-tf-quickstart.md) and [TensorFlow 2](./orca-tf2keras-quickstart.md) guides are also available._) + + +### **Step 0: Prepare Environment** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the environment. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics_zoo-${VERSION} # install either version 0.9 or latest nightly build +pip install tensorflow==1.15.0 +pip install tensorflow-datasets==2.1.0 +pip install psutil +pip install pandas +pip install scikit-learn +``` + +### **Step 1: Init Orca Context** +```python +from zoo.orca import init_orca_context, stop_orca_context + +if cluster_mode == "local": # For local machine + init_orca_context(cluster_mode="local", cores=4, memory="10g") +elif cluster_mode == "k8s": # For K8s cluster + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +elif cluster_mode == "yarn": # For Hadoop/YARN cluster + init_orca_context(cluster_mode="yarn", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +``` + +This is the only place where you need to specify local or distributed mode. View [Orca Context](./../Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +### **Step 2: Define the Model** + +You may define your model, loss and metrics in the same way as in any standard (single node) Keras program. + +```python +from tensorflow import keras + +model = keras.Sequential( + [keras.layers.Conv2D(20, kernel_size=(5, 5), strides=(1, 1), activation='tanh', + input_shape=(28, 28, 1), padding='valid'), + keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='valid'), + keras.layers.Conv2D(50, kernel_size=(5, 5), strides=(1, 1), activation='tanh', + padding='valid'), + keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='valid'), + keras.layers.Flatten(), + keras.layers.Dense(500, activation='tanh'), + keras.layers.Dense(10, activation='softmax'), + ] +) + +model.compile(optimizer=tf.keras.optimizers.RMSprop(), + loss='sparse_categorical_crossentropy', + metrics=['accuracy']) +``` +### **Step 3: Define Train Dataset** + +You can define the dataset using standard [tf.data.Dataset](https://www.tensorflow.org/api_docs/python/tf/data/Dataset). Orca also supports [Spark DataFrame](https://spark.apache.org/docs/latest/sql-programming-guide.html) and [Orca XShards](../Overview/data-parallel-processing.md). + +```python +import tensorflow as tf +import tensorflow_datasets as tfds + +def preprocess(data): + data['image'] = tf.cast(data["image"], tf.float32) / 255. + return data['image'], data['label'] + +# get DataSet +mnist_train = tfds.load(name="mnist", split="train", data_dir=dataset_dir) +mnist_test = tfds.load(name="mnist", split="test", data_dir=dataset_dir) + +mnist_train = mnist_train.map(preprocess) +mnist_test = mnist_test.map(preprocess) +``` + +### **Step 4: Fit with Orca Estimator** + +First, create an Estimator. + +```python +from zoo.orca.learn.tf.estimator import Estimator + +est = Estimator.from_keras(keras_model=model) +``` + +Next, fit and evaluate using the Estimator. +```python +est.fit(data=mnist_train, + batch_size=320, + epochs=5, + validation_data=mnist_test) + +result = est.evaluate(mnist_test) +print(result) +``` + +That's it, the same code can run seamlessly in your local laptop and the distribute K8s or Hadoop cluster. + +**Note:** You should call `stop_orca_context()` when your program finishes. diff --git a/docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-distributed-quickstart.md b/docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-distributed-quickstart.md new file mode 100644 index 00000000..cb988042 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-distributed-quickstart.md @@ -0,0 +1,133 @@ +# Use `torch.distributed` in Orca + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_distributed_lenet_mnist.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_distributed_lenet_mnist.ipynb) + +--- + +**In this guide we will describe how to scale out _PyTorch_ programs using the `torch.distributed` package in Orca.** + +### **Step 0: Prepare Environment** + +[Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) is needed to prepare the Python environment for running this example. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # zoo is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo[ray] +pip install torch==1.7.1 torchvision==0.8.2 +``` + +### **Step 1: Init Orca Context** +```python +from zoo.orca import init_orca_context, stop_orca_context + +if cluster_mode == "local": # For local machine + init_orca_context(cores=4, memory="10g") +elif cluster_mode == "k8s": # For K8s cluster + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +elif cluster_mode == "yarn": # For Hadoop/YARN cluster + init_orca_context(cluster_mode="yarn", cores=2, num_nodes=2, memory="10g", driver_memory="10g", driver_cores=1) +``` + +This is the only place where you need to specify local or distributed mode. View [Orca Context](./../Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +### **Step 2: Define the Model** + +You may define your model, loss and optimizer in the same way as in any standard (single node) PyTorch program. + +```python +import torch +import torch.nn as nn +import torch.nn.functional as F + +class LeNet(nn.Module): + def __init__(self): + super(LeNet, self).__init__() + self.conv1 = nn.Conv2d(1, 20, 5, 1) + self.conv2 = nn.Conv2d(20, 50, 5, 1) + self.fc1 = nn.Linear(4*4*50, 500) + self.fc2 = nn.Linear(500, 10) + + def forward(self, x): + x = F.relu(self.conv1(x)) + x = F.max_pool2d(x, 2, 2) + x = F.relu(self.conv2(x)) + x = F.max_pool2d(x, 2, 2) + x = x.view(-1, 4*4*50) + x = F.relu(self.fc1(x)) + x = self.fc2(x) + return F.log_softmax(x, dim=1) + +criterion = nn.NLLLoss() +``` +After defining your model, you need to define a *Model Creator Function* that returns an instance of your model, and a *Optimizer Creator Function* that returns a PyTorch optimizer. + +```python +def model_creator(config): + model = LeNet() + return model + +def optim_creator(model, config): + return torch.optim.Adam(model.parameters(), lr=0.001) +``` + +### **Step 3: Define Train Dataset** + +You can define the dataset using a *Data Creator Function* that returns a PyTorch `DataLoader`. Orca also supports [Orca SparkXShards](../Overview/data-parallel-processing). + +```python +import torch +from torchvision import datasets, transforms + +torch.manual_seed(0) +batch_size = 320 +test_batch_size = 320 +dir = './dataset' + +def train_loader_creator(config, batch_size): + train_loader = torch.utils.data.DataLoader( + datasets.MNIST(dir, train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=batch_size, shuffle=True) + return train_loader + +def test_loader_creator(config, batch_size): + test_loader = torch.utils.data.DataLoader( + datasets.MNIST(dir, train=False, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=batch_size, shuffle=False) + return test_loader +``` + +### **Step 4: Fit with Orca Estimator** + +First, Create an Estimator + +```python +from zoo.orca.learn.pytorch import Estimator +from zoo.orca.learn.metrics import Accuracy + +est = Estimator.from_torch(model=model_creator, optimizer=optim_creator, loss=criterion, metrics=[Accuracy()], + backend="torch_distributed") +``` + +Next, fit and evaluate using the Estimator + +```python +est.fit(data=train_loader_creator, epochs=1, batch_size=batch_size) +result = est.evaluate(data=test_loader_creator, batch_size=test_batch_size) +for r in result: + print(r, ":", result[r]) +``` + +**Note:** You should call `stop_orca_context()` when your application finishes. diff --git a/docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-quickstart.md b/docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-quickstart.md new file mode 100644 index 00000000..d7d9ccd2 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/QuickStart/orca-pytorch-quickstart.md @@ -0,0 +1,134 @@ +# PyTorch Quickstart + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_lenet_mnist.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_lenet_mnist.ipynb) + +--- + +**In this guide we will describe how to scale out _PyTorch_ programs using Orca in 4 simple steps.** + +### **Step 0: Prepare Environment** + +[Conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) is needed to prepare the Python environment for running this example. Please refer to the [install guide](../../UserGuide/python.md) for more details. + + +```bash +conda create -n zoo python=3.7 # zoo is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo # install either version 0.9 or latest nightly build +pip install torch==1.7.1 torchvision==0.8.2 +pip install six cloudpickle +pip install jep==3.9.0 +``` + +### **Step 1: Init Orca Context** +```python +from zoo.orca import init_orca_context, stop_orca_context + +if cluster_mode == "local": # For local machine + init_orca_context(cores=4, memory="10g") +elif cluster_mode == "k8s": # For K8s cluster + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +elif cluster_mode == "yarn": # For Hadoop/YARN cluster + init_orca_context( + cluster_mode="yarn", cores=2, num_nodes=2, memory="10g", + driver_memory="10g", driver_cores=1, + conf={"spark.rpc.message.maxSize": "1024", + "spark.task.maxFailures": "1", + "spark.driver.extraJavaOptions": "-Dbigdl.failure.retryTimes=1"}) +``` + +This is the only place where you need to specify local or distributed mode. View [Orca Context](./../Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +### **Step 2: Define the Model** + +You may define your model, loss and optimizer in the same way as in any standard (single node) PyTorch program. + +```python +import torch +import torch.nn as nn +import torch.nn.functional as F + +class LeNet(nn.Module): + def __init__(self): + super(LeNet, self).__init__() + self.conv1 = nn.Conv2d(1, 20, 5, 1) + self.conv2 = nn.Conv2d(20, 50, 5, 1) + self.fc1 = nn.Linear(4*4*50, 500) + self.fc2 = nn.Linear(500, 10) + + def forward(self, x): + x = F.relu(self.conv1(x)) + x = F.max_pool2d(x, 2, 2) + x = F.relu(self.conv2(x)) + x = F.max_pool2d(x, 2, 2) + x = x.view(-1, 4*4*50) + x = F.relu(self.fc1(x)) + x = self.fc2(x) + return F.log_softmax(x, dim=1) + +model = LeNet() +model.train() +criterion = nn.NLLLoss() +adam = torch.optim.Adam(model.parameters(), 0.001) +``` + +### **Step 3: Define Train Dataset** + +You can define the dataset using standard [Pytorch DataLoader](https://pytorch.org/docs/stable/data.html). + +```python +import torch +from torchvision import datasets, transforms + +torch.manual_seed(0) +dir='./' + +batch_size=64 +test_batch_size=64 +train_loader = torch.utils.data.DataLoader( + datasets.MNIST(dir, train=True, download=True, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=batch_size, shuffle=True) +test_loader = torch.utils.data.DataLoader( + datasets.MNIST(dir, train=False, + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) + ])), + batch_size=test_batch_size, shuffle=False) +``` + +Alternatively, we can also use a [Data Creator Function](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_lenet_mnist_data_creator_func.ipynb) or [Orca XShards](../Overview/data-parallel-processing) as the input data, especially when the data size is very large) + +### **Step 4: Fit with Orca Estimator** + +First, Create an Estimator + +```python +from zoo.orca.learn.pytorch import Estimator +from zoo.orca.learn.metrics import Accuracy + +est = Estimator.from_torch(model=model, optimizer=adam, loss=criterion, metrics=[Accuracy()]) +``` + +Next, fit and evaluate using the Estimator + +```python +from zoo.orca.learn.trigger import EveryEpoch + +est.fit(data=train_loader, epochs=10, validation_data=test_loader, + checkpoint_trigger=EveryEpoch()) + +result = est.evaluate(data=test_loader) +for r in result: + print(r, ":", result[r]) +``` + +**Note:** You should call `stop_orca_context()` when your application finishes. diff --git a/docs/readthedocs/source/doc/Orca/QuickStart/orca-tf-quickstart.md b/docs/readthedocs/source/doc/Orca/QuickStart/orca-tf-quickstart.md new file mode 100644 index 00000000..e1104901 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/QuickStart/orca-tf-quickstart.md @@ -0,0 +1,121 @@ +# TensorFlow 1.15 Quickstart + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf_lenet_mnist.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf_lenet_mnist.ipynb) + +--- + +**In this guide we will describe how to scale out _TensorFlow 1.15_ programs using Orca in 4 simple steps.** (_[Keras 2.3](./orca-keras-quickstart.md) and [TensorFlow 2](./orca-tf2keras-quickstart.md) guides are also available._) + +### **Step 0: Prepare Environment** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the environment. Please refer to the [install guide](../../UserGuide/python.md) for more details. + + +```bash +conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo # install either version 0.9 or latest nightly build +pip install tensorflow==1.15.0 +pip install tensorflow-datasets==2.0 +pip install psutil +``` + +### **Step 1: Init Orca Context** +```python +from zoo.orca import init_orca_context, stop_orca_context + +if cluster_mode == "local": # For local machine + init_orca_context(cluster_mode="local", cores=4, memory="10g") +elif cluster_mode == "k8s": # For K8s cluster + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +elif cluster_mode == "yarn": # For Hadoop/YARN cluster + init_orca_context(cluster_mode="yarn", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +``` + +This is the only place where you need to specify local or distributed mode. View [Orca Context](./../Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +### **Step 2: Define the Model** + +You may define your model, loss and metrics in the same way as in any standard (single node) TensorFlow program. + +```python +import tensorflow as tf + +def accuracy(logits, labels): + predictions = tf.argmax(logits, axis=1, output_type=labels.dtype) + is_correct = tf.cast(tf.equal(predictions, labels), dtype=tf.float32) + return tf.reduce_mean(is_correct) + +def lenet(images): + with tf.variable_scope('LeNet', [images]): + net = tf.layers.conv2d(images, 32, (5, 5), activation=tf.nn.relu, name='conv1') + net = tf.layers.max_pooling2d(net, (2, 2), 2, name='pool1') + net = tf.layers.conv2d(net, 64, (5, 5), activation=tf.nn.relu, name='conv2') + net = tf.layers.max_pooling2d(net, (2, 2), 2, name='pool2') + net = tf.layers.flatten(net) + net = tf.layers.dense(net, 1024, activation=tf.nn.relu, name='fc3') + logits = tf.layers.dense(net, 10) + return logits + +# tensorflow inputs +images = tf.placeholder(dtype=tf.float32, shape=(None, 28, 28, 1)) +# tensorflow labels +labels = tf.placeholder(dtype=tf.int32, shape=(None,)) + +logits = lenet(images) +loss = tf.reduce_mean(tf.losses.sparse_softmax_cross_entropy(logits=logits, labels=labels)) +acc = accuracy(logits, labels) +``` +### **Step 3: Define Train Dataset** + +You can define the dataset using standard [tf.data.Dataset](https://www.tensorflow.org/api_docs/python/tf/data/Dataset). Orca also supports [Spark DataFrame](https://spark.apache.org/docs/latest/sql-programming-guide.html) and [Orca XShards](../Overview/data-parallel-processing.md). + + +```python +import tensorflow_datasets as tfds + +def preprocess(data): + data['image'] = tf.cast(data["image"], tf.float32) / 255. + return data['image'], data['label'] + +# get DataSet +mnist_train = tfds.load(name="mnist", split="train", data_dir=dataset_dir) +mnist_test = tfds.load(name="mnist", split="test", data_dir=dataset_dir) + +mnist_train = mnist_train.map(preprocess) +mnist_test = mnist_test.map(preprocess) +``` + +### **Step 4: Fit with Orca Estimator** + +First, create an Estimator. + +```python +from zoo.orca.learn.tf.estimator import Estimator + +est = Estimator.from_graph(inputs=images, + outputs=logits, + labels=labels, + loss=loss, + optimizer=tf.train.AdamOptimizer(), + metrics={"acc": acc}) +``` + +Next, fit and evaluate using the Estimator. +```python +est.fit(data=train_dataset, + batch_size=320, + epochs=5, + validation_data=mnist_test) + +result = est.evaluate(mnist_test) +print(result) +``` + +That's it, the same code can run seamlessly in your local laptop and the distribute K8s or Hadoop cluster. + +**Note:** You should call `stop_orca_context()` when your program finishes. diff --git a/docs/readthedocs/source/doc/Orca/QuickStart/orca-tf2keras-quickstart.md b/docs/readthedocs/source/doc/Orca/QuickStart/orca-tf2keras-quickstart.md new file mode 100644 index 00000000..614303c4 --- /dev/null +++ b/docs/readthedocs/source/doc/Orca/QuickStart/orca-tf2keras-quickstart.md @@ -0,0 +1,123 @@ +# TensorFlow 2 Quickstart + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf2_keras_lenet_mnist.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf2_keras_lenet_mnist.ipynb) + +--- + +**In this guide we will describe how to to scale out _TensorFlow 2_ programs using Orca in 4 simple steps.** (_[TensorFlow 1.5](./orca-tf-quickstart.md) and [Keras 2.3](./orca-keras-quickstart.md) guides are also available._) + +### **Step 0: Prepare Environment** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the environment. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo[ray] # install either version 0.9 or latest nightly build +pip install tensorflow==2.3.0 +``` + +### **Step 1: Init Orca Context** +```python +from zoo.orca import init_orca_context, stop_orca_context + +if cluster_mode == "local": # For local machine + init_orca_context(cluster_mode="local", cores=4, memory="10g") +elif cluster_mode == "k8s": # For K8s cluster + init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +elif cluster_mode == "yarn": # For Hadoop/YARN cluster + init_orca_context(cluster_mode="yarn", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1) +``` + +This is the only place where you need to specify local or distributed mode. View [Orca Context](./../Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +### **Step 2: Define the Model** + +You can then define the Keras model in the _Creator Function_ using the standard TensroFlow 2 APIs. + +```python +import tensorflow as tf + +def model_creator(config): + model = tf.keras.Sequential( + [tf.keras.layers.Conv2D(20, kernel_size=(5, 5), strides=(1, 1), activation='tanh', + input_shape=(28, 28, 1), padding='valid'), + tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='valid'), + tf.keras.layers.Conv2D(50, kernel_size=(5, 5), strides=(1, 1), activation='tanh', + padding='valid'), + tf.keras.layers.MaxPooling2D(pool_size=(2, 2), strides=(2, 2), padding='valid'), + tf.keras.layers.Flatten(), + tf.keras.layers.Dense(500, activation='tanh'), + tf.keras.layers.Dense(10, activation='softmax'), + ] + ) + + model.compile(optimizer=tf.keras.optimizers.RMSprop(), + loss='sparse_categorical_crossentropy', + metrics=['accuracy']) + return model +``` +### **Step 3: Define Train Dataset** + +You can define the dataset in the _Creator Function_ using standard [tf.data.Dataset](https://www.tensorflow.org/api_docs/python/tf/data/Dataset) APIs. Orca also supports [Spark DataFrame](https://spark.apache.org/docs/latest/sql-programming-guide.html) and [Orca XShards](../Overview/data-parallel-processing.md). + + +```python +def preprocess(x, y): + x = tf.cast(tf.reshape(x, (28, 28, 1)), dtype=tf.float32) / 255.0 + return x, y + +def train_data_creator(config, batch_size): + (train_feature, train_label), _ = tf.keras.datasets.mnist.load_data() + + dataset = tf.data.Dataset.from_tensor_slices((train_feature, train_label)) + dataset = dataset.repeat() + dataset = dataset.map(preprocess) + dataset = dataset.shuffle(1000) + dataset = dataset.batch(batch_size) + return dataset + +def val_data_creator(config, batch_size): + _, (val_feature, val_label) = tf.keras.datasets.mnist.load_data() + + dataset = tf.data.Dataset.from_tensor_slices((val_feature, val_label)) + dataset = dataset.repeat() + dataset = dataset.map(preprocess) + dataset = dataset.batch(batch_size) + return dataset +``` + +### **Step 4: Fit with Orca Estimator** + +First, create an Estimator. + +```python +from zoo.orca.learn.tf2 import Estimator + +est = Estimator.from_keras(model_creator=model_creator, workers_per_node=2) +``` + +Next, fit and evaluate using the Estimator. +```python +batch_size = 320 +stats = est.fit(train_data_creator, + epochs=5, + batch_size=batch_size, + steps_per_epoch=60000 // batch_size, + validation_data=val_data_creator, + validation_steps=10000 // batch_size) + +est.save("/tmp/mnist_keras.ckpt") + +stats = est.evaluate(val_data_creator, num_steps=10000 // batch_size) +est.shutdown() +print(stats) +``` + +That's it, the same code can run seamlessly in your local laptop and the distribute K8s or Hadoop cluster. + +**Note:** You should call `stop_orca_context()` when your program finishes. diff --git a/docs/readthedocs/source/doc/PPML/Overview/ppml.md b/docs/readthedocs/source/doc/PPML/Overview/ppml.md new file mode 100644 index 00000000..90a035d2 --- /dev/null +++ b/docs/readthedocs/source/doc/PPML/Overview/ppml.md @@ -0,0 +1,792 @@ +# PPML User Guide + +## 1. Privacy Preserving Machine Learning +Protecting privacy and confidentiality is critical for large-scale data analysis and machine learning. Analytics Zoo ***PPML*** combines various low level hardware and software security technologies (e.g., Intel SGX, LibOS such as Graphene and Occlum, Federated Learning, etc.), so that users can continue to apply standard Big Data and AI technologies (such as Apache Spark, Apache Flink, Tensorflow, PyTorch, etc.) without sacrificing privacy. + +## 1.1 PPML for Big Data AI +Analytics Zoo provides a distributed PPML platform for protecting the *end-to-end Big Data AI pipeline* (from data ingestion, data analysis, all the way to machine learning and deep learning). In particular, it extends the single-node [Trusted Execution Environment](https://en.wikipedia.org/wiki/Trusted_execution_environment) to provide a *Trusted Cluster Environment*, so as to run unmodified Big Data analysis and ML/DL programs in a secure fashion on (private or public) cloud: + + * Compute and memory protected by SGX Enclaves + * Network communication protected by remote attestation and TLS + * Storage (e.g., data and model) protected by encryption + * Optional federated learning support + +That is, even when the program runs in an untrusted cloud environment, all the data and models are protected (e.g., using encryption) on disk and network, and the compute and memory are also protected using SGX Enclaves, so as to preserve the confidentiality and privacy during data analysis and machine learning. + +In the current release, two types of trusted Big Data AI applications are supported: + +1. Big Data analytics and ML/DL (supporting [Apache Spark](https://spark.apache.org/) and [BigDL](https://github.com/intel-analytics/BigDL)) +2. Realtime compute and ML/DL (supporting [Apache Flink](https://flink.apache.org/) and Analytics Zoo [Cluster Serving](https://www.usenix.org/conference/opml20/presentation/song)) + +## 2. Trusted Big Data Analytics and ML +With the trusted Big Data analytics and ML/DL support, users can run standard Spark data analysis (such as Spark SQL, Dataframe, MLlib, etc.) and distributed deep learning (using BigDL) in a secure and trusted fashion. + +### 2.1 Prerequisite + +Download scripts and dockerfiles from [this link](https://github.com/intel-analytics/analytics-zoo). And do the following commands: +```bash +cd analytics-zoo/ppml/ +``` + +1. Install SGX Driver + + Please check if the current HW processor supports [SGX](https://www.intel.com/content/www/us/en/support/articles/000028173/processors/intel-core-processors.html). Then, enable SGX feature in BIOS. Note that after SGX is enabled, a portion of memory will be assigned to SGX (this memory cannot be seen/used by OS and other applications). + + Check SGX driver with `ls /dev | grep sgx`. If SGX driver is not installed, please install [SGX DCAP driver](https://github.com/intel/SGXDataCenterAttestationPrimitives/tree/master/driver/linux): + + ```bash + cd scripts/ + ./install-graphene-driver.sh + cd .. + ``` + +2. Generate key for SGX enclave + + Generate the enclave key using the command below, and keep it safely for future remote attestations and to start SGX enclaves more securely. It will generate a file `enclave-key.pem` in the current working directory, which will be the enclave key. To store the key elsewhere, modify the output file path. + + ```bash + cd scripts/ + openssl genrsa -3 -out enclave-key.pem 3072 + cd .. + ``` + +3. Prepare keys for TLS with root permission (test only, need input security password for keys). Please also install jdk/openjdk and set the environment path of java path to get keytool. + + ```bash + cd scripts/ + ./generate-keys.sh + cd .. + ``` + When entering pass phrase or password, you could input the same password by yourself; and these passwords could also be used for the next step of generating password. Password should be longer than 6 bits and containing number and letter, and one sample password is "3456abcd". These passwords would be used for future remote attestations and to start SGX enclaves more securely. And This scripts will generate 6 files in `./ppml/scripts/keys` dir (you can replace them with your own TLS keys). + + ```bash + keystore.jks + keystore.pkcs12 + server.crt + server.csr + server.key + server.pem + ``` + +4. Generate `password` to avoid plain text security password (used for key generation in `generate-keys.sh`) transfer. + + ```bash + cd scripts/ + ./generate-password.sh used_password_when_generate_keys + cd .. + ``` + This scrips will generate 2 files in `./ppml/scripts/password` dir. + + ```bash + key.txt + output.bin + ``` +### 2.2 Trusted Big Data Analytics and ML on JVM + +#### 2.2.1 Prepare Docker Image + +Pull docker image from Dockerhub +```bash +docker pull intelanalytics/analytics-zoo-ppml-trusted-big-data-ml-scala-graphene:0.12.0-SNAPSHOT +``` + +Alternatively, you can build docker image from Dockerfile (this will take some time): + +```bash +cd trusted-big-data-ml/scala/docker-graphene +./build-docker-image.sh +``` + +#### 2.2.2 Run Trusted Big Data and ML on Single Node + +##### 2.2.2.1 Start PPML Container + +Enter `analytics-zoo/ppml/trusted-big-data-ml/scala/docker-graphene` dir. + +1. Copy `keys` and `password` + ```bash + cd trusted-big-data-ml/scala/docker-graphene + # copy keys and password into current directory + cp -r ../.././../scripts/keys/ . + cp -r ../.././../scripts/password/ . + ``` +2. Prepare the data + To train a model with ppml in analytics zoo and bigdl, you need to prepare the data first. The Docker image is taking lenet and mnist as example.
+ You can download the MNIST Data from [here](http://yann.lecun.com/exdb/mnist/). Unzip all the files and put them in one folder(e.g. mnist).
+ There are four files. **train-images-idx3-ubyte** contains train images, **train-labels-idx1-ubyte** is train label file, **t10k-images-idx3-ubyte** has validation images and **t10k-labels-idx1-ubyte** contains validation labels. For more detail, please refer to the download page.
+ After you decompress the gzip files, these files may be renamed by some decompress tools, e.g. **train-images-idx3-ubyte** is renamed to **train-images.idx3-ubyte**. Please change the name back before you run the example.
+ +3. To start the container, first modify the paths in deploy-local-spark-sgx.sh, and then run the following commands: + ```bash + ./deploy-local-spark-sgx.sh + sudo docker exec -it spark-local bash + cd /ppml/trusted-big-data-ml + ./init.sh + ``` + **ENCLAVE_KEY_PATH** means the absolute path to the "enclave-key.pem", according to the above commands, the path would be like "analytics-zoo/ppml/scripts/enclave-key.pem".
+ **DATA_PATH** means the absolute path to the data(like mnist) that would used later in the spark program. According to the above commands, the path would be like "analytics-zoo/ppml/trusted-big-data-ml/scala/docker-graphene/mnist"
+ **KEYS_PATH** means the absolute path to the keys you just created and copied to. According to the above commands, the path would be like "analytics-zoo/ppml/trusted-big-data-ml/scala/docker-graphene/keys"
+ **LOCAL_IP** means your local IP address.
+ +##### 2.2.2.2 Run Your Spark Program with Analytics Zoo PPML on SGX + +To run your pyspark program, first you need to prepare your own pyspark program and put it under the trusted directory in SGX `/ppml/trusted-big-data-ml/work`. Then run with `ppml-spark-submit.sh` using the command: + +```bash +./ppml-spark-submit.sh work/YOUR_PROMGRAM.py | tee YOUR_PROGRAM-sgx.log +``` + +When the program finishes, check the results with the log `YOUR_PROGRAM-sgx.log`. + +##### 2.2.2.3 Run Trusted Spark Examples with Analytics Zoo PPML SGX + +##### 2.2.2.3.1 Run Trusted Spark Pi + +This example runs a simple Spark PI program, which is an easy way to verify if the Trusted PPML environment is ready. + +Run the script to run trusted Spark Pi: + +```bash +bash start-spark-local-pi-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/spark.local.pi.sgx.log | egrep "###|INFO|Pi" +``` + +The result should look something like: + +> Pi is roughly 3.1422957114785572 + +##### 2.2.2.3.2 Run Trusted Spark SQL + +This example shows how to run trusted Spark SQL (e.g., TPC-H queries). + +First, download and install [SBT](https://www.scala-sbt.org/download.html) and deploy a [HDFS](https://hadoop.apache.org/docs/r2.7.7/hadoop-project-dist/hadoop-common/ClusterSetup.html) for TPC-H dataset and output, then build the source codes with SBT and generate TPC-H dataset according to the [TPC-H example](https://github.com/intel-analytics/zoo-tutorials/tree/master/tpch-spark). After that, check if there is an `spark-tpc-h-queries_2.11-1.0.jar` under `tpch-spark/target/scala-2.11`; if so, we have successfully packaged the project. + +Copy the TPC-H package to container: + +```bash +docker cp tpch-spark/ spark-local:/ppml/trusted-big-data-ml/work +docker cp tpch-spark/start-spark-local-tpc-h-sgx.sh spark-local:/ppml/trusted-big-data-ml/ +sudo docker exec -it spark-local bash +cd /ppml/trusted-big-data-ml/ +``` +Then run the script below: + +```bash +bash start-spark-local-tpc-h-sgx.sh [your_hdfs_tpch_data_dir] [your_hdfs_output_dir] +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/spark.local.tpc.h.sgx.log | egrep "###|INFO|finished" +``` + +The result should look like: + +> ----------------22 finished-------------------- + +##### 2.2.2.3.3 Run Trusted Deep Learning + +This example shows how to run trusted deep learning (using an BigDL LetNet program). + +First, download the MNIST Data from [here](http://yann.lecun.com/exdb/mnist/). Use `gzip -d` to unzip all the downloaded files (train-images-idx3-ubyte.gz, train-labels-idx1-ubyte.gz, t10k-images-idx3-ubyte.gz, t10k-labels-idx1-ubyte.gz) and put them into folder `/ppml/trusted-big-data-ml/work/data`. + +Then run the following script: + +```bash +bash start-spark-local-train-sgx.sh +``` + +Open another terminal and check the log: +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/spark.local.sgx.log | egrep "###|INFO" +``` +or +```bash +sudo docker logs spark-local | egrep "###|INFO" +``` + +The result should look like: + +```bash +############# train optimized[P1182:T2:java] ---- end time: 310534 ms return from shim_write(...) = 0x1d +############# ModuleLoader.saveToFile File.saveBytes end, used 827002 ms[P1182:T2:java] ---- end time: 1142754 ms return from shim_write(...) = 0x48 +############# ModuleLoader.saveToFile saveWeightsToFile end, used 842543 ms[P1182:T2:java] ---- end time: 1985297 ms return from shim_write(...) = 0x4b +############# model saved[P1182:T2:java] ---- end time: 1985297 ms return from shim_write(...) = 0x19 +``` + +#### 2.2.3 Run Trusted Big Data and ML on Cluster + +##### 2.2.3.1 Configure the Environment + +Prerequisite: passwordless ssh login to all the nodes needs to be properly set up first. + +```bash +nano environments.sh +``` +##### 2.2.3.2 Start Distributed Big Data and ML Platform + +First run the following command to start the service: + +```bash +./deploy-distributed-standalone-spark.sh +``` + +Then run the following command to start the training: + +```bash +./start-distributed-spark-train-sgx.sh +``` +##### 2.2.3.3 Stop Distributed Big Data and ML Platform + +First, stop the training: + +```bash +./stop-distributed-standalone-spark.sh +``` + +Then stop the service: + +```bash +./undeploy-distributed-standalone-spark.sh +``` + +### 2.3 Trusted Big Data Analytics and ML with Python + +#### 2.3.1 Prepare Docker Image + +Pull docker image from Dockerhub + +```bash +docker pull intelanalytics/analytics-zoo-ppml-trusted-big-data-ml-python-graphene:0.11-SNAPSHOT +``` + +Alternatively, you can build docker image from Dockerfile (this will take some time): + +```bash +cd ppml/trusted-big-data-ml/python/docker-graphene +./build-docker-image.sh +``` + +#### 2.3.2 Run Trusted Big Data and ML on Single Node + +##### 2.3.2.1 Start PPML Container + +Enter `analytics-zoo/ppml/trusted-big-data-ml/python/docker-graphene` directory. + +1. Copy `keys` and `password` to current directory + + ```bash + cd ppml/trusted-big-data-ml/scala/docker-graphene + # copy keys and password into current directory + cp -r ../keys . + cp -r ../password . + ``` + +2. To start the container, first modify the paths in deploy-local-spark-sgx.sh, and then run the following commands: + + ```bash + ./deploy-local-spark-sgx.sh + sudo docker exec -it spark-local bash + cd /ppml/trusted-big-data-ml + ./init.sh + ``` + +##### 2.3.2.2 Run Your Pyspark Program with Analytics Zoo PPML on SGX + +To run your pyspark program, first you need to prepare your own pyspark program and put it under the trusted directory in SGX `/ppml/trusted-big-data-ml/work`. Then run with `ppml-spark-submit.sh` using the command: + +```bash +./ppml-spark-submit.sh work/YOUR_PROMGRAM.py | tee YOUR_PROGRAM-sgx.log +``` + +When the program finishes, check the results with the log `YOUR_PROGRAM-sgx.log`. + +##### 2.3.2.3 Run Python and Pyspark Examples with Analytics Zoo PPML on SGX + +##### 2.3.2.3.1 Run Trusted Python Helloworld + +This example runs a simple native python program, which is an easy way to verify if the Trusted PPML environment is correctly set up. + +Run the script to run trusted Python Helloworld: + +```bash +bash work/start-scripts/start-python-helloworld-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-helloworld-sgx.log | egrep "Hello World" +``` + +The result should look something like: + +> Hello World + +##### 2.3.2.3.2 Run Trusted Python Numpy + +This example shows how to run trusted native python numpy. + +Run the script to run trusted Python Numpy: + +```bash +bash work/start-scripts/start-python-numpy-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-numpy-sgx.log | egrep "numpy.dot" +``` + +The result should look something like: + +> numpy.dot: 0.034211914986371994 sec + +##### 2.3.2.3.3 Run Trusted Spark Pi + +This example runs a simple Spark PI program. + +Run the script to run trusted Spark Pi: + +```bash +bash work/start-scripts/start-spark-local-pi-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-pi-sgx.log | egrep "roughly" +``` + +The result should look something like: + +> Pi is roughly 3.146760 + +##### 2.3.2.3.4 Run Trusted Spark Wordcount + +This example runs a simple Spark Wordcount program. + +Run the script to run trusted Spark Wordcount: + +```bash +bash work/start-scripts/start-spark-local-wordcount-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-wordcount-sgx.log | egrep "print" +``` + +The result should look something like: + +> print("Hello: 1 +> +> print(sys.path);: 1 + +##### 2.3.2.3.5 Run Trusted Spark SQL + +This example shows how to run trusted Spark SQL. + +First, make sure that the paths of resource in `/ppml/trusted-big-data-ml/work/spark-2.4.6/examples/src/main/python/sql/basic.py` are the same as the paths of `people.json` and `people.txt`. + +Run the script to run trusted Spark SQL: + +```bash +bash work/start-scripts/start-spark-local-sql-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-sql-basic-sgx.log | egrep "Justin" +``` + +The result should look something like: + +>| 19| Justin| +> +>| Justin| +> +>| Justin| 20| +> +>| 19| Justin| +> +>| 19| Justin| +> +>| 19| Justin| +> +>Name: Justin +> +>| Justin| + +##### 2.3.2.3.6 Run Trusted Spark BigDL + +This example shows how to run trusted Spark BigDL. + +Run the script to run trusted Spark BigDL and it would take some time to show the final results: + +```bash +bash work/start-scripts/start-spark-local-bigdl-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-bigdl-lenet-sgx.log | egrep "Accuracy" +``` + +The result should look something like: + +> creating: createTop1Accuracy +> +> 2021-06-18 01:39:45 INFO DistriOptimizer$:180 - [Epoch 1 60032/60000][Iteration 469][Wall Clock 457.926565s] Top1Accuracy is Accuracy(correct: 9488, count: 10000, accuracy: 0.9488) +> +> 2021-06-18 01:46:20 INFO DistriOptimizer$:180 - [Epoch 2 60032/60000][Iteration 938][Wall Clock 845.747782s] Top1Accuracy is Accuracy(correct: 9696, count: 10000, accuracy: 0.9696) + +##### 2.3.2.3.7 Run Trusted Spark XGBoost Regressor + +This example shows how to run trusted Spark XGBoost Regressor. + +First, make sure that `Boston_Housing.csv` is under `work/data` directory or the same path in the `start-spark-local-xgboost-regressor-sgx.sh`. Replace the value of `RABIT_TRACKER_IP` with your own IP address in the script. + +Run the script to run trusted Spark XGBoost Regressor and it would take some time to show the final results: + +```bash +bash work/start-scripts/start-spark-local-xgboost-regressor-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-zoo-xgboost-regressor-sgx.log | egrep "prediction" -A19 +``` + +The result should look something like: + +> | features|label| prediction| +> +> +--------------------+-----+------------------+ +> +> |[41.5292,0.0,18.1...| 8.5| 8.51994514465332| +> +> |[67.9208,0.0,18.1...| 5.0| 5.720333099365234| +> +> |[20.7162,0.0,18.1...| 11.9|10.601168632507324| +> +> |[11.9511,0.0,18.1...| 27.9| 26.19390106201172| +> +> |[7.40389,0.0,18.1...| 17.2|16.112293243408203| +> +> |[14.4383,0.0,18.1...| 27.5|25.952226638793945| +> +> |[51.1358,0.0,18.1...| 15.0| 14.67484188079834| +> +> |[14.0507,0.0,18.1...| 17.2|16.112293243408203| +> +> |[18.811,0.0,18.1,...| 17.9| 17.42863655090332| +> +> |[28.6558,0.0,18.1...| 16.3| 16.0191593170166| +> +> |[45.7461,0.0,18.1...| 7.0| 5.300708770751953| +> +> |[18.0846,0.0,18.1...| 7.2| 6.346951007843018| +> +> |[10.8342,0.0,18.1...| 7.5| 6.571983814239502| +> +> |[25.9406,0.0,18.1...| 10.4|10.235769271850586| +> +> |[73.5341,0.0,18.1...| 8.8| 8.460335731506348| +> +> |[11.8123,0.0,18.1...| 8.4| 9.193297386169434| +> +> |[11.0874,0.0,18.1...| 16.7|16.174896240234375| +> +> |[7.02259,0.0,18.1...| 14.2| 13.38729190826416| + +##### 2.3.2.3.8 Run Trusted Spark XGBoost Classifier + +This example shows how to run trusted Spark XGBoost Classifier. + +Before running the example, download the sample dataset from [pima-indians-diabetes](https://raw.githubusercontent.com/jbrownlee/Datasets/master/pima-indians-diabetes.data.csv) dataset. After downloading the dataset, make sure that `pima-indians-diabetes.data.csv` is under `work/data` directory or the same path in the `start-spark-local-xgboost-classifier-sgx.sh`. Replace `path_of_pima_indians_diabetes_csv` with your path of `pima-indians-diabetes.data.csv` and the value of `RABIT_TRACKER_IP` with your own IP address in the script. + +Run the script to run trusted Spark XGBoost Classifier and it would take some time to show the final results: + +```bash +bash start-spark-local-xgboost-classifier-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-xgboost-classifier-sgx.log | egrep "prediction" -A7 +``` + +The result should look something like: + +> | f1| f2| f3| f4| f5| f6| f7| f8|label| rawPrediction| probability|prediction| +> +> +----+-----+----+----+-----+----+-----+----+-----+--------------------+--------------------+----------+ +> +> |11.0|138.0|74.0|26.0|144.0|36.1|0.557|50.0| 1.0|[-0.8209581375122...|[0.17904186248779...| 1.0| +> +> | 3.0|106.0|72.0| 0.0| 0.0|25.8|0.207|27.0| 0.0|[-0.0427864193916...|[0.95721358060836...| 0.0| +> +> | 6.0|117.0|96.0| 0.0| 0.0|28.7|0.157|30.0| 0.0|[-0.2336160838603...|[0.76638391613960...| 0.0| +> +> | 2.0| 68.0|62.0|13.0| 15.0|20.1|0.257|23.0| 0.0|[-0.0315906107425...|[0.96840938925743...| 0.0| +> +> | 9.0|112.0|82.0|24.0| 0.0|28.2|1.282|50.0| 1.0|[-0.7087597250938...|[0.29124027490615...| 1.0| +> +> | 0.0|119.0| 0.0| 0.0| 0.0|32.4|0.141|24.0| 1.0|[-0.4473398327827...|[0.55266016721725...| 0.0| + +##### 2.3.2.3.9 Run Trusted Spark Orca Data + +This example shows how to run trusted Spark Orca Data. + +Before running the example, download the [NYC Taxi](https://raw.githubusercontent.com/numenta/NAB/master/data/realKnownCause/nyc_taxi.csv) dataset in Numenta Anoomaly Benchmark for demo. After downloading the dataset, make sure that `nyc_taxi.csv` is under `work/data` directory or the same path in the `start-spark-local-orca-data-sgx.sh`. Replace `path_of_nyc_taxi_csv` with your path of `nyc_taxi.csv` in the script. + +Run the script to run trusted Spark Orca Data and it would take some time to show the final results: + +```bash +bash start-spark-local-orca-data-sgx.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat /ppml/trusted-big-data-ml/test-orca-data-sgx.log | egrep -a "INFO data|Stopping" -A10 +``` + +The result should contain the content look like: + +>INFO data collected: [ timestamp value +> +>0 2014-07-01 00:00:00 10844 +> +>1 2014-07-01 00:30:00 8127 +> +>2 2014-07-01 01:00:00 6210 +> +>3 2014-07-01 01:30:00 4656 +> +>4 2014-07-01 02:00:00 3820 +> +>... ... ... +> +>10315 2015-01-31 21:30:00 24670 +> +>10316 2015-01-31 22:00:00 25721 +> +>10317 2015-01-31 22:30:00 27309 +> +>10318 2015-01-31 23:00:00 26591 +> +>\-- +> +>INFO data2 collected: [ timestamp value datetime hours awake +> +>0 2014-07-01 00:00:00 10844 2014-07-01 00:00:00 0 1 +> +>1 2014-07-01 00:30:00 8127 2014-07-01 00:30:00 0 1 +> +>2 2014-07-01 03:00:00 2369 2014-07-01 03:00:00 3 0 +> +>3 2014-07-01 04:30:00 2158 2014-07-01 04:30:00 4 0 +> +>4 2014-07-01 05:00:00 2515 2014-07-01 05:00:00 5 0 +> +>... ... ... ... ... ... +> +>5215 2015-01-31 17:30:00 23595 2015-01-31 17:30:00 17 1 +> +>5216 2015-01-31 18:30:00 27286 2015-01-31 18:30:00 18 1 +> +>5217 2015-01-31 19:00:00 28804 2015-01-31 19:00:00 19 1 +> +>5218 2015-01-31 19:30:00 27773 2015-01-31 19:30:00 19 1 +> +>\-- +> +>Stopping orca context + +##### 2.3.2.3.10 Run Trusted Spark Orca Learn Tensorflow Basic Text Classification + +This example shows how to run trusted Spark Orca learn Tensorflow basic text classification. + +Run the script to run trusted Spark Orca learn Tensorflow basic text classification and it would take some time to show the final results. To run this example in standalone mode, replace `-e SGX_MEM_SIZE=32G \` with `-e SGX_MEM_SIZE=64G \` in `start-distributed-spark-driver.sh` + +```bash +bash start-spark-local-orca-tf-text.sh +``` + +Open another terminal and check the log: + +```bash +sudo docker exec -it spark-local cat test-orca-tf-text.log | egrep "results" +``` + +The result should be similar to: + +>INFO results: {'loss': 0.6932533979415894, 'acc Top1Accuracy': 0.7544000148773193} + +#### 2.3.3 Run Trusted Big Data and ML on Cluster + +##### 2.3.3.1 Configure the Environment + +Prerequisite: passwordless ssh login to all the nodes needs to be properly set up first. + +```bash +nano environments.sh +``` + +##### 2.3.3.2 Start Distributed Big Data and ML Platform + +First run the following command to start the service: + +```bash +./deploy-distributed-standalone-spark.sh +``` + +Then start the service: + +```bash +./start-distributed-spark-driver.sh +``` + +After that, you can run previous examples on cluster by replacing `--master 'local[4]'` in the start scripts with + +```bash +--master 'spark://your_master_url' \ +--conf spark.authenticate=true \ +--conf spark.authenticate.secret=your_secret_key \ +``` + +##### 2.3.3.3 Stop Distributed Big Data and ML Platform + +First, stop the training: + +```bash +./stop-distributed-standalone-spark.sh +``` + +Then stop the service: + +```bash +./undeploy-distributed-standalone-spark.sh +``` + +## 3. Trusted Realtime Compute and ML + +With the trusted realtime compute and ML/DL support, users can run standard Flink stream processing and distributed DL model inference (using [Cluster Serving](https://www.usenix.org/conference/opml20/presentation/song)) in a secure and trusted fashion. In this feature, both [Graphene](https://github.com/oscarlab/graphene) and [Occlum](https://github.com/occlum/occlum) are supported, users can choose one of them as LibOS layer. + +### 3.1 Prerequisite + +Please refer to [Section 2.1 Prerequisite](#prerequisite). For Occlum backend, if your kernel version is below 5.11, please install [enable_rdfsbase](https://github.com/occlum/enable_rdfsbase). + +### 3.2 Prepare Docker Image + +Pull docker image from Dockerhub + +```bash +# For Graphene +docker pull intelanalytics/analytics-zoo-ppml-trusted-realtime-ml-scala-graphene:0.12.0-SNAPSHOT +``` + +```bash +# For Occlum +docker pull intelanalytics/analytics-zoo-ppml-trusted-realtime-ml-scala-occlum:0.12.0-SNAPSHOT +``` + +Also, you can build docker image from Dockerfile (this will take some time). + +```bash +# For Graphene +cd ppml/trusted-realtime-ml/scala/docker-graphene +./build-docker-image.sh +``` + +```bash +# For Occlum +cd ppml/trusted-realtime-ml/scala/docker-occlum +./build-docker-image.sh +``` + +### 3.3 Run Trusted Realtime Compute and ML + +#### 3.3.1 Configure the Environment + +Enter `analytics-zoo/ppml/trusted-realtime-ml/scala/docker-graphene` or `analytics-zoo/ppml/trusted-realtime-ml/scala/docker-occlum` dir. + +Modify `environments.sh`. Change MASTER, WORKER IP and file paths (e.g., `keys` and `password`). + +```bash +nano environments.sh +``` + +#### 3.3.2 Start the service + +Start Flink service: + +```bash +./deploy-flink.sh +``` + +#### 3.3.3 Run Trusted Flink Program + +Submit Flink jobs: + +```bash +cd ${FLINK_HOME} +./bin/flink run ./examples/batch/WordCount.jar +``` + +If Jobmanager is not running on current node, please add `-m ${FLINK_JOB_MANAGER_IP}`. + +The result should look like: + +```bash +(a,5) +(action,1) +(after,1) +(against,1) +(all,2) +(and,12) +(arms,1) +(arrows,1) +(awry,1) +(ay,1) +(bare,1) +(be,4) +(bear,3) +(bodkin,1) +(bourn,1) +``` +#### 3.3.4 Run Trusted Cluster Serving + +Start Cluster Serving as follows: + +```bash +./start-local-cluster-serving.sh +``` + +After all services are ready, you can directly push inference requests int queue with [Restful API](https://analytics-zoo.github.io/master/#ClusterServingGuide/ProgrammingGuide/#restful-api). Also, you can push image/input into queue with Python API + +```python +from zoo.serving.client import InputQueue +input_api = InputQueue() +input_api.enqueue('my-image1', user_define_key={"path: 'path/to/image1'}) +``` + +Cluster Serving service is a long running service in container, you can stop it as follows: + +```bash +docker stop trusted-cluster-serving-local +``` diff --git a/docs/readthedocs/source/doc/PPML/trusted-serving-on-k8s-guide.md b/docs/readthedocs/source/doc/PPML/trusted-serving-on-k8s-guide.md new file mode 100644 index 00000000..e59b55ef --- /dev/null +++ b/docs/readthedocs/source/doc/PPML/trusted-serving-on-k8s-guide.md @@ -0,0 +1,153 @@ +# Trusted Cluster Serving with Graphene on Kubernetes # + +## Prerequisites ## +Prior to deploying PPML Cluster Serving, please make sure the following is setup +- Hardware that supports SGX +- A fully configured Kubernetes cluster +- Intel SGX Device Plugin to use SGX in K8S cluster (install following instructions [here](https://github.com/intel-analytics/analytics-zoo/tree/master/ppml/trusted-realtime-ml/scala/docker-graphene/kubernetes#deploy-the-intel-sgx-device-plugin-for-kubenetes "here")) +- Java + +## Deploy Trusted Realtime ML for Kubernetes ## +1. Pull docker image from dockerhub + ``` + $ docker pull intelanalytics/analytics-zoo-ppml-trusted-realtime-ml-scala-graphene:0.12.0-SNAPSHOT + ``` +2. Pull the source code of Analytics Zoo and enter PPML graphene k8s directory + ``` + $ git clone https://github.com/intel-analytics/analytics-zoo.git + $ cd analytics-zoo/ppml/trusted-realtime-ml/scala/docker-graphene/kubernetes + ``` +3. Generate secure keys and passwords, and deploy as secrets (Refer [here](https://github.com/intel-analytics/analytics-zoo/blob/master/ppml/trusted-realtime-ml/scala/docker-graphene/kubernetes/README.md#secure-keys-and-password) for details) + 1. Generate keys and passwords + + Note: Make sure to add `${JAVA_HOME}/bin` to `$PATH` to avoid `keytool: command not found` error. + ``` + $ sudo ../../../../scripts/generate-keys.sh + $ openssl genrsa -3 -out enclave-key.pem 3072 + $ ../../../../scripts/generate-password.sh + ``` + 2. Deploy as secrets for Kubernetes + ``` + $ kubectl apply -f keys/keys.yaml + $ kubectl apply -f password/password.yaml + ``` + +4. In `values.yaml`, configure pulled image name, path of `enclave-key.pem` generated in step 3 and path of script `start-all-but-flink.sh`. +5. If kernel version is 5.11+ with built-in SGX support, create soft links for SGX device + ``` + $ sudo ln -s /dev/sgx_enclave /dev/sgx/enclave + $ sudo ln -s /dev/sgx_provision /dev/sgx/provision + ``` + +### Configure SGX mode ### +In `templates/flink-configuration-configmap.yaml`, configure `sgx.mode` to `sgx` or `nonsgx` to determine whether to run the workload with SGX. + +### Configure Resource for Components ### +1. Configure jobmanager resource allocation in `templates/jobmanager-deployment.yaml` + ``` + ... + env: + - name: SGX_MEM_SIZE + value: "16G" + ... + resources: + requests: + cpu: 2 + memory: 16Gi + sgx.intel.com/enclave: "1" + sgx.intel.com/epc: 16Gi + limits: + cpu: 2 + memory: 16Gi + sgx.intel.com/enclave: "1" + sgx.intel.com/epc: 16Gi + ... + ``` + +2. Configure Taskmanager resource allocation + - Memory allocation in `templates/flink-configuration-configmap.yaml` + ``` + taskmanager.memory.managed.size: 4gb + taskmanager.memory.task.heap.size: 5gb + xmx.size: 5g + ``` + - Pod resource allocation + + Use `taskmanager-deployment.yaml` instead of `taskmanager-statefulset.yaml` for functionality test + ``` + $ mv templates/taskmanager-statefulset.yaml ./ + $ mv taskmanager-deployment.yaml.back templates/taskmanager-deployment.yaml + ``` + Configure resource in `templates/taskmanager-deployment.yaml` (allocate 16 cores in this example, please configure according to scenario) + ``` + ... + env: + - name: CORE_NUM + value: "16" + - name: SGX_MEM_SIZE + value: "32G" + ... + resources: + requests: + cpu: 16 + memory: 32Gi + sgx.intel.com/enclave: "1" + sgx.intel.com/epc: 32Gi + limits: + cpu: 16 + memory: 32Gi + sgx.intel.com/enclave: "1" + sgx.intel.com/epc: 32Gi + ... + ``` +3. Configure Redis and client resource allocation + - SGX memory allocation in `start-all-but-flink.sh` + ``` + ... + cd /ppml/trusted-realtime-ml/java + export SGX_MEM_SIZE=16G + test "$SGX_MODE" = sgx && ./init.sh + echo "java initiated" + ... + ``` + - Pod resource allocation in `templates/master-deployment.yaml` + ``` + ... + env: + - name: CORE_NUM #batchsize per instance + value: "16" + ... + resources: + requests: + cpu: 12 + memory: 32Gi + sgx.intel.com/enclave: "1" + sgx.intel.com/epc: 32Gi + limits: + cpu: 12 + memory: 32Gi + sgx.intel.com/enclave: "1" + sgx.intel.com/epc: 32Gi + ... + ``` + +### Deploy Cluster Serving ### +1. Deploy all components and start job + 1. Download helm from [release page](https://github.com/helm/helm/releases) and install + 2. Deploy cluster serving + ``` + $ helm install ppml ./ + ``` +2. Port forwarding + + Set up port forwarding of jobmanager Rest port for access to Flink WebUI on host + 1. Run `kubectl port-forward --address 0.0.0.0 8081:8081` to forward jobmanager’s web UI port to 8081 on host. + 2. Navigate to `http://:8081` in web browser to check status of Flink cluster and job. +3. Performance benchmark + ``` + $ kubectl exec -it -- bash + $ cd /ppml/trusted-realtime-ml/java/work/benchmark/ + $ bash init-benchmark.sh + $ python3 e2e_throughput.py -n -i ../data/ILSVRC2012_val_00000001.JPEG + ``` + The `e2e_throughput.py` script pushes test image for `-n` times (default 1000 if not manually set), and time the process from push images (enqueue) to retrieve all inference results (dequeue), to calculate cluster serving end-to-end throughput. The output should look like `Served xxx images in xxx sec, e2e throughput is xxx images/sec` diff --git a/docs/readthedocs/source/doc/PythonAPI/AutoML/automl.rst b/docs/readthedocs/source/doc/PythonAPI/AutoML/automl.rst new file mode 100644 index 00000000..e9d091de --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/AutoML/automl.rst @@ -0,0 +1,30 @@ +AutoML API +=========== + +orca.automl.auto_estimator +--------------------------- + +A general estimator supports automatic model tuning. It allows users to fit and search the best hyperparameter for their model. + +.. automodule:: zoo.orca.automl.auto_estimator + :members: + :show-inheritance: + + +orca.automl.hp +---------------------------------------- + +Sampling specs to be used in search space configuration. + +.. automodule:: zoo.orca.automl.hp + :members: + :show-inheritance: + +automl.metrics +---------------------------- + +Evaluate unscaled metrics between y true value and y predicted value. + +.. automodule:: zoo.orca.automl.metrics + :members: + :show-inheritance: diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/anomaly_detectors.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/anomaly_detectors.rst new file mode 100644 index 00000000..84c93bbe --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/anomaly_detectors.rst @@ -0,0 +1,31 @@ +Anomaly Detectors +===================== + +chronos.anomaly.ae_detector +---------------------------------------- + +AEDetector is unsupervised anomaly detector. It builds an autoencoder network, tries to fit the model to the input data, and calcuates the reconstruction error. The samples with larger reconstruction errors are more likely the anomalies. + +.. automodule:: zoo.chronos.detector.anomaly.ae_detector + :members: + :show-inheritance: + + +chronos.anomaly.dbscan_detector +---------------------------------------- + +DBScanDetector uses DBSCAN clustering for anomaly detection. The DBSCAN algorithm tries to cluster the points and label the points that do not belong to any clusters as -1. It thus detects outliers in the input time series. + +.. automodule:: zoo.chronos.detector.anomaly.dbscan_detector + :members: + :show-inheritance: + + +chronos.anomaly.th_detector +---------------------------------------- + +ThresholdDetector is a simple anomaly detector that detectes anomalies based on threshold. The target value for anomaly testing can be either 1) the sample value itself or 2) the difference between the forecasted value and the actual value, if the forecasted values are provied. The thresold can be set by user or esitmated from the train data accoring to anomaly ratio and statistical distributions. + +.. automodule:: zoo.chronos.detector.anomaly.th_detector + :members: ThresholdDetector + :show-inheritance: diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/automodels.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/automodels.rst new file mode 100644 index 00000000..af87fc6f --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/automodels.rst @@ -0,0 +1,64 @@ +Auto Models +===================== + +AutoTCN +------------------------------------------- + +AutoTCN is a TCN forecasting model with Auto tuning. +Other API follows its base class(BasePytorchAutomodel). + +.. automodule:: zoo.chronos.autots.model.auto_tcn + :members: + :undoc-members: + :show-inheritance: + + +AutoLSTM +---------------------------------------- + +AutoLSTM is an LSTM forecasting model with Auto tuning. +Other API follows its base class(BasePytorchAutomodel). + +.. automodule:: zoo.chronos.autots.model.auto_lstm + :members: + :undoc-members: + :show-inheritance: + +AutoSeq2Seq +---------------------------------------- + +AutoSeq2Seq is an Seq2Seq forecasting model with Auto tuning. +Other API follows its base class(BasePytorchAutomodel). + +.. automodule:: zoo.chronos.autots.model.auto_seq2seq + :members: + :undoc-members: + :show-inheritance: + +AutoARIMA +---------------------------------------- + +AutoARIMA is an ARIMA forecasting model with Auto tuning. + +.. automodule:: zoo.chronos.autots.model.auto_arima + :members: + :undoc-members: + :show-inheritance: + +AutoProphet +---------------------------------------- + +AutoProphet is a Prophet forecasting model with Auto tuning. + +.. automodule:: zoo.chronos.autots.model.auto_prophet + :members: + :undoc-members: + :show-inheritance: + +BasePytorchAutomodel +------------------------------------------------------------ +AutoLSTM, AutoSeq2Seq and AutoTCN all follow the same API as stated below. + +.. autoclass:: zoo.chronos.autots.model.base_automodel.BasePytorchAutomodel + :members: + :show-inheritance: diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/autots.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/autots.rst new file mode 100644 index 00000000..90d34e0a --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/autots.rst @@ -0,0 +1,86 @@ +AutoTS (deprecated) +===================== + +.. warning:: + The API in this page will be deprecated soon. Please refer to our new AutoTS API. + +AutoTSTrainer +---------------------------------------- + +AutoTSTrainer trains a time series pipeline (including data processing, feature engineering, and model) with AutoML. + +.. autoclass:: zoo.chronos.autots.deprecated.forecast.AutoTSTrainer + :members: + :show-inheritance: + + +TSPipeline +---------------------------------------- + +A pipeline for time series forecasting. + +.. autoclass:: zoo.chronos.autots.deprecated.forecast.TSPipeline + :members: + :show-inheritance: + + +Recipe +---------------------------------------- + +Recipe is used for search configuration for AutoTSTrainer. + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.SmokeRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.MTNetSmokeRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.TCNSmokeRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.PastSeqParamHandler + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.GridRandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.LSTMSeq2SeqRandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.LSTMGridRandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.Seq2SeqRandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.MTNetGridRandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.TCNGridRandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.RandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.BayesRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.XgbRegressorGridRandomRecipe + :members: + :show-inheritance: + +.. autoclass:: zoo.chronos.autots.deprecated.config.recipe.XgbRegressorSkOptRecipe + :members: + :show-inheritance: \ No newline at end of file diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/autotsestimator.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/autotsestimator.rst new file mode 100644 index 00000000..0e48c74d --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/autotsestimator.rst @@ -0,0 +1,25 @@ +AutoTS +===================== + +AutoTSEstimator +------------------------------------------- + +Automated TimeSeries Estimator for time series forecasting task. +AutoTSEstimator will replace AutoTSTrainer in later version. + +.. automodule:: zoo.chronos.autots.autotsestimator + :members: + :undoc-members: + :show-inheritance: + + +TSPipeline +------------------------------------------- + +TSPipeline is an E2E solution for time series forecasting task. +AutoTSEstimator will replace original TSPipeline returned by AutoTSTrainer in later version. + +.. automodule:: zoo.chronos.autots.tspipeline + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/forecasters.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/forecasters.rst new file mode 100644 index 00000000..e4169dcd --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/forecasters.rst @@ -0,0 +1,118 @@ +Forecasters +===================== + +LSTMForecaster +---------------------------------------- + +Please refer to BasePytorchForecaster for other methods other than initialization. + +Long short-term memory(LSTM) is a special type of recurrent neural network(RNN). We implement the basic version of LSTM - VanillaLSTM for this forecaster for time-series forecasting task. It has two LSTM layers, two dropout layer and a dense layer. + +For the detailed algorithm description, please refer to `here `__. + +.. automodule:: zoo.chronos.forecaster.lstm_forecaster + :members: + :undoc-members: + :show-inheritance: + + +Seq2SeqForecaster +------------------------------------------- + +Please refer to BasePytorchForecaster for other methods other than initialization. + +Seq2SeqForecaster wraps a sequence to sequence model based on LSTM, and is suitable for multivariant & multistep time series forecasting. + +.. automodule:: zoo.chronos.forecaster.seq2seq_forecaster + :members: + :undoc-members: + :show-inheritance: + + +TCNForecaster +---------------------------------------- + +Please refer to BasePytorchForecaster for other methods other than initialization. + +Temporal Convolutional Networks (TCN) is a neural network that use convolutional architecture rather than recurrent networks. It supports multi-step and multi-variant cases. Causal Convolutions enables large scale parallel computing which makes TCN has less inference time than RNN based model such as LSTM. + +.. automodule:: zoo.chronos.forecaster.tcn_forecaster + :members: + :undoc-members: + :show-inheritance: + + +TCMFForecaster +---------------------------------------- + +Analytics Zoo Chronos TCMFForecaster provides an efficient way to forecast high dimensional time series. + +TCMFForecaster is based on DeepGLO algorithm, which is a deep forecasting model which thinks globally and acts locally. +You can refer to `the deepglo paper `__ for more details. + +TCMFForecaster supports distributed training and inference. It is based on Orca PyTorch Estimator, which is an estimator to do PyTorch training/evaluation/prediction on Spark in a distributed fashion. Also you can choose to enable distributed training and inference or not. + +**Remarks**: + +* You can refer to `TCMFForecaster installation `__ to install required packages. +* Your operating system (OS) is required to be one of the following 64-bit systems: **Ubuntu 16.04 or later** and **macOS 10.12.6 or later**. + +.. automodule:: zoo.chronos.forecaster.tcmf_forecaster + :members: + :undoc-members: + :show-inheritance: + + +MTNetForecaster +---------------------------------------- + +MTNet is a memory-network based solution for multivariate time-series forecasting. In a specific task of multivariate time-series forecasting, we have several variables observed in time series and we want to forecast some or all of the variables' value in a future time stamp. + +MTNet is proposed by paper `A Memory-Network Based Solution for Multivariate Time-Series Forecasting `__. MTNetForecaster is derived from tfpark.KerasMode, and can use all methods of KerasModel. Refer to `tfpark.KerasModel API Doc `__ for details. + +For the detailed algorithm description, please refer to `here `__. + +.. automodule:: zoo.chronos.forecaster.mtnet_forecaster + :members: + :undoc-members: + :show-inheritance: + + +ARIMAForecaster +---------------------------------------- + +AutoRegressive Integrated Moving Average (ARIMA) is a class of statistical models for analyzing and forecasting time series data. It consists of 3 components: AR (AutoRegressive), I (Integrated) and MA (Moving Average). In ARIMAForecaster we use the SARIMA model (Seasonal ARIMA), which is an extension of ARIMA that additionally supports the direct modeling of the seasonal component of the time series. + +.. automodule:: zoo.chronos.forecaster.arima_forecaster + :members: + :undoc-members: + :show-inheritance: + + +ProphetForecaster +---------------------------------------- + +Prophet is a procedure for forecasting time series data based on an additive model where non-linear trends are fit with yearly, weekly, and daily seasonality, plus holiday effects. It works best with time series that have strong seasonal effects and several seasons of historical data. Prophet is robust to missing data and shifts in the trend, and typically handles outliers well. + +For the detailed algorithm description, please refer to `here `__. + +.. automodule:: zoo.chronos.forecaster.prophet_forecaster + :members: + :undoc-members: + :show-inheritance: + + +chronos.forecast.tfpark_forecaster +---------------------------------------- + +.. automodule:: zoo.chronos.forecaster.tfpark_forecaster + :members: + :undoc-members: + :show-inheritance: + +chronos.forecast.base_forecaster.BasePytorchForecaster +---------------------------------------- + +.. autoclass:: zoo.chronos.forecaster.base_forecaster.BasePytorchForecaster + :members: + :show-inheritance: \ No newline at end of file diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/index.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/index.rst new file mode 100644 index 00000000..7bfa4faa --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/index.rst @@ -0,0 +1,17 @@ +Chronos API +================== + +.. toctree:: + :maxdepth: 2 + + autotsestimator.rst + automodels.rst + forecasters.rst + anomaly_detectors.rst + tsdataset.rst + simulator.rst + +.. toctree:: + :maxdepth: 1 + + autots.rst diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/simulator.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/simulator.rst new file mode 100644 index 00000000..891cba7e --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/simulator.rst @@ -0,0 +1,10 @@ +Simulator +==================================== + +DPGANSimulator +------------------------------------ + +.. automodule:: zoo.chronos.simulator.doppelganger_simulator + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/readthedocs/source/doc/PythonAPI/Chronos/tsdataset.rst b/docs/readthedocs/source/doc/PythonAPI/Chronos/tsdataset.rst new file mode 100644 index 00000000..2722db28 --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Chronos/tsdataset.rst @@ -0,0 +1,24 @@ +TSDataset +=========== + +chronos.data.tsdataset +---------------------------------------- + +Time series data is a special data formulation with specific operations. TSDataset is an abstract of time series dataset, which provides various data processing operations (e.g. impute, deduplicate, resample, scale/unscale, roll) and feature engineering methods (e.g. datetime feature, aggregation feature). Cascade call is supported for most of the methods. +TSDataset can be initialized from a pandas dataframe and be converted to a pandas dataframe or numpy ndarray. + +.. automodule:: zoo.chronos.data.tsdataset + :members: + :undoc-members: + :show-inheritance: + +chronos.data.experimental.xshards_tsdataset +---------------------------------------- + +Time series data is a special data formulation with specific operations. XShardsTSDataset is an abstract of time series dataset, which provides various data processing operations (e.g. impute, deduplicate, resample, scale/unscale, roll) and feature engineering methods (e.g. datetime feature, aggregation feature). Cascade call is supported for most of the methods. +XShardsTSDataset can be initialized from xshards of pandas dataframe and be converted to xshards of numpy in an distributed and parallized fashion. + +.. automodule:: zoo.chronos.data.experimental.xshards_tsdataset + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/readthedocs/source/doc/PythonAPI/Friesian/feature.rst b/docs/readthedocs/source/doc/PythonAPI/Friesian/feature.rst new file mode 100644 index 00000000..dbf7fb55 --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Friesian/feature.rst @@ -0,0 +1,11 @@ +Friesian Feature API +===================== + +friesian.feature.table +--------------------------- + +.. automodule:: zoo.friesian.feature.table + :members: + :undoc-members: + :show-inheritance: + diff --git a/docs/readthedocs/source/doc/PythonAPI/Orca/orca.rst b/docs/readthedocs/source/doc/PythonAPI/Orca/orca.rst new file mode 100644 index 00000000..31b7591c --- /dev/null +++ b/docs/readthedocs/source/doc/PythonAPI/Orca/orca.rst @@ -0,0 +1,45 @@ +Orca API +========= + +orca.learn.bigdl.estimator +--------------------------- + +.. automodule:: zoo.orca.learn.bigdl.estimator + :members: + :undoc-members: + :show-inheritance: + + +orca.learn.tf.estimator +------------------------ + +.. automodule:: zoo.orca.learn.tf.estimator + :members: + :undoc-members: + :show-inheritance: + + +orca.learn.tf2.estimator +------------------------- + +.. automodule:: zoo.orca.learn.tf2.estimator + :members: + :undoc-members: + :show-inheritance: + +orca.learn.pytorch.estimator +----------------------------- + +.. automodule:: zoo.orca.learn.pytorch.estimator + :members: + :undoc-members: + :show-inheritance: + +orca.learn.openvino.estimator +------------------------------ + +.. automodule:: zoo.orca.learn.openvino.estimator + :members: + :undoc-members: + :show-inheritance: + diff --git a/docs/readthedocs/source/doc/Ray/Overview/ray.md b/docs/readthedocs/source/doc/Ray/Overview/ray.md new file mode 100644 index 00000000..bd1303a4 --- /dev/null +++ b/docs/readthedocs/source/doc/Ray/Overview/ray.md @@ -0,0 +1,100 @@ +# RayOnSpark User Guide + +--- + +[Ray](https://github.com/ray-project/ray) is an open source distributed framework for emerging AI applications. With the _**RayOnSpark**_ support in Analytics Zoo, Users can seamlessly integrate Ray applications into the big data processing pipeline on the underlying Big Data cluster (such as [Hadoop/YARN](../../UserGuide/hadoop.md) or [K8s](../../UserGuide/k8s.md)). + +_**Note:** Analytics Zoo has been tested on Ray 1.2.0 and you are highly recommended to use this tested version._ + + +### **1. Install** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the Python environment. +When installing analytics-zoo with pip, you can specify the extras key `[ray]` to additionally install the additional dependencies essential for running Ray (i.e. `ray==1.2.0`, `psutil`, `aiohttp`, `setproctitle`): + +```bash +conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. +conda activate zoo + +pip install analytics-zoo[ray] +``` + +View [here](./python.html#install) for more installation instructions. + +--- +### **2. Initialize** + +We recommend using `init_orca_context` to initiate and run Analytics Zoo on the underlying cluster. The Ray cluster would be launched as well by specifying `init_ray_on_spark=True`. For example, to launch Spark and Ray on standard Hadoop/YARN clusters in [YARN client mode](https://spark.apache.org/docs/latest/running-on-yarn.html#launching-spark-on-yarn): + +```python +from zoo.orca import init_orca_context + +sc = init_orca_context(cluster_mode="yarn-client", cores=4, memory="10g", num_nodes=2, init_ray_on_spark=True) +``` + +By default, the Ray cluster would be launched using Spark barrier execution mode, you can turn it off via the configurations of `OrcaContext`: + +```python +from zoo.orca import OrcaContext + +OrcaContext.barrier_mode = False +``` + +View [Orca Context](../../Orca/Overview/orca-context.md) for more details. + +--- +### **3. Run** + +- After the initialization, you can directly run Ray applications on the underlying cluster. [Ray tasks](https://docs.ray.io/en/master/walkthrough.html#remote-functions-tasks) or [actors](https://docs.ray.io/en/master/actors.html) would be launched across the cluster. The following code shows a simple example: + + ```python + import ray + + @ray.remote + class Counter(object): + def __init__(self): + self.n = 0 + + def increment(self): + self.n += 1 + return self.n + + + counters = [Counter.remote() for i in range(5)] + print(ray.get([c.increment.remote() for c in counters])) + ``` + +- You can retrieve the information of the Ray cluster via [`OrcaContext`](../Orca/Overview/orca-context.md): + + ```python + from zoo.orca import OrcaContext + + ray_ctx = OrcaContext.get_ray_context() + address_info = ray_ctx.address_info # The dictionary information of the ray cluster, including node_ip_address, object_store_address, webui_url, etc. + redis_address = ray_ctx.redis_address # The redis address of the ray cluster. + ``` + +- You should call `stop_orca_context()` when your program finishes: + + ```python + from zoo.orca import stop_orca_context + + stop_orca_context() + ``` + +--- +### **4. Known Issue** +If you encounter the following error when launching Ray on the underlying cluster, especially when you are using a [Spark standalone](https://spark.apache.org/docs/latest/spark-standalone.html) cluster: + +``` +This system supports the C.UTF-8 locale which is recommended. You might be able to resolve your issue by exporting the following environment variables: + + export LC_ALL=C.UTF-8 + export LANG=C.UTF-8 +``` + +Add the environment variables when calling `init_orca_context` would resolve the issue: + +```python +sc = init_orca_context(cluster_mode, init_ray_on_spark=True, env={"LANG": "C.UTF-8", "LC_ALL": "C.UTF-8"}) +``` diff --git a/docs/readthedocs/source/doc/Ray/QuickStart/ray-quickstart.md b/docs/readthedocs/source/doc/Ray/QuickStart/ray-quickstart.md new file mode 100644 index 00000000..1503a20a --- /dev/null +++ b/docs/readthedocs/source/doc/Ray/QuickStart/ray-quickstart.md @@ -0,0 +1,131 @@ +# RayOnSpark Quickstart + +--- + +![](../../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/ray/quickstart/ray_parameter_server.ipynb)  ![](../../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/ray/quickstart/ray_parameter_server.ipynb) + +--- + +**In this guide, we will describe how to use RayOnSpark to directly run Ray programs on Big Data clusters in 2 simple steps.** + +### **Step 0: Prepare Environment** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the environment. Please refer to the [install guide](../../UserGuide/python.md) for more details. + +```bash +conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. +conda activate zoo +pip install analytics-zoo[ray] +``` + +### **Step 1: Initialize** + +We recommend using `init_orca_context` to initiate and run Analytics Zoo on the underlying cluster. The Ray cluster would be launched automatically by specifying `init_ray_on_spark=True`. + +```python +from zoo.orca import init_orca_context + +if cluster_mode == "local": # For local machine + sc = init_orca_context(cluster_mode="local", cores=4, memory="10g", init_ray_on_spark=True) +elif cluster_mode == "k8s": # For K8s cluster + sc = init_orca_context(cluster_mode="k8s", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1, init_ray_on_spark=True) +elif cluster_mode == "yarn": # For Hadoop/YARN cluster + sc = init_orca_context(cluster_mode="yarn", num_nodes=2, cores=2, memory="10g", driver_memory="10g", driver_cores=1, init_ray_on_spark=True) +``` + +This is the only place where you need to specify local or distributed mode. + +By default, the Ray cluster would be launched using Spark barrier execution mode, you can turn it off via the configurations of `OrcaContext`: + +```python +from zoo.orca import OrcaContext + +OrcaContext.barrier_mode = False +``` + +View [Orca Context](./../../Orca/Overview/orca-context.md) for more details. + +**Note:** You should `export HADOOP_CONF_DIR=/path/to/hadoop/conf/dir` when running on Hadoop YARN cluster. View [Hadoop User Guide](./../../UserGuide/hadoop.md) for more details. + +You can retrieve the information of the Ray cluster via `OrcaContext`: + +```python +from zoo.orca import OrcaContext + +ray_ctx = OrcaContext.get_ray_context() +address_info = ray_ctx.address_info # The dictionary information of the ray cluster, including node_ip_address, object_store_address, webui_url, etc. +redis_address = ray_ctx.redis_address # The redis address of the ray cluster. +``` + +### **Step 2: Run Ray Applications** + +After the initialization, you can directly write Ray code inline with your Spark code, and run Ray programs on the underlying existing Big Data clusters. Ray [tasks](https://docs.ray.io/en/master/walkthrough.html#remote-functions-tasks) and [actors](https://docs.ray.io/en/master/actors.html) would be launched across the cluster. + +The following example uses actor handles to implement a parameter server example for distributed asynchronous stochastic gradient descent. This is a simple Ray example for demonstration purpose. Similarly, you can write other Ray applications as you wish. + +A parameter server is simply an object that stores the parameters (or "weights") of a machine learning model (this could be a neural network, a linear model, or something else). It exposes two methods: one for getting the parameters and one for updating the parameters. + +By adding the `@ray.remote` decorator, the `ParameterServer` class becomes a Ray actor. + +```python +import ray +import numpy as np + +dim = 10 +@ray.remote +class ParameterServer(object): + def __init__(self, dim): + self.parameters = np.zeros(dim) + + def get_parameters(self): + return self.parameters + + def update_parameters(self, update): + self.parameters += update + +ps = ParameterServer.remote(dim) +``` + +In a typical machine learning training application, worker processes will run in an infinite loop that does the following: + +1. Get the latest parameters from the parameter server. +2. Compute an update to the parameters (using the current parameters and some data). +3. Send the update to the parameter server. + +By adding the `@ray.remote` decorator, the `worker` function becomes a Ray remote function. + +```python +import time + +@ray.remote +def worker(ps, dim, num_iters): + for _ in range(num_iters): + # Get the latest parameters. + parameters = ray.get(ps.get_parameters.remote()) + # Compute an update. + update = 1e-3 * parameters + np.ones(dim) + # Update the parameters. + ps.update_parameters.remote(update) + # Sleep a little to simulate a real workload. + time.sleep(0.5) + +# Test that worker is implemented correctly. You do not need to change this line. +ray.get(worker.remote(ps, dim, 1)) + +# Start two workers. +worker_results = [worker.remote(ps, dim, 100) for _ in range(2)] +``` + +As the worker tasks are executing, you can query the parameter server from the driver and see the parameters changing in the background. + +``` +print(ray.get(ps.get_parameters.remote())) +``` + +**Note:** You should call `stop_orca_context()` when your program finishes: + +```python +from zoo.orca import stop_orca_context + +stop_orca_context() +``` diff --git a/docs/readthedocs/source/doc/UseCase/keras-api.md b/docs/readthedocs/source/doc/UseCase/keras-api.md new file mode 100644 index 00000000..b7ec6a1e --- /dev/null +++ b/docs/readthedocs/source/doc/UseCase/keras-api.md @@ -0,0 +1,2833 @@ +# Use Keras-Like API for BigDL + +## 1. Introduction +Analytics Zoo provides __Keras-like API__ based on [__Keras 1.2.2__](https://faroit.github.io/keras-docs/1.2.2/) for BigDL. Users, especially those familiar with Keras, can easily use the Keras-like API to create a BigDL model and train, evaluate or tune it in a distributed fashion. + +To define a model in Scala using the Keras-like API, now one just need to import the following packages: + +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers._ +import com.intel.analytics.zoo.pipeline.api.keras.models._ +import com.intel.analytics.bigdl.utils.Shape +``` + +One of the highlighted features with regard to the new API is __shape inference__. Users only need to specify the input shape (a `Shape` object __excluding__ batch dimension, for example, `inputShape=Shape(3, 4)` for 3D input) for the first layer of a model and for the remaining layers, the input dimension will be automatically inferred. + +--- +## 2. LeNet Example +Here we use the Keras-like API to define a LeNet CNN model and train it on the MNIST dataset: + +```scala +import com.intel.analytics.bigdl.numeric.NumericFloat +import com.intel.analytics.zoo.pipeline.api.keras.layers._ +import com.intel.analytics.zoo.pipeline.api.keras.models._ +import com.intel.analytics.bigdl.utils.Shape + +val model = Sequential() +model.add(Reshape(Array(1, 28, 28), inputShape = Shape(28, 28, 1))) +model.add(Convolution2D(6, 5, 5, activation = "tanh").setName("conv1_5x5")) +model.add(MaxPooling2D()) +model.add(Convolution2D(12, 5, 5, activation = "tanh").setName("conv2_5x5")) +model.add(MaxPooling2D()) +model.add(Flatten()) +model.add(Dense(100, activation = "tanh").setName("fc1")) +model.add(Dense(10, activation = "softmax").setName("fc2")) + +model.getInputShape().toSingle().toArray // Array(-1, 28, 28, 1) +model.getOutputShape().toSingle().toArray // Array(-1, 10) +``` +--- +## 3. Shape +Input and output shapes of a model in the Keras-like API are described by the `Shape` object in Scala, which can be classified into `SingleShape` and `MultiShape`. + +`SingleShape` is just a list of Int indicating shape dimensions while `MultiShape` is essentially a list of `Shape`. + +Example code to create a shape: +```scala +// create a SingleShape +val shape1 = Shape(3, 4) +// create a MultiShape consisting of two SingleShape +val shape2 = Shape(List(Shape(1, 2, 3), Shape(4, 5, 6))) +``` +You can use method `toSingle()` to cast a `Shape` to a `SingleShape`. Similarly, use `toMulti()` to cast a `Shape` to a `MultiShape`. + +--- +## 4. Define a model +You can define a model either using [Sequential API](#sequential-api) or [Functional API](#functional-api). Remember to specify the input shape for the first layer. + +After creating a model, you can call the following __methods__: + +```scala +getInputShape() +``` +```scala +getOutputShape() +``` +* Return the input or output shape of a model, which is a [`Shape`](#2-shape) object. For `SingleShape`, the first entry is `-1` representing the batch dimension. For a model with multiple inputs or outputs, it will return a `MultiShape`. + +```scala +setName(name) +``` +* Set the name of the model. + +--- +## 5. Sequential API +The model is described as a linear stack of layers in the Sequential API. Layers can be added into the `Sequential` container one by one and the order of the layers in the model will be the same as the insertion order. + +To create a sequential container: +```scala +Sequential() +``` + +Example code to create a sequential model: +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.{Dense, Activation} +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape + +val model = Sequential[Float]() +model.add(Dense[Float](32, inputShape = Shape(128))) +model.add(Activation[Float]("relu")) +``` + +--- +## 6. Functional API +The model is described as a graph in the Functional API. It is more convenient than the Sequential API when defining some complex model (for example, a model with multiple outputs). + +To create an input node: +```scala +Input(inputShape = null, name = null) +``` +Parameters: + +* `inputShape`: A [`Shape`](#shape) object indicating the shape of the input node, not including batch. +* `name`: String to set the name of the input node. If not specified, its name will by default to be a generated string. + +To create a graph container: +```scala +Model(input, output) +``` +Parameters: + +* `input`: An input node or an array of input nodes. +* `output`: An output node or an array of output nodes. + +To merge a list of input __nodes__ (__NOT__ layers), following some merge mode in the Functional API: +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Merge.merge + +merge(inputs, mode = "sum", concatAxis = -1) // This will return an output NODE. +``` + +Parameters: + +* `inputs`: A list of node instances. Must be more than one node. +* `mode`: Merge mode. String, must be one of: 'sum', 'mul', 'concat', 'ave', 'cos', 'dot', 'max'. Default is 'sum'. +* `concatAxis`: Int, axis to use when concatenating nodes. Only specify this when merge mode is 'concat'. Default is -1, meaning the last axis of the input. + +Example code to create a graph model: +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.{Dense, Input} +import com.intel.analytics.zoo.pipeline.api.keras.layers.Merge.merge +import com.intel.analytics.zoo.pipeline.api.keras.models.Model +import com.intel.analytics.bigdl.utils.Shape + +// instantiate input nodes +val input1 = Input[Float](inputShape = Shape(8)) +val input2 = Input[Float](inputShape = Shape(6)) +// call inputs() with an input node and get an output node +val dense1 = Dense[Float](10).inputs(input1) +val dense2 = Dense[Float](10).inputs(input2) +// merge two nodes following some merge mode +val output = merge(inputs = List(dense1, dense2), mode = "sum") +// create a graph container +val model = Model[Float](Array(input1, input2), output) +``` + +--- +## 7. Core Layers +This section describes all the available layers in the Keras-like API. + +To set the name of a specific layer, you call the method `setName(name)` of that layer. + +### 7.1 Masking +Use a mask value to skip timesteps for a sequence. + +**Scala:** +```scala +Masking(maskValue = 0.0, inputShape = null) +``` +**Python:** +```python +Masking(mask_value=0.0, input_shape=None, name=None) +``` + +**Parameters:** + +* `maskValue`: Mask value. For each timestep in the input (the second dimension), if all the values in the input at that timestep are equal to 'maskValue', then the timestep will be masked (skipped) in all downstream layers. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Masking +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Masking[Float](inputShape = Shape(3))) +val input = Tensor[Float](2, 3).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +1.4539868 1.5623108 -1.4101523 +0.77073747 -0.18994702 2.2574463 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +1.4539868 1.5623108 -1.4101523 +0.77073747 -0.18994702 2.2574463 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` + +**Python example:** +```python +import numpy as np +from bigdl.nn.keras.topology import Sequential +from bigdl.nn.keras.layer import Masking + +model = Sequential() +model.add(Masking(input_shape=(3, ))) +input = np.random.random([2, 3]) +output = model.forward(input) +``` +Input is: +```python +[[0.31542103 0.20640659 0.22282763] + [0.99352167 0.90135718 0.24504717]] +``` +Output is +```python +[[0.31542102 0.2064066 0.22282763] + [0.9935217 0.9013572 0.24504717]] +``` + +--- +### 7.2 SparseDense +SparseDense is the sparse version of layer Dense. SparseDense has two different from Dense: +firstly, SparseDense's input Tensor is a SparseTensor. Secondly, SparseDense doesn't backward +gradient to next layer in the backpropagation by default, as the gradInput of SparseDense is +useless and very big in most cases. + +But, considering model like Wide&Deep, we provide backwardStart and backwardLength to backward +part of the gradient to next layer. + +The most common input is 2D. + +**Scala:** +```scala +SparseDense(outputDim, init = "glorot_uniform", activation = null, wRegularizer = null, bRegularizer = null, backwardStart = -1, backwardLength = -1, initWeight = null, initBias = null, initGradWeight = null, initGradBias = null, bias = true, inputShape = null) +``` +**Python:** +```python +SparseDense(output_dim, init="glorot_uniform", activation=None, W_regularizer=None, b_regularizer=None, backward_start=-1, backward_length=-1, init_weight=None, init_bias=None, init_grad_weight=None, init_grad_bias=None, bias=True, input_shape=None, name=None) +``` + +**Parameters:** + +* `outputDim`: The size of the output dimension. +* `init`: String representation of the initialization method for the weights of the layer. Default is 'glorot_uniform'. +* `activation`: String representation of the activation function to use. Default is null. +* `wRegularizer`: An instance of [Regularizer], applied to the input weights matrices. Default is null. +* `bRegularizer`: An instance of [Regularizer], applied to the bias. Default is null. +* `bias`: Whether to include a bias (i.e. make the layer affine rather than linear). Default is true. +* `backwardStart`: Backward start index, counting from 1. +* `backwardLength`: Backward length. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a `Shape` object. For Python API, it should be a shape tuple. Batch dimension should be excluded. +* `name`: String to set the name of the layer. If not specified, its name will by default to be a generated string. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.SparseDense +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val layer = SparseDense[Float](outputDim = 5, inputShape = Shape(2, 4)) +layer.build(Shape(-1, 2, 4)) +val input = Tensor[Float](Array(2, 4)).rand() +input.setValue(1, 1, 1f) +input.setValue(2, 3, 3f) +val sparseInput = Tensor.sparse(input) +val output = layer.forward(sparseInput) +``` +Input is: +```scala +input: +(0, 0) : 1.0 +(0, 1) : 0.2992794 +(0, 2) : 0.11227019 +(0, 3) : 0.722947 +(1, 0) : 0.6147614 +(1, 1) : 0.4288646 +(1, 2) : 3.0 +(1, 3) : 0.7749917 +[com.intel.analytics.bigdl.tensor.SparseTensor of size 2x4] +``` +Output is: +```scala +output: +0.053516 0.33429605 0.22587383 -0.8998945 0.24308181 +0.76745665 -1.614114 0.5381658 -2.2226436 -0.15573677 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x5] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import SparseDense +from zoo.pipeline.api.keras.models import Sequential +from bigdl.util.common import JTensor + +model = Sequential() +model.add(SparseDense(output_dim=2, input_shape=(3, 4))) +input = JTensor.sparse( + a_ndarray=np.array([1, 3, 2, 4]), + i_ndarray = np.array([[0, 0, 1, 2], + [0, 3, 2, 1]]), + shape = np.array([3, 4]) +) +output = model.forward(input) +``` +Input is: +```python +JTensor: storage: [1. 3. 2. 4.], shape: [3 4] ,indices [[0 0 1 2] + [0 3 2 1]], float +``` +Output is +```python +[[ 1.57136 2.29596 ] + [ 0.5791738 -1.6598101 ] + [ 2.331141 -0.84687066]] + ``` + +### 7.3 SoftShrink +Applies the soft shrinkage function element-wise to the input. + +When you use this layer as the first layer of a model, you need to provide +the argument inputShape (a Single Shape, does not include the batch dimension). + +Remark: This layer is from Torch and wrapped in Keras style. + + +**Scala:** +```scala +SoftShrink(value = 0.5, inputShape = null) +``` +**Python:** +```python +SoftShrink(value = 0.5, input_shape=None, name=None) +``` + +**Parameters:** + +* `value`: value The threshold value. Default is 0.5. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a `Shape` object. For Python API, it should be a shape tuple. Batch dimension should be excluded. +* `name`: String to set the name of the layer. If not specified, its name will by default to be a generated string. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.SoftShrink +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(SoftShrink[Float](0.6, inputShape = Shape(2, 3, 4))) +val input = Tensor[Float](2, 2, 3, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +-0.36938807 0.023556225 -1.1655436 -0.34449077 +0.9444338 -0.086538695 -1.0425501 1.364976 +-1.2563878 -0.1842559 0.43428117 1.0756494 + +(1,2,.,.) = +-0.19888283 1.251872 0.114836805 -0.6208773 +0.0051822234 -0.8998633 0.06937465 -0.3929931 +-0.1058129 0.6945743 -0.40083578 -0.6252444 + +(2,1,.,.) = +-0.9899709 -0.77926594 -0.15497442 -0.15031165 +-0.6028622 0.86623466 -2.1543107 0.41970536 +-0.8215522 0.3014275 -0.32184362 0.14445356 + +(2,2,.,.) = +0.74701905 0.10044397 -0.40519297 0.03822808 +0.30726334 0.27862388 1.731753 0.032177072 +-1.3476961 -0.2294767 0.99794704 0.7398458 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +0.0 0.0 -0.56554353 0.0 +0.34443378 0.0 -0.44255006 0.764976 +-0.6563878 0.0 0.0 0.47564936 + +(1,2,.,.) = +0.0 0.6518719 0.0 -0.020877302 +0.0 -0.29986328 0.0 0.0 +0.0 0.09457427 0.0 -0.025244355 + +(2,1,.,.) = +-0.3899709 -0.17926592 0.0 0.0 +-0.0028621554 0.26623464 -1.5543107 0.0 +-0.2215522 0.0 0.0 0.0 + +(2,2,.,.) = +0.14701903 0.0 0.0 0.0 +0.0 0.0 1.131753 0.0 +-0.74769604 0.0 0.397947 0.13984579 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import SoftShrink +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(SoftShrink(0.6, input_shape=(2, 3, 4))) +input = np.random.random([2, 2, 3, 4]) +output = model.forward(input) +``` +Input is: +```python +array([[[[ 0.43421006, 0.28394451, 0.15221226, 0.47268966], + [ 0.22426224, 0.24855662, 0.790498 , 0.67767582], + [ 0.14879562, 0.56077882, 0.61470262, 0.94875862]], + + [[ 0.72404932, 0.89780875, 0.08456734, 0.01303937], + [ 0.25023568, 0.45392504, 0.587254 , 0.51164461], + [ 0.12277567, 0.05571182, 0.17076456, 0.71660884]]], + + + [[[ 0.06369975, 0.85395557, 0.35752425, 0.606633 ], + [ 0.67640252, 0.86861737, 0.18040722, 0.55467108], + [ 0.24102058, 0.37580645, 0.81601612, 0.56513788]], + + [[ 0.8461435 , 0.65668365, 0.17969807, 0.51602926], + [ 0.86191073, 0.34245714, 0.62795207, 0.36706125], + [ 0.80344028, 0.81056003, 0.80959083, 0.15366483]]]]) +``` +Output is +```python +array([[[[ 0. , 0. , 0. , 0. ], + [ 0. , 0. , 0.19049799, 0.07767582], + [ 0. , 0. , 0.01470262, 0.34875858]], + + [[ 0.12404931, 0.29780871, 0. , 0. ], + [ 0. , 0. , 0. , 0. ], + [ 0. , 0. , 0. , 0.1166088 ]]], + + + [[[ 0. , 0.25395554, 0. , 0.00663298], + [ 0.07640249, 0.26861733, 0. , 0. ], + [ 0. , 0. , 0.21601611, 0. ]], + + [[ 0.24614346, 0.05668366, 0. , 0. ], + [ 0.26191074, 0. , 0.02795208, 0. ], + [ 0.20344025, 0.21056002, 0.20959079, 0. ]]]], dtype=float32) + + ``` + +--- +### 7.4 Reshape +Reshapes an output to a certain shape. + +Supports shape inference by allowing one -1 in the target shape. For example, if input shape is (2, 3, 4), target shape is (3, -1), then output shape will be (3, 8). + +**Scala:** +```scala +Reshape(targetShape, inputShape = null) +``` +**Python:** +```python +Reshape(target_shape, input_shape=None, name=None) +``` + +**Parameters:** + +* `targetShape`: The target shape that you desire to have. Batch dimension should be excluded. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Reshape +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Reshape(Array(3, 8), inputShape = Shape(2, 3, 4))) +val input = Tensor[Float](2, 2, 3, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +-1.7092276 -1.3941092 -0.6348466 0.71309644 +0.3605411 0.025597548 0.4287048 -0.548675 +0.4623341 -2.3912702 0.22030865 -0.058272455 + +(1,2,.,.) = +-1.5049093 -1.8828062 0.8230564 -0.020209199 +-0.3415721 1.1219939 1.1089007 -0.74697906 +-1.503861 -1.616539 0.048006497 1.1613717 + +(2,1,.,.) = +0.21216023 1.0107462 0.8586909 -0.05644316 +-0.31436008 1.6892323 -0.9961186 -0.08169463 +0.3559391 0.010261055 -0.70408463 -1.2480727 + +(2,2,.,.) = +1.7663039 0.07122444 0.073556066 -0.7847014 +0.17604464 -0.99110585 -1.0302067 -0.39024687 +-0.0260166 -0.43142694 0.28443158 0.72679126 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +-1.7092276 -1.3941092 -0.6348466 0.71309644 0.3605411 0.025597548 0.4287048 -0.548675 +0.4623341 -2.3912702 0.22030865 -0.058272455 -1.5049093 -1.8828062 0.8230564 -0.020209199 +-0.3415721 1.1219939 1.1089007 -0.74697906 -1.503861 -1.616539 0.048006497 1.1613717 + +(2,.,.) = +0.21216023 1.0107462 0.8586909 -0.05644316 -0.31436008 1.6892323 -0.9961186 -0.08169463 +0.3559391 0.010261055 -0.70408463 -1.2480727 1.7663039 0.07122444 0.073556066 -0.7847014 +0.17604464 -0.99110585 -1.0302067 -0.39024687 -0.0260166 -0.43142694 0.28443158 0.72679126 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3x8] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Reshape +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Reshape(target_shape=(3, 8), input_shape=(2, 3, 4))) +input = np.random.random([2, 2, 3, 4]) +output = model.forward(input) +``` +Input is: +```python +[[[[0.39260304 0.10383185 0.87490319 0.89167328] + [0.61649117 0.43285247 0.86851582 0.97743004] + [0.90018969 0.04303951 0.74263493 0.14208656]] + [[0.66193405 0.93432157 0.76160537 0.70437459] + [0.99953431 0.23016734 0.42293405 0.66078049] + [0.03357645 0.9695145 0.30111138 0.67109948]]] + + [[[0.39640201 0.92930203 0.86027666 0.13958544] + [0.34584767 0.14743425 0.93804016 0.38053062] + [0.55068792 0.77375329 0.84161166 0.48131356]] + [[0.90116368 0.53253689 0.03332962 0.58278686] + [0.34935685 0.32599554 0.97641892 0.57696434] + [0.53974677 0.90682861 0.20027319 0.05962118]]]] +``` +Output is +```python +[[[0.39260304 0.10383185 0.8749032 0.89167327 0.6164912 0.43285248 0.86851585 0.97743005] + [0.9001897 0.04303951 0.74263495 0.14208655 0.661934 0.9343216 0.7616054 0.7043746 ] + [0.9995343 0.23016734 0.42293406 0.6607805 0.03357645 0.9695145 0.30111137 0.6710995 ]] + + [[0.396402 0.92930204 0.86027664 0.13958544 0.34584767 0.14743425 0.93804014 0.38053063] + [0.5506879 0.7737533 0.8416117 0.48131356 0.9011637 0.53253686 0.03332962 0.58278686] + [0.34935686 0.32599553 0.9764189 0.5769643 0.53974676 0.9068286 0.20027319 0.05962119]]] +``` + +--- +### 7.5 Merge +Used to merge a list of inputs into a single output, following some merge mode. + +Merge must have at least two input layers. + +**Scala:** +```scala +Merge(layers = null, mode = "sum", concatAxis = -1, inputShape = null) +``` +**Python:** +```python +Merge(layers=None, mode="sum", concat_axis=-1, input_shape=None, name=None) +``` + +**Parameters:** + +* `layers`: A list of layer instances. Must be more than one layer. +* `mode`: Merge mode. String, must be one of: 'sum', 'mul', 'concat', 'ave', 'cos', 'dot', 'max'. Default is 'sum'. +* `concatAxis`: Integer, axis to use when concatenating layers. Only specify this when merge mode is 'concat'. Default is -1, meaning the last axis of the input. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`MultiShape`](../keras-api-scala/#shape) object. For Python API, it should be a list of shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.InputLayer +import com.intel.analytics.zoo.pipeline.api.keras.layers.Merge +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.{Shape, T} +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +val l1 = InputLayer[Float](inputShape = Shape(2, 3)) +val l2 = InputLayer[Float](inputShape = Shape(2, 3)) +val layer = Merge[Float](layers = List(l1, l2), mode = "sum") +model.add(layer) +val input1 = Tensor[Float](2, 2, 3).rand(0, 1) +val input2 = Tensor[Float](2, 2, 3).rand(0, 1) +val input = T(1 -> input1, 2 -> input2) +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.utils.Table = + { + 2: (1,.,.) = + 0.87815475 0.15025006 0.34412447 + 0.07909282 0.008027249 0.111715704 + + (2,.,.) = + 0.52245367 0.2547527 0.35857987 + 0.7718501 0.26783863 0.8642062 + + [com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] + 1: (1,.,.) = + 0.5377018 0.28364193 0.3424284 + 0.0075349305 0.9018168 0.9435114 + + (2,.,.) = + 0.09112563 0.88585275 0.3100201 + 0.7910178 0.57497376 0.39764535 + + [com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] + } +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +1.4158566 0.433892 0.6865529 +0.08662775 0.90984404 1.0552272 + +(2,.,.) = +0.6135793 1.1406054 0.66859996 +1.5628679 0.8428124 1.2618515 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Merge, InputLayer +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +l1 = InputLayer(input_shape=(3, 4)) +l2 = InputLayer(input_shape=(3, 4)) +model.add(Merge(layers=[l1, l2], mode='sum')) +input = [np.random.random([2, 3, 4]), np.random.random([2, 3, 4])] +output = model.forward(input) +``` +Input is: +```python +[[[[0.28764351, 0.0236015 , 0.78927442, 0.52646492], + [0.63922826, 0.45101604, 0.4555552 , 0.70105653], + [0.75790798, 0.78551523, 0.00686686, 0.61290369]], + + [[0.00430865, 0.3303661 , 0.59915782, 0.90362298], + [0.26230717, 0.99383052, 0.50630521, 0.99119486], + [0.56138318, 0.68165639, 0.10644523, 0.51860127]]], + + [[[0.84365767, 0.8854741 , 0.84183673, 0.96322321], + [0.49354248, 0.97936826, 0.2266097 , 0.88083622], + [0.11011776, 0.65762034, 0.17446099, 0.76658969]], + + [[0.58266689, 0.86322199, 0.87122999, 0.19031255], + [0.42275118, 0.76379413, 0.21355413, 0.81132937], + [0.97294728, 0.68601731, 0.39871792, 0.63172344]]]] +``` +Output is +```python +[[[1.1313012 0.90907556 1.6311111 1.4896882 ] + [1.1327708 1.4303843 0.6821649 1.5818927 ] + [0.8680257 1.4431355 0.18132785 1.3794935 ]] + + [[0.5869755 1.1935881 1.4703878 1.0939355 ] + [0.68505836 1.7576246 0.71985936 1.8025242 ] + [1.5343305 1.3676738 0.50516313 1.1503248 ]]] +``` + +--- +### 7.6 MaxoutDense +A dense maxout layer that takes the element-wise maximum of linear layers. + +This allows the layer to learn a convex, piecewise linear activation function over the inputs. + +The input of this layer should be 2D. + +**Scala:** +```scala +MaxoutDense(outputDim, nbFeature = 4, wRegularizer = null, bRegularizer = null, bias = true, inputShape = null) +``` +**Python:** +```python +MaxoutDense(output_dim, nb_feature=4, W_regularizer=None, b_regularizer=None, bias=True, input_dim=None, input_shape=None, name=None) +``` + +**Parameters:** + +* `outputDim`: The size of output dimension. +* `nbFeature`: Number of Dense layers to use internally. Integer. Default is 4. +* `wRegularizer`: An instance of [Regularizer](https://bigdl-project.github.io/master/#APIGuide/Regularizers/), (eg. L1 or L2 regularization), applied to the input weights matrices. Default is null. +* `bRegularizer`: An instance of [Regularizer](https://bigdl-project.github.io/master/#APIGuide/Regularizers/), applied to the bias. Default is null. +* `bias`: Whether to include a bias (i.e. make the layer affine rather than linear). Default is true. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.MaxoutDense +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(MaxoutDense(2, inputShape = Shape(3))) +val input = Tensor[Float](2, 3).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +-1.3550005 -1.1668127 -1.2882779 +0.83600295 -1.94683 1.323666 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +0.71675766 1.2987505 +0.9871184 0.6634239 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import MaxoutDense +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(MaxoutDense(2, input_shape=(3, ))) +input = np.random.random([2, 3]) +output = model.forward(input) +``` +Input is: +```python +[[0.15996114 0.8391686 0.81922903] + [0.52929427 0.35061754 0.88167693]] +``` +Output is +```python +[[0.4479192 0.4842512] + [0.16833156 0.521764 ]] +``` + +--- +### 7.7 Squeeze +Delete the singleton dimension(s). The batch dimension needs to be unchanged. + +For example, if input has size (2, 1, 3, 4, 1): + +Squeeze(1) will give output size (2, 3, 4, 1), + +Squeeze() will give output size (2, 3, 4) + +**Scala:** +```scala +Squeeze(dims = null, inputShape = null) +``` +**Python:** +```python +Squeeze(dim=None, input_shape=None, name=None) +``` + +**Parameters:** + +* `dims`: The dimension(s) to squeeze. 0-based index. Cannot squeeze the batch dimension. The selected dimensions must be singleton, i.e. having size 1. Default is null, and in this case all the non-batch singleton dimensions will be deleted. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Squeeze +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Squeeze[Float](1, inputShape = Shape(1, 1, 32))) +val input = Tensor[Float](1, 1, 1, 32).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +0.5521966 -1.2199087 0.365958 1.3845297 0.115254946 -0.20352958 2.4912808 0.987046 -0.2115477 3.0530396 -1.0043625 1.4688021 -1.2412603 -0.25383064 0.49164283 -0.40329486 0.26323202 0.7979045 0.025444122 0.47221214 1.3995043 0.48498031 -0.86961967 -0.058370713 -0.85965866 -1.2727696 0.45570874 0.73393697 0.2567143 1.4261572 -0.37773672 -0.7339463 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 1x1x1x32] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +0.5521966 -1.2199087 0.365958 1.3845297 0.115254946 -0.20352958 2.4912808 0.987046 -0.2115477 3.0530396 -1.0043625 1.4688021 -1.2412603 -0.25383064 0.49164283 -0.40329486 0.26323202 0.7979045 0.025444122 0.47221214 1.3995043 0.48498031 -0.86961967 -0.058370713 -0.85965866 -1.2727696 0.45570874 0.73393697 0.2567143 1.4261572 -0.37773672 -0.7339463 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 1x1x32] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Squeeze +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Squeeze(1, input_shape=(1, 1, 32))) +input = np.random.random([1, 1, 1, 32]) +output = model.forward(input) +``` +Input is: +```python +[[[[0.20585343, 0.47011701, 0.14553177, 0.93915599, 0.57234281, + 0.91631229, 0.32244256, 0.94243351, 0.86595631, 0.73916763, + 0.35898731, 0.65208275, 0.07935983, 0.89313423, 0.68601269, + 0.48919672, 0.28406399, 0.20962799, 0.88071757, 0.45501821, + 0.60931183, 0.46709718, 0.14218838, 0.42517758, 0.9149958 , + 0.0843243 , 0.27302307, 0.75281922, 0.3688931 , 0.86913729, + 0.89774196, 0.77838838]]]] +``` +Output is +```python +[[[0.20585343, 0.470117 , 0.14553176, 0.939156 , 0.5723428 , + 0.9163123 , 0.32244256, 0.94243354, 0.8659563 , 0.73916763, + 0.3589873 , 0.65208274, 0.07935983, 0.89313424, 0.6860127 , + 0.48919672, 0.284064 , 0.20962799, 0.8807176 , 0.45501822, + 0.6093118 , 0.46709716, 0.14218839, 0.42517757, 0.9149958 , + 0.0843243 , 0.27302307, 0.75281924, 0.36889312, 0.8691373 , + 0.897742 , 0.7783884 ]]] +``` + +--- +### 7.8 BinaryThreshold +Threshold the input. + +If an input element is smaller than the threshold value, it will be replaced by 0; otherwise, it will be replaced by 1. + +**Scala:** +```scala +BinaryThreshold(value = 1e-6, inputShape = null) +``` +**Python:** +```python +BinaryThreshold(value=1e-6, input_shape=None, name=None) +``` + +**Parameters:** + +* `value`: The threshold value to compare with. Default is 1e-6. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.BinaryThreshold +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(BinaryThreshold[Float](inputShape = Shape(2, 3, 4))) +val input = Tensor[Float](2, 2, 3, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +-1.1907398 -0.18995096 -2.0344417 -1.3789974 +-1.8801064 -0.74757665 -0.4339697 0.0058485097 +0.7012256 -0.6363152 2.0156987 -0.5512639 + +(1,2,.,.) = +-0.5251603 0.082127444 0.29550993 1.6357868 +-1.3828015 -0.11842779 0.3316966 -0.14360528 +0.21216457 -0.117370956 -0.12934707 -0.35854268 + +(2,1,.,.) = +-0.9071151 -2.8566089 -0.4796377 -0.915065 +-0.8439908 -0.25404388 -0.39926198 -0.15191565 +-1.0496653 -0.403675 -1.3591816 0.5311797 + +(2,2,.,.) = +0.53509855 -0.08892822 1.2196561 -0.62759316 +-0.47476718 -0.43337926 -0.10406987 1.4035174 +-1.7120812 1.1328355 0.9219375 1.3813454 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +0.0 0.0 0.0 0.0 +0.0 0.0 0.0 1.0 +1.0 0.0 1.0 0.0 + +(1,2,.,.) = +0.0 1.0 1.0 1.0 +0.0 0.0 1.0 0.0 +1.0 0.0 0.0 0.0 + +(2,1,.,.) = +0.0 0.0 0.0 0.0 +0.0 0.0 0.0 0.0 +0.0 0.0 0.0 1.0 + +(2,2,.,.) = +1.0 0.0 1.0 0.0 +0.0 0.0 0.0 1.0 +0.0 1.0 1.0 1.0 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import BinaryThreshold +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(BinaryThreshold(input_shape=(2, 3, 4))) +input = np.random.random([2, 2, 3, 4]) +output = model.forward(input) +``` +Input is: +```python +array([[[[0.30421481, 0.47800487, 0.54249411, 0.90109767], + [0.72650405, 0.53096719, 0.66346109, 0.0589329 ], + [0.12994731, 0.92181174, 0.43129874, 0.97306968]], + + [[0.3031087 , 0.20339982, 0.69034712, 0.40191 ], + [0.57517034, 0.30159448, 0.4801747 , 0.75175084], + [0.8599362 , 0.93523811, 0.34768628, 0.10840162]]], + + + [[[0.46102959, 0.33029002, 0.69340103, 0.32885719], + [0.84405147, 0.03421879, 0.68242578, 0.03560338], + [0.12244515, 0.3610654 , 0.01312785, 0.84485178]], + + [[0.73472287, 0.75707757, 0.77070527, 0.40863145], + [0.01137898, 0.82896826, 0.1498069 , 0.22309423], + [0.92737483, 0.36217222, 0.06679799, 0.33304362]]]]) +``` +Output is +```python +array([[[[1., 1., 1., 1.], + [1., 1., 1., 1.], + [1., 1., 1., 1.]], + + [[1., 1., 1., 1.], + [1., 1., 1., 1.], + [1., 1., 1., 1.]]], + + + [[[1., 1., 1., 1.], + [1., 1., 1., 1.], + [1., 1., 1., 1.]], + + [[1., 1., 1., 1.], + [1., 1., 1., 1.], + [1., 1., 1., 1.]]]], dtype=float32) +``` + +--- +### 7.9 Sqrt +Applies an element-wise square root operation to the input. + +**Scala:** +```scala +Sqrt(inputShape = null) +``` +**Python:** +```python +Sqrt(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Sqrt +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Sqrt[Float](inputShape = Shape(3))) +val input = Tensor[Float](2, 3).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +0.6950394 0.5234307 1.7375475 +0.25833175 0.02685826 -0.6046901 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +0.8336902 0.7234851 1.3181607 +0.50826347 0.16388491 NaN +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Sqrt +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Sqrt(input_shape=(3, ))) +input = np.random.random([2, 3]) +output = model.forward(input) +``` +Input is: +```python +[[0.2484558 , 0.65280218, 0.35286984], + [0.19616094, 0.30966802, 0.82148169]] +``` +Output is +```python +[[0.4984534 , 0.80796176, 0.5940285 ], + [0.4429006 , 0.55647826, 0.9063563 ]] +``` + +--- +### 7.10 Mul +Multiply a single scalar factor to the incoming data + +**Scala:** +```scala +Mul(inputShape = null) +``` +**Python:** +```python +Mul(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. +* `name`: String to set the name of the layer. If not specified, its name will by default to be a generated string. + + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Mul +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Mul[Float](inputShape = Shape(3, 4))) +val input = Tensor[Float](2, 3, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,.,.) = +-1.2316265 -2.008802 -1.3908259 -0.61135375 +-0.48992255 0.1786112 0.18872596 0.49621895 +-0.6931602 -0.919745 -0.09019699 -0.41218707 + +(2,.,.) = +-0.3135355 -0.4385771 -0.3317269 1.0412029 +-0.8859662 0.17758773 -0.73779273 -0.4445366 +0.3921595 1.6923207 0.014470488 0.4044164 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +-0.59036994 -0.9629025 -0.6666808 -0.29304734 +-0.2348403 0.0856158 0.09046422 0.23785843 +-0.33226058 -0.44087213 -0.043235175 -0.19757845 + +(2,.,.) = +-0.15029064 -0.21022828 -0.15901053 0.49909195 +-0.42468053 0.0851252 -0.3536548 -0.21308492 +0.18797839 0.81119984 0.006936308 0.19385365 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Mul +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Mul(input_shape=(3, 4))) +input = np.random.random([2, 3, 4]) +output = model.forward(input) +``` +Input is: +```python +array([[[ 0.22607292, 0.59806062, 0.19428923, 0.22928606], + [ 0.13804536, 0.1615547 , 0.52824658, 0.52794904], + [ 0.4049169 , 0.94109084, 0.58158453, 0.78368633]], + + [[ 0.86233305, 0.47995805, 0.80430949, 0.9931171 ], + [ 0.35179631, 0.33615276, 0.87756877, 0.73560288], + [ 0.29775703, 0.11404466, 0.77695536, 0.97580018]]]) +``` +Output is +```python +array([[[-0.22486402, -0.59486258, -0.1932503 , -0.22805998], + [-0.13730718, -0.1606908 , -0.52542186, -0.52512592], + [-0.40275168, -0.93605846, -0.57847458, -0.77949566]], + + [[-0.85772187, -0.47739154, -0.80000854, -0.9878065 ], + [-0.34991512, -0.33435524, -0.87287611, -0.73166931], + [-0.29616481, -0.11343482, -0.77280068, -0.97058219]]], dtype=float32) +``` + +--- +### 7.11 MulConstant +Multiply the input by a (non-learnable) scalar constant. + +**Scala:** +```scala +MulConstant(constant, inputShape = null) +``` +**Python:** +```python +MulConstant(constant, input_shape=None, name=None) +``` + +**Parameters:** + +* `constant`: The scalar constant to be multiplied. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.MulConstant +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(MulConstant[Float](2.2, inputShape = Shape(3, 4))) +val input = Tensor[Float](2, 3, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,.,.) = +-0.16873977 1.0812985 1.0942211 -0.67091423 +1.0086882 0.5915831 0.26184535 -1.361431 +1.5616825 -0.037591368 1.2794676 1.0692137 + +(2,.,.) = +0.29868057 -0.23266982 -0.7679556 -2.209848 +-0.13954644 -0.1368473 -0.54510623 1.8397199 +-0.58691734 -0.56410027 -1.5567777 0.050648995 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +-0.3712275 2.3788567 2.4072864 -1.4760114 +2.219114 1.3014828 0.57605976 -2.9951482 +3.4357016 -0.08270101 2.8148286 2.3522704 + +(2,.,.) = +0.6570973 -0.5118736 -1.6895024 -4.8616657 +-0.3070022 -0.30106407 -1.1992338 4.047384 +-1.2912182 -1.2410206 -3.424911 0.11142779 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import MulConstant +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(MulConstant(2.2, input_shape=(3, 4))) +input = np.random.random([2, 3, 4]) +output = model.forward(input) +``` +Input is: +```python +[[[0.39874191, 0.66634984, 0.23907766, 0.31587494], + [0.78842014, 0.93057835, 0.80739529, 0.71541279], + [0.2231424 , 0.3372844 , 0.94678072, 0.52928034]], + + [[0.60142458, 0.41221671, 0.00890549, 0.32069845], + [0.51122554, 0.76280426, 0.87579418, 0.17182832], + [0.54133184, 0.19814384, 0.92529327, 0.5616615 ]]] +``` +Output is +```python +[[[0.8772322 , 1.4659697 , 0.5259709 , 0.6949249 ], + [1.7345244 , 2.0472724 , 1.7762697 , 1.5739082 ], + [0.4909133 , 0.7420257 , 2.0829177 , 1.1644168 ]], + + [[1.3231341 , 0.9068768 , 0.01959208, 0.7055366 ], + [1.1246961 , 1.6781695 , 1.9267472 , 0.37802234], + [1.19093 , 0.43591645, 2.0356452 , 1.2356553 ]]] +``` + +--- +### 7.12 Scale +Scale is the combination of CMul and CAdd. + +Computes the element-wise product of the input and weight, with the shape of the weight "expand" to match the shape of the input. + +Similarly, perform an expanded bias and perform an element-wise add. + +**Scala:** +```scala +Scale(size, inputShape = null) +``` +**Python:** +```python +Scale(size, input_shape=None, name=None) +``` + +**Parameters:** + +* `size`: Size of the weight and bias. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Scale +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +var array = Array(1, 2) +model.add(Scale[Float](array, inputShape = Shape(3))) +val input = Tensor[Float](2, 3).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +-0.006399727 -0.06412822 -0.2334789 +0.31029955 1.6557469 1.9614618 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +0.09936619 0.57585865 0.20324506 +0.38537437 -0.8598822 -1.0186496 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Scale +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Scale((2, 1), input_shape=(3, ))) +input = np.random.random([2, 3]) +output = model.forward(input) +``` +Input is: +```python +[[0.7242994 , 0.77888884, 0.71470432], + [0.03058471, 0.00602764, 0.57513629]] +``` +Output is +```python +[[1.0946966 , 1.1255064 , 1.0892813 ], + [0.58151895, 0.5909191 , 0.37307182]] +``` + +--- +### 7.13 Log +Applies a log transformation to the input. + +**Scala:** +```scala +Log(inputShape = null) +``` +**Python:** +```python +Log(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Log +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Log[Float](inputShape = Shape(2, 4, 4))) +val input = Tensor[Float](1, 2, 4, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +0.38405678 -0.5502389 -0.383079 -0.988537 +-0.6294056 -0.7838047 0.8747865 -1.0659786 +-2.2445498 -0.5488076 -0.42898977 0.6916364 +1.6542299 -0.9966279 -0.38244298 1.6954672 + +(1,2,.,.) = +0.43478605 -0.6678534 1.9530942 -0.5209587 +0.12899925 0.20572199 2.0359943 0.55223215 +0.65247816 0.8792108 -0.38860792 0.48663738 +-1.0084358 0.31141177 0.69208467 0.48385203 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 1x2x4x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +-0.95696485 NaN NaN NaN +NaN NaN -0.13377543 NaN +NaN NaN NaN -0.36869493 +0.5033356 NaN NaN 0.5279584 + +(1,2,.,.) = +-0.83290124 NaN 0.6694149 NaN +-2.0479486 -1.5812296 0.7109843 -0.5937868 +-0.4269776 -0.12873057 NaN -0.720236 +NaN -1.1666392 -0.36804697 -0.72597617 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 1x2x4x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Log +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Log(input_shape=(2, 4, 4))) +input = np.random.random([1, 2, 4, 4]) +output = model.forward(input) +``` +Input is: +```python +[[[[0.90127539, 0.9861594 , 0.04722941, 0.63719453], + [0.46529477, 0.81511804, 0.24435558, 0.45003562], + [0.15170845, 0.35157662, 0.0925214 , 0.63852947], + [0.27817508, 0.42572846, 0.44363004, 0.03536394]], + + [[0.65027784, 0.00429838, 0.07434429, 0.18653305], + [0.19659183, 0.66647529, 0.77821197, 0.65894478], + [0.28212032, 0.52307663, 0.09589939, 0.71547588], + [0.84344158, 0.25291738, 0.52145649, 0.82982377]]]] +``` +Output is +```python +[[[[-0.10394441, -0.01393729, -3.0527387 , -0.45068032], + [-0.76508415, -0.20442237, -1.4091308 , -0.79842854], + [-1.8857948 , -1.0453277 , -2.3803153 , -0.44858742], + [-1.2795045 , -0.85395354, -0.8127643 , -3.3420627 ]], + + [[-0.43035555, -5.4495163 , -2.5990484 , -1.6791469 ], + [-1.6266255 , -0.4057522 , -0.25075635, -0.41711554], + [-1.2654216 , -0.64802724, -2.3444557 , -0.33480743], + [-0.1702646 , -1.3746924 , -0.6511295 , -0.1865419 ]]]] +``` + +--- +### 7.14 Identity +Identity just return the input to output. + +It's useful in same parallel container to get an origin input. + +**Scala:** +```scala +Identity(inputShape = null) +``` +**Python:** +```python +Identity(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.layers.Identity +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Identity[Float](inputShape = Shape(4, 4))) +val input = Tensor[Float](3, 4, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,.,.) = +1.9601166 -0.86010313 0.0023731247 -0.81219757 +1.1469674 -1.5375912 -1.5348053 -0.34829113 +-1.236773 -0.7183283 -0.89256984 0.8605067 +0.7937664 0.52992857 -1.6157389 0.36134166 + +(2,.,.) = +-0.44434744 -0.23848957 -0.01632014 -0.58109635 +-0.19856784 -2.3421717 -0.5868049 -0.76775354 +0.80254126 1.78778 -1.1835604 1.4489703 +0.8731402 0.8906672 0.2800079 -0.6715317 + +(3,.,.) = +1.4093032 2.358169 -1.4620789 1.1904576 +-0.18263042 -0.31869793 2.01061 1.2159953 +-0.5801479 1.2949371 -0.7510707 -1.0707517 +0.30815956 -1.161963 -0.26964024 -0.4759499 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 3x4x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +1.9601166 -0.86010313 0.0023731247 -0.81219757 +1.1469674 -1.5375912 -1.5348053 -0.34829113 +-1.236773 -0.7183283 -0.89256984 0.8605067 +0.7937664 0.52992857 -1.6157389 0.36134166 + +(2,.,.) = +-0.44434744 -0.23848957 -0.01632014 -0.58109635 +-0.19856784 -2.3421717 -0.5868049 -0.76775354 +0.80254126 1.78778 -1.1835604 1.4489703 +0.8731402 0.8906672 0.2800079 -0.6715317 + +(3,.,.) = +1.4093032 2.358169 -1.4620789 1.1904576 +-0.18263042 -0.31869793 2.01061 1.2159953 +-0.5801479 1.2949371 -0.7510707 -1.0707517 +0.30815956 -1.161963 -0.26964024 -0.4759499 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 3x4x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Identity +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Identity(input_shape=(4, 4))) +input = np.random.random([3, 4, 4]) +output = model.forward(input) +``` +Input is: +```python +[[[0.36751123, 0.92287101, 0.73894405, 0.33699379], + [0.69405782, 0.9653215 , 0.2617223 , 0.68205229], + [0.71455325, 0.99419333, 0.90886495, 0.10232991], + [0.1644055 , 0.30013138, 0.98921154, 0.26803146]], + + [[0.35898357, 0.72067882, 0.13236563, 0.71935521], + [0.30865626, 0.71098844, 0.86718946, 0.12531168], + [0.84916882, 0.84221518, 0.52186664, 0.87239729], + [0.50637899, 0.10890469, 0.86832705, 0.93581179]], + + [[0.19640105, 0.09341008, 0.12043328, 0.09261859], + [0.66019486, 0.07251262, 0.80929761, 0.39094486], + [0.63027391, 0.39537796, 0.55578905, 0.53933265], + [0.13885559, 0.56695373, 0.17036027, 0.4577097 ]]] +``` +Output is +```python +[[[0.36751124, 0.922871 , 0.73894405, 0.33699378], + [0.6940578 , 0.9653215 , 0.2617223 , 0.6820523 ], + [0.71455324, 0.9941933 , 0.908865 , 0.10232991], + [0.1644055 , 0.30013138, 0.98921156, 0.26803148]], + + [[0.35898358, 0.7206788 , 0.13236563, 0.7193552 ], + [0.30865628, 0.71098846, 0.86718947, 0.12531169], + [0.84916884, 0.8422152 , 0.5218666 , 0.8723973 ], + [0.506379 , 0.10890469, 0.868327 , 0.9358118 ]], + + [[0.19640104, 0.09341008, 0.12043328, 0.09261858], + [0.6601949 , 0.07251262, 0.8092976 , 0.39094487], + [0.63027394, 0.39537796, 0.55578905, 0.5393326 ], + [0.13885559, 0.5669537 , 0.17036027, 0.4577097 ]]] +``` + +--- +### 7.15 Select +Select an index of the input in the given dim and return the subset part. + +The batch dimension needs to be unchanged. + +For example, if input is: + +[[1, 2, 3], + [4, 5, 6]] + +Select(1, 1) will give output [2 5] + +Select(1, -1) will give output [3 6] + +**Scala:** +```scala +Select(dim, index, inputShape = null) +``` +**Python:** +```python +Select(dim, index, input_shape=None, name=None) +``` + +**Parameters:** + +* `dim`: The dimension to select. 0-based index. Cannot select the batch dimension. -1 means the last dimension of the input. +* `index`: The index of the dimension to be selected. 0-based index. -1 means the last dimension of the input. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Select +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Select[Float](1, 2, inputShape = Shape(3, 1, 3))) +val input = Tensor[Float](1, 3, 1, 3).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +-0.67646945 -0.5485965 -0.11103154 +(1,2,.,.) = +-0.13488655 0.43843046 -0.04482145 +(1,3,.,.) = +-0.18094881 0.19431554 -1.7624844 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 1x3x1x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +-0.18094881 0.19431554 -1.7624844 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 1x1x3] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import Select +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(Select(1, 2, input_shape=(3, 1, 3))) +input = np.random.random([1, 3, 1, 3]) +output = model.forward(input) +``` +Input is: +```python +array([[[[0.53306099, 0.95147881, 0.15222129]], + [[0.89604861, 0.90160974, 0.5230576 ]], + [[0.70779386, 0.14438568, 0.37601195]]]]) +``` +Output is: +```python +array([[[0.7077939 , 0.14438568, 0.37601194]]], dtype=float32) +``` + +--- +### 7.16 Dense +A densely-connected NN layer. + +The most common input is 2D. + +**Scala:** +```scala +Dense(outputDim, init = "glorot_uniform", activation = null, wRegularizer = null, bRegularizer = null, bias = true, inputShape = null) +``` +**Python:** +```python +Dense(output_dim, init="glorot_uniform", activation=None, W_regularizer=None, b_regularizer=None, bias=True, input_dim=None, input_shape=None, name=None) +``` + +**Parameters:** + +* `outputDim`: The size of the output dimension. +* `init`: Initialization method for the weights of the layer. Default is Xavier.You can also pass in corresponding string representations such as 'glorot_uniform' or 'normal', etc. for simple init methods in the factory method. +* `activation`: Activation function to use. Default is null.You can also pass in corresponding string representations such as 'relu'or 'sigmoid', etc. for simple activations in the factory method. +* `wRegularizer`: An instance of [Regularizer](https://bigdl-project.github.io/master/#APIGuide/Regularizers/), applied to the input weights matrices. Default is null. +* `bRegularizer`: An instance of [Regularizer](https://bigdl-project.github.io/master/#APIGuide/Regularizers/), applied to the bias. Default is null. +* `bias`: Whether to include a bias (i.e. make the layer affine rather than linear). Default is true. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Dense +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Dense[Float](5, activation = "relu", inputShape = Shape(4))) +val input = Tensor[Float](2, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +1.4289935 -1.7659454 -0.08306135 -1.0153456 +1.0191492 0.37392816 1.3076705 -0.19495767 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +0.5421522 0.49008092 0.0 0.0 0.0 +0.07940009 0.0 0.12953377 0.0 0.0 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x5] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import Dense +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(Dense(5, activation="relu", input_shape=(4, ))) +input = np.random.random([2, 4]) +output = model.forward(input) +``` +Input is: +```python +array([[0.64593485, 0.67393322, 0.72505368, 0.04654095], + [0.19430753, 0.47800889, 0.00743648, 0.6412403 ]]) +``` +Output is +```python +array([[0. , 0. , 1.2698183 , 0. , 0.10656227], + [0. , 0. , 0.6236721 , 0.00299606, 0.29664695]], + dtype=float32) +``` + +--- +### 7.17 Negative +Computes the negative value of each element of the input. + +**Scala:** +```scala +Negative(inputShape = null) +``` +**Python:** +```python +Negative(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Negative +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Negative[Float](inputShape = Shape(2, 3))) +val input = Tensor[Float](2, 2, 3).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,.,.) = +1.031705 -0.5723963 1.998631 +-0.32908052 2.4069138 -2.4111257 +(2,.,.) = +0.5355049 -1.4404331 -0.38116863 +-0.45641592 -1.1485358 0.94766915 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +-1.031705 0.5723963 -1.998631 +0.32908052 -2.4069138 2.4111257 +(2,.,.) = +-0.5355049 1.4404331 0.38116863 +0.45641592 1.1485358 -0.94766915 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import Negative +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(Negative(input_shape=(2, 3))) +input = np.random.random([2, 2, 3]) +output = model.forward(input) +``` +Input is: +```python +array([[[0.39261261, 0.03164615, 0.32179116], + [0.11969367, 0.61610712, 0.42573733]], + [[0.36794656, 0.90912174, 0.540356 ], + [0.42667627, 0.04154093, 0.84692964]]]) +``` +Output is +```python +array([[[-0.3926126 , -0.03164615, -0.32179114], + [-0.11969367, -0.6161071 , -0.42573732]], + [[-0.36794657, -0.90912175, -0.540356 ], + [-0.42667627, -0.04154094, -0.84692967]]], dtype=float32) +``` + +--- +### 7.18 CAdd +This layer has a bias with given size. + +The bias will be added element-wise to the input. + +If the element number of the bias matches the input, a simple element-wise addition will be done. + +Or the bias will be expanded to the same size of the input. + +The expand means repeat on unmatched singleton dimension (if some unmatched dimension isn't a singleton dimension, an error will be raised). + +**Scala:** +```scala +CAdd(size, bRegularizer = null, inputShape = null) +``` +**Python:** +```python +CAdd(size, b_regularizer=None, input_shape=None, name=None) +``` + +**Parameters:** + +* `size`: the size of the bias +* `bRegularizer`: An instance of [Regularizer](https://bigdl-project.github.io/master/#APIGuide/Regularizers/), applied to the bias. Default is null. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.CAdd +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(CAdd[Float](Array(2, 3), inputShape = Shape(2, 3))) +val input = Tensor[Float](2, 2, 3).rand() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,.,.) = +0.2183351 0.32434112 0.89350265 +0.3348259 0.78677046 0.24054797 +(2,.,.) = +0.9945844 0.72363794 0.7737936 +0.05522544 0.3517818 0.7417069 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +0.1358028 0.6956667 1.0837181 +0.6767027 0.7955346 0.5063505 +(2,.,.) = +0.9120521 1.0949634 0.96400905 +0.3971022 0.36054593 1.0075095 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import CAdd +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(CAdd([2, 1], input_shape=(2, 3))) +input = np.random.rand(2, 2, 3) +output = model.forward(input) +``` +Input is: +```python +array([[[0.4122004 , 0.73289359, 0.11500016], + [0.26974491, 0.32166632, 0.91408442]], + [[0.66824327, 0.80271314, 0.75981145], + [0.39271431, 0.07312566, 0.4966805 ]]]) +``` +Output is +```python +array([[[ 0.06560206, 0.38629526, -0.23159817], + [ 0.44287407, 0.4947955 , 1.0872136 ]], + [[ 0.32164496, 0.45611483, 0.41321313], + [ 0.56584346, 0.24625483, 0.6698097 ]]], dtype=float32) +``` + +--- +### 7.19 RepeatVector +Repeats the input n times. + +The input of this layer should be 2D, i.e. (num_samples, features). +The output of thi layer should be 3D, i.e. (num_samples, n, features). + +**Scala:** +```scala +RepeatVector(n, inputShape = null) +``` +**Python:** +```python +RepeatVector(n, input_shape=None, name=None) +``` + +**Parameters:** + +* `n`: Repetition factor. Integer. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. +* `name`: String to set the name of the layer. If not specified, its name will by default to be a generated string. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.RepeatVector +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(RepeatVector[Float](4, inputShape = Shape(3))) +val input = Tensor[Float](2, 3).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +-0.31839952 -0.3495366 0.542486 +-0.54981124 -0.8428188 0.8225184 +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +-0.31839952 -0.3495366 0.542486 +-0.31839952 -0.3495366 0.542486 +-0.31839952 -0.3495366 0.542486 +-0.31839952 -0.3495366 0.542486 + +(2,.,.) = +-0.54981124 -0.8428188 0.8225184 +-0.54981124 -0.8428188 0.8225184 +-0.54981124 -0.8428188 0.8225184 +-0.54981124 -0.8428188 0.8225184 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x4x3] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.layers import RepeatVector +from zoo.pipeline.api.keras.models import Sequential + +model = Sequential() +model.add(RepeatVector(4, input_shape=(3, ))) +input = np.random.random([2, 3]) +output = model.forward(input) +``` +Input is: +```python +array([[ 0.90715922, 0.54594769, 0.53952404], + [ 0.08989831, 0.07265549, 0.45830114]]) +``` +Output is +```python +array([[[ 0.90715921, 0.54594767, 0.53952402], + [ 0.90715921, 0.54594767, 0.53952402], + [ 0.90715921, 0.54594767, 0.53952402], + [ 0.90715921, 0.54594767, 0.53952402]], + + [[ 0.08989831, 0.07265549, 0.45830116], + [ 0.08989831, 0.07265549, 0.45830116], + [ 0.08989831, 0.07265549, 0.45830116], + [ 0.08989831, 0.07265549, 0.45830116]]], dtype=float32) +``` +--- +### 7.20 GaussianSampler +Takes {mean, log_variance} as input and samples from the Gaussian distribution. + +**Scala:** +```scala +GaussianSampler(inputShape = null) +``` +**Python:** +```python +GaussianSampler(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`MultiShape`](../keras-api-scala/#shape) object that consists of two identical Single Shape. For Python API, it should be a list of two identical shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.GaussianSampler +import com.intel.analytics.bigdl.utils.{Shape, MultiShape, T} +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +val shape1 = Shape(2, 3) +val shape2 = Shape(2, 3) +model.add(GaussianSampler[Float](inputShape = MultiShape(List(shape1,shape2)))) +val input1 = Tensor[Float](2, 2, 3).rand(0, 1) +val input2 = Tensor[Float](2, 2, 3).rand(0, 1) +val input = T(1 -> input1, 2 -> input2) +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.utils.Table = + { + 2: (1,.,.) = + 0.9996127 0.8964211 0.7424038 + 0.40628982 0.37035564 0.20108517 + + (2,.,.) = + 0.6974727 0.60202897 0.1535999 + 0.012422224 0.5993025 0.96206 + + [com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] + 1: (1,.,.) = + 0.21060324 0.576583 0.21633287 + 0.1484059 0.2730577 0.25317845 + + (2,.,.) = + 0.58513683 0.58095694 0.18811373 + 0.7029449 0.41235915 0.44636542 + + [com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] + } +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +1.5258198 1.9536011 -1.8591263 +-1.0618867 -0.751225 0.35412917 + +(2,.,.) = +1.3334517 -0.60312974 0.7324476 +0.09502721 0.8094909 0.44807082 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.models import Sequential +from zoo.pipeline.api.keras.layers import GaussianSampler + +model = Sequential() +model.add(GaussianSampler(input_shape=[(3,),(3,)])) +input1 = np.random.random([2, 3]) +input2 = np.random.random([2, 3]) +input = [input1, input2] +output = model.forward(input) +``` +Input is: +```python +[[[0.79941342, 0.87462822, 0.9516901 ], + [0.20111287, 0.54634077, 0.83614511]], + + [[0.31886989, 0.22829382, 0.84355419], + [0.51186641, 0.28043938, 0.29440057]]] +``` +Output is +```python +[[ 0.71405387 2.2944303 -0.41778684] + [ 0.84234 2.3337283 -0.18952972]] +``` + +--- +### 7.21 Exp +Applies element-wise exp to the input. + +When you use this layer as the first layer of a model, you need to provide the argument inputShape (a Single Shape, does not include the batch dimension). + +**Scala:** +```scala +Exp(inputShape = null) +``` +**Python:** +```python +Exp(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`MultiShape`](../keras-api-scala/#shape) object that consists of two identical Single Shape. For Python API, it should be a list of two identical shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Exp +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Exp[Float](inputShape = Shape(2, 3, 4))) +val input = Tensor[Float](2, 2, 3, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +-1.5841372 -0.13795324 -2.144475 0.09272669 +1.055668 -1.2310301 1.2145554 -0.6073714 +0.9296467 0.2923885 1.3364213 0.1652137 + +(1,2,.,.) = +0.2099718 -0.3856573 -0.92586 -0.5317779 +0.6618383 -0.9677452 -1.5014665 -0.35464883 +2.045924 -0.317644 -1.812726 0.95438373 + +(2,1,.,.) = +-0.4536791 -0.34785584 1.6424289 -0.07981159 +-0.8022624 -0.4211059 0.3461831 1.9598864 +-0.84695745 -0.6115283 0.7729755 2.3077402 + +(2,2,.,.) = +-0.08438411 -0.908458 0.6688936 -0.7292123 +-0.26337254 0.55425745 -0.14925817 -0.010179609 +-0.62562865 -1.0517743 -0.23839666 -1.144982 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +0.20512469 0.8711394 0.11712951 1.0971619 +2.8738942 0.29199165 3.3687959 0.544781 +2.533614 1.3396233 3.8054006 1.1796452 + +(1,2,.,.) = +1.2336433 0.6800035 0.39619055 0.5875594 +1.9383523 0.37993878 0.22280318 0.7014197 +7.7363033 0.7278619 0.16320862 2.5970695 + +(2,1,.,.) = +0.63528657 0.70620066 5.167706 0.92329025 +0.44831353 0.6563206 1.4136615 7.0985208 +0.42871734 0.5425211 2.1662023 10.051684 + +(2,2,.,.) = +0.9190782 0.4031454 1.9520763 0.48228875 +0.76845556 1.740648 0.8613467 0.98987204 +0.53492504 0.34931743 0.7878901 0.31822965 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.models import Sequential +from zoo.pipeline.api.keras.layers import Exp + +model = Sequential() +model.add(Exp(input_shape=(2, 3, 4))) +input = np.random.random([2, 2, 3, 4]) +output = model.forward(input) +``` +Input is: +```python +[[[[0.93104587 0.94000338 0.84870765 0.98645553] + [0.83708846 0.33375541 0.50119834 0.24879265] + [0.51966475 0.84514791 0.15496452 0.61538968]] + + [[0.57250337 0.42520832 0.94850757 0.54317573] + [0.64228691 0.9904079 0.01008592 0.51365217] + [0.78640595 0.7717037 0.51277595 0.24245034]]] + + + [[[0.82184752 0.92537331 0.20632728 0.47539445] + [0.44604637 0.1507692 0.5437313 0.2074501 ] + [0.93661363 0.93962609 0.29230559 0.74850958]] + + [[0.11659768 0.76177132 0.33194573 0.20695088] + [0.49636212 0.85987328 0.49767861 0.96774006] + [0.67669121 0.15542122 0.69981032 0.3349874 ]]]] +``` +Output is +```python +[[[[2.5371614 2.5599902 2.3366253 2.6817122] + [2.3096325 1.3962016 1.6506982 1.2824761] + [1.6814638 2.3283222 1.1676165 1.8503776]] + + [[1.7726992 1.5299091 2.5818534 1.721465 ] + [1.9008229 2.6923325 1.010137 1.6713842] + [2.1954916 2.163449 1.6699204 1.2743679]]] + + + [[[2.2746985 2.52281 1.2291554 1.6086487] + [1.5621239 1.1627283 1.7224218 1.2305363] + [2.551327 2.5590243 1.3395122 2.1138473]] + + [[1.1236672 2.1420672 1.3936772 1.2299222] + [1.6427343 2.3628614 1.6448984 2.6319895] + [1.9673574 1.16815 2.0133708 1.3979228]]]] +``` + +--- +### 7.22 Square +Applies an element-wise square operation to the input. + +When you use this layer as the first layer of a model, you need to provide the argument inputShape (a Single Shape, does not include the batch dimension). + +**Scala:** +```scala +Square(inputShape = null) +``` +**Python:** +```python +Square(input_shape=None, name=None) +``` + +**Parameters:** + +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`MultiShape`](../keras-api-scala/#shape) object that consists of two identical Single Shape. For Python API, it should be a list of two identical shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Square +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Square[Float](inputShape = Shape(2, 3, 4))) +val input = Tensor[Float](2, 2, 3, 4).randn() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +-0.108013034 1.8879265 1.2232096 -1.5076439 +1.4895755 -0.37966672 -0.34892964 0.15224025 +-0.9296686 -1.1523775 0.14153497 -0.26954007 + +(1,2,.,.) = +-1.0875931 2.190617 -0.6903083 1.0039362 +-0.1275677 -1.1096588 0.37359753 -0.17367937 +0.23349741 0.14639114 -0.2330162 0.5343827 + +(2,1,.,.) = +0.3222191 0.21463287 -1.0157064 -0.22627507 +1.1714277 0.43371263 1.069315 0.5122436 +0.1958086 -1.4601041 2.5394423 -0.470833 + +(2,2,.,.) = +-0.38708544 -0.951611 -0.37234613 0.26813275 +1.9477026 0.32779223 -1.2308712 -2.2376378 +0.19652915 0.3304719 -1.7674786 -0.86961496 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +0.011666816 3.5642662 1.4962418 2.2729902 +2.218835 0.14414681 0.1217519 0.023177093 +0.86428374 1.3279738 0.020032147 0.07265185 + +(1,2,.,.) = +1.1828587 4.7988033 0.47652552 1.0078878 +0.016273517 1.2313428 0.13957511 0.030164523 +0.05452104 0.021430366 0.054296546 0.28556487 + +(2,1,.,.) = +0.10382515 0.046067268 1.0316595 0.05120041 +1.3722429 0.18810664 1.1434345 0.26239353 +0.038341008 2.131904 6.448767 0.22168371 + +(2,2,.,.) = +0.14983514 0.9055635 0.13864164 0.07189517 +3.7935455 0.10744774 1.5150439 5.007023 +0.038623706 0.109211676 3.1239805 0.7562302 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` + +**Python example:** +```python +import numpy as np +from zoo.pipeline.api.keras.models import Sequential +from zoo.pipeline.api.keras.layers import Square + +model = Sequential() +model.add(Square(input_shape=(2, 3, 4))) +input = np.random.random([2, 2, 3, 4]) +output = model.forward(input) +``` +Input is: +```python +[[[[0.8708819 0.2698243 0.55854849 0.71699472] + [0.66647234 0.72310216 0.8082119 0.66566951] + [0.6714764 0.61394108 0.35063125 0.60473593]] + + [[0.37993365 0.64222557 0.96762005 0.18931697] + [0.00529722 0.99133455 0.09786619 0.28988077] + [0.60052911 0.83712995 0.59847519 0.54361243]]] + + + [[[0.32832672 0.83316023 0.41272485 0.01963383] + [0.89593955 0.73433713 0.67529323 0.69711912] + [0.81251711 0.56755577 0.31958151 0.09795917]] + + [[0.46465895 0.22818875 0.31505317 0.41912166] + [0.87865447 0.3799063 0.091204 0.68144165] + [0.88274284 0.70479132 0.32074672 0.71771481]]]] +``` +Output is +```python +[[[[7.5843531e-01 7.2805151e-02 3.1197643e-01 5.1408142e-01] + [4.4418535e-01 5.2287674e-01 6.5320653e-01 4.4311589e-01] + [4.5088059e-01 3.7692365e-01 1.2294226e-01 3.6570552e-01]] + + [[1.4434958e-01 4.1245368e-01 9.3628860e-01 3.5840917e-02] + [2.8060573e-05 9.8274422e-01 9.5777912e-03 8.4030852e-02] + [3.6063525e-01 7.0078653e-01 3.5817260e-01 2.9551446e-01]]] + + + [[[1.0779844e-01 6.9415593e-01 1.7034180e-01 3.8548734e-04] + [8.0270761e-01 5.3925103e-01 4.5602092e-01 4.8597506e-01] + [6.6018403e-01 3.2211956e-01 1.0213234e-01 9.5959986e-03]] + + [[2.1590793e-01 5.2070107e-02 9.9258497e-02 1.7566296e-01] + [7.7203369e-01 1.4432879e-01 8.3181690e-03 4.6436274e-01] + [7.7923489e-01 4.9673077e-01 1.0287846e-01 5.1511449e-01]]]] +``` + +--- +### 7.23 Power +Applies an element-wise power operation with scale and shift to the input. + +f(x) = (shift + scale * x)^power^ + +```scala +Power(power, scale = 1, shift = 0, inputShape = null) +``` +**Python:** +```python +Power(power, scale=1, shift=0, input_shape=None, name=None) +``` + +**Parameters:** + +* `power`: The exponent +* `scale`: The scale parameter. Default is 1. +* `shift`: The shift parameter. Default is 0. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Power +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Power[Float](2, inputShape = Shape(2, 3))) +val input = Tensor[Float](2, 2, 3).rand() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,.,.) = +0.24691099 0.7588585 0.5785183 +0.10356348 0.2252714 0.3129436 + +(2,.,.) = +0.6277785 0.75136995 0.044648796 +0.46396527 0.9793776 0.92727077 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +0.060965035 0.5758662 0.3346834 +0.010725395 0.050747205 0.0979337 + +(2,.,.) = +0.39410582 0.5645568 0.001993515 +0.21526377 0.95918053 0.8598311 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import Power +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(Power(2, input_shape=(2, 3))) +input = np.random.rand(2, 2, 3) +output = model.forward(input) +``` +Input is: +```python +array([[[0.5300817 , 0.18128031, 0.19534253], + [0.28380639, 0.78365165, 0.6893 ]], + + [[0.05574091, 0.400077 , 0.77051193], + [0.033559 , 0.61051396, 0.13970227]]]) +``` +Output is +```python +array([[[0.2809866 , 0.03286255, 0.03815871], + [0.08054607, 0.61410993, 0.4751345 ]], + + [[0.00310705, 0.16006161, 0.5936886 ], + [0.00112621, 0.37272733, 0.01951673]]], dtype=float32) +``` + +--- +### 7.24 AddConstant +Add a (non-learnable) scalar constant to the input. + +```scala +AddConstant(constant, inputShape = null) +``` +**Python:** +```python +AddConstant(constant, input_shape=None, name=None) +``` + +**Parameters:** + +* `constant`: The scalar constant to be added. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.AddConstant +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(AddConstant[Float](1, inputShape = Shape(2, 3))) +val input = Tensor[Float](2, 2, 3).rand() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,.,.) = +0.5658301 0.3508225 0.4012322 +0.1941942 0.18934165 0.6909284 + +(2,.,.) = +0.5985211 0.5485885 0.778548 +0.16745302 0.10363362 0.92185616 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,.,.) = +1.5658301 1.3508224 1.4012322 +1.1941942 1.1893417 1.6909285 + +(2,.,.) = +1.5985211 1.5485885 1.778548 +1.167453 1.1036336 1.9218562 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import AddConstant +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(AddConstant(1, input_shape=(2, 3))) +input = np.random.rand(2, 2, 3) +output = model.forward(input) +``` +Input is: +```python +array([[[0.71730919, 0.07752598, 0.10448237], + [0.52319608, 0.38668494, 0.19588814]], + + [[0.15496092, 0.48405899, 0.41441248], + [0.13792111, 0.7523953 , 0.55991187]]]) +``` +Output is +```python +array([[[1.7173092, 1.077526 , 1.1044824], + [1.5231961, 1.3866849, 1.1958882]], + + [[1.1549609, 1.484059 , 1.4144125], + [1.1379211, 1.7523953, 1.5599118]]], dtype=float32) +``` + +--- +### 7.25 Narrow +Narrow the input with the number of dimensions not being reduced. + +The batch dimension needs to be unchanged. + +For example, if input is: + +[[1 2 3], + [4 5 6]] + +Narrow(1, 1, 2) will give output + +[[2 3], + [5 6]] + +Narrow(1, 2, -1) will give output + +[3, + 6] + +```scala +Narrow(dim, offset, length = 1, inputShape = null) +``` +**Python:** +```python +Narrow(dim, offset, length=1, input_shape=None, name=None) +``` + +**Parameters:** + +* `dim`: The dimension to narrow. 0-based index. Cannot narrow the batch dimension. + -1 means the last dimension of the input. +* `offset`: Non-negative integer. The start index on the given dimension. 0-based index. +* `length`: The length to narrow. Default is 1. + Can use a negative length such as -1 in the case where input size is unknown. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Narrow +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Narrow[Float](1, 1, inputShape = Shape(2, 3, 4))) +val input = Tensor[Float](2, 2, 3, 4).rand() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +0.13770224 0.63719153 0.7776689 0.46612367 +0.9026256 0.11982094 0.8282868 0.05095969 +0.889799 0.6386537 0.35438475 0.298043 + +(1,2,.,.) = +0.5029727 0.20103335 0.20150806 0.06437344 +0.2255908 0.5388977 0.59737855 0.5210477 +0.4055072 0.11848069 0.7118382 0.9796308 + +(2,1,.,.) = +0.63957494 0.1921936 0.7749439 0.19744827 +0.91683346 0.16140814 0.9753973 0.8161283 +0.8481694 0.8802563 0.1233245 0.5732614 + +(2,2,.,.) = +0.275001 0.35905758 0.15939762 0.09233412 +0.16610192 0.032060683 0.37298614 0.48936844 +0.031097537 0.82767457 0.10246291 0.9951448 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x3x4] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +0.5029727 0.20103335 0.20150806 0.06437344 +0.2255908 0.5388977 0.59737855 0.5210477 +0.4055072 0.11848069 0.7118382 0.9796308 + +(2,1,.,.) = +0.275001 0.35905758 0.15939762 0.09233412 +0.16610192 0.032060683 0.37298614 0.48936844 +0.031097537 0.82767457 0.10246291 0.9951448 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x1x3x4] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import Narrow +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(Narrow(1, 1, input_shape=(2, 3, 4))) +input = np.random.rand(2, 2, 3, 4) +output = model.forward(input) +``` +Input is: +```python +array([[[[0.74305305, 0.33925069, 0.31289333, 0.43703923], + [0.28316902, 0.3004414 , 0.40298034, 0.37476436], + [0.18825825, 0.38979411, 0.32963262, 0.37783457]], + + [[0.14824117, 0.43532988, 0.57077087, 0.91535978], + [0.46375725, 0.90511296, 0.18859044, 0.92820822], + [0.13675737, 0.48270908, 0.04260755, 0.97255687]]], + [[[0.4836805 , 0.45262542, 0.7233705 , 0.63486529], + [0.07472717, 0.5715716 , 0.57029986, 0.26475783], + [0.56757079, 0.27602746, 0.45799196, 0.74420842]], + + [[0.89048761, 0.08280716, 0.99030481, 0.35956427], + [0.70802689, 0.14425212, 0.08320864, 0.82271697], + [0.6915224 , 0.70490768, 0.41218963, 0.37024863]]]]) +``` +Output is +```python +array([[[[0.14824118, 0.43532988, 0.57077086, 0.9153598 ], + [0.46375725, 0.905113 , 0.18859044, 0.92820823], + [0.13675737, 0.48270908, 0.04260755, 0.9725569 ]]], + + [[[0.8904876 , 0.08280716, 0.9903048 , 0.35956427], + [0.7080269 , 0.14425212, 0.08320864, 0.82271695], + [0.6915224 , 0.70490766, 0.41218963, 0.37024862]]]], + dtype=float32) +``` + +--- +### 7.26 Permute +Permutes the dimensions of the input according to a given pattern. + +Useful for connecting RNNs and convnets together. + +```scala +Permute(dims, inputShape = null) +``` +**Python:** +```python +Permute(dims, input_shape=None, name=None) +``` + +**Parameters:** + +* `dims`: Int array. Permutation pattern, does not include the batch dimension. + Indexing starts at 1. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.Permute +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential[Float]() +model.add(Permute[Float](Array(2, 1, 3), inputShape = Shape(2, 2, 3))) +val input = Tensor[Float](2, 2, 2, 3).rand() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +0.8451549 0.06361471 0.7324815 +0.31086245 0.21210302 0.35112163 + +(1,2,.,.) = +0.61466074 0.50173014 0.8759959 +0.19090249 0.671227 0.73089105 +(2,1,.,.) = +0.47867084 0.9341955 0.063592255 +0.24063066 0.502274 0.9114748 +(2,2,.,.) = +0.93335986 0.25173688 0.88615775 +0.5394321 0.330763 0.89036304 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x2x3] +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +0.8451549 0.06361471 0.7324815 +0.61466074 0.50173014 0.8759959 + +(1,2,.,.) = +0.31086245 0.21210302 0.35112163 +0.19090249 0.671227 0.73089105 +(2,1,.,.) = +0.47867084 0.9341955 0.063592255 +0.93335986 0.25173688 0.88615775 +(2,2,.,.) = +0.24063066 0.502274 0.9114748 +0.5394321 0.330763 0.89036304 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x2x3] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import Permute +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(Permute((2, 1, 3), input_shape=(2, 2, 3))) +input = np.random.rand(2, 2, 2, 3) +output = model.forward(input) +``` +Input is: +```python +array([[[[0.14016896, 0.7275626 , 0.79087092], + [0.57259566, 0.97387138, 0.70001999]], + + [[0.9232002 , 0.07644555, 0.24705828], + [0.17257354, 0.93951155, 0.46183983]]], + [[[0.79432476, 0.64299062, 0.33959594], + [0.58608318, 0.338014 , 0.92602687]], + + [[0.32638575, 0.69032582, 0.25168083], + [0.46813027, 0.95118373, 0.13145026]]]]) +``` +Output is +```python +array([[[[0.14016896, 0.7275626 , 0.7908709 ], + [0.9232002 , 0.07644555, 0.24705827]], + + [[0.57259566, 0.97387135, 0.70002 ], + [0.17257354, 0.93951154, 0.46183982]]], + [[[0.79432476, 0.64299065, 0.33959594], + [0.32638577, 0.6903258 , 0.25168082]], + [[0.5860832 , 0.338014 , 0.9260269 ], + [0.46813026, 0.95118374, 0.13145027]]]], dtype=float32) +``` +--- +### 7.27 ResizeBilinear +Resize the input image with bilinear interpolation. The input image must be a float tensor with NHWC or NCHW layout. + +```scala +ResizeBilinear(outputHeight, outputWidth, alignCorners = false, dimOrdering = "th", inputShape = null) +``` +**Python:** +```python +ResizeBilinear(output_height, output_width, align_corner=False, dim_ordering="th", input_shape=(2, 3, 5, 7), name=None) +``` + +**Parameters:** + +* `outputHeight`: output height +* `outputWidth`: output width +* `alignCorners`: align corner or not +* `dimOrdering`: Format of input data. Either DataFormat.NCHW (dimOrdering='th') or DataFormat.NHWC (dimOrdering='tf'). Default is NCHW. +* `inputShape`: Only need to specify this argument when you use this layer as the first layer of a model. For Scala API, it should be a [`Shape`](../keras-api-scala/#shape) object. For Python API, it should be a shape tuple. Batch dimension should be excluded. + +**Scala example:** +```scala +import com.intel.analytics.zoo.pipeline.api.keras.models.Sequential +import com.intel.analytics.zoo.pipeline.api.keras.layers.ResizeBilinear +import com.intel.analytics.bigdl.utils.Shape +import com.intel.analytics.bigdl.tensor.Tensor + +val model = Sequential() +model.add(ResizeBilinear[Float](2, 3, inputShape = Shape(2, 3, 5))) +val input = Tensor[Float](2, 2, 3, 5).rand() +val output = model.forward(input) +``` +Input is: +```scala +input: com.intel.analytics.bigdl.tensor.Tensor[Float] = +(1,1,.,.) = +0.6991891 0.007127314 0.73871046 0.95916307 0.9433856 +0.41275907 0.37573513 0.99193203 0.06930728 0.5922364 +0.024281504 0.2592453 0.3898136 0.6635241 0.85888565 + +(1,2,.,.) = +0.38028112 0.43709648 0.62538666 0.8468501 0.6445014 +0.45252413 0.48801896 0.59471387 0.013207023 0.3567462 +0.85187584 0.49279585 0.7973665 0.81287366 0.07852263 + +(2,1,.,.) = +0.1452374 0.6140467 0.36384684 0.066476084 0.96101314 +0.54862195 0.66091377 0.86857307 0.6844842 0.7368217 +0.25342992 0.71737933 0.12789607 0.21691357 0.7543404 + +(2,2,.,.) = +0.79176855 0.1204049 0.58971256 0.115073755 0.10459962 +0.5225398 0.742363 0.7612815 0.9881919 0.13359445 +0.9026869 0.13972941 0.92064524 0.9435532 0.5502235 + +[com.intel.analytics.bigdl.tensor.DenseTensor of... +``` +Output is: +```scala +output: com.intel.analytics.bigdl.nn.abstractnn.Activity = +(1,1,.,.) = +0.6991891 0.4948494 0.9539039 +0.21852028 0.5664119 0.48613077 + +(1,2,.,.) = +0.38028112 0.56262326 0.7794005 +0.6522 0.6274959 0.34790504 + +(2,1,.,.) = +0.1452374 0.4472468 0.36465502 +0.40102595 0.5618719 0.54899293 + +(2,2,.,.) = +0.79176855 0.43327665 0.111582376 +0.71261334 0.70765764 0.75788474 + +[com.intel.analytics.bigdl.tensor.DenseTensor of size 2x2x2x3] +``` + +**Python example:** +```python +from zoo.pipeline.api.keras.layers import ResizeBilinear +from zoo.pipeline.api.keras.models import Sequential +import numpy as np + +model = Sequential() +model.add(ResizeBilinear(2, 3, input_shape=(2, 3, 5, 5))) +input = np.random.rand(2, 2, 3, 5, 5) +output = model.forward(input) +``` +Input is: +```python +array([[[[0.43790358, 0.41882914, 0.71929122, 0.19673119, 0.36950189], + [0.38808651, 0.34287751, 0.34076998, 0.02581254, 0.42406155], + [0.84648848, 0.18411068, 0.97545126, 0.5468195 , 0.32136674]], + + [[0.32965599, 0.06883324, 0.17350748, 0.01181338, 0.59180775], + [0.24667588, 0.36422516, 0.59648387, 0.48699443, 0.32323264], + [0.67661373, 0.58779956, 0.55286771, 0.59629101, 0.69727522]]], + + + [[[0.09462238, 0.35658325, 0.6787812 , 0.78676645, 0.99019452], + [0.81501527, 0.13348641, 0.71749101, 0.40543351, 0.3959018 ], + [0.608378 , 0.10531177, 0.78000335, 0.51679768, 0.65067605]], + + [[0.12074634, 0.92682843, 0.52227042, 0.98856558, 0.28105255], + [0.78411841, 0.19625097, 0.83108171, 0.03777509, 0.15700493], + [0.95528158, 0.94003855, 0.61092905, 0.68651048, 0.57563719]]]]) +``` +Output is +```python +array([[[[0.43790358, 0.61913717, 0.2543214 ], + [0.6172875 , 0.52657175, 0.3151154 ]], + + [[0.329656 , 0.13861606, 0.20514478], + [0.46164483, 0.541788 , 0.5311798 ]]], + + + [[[0.09462238, 0.57138187, 0.8545758 ], + [0.7116966 , 0.5389645 , 0.48184 ]], + + [[0.12074634, 0.6571231 , 0.752728 ], + [0.86969995, 0.6700518 , 0.36353552]]]], dtype=float32) +``` diff --git a/docs/readthedocs/source/doc/UseCase/nnframes.md b/docs/readthedocs/source/doc/UseCase/nnframes.md new file mode 100644 index 00000000..b1a509b8 --- /dev/null +++ b/docs/readthedocs/source/doc/UseCase/nnframes.md @@ -0,0 +1,428 @@ +# Use Spark ML Pipeline for BigDL + +## 1. NNFrames Overview + +`NNFrames` in Analytics Zoo provides to provide Spark DataFrame and and ML Pipeline support for [BigDL](https://github.com/intel-analytics/bigdl). It provides both Python and Scala interfaces, and is compatible with both Spark 2.x and Spark 3.x. + + +**Highlights** + +- Easy-to-use DataFrame(DataSet)-based API for training, prediction and evaluation with deep learning models. + +- Effortless integration with Spark ML pipeline and compatibility with other feature transformers and algorithms in Spark ML. + +- In a few lines, run large scale inference or transfer learning from pre-trained models of Keras, Tensorflow, PyTorch or BigDL. + +- Rich toolset for feature extraction and processing, including image, audio and texts. + + +**Examples** + +The examples are included in the Analytics Zoo source code. + +- image classification: model inference using pre-trained Inception v1 model. (See [Scala version](https://github.com/intel-analytics/analytics-zoo/tree/master/zoo/src/main/scala/com/intel/analytics/zoo/examples/nnframes/imageInference) and [Python version](https://github.com/intel-analytics/analytics-zoo/tree/master/pyzoo/zoo/examples/nnframes/imageInference)) +- image classification: transfer learning from pre-trained Inception v1 model. (See [Scala version](https://github.com/intel-analytics/analytics-zoo/tree/master/zoo/src/main/scala/com/intel/analytics/zoo/examples/nnframes/imageTransferLearning) and [Python version](https://github.com/intel-analytics/analytics-zoo/tree/master/pyzoo/zoo/examples/nnframes/imageTransferLearning)) + +## 2. Primary APIs + +- **NNEstimator and NNModel** + + Analytics Zoo provides `NNEstimator` for model training with Spark DataFrame, which provides high level API for training a BigDL Model with the Apache Spark [Estimator](https://spark.apache.org/docs/2.1.1/ml-pipeline.html#estimators) and [Transfomer](https://spark.apache.org/docs/2.1.1/ml-pipeline.html#transformers) pattern, thus users can conveniently fit Analytics Zoo into a ML pipeline. The fit result of `NNEstimator` is a NNModel, which is a Spark ML Transformer. + +- **NNClassifier and NNClassifierModel** + + `NNClassifier` and `NNClassifierModel`extends `NNEstimator` and `NNModel` and focus on classification tasks, where both label column and prediction column are of Double type. + +- **NNImageReader** + + NNImageReader loads image into Spark DataFrame. + +--- +### 2.1 NNEstimator + +**Scala:** + +```scala +val estimator = NNEstimator(model, criterion) +``` + +**Python:** + +```python +estimator = NNEstimator(model, criterion) +``` + +`NNEstimator` extends `org.apache.spark.ml.Estimator` and supports training a BigDL model with Spark DataFrame data. It can be integrated into a standard Spark ML Pipeline +to allow users to combine the components of BigDL and Spark MLlib. + +`NNEstimator` supports different feature and label data types through `Preprocessing`. During fit (training), NNEstimator will extract feature and label data from input DataFrame and use the `Preprocessing` to convert data for the model, typically converts the feature and label to Tensors or converts the (feature, option[Label]) tuple to a BigDL `Sample`. + +Each`Preprocessing` conducts a data conversion step in the preprocessing phase, multiple `Preprocessing` can be combined into a `ChainedPreprocessing`. Some pre-defined +`Preprocessing` for popular data types like Image, Array or Vector are provided in package `com.intel.analytics.zoo.feature`, while user can also develop customized `Preprocessing`. + +NNEstimator and NNClassifier also supports setting the caching level for the training data. Options are "DRAM", "PMEM" or "DISK_AND_DRAM". If DISK_AND_DRAM(numSlice) is used, only 1/numSlice data will be loaded into memory during training time. By default, DRAM mode is used and all data are cached in memory. + +By default, `SeqToTensor` is used to convert an array or Vector to a 1-dimension Tensor. Using the `Preprocessing` allows `NNEstimator` to cache only the raw data and decrease the memory consumption during feature conversion and training, it also enables the model to digest extra data types that DataFrame does not support currently. + +More concrete examples are available in package `com.intel.analytics.zoo.examples.nnframes` + +`NNEstimator` can be created with various parameters for different scenarios. + +- `NNEstimator(model, criterion)` + + Takes only model and criterion and use `SeqToTensor` as feature and label `Preprocessing`. `NNEstimator` will extract the data from feature and label columns (only Scalar, Array[_] or Vector data type are supported) and convert each feature/label to 1-dimension Tensor. The tensors will be combined into BigDL `Sample` and send to model for training. + +- `NNEstimator(model, criterion, featureSize: Array[Int], labelSize: Array[Int])` + + Takes model, criterion, featureSize(Array of Int) and labelSize(Array of Int). `NNEstimator` will extract the data from feature and label columns (only Scalar, Array[_] or Vector data type are supported) and convert each feature/label to Tensor according to the specified Tensor size. + +- `NNEstimator(model, criterion, featureSize: Array[Array[Int]], labelSize: Array[Int])` + + This is the interface for multi-input model. It takes model, criterion, featureSize(Array of Int Array) and labelSize(Array of Int). `NNEstimator` will extract the data from feature and label columns (only Scalar, Array[_] or Vector data type are supported) and convert each feature/label to Tensor according to the specified Tensor size. + +- `NNEstimator(model, criterion, featurePreprocessing: Preprocessing[F, Tensor[T]], +labelPreprocessing: Preprocessing[F, Tensor[T]])` + + Takes model, criterion, featurePreprocessing and labelPreprocessing. `NNEstimator` will extract the data from feature and label columns and convert each feature/label to Tensor with the featurePreprocessing and labelPreprocessing. This constructor provides more flexibility in supporting extra data types. + +Meanwhile, for advanced use cases (e.g. model with multiple input tensor), `NNEstimator` supports: `setSamplePreprocessing(value: Preprocessing[(Any, Option[Any]), Sample[T]])` to directly compose Sample according to user-specified Preprocessing. + + +**Scala Example:** +```scala +import com.intel.analytics.bigdl.nn._ +import com.intel.analytics.zoo.pipeline.nnframes.NNEstimator +import com.intel.analytics.bigdl.tensor.TensorNumericMath.TensorNumeric.NumericFloat + +val model = Sequential().add(Linear(2, 2)) +val criterion = MSECriterion() +val estimator = NNEstimator(model, criterion) + .setLearningRate(0.2) + .setMaxEpoch(40) +val data = sc.parallelize(Seq( + (Array(2.0, 1.0), Array(1.0, 2.0)), + (Array(1.0, 2.0), Array(2.0, 1.0)), + (Array(2.0, 1.0), Array(1.0, 2.0)), + (Array(1.0, 2.0), Array(2.0, 1.0)))) +val df = sqlContext.createDataFrame(data).toDF("features", "label") +val nnModel = estimator.fit(df) +nnModel.transform(df).show(false) +``` + +**Python Example:** +```python +from bigdl.nn.layer import * +from bigdl.nn.criterion import * +from bigdl.util.common import * +from zoo.pipeline.nnframes.nn_classifier import * +from zoo.feature.common import * + +data = self.sc.parallelize([ + ((2.0, 1.0), (1.0, 2.0)), + ((1.0, 2.0), (2.0, 1.0)), + ((2.0, 1.0), (1.0, 2.0)), + ((1.0, 2.0), (2.0, 1.0))]) + +schema = StructType([ + StructField("features", ArrayType(DoubleType(), False), False), + StructField("label", ArrayType(DoubleType(), False), False)]) +df = self.sqlContext.createDataFrame(data, schema) +model = Sequential().add(Linear(2, 2)) +criterion = MSECriterion() +estimator = NNEstimator(model, criterion, SeqToTensor([2]), ArrayToTensor([2]))\ + .setBatchSize(4).setLearningRate(0.2).setMaxEpoch(40) \ +nnModel = estimator.fit(df) +res = nnModel.transform(df) +``` + +***Example with multi-inputs Model.*** +This example trains a model with 3 inputs. And users can use VectorAssembler from Spark MLlib to combine different fields. With the specified sizes for each model input, NNEstiamtor and NNClassifer will split the input features data and send tensors to corresponding inputs. + +```python +sparkConf = init_spark_conf().setAppName("testNNClassifer").setMaster('local[1]') +sc = init_nncontext(sparkConf) +spark = SparkSession\ + .builder\ + .getOrCreate() + +df = spark.createDataFrame( + [(1, 35, 109.0, Vectors.dense([2.0, 5.0, 0.5, 0.5]), 1.0), + (2, 58, 2998.0, Vectors.dense([4.0, 10.0, 0.5, 0.5]), 2.0), + (3, 18, 123.0, Vectors.dense([3.0, 15.0, 0.5, 0.5]), 1.0)], + ["user", "age", "income", "history", "label"]) + +assembler = VectorAssembler( + inputCols=["user", "age", "income", "history"], + outputCol="features") + +df = assembler.transform(df) + +x1 = ZLayer.Input(shape=(1,)) +x2 = ZLayer.Input(shape=(2,)) +x3 = ZLayer.Input(shape=(2, 2,)) + +user_embedding = ZLayer.Embedding(5, 10)(x1) +flatten = ZLayer.Flatten()(user_embedding) +dense1 = ZLayer.Dense(2)(x2) +gru = ZLayer.LSTM(4, input_shape=(2, 2))(x3) + +merged = ZLayer.merge([flatten, dense1, gru], mode="concat") +zy = ZLayer.Dense(2)(merged) + +zmodel = ZModel([x1, x2, x3], zy) +criterion = ZooClassNLLCriterion() +classifier = NNClassifier(zmodel, criterion, [[1], [2], [2, 2]]) \ + .setOptimMethod(Adam()) \ + .setLearningRate(0.1)\ + .setBatchSize(2) \ + .setMaxEpoch(10) + +nnClassifierModel = classifier.fit(df) +print(nnClassifierModel.getBatchSize()) +res = nnClassifierModel.transform(df).collect() + +``` + +--- + +### 2.2 NNModel +**Scala:** +```scala +val nnModel = NNModel(bigDLModel) +``` + +**Python:** +```python +nn_model = NNModel(bigDLModel) +``` + +`NNModel` extends Spark's ML +[Transformer](https://spark.apache.org/docs/2.1.1/ml-pipeline.html#transformers). User can invoke `fit` in `NNEstimator` to get a `NNModel`, or directly compose a `NNModel` from BigDLModel. It enables users to wrap a pre-trained BigDL Model into a NNModel, and use it as a transformer in your Spark ML pipeline to predict the results for `DataFrame (DataSet)`. + +`NNModel` can be created with various parameters for different scenarios. + +- `NNModel(model)` + + Takes only model and use `SeqToTensor` as feature Preprocessing. `NNModel` will extract the data from feature column (only Scalar, Array[_] or Vector data type are supported) and convert each feature to 1-dimension Tensor. The tensors will be sent to model for inference. + +- `NNModel(model, featureSize: Array[Int])` + + Takes model and featureSize(Array of Int). `NNModel` will extract the data from feature column (only Scalar, Array[_] or Vector data type are supported) and convert each feature to Tensor according to the specified Tensor size. User can also set featureSize as Array[Array[Int]] for multi-inputs model. + +- `NNModel(model, featurePreprocessing: Preprocessing[F, Tensor[T]])` + + Takes model and featurePreprocessing. `NNModel` will extract the data from feature column and convert each feature to Tensor with the featurePreprocessing. This constructor provides more flexibility in supporting extra data types. + +Meanwhile, for advanced use cases (e.g. model with multiple input tensor), `NNModel` supports: `setSamplePreprocessing(value: Preprocessing[Any, Sample[T]])`to directly compose Sample according to user-specified Preprocessing. + +--- + +### 2.3 NNClassifier +**Scala:** +```scala +val classifer = NNClassifer(model, criterion) +``` + +**Python:** +```python +classifier = NNClassifer(model, criterion) +``` + +`NNClassifier` is a specialized `NNEstimator` that simplifies the data format for classification tasks where the label space is discrete. It only supports label column of +DoubleType, and the fitted `NNClassifierModel` will have the prediction column of DoubleType. + +* `model` BigDL module to be optimized in the fit() method +* `criterion` the criterion used to compute the loss and the gradient + +`NNClassifier` can be created with various parameters for different scenarios. + +- `NNClassifier(model, criterion)` + + Takes only model and criterion and use `SeqToTensor` as feature and label Preprocessing. `NNClassifier` will extract the data from feature and label columns (only Scalar, Array[_] or Vector data type are supported) and convert each feature/label to 1-dimension Tensor. The tensors will be combined into BigDL samples and send to model for training. + +- `NNClassifier(model, criterion, featureSize: Array[Int])` + + Takes model, criterion, featureSize(Array of Int). `NNClassifier` will extract the data from feature and label columns and convert each feature to Tensor according to the specified Tensor size. `ScalarToTensor` is used to convert the label column. User can also set featureSize as Array[Array[Int]] for multi-inputs model. + +- `NNClassifier(model, criterion, featurePreprocessing: Preprocessing[F, Tensor[T]])` + + Takes model, criterion and featurePreprocessing. `NNClassifier` will extract the data from feature and label columns and convert each feature to Tensor with the featurePreprocessing. This constructor provides more flexibility in supporting extra data types. + +Meanwhile, for advanced use cases (e.g. model with multiple input tensor), `NNClassifier` supports `setSamplePreprocessing(value: Preprocessing[(Any, Option[Any]), Sample[T]])` to directly compose Sample with user-specified Preprocessing. + +**Scala example:** +```scala +import com.intel.analytics.bigdl.nn._ +import com.intel.analytics.zoo.pipeline.nnframes.NNClassifier +import com.intel.analytics.bigdl.tensor.TensorNumericMath.TensorNumeric.NumericFloat + +val model = Sequential().add(Linear(2, 2)) +val criterion = MSECriterion() +val estimator = NNClassifier(model, criterion) + .setLearningRate(0.2) + .setMaxEpoch(40) +val data = sc.parallelize(Seq( + (Array(0.0, 1.0), 1.0), + (Array(1.0, 0.0), 2.0), + (Array(0.0, 1.0), 1.0), + (Array(1.0, 0.0), 2.0))) +val df = sqlContext.createDataFrame(data).toDF("features", "label") +val dlModel = estimator.fit(df) +dlModel.transform(df).show(false) +``` + +**Python Example:** + +```python +from bigdl.nn.layer import * +from bigdl.nn.criterion import * +from bigdl.util.common import * +from bigdl.dlframes.dl_classifier import * +from pyspark.sql.types import * + +#Logistic Regression with BigDL layers and Analytics zoo NNClassifier +model = Sequential().add(Linear(2, 2)).add(LogSoftMax()) +criterion = ZooClassNLLCriterion() +estimator = NNClassifier(model, criterion, [2]).setBatchSize(4).setMaxEpoch(10) +data = sc.parallelize([ + ((0.0, 1.0), [1.0]), + ((1.0, 0.0), [2.0]), + ((0.0, 1.0), [1.0]), + ((1.0, 0.0), [2.0])]) + +schema = StructType([ + StructField("features", ArrayType(DoubleType(), False), False), + StructField("label", ArrayType(DoubleType(), False), False)]) +df = sqlContext.createDataFrame(data, schema) +dlModel = estimator.fit(df) +dlModel.transform(df).show(False) +``` + +### 2.4 NNClassifierModel ## + +**Scala:** +```scala +val nnClassifierModel = NNClassifierModel(model, featureSize) +``` + +**Python:** +```python +nn_classifier_model = NNClassifierModel(model) +``` + +NNClassifierModel is a specialized `NNModel` for classification tasks. Both label and prediction column will have the datatype of Double. + +`NNClassifierModel` can be created with various parameters for different scenarios. + +- `NNClassifierModel(model)` + + Takes only model and use `SeqToTensor` as feature Preprocessing. `NNClassifierModel` will extract the data from feature column (only Scalar, Array[_] or Vector data type are supported) and convert each feature to 1-dimension Tensor. The tensors will be sent to model for inference. + +- `NNClassifierModel(model, featureSize: Array[Int])` + + Takes model and featureSize(Array of Int). `NNClassifierModel` will extract the data from feature column (only Scalar, Array[_] or Vector data type are supported) and convert each feature to Tensor according to the specified Tensor size. User can also set featureSize as Array[Array[Int]] for multi-inputs model. + +- `NNClassifierModel(model, featurePreprocessing: Preprocessing[F, Tensor[T]])` + + Takes model and featurePreprocessing. `NNClassifierModel` will extract the data from feature column and convert each feature to Tensor with the featurePreprocessing. This constructor provides more flexibility in supporting extra data types. + +Meanwhile, for advanced use cases (e.g. model with multiple input tensor), `NNClassifierModel` supports: `setSamplePreprocessing(value: Preprocessing[Any, Sample[T]])`to directly compose Sample according to user-specified Preprocessing. + +--- + +### 2.5 Hyperparameter Setting + +Prior to the commencement of the training process, you can modify the optimization algorithm, batch size, the epoch number of your training, and learning rate to meet your goal or `NNEstimator`/`NNClassifier` will use the default value. + +Continue the codes above, NNEstimator and NNClassifier can be set in the same way. + +**Scala:** + +```scala +//for esitmator +estimator.setBatchSize(4).setMaxEpoch(10).setLearningRate(0.01).setOptimMethod(new Adam()) +//for classifier +classifier.setBatchSize(4).setMaxEpoch(10).setLearningRate(0.01).setOptimMethod(new Adam()) +``` +**Python:** + +```python +# for esitmator +estimator.setBatchSize(4).setMaxEpoch(10).setLearningRate(0.01).setOptimMethod(Adam()) +# for classifier +classifier.setBatchSize(4).setMaxEpoch(10).setLearningRate(0.01).setOptimMethod(Adam()) + +``` + +### 2.6 Training + +NNEstimator/NNCLassifer supports training with Spark's [DataFrame/DataSet](https://spark.apache.org/docs/latest/sql-programming-guide.html#datasets-and-dataframes) + +Suppose `df` is the training data, simple call `fit` method and let Analytics Zoo train the model for you. + +**Scala:** + +```scala +//get a NNClassifierModel +val nnClassifierModel = classifier.fit(df) +``` + +**Python:** + +```python +# get a NNClassifierModel +nnClassifierModel = classifier.fit(df) +``` +User may also set validation DataFrame and validation frequency through `setValidation` method. Train summay and validation summary can also be configured to log the training process for visualization in Tensorboard. + + +### 2.7 Prediction + +Since `NNModel`/`NNClassifierModel` inherits from Spark's `Transformer` abstract class, simply call `transform` method on `NNModel`/`NNClassifierModel` to make prediction. + +**Scala:** + +```scala +nnModel.transform(df).show(false) +``` + +**Python:** + +```python +nnModel.transform(df).show(false) +``` + +For the complete examples of NNFrames, please refer to: +[Scala examples](https://github.com/intel-analytics/analytics-zoo/tree/master/zoo/src/main/scala/com/intel/analytics/zoo/examples/nnframes) +[Python examples](https://github.com/intel-analytics/analytics-zoo/tree/master/pyzoo/zoo/examples/nnframes) + + +### 2.8 NNImageReader + +`NNImageReader` is the primary DataFrame-based image loading interface, defining API to read images into DataFrame. + +Scala: +```scala +val imageDF = NNImageReader.readImages(imageDirectory, sc) +``` + +Python: +```python +image_frame = NNImageReader.readImages(image_path, self.sc) +``` + +The output DataFrame contains a sinlge column named "image". The schema of "image" column can be accessed from `com.intel.analytics.zoo.pipeline.nnframes.DLImageSchema.byteSchema`. Each record in "image" column represents one image record, in the format of Row(origin, height, width, num of channels, mode, data), where origin contains the URI for the image file, and `data` holds the original file bytes for the image file. `mode` represents the OpenCV-compatible type: CV_8UC3, CV_8UC1 in most cases. + +```scala +val byteSchema = StructType( + StructField("origin", StringType, true) :: + StructField("height", IntegerType, false) :: + StructField("width", IntegerType, false) :: + StructField("nChannels", IntegerType, false) :: + // OpenCV-compatible type: CV_8UC3, CV_32FC3 in most cases + StructField("mode", IntegerType, false) :: + // Bytes in OpenCV-compatible order: row-wise BGR in most cases + StructField("data", BinaryType, false) :: Nil) +``` + +After loading the image, user can compose the preprocess steps with the `Preprocessing` defined in `com.intel.analytics.zoo.feature.image`. diff --git a/docs/readthedocs/source/doc/UseCase/spark-dataframe.md b/docs/readthedocs/source/doc/UseCase/spark-dataframe.md new file mode 100644 index 00000000..615cbda3 --- /dev/null +++ b/docs/readthedocs/source/doc/UseCase/spark-dataframe.md @@ -0,0 +1,111 @@ +# Use Spark Dataframe for Deep Learning + +--- + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_dataframe.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_dataframe.ipynb) + +--- + +**In this guide we will describe how to use Apache Spark Dataframes to scale-out data processing for distribtued deep learning.** + +The dataset used in this guide is [movielens-1M](https://grouplens.org/datasets/movielens/1m/), which contains 1 million ratings of 5 levels from 6000 users on 4000 movies. We will read the data into Spark Dataframe and directly use the Spark Dataframe as the input to the distributed training. + +### **1. Read input data into Spark DataFrame** + +First, read the input data into Spark Dataframes. + +```python +from zoo.orca import OrcaContext + +spark = OrcaContext.get_spark_session() +# read csv with specifying column names +df = spark.read.csv(new_rating_files, sep=':', inferSchema=True).toDF( + "user", "item", "label", "timestamp") +``` + +### **2. Process data using Spark Dataframe** + +Next, process the data using Spark Dataframe operations. + +```python +# update label starting from 0. That's because ratings go from 1 to 5, while the matrix column index goes from 0 to 4 +df = df.withColumn('label', df.label-1) + +# split to train/test dataset +train_data, test_data = df.randomSplit([0.8, 0.2], 100) +``` + +### **3. Define NCF model** + +This example defines NCF model in the _Creator Function_ using TensroFlow 2 APIs as follows. + +```python +from tensorflow import keras +import tensorflow as tf + +def model_creator(config): + embedding_size=16 + user = keras.layers.Input(dtype=tf.int32, shape=(None,)) + item = keras.layers.Input(dtype=tf.int32, shape=(None,)) + label = keras.layers.Input(dtype=tf.int32, shape=(None,)) + + with tf.name_scope("GMF"): + user_embed_GMF = keras.layers.Embedding(max_user_id + 1, embedding_size)(user) + item_embed_GMF = keras.layers.Embedding(max_item_id + 1, embedding_size)(item) + GMF = keras.layers.Multiply()([user_embed_GMF, item_embed_GMF]) + + with tf.name_scope("MLP"): + user_embed_MLP = keras.layers.Embedding(max_user_id + 1, embedding_size)(user) + item_embed_MLP = keras.layers.Embedding(max_item_id + 1, embedding_size)(item) + interaction = concat([user_embed_MLP, item_embed_MLP], axis=-1) + layer1_MLP = keras.layers.Dense(units=embedding_size * 2, activation='relu')(interaction) + layer1_MLP = keras.layers.Dropout(rate=0.2)(layer1_MLP) + layer2_MLP = keras.layers.Dense(units=embedding_size, activation='relu')(layer1_MLP) + layer2_MLP = keras.layers.Dropout(rate=0.2)(layer2_MLP) + layer3_MLP = keras.layers.Dense(units=embedding_size // 2, activation='relu')(layer2_MLP) + layer3_MLP = keras.layers.Dropout(rate=0.2)(layer3_MLP) + + # Concate the two parts together + with tf.name_scope("concatenation"): + concatenation = tf.concat([GMF, layer3_MLP], axis=-1) + outputs = keras.layers.Dense(units=5, activation='softmax')(concatenation) + + model = keras.Model(inputs=[user, item], outputs=outputs) + model.compile(optimizer="adam", + loss="sparse_categorical_crossentropy", + metrics=['accuracy']) + return model +``` + +### **4. Fit with Orca Estimator** + +Finally, run distributed model training/inference on the Spark Dataframes directly. + +```python +from zoo.orca.learn.tf2 import Estimator + +# create an Estimator +est = Estimator.from_keras(model_creator=model_creator) # the model accept two inputs and one label + +# fit with Estimator +stats = est.fit(train_data, + epochs=epochs, + batch_size=batch_size, + feature_cols=['user', 'item'], # specifies which column(s) to be used as inputs + label_cols=['label'], # specifies which column(s) to be used as labels + steps_per_epoch=800000 // batch_size, + validation_data=test_data, + validation_steps=200000 // batch_size) + +checkpoint_path = os.path.join(model_dir, "NCF.ckpt") +est.save(checkpoint_path) + +# evaluate with Estimator +stats = est.evaluate(test_data, + feature_cols=['user', 'item'], # specifies which column(s) to be used as inputs + label_cols=['label'], # specifies which column(s) to be used as labels + num_steps=100000 // batch_size) +est.shutdown() +print(stats) +``` + diff --git a/docs/readthedocs/source/doc/UseCase/tensorboard.md b/docs/readthedocs/source/doc/UseCase/tensorboard.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/readthedocs/source/doc/UseCase/xshards-pandas.md b/docs/readthedocs/source/doc/UseCase/xshards-pandas.md new file mode 100644 index 00000000..9f37480f --- /dev/null +++ b/docs/readthedocs/source/doc/UseCase/xshards-pandas.md @@ -0,0 +1,121 @@ +# Use Distributed Pandas for Deep Learning + +--- + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_xshards_pandas.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_xshards_pandas.ipynb) + +--- + +**In this guide we will describe how to use [XShards](../Orca/Overview/data-parallel-processing.md) to scale-out Pandas data processing for distribtued deep learning.** + +### **1. Read input data into XShards of Pandas DataFrame** + +First, read CVS, JSON or Parquet files into an `XShards` of Pandas Dataframe (i.e., a distributed and sharded dataset where each partition contained a Pandas Dataframe), as shown below: + +```python +from zoo.orca.data.pandas import read_csv +full_data = read_csv(new_rating_files, sep=':', header=None, + names=['user', 'item', 'label'], usecols=[0, 1, 2], + dtype={0: np.int32, 1: np.int32, 2: np.int32}) +``` + +### **2. Process Pandas Dataframes using XShards** + +Next, use XShards to efficiently process large-size Pandas Dataframes in a distributed and data-parallel fashion. You may run standard Python code on each partition in a data-parallel fashion using `XShards.transform_shard`, as shown below: + +```python +# update label starting from 0. That's because ratings go from 1 to 5, while the matrix columns go from 0 to 4 +def update_label(df): + df['label'] = df['label'] - 1 + return df + +full_data = full_data.transform_shard(update_label) +``` + +```python +from sklearn.model_selection import train_test_split + +# split to train/test dataset +def split_train_test(data): + train, test = train_test_split(data, test_size=0.2, random_state=100) + return train, test + +train_data, test_data = full_data.transform_shard(split_train_test).split() +``` + +### **3. Define NCF model** + +Define the NCF model using TensorFlow 1.15 APIs: + +```python +import tensorflow as tf + +class NCF(object): + def __init__(self, embed_size, user_size, item_size): + self.user = tf.placeholder(dtype=tf.int32, shape=(None,)) + self.item = tf.placeholder(dtype=tf.int32, shape=(None,)) + self.label = tf.placeholder(dtype=tf.int32, shape=(None,)) + + with tf.name_scope("GMF"): + user_embed_GMF = tf.contrib.layers.embed_sequence(self.user, vocab_size=user_size + 1, + embed_dim=embed_size) + item_embed_GMF = tf.contrib.layers.embed_sequence(self.item, vocab_size=item_size + 1, + embed_dim=embed_size) + GMF = tf.multiply(user_embed_GMF, item_embed_GMF) + + with tf.name_scope("MLP"): + user_embed_MLP = tf.contrib.layers.embed_sequence(self.user, vocab_size=user_size + 1, + embed_dim=embed_size) + item_embed_MLP = tf.contrib.layers.embed_sequence(self.item, vocab_size=item_size + 1, + embed_dim=embed_size) + interaction = tf.concat([user_embed_MLP, item_embed_MLP], axis=-1) + layer1_MLP = tf.layers.dense(inputs=interaction, units=embed_size * 2) + layer1_MLP = tf.layers.dropout(layer1_MLP, rate=0.2) + layer2_MLP = tf.layers.dense(inputs=layer1_MLP, units=embed_size) + layer2_MLP = tf.layers.dropout(layer2_MLP, rate=0.2) + layer3_MLP = tf.layers.dense(inputs=layer2_MLP, units=embed_size // 2) + layer3_MLP = tf.layers.dropout(layer3_MLP, rate=0.2) + + # Concate the two parts together + with tf.name_scope("concatenation"): + concatenation = tf.concat([GMF, layer3_MLP], axis=-1) + self.logits = tf.layers.dense(inputs=concatenation, units=5) + self.logits_softmax = tf.nn.softmax(self.logits) + self.class_number = tf.argmax(self.logits_softmax, 1) + + with tf.name_scope("loss"): + self.loss = tf.reduce_mean(tf.nn.sparse_softmax_cross_entropy_with_logits( + labels=self.label, logits=self.logits, name='loss')) + + with tf.name_scope("optimzation"): + self.optim = tf.train.AdamOptimizer(1e-3, name='Adam') + self.optimizer = self.optim.minimize(self.loss) + +embedding_size=16 +model = NCF(embedding_size, max_user_id, max_item_id) +``` +### **4. Fit with Orca Estimator** + +Finally, directly run distributed model training/inference on the XShards of Pandas DataFrames. + +```python +from zoo.orca.learn.tf.estimator import Estimator + +# create an Estimator. +estimator = Estimator.from_graph( + inputs=[model.user, model.item], # the model accept two inputs and one label + outputs=[model.class_number], + labels=[model.label], + loss=model.loss, + optimizer=model.optim, + model_dir=model_dir, + metrics={"loss": model.loss}) + +# fit the Estimator +estimator.fit(data=train_data, + batch_size=1280, + epochs=1, + feature_cols=['user', 'item'], # specifies which column(s) to be used as inputs + label_cols=['label'], # specifies which column(s) to be used as labels + validation_data=test_data) +``` diff --git a/docs/readthedocs/source/doc/UserGuide/colab.md b/docs/readthedocs/source/doc/UserGuide/colab.md new file mode 100644 index 00000000..496a4379 --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/colab.md @@ -0,0 +1,61 @@ +# Colab User Guide + +--- + +You can use Analytics Zoo without any installation by using [Google Colab](https://colab.research.google.com/). + +### **1. Open a Colab Notebook** + +Analytics Zoo includes a collection of [notebooks](./notebooks.md) that can be directly opened and run in Colab. You can click 'Run in Google Colab' that opens the notebook on Colab directly. Click the "run" triangle on the left of each cell to run the notebook cell. When you run the first cell, you may face a pop-up saying 'Warning: This notebook was not authored by Google'; you should click on 'Run Anyway' to get rid of the warning. + +### **2. Notebook Setup** + +The first few cells of the notebook contains the code necessary to set up Analytics Zoo and other libraries. + +**Install Java 8** + +Run the following command on the Google Colab to install jdk 1.8 + +```bash +# Install jdk8 +!apt-get install openjdk-8-jdk-headless -qq > /dev/null +# Set jdk environment path which enables you to run Pyspark in your Colab environment. +import os +os.environ["JAVA_HOME"] = "/usr/lib/jvm/java-8-openjdk-amd64" +!update-alternatives --set java /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java +``` + +**Install Conda** + +Run the code bellow to install [conda](https://docs.conda.io/en/latest/) on Colab. + +```bash +# Install Miniconda +!wget https://repo.continuum.io/miniconda/Miniconda3-4.5.4-Linux-x86_64.sh +!chmod +x Miniconda3-4.5.4-Linux-x86_64.sh +!./Miniconda3-4.5.4-Linux-x86_64.sh -b -f -p /usr/local + +# Update Conda +!conda install --channel defaults conda python=3.6 --yes +!conda update --channel defaults --all --yes + +# Append to the sys.path +import sys +_ = (sys.path + .append("/usr/local/lib/python3.6/site-packages")) + +os.environ['PYTHONHOME']="/usr/local" +``` + +**Install Analytics Zoo** + +Install the latest pre-release version using `pip install --pre --upgrade analytics-zoo`. +```bash +# Install latest pre-release version of Analytics Zoo +# Installing Analytics Zoo from pip will automatically install pyspark, bigdl, and their dependencies. +!pip install --pre --upgrade analytics-zoo +``` + +**Install Python Dependencies** + +As Colab python environment provides some built-in Python libraries, you should check if the library versions are compatible with your application. You may refer [compatibility](./python.md) to specify the python library version that Analytics Zoo supports. diff --git a/docs/readthedocs/source/doc/UserGuide/databricks.md b/docs/readthedocs/source/doc/UserGuide/databricks.md new file mode 100644 index 00000000..3a222144 --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/databricks.md @@ -0,0 +1,59 @@ +# Databricks User Guide + +--- + +You can run Analytics Zoo program on the [Databricks](https://databricks.com/) cluster as follows. +### **1. Create a Databricks Cluster** + +- Create either [AWS Databricks](https://docs.databricks.com/getting-started/try-databricks.html) workspace or [Azure Databricks](https://docs.microsoft.com/en-us/azure/azure-databricks/) workspace. +- Create a Databricks [clusters](https://docs.databricks.com/clusters/create.html) using the UI. Choose Databricks runtime version. This guide is tested on Runtime 7.5 (includes Apache Spark 3.0.1, Scala 2.12). + +### **2. Installing Analytics Zoo libraries** + +In the left pane, click **Clusters** and select your cluster. + +![](images/Databricks1.PNG) + +Install Analytics Zoo python environment using prebuilt release Wheel package. Click **Libraries > Install New > Upload > Python Whl**. Download Analytics Zoo prebuilt Wheel [here](https://sourceforge.net/projects/analytics-zoo/files/zoo-py). Choose a wheel with timestamp for the same Spark version and platform as Databricks runtime. Download and drop it on Databricks. + +![](images/Databricks2.PNG) + +Install Analytics Zoo prebuilt jar package. Click **Libraries > Install New > Upload > Jar**. Download Analytics Zoo prebuilt package from [Release Page](../release.md). Please note that you should choose the same spark version of package as your Databricks runtime version. Find jar named "analytics-zoo-bigdl_*-spark_*-jar-with-dependencies.jar" in the lib directory. Drop the jar on Databricks. + +![](images/Databricks3.PNG) + +Make sure the jar file and analytics-zoo (whl) are installed on all clusters. In **Libraries** tab of your cluster, check installed libraries and click “Install automatically on all clusters” option in **Admin Settings**. + +![](images/Databricks4.PNG) + +### **3. Setting Spark configuration** + +On the cluster configuration page, click the **Advanced Options** toggle. Click the **Spark** tab. You can provide custom [Spark configuration properties](https://spark.apache.org/docs/latest/configuration.html) in a cluster configuration. Please set it according to your cluster resource and program needs. + +![](images/Databricks5.PNG) + +See below for an example of Spark config setting needed by Analytics Zoo. Here it sets 2 core per executor. Note that "spark.cores.max" needs to be properly set below. + +``` +spark.shuffle.reduceLocality.enabled false +spark.serializer org.apache.spark.serializer.JavaSerializer +spark.shuffle.blockTransferService nio +spark.databricks.delta.preview.enabled true +spark.executor.cores 2 +spark.speculation false +spark.scheduler.minRegisteredResourcesRatio 1.0 +spark.cores.max 4 +``` + +### **4. Running Analytics Zoo on Databricks** + +Open a new notebook, and call `init_orca_context` at the beginning of your code (with `cluster_mode` set to "spark-submit"). + +```python +from zoo.orca import init_orca_context, stop_orca_context +init_orca_context(cluster_mode="spark-submit") +``` + +Output on Databricks: + +![](images/Databricks6.PNG) diff --git a/docs/readthedocs/source/doc/UserGuide/develop.md b/docs/readthedocs/source/doc/UserGuide/develop.md new file mode 100644 index 00000000..e8171278 --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/develop.md @@ -0,0 +1,111 @@ +# Developer Guide + +--- + +Analytics Zoo source code is available at [GitHub](https://github.com/intel-analytics/analytics-zoo): + +```bash +git clone https://github.com/intel-analytics/analytics-zoo.git +``` + +By default, `git clone` will download the development version of Analytics Zoo. If you want a release version, you can use the command `git checkout` to change the specified version. + + +### **1. Python** + +#### **1.1 Build** + +To generate a new [whl](https://pythonwheels.com/) package for pip install, you can run the following script: + +```bash +bash analytics-zoo/pyzoo/dev/build.sh linux default false +``` + +**Arguments:** + +- The first argument is the __platform__ to build for. Either 'linux' or 'mac'. +- The second argument is the analytics-zoo __version__ to build for. 'default' means the default version for the current branch. You can also specify a different version if you wish, e.g., '0.6.0.dev1'. +- You can also add other profiles to build the package, especially Spark and BigDL versions. +For example, under the situation that `pyspark==2.4.3` is a dependency, you need to add profiles `-Dspark.version=2.4.3 -Dbigdl.artifactId=bigdl-SPARK_2.4 -P spark_2.4+` to build Analytics Zoo for Spark 2.4.3. + + +After running the above command, you will find a `whl` file under the folder `analytics-zoo/pyzoo/dist/`. You can then directly pip install it to your local Python environment: +```bash +pip install analytics-zoo/pyzoo/dist/analytics_zoo-VERSION-py2.py3-none-PLATFORM_x86_64.whl +``` + +See [here](./python.md) for more instructions to run analytics-zoo after pip install. + + +#### **1.2 IDE Setup** +Any IDE that support python should be able to run Analytics Zoo. PyCharm works fine for us. + +You need to do the following preparations before starting the IDE to successfully run an Analytics Zoo Python program in the IDE: + +- Build Analytics Zoo; see [here](#21-build) for more instructions. +- Prepare Spark environment by either setting `SPARK_HOME` as the environment variable or pip install `pyspark`. Note that the Spark version should match the one you build Analytics Zoo on. +- Set BIGDL_CLASSPATH: +```bash +export BIGDL_CLASSPATH=analytics-zoo/dist/lib/analytics-zoo-*-jar-with-dependencies.jar +``` + +- Prepare BigDL Python environment by either downloading BigDL source code from [GitHub](https://github.com/intel-analytics/BigDL) or pip install `bigdl`. Note that the BigDL version should match the one you build Analytics Zoo on. +- Add `pyzoo` and `spark-analytics-zoo.conf` to `PYTHONPATH`: +```bash +export PYTHONPATH=analytics-zoo/pyzoo:analytics-zoo/dist/conf/spark-analytics-zoo.conf:$PYTHONPATH +``` +If you download BigDL from [GitHub](https://github.com/intel-analytics/BigDL), you also need to add `BigDL/pyspark` to `PYTHONPATH`: +```bash +export PYTHONPATH=BigDL/pyspark:$PYTHONPATH +``` + +The above environmental variables should be available when running or debugging code in IDE. +* In PyCharm, go to RUN -> Edit Configurations. In the "Run/Debug Configurations" panel, you can update the above environment variables in your configuration. + +### **2. Scala** + +#### **2.1 Build** + +Maven 3 is needed to build Analytics Zoo, you can download it from the [maven website](https://maven.apache.org/download.cgi). + +After installing Maven 3, please set the environment variable MAVEN_OPTS as follows: +```bash +$ export MAVEN_OPTS="-Xmx2g -XX:ReservedCodeCacheSize=512m" +``` + +**Build using `make-dist.sh`** + +It is highly recommended that you build Analytics Zoo using the [make-dist.sh script](https://github.com/intel-analytics/analytics-zoo/blob/master/make-dist.sh) with **Java 8**. + +You can build Analytics Zoo with the following commands: +```bash +$ bash make-dist.sh +``` +After that, you can find a `dist` folder, which contains all the needed files to run a Analytics Zoo program. The files in `dist` include: + +* **dist/lib/analytics-zoo-VERSION-jar-with-dependencies.jar**: This jar package contains all dependencies except Spark classes. +* **dist/lib/analytics-zoo-VERSION-python-api.zip**: This zip package contains all Python files of Analytics Zoo. + +The instructions above will build Analytics Zoo with Spark 2.4.3. To build with other spark versions, for example building analytics-zoo with spark 2.2.0, you can use `bash make-dist.sh -Dspark.version=2.2.0 -Dbigdl.artifactId=bigdl_SPARK_2.2`. + +**Build with JDK 11** + +Spark starts to supports JDK 11 and Scala 2.12 at Spark 3.0. You can use `-P spark_3.x` to specify Spark3 and scala 2.12. Additionally, `make-dist.sh` default uses Java 8. To compile with Java 11, it is required to specify building opts `-Djava.version=11 -Djavac.version=11`. You can build with `make-dist.sh`. + +It's recommended to download [Oracle JDK 11](https://www.oracle.com/java/technologies/javase-jdk11-downloads.html). This will avoid possible incompatibilities with maven plugins. You should update `PATH` and make sure your `JAVA_HOME` environment variable is set to Java 11 if you're running from the command line. If you're running from an IDE, you need to make sure it is set to run maven with your current JDK. + +Build with `make-dist.sh`: + +```bash +$ bash make-dist.sh -P spark_3.x -Djava.version=11 -Djavac.version=11 +``` + +#### **2.2 IDE Setup** + +Analytics Zoo uses maven to organize project. You should choose an IDE that supports Maven project and scala language. IntelliJ IDEA works fine for us. + +In IntelliJ, you can open Analytics Zoo project root directly, and the IDE will import the project automatically. + +We set the scopes of spark related libraries to `provided` in the maven pom.xml, which, however, will cause a problem in IDE (throwing `NoClassDefFoundError` when you run applications). You can easily change the scopes using the `all-in-one` profile. + +* In Intellij, go to View -> Tools Windows -> Maven Projects. Then in the Maven Projects panel, Profiles -> click "all-in-one". diff --git a/docs/readthedocs/source/doc/UserGuide/docker.md b/docs/readthedocs/source/doc/UserGuide/docker.md new file mode 100644 index 00000000..ad4d4bb2 --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/docker.md @@ -0,0 +1,143 @@ +# Docker User Guide + +--- + +### **1. Pull Docker Image** + +You may pull a Docker image from the [Analytics Zoo Docker Hub](https://hub.docker.com/r/intelanalytics/analytics-zoo). + +To pull the nightly build version, use +```bash +sudo docker pull intelanalytics/analytics-zoo:latest +``` + +To pull other versions, please refer to [Analytics Zoo Docker Hub Tags](https://hub.docker.com/r/intelanalytics/analytics-zoo/tags?page=1&ordering=last_updated), select a tag and use +```bash +sudo docker pull intelanalytics/analytics-zoo:tag_name +``` + +**Configuring resources** + +For Docker Desktop users, the default resources (2 CPUs and 2GB memory) are relatively small, and you may want to change them to larger values (8GB memory and 4 CPUs should be a good estimate for most examples, and the exact memory requirements vary for different applications). For more information, view the Docker documentation for [MacOS](https://docs.docker.com/docker-for-mac/#resources) and [Windows](https://docs.docker.com/docker-for-windows/#resources). + +**Speed up pulling image by adding mirrors** + +To speed up pulling the image from DockerHub, you may add the registry-mirrors key and value by editing `daemon.json` (located in `/etc/docker/` folder on Linux): +``` +{ + "registry-mirrors": ["https://"] +} +``` +For instance, users in China may add the USTC mirror as follows: +``` +{ + "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] +} +``` + + +After that, flush changes and restart docker: + +``` +sudo systemctl daemon-reload +sudo systemctl restart docker +``` + +### **2. Launch Docker Container** + +After pulling the Analytics Zoo Docker image, you can launch an Analytics Zoo Docker container: +``` +sudo docker run -it --rm --net=host \ + -e NOTEBOOK_PORT=12345 \ + -e NOTEBOOK_TOKEN="your-token" \ + -e http_proxy=http://your-proxy-host:your-proxy-port \ + -e https_proxy=https://your-proxy-host:your-proxy-port \ + intelanalytics/analytics-zoo:latest bash +``` + +* The value 12345 is a user specified port number. +* The value "your-token" is a user specified string. +* If you need to use http/https proxy, please use -e http_proxy/https_proxy + +Once the container is successfully launched, you will automatically login into the container and see this as the output: +``` +root@[hostname]:/opt/work# +``` + +The /opt/work directory contains: + +* download-analytics-zoo.sh is used for downloading Analytics-Zoo distributions. +* start-notebook.sh is used for starting the jupyter notebook. You can specify the environment settings and spark settings to start a specified jupyter notebook. +* analytics-Zoo-${ANALYTICS_ZOO_VERSION} is the Analytics-Zoo home of Analytics-Zoo distribution. +* analytics-zoo-SPARK_x.x-x.x.x-dist.zip is the zip file of Analytics-Zoo distribution. +* spark-${SPARK_VERSION} is the Spark home. +* analytics-zoo is cloned from https://github.com/intel-analytics/analytics-zoo, contains apps, examples using analytics-zoo. + +### **3. Run Jupyter Notebook Examples in the Container** + +After a Docker container is launched and user login into the container, you can start the Jupyter Notebook service inside the container. + +#### **3.1 Start the Jupyter Notebook services** + +In the `/opt/work` directory, run this command line to start the Jupyter Notebook service: +``` +./start-notebook.sh +``` + +You will see the output message like below. This means the Jupyter Notebook service has started successfully within the container. +``` +[I 01:04:45.625 NotebookApp] Serving notebooks from local directory: /opt/work/analytics-zoo-0.5.0-SNAPSHOT/apps +[I 01:04:45.625 NotebookApp] The Jupyter Notebook is running at: +[I 01:04:45.625 NotebookApp] http://(the-host-name or 127.0.0.1):12345/?token=... +[I 01:04:45.625 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). +``` + +#### **3.2 Connect to Jupyter Notebook service from a browser** + +After the Jupyter Notebook service is successfully started, you can connect to the Jupyter Notebook service from a browser. + +1. Get the IP address of the container +2. Launch a browser, and connect to the Jupyter Notebook service with the URL: https://container-ip-address:port-number/?token=your-token +As a result, you will see the Jupyter Notebook like this: + +![](images/notebook1.jpg) + +#### **3.3 Run Analytics Zoo Jupyter Notebooks** + +After connecting to the Jupyter Notebook in the browser, you can run multiple Analytics Zoo Jupyter Notebook examples. The example shown below is the “dogs-vs-cats”. + +* Click into the "dogs-vs-cats" folder: + +![](images/notebook2.jpg) + +* Open the notebook file: + +![](images/notebook3.jpg) + +* Start to run the "dogs-vs-cats" notebook: + +![](images/notebook4.jpg) + +* Run through the example and check the prediction: + +![](images/notebook5.jpg) + +### **4. Shut Down Docker Container** + +You should shut down the Analytics Zoo Docker container after using it. + +1. You can list all the active Docker containers by command line: +``` +sudo docker ps +``` + +2. You will see your docker containers: +``` +CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES +40de2cdad025 intelanalytics/analytics-zoo:latest "/opt/work/start-n..." 3 hours ago Up 3 hours upbeat_al +``` + +3. Shut down the corresponding docker container by its ID: +``` +$sudo docker rm -f 40de2cdad025 +``` diff --git a/docs/readthedocs/source/doc/UserGuide/hadoop.md b/docs/readthedocs/source/doc/UserGuide/hadoop.md new file mode 100644 index 00000000..45f0ae53 --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/hadoop.md @@ -0,0 +1,131 @@ +# Hadoop/YARN User Guide + +Hadoop version: Hadoop >= 2.7 or [CDH](https://www.cloudera.com/products/open-source/apache-hadoop/key-cdh-components.html) 5.X. Hadoop 3.X or CDH 6.X have not been tested and thus currently not supported. + +--- + +You can run Analytics Zoo programs on standard Hadoop/YARN clusters without any changes to the cluster (i.e., no need to pre-install Analytics Zoo or any Python libraries in the cluster). + +### **1. Prepare Environment** + +- You need to first use [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the Python environment _**on the local client machine**_. Create a conda environment and install all the needed Python libraries in the created conda environment: + + ```bash + conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. + conda activate zoo + + # Use conda or pip to install all the needed Python dependencies in the created conda environment. + ``` + +- You need to download and install JDK in the environment, and properly set the environment variable `JAVA_HOME`, which is required by Spark. __JDK8__ is highly recommended. + + You may take the following commands as a reference for installing [OpenJDK](https://openjdk.java.net/install/): + + ```bash + # For Ubuntu + sudo apt-get install openjdk-8-jre + export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ + + # For CentOS + su -c "yum install java-1.8.0-openjdk" + export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/jre + + export PATH=$PATH:$JAVA_HOME/bin + java -version # Verify the version of JDK. + ``` + +- Check the Hadoop setup and configurations of your cluster. Make sure you properly set the environment variable `HADOOP_CONF_DIR`, which is needed to initialize Spark on YARN: + + ```bash + export HADOOP_CONF_DIR=the directory of the hadoop and yarn configurations + ``` + +- **For CDH users** + +If your CDH cluster has already installed Spark, the CDH's spark will have conflict with the pyspark installed by pip required by analytics-zoo in next section. + +Thus before running analytics-zoo applications, you should unset all the spark related environment variables. You can use `env | grep SPARK` to find all the existing spark environment variables. + +Also, CDH cluster's `HADOOP_CONF_DIR` should by default be set to `/etc/hadoop/conf`. + +--- +### **2. YARN Client Mode** + +- Install Analytics Zoo in the created conda environment via pip: + + ```bash + pip install analytics-zoo + ``` + + View the [Python User Guide](./python.md) for more details. + + +- We recommend using `init_orca_context` at the very beginning of your code to initiate and run Analytics Zoo on standard Hadoop/YARN clusters in [YARN client mode](https://spark.apache.org/docs/latest/running-on-yarn.html#launching-spark-on-yarn): + + ```python + from zoo.orca import init_orca_context + + sc = init_orca_context(cluster_mode="yarn-client", cores=4, memory="10g", num_nodes=2) + ``` + + By specifying cluster_mode to be "yarn-client", `init_orca_context` would automatically prepare the runtime Python environment, detect the current Hadoop configurations from `HADOOP_CONF_DIR` and initiate the distributed execution engine on the underlying YARN cluster. View [Orca Context](../Orca/Overview/orca-context.md) for more details. + + +- You can then simply run your Analytics Zoo program in a Jupyter notebook: + + ```bash + jupyter notebook --notebook-dir=./ --ip=* --no-browser + ``` + + or as a normal Python script (e.g. script.py): + + ```bash + python script.py + ``` + +--- +### **3. YARN Cluster Mode** + +Follow the steps below if you need to run Analytics Zoo in [YARN cluster mode](https://spark.apache.org/docs/latest/running-on-yarn.html#launching-spark-on-yarn). + +- Download and extract [Spark](https://spark.apache.org/downloads.html). You are recommended to use [Spark 2.4.3](https://archive.apache.org/dist/spark/spark-2.4.3/spark-2.4.3-bin-hadoop2.7.tgz). Set the environment variable `SPARK_HOME`: + + ```bash + export SPARK_HOME=the root directory where you extract the downloaded Spark package + ``` + +- Download and extract [Analytics Zoo](../release.md). Make sure the Analytics Zoo package you download is built with the compatible version with your Spark. Set the environment variable `ANALYTICS_ZOO_HOME`: + + ```bash + export ANALYTICS_ZOO_HOME=the root directory where you extract the downloaded Analytics Zoo package + ``` + +- Pack the current conda environment to `environment.tar.gz` (you can use any name you like): + + ```bash + conda pack -o environment.tar.gz + ``` + +- _You need to write your Analytics Zoo program as a Python script._ In the script, you can call `init_orca_context` and specify cluster_mode to be "spark-submit": + + ```python + from zoo.orca import init_orca_context + + sc = init_orca_context(cluster_mode="spark-submit") + ``` + +- Use `spark-submit` to submit your Analytics Zoo program (e.g. script.py): + + ```bash + PYSPARK_PYTHON=./environment/bin/python ${ANALYTICS_ZOO_HOME}/bin/spark-submit-python-with-zoo.sh \ + --conf spark.yarn.appMasterEnv.PYSPARK_PYTHON=./environment/bin/python \ + --master yarn-cluster \ + --executor-memory 10g \ + --driver-memory 10g \ + --executor-cores 8 \ + --num-executors 2 \ + --archives environment.tar.gz#environment \ + script.py + ``` + + You can adjust the configurations according to your cluster settings. diff --git a/docs/readthedocs/source/doc/UserGuide/images/Databricks1.PNG b/docs/readthedocs/source/doc/UserGuide/images/Databricks1.PNG new file mode 100644 index 0000000000000000000000000000000000000000..7f4e2e530ac68cfdc285bb3ba0ff239697d8fac4 GIT binary patch literal 53554 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
  • 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 literal 0 HcmV?d00001 diff --git a/docs/readthedocs/source/doc/UserGuide/images/notebook1.jpg b/docs/readthedocs/source/doc/UserGuide/images/notebook1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..578d025b5aad6a1b96224165f796935786c9e294 GIT binary patch literal 97717 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 z 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�`?lV5Bnd)})>!MRoZ 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 jCCQR`0U@p15&t@{!haTc|4KIbG4=ld@YPiR literal 0 HcmV?d00001 diff --git a/docs/readthedocs/source/doc/UserGuide/images/notebook2.jpg b/docs/readthedocs/source/doc/UserGuide/images/notebook2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bc274a9c0cfdfd5ed0ea6966c23608c38ed5e444 GIT binary patch literal 51440 zcmeFZ2UrwMw=UX9RC3OY2#69TBWXZHKtxa^Cl!z+AbEg+0VL-jpr{NYL9)aFBuEyK zoFp@hfPlyh5(XHC+x|P8|NHhm|GD?vv-df7@2{nvN9gMATB}yQwd!4~>h$aB62Nft zhVBi3goFf00sjG~vw$XWhJ@tz&p%(J#A zouj4!FUqrY^t3c|zyJUHCBGm4{S^2^Lq$pTyT<>!>+~bQNJa9ULYVC2Xl&}}?CS36{nYn)bZmTLa_Z~!40;*!ZDn=s`}ziM=hyDu{sI2*=(k)X z0O>!8^{Z@#)RbTc#JCy5q| z;s2%*T>yx)Ci`Prm^#+qAk9Y6+43T|mKo8@yc(R#FHQk!?#@$Smv5vED-R`#gvx&} zGr*fIKu&?&{lrrstm+iN-9vQrU{8S)%32QsZSpA)mrL6u%1mTah&~0rtG-1nJw_0W zA=s*B=qaEv4?aq2cM2@OBXy4(93dDLZdOa1ZLpbEJoTm$Hb0m2;-jjl`m1w*g(#Ot zj1p_@7Eks@sv8r?Xm;h-C* zz{jtr0KNo@wu2#vPiGW}6uqZFw;{zmYwVxpN&Yvokf5|4{#l;4L^f!2FQNDE~ zZ24{6y>*C(ErPhOKFt$0gm_c2-n!+0FYRPokQ!bat0YTw_L2V*x1usWcr)#4`*-ap zI`4{yKA+^QXlA|e-WorwS@zi4TBfz@l37R4sBi}_BWkWD>1&lcq|LooRK7-%n)5Bp zY74oQh#PA+74=?5MtOJ^u1U*fM0_8q4AIn~$K=)IXKNfe}5??l~>ZN(W z3Va86Mdo5SsqSA1occ6@CJdGvxQY4X9bGE;+-hx5UCYI2=N=1M`Xc6f-DO=sD4rIZ7XC(b@ zIi%amRo<^^dcmrTzu^iY{)tR#Gu>I9rM+)Sd&8zdteN#)Jn= zcJlS30NY}w+q^L*CL&Ls1VV1={A6Api*Obozs&4Oz5mOWw7@mR zqwusY^n!QOBn;V^AD1!@hrjzX^z!yd6voQaU^}3 zw&=N-Sm2(YDJ+mW5M)YVu3YY(tii@(w!_NhJeXil+ihsf^RY=aWfoSm)&>u}-IS>e zW*7x8vL(CUd^+fvU`V-efhg8{{JkycK<&Y=6IH~~gldQvqMfttkzR5llv3p^E~uC9 z67FJYG2TzNjG$0deq508jIlY+=HA+u)aki21NFCcA&JBP5i=MiFLwJ{bsK6@FlTVm znXV>~T9>Kn{H?Fw;=Z?`*~XyXc^{ktq3cA}WNa@{;~}bU*C$!SUt_vPZ)7dF3Rsm{CaI((VBFOY zONYx5kLjrw@Q%G)%~v*drty>psPW3z7ZOeiFaMatsUVRwa1`)!_LsfSYG|N)pef

    Zxa57@WC%B`l{lu2t*Bi7KGr?M7Jj~}HvF;} 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

    %CJ8@}zFA4Q_X69@s^G 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 i|7FKK"] +} +``` +For instance, users in China may add the USTC mirror as follows: +``` +{ + "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] +} +``` + +After that, flush changes and restart docker: + +``` +sudo systemctl daemon-reload +sudo systemctl restart docker +``` + +### **2. Launch a Client Container** + +You can submit Analytics Zoo application from a client container that provides the required environment. + +```bash +sudo docker run -itd --net=host \ + -v /etc/kubernetes:/etc/kubernetes \ + -v /root/.kube:/root/.kube \ + intelanalytics/hyper-zoo:latest bash +``` + +**Note:** to create the client container, `-v /etc/kubernetes:/etc/kubernetes:` and `-v /root/.kube:/root/.kube` are required to specify the path of kube config and installation. + +You can specify more arguments: + +```bash +sudo docker run -itd --net=host \ + -v /etc/kubernetes:/etc/kubernetes \ + -v /root/.kube:/root/.kube \ + -e NOTEBOOK_PORT=12345 \ + -e NOTEBOOK_TOKEN="your-token" \ + -e http_proxy=http://your-proxy-host:your-proxy-port \ + -e https_proxy=https://your-proxy-host:your-proxy-port \ + -e RUNTIME_SPARK_MASTER=k8s://https://: \ + -e RUNTIME_K8S_SERVICE_ACCOUNT=account \ + -e RUNTIME_K8S_SPARK_IMAGE=intelanalytics/hyper-zoo:latest \ + -e RUNTIME_PERSISTENT_VOLUME_CLAIM=myvolumeclaim \ + -e RUNTIME_DRIVER_HOST=x.x.x.x \ + -e RUNTIME_DRIVER_PORT=54321 \ + -e RUNTIME_EXECUTOR_INSTANCES=1 \ + -e RUNTIME_EXECUTOR_CORES=4 \ + -e RUNTIME_EXECUTOR_MEMORY=20g \ + -e RUNTIME_TOTAL_EXECUTOR_CORES=4 \ + -e RUNTIME_DRIVER_CORES=4 \ + -e RUNTIME_DRIVER_MEMORY=10g \ + intelanalytics/hyper-zoo:latest bash +``` + +- NOTEBOOK_PORT value 12345 is a user specified port number. +- NOTEBOOK_TOKEN value "your-token" is a user specified string. +- http_proxy/https_proxy is to specify http proxy/https_proxy. +- RUNTIME_SPARK_MASTER is to specify spark master, which should be `k8s://https://:` or `spark://:`. +- RUNTIME_K8S_SERVICE_ACCOUNT is service account for driver pod. Please refer to k8s [RBAC](https://spark.apache.org/docs/latest/running-on-kubernetes.html#rbac). +- RUNTIME_K8S_SPARK_IMAGE is the k8s image. +- RUNTIME_PERSISTENT_VOLUME_CLAIM is to specify [Kubernetes volume](https://spark.apache.org/docs/latest/running-on-kubernetes.html#volume-mounts) mount. We are supposed to use volume mount to store or receive data. +- RUNTIME_DRIVER_HOST/RUNTIME_DRIVER_PORT is to specify driver localhost and port number (only required when submitting jobs via kubernetes client mode). +- Other environment variables are for spark configuration setting. The default values in this image are listed above. Replace the values as you need. + +Once the container is created, execute the container: + +```bash +sudo docker exec -it bash +``` + +You will login into the container and see this as the output: + +``` +root@[hostname]:/opt/spark/work-dir# +``` + +`/opt/spark/work-dir` is the spark work path. + +The `/opt` directory contains: + +- download-analytics-zoo.sh is used for downloading Analytics-Zoo distributions. +- start-notebook-spark.sh is used for starting the jupyter notebook on standard spark cluster. +- start-notebook-k8s.sh is used for starting the jupyter notebook on k8s cluster. +- analytics-zoo-x.x-SNAPSHOT is `ANALYTICS_ZOO_HOME`, which is the home of Analytics Zoo distribution. +- analytics-zoo-examples directory contains downloaded python example code. +- jdk is the jdk home. +- spark is the spark home. +- redis is the redis home. + +### **3. Run Analytics Zoo Examples on k8s** + +_**Note**: Please make sure `kubectl` has appropriate permission to create, list and delete pod._ + +_**Note**: Please refer to section 4 for some know issues._ + +#### **3.1 K8s client mode** + +We recommend using `init_orca_context` at the very beginning of your code (e.g. in script.py) to initiate and run Analytics Zoo on standard K8s clusters in [client mode](http://spark.apache.org/docs/latest/running-on-kubernetes.html#client-mode). + +```python +from zoo.orca import init_orca_context + +init_orca_context(cluster_mode="k8s", master="k8s://https://:", + container_image="intelanalytics/hyper-zoo:latest", + num_nodes=2, cores=2, + conf={"spark.driver.host": "x.x.x.x", + "spark.driver.port": "x"}) +``` + +Execute `python script.py` to run your program on k8s cluster directly. + +#### **3.2 K8s cluster mode** + +For k8s [cluster mode](https://spark.apache.org/docs/2.4.5/running-on-kubernetes.html#cluster-mode), you can call `init_orca_context` and specify cluster_mode to be "spark-submit" in your python script (e.g. in script.py): + +```python +from zoo.orca import init_orca_context + +init_orca_context(cluster_mode="spark-submit") +``` + +Use spark-submit to submit your Analytics Zoo program: + +```bash +${ANALYTICS_ZOO_HOME}/bin/spark-submit-python-with-zoo.sh \ + --master k8s://https://: \ + --deploy-mode cluster \ + --name analytics-zoo \ + --conf spark.kubernetes.container.image="intelanalytics/hyper-zoo:latest" \ + --conf spark.executor.instances=1 \ + --executor-memory 10g \ + --driver-memory 10g \ + --executor-cores 8 \ + --num-executors 2 \ + file:///path/script.py +``` + +#### **3.3 Run Jupyter Notebooks** + +After a Docker container is launched and user login into the container, you can start the Jupyter Notebook service inside the container. + +In the `/opt` directory, run this command line to start the Jupyter Notebook service: +``` +./start-notebook-k8s.sh +``` + +You will see the output message like below. This means the Jupyter Notebook service has started successfully within the container. +``` +[I 23:51:08.456 NotebookApp] Serving notebooks from local directory: /opt/analytics-zoo-0.11.0-SNAPSHOT/apps +[I 23:51:08.456 NotebookApp] Jupyter Notebook 6.2.0 is running at: +[I 23:51:08.456 NotebookApp] http://xxxx:12345/?token=... +[I 23:51:08.457 NotebookApp] or http://127.0.0.1:12345/?token=... +[I 23:51:08.457 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). +``` + +Then, refer [docker guide](./docker.md) to open Jupyter Notebook service from a browser and run notebook. + +#### **3.4 Run Scala programs** + +Use spark-submit to submit your Analytics Zoo program. e.g., run [anomalydetection](https://github.com/intel-analytics/analytics-zoo/tree/master/zoo/src/main/scala/com/intel/analytics/zoo/examples/anomalydetection) example (running in either local mode or cluster mode) as follows: + +```bash +${SPARK_HOME}/bin/spark-submit \ + --master ${RUNTIME_SPARK_MASTER} \ + --deploy-mode client \ + --conf spark.driver.host=${RUNTIME_DRIVER_HOST} \ + --conf spark.driver.port=${RUNTIME_DRIVER_PORT} \ + --conf spark.kubernetes.authenticate.driver.serviceAccountName=${RUNTIME_K8S_SERVICE_ACCOUNT} \ + --name analytics-zoo \ + --conf spark.kubernetes.container.image=${RUNTIME_K8S_SPARK_IMAGE} \ + --conf spark.executor.instances=${RUNTIME_EXECUTOR_INSTANCES} \ + --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.${RUNTIME_PERSISTENT_VOLUME_CLAIM}.options.claimName=${RUNTIME_PERSISTENT_VOLUME_CLAIM} \ + --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.${RUNTIME_PERSISTENT_VOLUME_CLAIM}.mount.path=/path \ + --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.${RUNTIME_PERSISTENT_VOLUME_CLAIM}.options.claimName=${RUNTIME_PERSISTENT_VOLUME_CLAIM} \ + --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.${RUNTIME_PERSISTENT_VOLUME_CLAIM}.mount.path=/path \ + --conf spark.kubernetes.driver.label.=true \ + --conf spark.kubernetes.executor.label.=true \ + --executor-cores ${RUNTIME_EXECUTOR_CORES} \ + --executor-memory ${RUNTIME_EXECUTOR_MEMORY} \ + --total-executor-cores ${RUNTIME_TOTAL_EXECUTOR_CORES} \ + --driver-cores ${RUNTIME_DRIVER_CORES} \ + --driver-memory ${RUNTIME_DRIVER_MEMORY} \ + --properties-file ${ANALYTICS_ZOO_HOME}/conf/spark-analytics-zoo.conf \ + --py-files ${ANALYTICS_ZOO_HOME}/lib/analytics-zoo-bigdl_${BIGDL_VERSION}-spark_${SPARK_VERSION}-${ANALYTICS_ZOO_VERSION}-python-api.zip \ + --conf spark.driver.extraJavaOptions=-Dderby.stream.error.file=/tmp \ + --conf spark.sql.catalogImplementation='in-memory' \ + --conf spark.driver.extraClassPath=${ANALYTICS_ZOO_HOME}/lib/analytics-zoo-bigdl_${BIGDL_VERSION}-spark_${SPARK_VERSION}-${ANALYTICS_ZOO_VERSION}-jar-with-dependencies.jar \ + --conf spark.executor.extraClassPath=${ANALYTICS_ZOO_HOME}/lib/analytics-zoo-bigdl_${BIGDL_VERSION}-spark_${SPARK_VERSION}-${ANALYTICS_ZOO_VERSION}-jar-with-dependencies.jar \ + --class com.intel.analytics.zoo.examples.anomalydetection.AnomalyDetection \ + ${ANALYTICS_ZOO_HOME}/lib/analytics-zoo-bigdl_${BIGDL_VERSION}-spark_${SPARK_VERSION}-${ANALYTICS_ZOO_VERSION}-python-api.zip \ + --inputDir /path +``` + +Options: + +- --master: the spark mater, must be a URL with the format `k8s://https://:`. +- --deploy-mode: submit application in client/cluster mode. +- --name: the Spark application name. +- --conf: to specify k8s service account, container image to use for the Spark application, driver volumes name and path, label of pods, spark driver and executor configuration, etc. You can refer to [spark configuration](https://spark.apache.org/docs/latest/configuration.html) and [spark on k8s configuration](https://spark.apache.org/docs/latest/running-on-kubernetes.html#configuration) for more details. +- --properties-file: the customized conf properties. +- --py-files: the extra python packages is needed. +- --class: scala example class name. +- --inputDir: input data path of the anomaly detection example. The data path is the mounted filesystem of the host. Refer to more details by [Kubernetes Volumes](https://spark.apache.org/docs/latest/running-on-kubernetes.html#using-kubernetes-volumes). + +### **4 Know issues** + +This section shows some common topics for both client mode and cluster mode. + +#### **4.1 How to retain executor logs for debugging?** + +The k8s would delete the pod once the executor failed in client mode and cluster mode. If you want to get the content of executor log, you could set "temp-dir" to a mounted network file system (NFS) storage to change the log dir to replace the former one. In this case, you may meet `JSONDecodeError` because multiple executors would write logs to the same physical folder and cause conflicts. The solutions are in the next section. + +```python +init_orca_context(..., extra_params = {"temp-dir": "/zoo/"}) +``` + +#### **4.2 How to deal with "JSONDecodeError" ?** + +If you set `temp-dir` to a mounted nfs storage and use multiple executors , you may meet `JSONDecodeError` since multiple executors would write to the same physical folder and cause conflicts. Do not mount `temp-dir` to shared storage is one option to avoid conflicts. But if you debug ray on k8s, you need to output logs to a shared storage. In this case, you could set num-nodes to 1. After testing, you can remove `temp-dir` setting and run multiple executors. + +#### **4.3 How to use NFS?** + +If you want to save some files out of pod's lifecycle, such as logging callbacks or tensorboard callbacks, you need to set the output dir to a mounted persistent volume dir. Let NFS be a simple example. + +Use NFS in client mode: + +```python +init_orca_context(cluster_mode="k8s", ..., + conf={..., + "spark.kubernetes.executor.volumes.persistentVolumeClaim.nfsvolumeclaim.options.claimName":"nfsvolumeclaim", + "spark.kubernetes.executor.volumes.persistentVolumeClaim.nfsvolumeclaim.mount.path": "/zoo" + }) +``` + +Use NFS in cluster mode: + +```bash +${ANALYTICS_ZOO_HOME}/bin/spark-submit-python-with-zoo.sh \ + --... ...\ + --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.nfsvolumeclaim.options.claimName="nfsvolumeclaim" \ + --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.nfsvolumeclaim.mount.path="/zoo" \ + --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.nfsvolumeclaim.options.claimName="nfsvolumeclaim" \ + --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.nfsvolumeclaim.mount.path="/zoo" \ + file:///path/script.py +``` + +#### **4.4 How to deal with "RayActorError" ?** + +"RayActorError" may caused by running out of the ray memory. If you meet this error, try to increase the memory for ray. + +```python +init_orca_context(..., exra_executor_memory_for_ray=100g) +``` + +#### **4.5 How to set proper "steps_per_epoch" and "validation steps" ?** + +The `steps_per_epoch` and `validation_steps` should equal to numbers of dataset divided by batch size if you want to train all dataset. The `steps_per_epoch` and `validation_steps` do not relate to the `num_nodes` when total dataset and batch size are fixed. For example, you set `num_nodes` to 1, and set `steps_per_epoch` to 6. If you change the `num_nodes` to 3, the `steps_per_epoch` should still be 6. + +#### **4.6 Others** + +`spark.kubernetes.container.image.pullPolicy` needs to be specified as `always` if you need to update your spark executor image for k8s. + +### **5. Access logs and clear pods** + +When application is running, it’s possible to stream logs on the driver pod: + +```bash +$ kubectl logs +``` + +To check pod status or to get some basic information around pod using: + +```bash +$ kubectl describe pod +``` + +You can also check other pods using the similar way. + +After finishing running the application, deleting the driver pod: + +```bash +$ kubectl delete +``` + +Or clean up the entire spark application by pod label: + +```bash +$ kubectl delete pod -l +``` diff --git a/docs/readthedocs/source/doc/UserGuide/notebooks.md b/docs/readthedocs/source/doc/UserGuide/notebooks.md new file mode 100644 index 00000000..c34b267c --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/notebooks.md @@ -0,0 +1,72 @@ +# Colab notebooks + +--- + +## Quick Start + +- **TensorFlow 1.15 Quickstart** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf_lenet_mnist.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf_lenet_mnist.ipynb) + +- **Keras 2.3 Quickstart** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/keras_lenet_mnist.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/keras_lenet_mnist.ipynb) + +- **TensorFlow 2 Quickstart** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf2_keras_lenet_mnist.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/tf2_keras_lenet_mnist.ipynb) + +- **PyTorch Quickstart** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_lenet_mnist.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_lenet_mnist.ipynb) + + +## Common Use Case + +- **Use `torch.distributed` in Orca** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_distributed_lenet_mnist.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/pytorch_distributed_lenet_mnist.ipynb) + + +- **Use Spark Dataframe for Deep Learning** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_dataframe.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_dataframe.ipynb) + +- **Use Distributed Pandas for Deep Learning** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_xshards_pandas.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/ncf_xshards_pandas.ipynb) + +- **Use AutoML for Time-Series Forecasting** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_autots_nyc_taxi.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_autots_nyc_taxi.ipynb) + +- **Use TSDataset and Forecaster for Time-Series Forecasting** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_nyc_taxi_tsdataset_forecaster.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_nyc_taxi_tsdataset_forecaster.ipynb) + +- **Use Anomaly Detector for Unsupervised Anomaly Detection** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_minn_traffic_anomaly_detector.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/chronos/chronos_minn_traffic_anomaly_detector.ipynb) + +- **Enable AutoML for PyTorch** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoestimator_pytorch_lenet_mnist.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoestimator_pytorch_lenet_mnist.ipynb) + +- **Use AutoXGBoost to auto-tune XGBoost parameters** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoxgboost_regressor_sklearn_boston.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/quickstart/autoxgboost_regressor_sklearn_boston.ipynb) + + +## AI Application Case + +- **Use Pytorch for Fashion MNIST Image Classification** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/examples/fashion_mnist_bigdl.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/examples/fashion_mnist_bigdl.ipynb) + +- **Use Keras for Text Classification** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/examples/basic_text_classification.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/examples/basic_text_classification.ipynb) + +- **Use Pytorch for Image Super Resolution** + +![](../../../image/colab_logo_32px.png)[Run in Google Colab](https://colab.research.google.com/github/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/examples/super_resolution.ipynb)  ![](../../../image/GitHub-Mark-32px.png)[View source on GitHub](https://github.com/intel-analytics/analytics-zoo/blob/master/docs/docs/colab-notebook/orca/examples/super_resolution.ipynb) diff --git a/docs/readthedocs/source/doc/UserGuide/python.md b/docs/readthedocs/source/doc/UserGuide/python.md new file mode 100644 index 00000000..1d309a42 --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/python.md @@ -0,0 +1,150 @@ +# Python User Guide + +--- +### **1. Install** +- We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to prepare the Python environment as follows: + + ```bash + conda create -n zoo python=3.7 # "zoo" is conda environment name, you can use any name you like. + conda activate zoo + ``` + +- You need to install JDK in the environment, and properly set the environment variable `JAVA_HOME`. __JDK8__ is highly recommended. + + You may take the following commands as a reference for installing [OpenJDK](https://openjdk.java.net/install/): + + ```bash + # For Ubuntu + sudo apt-get install openjdk-8-jre + export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/ + + # For CentOS + su -c "yum install java-1.8.0-openjdk" + export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.282.b08-1.el7_9.x86_64/jre + + export PATH=$PATH:$JAVA_HOME/bin + java -version # Verify the version of JDK. + ``` + +#### **1.1 Official Release** + +You can install the latest release version of Analytics Zoo as follows: +```bash +pip install analytics-zoo +``` +_**Note:** Installing Analytics Zoo will automatically install `bigdl==0.13.0`, `pyspark==2.4.6`, `conda-pack==0.3.1` and their dependencies if they haven't been detected in your conda environment._ + +#### **1.2 Nightly Build** + +You can install the latest nightly build of Analytics Zoo as follows: + +```bash +pip install --pre --upgrade analytics-zoo +``` + +Alternatively, you can find the list of the nightly build versions [here](https://pypi.org/project/analytics-zoo/#history), and install a specific version as follows: + +```bash +pip install analytics-zoo=version +``` + +_**Note:** If you are using a custom URL of Python Package Index, you may need to check whether the latest packages have been sync'ed with pypi. +Or you can add the option `-i https://pypi.python.org/simple` when pip install to use pypi as the index-url._ + +--- +### **2. Run** + +_**Note:** Installing Analytics Zoo from pip will automatically install `pyspark`. To avoid possible conflicts, you are highly recommended to **unset the environment variable `SPARK_HOME`** if it exists in your environment._ + + +#### **2.1 Interactive Shell** + +You may test if the installation is successful using the interactive Python shell as follows: + +* Type `python` in the command line to start a REPL. +* Try to run the example code below to verify the installation: + + ```python + import zoo + from zoo.orca import init_orca_context + + print(zoo.__version__) # Verify the version of analytics-zoo. + sc = init_orca_context() # Initiation of analytics-zoo on the underlying cluster. + ``` + +#### **2.2 Jupyter Notebook** + +You can start the Jupyter notebook as you normally do using the following command and run Analytics Zoo programs directly in a Jupyter notebook: + +```bash +jupyter notebook --notebook-dir=./ --ip=* --no-browser +``` + +#### **2.3 Python Script** + +You can directly write Analytics Zoo programs in a Python file (e.g. script.py) and run in the command line as a normal Python program: + +```bash +python script.py +``` + +--- +### **3. Python Dependencies** + +We recommend using [conda](https://docs.conda.io/projects/conda/en/latest/user-guide/install/) to manage your Python dependencies. Libraries installed in the current conda environment will be automatically distributed to the cluster when calling `init_orca_context`. You can also add extra dependencies as `.py`, `.zip` and `.egg` files by specifying `extra_python_lib` argument in `init_orca_context`. + +For more details, please refer to [Orca Context](../Orca/Overview/orca-context.md). + +--- +### **4. Compatibility** + +Analytics Zoo has been tested on __Python 3.6 and 3.7__ with the following library versions: + +```bash +pyspark==2.4.6 +ray==1.2.0 +tensorflow==1.15.0 or >2.0 +pytorch>=1.5.0 +torchvision>=0.6.0 +horovod==0.19.2 +mxnet>=1.6.0 +bayesian-optimization==1.1.0 +dask==2.14.0 +h5py==2.10.0 +numpy==1.18.1 +opencv-python==4.2.0.34 +pandas==1.0.3 +Pillow==7.1.1 +protobuf==3.12.0 +psutil==5.7.0 +py4j==0.10.7 +redis==3.4.1 +scikit-learn==0.22.2.post1 +scipy==1.4.1 +tensorboard==1.15.0 +tensorboardX>=2.1 +tensorflow-datasets==3.2.0 +tensorflow-estimator==1.15.1 +tensorflow-gan==2.0.0 +tensorflow-hub==0.8.0 +tensorflow-metadata==0.21.1 +tensorflow-probability==0.7.0 +Theano==1.0.4 +``` + +--- +### **5. Known Issues** + +- If you meet the following error when `pip install analytics-zoo`: +``` +ERROR: Could not find a version that satisfies the requirement pypandoc (from versions: none) +ERROR: No matching distribution found for pypandoc +Could not import pypandoc - required to package PySpark +Traceback (most recent call last): + File "/root/anaconda3/lib/python3.8/site-packages/setuptools/installer.py", line 126, in fetch_build_egg + subprocess.check_call(cmd) + File "/root/anaconda3/lib/python3.8/subprocess.py", line 364, in check_call + raise CalledProcessError(retcode, cmd) +subprocess.CalledProcessError: Command '['/root/anaconda3/bin/python', '-m', 'pip', '--disable-pip-version-check', 'wheel', '--no-deps', '-w', '/tmp/tmprefr87ue', '--quiet', 'pypandoc']' returned non-zero exit status 1. +``` +This is actually caused by `pip install pyspark` in your Python environment. You can fix it by running `pip install pypandoc` first and then `pip install analytics-zoo`. diff --git a/docs/readthedocs/source/doc/UserGuide/scala.md b/docs/readthedocs/source/doc/UserGuide/scala.md new file mode 100644 index 00000000..a408f8dd --- /dev/null +++ b/docs/readthedocs/source/doc/UserGuide/scala.md @@ -0,0 +1,163 @@ +# Scala User Guide + +--- + +### **1. Try Analytics Zoo Examples** +This section will show you how to download Analytics Zoo prebuild packages and run the build-in examples. + +#### **1.1 Download and config** +You can download the Analytics Zoo official releases and nightly build from the [Release Page](../release.md). After extracting the prebuild package, you need to set environment variables **ANALYTICS_ZOO_HOME** and **SPARK_HOME** as follows: + +```bash +export SPARK_HOME=folder path where you extract the Spark package +export ANALYTICS_ZOO_HOME=folder path where you extract the Analytics Zoo package +``` + +#### **1.2 Use Spark interactive shell** +You can try Analytics Zoo using the Spark interactive shell as follows: + +```bash +${ANALYTICS_ZOO_HOME}/bin/spark-shell-with-zoo.sh --master local[2] +``` + +You will then see a welcome message like below: + +``` +Welcome to + ____ __ + / __/__ ___ _____/ /__ + _\ \/ _ \/ _ `/ __/ '_/ + /___/ .__/\_,_/_/ /_/\_\ version 2.4.3 + /_/ + +Using Scala version 2.11.12 (Java HotSpot(TM) 64-Bit Server VM, Java 1.8.0_112) +Type in expressions to have them evaluated. +Type :help for more information. +``` + +Before you try Analytics Zoo APIs, you should use `initNNcontext` to verify your environment: + +```scala +scala> import com.intel.analytics.zoo.common.NNContext +import com.intel.analytics.zoo.common.NNContext + +scala> val sc = NNContext.initNNContext("Run Example") +2021-01-26 10:19:52 WARN SparkContext:66 - Using an existing SparkContext; some configuration may not take effect. +2021-01-26 10:19:53 WARN SparkContext:66 - Using an existing SparkContext; some configuration may not take effect. +sc: org.apache.spark.SparkContext = org.apache.spark.SparkContext@487f025 +``` + +#### **1.3 Run Analytics Zoo examples** + +You can run an Analytics Zoo example, e.g., the [Wide & Deep Recommendation](https://github.com/intel-analytics/analytics-zoo/tree/master/zoo/src/main/scala/com/intel/analytics/zoo/examples/recommendation), as a standard Spark program (running in either local mode or cluster mode) as follows: + +1. Download Census Income Dataset to `./data/census` from [here](https://archive.ics.uci.edu/ml/datasets/Census+Income). + +2. Run the following command: +```bash +# Spark local mode +${ANALYTICS_ZOO_HOME}/bin/spark-submit-scala-with-zoo.sh \ + --master local[2] \ + --class com.intel.analytics.zoo.examples.recommendation.WideAndDeepExample \ + dist/lib/analytics-zoo-bigdl_0.12.1-spark_2.4.3-0.9.0-jar-with-dependencies.jar \ #change to your jar file if your download is not spark_2.4.3-0.9.0 + --inputDir ./data/census \ + --batchSize 320 \ + --maxEpoch 20 \ + --dataset census + +# Spark standalone mode +${ANALYTICS_ZOO_HOME}/bin/spark-submit-scala-with-zoo.sh \ + --master spark://... \ #add your spark master address + --executor-cores cores_per_executor \ + --total-executor-cores total_cores_for_the_job \ + --class com.intel.analytics.zoo.examples.recommendation.WideAndDeepExample \ + dist/lib/analytics-zoo-bigdl_0.12.1-spark_2.4.3-0.9.0-jar-with-dependencies.jar \ #change to your jar file if your download is not spark_2.4.3-0.9.0 + --inputDir ./data/census \ + --batchSize 320 \ + --maxEpoch 20 \ + --dataset census + +# Spark yarn client mode, please make sure the right HADOOP_CONF_DIR is set +${ANALYTICS_ZOO_HOME}/bin/spark-submit-scala-with-zoo.sh \ + --master yarn \ + --deploy-mode client \ + --executor-cores cores_per_executor \ + --num-executors executors_number \ + --class com.intel.analytics.zoo.examples.recommendation.WideAndDeepExample \ + dist/lib/analytics-zoo-bigdl_0.12.1-spark_2.4.3-0.9.0-jar-with-dependencies.jar \ #change to your jar file if your download is not spark_2.4.3-0.9.0 + --inputDir ./data/census \ + --batchSize 320 \ + --maxEpoch 20 \ + --dataset census + +# Spark yarn cluster mode, please make sure the right HADOOP_CONF_DIR is set +${ANALYTICS_ZOO_HOME}/bin/spark-submit-scala-with-zoo.sh \ + --master yarn \ + --deploy-mode cluster \ + --executor-cores cores_per_executor \ + --num-executors executors_number \ + --class com.intel.analytics.zoo.examples.recommendation.WideAndDeepExample \ + dist/lib/analytics-zoo-bigdl_0.12.1-spark_2.4.3-0.9.0-jar-with-dependencies.jar \ #change to your jar file if your download is not spark_2.4.3-0.9.0 + --inputDir ./data/census \ + --batchSize 320 \ + --maxEpoch 20 \ + --dataset census +``` + +--- + +### **2. Build Analytics Zoo Applications** + +This section will show you how to build your own deep learning project with Analytics Zoo. + +#### **2.1 Add Analytics Zoo dependency** +##### **2.1.1 official Release** +Currently, Analytics Zoo releases are hosted on maven central; below is an example to add the Analytics Zoo dependency to your own project: + + +```xml + + com.intel.analytics.zoo + analytics-zoo-bigdl_0.12.1-spark_2.4.3 + 0.9.0 + +``` + +You can find the other SPARK version [here](https://search.maven.org/search?q=analytics-zoo-bigdl), such as `spark_2.1.1`, `spark_2.2.1`, `spark_2.3.1`, `spark_3.0.0`. + + +SBT developers can use +```sbt +libraryDependencies += "com.intel.analytics.zoo" % "analytics-zoo-bigdl_0.12.1-spark_2.4.3" % "0.9.0" +``` + +##### **2.1.2 Nightly Build** + +Currently, Analytics Zoo nightly build is hosted on [SonaType](https://oss.sonatype.org/content/groups/public/com/intel/analytics/zoo/). + +To link your application with the latest Analytics Zoo nightly build, you should add some dependencies like [official releases](#11-official-release), but change `0.9.0` to the snapshot version (such as 0.10.0-snapshot), and add below repository to your pom.xml. + + +```xml + + sonatype + sonatype repository + https://oss.sonatype.org/content/groups/public/ + + true + + + true + + +``` + +SBT developers can use +```sbt +resolvers += "ossrh repository" at "https://oss.sonatype.org/content/repositories/snapshots/" +``` + + +#### **2.2 Build a Scala project** +To enable Analytics Zoo in project, you should add Analytics Zoo to your project's dependencies using maven or sbt. Here is a [simple MLP example](https://github.com/intel-analytics/zoo-tutorials/tree/master/scala/SimpleMlp) to show you how to use Analytics Zoo to build your own deep learning project using maven or sbt, and how to run the simple example in IDEA and spark-submit. + diff --git a/docs/readthedocs/source/doc/release.md b/docs/readthedocs/source/doc/release.md new file mode 100644 index 00000000..d06a5759 --- /dev/null +++ b/docs/readthedocs/source/doc/release.md @@ -0,0 +1,179 @@ +# Release Download + +- **Release 0.12.0 nightly build** + + + + + + + + + + + + + + + + + + + + + + + + + +
    BigDL 0.13.0
    Spark 2.1.1 download
    Spark 2.2.1 download
    Spark 2.3.1 download
    Spark 2.4.6 download
    Spark 3.0.0 download
    +
    + +- **Release 0.11.0** + + + + + + + + + + + + + + + + + + + + + + + + + +
    BigDL 0.13.0
    Spark 2.1.1 download
    Spark 2.2.1 download
    Spark 2.3.1 download
    Spark 2.4.6 download
    Spark 3.0.0 download
    +
    + +- **Release 0.10.0** + + + + + + + + + + + + + + + + + + + + + + + + + +
    BigDL 0.12.2
    Spark 2.1.1 download
    Spark 2.2.1 download
    Spark 2.3.1 download
    Spark 2.4.3 download
    Spark 3.0.0 download
    +
    + +- **Release 0.9.0** + + + + + + + + + + + + + + + + + + + + + + + + + +
    BigDL 0.12.1
    Spark 2.1.1 download
    Spark 2.2.1 download
    Spark 2.3.1 download
    Spark 2.4.3 download
    Spark 3.0.0 download
    +
    + +- **Release 0.8.1** + + + + + + + + + + + + + + + + + + + + + +
    BigDL 0.10.0
    Spark 2.1.1 download
    Spark 2.2.1 download
    Spark 2.3.1 download
    Spark 2.4.3 download
    +
    + +- **Release 0.7.0** + + + + + + + + + + + + + + + + + + + + + +
    BigDL 0.10.0
    Spark 2.1.1 download
    Spark 2.2.1 download
    Spark 2.3.1 download
    Spark 2.4.3 download
    +
    + + + diff --git a/docs/readthedocs/source/index.rst b/docs/readthedocs/source/index.rst new file mode 100644 index 00000000..bf77bbda --- /dev/null +++ b/docs/readthedocs/source/index.rst @@ -0,0 +1,86 @@ +Analytics Zoo Documentation +=========================== + +------ + +`Analytics Zoo `_ is an open source Big Data AI platform, and includes the following features for scaling end-to-end AI to distributed Big Data: + +* `Orca `_: seamlessly scale out TensorFlow and PyTorch for Big Data (using Spark & Ray) +* `RayOnSpark `_: run Ray programs directly on Big Data clusters +* **BigDL Extensions**: high-level `Spark ML pipeline `_ and `Keras-like `_ APIs for BigDL +* `Chronos `_: scalable time series analysis using AutoML +* `PPML `_: privacy preserving big data analysis and machine learning (*experimental*) + + +------- + + +.. meta:: + :google-site-verification: hG9ocvSRSRTY5z8g6RLn97_tdJvYRx_tVGhNdtZZavM + +.. toctree:: + :maxdepth: 1 + :caption: Quick Start + + doc/Orca/QuickStart/orca-tf-quickstart.md + doc/Orca/QuickStart/orca-keras-quickstart.md + doc/Orca/QuickStart/orca-tf2keras-quickstart.md + doc/Orca/QuickStart/orca-pytorch-quickstart.md + doc/Ray/QuickStart/ray-quickstart.md + +.. toctree:: + :maxdepth: 1 + :caption: User Guide + + doc/UserGuide/python.md + doc/UserGuide/scala.md + doc/UserGuide/colab.md + doc/UserGuide/docker.md + doc/UserGuide/hadoop.md + doc/UserGuide/k8s.md + doc/UserGuide/databricks.md + doc/Ray/Overview/ray.md + doc/Chronos/Overview/chronos.md + doc/PPML/Overview/ppml.md + doc/UserGuide/develop.md + +.. toctree:: + :maxdepth: 1 + :caption: Common Use Case + + doc/Orca/QuickStart/orca-pytorch-distributed-quickstart.md + doc/UseCase/spark-dataframe.md + doc/UseCase/xshards-pandas.md + doc/Chronos/QuickStart/chronos-autotsest-quickstart.md + doc/Chronos/QuickStart/chronos-tsdataset-forecaster-quickstart.md + doc/Chronos/QuickStart/chronos-anomaly-detector.md + doc/UseCase/keras-api.md + doc/UseCase/nnframes.md + doc/Orca/QuickStart/orca-autoestimator-pytorch-quickstart.md + doc/Orca/QuickStart/orca-autoxgboost-quickstart.md + +.. toctree:: + :maxdepth: 1 + :caption: Orca Overview + + doc/Orca/Overview/orca.md + doc/Orca/Overview/orca-context.md + doc/Orca/Overview/data-parallel-processing.md + doc/Orca/Overview/distributed-training-inference.md + doc/Orca/Overview/distributed-tuning.md + +.. toctree:: + :maxdepth: 1 + :caption: Python API + + doc/PythonAPI/Orca/orca.rst + doc/PythonAPI/AutoML/automl.rst + doc/PythonAPI/Friesian/feature.rst + doc/PythonAPI/Chronos/index.rst + +.. toctree:: + :maxdepth: 1 + :caption: Real-World Application + + doc/Application/presentations.md + doc/Application/powered-by.md

    Y%tgKx*_SCS!oHfOOT)akVN{UctDl3|}u9R?3$y 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�Uqq;u~- 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%0D0^lMsmPsN9)?)9ymoVI#o~ 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 KPd}OdO#K)17RGY` literal 0 HcmV?d00001 diff --git a/docs/readthedocs/source/doc/UserGuide/images/notebook5.jpg b/docs/readthedocs/source/doc/UserGuide/images/notebook5.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d8297c3ed321d00da57f355e92298a11a508323f GIT binary patch literal 87998 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

  • g7srNl>yMrJ<#Qx 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 TL4XIpAT?Ka(d?+1t9Sn|M1mE; literal 0 HcmV?d00001 diff --git a/docs/readthedocs/source/doc/UserGuide/images/Databricks4.PNG b/docs/readthedocs/source/doc/UserGuide/images/Databricks4.PNG new file mode 100644 index 0000000000000000000000000000000000000000..6d1cbd94f28d3d7dcd9091c2c4269d8e404522a2 GIT binary patch literal 40798 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