使用 Qlib 在线模式
Section outline
-
使用 Qlib 在线模式
引言
在 Qlib 文档 中,我们介绍了 离线(Offline)模式。除了离线模式,用户还可以使用 在线(Online)模式。
在线模式旨在解决以下问题:
-
以集中化的方式管理数据,用户无需管理不同版本的数据。
-
减少需要生成的缓存量。
-
使数据能够远程访问。
在在线模式下,为 Qlib 提供的数据将由 Qlib-Server 以集中化的方式进行管理。
在在线模式下使用 Qlib
请按照以下步骤在在线模式下使用 Qlib:
-
在 Qlib 客户端中开启 NFS 功能。
-
在 在线模式 下初始化 Qlib。
在 Qlib 客户端中开启 NFS 功能
-
如果运行在 Linux 系统上,用户需要在客户端安装 nfs-common,执行以下命令:
Bashsudo apt-get install nfs-common
-
如果运行在 Windows 系统上,请按以下步骤操作:
-
打开 “程序和功能”。
-
点击 “启用或关闭 Windows 功能”。
-
向下滚动并勾选 “NFS 服务” 选项,然后点击“确定”。
-
在在线模式下初始化 Qlib
如果用户想在在线模式下使用 Qlib,可以选择以下两种方法中的任何一种来初始化 Qlib:
-
使用配置文件初始化 Qlib。
-
使用参数初始化 Qlib。
配置文件
配置文件的内容如下:
YAMLcalendar_provider: class: LocalCalendarProvider kwargs: remote: True feature_provider: class: LocalFeatureProvider kwargs: remote: True expression_provider: LocalExpressionProvider instrument_provider: ClientInstrumentProvider dataset_provider: ClientDatasetProvider provider: ClientProvider expression_cache: null dataset_cache: null calendar_cache: null provider_uri: 127.0.0.1:/ mount_path: /data/stock_data/qlib_data auto_mount: True flask_server: 127.0.0.1 flask_port: 9710
-
provider_uri:NFS 服务器路径;格式为
host:data_dir
,例如:127.0.0.1:/
。如果在本地模式下使用 Qlib,它可以是本地数据目录。 -
mount_path:本地数据目录,
provider_uri
将被挂载到此目录。 -
auto_mount:是否在
qlib init
期间自动将provider_uri
挂载到mount_path
;用户也可以手动挂载。-
注意:自动挂载需要
sudo
权限。
-
-
flask_server:数据服务主机/IP。
-
flask_port:数据服务端口。
使用参数配置文件初始化 Qlib 如下:
Pythonimport qlib qlib.init_from_yaml_conf("qlib_clinet_config.yaml") from qlib.data import D ins = D.list_instruments(D.instrumetns("all"), as_list=True)
注意:
-
如果在 Windows 上运行 Qlib,用户应正确填写
mount_path
。 -
在 Windows 中,挂载路径必须是不存在的路径和根路径。
-
正确格式,例如:
H
、i
... -
错误格式,例如:
C
、C:/user/name
、qlib_data
...
-
-
配置文件可以写成:
YAML... provider_uri: 127.0.0.1:/ mount_path: H auto_mount: True flask_server: 127.0.0.1 flask_port: 9710
参数
使用参数初始化 Qlib 如下:
Pythonimport qlib # qlib 客户端配置 ONLINE_CONFIG = { # 数据提供者配置 "calendar_provider": {"class": "LocalCalendarProvider", "kwargs": {"remote": True}}, "instrument_provider": "ClientInstrumentProvider", "feature_provider": {"class": "LocalFeatureProvider", "kwargs": {"remote": True}}, "expression_provider": "LocalExpressionProvider", "dataset_provider": "ClientDatasetProvider", "provider": "ClientProvider", # 在用户自己的代码中配置 "provider_uri": "127.0.0.1:/", # 缓存 # 使用参数 'remote' 来声明客户端正在使用服务器缓存,并且将禁用写入权限。 "expression_cache": None, "dataset_cache": None, "calendar_cache": None, "mount_path": "/data/stock_data/qlib_data", "auto_mount": True, # NFS 已在我们的服务器上挂载 [auto_mount: False]。 "flask_server": "127.0.0.1", "flask_port": 9710, "region": "cn", } qlib.init(**ONLINE_CONFIG) from qlib.data import D ins = D.list_instruments(D.instrumetns("all"), as_list=True)
注意:
-
如果在 Windows 上运行 Qlib,用户应正确填写
mount_path
。 -
参数可以写成:
PythonONLINE_CONFIG = { ... ... "mount_path": "H", "auto_mount": True, "flask_server": "127.0.0.1", "flask_port": 9710, "region": "cn", }
-