Chronos: add updated information about models and Nano to document (#4048)

* add updated information about models and Nano

* fix false formate

* add quantization related information

* fix missing quantization api doc

* fix typos
This commit is contained in:
Junwei Deng 2022-02-17 11:10:12 +08:00 committed by GitHub
parent c9be2b979e
commit 1375438de3
3 changed files with 84 additions and 17 deletions

View file

@ -10,6 +10,8 @@ You can use _Chronos_ to do:
- **Anomaly Detection** (using [Anomaly Detectors](./anomaly_detection.html#anomaly-detection))
- **Synthetic Data Generation** (using [Simulators](./simulation.html#generate-synthetic-data))
Furthermore, Chronos is adapted to integrate many optimized library and best known methods(BKMs) for accuracy and performance improvement.
---
### **2. Install**
@ -26,6 +28,12 @@ pip install bigdl-chronos[all]
# nightly built version
pip install --pre --upgrade bigdl-chronos[all]
```
```eval_rst
.. note::
**Supported OS**:
Chronos is thoroughly tested on Ubuntu (16.04/18.04/20.04). If you are a Windows user, the most convenient way to use Chronos on a windows laptop might be using WSL2, you may refer to https://docs.microsoft.com/en-us/windows/wsl/setup/environment or just install a ubuntu virtual machine.
```
---
### **3. Run**
Various python programming environments are supported to run a _Chronos_ application.
@ -46,6 +54,18 @@ You can directly write _Chronos_ application in a python file (e.g. script.py) a
python script.py
```
```eval_rst
.. note::
**Optimization on Intel® Hardware**:
Chronos integrated many optimized library and best known methods(BKMs), users can have best performance to add ``bigdl-nano-init`` before their scripts.
``bigdl-nano-init python script.py``
Currently, this function is under active development and we encourage our users to add ``bigdl-nano-init`` for forecaster's training.
```
---
### **4. Get Started**
@ -61,7 +81,7 @@ Otherwise, there is no need to initialize an orca context.
View [Orca Context](../../Orca/Overview/orca-context.md) for more details. Note that argument `init_ray_on_spark` must be `True` for _Chronos_.
```python
from bigdl.orca.common import init_orca_context, stop_orca_context
from bigdl.orca import init_orca_context, stop_orca_context
# run in local mode
init_orca_context(cluster_mode="local", cores=4, init_ray_on_spark=True)
@ -101,7 +121,6 @@ for tsdata in [tsdata_train, tsdata_val, tsdata_test]:
# AutoTSEstimator initalization
autotsest = AutoTSEstimator(model="tcn",
past_seq_len=hp.randint(50, 200),
future_seq_len=10)
# AutoTSEstimator fitting

View file

@ -7,21 +7,38 @@ There're three ways to do forecasting:
- Use [**auto forecasting models**](#use-auto-forecasting-model) with auto hyperparameter optimization.
- Use [**standalone forecasters**](#use-standalone-forecaster-pipeline).
#### **0. Supported Time Series Forecasting Model**
- `Model`: Model name.
- `Style`: Forecasting model style. Detailed information will be stated in [this section](#time-series-forecasting-concepts).
- `Multi-Variate`: Predict more than one variable at the same time?
- `Multi-Step`: Predict more than one data point in the future?
- `Exogenous Variables`: Take other variables(you don't need to predict) into consideration?
- `Distributed`: Scale the model to a cluster and take data from distributed file system?
- `ONNX`: Export and use `OnnxRuntime` to do the inference.
- `Quantization`: Export and use quantized int8 model to do the inference.
- `Auto Models`: AutoModel API support.
- `AutoTS`: AutoTS API support.
- `Backend`: The DL framework we use to implement this model.
<span id="supported_forecasting_model"></span>
| 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 |
| Model | Style | Multi-Variate | Multi-Step | Exogenous Variables | Distributed | ONNX | Quantization | Auto Models | AutoTS | Backend |
| ----------------- | ----- | ------------- | ---------- | ------- | ----------- | ----------- | ----------- | ----------- | ----------- | ----------- |
| LSTM | RR | ✅ | ❌ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | pytorch |
| Seq2Seq | RR | ✅ | ✅ | ✅ | ✅ | ✅ | ❌ | ✅ | ✅ | pytorch |
| TCN | RR | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | pytorch |
| NBeats | RR | ❌ | ✅ | ❌ | ✅ | ✅ | ✅ | ❌ | ❌ | pytorch |
| MTNet | RR | ✅ | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ✳️\*\* | tensorflow |
| TCMF | TS | ✅ | ✅ | ✅ | ✳️\* | ❌ | ❌ | ❌ | ❌ | pytorch |
| Prophet | TS | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | prophet |
| ARIMA | TS | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | pmdarima |
| Customized\*\*\* | RR | Customized | Customized | Customized | ❌ |✅|❌|❌|✅|pytorch
\* TCMF only partially supports distributed training.<br>
\*\* Auto tuning of MTNet is only supported in our deprecated AutoTS API.<br>
\*\*\* Customized model is only supported in `AutoTSEstimator` with pytorch as backend.
\* Distributed training/inferencing is only supported by standalone forecasters.<br>
\*\* TCMF only partially supports distributed training.<br>
\*\*\* Auto tuning of MTNet is only supported in our deprecated AutoTS API.<br>
#### **1. Time Series Forecasting Concepts**
@ -203,14 +220,19 @@ ProphetForecaster wraps the Prophet model ([site](https://github.com/facebook/pr
View Stock Prediction [notebook](https://github.com/intel-analytics/BigDL/blob/branch-2.0/python/chronos/use-case/fsi/stock_prediction_prophet.ipynb) and [ProphetForecaster API Doc](../../PythonAPI/Chronos/forecasters.html#prophetforecaster) for more details.
<span id="NBeatsForecaster"></span>
###### **3.8 NBeatsForecaster**
Neural basis expansion analysis for interpretable time series forecasting ([N-BEATS](https://arxiv.org/abs/1905.10437)) is a deep neural architecture based on backward and forward residual links and a very deep stack of fully-connected layers. Nbeats can solve univariate time series point forecasting problems, being interpretable, and fast to train.
#### **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(...)
auto_model = AutoModel(...)
# input data, batch size, epoch...
f.fit(...)
auto_model.fit(...)
# input test data x, batch size...
f.predict(...)
auto_model.predict(...)
```
The input data can be easily get from `TSDataset`. Users can refer to detailed [API doc](../../PythonAPI/Chronos/automodels.html).

View file

@ -90,3 +90,29 @@ f = Forecaster(..., distributed=True)
f.fit(tsdata_xshards, ...)
f.predict(test_tsdata_xshards, ...)
```
#### **5. Quantization**
Quantization refers to processes that enable lower precision inference. In Chronos, post-training quantization is supported relied on [Intel® Neural Compressor](https://intel.github.io/neural-compressor/README.html).
```python
# init
f = Forecaster(...)
# train the forecaster
f.fit(train_data, ...)
# quantize the forecaster
f.quantize(train_data, ...)
# predict with int8 model with better inference throughput
f.predict(test_data, quantize=True)
# predict with fp32
f.predict(test_data, quantize=False)
# save
f.save(checkpoint_file="fp32.model"
quantize_checkpoint_file="int8.model")
# load
f.load(checkpoint_file="fp32.model"
quantize_checkpoint_file="int8.model")
```