超参优化
optuna
文档:https://optuna.readthedocs.io/
内存分析:https://github.com/bloomberg/memray
内存分析指令:
memray run --live b_optuna.py -args xx
集群性能测试
数据库自动切换m8->m10p
数据库(m10p)
114 P2_KISHU_T720_III_v3
COMPLETE: 5007
m10: 中位 = 0.11 (5007)
99 P2_GMT_T720_III_v3
COMPLETE: 5010
m10: 中位 = 0.11 (5010)
84 P2_SHIB_T720_III_v3
COMPLETE: 5008
m10: 中位 = 0.11 (5008)
69 P2_DOGE_T720_III_v3
COMPLETE: 5009
m10: 中位 = 0.11 (5009)
54 P2_MINA_T720_III_v3
COMPLETE: 5009
m10: 中位 = 0.11 (5009)
39 P2_XCH_T720_III_v3
COMPLETE: 5007
m10: 中位 = 0.11 (5007)
24 P2_ETH_T720_III_v3
COMPLETE: 5009
m10: 中位 = 0.11 (5009)
1 P2_BTC_T720_III_v3
COMPLETE: 5007
m10: 中位 = 0.11 (5007)
耗时:34秒
数据库(m8)
774 P2_KISHU_T720_tpe_v3
COMPLETE: 5018
m8: 中位 = 0.09 (3106)
m4: 中位 = 0.12 (1360)
m10: 中位 = 0.31 (546)
m1: 中位 = 1.48 (6)
736 P2_GMT_T720_tpe_v3
COMPLETE: 5023
m8: 中位 = 0.09 (3072)
m4: 中位 = 0.12 (1338)
m10: 中位 = 0.30 (606)
m1: 中位 = 0.83 (7)
699 P2_SHIB_T720_tpe_v3
COMPLETE: 5023
m8: 中位 = 0.09 (3089)
m4: 中位 = 0.12 (1344)
m10: 中位 = 0.31 (587)
m1: 中位 = 2.45 (3)
661 P2_DOGE_T720_tpe_v3
COMPLETE: 5022
m8: 中位 = 0.09 (3092)
m4: 中位 = 0.12 (1341)
m10: 中位 = 0.32 (584)
m1: 中位 = 0.52 (5)
625 P2_MINA_T720_tpe_v3
COMPLETE: 5019
m8: 中位 = 0.09 (3062)
m4: 中位 = 0.12 (1341)
m10: 中位 = 0.30 (602)
m1: 中位 = 0.48 (14)
587 P2_XCH_T720_tpe_v3
COMPLETE: 5024
m8: 中位 = 0.09 (3077)
m4: 中位 = 0.12 (1341)
m10: 中位 = 0.32 (579)
m1: 中位 = 0.73 (27)
549 P2_ETH_T720_tpe_v3
COMPLETE: 5019
m8: 中位 = 0.09 (3094)
m4: 中位 = 0.12 (1331)
m10: 中位 = 0.31 (579)
m1: 中位 = 0.78 (15)
510 P2_BTC_T720_tpe_v3
COMPLETE: 5018
m8: 中位 = 0.09 (3263)
m4: 中位 = 0.12 (1222)
bric: 中位 = 0.13 (118)
m1: 中位 = 0.13 (192)
m10: 中位 = 0.43 (223)
耗时:17秒
数据库(m8)
464 P2c_KISHU_T720_tpe_v2.1
COMPLETE: 5014
m8: 中位 = 0.09 (2716)
M4: 中位 = 0.14 (1529)
m1: 中位 = 0.15 (233)
bric: 中位 = 0.16 (134)
M10: 中位 = 0.30 (402)
418 P2c_GMT_T720_tpe_v2.1
COMPLETE: 5023
m8: 中位 = 0.09 (2677)
M4: 中位 = 0.14 (1519)
m1: 中位 = 0.15 (242)
bric: 中位 = 0.15 (150)
M10: 中位 = 0.34 (435)
372 P2c_SHIB_T720_tpe_v2.1
COMPLETE: 5021
m8: 中位 = 0.09 (2668)
M4: 中位 = 0.14 (1520)
m1: 中位 = 0.16 (253)
bric: 中位 = 0.16 (153)
M10: 中位 = 0.36 (427)
326 P2c_DOGE_T720_tpe_v2.1
COMPLETE: 5022
m8: 中位 = 0.09 (2665)
M4: 中位 = 0.14 (1518)
m1: 中位 = 0.16 (252)
bric: 中位 = 0.15 (149)
M10: 中位 = 0.31 (438)
280 P2c_MINA_T720_tpe_v2.1
COMPLETE: 5026
m8: 中位 = 0.09 (2631)
M4: 中位 = 0.14 (1497)
m1: 中位 = 0.16 (251)
bric: 中位 = 0.16 (163)
M10: 中位 = 0.32 (484)
234 P2c_XCH_T720_tpe_v2.1
COMPLETE: 5025
m8: 中位 = 0.09 (2622)
M4: 中位 = 0.14 (1494)
m1: 中位 = 0.15 (259)
bric: 中位 = 0.15 (166)
M10: 中位 = 0.33 (484)
188 P2c_ETH_T720_tpe_v2.1
COMPLETE: 5018
m8: 中位 = 0.09 (2675)
M4: 中位 = 0.14 (1530)
m1: 中位 = 0.16 (241)
bric: 中位 = 0.16 (146)
M10: 中位 = 0.32 (426)
142 P2c_BTC_T720_tpe_v2.1
COMPLETE: 5021
m8: 中位 = 0.09 (2635)
M4: 中位 = 0.14 (1466)
m1: 中位 = 0.15 (257)
bric: 中位 = 0.15 (155)
M10: 中位 = 0.32 (508)
耗时:21秒
数据库(redism8:m21_2)
7 P2c_DOGE_T720_III_m21_2
COMPLETE: 3880
m8: 中位 = 2.26 (646)
m9: 中位 = 2.51 (819)
M10: 中位 = 2.71 (1426)
m5: 中位 = 3.48 (138)
bric: 中位 = 4.71 (54)
M4: 中位 = 4.79 (641)
m1: 中位 = 4.93 (156)
6 P2c_SHIB_T720_III_m21_2
COMPLETE: 6288
m9: 中位 = 1.93 (1448)
m8: 中位 = 2.40 (1152)
M10: 中位 = 2.80 (1980)
m5: 中位 = 3.77 (318)
M4: 中位 = 4.86 (989)
m1: 中位 = 5.00 (241)
bric: 中位 = 4.99 (160)
5 P2c_GMT_T720_III_m21_2
COMPLETE: 8688
m9: 中位 = 2.00 (2049)
m8: 中位 = 2.39 (1546)
M10: 中位 = 2.89 (2817)
m5: 中位 = 3.78 (420)
M4: 中位 = 4.84 (1322)
bric: 中位 = 4.94 (216)
m1: 中位 = 5.01 (318)
4 P2c_KISHU_T720_III_m21_2
COMPLETE: 4974
m9: 中位 = 1.90 (1252)
m8: 中位 = 2.34 (862)
M10: 中位 = 2.83 (1608)
m5: 中位 = 3.72 (234)
M4: 中位 = 4.78 (724)
bric: 中位 = 4.86 (119)
m1: 中位 = 4.96 (175)
3 P2c_MINA_T720_III_m21_2
COMPLETE: 8623
m8: 中位 = 2.30 (1528)
m9: 中位 = 2.42 (1646)
M10: 中位 = 2.90 (3012)
m5: 中位 = 3.51 (393)
M4: 中位 = 4.92 (1608)
bric: 中位 = 4.81 (138)
m1: 中位 = 5.00 (298)
2 P2c_XCH_T720_III_m21_2
COMPLETE: 7895
m8: 中位 = 2.41 (1718)
m9: 中位 = 2.45 (1537)
M10: 中位 = 2.71 (2545)
m5: 中位 = 3.81 (395)
M4: 中位 = 4.85 (1345)
m1: 中位 = 5.79 (188)
bric: 中位 = 5.78 (167)
1 P2c_ETH_T720_III_m21_2
COMPLETE: 7804
m9: 中位 = 1.91 (2007)
m8: 中位 = 2.41 (1599)
M10: 中位 = 2.71 (2240)
m5: 中位 = 4.16 (441)
M4: 中位 = 4.89 (1222)
m1: 中位 = 6.07 (154)
bric: 中位 = 6.04 (141)
0 P2c_BTC_T720_III_m21_2
COMPLETE: 5500
m9: 中位 = 1.88 (1372)
m8: 中位 = 2.38 (1094)
M10: 中位 = 2.63 (1627)
m5: 中位 = 4.09 (315)
M4: 中位 = 4.83 (865)
m1: 中位 = 5.79 (119)
bric: 中位 = 5.79 (108)
数据库(redism8:m19_13)
7 P2c_KISHU_T720_III_m19_13
COMPLETE: 9033
m9: 中位 = 1.85 (2740)
m8: 中位 = 2.30 (1931)
M10: 中位 = 2.82 (2886)
m5: 中位 = 3.57 (541)
M4: 中位 = 4.65 (405)
bric: 中位 = 5.18 (215)
m1: 中位 = 5.30 (315)
6 P2c_GMT_T720_III_m19_13
COMPLETE: 8349
m9: 中位 = 1.94 (2274)
m8: 中位 = 2.35 (1669)
M10: 中位 = 3.15 (2176)
m5: 中位 = 3.70 (458)
M4: 中位 = 5.00 (1321)
bric: 中位 = 5.34 (182)
m1: 中位 = 5.55 (269)
5 P2c_SHIB_T720_III_m19_13
COMPLETE: 7397
m9: 中位 = 1.77 (1990)
m8: 中位 = 2.23 (1387)
M10: 中位 = 2.62 (2096)
m5: 中位 = 3.47 (386)
M4: 中位 = 4.48 (1184)
bric: 中位 = 5.22 (144)
m1: 中位 = 5.37 (210)
4 P2c_DOGE_T720_III_m19_13
COMPLETE: 12958
m9: 中位 = 1.79 (3392)
m8: 中位 = 2.24 (2379)
M10: 中位 = 2.64 (3850)
m5: 中位 = 3.57 (648)
M4: 中位 = 4.52 (2011)
bric: 中位 = 5.15 (273)
m1: 中位 = 5.26 (405)
3 P2c_MINA_T720_III_m19_13
COMPLETE: 4654
m9: 中位 = 1.77 (1251)
m8: 中位 = 2.22 (873)
M10: 中位 = 2.66 (1305)
m5: 中位 = 3.51 (237)
M4: 中位 = 4.50 (752)
bric: 中位 = 5.05 (94)
m1: 中位 = 5.18 (142)
2 P2c_XCH_T720_III_m19_13
COMPLETE: 9569|1
m9: 中位 = 2.58 (2654)
m8: 中位 = 2.85 (2093)
m5: 中位 = 4.49 (579)
M10: 中位 = 5.66 (2159)
bric: 中位 = 5.83 (280)
m1: 中位 = 6.16 (398)
M4: 中位 = 7.21 (1406)
1 P2c_ETH_T720_III_m19_13
COMPLETE: 13620
m9: 中位 = 1.76 (3580)
m8: 中位 = 2.20 (2521)
M10: 中位 = 2.62 (4092)
m5: 中位 = 3.47 (688)
M4: 中位 = 4.47 (2030)
bric: 中位 = 5.19 (287)
m1: 中位 = 5.32 (422)
0 P2c_BTC_T720_III_m19_13
COMPLETE: 24063
m9: 中位 = 1.78 (6193)
m8: 中位 = 2.23 (4360)
M10: 中位 = 2.60 (7474)
m5: 中位 = 3.51 (1192)
M4: 中位 = 4.47 (3553)
bric: 中位 = 5.16 (525)
m1: 中位 = 5.28 (766)
数据库(redism8:m19_11)
7 P2c_KISHU_T720_III_m19_11
COMPLETE: 6376
m8: 中位 = 2.26 (1803)
M10: 中位 = 2.90 (2650)
bric: 中位 = 4.94 (229)
M4: 中位 = 4.72 (1373)
m1: 中位 = 5.02 (321)
6 P2c_GMT_T720_III_m19_11
COMPLETE: 2159
m8: 中位 = 2.18 (537)
M10: 中位 = 2.60 (931)
M4: 中位 = 4.44 (497)
bric: 中位 = 4.86 (70)
m1: 中位 = 4.89 (124)
5 P2c_SHIB_T720_III_m19_11
COMPLETE: 2408
m8: 中位 = 2.17 (644)
M10: 中位 = 2.58 (1045)
M4: 中位 = 4.40 (525)
m1: 中位 = 4.94 (116)
bric: 中位 = 4.89 (78)
4 P2c_DOGE_T720_III_m19_11
COMPLETE: 2439
m8: 中位 = 2.16 (644)
M10: 中位 = 2.58 (1065)
M4: 中位 = 4.37 (533)
bric: 中位 = 4.80 (80)
m1: 中位 = 4.91 (117)
3 P2c_MINA_T720_III_m19_11
COMPLETE: 2606
m8: 中位 = 2.15 (688)
M10: 中位 = 2.57 (1144)
M4: 中位 = 4.37 (561)
bric: 中位 = 4.83 (86)
m1: 中位 = 4.91 (127)
2 P2c_XCH_T720_III_m19_11
COMPLETE: 4598
m8: 中位 = 2.61 (1785)
bric: 中位 = 5.21 (252)
M10: 中位 = 5.23 (1189)
m1: 中位 = 5.51 (360)
M4: 中位 = 6.03 (1012)
1 P2c_ETH_T720_III_m19_11
COMPLETE: 2725
m8: 中位 = 2.14 (1253)
M4: 中位 = 4.35 (1052)
bric: 中位 = 4.51 (171)
m1: 中位 = 4.58 (249)
0 P2c_BTC_T720_III_m19_11
COMPLETE: 3137
m8: 中位 = 2.14 (911)
M10: 中位 = 2.44 (1151)
bric: 中位 = 4.30 (130)
M4: 中位 = 4.36 (757)
m1: 中位 = 4.37 (188)
数据库(redism8:m19_1)
7 P2c_KISHU_T720_III_m19_1
COMPLETE: 2304
m9: 中位 = 2.50 (643)
m8: 中位 = 2.91 (652)
m5: 中位 = 4.59 (145)
bric: 中位 = 5.43 (81)
m1: 中位 = 5.93 (76)
M10: 中位 = 8.33 (566)
M4: 中位 = 9.29 (141)
6 P2c_GMT_T720_III_m19_1
COMPLETE: 1533
m9: 中位 = 2.20 (425)
m8: 中位 = 2.64 (391)
m5: 中位 = 4.76 (111)
m1: 中位 = 5.44 (46)
bric: 中位 = 5.97 (42)
M10: 中位 = 5.93 (367)
M4: 中位 = 6.76 (151)
5 P2c_SHIB_T720_III_m19_1
COMPLETE: 2316
m9: 中位 = 2.37 (573)
m8: 中位 = 2.58 (638)
m5: 中位 = 3.95 (173)
m1: 中位 = 5.33 (110)
bric: 中位 = 5.38 (63)
M10: 中位 = 6.13 (656)
M4: 中位 = 6.98 (103)
4 P2c_DOGE_T720_III_m19_1
COMPLETE: 2065
m8: 中位 = 2.85 (531)
m9: 中位 = 3.03 (429)
m5: 中位 = 4.30 (128)
m1: 中位 = 5.34 (90)
bric: 中位 = 5.49 (51)
M10: 中位 = 6.58 (500)
M4: 中位 = 7.64 (336)
3 P2c_MINA_T720_III_m19_1
COMPLETE: 1803
m8: 中位 = 2.64 (433)
m9: 中位 = 2.76 (359)
m5: 中位 = 4.04 (111)
M10: 中位 = 4.88 (456)
m1: 中位 = 5.34 (64)
bric: 中位 = 5.54 (52)
M4: 中位 = 6.46 (328)
2 P2c_XCH_T720_III_m19_1
COMPLETE: 3869
m9: 中位 = 2.85 (915)
m8: 中位 = 3.10 (961)
m5: 中位 = 5.30 (284)
bric: 中位 = 5.46 (135)
m1: 中位 = 5.47 (144)
M10: 中位 = 6.31 (848)
M4: 中位 = 8.22 (582)
1 P2c_ETH_T720_III_m19_1
COMPLETE: 2199
m9: 中位 = 1.97 (546)
m8: 中位 = 2.46 (472)
M10: 中位 = 3.58 (550)
m5: 中位 = 4.44 (134)
m1: 中位 = 4.78 (60)
bric: 中位 = 4.91 (60)
M4: 中位 = 5.53 (377)
0 P2c_BTC_T720_III_m19_1
COMPLETE: 1826
m9: 中位 = 1.96 (452)
m8: 中位 = 2.40 (397)
m5: 中位 = 3.94 (112)
M10: 中位 = 3.59 (430)
m1: 中位 = 4.81 (51)
bric: 中位 = 4.96 (51)
M4: 中位 = 5.40 (333)
数据库(redism8:v1.2)
7 P2c_KISHU_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.06 (552)
6 P2c_GMT_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.06 (552)
5 P2c_SHIB_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.06 (552)
4 P2c_DOGE_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.06 (552)
3 P2c_MINA_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.05 (551)
M4: 中位 = 0.26 (1)
2 P2c_XCH_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.05 (552)
1 P2c_ETH_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.05 (549)
M4: 中位 = 0.26 (3)
0 P2c_BTC_T720_III_v1
COMPLETE: 552
m8: 中位 = 0.04 (347)
M4: 中位 = 0.11 (205)
数据库(redism8:m19)
7 P2c_KISHU_T720_III_m19
COMPLETE: 549
m8: 中位 = 2.44 (136)
m9: 中位 = 2.72 (118)
m5: 中位 = 3.48 (31)
bric: 中位 = 4.18 (26)
m1: 中位 = 4.29 (25)
M4: 中位 = 12.55 (105)
M10: 中位 = 13.96 (108)
6 P2c_GMT_T720_III_m19
COMPLETE: 506
m9: 中位 = 2.18 (106)
m8: 中位 = 2.52 (131)
bric: 中位 = 4.04 (22)
m1: 中位 = 4.61 (38)
m5: 中位 = 6.44 (21)
M4: 中位 = 11.78 (92)
M10: 中位 = 12.33 (96)
5 P2c_SHIB_T720_III_m19
COMPLETE: 544
m8: 中位 = 2.96 (146)
m9: 中位 = 3.05 (115)
m5: 中位 = 4.09 (40)
bric: 中位 = 4.20 (21)
m1: 中位 = 4.94 (37)
M4: 中位 = 13.27 (87)
M10: 中位 = 13.30 (98)
4 P2c_DOGE_T720_III_m19
COMPLETE: 546
m8: 中位 = 2.86 (143)
m9: 中位 = 2.45 (110)
m5: 中位 = 3.99 (41)
bric: 中位 = 4.08 (20)
m1: 中位 = 4.65 (35)
M10: 中位 = 10.83 (109)
M4: 中位 = 11.91 (88)
3 P2c_MINA_T720_III_m19
COMPLETE: 545
m8: 中位 = 3.26 (147)
m9: 中位 = 3.47 (117)
m1: 中位 = 4.59 (32)
m5: 中位 = 4.68 (43)
bric: 中位 = 5.54 (27)
M10: 中位 = 9.80 (103)
M4: 中位 = 11.89 (76)
2 P2c_XCH_T720_III_m19
COMPLETE: 551
m9: 中位 = 3.40 (129)
m8: 中位 = 3.76 (144)
m1: 中位 = 4.59 (29)
bric: 中位 = 4.67 (29)
m5: 中位 = 5.86 (45)
M10: 中位 = 9.82 (101)
M4: 中位 = 12.23 (74)
1 P2c_ETH_T720_III_m19
COMPLETE: 552
m8: 中位 = 3.96 (140)
m9: 中位 = 4.03 (138)
m1: 中位 = 4.75 (29)
bric: 中位 = 4.81 (28)
m5: 中位 = 5.37 (52)
M10: 中位 = 10.59 (96)
M4: 中位 = 12.95 (69)
0 P2c_BTC_T720_III_m19
COMPLETE: 552
m8: 中位 = 4.00 (142)
m9: 中位 = 4.06 (139)
m1: 中位 = 4.76 (28)
bric: 中位 = 4.82 (29)
m5: 中位 = 5.40 (53)
M10: 中位 = 10.54 (99)
M4: 中位 = 12.65 (62)
数据库(redism8:r3)
7 P2c_BTC_T720_III_m21_1
COMPLETE: 5326
m9: 中位 = 1.94 (1264)
m8: 中位 = 2.43 (1011)
M10: 中位 = 2.57 (1775)
m5: 中位 = 4.18 (294)
bric: 中位 = 4.78 (129)
m1: 中位 = 4.87 (126)
M4: 中位 = 4.89 (727)
6 P2c_KISHU_T720_III_m21_1
COMPLETE: 2948
m9: 中位 = 1.83 (630)
m8: 中位 = 2.41 (659)
M10: 中位 = 2.68 (862)
m5: 中位 = 3.85 (146)
m1: 中位 = 4.83 (83)
M4: 中位 = 4.85 (495)
bric: 中位 = 5.42 (73)
5 P2c_GMT_T720_III_m21_1
COMPLETE: 6983
m9: 中位 = 1.96 (1726)
m8: 中位 = 2.40 (1431)
M10: 中位 = 2.64 (1997)
m5: 中位 = 4.07 (425)
m1: 中位 = 4.85 (178)
M4: 中位 = 4.85 (1066)
bric: 中位 = 5.30 (160)
4 P2c_SHIB_T720_III_m21_1
COMPLETE: 3799
m9: 中位 = 1.92 (1049)
m8: 中位 = 2.37 (930)
M10: 中位 = 3.01 (624)
m5: 中位 = 4.08 (258)
M4: 中位 = 4.81 (751)
m1: 中位 = 4.99 (104)
bric: 中位 = 5.15 (83)
3 P2c_DOGE_T720_III_m21_1
COMPLETE: 3430
m9: 中位 = 1.78 (659)
m8: 中位 = 2.34 (739)
M10: 中位 = 2.72 (1135)
m5: 中位 = 4.57 (148)
M4: 中位 = 4.79 (581)
m1: 中位 = 5.33 (95)
bric: 中位 = 5.62 (73)
2 P2c_MINA_T720_III_m21_1
COMPLETE: 2570
m9: 中位 = 2.12 (513)
m8: 中位 = 2.37 (541)
M10: 中位 = 2.58 (845)
M4: 中位 = 4.79 (437)
m5: 中位 = 4.43 (123)
m1: 中位 = 5.22 (49)
bric: 中位 = 5.32 (62)
1 P2c_XCH_T720_III_m21_1
COMPLETE: 5889
m9: 中位 = 1.89 (1469)
m8: 中位 = 2.39 (1166)
M10: 中位 = 2.58 (1799)
m5: 中位 = 4.11 (340)
M4: 中位 = 4.81 (868)
m1: 中位 = 5.34 (124)
bric: 中位 = 5.43 (123)
0 P2c_ETH_T720_III_m21_1
COMPLETE: 6463
m9: 中位 = 1.90 (1611)
m8: 中位 = 2.40 (1277)
M10: 中位 = 2.59 (1981)
m5: 中位 = 4.15 (371)
M4: 中位 = 4.85 (952)
m1: 中位 = 5.40 (137)
bric: 中位 = 5.46 (134)
数据库(keydb:r1)
6 P2c_XCH_T720_III_m21
COMPLETE: 5473
m9: 中位 = 1.74 (1058)
m8: 中位 = 2.21 (1051)
M10: 中位 = 2.49 (1736)
m5: 中位 = 3.68 (253)
M4: 中位 = 4.90 (1150)
bric: 中位 = 5.71 (75)
m1: 中位 = 5.79 (150)
5 P2c_ETH_T720_III_m21
COMPLETE: 4622
m9: 中位 = 1.75 (928)
m8: 中位 = 2.28 (964)
M10: 中位 = 2.34 (1523)
m5: 中位 = 3.99 (193)
M4: 中位 = 4.85 (851)
bric: 中位 = 5.66 (54)
m1: 中位 = 5.74 (109)
4 P2c_MINA_T720_III_m21
COMPLETE: 2365
m8: 中位 = 2.32 (515)
M10: 中位 = 2.30 (740)
m9: 中位 = 2.56 (452)
m5: 中位 = 3.98 (129)
M4: 中位 = 4.81 (427)
m1: 中位 = 5.59 (53)
bric: 中位 = 6.01 (49)
3 P2c_SHIB_T720_III_m21
COMPLETE: 5642
m9: 中位 = 1.94 (1475)
m8: 中位 = 2.35 (1071)
M10: 中位 = 2.39 (1635)
m5: 中位 = 4.35 (334)
M4: 中位 = 4.88 (888)
m1: 中位 = 5.42 (121)
bric: 中位 = 5.41 (118)
2 P2c_DOGE_T720_III_m21
COMPLETE: 4115
m9: 中位 = 1.95 (1079)
m8: 中位 = 2.34 (786)
M10: 中位 = 2.37 (1179)
m5: 中位 = 4.33 (245)
M4: 中位 = 4.91 (649)
m1: 中位 = 5.24 (90)
bric: 中位 = 5.34 (87)
1 P2c_KISHU_T720_III_m21
COMPLETE: 4386
m9: 中位 = 1.90 (1127)
m8: 中位 = 2.30 (814)
M10: 中位 = 2.30 (1322)
m5: 中位 = 4.19 (259)
M4: 中位 = 4.82 (674)
m1: 中位 = 5.32 (96)
bric: 中位 = 5.36 (94)
0 P2c_GMT_T720_III_m21
COMPLETE: 6553
m9: 中位 = 1.98 (1644)
M10: 中位 = 2.33 (2036)
m8: 中位 = 2.36 (1203)
m5: 中位 = 4.33 (379)
M4: 中位 = 4.97 (988)
m1: 中位 = 5.27 (152)
bric: 中位 = 5.34 (151)
0 P2c_BTC_T720_III_v8
COMPLETE: 8320
m8: 平均 = 1.91, 中位 = 1.91 (2837)
M10: 平均 = 1.93, 中位 = 1.88 (2771)
bric: 平均 = 3.60, 中位 = 3.60 (382)
m1: 平均 = 3.68, 中位 = 3.67 (374)
m5: 平均 = 4.42, 中位 = 4.43 (775)
M4: 平均 = 4.61, 中位 = 4.68 (1181)
4 P4_BTC_T720_III_v7
m8: 平均 = 2.01, 中位 = 2.00 (2797|7)
bric: 平均 = 3.78, 中位 = 3.78 (374|2)
m10: 平均 = 3.78, 中位 = 3.74 (1493|6)
m1: 平均 = 3.86, 中位 = 3.85 (366|1)
m5: 平均 = 4.36, 中位 = 4.34 (809|5)
m4: 平均 = 4.68, 中位 = 4.65 (1206|6)
3 P4_ETH_T720_III_v6
m8: 平均 = 1.89, 中位 = 1.90 (800)
m10: 平均 = 3.45, 中位 = 3.45 (439)
bric: 平均 = 3.55, 中位 = 3.56 (107)
m1: 平均 = 3.64, 中位 = 3.64 (105)
m5: 平均 = 4.14, 中位 = 4.15 (229)
m4: 平均 = 4.42, 中位 = 4.42 (340)
2 P4_BTC_T720_II_v6
m8: 平均 = 1.93, 中位 = 1.94 (1809)
m10: 平均 = 3.53, 中位 = 3.54 (996)
bric: 平均 = 3.61, 中位 = 3.62 (243)
m1: 平均 = 3.72, 中位 = 3.72 (237)
m5: 平均 = 4.25, 中位 = 4.25 (517)
m4: 平均 = 4.53, 中位 = 4.52 (776)
1 P4_BTC_T720_III_v6
m8: 平均 = 1.98, 中位 = 1.97 (2806)
m10: 平均 = 3.71, 中位 = 3.68 (1512)
bric: 平均 = 3.71, 中位 = 3.70 (380)
m1: 平均 = 3.82, 中位 = 3.81 (368)
m5: 平均 = 4.37, 中位 = 4.35 (802)
m4: 平均 = 4.70, 中位 = 4.67 (1190)
数据库(redis:)
P3_ETH_T720_tpe_v6.1
m8: 平均 = 1.87, 中位 = 1.87
bric: 平均 = 3.61, 中位 = 3.60
m1: 平均 = 3.68, 中位 = 3.69
m10: 平均 = 3.89, 中位 = 3.89
m5: 平均 = 4.11, 中位 = 4.10
m4: 平均 = 5.40, 中位 = 5.39
耗时:0.383秒
P3_ETH_T720_II_v6.1
m8: 平均 = 1.92, 中位 = 1.92
bric: 平均 = 3.67, 中位 = 3.67
m1: 平均 = 3.73, 中位 = 3.73
m10: 平均 = 3.95, 中位 = 3.96
m5: 平均 = 4.16, 中位 = 4.17
m4: 平均 = 5.47, 中位 = 5.49
耗时:0.333秒
P3_ETH_T720_III_v6
m8: 平均 = 1.94, 中位 = 1.94
m9: 平均 = 1.99, 中位 = 1.98
m10: 平均 = 3.48, 中位 = 3.48
bric: 平均 = 3.58, 中位 = 3.59
m1: 平均 = 3.69, 中位 = 3.70
m4: 平均 = 4.53, 中位 = 4.52
耗时:0.616秒
性能优化
分布式性能优化
NSGAIIISampler 非支配排序遗传算法NSGA-III
Pareto Front 帕累托最优
1.增大 population_size
建议值:一般而言,种群大小在100到300之间可以提供一个好的开始点。但是,在分布式环境下,可以利用更多的计算单元来处理更大的种群,从而能够探索更广泛的搜索空间。可以尝试将种群大小设置为500到1000,以观察是否能获得更好的结果。
TPESampler 减少参数重复的策略:
1.使用 Constant Liar 策略
constant_liar
是 TPESampler
的一个参数,当设置为 True
时,会在分布式环境中减少参数重复的情况。当一个试验开始但尚未完成时,Constant Liar 策略会假设该试验的目标值为“常数”(“lie”)。这样做可以在参数空间中“占位”,让后续的采样趋向于选择不同的参数。该策略特别适用于每次评估代价较高的情况,可以有效减少不同工作节点选择重复参数的可能性。
2.增大 n_startup_trials
n_startup_trials
参数控制在开始使用TPE算法之前,Optuna 会进行多少次随机采样。通过增大这个数值,可以在初始阶段增加参数的多样性,间接减少后续过程中参数选择的重复性。
3.增大 n_ei_candidates
从理论上讲,增加 n_ei_candidates
的值会使得算法在决定每一步的参数值时有更多的候选点考虑,这可能会增加选择不同参数的可能性,从而在一定程度上减少在分布式环境下的参数重复。
寻参函数改进
optuna在分布式超参优化场景下,采样器对重复的trial参数会用竞争策略,这将导致集群环境下重复评估,训练高负载和全域参数空间较小情况下浪费大量算力。
改造下寻参函数,将重复入参COMPLETE状态直接取值跳过训练过程,RUNNING状态直接返回空(optuna会将空置为Fail状态):
# 求最优超参数
def f(trial):
# 定义要找的超参数,并设置上下限
params = {
'minima_size': trial.suggest_int('minima_size', args.minima_size_a, args.minima_size_b,step=minima_size_STEP),
}
print()
t_list = trial.study.get_trials(states=[TrialState.COMPLETE,TrialState.RUNNING])
n = trial._cached_frozen_trial
for t in t_list:
if n.number == t.number:
continue
if n.params == t.params:
if 'HOST' in t.user_attrs and 'host' in t.user_attrs['HOST']:
host_s = t.user_attrs['HOST']['host']
else:
host_s = ""
HOST_dic = {"host": socket.gethostname(),"msg":None,"number": t.number, "HOST_s": host_s}
if t.state == TrialState.RUNNING:
HOST_dic["msg"] = "RUNNING"
print("超参重复将跳过",t.params,HOST_dic)
trial.set_user_attr("HOST", HOST_dic)
return
# raise optuna.TrialPruned # 这里不再剪枝
else:
HOST_dic["msg"] = "COMPLETE"
print("超参重复将跳过",t.params,HOST_dic)
trial.set_user_attr("HOST", HOST_dic)
return t.value
# raise optuna.TrialPruned # 这里不再剪枝
trial.set_user_attr("HOST", {"host": socket.gethostname()})
# 评估超参数
return _c.params_test(args,params,MC)
网格搜索使用步进函数
网格搜索需要定义搜索空间,遇到连续枚举时,用步进函数替代它:
def generate_float_list(start, end, step):
"""生成一个从 start 到 end 的列表,步长为 step。
Args:
start: 列表的起始值。
end: 列表的结束值。
step: 列表的步长。
Returns:
一个从 start 到 end 的列表,步长为 step。
"""
list = []
current = start
while current <= end:
list.append(current)
current += step
return list
search_space = {"minima_size":generate_float_list(args.minima_size_a, args.minima_size_b,step=minima_size_STEP)}
print("优化器:",study_name)
study = optuna.create_study(
sampler=GridSampler(search_space),
study_name=study_name,
direction='maximize',
load_if_exists=True,
storage=args.sqluri
)
优化退出
优化过程中直接退出会导致任务一直处于Running
状态,可以通过接收信号后抛出OptunaError异常来让主优化器修改状态,另外可以通过捕获SIGINT
来让主优化器在当前训练结束后再停止,
使用信号处理:捕获如SIGINT
或SIGTERM
等信号,并定义一个处理函数来优雅地终止Optuna的优化过程。如:
import signal
import optuna
study = optuna.create_study()
def signal_handler(sig, frame):
print(f"\n\n收到停止信号: {sig} !!!\n\n")
args.optuna_stop = True # 全局停止 用于循环体中退出
study.stop() # 优化器停止
if sig != signal.SIGINT: # 不是ctrl+c
raise optuna.exceptions.OptunaError("\n\n立即中断当前训练 !!!\n\n")
# 绑定信号处理器
signal.signal(signal.SIGTERM, signal_handler) # kill
signal.signal(signal.SIGINT, signal_handler) # ctrl+c
study.optimize(objective, n_trials=100)
数据集群优化
架构进化过程: 单机MySQL -> 单机redis -> 主从redis -> 多主KeyDB
注意:由于optuna的storage源码中只进行了线程锁控制,在分布式环境下需对storage源码改造采用分布式锁机制。
多主KeyDB部署
$ echo "deb https://download.keydb.dev/open-source-dist $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/keydb.list
$ sudo wget -O /etc/apt/trusted.gpg.d/keydb.gpg https://download.keydb.dev/open-source-dist/keyring.gpg
$ sudo apt update
$ sudo apt install keydb
多主KeyDB容器化集群部署
docker-compose.yml
services:
keydb1:
image: eqalpha/keydb:x86_64_v6.3.4
ports:
- "6373:6379"
command: keydb-server --active-replica yes --multi-master yes --protected-mode no --replicaof keydb2 6379
deploy:
placement:
constraints:
- node.hostname == m8
networks:
- ml-overlay-network
keydb2:
image: eqalpha/keydb:x86_64_v6.3.4
ports:
- "6374:6379"
command: keydb-server --active-replica yes --multi-master yes --protected-mode no --replicaof keydb1 6379
deploy:
placement:
constraints:
- node.hostname == m10
networks:
- ml-overlay-network
networks:
ml-overlay-network:
driver: overlay
ipam:
config:
- subnet: 10.0.0.0/24
Docker Swarm集群
搭建过程
创建主manager
dk swarm init --advertise-addr=172.16.x.x
查看token
docker swarm join-token worker
docker swarm join-token manager
查看集群节点状态
docker node ls
查看服务
docker service ls
查看网络
docker network ls
查看堆栈中任务
docker stack ps [ml-stack]
集群解散
docker swarm leave --force # 在manager的话加--force
docker node rm [hostname] # 在manager上操作
启动编排
docker stack deploy -c docker-compose.yml [ml-stack]
销毁编排
docker stack rm [ml-stack]