Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ScaleQ - Updated implementation of LogitQ idea (WIP - not for merge) #1408

Closed
wants to merge 48 commits into from

Conversation

AlexisOlson
Copy link
Contributor

@AlexisOlson AlexisOlson commented Aug 3, 2020

The ScaleQ parameter is a tunable parameter that goes from 0 (current behavior) to 1 (logit of win probability).

ScaleQ

Related PRs: #925, #956 #1372.

AlexisOlson and others added 30 commits April 18, 2020 13:50
* Appended files.

* Compiles.

* Compiles again.

* Make smart pruning use smoothed nps.

* Seems to be fully implemented.

* Mistype.

* One more bug.

* Found discrepancy with documentaiton.

* Bugfixes.

* Don't smooth nps during the first move.

* Too large default for timeuse decay.

* Bugfix.

* Fix build.

* Relax defaults a bit. Add fixed to logging.

* Remove "smooth" to "smooth-experimental" for now.
* Add M effect logic to output section

* Fix missing prefixes and semicolons

* Some fixes.

* Slight format improvement?

Co-authored-by: Tilps <[email protected]>
* Added TempDecayStartMove for starting temp decay only after a given number of moves. This allows keeping initial game up for a few moves and still use decay.

* Doesn't allow temperature to fall below endgame temp during temp decay. Still allows initial temp to be below endgame temp.

* Doesn't allow temperature to fall below endgame temp during temp decay. Still allows initial temp to be below endgame temp.

* Hide temp options

* renamed TempDecayStartMove to TempDecayDelayMoves

Co-authored-by: Alexis Olson <[email protected]>
* Changelog for 0.25.0-rc2.

* Add one more PR to the changelog.
* custom winograd convolution for cuda backends

* custom winograd fixes

- fix a bug to make it work for non-SE networks
- enable by default only with fp32.

* address review comments

* remove random line in comment

* remove unused constants

- W,H are hardcoded to 8 - because there are assumptions in the code based on that. No point in defining constants.
* cuda winograd fixes
- don't typecast directly to half datatype in CPU side code as older CUDA runtime doesn't support that.
 - don't use gemmEx version on GPUs older than Maxwell generation (not supported).
 - modify the check to enable custom_winograd setting. It should be faster in most cases - except  presently on RTX GPUs when using fp16.
Default to white to move, no castling, no en passant, 0 rule50ply, 1 total move. Also convert other string to std::string and removing using.
* memory optimization for cudnn custom_winograd

- don't save untransformed weights
- print warning message when low memory is detected.

* address review comments

* fix warning message

* fix total weight size calculation

2 layers per residual block!
Use printing lambdas for parts of the verbose output to share between the newly outputted node and its children.
…ero#1284)

* Allow smart pruning to terminate search if win is known.

