章节大纲

  • 使用 Qlib 在线模式


    引言

    Qlib 文档 中,我们介绍了 离线(Offline)模式。除了离线模式,用户还可以使用 在线(Online)模式

    在线模式旨在解决以下问题:

    • 以集中化的方式管理数据,用户无需管理不同版本的数据。

    • 减少需要生成的缓存量。

    • 使数据能够远程访问。

    在在线模式下,为 Qlib 提供的数据将由 Qlib-Server 以集中化的方式进行管理。


    在在线模式下使用 Qlib

    请按照以下步骤在在线模式下使用 Qlib

    1. Qlib 客户端中开启 NFS 功能

    2. 在线模式 下初始化 Qlib

    在 Qlib 客户端中开启 NFS 功能

    • 如果运行在 Linux 系统上,用户需要在客户端安装 nfs-common,执行以下命令:

      Bash
      sudo apt-get install nfs-common
      
    • 如果运行在 Windows 系统上,请按以下步骤操作:

      1. 打开 “程序和功能”

      2. 点击 “启用或关闭 Windows 功能”

      3. 向下滚动并勾选 “NFS 服务” 选项,然后点击“确定”。

      4. 参考地址:https://graspingtech.com/mount-nfs-share-windows-10/


    在在线模式下初始化 Qlib

    如果用户想在在线模式下使用 Qlib,可以选择以下两种方法中的任何一种来初始化 Qlib

    • 使用配置文件初始化 Qlib

    • 使用参数初始化 Qlib

    配置文件

    配置文件的内容如下:

    YAML
    calendar_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 如下:

    Python
    import 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 中,挂载路径必须是不存在的路径和根路径。

      • 正确格式,例如:Hi...

      • 错误格式,例如:CC:/user/nameqlib_data...

    • 配置文件可以写成:

      YAML
      ...
      provider_uri: 127.0.0.1:/
      mount_path: H
      auto_mount: True
      flask_server: 127.0.0.1
      flask_port: 9710
      

    参数

    使用参数初始化 Qlib 如下:

    Python
    import 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

    • 参数可以写成:

      Python
      ONLINE_CONFIG = {
          ...
          ...
          "mount_path": "H",
          "auto_mount": True,
          "flask_server": "127.0.0.1",
          "flask_port": 9710,
          "region": "cn",
      }