My question about ALSTM reproduction
Open
Nobody has claimed this yet.
question
- Dominant language
- Python
- Stars
- 48.7k
- Forks
- 7.7k
- PR merge metrics
- No merged PRs in 30d
Description
❓ Questions and Help
(ALSTM-1) [steve@gpu01 ALSTM]$ qrun workflow_config_alstm_Alpha158.yaml
[36025:MainThread](2024-03-19 21:56:20,365) INFO - qlib.Initialization - [config.py:416] - default_conf: client.
[36025:MainThread](2024-03-19 21:56:20,368) INFO - qlib.Initialization - [__init__.py:74] - qlib successfully initialized based on client settings.
[36025:MainThread](2024-03-19 21:56:20,368) INFO - qlib.Initialization - [__init__.py:76] - data_path={'__DEFAULT_FREQ': PosixPath('/home/steve/.qlib/qlib_data/cn_data')}
[36025:MainThread](2024-03-19 21:56:20,370) INFO - qlib.workflow - [exp.py:258] - Experiment 1 starts running ...
[36025:MainThread](2024-03-19 21:56:20,457) INFO - qlib.workflow - [recorder.py:341] - Recorder bae742011ad2426f9f0684c0cbeaba50 starts running under Experiment 1 ...
ModuleNotFoundError. CatBoostModel are skipped. (optional: maybe installing CatBoostModel can fix it.)
ModuleNotFoundError. XGBModel is skipped(optional: maybe installing xgboost can fix it).
[36025:MainThread](2024-03-19 21:56:22,388) INFO - qlib.ALSTM - [pytorch_alstm_ts.py:63] - ALSTM pytorch version...
[36025:MainThread](2024-03-19 21:56:22,579) INFO - qlib.ALSTM - [pytorch_alstm_ts.py:81] - ALSTM parameters setting:
d_feat : 20
hidden_size : 64
num_layers : 2
dropout : 0.0
n_epochs : 200
lr : 0.001
metric : loss
batch_size : 800
early_stop : 10
optimizer : adam
loss_type : mse
device : cuda:0
n_jobs : 20
use_GPU : True
seed : None
[36025:MainThread](2024-03-19 21:56:22,586) INFO - qlib.ALSTM - [pytorch_alstm_ts.py:126] - model:
ALSTMModel(
(net): Sequential(
(fc_in): Linear(in_features=20, out_features=64, bias=True)
(act): Tanh()
)
(rnn): GRU(64, 64, num_layers=2, batch_first=True)
(fc_out): Linear(in_features=128, out_features=1, bias=True)
(att_net): Sequential(
(att_fc_in): Linear(in_features=64, out_features=32, bias=True)
(att_dropout): Dropout(p=0.0, inplace=False)
(att_act): Tanh()
(att_fc_out): Linear(in_features=32, out_features=1, bias=False)
(att_softmax): Softmax(dim=1)
)
)
[36025:MainThread](2024-03-19 21:56:22,587) INFO - qlib.ALSTM - [pytorch_alstm_ts.py:127] - model size: 0.0510 MB
[36025:MainThread](2024-03-19 21:56:25,678) INFO - qlib.timer - [log.py:127] - Time cost: 0.000s | waiting `async_log` Done
[36025:MainThread](2024-03-19 21:56:25,681) ERROR - qlib.workflow - [utils.py:41] - An exception has been raised[TypeError: cannot do slice indexing on Index with these indexers [1892] of type int].
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/bin/qrun", line 8, in <module>
sys.exit(run())
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/workflow/cli.py", line 117, in run
fire.Fire(workflow)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/fire/core.py", line 143, in Fire
component_trace = _Fire(component, args, parsed_flag_args, context, name)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/fire/core.py", line 477, in _Fire
component, remaining_args = _CallAndUpdateTrace(
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/fire/core.py", line 693, in _CallAndUpdateTrace
component = fn(*varargs, **kwargs)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/workflow/cli.py", line 111, in workflow
recorder = task_train(config.get("task"), experiment_name=experiment_name)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/model/trainer.py", line 127, in task_train
_exe_task(task_config)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/model/trainer.py", line 46, in _exe_task
dataset: Dataset = init_instance_by_config(task_config["dataset"], accept_types=Dataset)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/utils/mod.py", line 179, in init_instance_by_config
return klass(**cls_kwargs, **kwargs)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/__init__.py", line 666, in __init__
super().__init__(**kwargs)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/__init__.py", line 119, in __init__
self.handler: DataHandler = init_instance_by_config(handler, accept_types=DataHandler)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/utils/mod.py", line 179, in init_instance_by_config
return klass(**cls_kwargs, **kwargs)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/contrib/data/handler.py", line 173, in __init__
super().__init__(
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 468, in __init__
super().__init__(instruments, start_time, end_time, data_loader, **kwargs)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 100, in __init__
self.setup_data()
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 610, in setup_data
super().setup_data(**kwargs)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/handler.py", line 144, in setup_data
self._data = lazy_sort_index(self.data_loader.load(self.instruments, self.start_time, self.end_time))
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/loader.py", line 135, in load
{
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/loader.py", line 136, in <dictcomp>
grp: self.load_group_df(instruments, exprs, names, start_time, end_time, grp)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/dataset/loader.py", line 217, in load_group_df
df = D.features(instruments, exprs, start_time, end_time, freq=freq, inst_processors=inst_processors)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/data.py", line 1191, in features
return DatasetD.dataset(instruments, fields, start_time, end_time, freq, inst_processors=inst_processors)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/data.py", line 924, in dataset
data = self.dataset_processor(
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/qlib/data/data.py", line 578, in dataset_processor
ParallelExt(n_jobs=workers, backend=C.joblib_backend, maxtasksperchild=C.maxtasksperchild)(task_l),
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/joblib/parallel.py", line 1952, in __call__
return output if self.return_generator else list(output)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/joblib/parallel.py", line 1595, in _get_outputs
yield from self._retrieve()
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/joblib/parallel.py", line 1699, in _retrieve
self._raise_error_fast()
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/joblib/parallel.py", line 1734, in _raise_error_fast
error_job.get_result(self.timeout)
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/joblib/parallel.py", line 736, in get_result
return self._return_or_raise()
File "/usr/local/Public_Anaconda3/anaconda3/envs/ALSTM-1/lib/python3.8/site-packages/joblib/parallel.py", line 754, in _return_or_raise
raise self._result
TypeError: cannot do slice indexing on Index with these indexers [1892] of type int
Is it a problem about Dataframe?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the qrun workflow_config_alstm_Alpha158.yaml command and inspect the traceback path through qlib/data/dataset/loader.py and qlib/data/data.py. Trace the slice indexing failure around load_group_df and DatasetD.dataset, then document the data or indexing condition that causes it and verify the workflow completes or fails with a clearer explanation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- machine-learning
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 20/100