Monday 27 August 2012

August 22: The Worst (Research) Day of My Life


It took me a while to decide to make this posting since I have to confront past events that I have tried hard to block out. The passage of time may have softened the blow, but the memories are still painful.

In my previous posting, I talked about the twentieth anniversary of the Tinsley-Chinook match for the World Checkers Championship. Please read that posting first as it sets the stage for this one.

The best-of-40-games match started with four draws. Tinsley won game 5 and missed a win in game 7. Chinook played beautifully in game 8 and won – only the fourth loss by Tinsley since 1950! Chinook scored again in game 14. After 16 games, we were in the lead by a score of two wins to one. The checkers world and the media were agog at the possibility of the computer winning the match. That was Friday August 21.

My apologies for the length of the following excerpt from One Jump Ahead (Springer-Verlag, 2007). I found it difficult to shorten the text significantly without impacting the “drama”.


While walking to breakfast with Paul the next day, I remarked to him that almost everything had gone our way thus far in the match. (Note how I conveniently forgot about games one, five, and seven.) Was it even conceivable that we might win? When was the bubble going to burst? Unfortunately, these innocent remarks turned out to be prophetic.

We returned from breakfast and had the hotel staff unlock the door to the playing hall. When the doors swung open, we were blasted by a stifling heat. Nothing looked untoward, but the heat was so overwhelming that we began to sweat. We immediately contacted the hotel, who sent someone to find out what the problem was. Apparently it was hard to get good weekend help in London. The security guard who locked the room at night failed to follow instructions. Turn the lights off and the air conditioning on. Simple! Unfortunately, our instruction-challenged guard had turned the air conditioning off and left the lights on. Given that the playing hall was a closed room with no windows and poor ventilation, the result was predictable. It was even worse than that because the room housed numerous computers and a projector—all heat generators (especially our SGI 4D/480 [computer]). An embarrassed hotel staff hastily did all they could to cool down the room, but there was nothing that could quickly resolve the problem. Even after opening the door and bringing in some fans, the room remained unpleasantly hot. The start of game seventeen was delayed for thirty minutes. This was an awkward situation for the hotel since it was a weekend, and a large number of spectators were waiting to enter the room.

Game seventeen began, but I quickly became quite uncomfortable sitting onstage. The pitcher of ice water that Tinsley and I shared was emptied and then re-filled. Clearly, the heat bothered Tinsley too. It was completely out of character for him to breach the game etiquette by remarking to me how hot it was. I got up and went over to David Levy to discuss the problem. Marion and I were sitting on an elevated stage beside the hot computers. It was very unpleasant, and something had to be done. David appreciated the seriousness of the situation, disappeared for a few minutes, and then reappeared with a senior member of the hotel staff. The game was interrupted for over an hour as frantic attempts were again made to cool down the room. Two fans were brought in and installed beside the game board—one pointed at Tinsley and the other at me. When play resumed we made a few perfunctory moves and then agreed to a quick draw; anything to get out of the room.

Programmer’s log, Chinook project, day 1,178 Saturday, August 22, 1992

After a long interruption we start game eighteen. It isn’t hot in the room anymore, but it still is uncomfortable. The heat doesn’t bother Chinook, as we build up a nice advantage (+31). Normally I would start fantasizing about a win, but maybe the two wins against Tinsley have made me complacent. All I’m thinking about is the day’s bizarre events.

Hmm. Marion is teasing us again. Chinook says it’s up 54 points. I shake off my lethargy and start getting interested in the game. Hey! Chinook is getting the first king and has an obvious advantage. Now we’re up 69 points. Could a third win be around the corner? A few more moves, and the advantage is still there. ... Chinook starts computing. I have to wait a few seconds for anything to appear, since we don’t print anything until the program reaches thirteen plies [a ply equals one move by one player]. The wait is worthwhile; Chinook has good news for me: ... A +86 score—it must be another Chinook win. Look! Chinook’s analysis says that Tinsley is so desperate that he has to sacrifice a checker. Ho hum. These victories are getting pretty routine now.

But... at the start of the search, Chinook prints out the following message:

