超参优化

2024-06-11

optuna

文档:https://optuna.readthedocs.io/

博客:https://medium.com/optuna

内存分析: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来让主优化器在当前训练结束后再停止,

使用信号处理:捕获如SIGINTSIGTERM等信号,并定义一个处理函数来优雅地终止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]