Chess@home: Building the largest Chess AI ever (in JavaScript)
sylvainzimmer.com
sylvainzimmer.com
Using a lot of CPUs to generate heat is easy. Using them to generate good chess moves is another matter.
How about having your "2000-node chess program" play against the strongest GPL-ed chess program (Stockfish 2.1), running on a fast 4-core box?
If you can win a match of meaningful length against that, I might be interested.
Until you get there, this is a nice exercise in combining technology to achieve meaningless results.
In terms of strength, we'll add the UCI protocol to be able to run games against other engines. We'll see how it performs but we don't expect to beat Stockfish easily, even with a very large number of nodes. That will be part of the experiment and we'll be happy to publish the results.
Now, another path to get real performance would be to find a way of using webGL on the workers. Folding@home has proven it's sometimes 10x more efficient than using CPUs. If we can manage to do that then we might have a shot at being both the largest and strongest AI...
You might also combine it with a moves/games database and play variations on these games according to a softmax distribution. (instead of playing random games with classic MCTS)
I think this will work much better than tree search but still, I think it will be really hard to beat eg. Stockfish. You got nothing with lots of processor power if you're doing the wrong calculations:)
Forget about using the GPU for chess. Just getting that to work somewhat decently is a huge achievement - which no-one has succeeded in so far.
Some people, when they see a problem, think: "We'll use the GPU". Now they have 2 problems.
The program they want to use ranks around 500 elo points lower than the strongest open source program on the same hardware. (source: http://computerchess.org.uk/ccrl/4040/rating_list_all.html)
It is estimated that doubling the speed of the computer adds 50-70 elo points (http://en.wikipedia.org/wiki/Computer_chess cites David Levy's book how computers play chess.)
This means that they will have to achieve anywhere between a 2^7 to a 2^10 speedup over a normal single PC. Once you consider the latency problem described above, it is very unlikely that they can achieve this speed up. To put this problem into context, even on a quad-core a three times speedup is considered pretty good in computer chess.
As you pointed out, the main challenge is scaling efficiently, and not getting a poor speedup even with that many workers (I think we can aim for 60% speedup with YBWC). We hope to have an edge here with Node.js' I/O performance, but it's still a big challenge (and that's what keeps it interesting ;-)
Note that most top engines barely get this speedup with 4 cores on an SMP system. I doubt you can get the same efficiency in a distributed system with 2000 cores.
It will be very difficult to make Javascript competitive with Stockfish, even across 1000 computers. Still, a very cool project!
If they now find an algorithm that scales to 2000 nodes with an efficiency as low as 20%, this is a breakthrough achievement. It would be portable to a C/C++ based program with "only" a 4 times faster interconnect.
That said, an engine with a primitive search scales better because the tree is more regular and it's easier to predict the real size of workloads. It could end up that the algorithm doesn't actually work for a strong engine.
But anyway, the "mere" 4x factor due to JavaScript is peanuts compared to the rest of the problems.
I think you're being too pessimistic. Even if high playing strength isn't achieved, using JS to do @home projects is huge, and putting it together in 48 hours is pretty sweet.
This could be a new way of generating revenue from a website: selling time on visitors' machines. I'm not saying it's a good or ethical idea, but it's certainly an interesting idea.
http://pluraprocessing.wordpress.com/2009/08/24/our-response...
1. The board is not correct. The black square must be in the left corner. While this may seem like a small quibble, it changes the patters so that squares like e4, which should be white, are now black. This makes it difficult to play.
2. There are apparently no openings programed into the computer. Since openings are so complex, simply using an algorithm to find good opening moves does not work well. So, this program will almost always start out with bad first moves.
Please keep in mind it was hacked together in 48h, so yes it's supposed to be unprofessionally done ;-) However we'll now calmly fix all the issues and continue improving it: https://github.com/joshfire/chessathome/issues
Feel free to report more bugs, we love feedback :)
http://www.rgoarchitects.com/Files/fallacies.pdf
'The fallacies of distributed computing explained'.
Ehm, what makes this so epic? Computers have been known to beat humans at chess for quite a while now.
But yes, in terms of pure strength, nothing epic for now :)
http://en.wikipedia.org/wiki/Human-computer_chess_matches#Po...
Improving the evaluation function is "merely" a constant improvement.
Then, you can essentially isolate out one of the variables, the strength of the "node", or client, engine, and you can play your Stockfish distributed against a Stockfish on a local box.
Of note is that there will still be 2 advantages the distributed version has: - more CPUs (obvious to everyone) - more RAM (well, obvious once you mention it)
If the distributed version is stronger then one question will be, was it more CPUs, or more RAM, that tipped the balance?
Although in my case, a single AI node is probably already enough to beat me at chess, let alone 2000…
PS don't forget to ask your contributors to open a tab for each core they have if their browser is going to use a separate OS thread for each
PPS Google Chrome's NACL is, longer term, an interesting direction perhaps?
As for asking people to open multiple tabs, that may be an additional instruction for D-Day if they want to max out their CPUs. But we figured 1 CPU maxed out while browsing a website would already be enough :)
Chrome's NaCl is definitely an interesting direction, but we'll investigate webGL first which seems to be more promising (see Folding@home).
Thanks for the feedback!
It's definitely not secure, or very reliable, but it's a start at least. (Contributions accepted!)