MT database: f4-e5

This position is in Chinook’s database of Tinsley games! In other words, Tinsley has encountered this position sometime in the past. Since his preceding moves weren’t in our Tinsley database, this game represents a different move sequence than he has played against before. Maybe this transposition back into one of his games will confuse him. Of course, he has lost so few games that it’s unlikely he would knowingly walk into a losing line of play. Chinook’s score suggests otherwise. Maybe our databases are about to turn this supposed draw into a win.

DEPTH 15 [+93] ...
DEPTH 17 [+86] ...

Chinook doesn’t think it has enough time to complete nineteen plies, so it decides it’s time to move. Before doing so, it tries my new PV (principal variation) extension trick. The program plays down the first four moves in the above line (the so-called principal variation) and checks to see that everything is what it should be. It does this by searching that position an extra two plies. This is supposed to be insurance that nothing untoward is happening.

DEPTH 19
Extend PV 2 ply, starting 4 moves down the line
PVextension fail at 4

Oops. After playing down the first four moves..., the additional search shows that the score is going to drop by a significant amount, thirty points being the minimum threshold. The program backs up a ply and does another search to nineteen plies deep to see whether the score drop still holds:

PVextension fail at 3

Darn. We back up a ply and try again...

PVextension fail at 2

And again...

PVextension fail at 1

We now know that a nineteen-ply search results in a score that is less than or equal to 56 points (86-30=56). I knew the high score was too good to be true. Since the score is changing in a major way, Chinook will now allocate as much time as it can to complete the nineteen-ply search and find out how serious the problem is. It takes less than two minutes to get the verdict: [+33] …

From the dizzying heights of anticipated success, my hopes are rudely brought back down to Earth. In all likelihood it’s a draw after all. Does Marion know that he’s tormenting me so?

Time up but search unstable! Extend search for 380 more seconds

Chinook decides it wants to finish the nineteen-ply search before moving. The program has lots of time left on its clock, so why not? It decides to spend at most another 380 seconds trying to finish the search. I glance at the clock and see that Chinook has already spent thirteen minutes on this move but has twenty-two minutes remaining. Actually, I wish the program would just move so that we can get this game over quickly, go for a nice lunch, and then come back to a (hopefully) comfortable playing hall.

Time up but search unstable! Extend search for 95 more seconds

That’s odd. The program has now spent nineteen minutes on this move, unusually long for a nineteen-ply search. Well, who cares? Another ninety-five seconds won’t make any difference.

Time up but search unstable! Cannot have another extension

Chinook is programmed only to extend the time twice (a modification that came about as a result of the Lafferty loss on time). The ninety-five seconds has expired, so now the program should move... any second now. It usually takes a few seconds to coordinate the parallel program, so once that’s done... uh, hello? Chinook?

I can’t begin to describe the feeling of nausea that instantly sweeps over my body. Perhaps for the first time in my life, I truly know what it means to feel heart-stopping panic. Chinook is supposed to move and it won’t. The program has fourteen minutes left on the clock to make its last four moves. If we don’t make those moves, then we forfeit the game.

I bolt from the chair and head into the audience to find Paul. One look at my face tells him part of the story. I breathlessly explain the situation to him. We check the machine and find that Chinook is still busy computing away—doing what, I don’t know. Unless the program moves... I glance at the clock—less than ten minutes and counting. The spectators sense that something has gone wrong, and I can hear a murmur rising from the audience. Tinsley seems oblivious to what’s happening. He continues to stare at the position, looking as if he’s lost in another world.

“How’s everything going?”

I whirl around to see who might be cheerily asking such an annoying question at this inopportune moment. It’s Rob Lake, fresh off the airplane from Canada. He certainly picked a fine time to arrive. He senses the seriousness of the situation and stands back, watching helplessly.

When the “time up” message occurs, Chinook is supposed to notify all the computers to stop searching and make a move. The message appeared, but none of the computers have stopped searching. In desperation I hypothesize that somehow the “time up” notification has been lost. I’m not quite sure how this could happen, but it is plausible. I’m grasping at straws. With three minutes left on the clock, I hunt for the command that allows me to send a “time up” message to Chinook (an interrupt in computer jargon). Finding it, I type in the command. I’m not sure how ethical it is for me to do this, but I’ll worry about that later. All that matters is to make the time control. There’s only a minute left on the clock. The program instantly replies:

