您好,在server.yaml文件中是否增加默认值,例如:
[cid:image013.png@01D6C8D0.3EB9B900]
发件人: whoconli [mailto:conli_who@foxmail.com]
发送时间: 2020年12月2日 16:48
收件人: hanxinke <hanxinke(a)huawei.com>
抄送: linww <linww(a)scut.edu.cn>; 20研李俊祺 <2506534280(a)qq.com>; 18级李毓睿 <liyurui1995(a)163.com>
主题: 回复:答复: 关于A-tune的tuning功能源码一些疑问
您好!我依照您的建议尝试获取调整参数的默认值,但是发现对应'ref' 字段的值都是空值 ‘ ’,这里使用的例子是key_parameters_select里面的案例。
而我在engine/optimizer里面打印对应默认参数值
[cid:image001.png@01D6C8CB.CE52FDB0]
结果是 ’ref‘为空:
[cid:image002.png@01D6C8CB.CE52FDB0]
在 optimizer/optimizer中lhs算法以及调参算法调用地方打印默认值,同样也是为空
[cid:image003.png@01D6C8CB.CE52FDB0]
[cid:image004.png@01D6C8CB.CE52FDB0]
两个地方对应的结果:
lhs算法打印结果
[cid:image005.png@01D6C8CB.CE52FDB0]
tuning算法打印结果
[cid:image006.png@01D6C8CB.CE52FDB0]
注:这里只有两个值是因为我设置了lhs算法选出重要的参数只有两个
因此想要向您请教这个问题该如何解决?我查了一下这个信息是从YamlObj这个结构体上来的,但是没有发现给这个结构体赋值的地方(查找执行GetScript的地方好像都没有存储默认数据)
[cid:image007.png@01D6C8CB.CE52FDB0]
[cid:image008.png@01D6C8CB.CE52FDB0]
[cid:image009.png@01D6C8CB.CE52FDB0]
________________________________
Best regards,
conli,who
胡康立
------------------ 原始邮件 ------------------
发件人: "hanxinke" <hanxinke(a)huawei.com<mailto:hanxinke@huawei.com>>;
发送时间: 2020年12月2日(星期三) 上午10:31
收件人: "whoconli"<conli_who(a)foxmail.com<mailto:conli_who@foxmail.com>>;"dev(a)openeuler.org<mailto:dev@openeuler.org>"<dev(a)openeuler.org<mailto:dev@openeuler.org>>;
抄送: "linww"<linww(a)scut.edu.cn<mailto:linww@scut.edu.cn>>;"20研李俊祺"<2506534280(a)qq.com<mailto:2506534280@qq.com>>;"18级李毓睿"<liyurui1995(a)163.com<mailto:liyurui1995@163.com>>;
主题: 答复: 关于A-tune的tuning功能源码一些疑问
问题一:在atune-adm tuning命令server端是否只执行benchmark脚本,其他控制的程序(go流程控制)以及算法调优部分(python)都是在client上执行?
您好, Atune-adm tuning命令运行的机器是作为client端,client端会执行benchmark脚本,因为很多benchmark会占用系统资源,放在sever端会影响业务的性能,其他go流程(rpc服务端)以及算法调优部分都运行在server端,同时算法调优部分是atune-engine服务,也支持独立机器部署。
问题二:go控制代码如何获取需要调整的参数的默认值,并将这些参数的默认值发送到python调优代码中,以便我们进行参数遍历选择。
您好,go这边有个Knob的数据类型,内部有个Ref字段可以存储调整参数的默认值,这些默认值会发送到python调优代码中,在python端通过[p_nob[‘ref’] for _, p_nob in enumerate(self.knobs)]的形式就可以获取你所有参数的默认值,这里将环境恢复默认值可以调用go这边的RestoreConfigTuned实现
发件人: whoconli [mailto:conli_who@foxmail.com]
发送时间: 2020年12月1日 9:43
收件人: hanxinke <hanxinke(a)huawei.com<mailto:hanxinke@huawei.com>>
抄送: linww <linww(a)scut.edu.cn<mailto:linww@scut.edu.cn>>; 20研李俊祺 <2506534280(a)qq.com<mailto:2506534280@qq.com>>; 18级李毓睿 <liyurui1995(a)163.com<mailto:liyurui1995@163.com>>
主题: 关于A-tune的tuning功能源码一些疑问
A-tune开发人员您们好,在整合我们的算法到A-tune当中碰到了一些问题想要向您们请教,具体问题请见word文档,谢谢!
________________________________
Best regards,
conli,who
胡康立
------------------ 原始邮件 ------------------
发件人: "hanxinke" <hanxinke(a)huawei.com<mailto:hanxinke@huawei.com>>;
发送时间: 2020年11月30日(星期一) 中午11:00
收件人: "20研李俊祺"<2506534280(a)qq.com<mailto:2506534280@qq.com>>;"a-tune"<a-tune(a)openeuler.org<mailto:a-tune@openeuler.org>>;
抄送: "whoconli"<conli_who(a)foxmail.com<mailto:conli_who@foxmail.com>>;"linweiwei"<147868463(a)qq.com<mailto:147868463@qq.com>>;"Fanwentao (Henry)"<fanwentao(a)huawei.com<mailto:fanwentao@huawei.com>>;"Xiezhipeng(EulerOS)"<xiezhipeng1(a)huawei.com<mailto:xiezhipeng1@huawei.com>>;
主题: 答复: 回复:答复: [A-tune] 回复:关于今天SIG上提出的遍历选参脚本
非常感谢俊祺,可以将遍历选参脚本作为一种新的调优算法合并到A-Tune中。
发件人: 20研李俊祺 [mailto:2506534280@qq.com]
发送时间: 2020年11月30日 9:10
收件人: hanxinke <hanxinke(a)huawei.com<mailto:hanxinke@huawei.com>>; a-tune <a-tune(a)openeuler.org<mailto:a-tune@openeuler.org>>
抄送: 胡康立 <conli_who(a)foxmail.com<mailto:conli_who@foxmail.com>>; linweiwei <147868463(a)qq.com<mailto:147868463@qq.com>>
主题: 回复:答复: [A-tune] 回复:关于今天SIG上提出的遍历选参脚本
A-Tune的负责人你们好,按照你们的要求,我们测试了一下“遍历选参(traverse)”和“lhs”算法的选参效果,结果如下:
[cid:image010.png@01D6C8CB.CE52FDB0]
origin是遍历选参脚本选出的参数(最优),‘lhs’算法的结果或多或少会漏掉部分重要参数。如果你们能够接受,我们就开始合并代码的相关工作。
-----------------------------------------------------------------------------------------------
Best Regard, LI C:
李俊祺,20级研究生,华南理工大学计算机科学与工程学院
ChunKi LI,Grade 2020 graduate student,South China University of Technology
研究方向:基于群智能的云计算调度优化和节能技术
-----------------------------------------------------------------------------------------------
------------------ 原始邮件 ------------------
发件人: "hanxinke" <hanxinke(a)huawei.com<mailto:hanxinke@huawei.com>>;
发送时间: 2020年11月20日(星期五) 下午3:39
收件人: "20研李俊祺"<2506534280(a)qq.com<mailto:2506534280@qq.com>>;"a-tune"<a-tune(a)openeuler.org<mailto:a-tune@openeuler.org>>;
抄送: "linweiwei"<147868463(a)qq.com<mailto:147868463@qq.com>>;"胡康立"<conli_who(a)foxmail.com<mailto:conli_who@foxmail.com>>;
主题: 答复: [A-tune] 回复:关于今天SIG上提出的遍历选参脚本
俊祺,您好,感谢您能参与到A-Tune的算法研究与开发中!我发表下看法:
1、Abtest确实如您说的有局限性,它的适用场景是已知参数量比较少,同时这几个参数都有正向作用的场景,它并不适用与重要参数选择。
2、您的这个算法偏向于重要参数选择,适用的场景应该是参数量比较多,同时有很多参数对你的性能有影响的场景,它在参数量很多,但是很多参数对性能没有影响的场景会花费很多时间
3、我们这边在参数选择这块实现了lhs算法,它能够在参数量比较多的场景中花费更少的时间选择出重要的参数,您看能否在您的这个场景中尝试下这个lhs算法,并跟您的这个算法做下比较
发件人: 20研李俊祺 [mailto:2506534280@qq.com]
发送时间: 2020年11月20日 11:42
收件人: a-tune <a-tune(a)openeuler.org<mailto:a-tune@openeuler.org>>
抄送: linweiwei <147868463(a)qq.com<mailto:147868463@qq.com>>; 胡康立 <conli_who(a)foxmail.com<mailto:conli_who@foxmail.com>>
主题: [A-tune] 回复:关于今天SIG上提出的遍历选参脚本
附:脚本的Input和Output,及相关截图:
Input:“yaml参数文件”、“负载执行命令”、“能效判别阈值x”、“至少应被选中的y%的参数”、
“运行记录文件的输出路径”、“被选中参数的yaml文件输出路径”;
运行记录文件:
[cid:image011.jpg@01D6C8CB.CE52FDB0]
运行过程的log:
[cid:image012.jpg@01D6C8CB.CE52FDB0]
另外,该脚本会根据用户输入的阈值输出yaml文件。
-----------------------------------------------------------------------------------------------
Best Regard, LI C:
李俊祺,20级研究生,华南理工大学计算机科学与工程学院
ChunKi LI,Grade 2020 graduate student,South China University of Technology
研究方向:基于群智能的云计算调度优化和节能技术
-----------------------------------------------------------------------------------------------
------------------ 原始邮件 ------------------
发件人: "20研李俊祺" <2506534280(a)qq.com<mailto:2506534280@qq.com>>;
发送时间: 2020年11月20日(星期五) 中午11:34
收件人: "a-tune"<a-tune(a)openeuler.org<mailto:a-tune@openeuler.org>>;
抄送: "linweiwei"<147868463(a)qq.com<mailto:147868463@qq.com>>;"胡康立"<conli_who(a)foxmail.com<mailto:conli_who@foxmail.com>>;
主题: 关于今天SIG上提出的遍历选参脚本
A-Tune的各位开发人员你们好,关于刚才SIG会议上提到的abtest调参算法同样是遍历思想来完成的问题,我有以下看法:
1、固定其他参数,不断修改参数值以获取当前参数的最优值,然后固定该最优值,再调整后面的参数,这个在少量参数需要调整的时候
应该是可以快速做到这一点的。
但是,当参数数量达到100+以上的时候,abtest算法可能就要运行很长一段时间了。而我们的选参脚本是针对多个参数(几乎
涵盖tunning_param_all.yaml文件里面的所有参数)进行选参(不是调参),负载执行次数相对来说会比较少。
我们的选参脚本可以解决的就是,避免abtest算法需要穷举所有参数的所有范围来运行导致优化时间过长的问题。
先选出合理的参数,再交给atune的tuning算法来优化,可以省下不少的时间。如果一个参数本身某个评价指标是
没有什么影响的,那abtest可能会花不必要的时间来改变参数运行负载。
2、我们的脚本是针对服务器的初始状态进行选参的,在每次修改某个参数以后,我们都会将该参数恢复为默认值,然后再
测试下一个参数对能效的影响。而abtest每次获取到一个参数的最优值,就会吧这个参数固定在这个最优值上。我觉得有
些参数是具有依赖性的,如果调整好前面的参数再调后面的参数,可能会对后面参数的选择造成影响(无法分辨出哪些参数
对评价指标具有最大的影响程度)。因此,如果我们是针对选参任务来进行遍历的话,我们在遍历过程中会将参数恢复成服务器
默认的状态,区分出参数对某一评价指标(比如能效)的重要程度,根据用户输入的阈值,筛选出最具影响力的参数,再用tuning
的不同算法对这部分参数进行优化,是有意义的;
这就是我对我的选参脚本和abtest不同之处的分析,不知道你们怎么看呢?
-----------------------------------------------------------------------------------------------
Best Regard, LI C:
李俊祺,20级研究生,华南理工大学计算机科学与工程学院
ChunKi LI,Grade 2020 graduate student,South China University of Technology
研究方向:基于群智能的云计算调度优化和节能技术
-----------------------------------------------------------------------------------------------