* Minor tweak, better safe than sorry.
* Time management refactoring (LeelaChessZero#1195)

* Appended files.

* Compiles.

* Compiles again.

* Make smart pruning use smoothed nps.

* Seems to be fully implemented.

* Mistype.

* One more bug.

* Found discrepancy with documentaiton.

* Bugfixes.

* Don't smooth nps during the first move.

* Too large default for timeuse decay.

* Bugfix.

* Fix build.

* Relax defaults a bit. Add fixed to logging.

* Remove "smooth" to "smooth-experimental" for now.

* MLH verbose stats - Issue 1200  (LeelaChessZero#1230)

* Add M effect logic to output section

* Fix missing prefixes and semicolons

* Some fixes.

* Slight format improvement?

Co-authored-by: Tilps <[email protected]>

* Start TempDecay only after a given number of moves (LeelaChessZero#1212)

* Added TempDecayStartMove for starting temp decay only after a given number of moves. This allows keeping initial game up for a few moves and still use decay.

* Doesn't allow temperature to fall below endgame temp during temp decay. Still allows initial temp to be below endgame temp.

* Doesn't allow temperature to fall below endgame temp during temp decay. Still allows initial temp to be below endgame temp.

* Hide temp options

* renamed TempDecayStartMove to TempDecayDelayMoves

Co-authored-by: Alexis Olson <[email protected]>

* Changelog for 0.25.0-rc2. (LeelaChessZero#1233)

* Changelog for 0.25.0-rc2.

* Add one more PR to the changelog.

* Cuda winograd (LeelaChessZero#1228)

* custom winograd convolution for cuda backends

* custom winograd fixes

- fix a bug to make it work for non-SE networks
- enable by default only with fp32.

* address review comments

* remove random line in comment

* remove unused constants

- W,H are hardcoded to 8 - because there are assumptions in the code based on that. No point in defining constants.

* cuda winograd fixes (LeelaChessZero#1238)

* cuda winograd fixes
- don't typecast directly to half datatype in CPU side code as older CUDA runtime doesn't support that.
 - don't use gemmEx version on GPUs older than Maxwell generation (not supported).
 - modify the check to enable custom_winograd setting. It should be faster in most cases - except  presently on RTX GPUs when using fp16.

* Allow most parts of fen to be optional. (LeelaChessZero#1234)

Default to white to move, no castling, no en passant, 0 rule50ply, 1 total move. Also convert other string to std::string and removing using.

* Fix UpdateNps to actually smooth the nps and correctly handle time_since_movestart_ms == 0 (LeelaChessZero#1243)

* Update changelog for 0.25.0 final release. (LeelaChessZero#1244)

* Always report at least 1 depth. (LeelaChessZero#1247)

* Fix un-intended regression for GTX GPUs (LeelaChessZero#1246)

* memory optimization for cudnn custom_winograd (LeelaChessZero#1250)

* memory optimization for cudnn custom_winograd

- don't save untransformed weights
- print warning message when low memory is detected.

* address review comments

* fix warning message

* fix total weight size calculation

2 layers per residual block!

* keep pdb files only for release builds  (LeelaChessZero#1256)

* doc update (LeelaChessZero#1267)

* Include verbose stats for the node. (LeelaChessZero#1268)

Use printing lambdas for parts of the verbose output to share between the newly outputted node and its children.

* add alphazero time manager (LeelaChessZero#1201)

* Updated FLAGS.md with logfile flag (LeelaChessZero#1275)

* Fixed a typo in CONTRIBUTING.md (LeelaChessZero#1274)

* Update Readme about using git (LeelaChessZero#1265)

* Make `wl_` double. (LeelaChessZero#1280)

* Move move filter population to a constructor. (LeelaChessZero#1281)

* Filter out illegal searchmoves to avoid crashing. (LeelaChessZero#1282)

* Clear policy for terminal loss. (LeelaChessZero#1285)

* Allow smart pruning to terminate search if win is known. (LeelaChessZero#1284)

* Allow smart pruning to terminate search if win is known.

* Minor tweak, better safe than sorry.

* Fix bug where pv might not update for best move change. (LeelaChessZero#1286)

* Fix bug where pv might not update.

* Fix...

Co-authored-by: Alexander Lyashuk <[email protected]>
Co-authored-by: Tilps <[email protected]>
Co-authored-by: Naphthalin <[email protected]>
Co-authored-by: Ankan Banerjee <[email protected]>
Co-authored-by: Ed Lee <[email protected]>
Co-authored-by: borg323 <[email protected]>
Co-authored-by: Hace <[email protected]>
Co-authored-by: Kip Hamiltons <[email protected]>
Co-authored-by: nguyenpham <[email protected]>
@AlexisOlson AlexisOlson marked this pull request as ready for review August 5, 2020 15:11
@leedavid
Copy link

how is about to lower the Q value if being inchecked or checking, so can simulate checking extension?

@AlexisOlson
Copy link
Contributor Author

AlexisOlson commented Aug 10, 2020

Preliminary Tuning Results:

Constant: CpuctFactor = 0.0

20200810-231406-770

Constant: ScaleQ = 20.0, CPuctFactor = 0.0

20200811-144304-451

@AlexisOlson
Copy link
Contributor Author

After trying a bunch of different tuned parameters, I always lose strength.

It could be that my tunes were bad but I'm archiving this since no progress is apparent.

@AlexisOlson
Copy link
Contributor Author

I'm going to try tuning again with less exploitative acquisition functions.

@AlexisOlson AlexisOlson reopened this Sep 8, 2020
@Naphthalin Naphthalin added not for merge Experimental code which is not intended to be merged into the master stale Outdated PR, might be closed due to merge conflicts or inactivity labels Nov 2, 2022
@Naphthalin
Copy link
Contributor

As logitQ was removed again, this likely can be closed as well.

@Naphthalin Naphthalin added the enhancement New feature or request label Nov 3, 2022
@Naphthalin
Copy link
Contributor

Closing this as incompatible with the current implementation.

Furthermore, after having worked on #1791, I'm convinced that the idea of logitQ based on the expected score under training conditions is in fact flawed, and the actual value we were looking for back when we tested logitQ is actually the WDL_mu quantity in #1791.

@Naphthalin Naphthalin closed this Jun 6, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request not for merge Experimental code which is not intended to be merged into the master stale Outdated PR, might be closed due to merge conflicts or inactivity
Projects
None yet
Development

Successfully merging this pull request may close these issues.