BigQuant使用文档

302 M.tune 调优任何代码

由jliang创建,最终由jliang 被浏览 150 用户

从0开始

M.tune 是 301 滚动训练的底层核心

M.tune.run 运行

  • 新建一个notebook,任意给个名称 tune.ipynb\n

  • 添加一个代码单元,输入如下代码,运行,可以看到并没有输出 hello,而是创建了 tunee 1(调优对象 1)

    %%tune 1
    
    print("hello")
    

  • 添加一个代码单元,输入如下代码,运行,可以看到tunee 1被执行了一次。

    from bigmodule import M
    
    M.tune.run(
        "1",
        {}
    )
    

  • 添加一个代码单元,输入如下代码,运行,可以看到tunee 1被执行了3次。

    from bigmodule import M
    
    M.tune.run(
        "1",
        [{}, {}, {}],
    )
    

  • M.tune.run\n

普通参数

  • 添加代码单元,创建调优对象 2

    %%tune 2
    
    from bigmodule import M
    
    M.logger.info(f"hello {M.tune.parameter('name')}")
    
  • 添加代码单元,运行调优对象,并传递2组不同参数

    from bigmodule import M
    
    M.tune.run(
        "2",
        [
            {"name": "tom"},
            {"name": "john"},
        ],
    )
    
  • 可以看到 M.tune.parameter('name') 获取到了传入的参数\n

\

模块参数

  • 添加代码单元,创建调优对象 3,包括一个模块调用 m1 = M.dai_datasource.v3(id="cn_stock_bar1d", m_name="m1"),注意其中的 m_name 需要和前面变量保持一致,在可视化模式下,这个变量会自动维护。

    %%tune 3
    
    from bigmodule import M
    
    m1 = M.dai_datasource.v3(id="cn_stock_bar1d", m_name="m1")
    
    print(f"hello {M.logger.info}")
    
  • 添加代码单元,运行调优对象,并传递2组不同参数

    from bigmodule import M
    
    M.tune.run(
        "3",
        [
            {"m1.id": "cn_stock_prefactors"},
            {"m1.id": "some"},
        ],
    )
    
  • 可以看到模块 m1 自动应用了传入参数

    \

收集输出

  • 添加代码单元,运行调优对象 3,并传递2组不同参数,其中使用outputs指定要收集回来的变量

    from bigmodule import M
    
    M.tune.run(
        "3",
        [
            {"m1.id": "cn_stock_prefactors", "__outputs__": ["m1"]},
            {"m1.id": "some", "__outputs__": ["m1"]},
        ],
    )
    
  • 可以看到模块run返回了m1的值

\

调优对象前/后

  • 添加代码单元,运行调优对象 3,通过 init 和 exit 设置回调函数,分别在调优代码执行前后被调用

    from bigmodule import M
    
    
    def foo_init(locals_):
        # 参数 locals_, 获得执行环境的变量
        print("foo_init")
        print(locals_)
    
    
    def foo_exit(locals_):
        # 参数 locals_, 获得执行环境的变量
        print("foo_exit")
        print(locals_)
    
    
    M.tune.run(
        "3",
        [
            {
                "m1.id": "cn_stock_prefactors",
                "__outputs__": ["m1"],
                "__init__": foo_init,
                "__exit__": foo_exit,
            },
            {"m1.id": "some", "__outputs__": ["m1"]},
        ],
    )
    

模块前/后

  • 添加代码单元,运行调优对象 3,通过 m1. init 和 exit 设置回调函数,分别在调优代码执行前后被调用,在 init 可以修改 name 和 version,会替换执行模块\nlocals_["name"] = "xxx"

*匹配任何模块

*.id表示对所有模块应用此参数。如果模块不支持此参数,会自动忽略。实际应用了哪些参数,可以在日志中看到。

代码

https://bigquant.com/codesharev2/25d9c694-9bc7-41de-83a4-c5cbef1c0a95

\

文档

使用M.tune写一个超参优化使用M.tune写一个滚动训练
{link}