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:
		
							parent
							
								
									c9be2b979e
								
							
						
					
					
						commit
						1375438de3
					
				
					 3 changed files with 84 additions and 17 deletions
				
			
		| 
						 | 
				
			
			@ -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
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -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).
 | 
			
		||||
| 
						 | 
				
			
			@ -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")
 | 
			
		||||
```
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue