使用"自定义运行FAI加速"模块进行调参的教程
由qxiao创建,最终由small_q 被浏览 52 用户
为什么要使用”自定义运行FAI加速”模块
FAI是BigQuant研发的云加速集群调度应用,其对海量数据的处理能力和计算能力是有目共睹的. ”自定义运行FAI加速”模块只是FAI用法的冰山一角,但这冰山一角所实现的功能十分强大, 它可以对不同模块下的参数进行调整, 而且能够达到并行调整的程度. 纵向能够对模块的运行起到加速效果, 横向能够并行运行得到不同参数下结果.
我举几个简单的应用:
- 数据处理方面, 我们都知道抽取特定日期的股票数据是从”代码列表”模块中设定的, 所以我们可以通过设定不同的时间段去取数据, 而平时如果我们想要对比不同时间段下数据对策略的效果, 我们必须要反复调整模块中的时间段, 多次运行后得到结果, 如此这样费时费力, 但如果引入"自定义运行FAI加速"模块,不同时间段能够并行运行, 实现了横向并行加速的效果;
- 模型调参方面, BigQuant平台有封装好各种机器学习深度学习模块, 模型调参使用的最多的是随机撒点结合启发式搜索或者网格搜索的方式调参, 随机撒点和网格搜索有个共同的特点——如果需要调节的参数种类很多, 则需要检验的参数组合就会以倍数的量级增长. 这时"自定义运行FAI加速"模块的优势体现出来了, 使用该模块能够达到多组参数并行计算的效果, 除此之外还能起到横向运算加速的效果.
先搭建好你的模型和策略, 并在此基础上添加“自定义运行FAI加速模块”
让我们点开这个模块, 看看其中有那些参数
可以发现有两个参数需要你填写.
- 加速集群: 选择你开启的集群;
- run函数: 在这里面编写你要调节参数的相关代码.
我们先来介绍一下如何开启集群,开启集群有两种方法:
图片从左到右, 首先打开集群按钮, 新建集群。进一步设置集群的各种部件(节点规格, 节点数等), 然后保存并启动.
还有一种新建集群的方法, 当这种方法无法新建集群时, 或无法使用时, 我们可以直接进入集群管理页面https://bigquant.com/fai/console/#/cluster/manage
镜像那里我们只需要设置成默认镜像即可.
现在让我们回到自定义加速模块
我们将新建的集群在模块中选中:
现在我们开始进行调参程序的编写, 以随机森林的树的数量和每个叶子节点最小样本数为例
我们需要以代码的方式表达调参逻辑, 所以我们需要点开代码模式, 看看这两个参数是如何用代码表示的, 首先我们观察到随机森林名称是m12, 所以我们只要找到m12的代码区域即可
直到了这两个参数的代码表示后, 我们可以开始编写run函数中的代码了:
run函数中只需要在方框的基础上对内容进行变换即可, 接下来我来剖析红色框框中的代码逻辑:
针对随机森林的模块, 我们要调节的有两个参数——树的数量, 叶子最小样本数.
树的数量的取值为4或9, 叶子最小样本数取值为50或200. 所以这是个网格搜索的问题, 所以将它们组合起来为
[{'m12.iterations': 4, 'm12.min_samples_per_leaf': 50},
{'m12.iterations': 4, 'm12.min_samples_per_leaf': 200},
{'m12.iterations': 9, 'm12.min_samples_per_leaf': 50},
{'m12.iterations': 9, 'm12.min_samples_per_leaf': 200}]
注意:不同都为参数一定要在同一个字典中作为键各出现一次, 不同的参数不允许单独出现在一个字典里作为键, 如
[...{'m12.iteration': 4}, {'m12.min_samples_per_leaf': 50}...]
所以说, 其实上述的嵌套循环其目的就是为了构造出上述字典列表.
之后直接运行即可.
由于这里设了两个参数, 参数取值都为2, 所以他会输出2*2=4个结果
m13.result是FAI调参加速模块的结果, 由于我们调了4组参数, 所以它会有四种结果, 每种结果下找到回测模块(m15)调用display即可查看不同参数下的回测效果.