Git Product home page Git Product logo

hybrid_leelazero's People

Contributors

pangafu avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

hybrid_leelazero's Issues

A new way to produce stronger weight?

leela-zero/leela-zero#814

We tried to combine 2 or 3 stronge weight by simply “add them together”:
We picked up 257aeeb8 (the strongest one by now on http://zero.sjeng.org/ ) and some other weight files which won over 40% to 257aeeb8 in SPRT. We made some “hybrid” weight files by
linear superposition——0.5weight1+0.5weight2; 0.25weight1+0.25weight2+0.5*weight3… Surprisingly, we’ve got serval weight files much stronger than 257aeeb8… Here are two of them. Both of these "hybrid" files can win ~70% of the matches to 257aeeb8 (1600playouts).

Test "hybrid" 6B weights on CGOS

leela-zero/leela-zero#954

To see the true power of the hybrid, I hybrid 2 weights and run it on cgos.

  1. I make out 2 hybrid weight below:
    6w24_081&aed&a91&92d&9ac&8ee&f66&4d5&5e4.zip
    6w23_f66&081&9ac&8ee&4d5&5e4_1&0.5&0.5&0.5&0.5&0.5 (2).zip

W23 is inherited from No.86 weight (9ac646d7) and other 5 weight after it , W24 is inherited from No.86(9ac646d7) and No.87(92dd0397) and other 7 weights between them.
And you can see the PO 200 match log in the zip file.

  1. Then I put run them on CGOS, the parameter is :
    LZ-HY-W23-PO1600: -g -p 1600 --noponder -t 1 -q -d -r 1 -w
    LZ-HY-W24-PO1600: -g -p 1600 --noponder -t 1 -q -d -r 1 -w
    LZ-HY-W24-NOLIMIT: -g --noponder -t 4 -q -d -r 1 -w

And there is many other leela zero weights run on cgos, such as LZ-0xx-p1600-t1-r1, StellarLZ-p6400, LeelaZero-test... I think LZ-HY-W23-PO1600 's parameter is same as LZ-0xx-p1600-t1-r1, so the result of them can compare.

  1. After 3 day's match, after 100 games, the elo of hybrid weights on cgos is close to static, so we can see the result (http://www.yss-aya.com/cgos/19x19/standings.html)

LZ-HY-W24-PO1600 3030
LZ-HY-W23-PO1600 3011

And other LZ-0XX-p1600-t1-r1 is not close to static(<100 games), the score of them is all bellow the 2 hybrid weights, and to my experiment, the score of LZ-0XX-p1600-t1-r1 will continue to drop during 50 to 100 games process.

So after several test, in my opinion:

  1. Hybrid can stronger the weights
  2. Hybrid seem can promote 50-80 cgos elo of original weights (according to 150-250 leela zero self elo)
  3. NOLIMIT is also get the best CGOS ELO of leela zero, so in the high playout game, "Hybrid" is also work.
  4. Hybrid can also get weaker weights, a stronger hybrid weight mix with an original weight, often get a weaker one.

What should I do if I want to skip the matches?

What should I do in python script if I want to skip the matches, and just get one hybrid net out of four?

I do not know python at all. I hacked version 1.0 to get one hybrid from two nets, without any matches.

Some test of "Hybrid" weight on 5x64 network of leela

leela-zero/leela-zero#867

As we discussed the "Hybrid weight" in #814 before, I did some test on 5x64 network, and have some interesting result, I open a new thread and post here.

I remember the learning rate is very low at the last of 5B network, so I download some 5B network, include last 5B king c83, second king 35d, and some random weights after c83 (because I don't have the win rate of 5B network), network list below:
c83e1b6e0ffbf8e684f2d8f6261853f14c553b29ee0e70ff6c34e87d28009c43
35df1f93351d7edea1f1251dbcff6131a18dc9b9c25d634558d747a55e6920e4
87973d8fe2db18599d136c47f1f54634a22fea1876f2283a8330fde13b5bf1aa
74ca7a1b11a7841a7f195f2b87dd55fa80dc82fb56887bad9c69e32f44717b4d
6fd1a91be8ed13b8cfc4886a51e77a2738705261c6ede9a4f117d8c4073faec8
5b2b40ea018492b26da33966f78abfe0caa35f98167c26a743340cc7e7232204

Then I wrote a match program to auto “hybrid” weight and match (https://github.com/pangafu/Hybrid_LeelaZero), and I found in Playout 200, the strongest weight is 879-6fd-c83_1-0.8-0.8.txt, match result is:
879-6fd-c83_1-0.8-0.8.txt vs 35df1f93351d7edea1f1251dbcff6131a18dc9b9c25d634558d747a55e6920e4.txt :27(67.5%) : 13(32.5%)
879-6fd-c83_1-0.8-0.8.txt vs c83e1b6e0ffbf8e684f2d8f6261853f14c553b29ee0e70ff6c34e87d28009c43.txt :23(57.5%) : 17(42.5%)

Then I match it in Playout 1,600, the result is:
879-6fd-c83_1-0.8-0.8.txt vs 35df1f93351d7edea1f1251dbcff6131a18dc9b9c25d634558d747a55e6920e4.txt :42(70.0%) : 18(30.000000000000004%)
879-6fd-c83_1-0.8-0.8.txt vs c83e1b6e0ffbf8e684f2d8f6261853f14c553b29ee0e70ff6c34e87d28009c43.txt :39(65.0%) : 21(35.0%)

Finally, I match it in Playout 16,000, the result is:
879-6fd-c83_1-0.8-0.8.txt vs c83e1b6e0ffbf8e684f2d8f6261853f14c553b29ee0e70ff6c34e87d28009c43.txt :39(65.0%) : 21(35.0%)

And the all match log can download from here:
match.log

The 879-6fd-c83_1-0.8-0.8 weight can download from here:
879-6fd-c83_1-0.8-0.8.zip

The Playout 16000 match can download from here:
H879vsC83_PO16000.zip

Some interesting result:

"Hybrid" can strength the network even in very low learning rate, so it maybe not the learning rate problem.
"Hybrid" can win at High Playout, so it may not cause by reduce the network noise
Three network "Hybrid" seem stronger than two network "Hybrid".
In my opinion, "Hybrid" maybe equal to assemble and average several network's output, which to make the network predict more accurate.

Maybe I found why the "Hybrid" weight is stronger than original weight

leela-zero/leela-zero#908

As we mentioned in #814 #867 , I download 2 weights:
72ea669da5f491458cb5dfc44a80f0e760a9df71a8d0690b185822de49e00cb3.txt
af3c6e330b932c97b0e517ac7db544d37fe1d18184f101d4b0340ff02f51ce88.txt

And I made a "Hybrid" weight af3-72e_1-1.txt, it average parameters of upper 2 weight.

Then I open a new game, make some move, and see the heatmap of 3 weights in same situation
broad

I found the hybrid weight output is very closed to 2 original weights output's average, the result can see bellow.
hybrid

So in my opinion, because the network is linear, we average the network's parameter, just equal to average several network's outputs. So "Hybrid" weight maybe equal to assemble and average many network's output, this method had been widely used to make predict more accurate.

Please help

if I give you access to a server remetloy can you log in on my behalf and set up training for me?

I wish to net2net Leela zero current net (#116) to a 256f 20b network (new net) and then backtrain the last 2 million games.

Can you help

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.