I move: 17. ... d2-c3 Value = 33

Three moves to go and only a minute left on the clock. This calls for fast fingers at the keyboard. Marion immediately replies with the forced capture d4×b2. My fingers tremble as I type the move in. I hit return expecting Chinook to immediately reply with a1×c3. Nothing. Nothing?? No response. I don’t know what else I can do. I rush offstage to find David Levy and ask for a time-out. He doesn’t know why I made my request, but he sees my panicked state and immediately agrees. He comes onstage, stops the clocks, and then asks me what’s going on. It takes me a moment to collect my composure before I tell him what has happened.

In computer chess tournaments, computer versus computer, the participants are allowed fifteen-minute time-outs if they can demonstrate that a problem is due to circumstances beyond their control. Clearly, if there’s a bug in the program, you can’t get a time-out—you must do whatever the program says to do. Sometimes, however, problems occur that shouldn’t be held against the computer. For example, if the computer is using a phone line and the line gets disconnected, should the program be penalized? This has nothing to do with the quality of your program; these are events beyond your control. In the computer chess world, we allow the side with difficulties to stop the game, fix the problem, and then continue. Usually the problem can be easily resolved; for example, if a phone connection drops (just re-dial). Sometimes, however, the problem can’t be solved, and a forfeit results. For example, Deep Thought forfeited a game in the 1994 North American Computer Chess Championship when there was a power outage in the building that their computer was housed in. After waiting in vain for several hours for the power to come on, they had to concede the game.

David made the correct decision according to computer-chess precedent, but per- haps not the right decision given the inexperienced checkers audience. He told us to take our time and find out what’s wrong. If the fault is with Chinook, then we forfeit. If the fault isn’t with Chinook, then we can restart the program to continue at move 18 of the game with one minute on our clock.

Rob, Paul, and I gather around the computer screen to see what’s wrong. We try communicating with Chinook, but get no response. We have no idea what it’s doing or why it isn’t responding. Finally, in desperation, we decide to kill the program with a “core dump.” Terminating the program this way causes the state of the program to be saved on disk so that we can postmortem it. This will allow us to autopsy the Chinook corpse to identify the cause of its paralysis.

Surprise! Chinook refuses to die. Paul, Rob, and I know that when you kill a computer program it should die and go away (not unlike the real-world analogy). Chinook won’t die—it’s very much alive and computing—whatever it’s computing. This is a bigger surprise because this just isn’t supposed to happen. We can’t seem to do anything else on the computer, so we do the only thing that gives us back control. The SGI 4D/480 is powered off, left to rest for a few minutes, and then powered back on.

What went wrong? I immediately jump on the room temperature as the cause. The computer has been “cooked” all night long. Is it possible that the extreme heat caused the computer to malfunction? Possible, but hard to prove. Paul comes up with a suggestion as to how a software bug in Chinook might cause this problem to occur. He is speculating because we don’t know for sure whether his suggestion could even happen. Meanwhile, the computer reboots. We log in, start up Chinook, and it runs as if nothing were wrong.

Norm can’t help out on the technical side, so he goes wandering through the crowd. He keeps hearing the same thing. The people in the audience don’t see why we should be allowed to stop our clock in the middle of a game. That would never happen in a human event. There seems to be unanimous consensus that Chinook should forfeit. Norm brings this distressing news back to me.

So, gentlemen, it’s decision time. Is this a problem with Chinook? If so, then we should forfeit. Or is it a problem beyond our control? If so, then we should ask to continue the game.

Paul and Rob don’t say anything. The uneasy silence is broken by Norm. In the interests of good sportsmanship, he says, the honorable thing to do is resign the game. The problem may be our fault. Even if it isn’t, no one, perhaps including Tinsley, will understand why we should be allowed to take a time-out and fix things. People will accuse us of every dirty trick in the book—doing anything to win. Norm is brief, but very much to the point. Again, an uneasy silence prevails.

