Since you brought up virtual losses, I wanted to point-out something
that occurred to me recently:  you don't have to use just one virtual
loss.  You can add N visits to a node when you visit it and then
remove N-1 visits when you update the node with the playout result.
The larger N is, the less different threads will step on each other.
Of course increasing N also means an increased likelyhood of exploring
irrelevant paths.



On Mon, Nov 29, 2010 at 4:33 PM, Richard B Segal <rse...@us.ibm.com> wrote:
> Hi Everyone,
>
> Aja's description of Fuego in the UEC cup is pretty accurate. The main
> changes to Fuego for both events were to improve scaling on the 112 core
> system. The move generation algorithm was mostly identical to the SVN source
> for both Kanazawa and the first day of the UEC cup.
>
> We did make a possibly significant change for the last two matches of the
> UEC cup. Once in Kanazawa and once on the first day of the UEC cup Fuego
> lost by attacking with a ladder that would ultimately fail. Fuego has a root
> filter that prevents extending a group that will be captured in a ladder,
> but it does not filter failed attacks. I modified Fuego's root filter for
> the last two matches to remove failed attacks as well. I also modified the
> code to apply the root filter (minus its safety check) at all levels of the
> search. While the new code did not show any improvement in self play, it did
> improve its handling of the position that led to the failed ladder attack in
> the UEC match against Erica.
>
> The other change between Kanazawa and the UEC cup was regarding some
> experimental code to improve exploration. The experimental code appears to
> be effective for 9x9 play, but its value for 19x19 play was questionable. I
> had weak experimental data (50 games) in Kanazawa suggesting it may be
> useful so I enabled it for 19x19 as well. A similar weak experiment just
> before the UEC cup showed a 50 ELO loss so it was disabled for the UEC cup.
>
> Probably the most important change for running on the 56 core system was
> switching from floats to doubles to score move evaluations. After about one
> million trials, the limited precision of floats becomes a bottleneck to
> improved play. I made a few small modifications to the virtual loss code to
> ensure that virtual losses were added as early as possible, and removed as
> late as possible to maximize their effect. I also separated out the counting
> of virtual losses from the UCT statistics to reduce the chances of
> simultaneous updates as simultaneous updates can introduce counting errors.
>
> The final addition was a new parallel tree copy algorithm that was needed
> due to the large 200Gb RAM available on the 56 core system. When Fuego runs
> out of memory, it copies its current tree to a new tree while removing nodes
> with a small number of trials. The single threaded copy algorithm took up to
> 20 seconds on a 200Gb tree. The parallel tree copy algorithm reduces the
> same copy to about 4 seconds.
>
> We plan to eventually move most if not all of these updates into the public
> Fuego source tree. For completeness, the configuration script used for UEC
> was as follows:
>
> go_rules japanese
> time_settings 1800 0 0
> komi 6.5
>
> uct_max_memory 175000000000
>
> uct_param_player ponder 1
> uct_param_player reuse_subtree 1
>
> uct_param_search lock_free 1
> uct_param_search number_threads 112
> uct_param_search number_playouts 2
>
> # Enable new parallel tree copy
> uct_param_search max_copy_threads 8
>
> # New features added on second day of UEC cup
> uct_param_globalsearch use_filter 1
> uct_param_rootfilter check_offensive_ladders 1
>
> - Rich
>
> _______________________________________________
> Computer-go mailing list
> Computer-go@dvandva.org
> http://dvandva.org/cgi-bin/mailman/listinfo/computer-go
>
_______________________________________________
Computer-go mailing list
Computer-go@dvandva.org
http://dvandva.org/cgi-bin/mailman/listinfo/computer-go

Reply via email to