“I think we should resign.”

That’s the hardest sentence I’ve ever said in my life. I look up and see the others slowly nod in agreement. I have to collect myself for a moment; the emotional impact is too intense. Norm tells me that Tinsley, Levy, and Keene are eating lunch in the hotel restaurant. I ask everyone on the team to accompany me to the restaurant. We find the trio in a back corner of an otherwise deserted restaurant.

I walk up to the table extend my hand to Marion and say, “The Chinook team resigns.” Marion looks up glumly and apologizes for winning a game this way. David looks at me and immediately says, “You did the honorable thing.” Raymond Keene congratulates Marion on evening the match score at two wins apiece. Tinsley writes,

“I must confess to having some very mixed feelings about it all, even though I was being given a new start—so to speak.”

Marion Tinsley (London, 1992).
[Checkers grandmaster] Richard Pask was in attendance that day (taking a nine-hour round-trip train ride). He later reflected on the fateful decision to resign.

“The decision taken to forfeit game 18, although clearly very painful for you, was undoubtedly the correct one, for a whole host of reasons. For one thing, it retained the high standards of integrity and decency associated with the entire Chinook team, and won my public applause, on behalf of all players, at the time. Norman Treloar was correct in perceiving anger amongst the players present, but would perhaps have been surprised at its intensity. While Tom Landry’s statement that a failure to award the game to Marion would be “the worst decision in the history of the world,” was regarded as somewhat over the top, it nevertheless reflected the strength of feeling in the playing room.”

There’s less than an hour to the next game, and we have no idea what to do with Chinook. The program is up and running again and seems fine. We decide to let it play a game against itself and go for lunch. I’m in shock as all four of us walk to a fast-food restaurant. Paul talks out loud, speculating on possible software explanations for the symptoms of the problem. I don’t hear much of what he’s saying; I’m lost in my own world. Everything has been going so well—almost too well. Seventeen games under our belt and Chinook is in the remarkable position of being in the lead. The fall from the dizzying heights of success is brutally painful. It happened so suddenly. On a single move I experienced the exhilaration of thinking we were going to win, the disappointment of seeing yet another draw looming, and the devastation of a forfeit loss.

Over lunch the discussion quickly turns to the temperature problem in the playing hall. Did the carelessness of a hotel employee cost Chinook this critical game? The room temperature might have been over 30 degrees C (86 degrees F) for most of the night. In theory this shouldn’t have been a problem, but the coincidence seems remarkable. In three months of testing, over eighty tournament games… and twenty test games…, nothing like this had happened before. If the program had forfeited on any other day we would have assumed it to be a software problem. But today of all days, there’s this exceptional condition that casts doubt. Is it software? Or is it the machine? Did we screw up? Or did a hotel employee? None of us knows.

After lunch we head back to the playing hall to start game nineteen. I suddenly realize that because of the abrupt termination of game eighteen, the final result hasn’t been included in Chinook’s log file. With a heavy heart I edit the file and append a line to the end:

RESULT: Chinook Loses (forfeit)


I spent the rest of the weekend trying to find the problem with Chinook. In the end, we never found it. All I know is that something went terribly wrong on that fateful day, and it did not happen beforehand or afterwards. Only on August 22.

With the best-of-40-games match tied at two wins apiece, Tinsley paid us the highest compliment. He said he was going to play cautiously and not take any chances; he would wait until we made a mistake. His strategy paid off. Chinook erred in game 25 and Tinsley meticulously took advantage of the opportunity. He then played drawish checkers for the remaining games, nursing his one game lead. In the final game of the match, I desperately needed a win so I programmed Chinook to treat a draw as a loss. Chinook found the draw, rejected it, made a feeble attempt to complicate the game, and then lost. Final score: Tinsley four wins, Chinook two wins, and 33 draws.

But that’s not the end of the story. August 22nd was not finished with me.

Accepting the “Runner Up” Trophy (London 1992). From left to right: Paul Lu, Rob Lake, Jonathan Schaeffer, and Norman Treloar.

No comments:

Post a Comment