HaileyStorm commited on
Commit
8b4892f
1 Parent(s): 746013b

Upload chess-gpt-eval/main.py with huggingface_hub

Browse files
Files changed (1) hide show
  1. chess-gpt-eval/main.py +34 -32
chess-gpt-eval/main.py CHANGED
@@ -375,6 +375,7 @@ def add_random_moves(
375
  for i in range(num_moves * 2): # Full moves to half moves
376
  legal_moves = list(board.legal_moves)
377
  if not legal_moves:
 
378
  return None, None, 0 # Game over, discard the game
379
 
380
  move = board.san(random.choice(legal_moves))
@@ -386,9 +387,11 @@ def add_random_moves(
386
  game_state += f" {move}"
387
 
388
  if board.is_game_over():
 
389
  return None, None, 0 # Game over, discard the game
390
 
391
  game_state = game_state.strip()
 
392
  return game_state, board, num_moves
393
 
394
 
@@ -481,22 +484,26 @@ def play_games(
481
  book_opening: bool = False,
482
  random_opening: bool = False,
483
  random_opening_moves: int = 20,
 
484
  ):
485
  unique_games = set()
486
  games_saved = 0
487
  while games_saved < max_games:
488
  print(f"\nGame {games_saved} of {max_games}\n")
489
 
490
- with open("gpt_inputs/prompt.txt", "r") as f:
491
- game_state = f.read()
 
492
  board = chess.Board()
493
 
494
  if book_opening:
495
  game_state, board, opening_moves = random_book_opening(game_state, board)
496
  elif random_opening:
497
- while True:
498
- game_state, board, opening_moves = add_random_moves(game_state, board, random_opening_moves)
499
- if game_state is not None:
 
 
500
  break
501
  else:
502
  opening_moves = 0
@@ -523,6 +530,18 @@ def play_games(
523
  with open("game.txt", "w") as f:
524
  f.write(game_state)
525
  current_move_num = f"{board.fullmove_number if move_num_in_gamestate else ''}."
 
 
 
 
 
 
 
 
 
 
 
 
526
  total_moves += 1
527
  # I increment legal moves here so player_two isn't penalized for the game ending before its turn
528
  player_one_legal_moves += 1
@@ -633,16 +652,16 @@ def play_games(
633
  RUN_FOR_ANALYSIS = True
634
  MAX_MOVES = 999 # Due to nanogpt max input length of 1024
635
  recording_file = "logs/determine.csv" # default recording file. Because we are using list [player_ones], recording_file is overwritten
636
- player_ones = ["50M/anneal/ckpt_97386300g_34824942225t.pt"]
637
  player_two_recording_name = "lc0_sweep" #"stockfish_sweep"
638
  move_num_in_gamestate = False
639
- book_opening = False
640
  random_opening = True
641
- random_opening_moves = 20
642
  if __name__ == "__main__":
643
  for nanogpt_player in player_ones:
644
  i = 0
645
- for rm in range(0, 36, 5):
646
  #for i in [0]: # [3] #range(11):
647
  num_games = 500
648
  # player_one = GPTPlayer(model="gpt-3.5-turbo-instruct")
@@ -652,9 +671,11 @@ if __name__ == "__main__":
652
  # player_one = StockfishPlayer(skill_level=-1, play_time=0.1)
653
 
654
  player_one_recording_name = nanogpt_player
655
- player_one = NanoGptPlayer(model_name=player_one_recording_name, move_num_in_gamestate=move_num_in_gamestate)
656
- player_one_recording_name = "xformer_" + nanogpt_player
657
- #player_one = MambaPlayer(model_name=player_one_recording_name, move_num_in_gamestate=move_num_in_gamestate)
 
 
658
  #player_two = StockfishPlayer(skill_level=i, play_time=0.1)
659
  player_two = LC0PLayer(skill=i)
660
 
@@ -664,24 +685,5 @@ if __name__ == "__main__":
664
  #print(f"\n\nSTARTING GAMES AGAINST STOCKFISH LEVEL {i}\n\n")
665
  print(f"\n\nSTARTING GAMES AGAINST LC0 LEVEL {i}\n\n")
666
 
667
- play_games(player_one, player_two, num_games, book_opening=book_opening, random_opening=random_opening, random_opening_moves=rm)
668
 
669
- print("\n\n\n********\nFinal Statistics:\n********\n")
670
- for nanogpt_player in player_ones:
671
- player_one_recording_name = "xformer_" + nanogpt_player
672
- if RUN_FOR_ANALYSIS:
673
- csv_file_path = f"logs/{player_one_recording_name}_vs_{player_two_recording_name}"
674
- csv_file_path = csv_file_path.replace(".", "_") # Because I'm using ckpt filenames for nanogpt models
675
- csv_file_path += ".csv"
676
- else:
677
- csv_file_path = recording_file
678
-
679
- try:
680
- stats = calculate_stats(csv_file_path)
681
- if stats:
682
- print(f"\nStatistics for {nanogpt_player}:")
683
- for key, value in stats.items():
684
- print(f"{key}: {value}")
685
- except:
686
- print(f"Couldn't get stats for {csv_file_path}")
687
- print("\n\n\n********\nDONE!\n********\n\n\n")
 
375
  for i in range(num_moves * 2): # Full moves to half moves
376
  legal_moves = list(board.legal_moves)
377
  if not legal_moves:
378
+ print("Random moves: no legal moves left.")
379
  return None, None, 0 # Game over, discard the game
380
 
381
  move = board.san(random.choice(legal_moves))
 
387
  game_state += f" {move}"
388
 
389
  if board.is_game_over():
390
+ print("Random moves: game over.")
391
  return None, None, 0 # Game over, discard the game
392
 
393
  game_state = game_state.strip()
394
+ print(f"{num_moves} Random moves added, returning: {game_state}")
395
  return game_state, board, num_moves
396
 
397
 
 
484
  book_opening: bool = False,
485
  random_opening: bool = False,
486
  random_opening_moves: int = 20,
487
+ random_move_start: int = 0,
488
  ):
489
  unique_games = set()
490
  games_saved = 0
491
  while games_saved < max_games:
492
  print(f"\nGame {games_saved} of {max_games}\n")
493
 
494
+ # with open("gpt_inputs/prompt.txt", "r") as f:
495
+ # game_state = f.read()
496
+ game_state = ""
497
  board = chess.Board()
498
 
499
  if book_opening:
500
  game_state, board, opening_moves = random_book_opening(game_state, board)
501
  elif random_opening:
502
+ for _ in range(10):
503
+ g, b, opening_moves = add_random_moves(game_state, board, random_opening_moves)
504
+ if g is not None:
505
+ game_state = g
506
+ board = b
507
  break
508
  else:
509
  opening_moves = 0
 
530
  with open("game.txt", "w") as f:
531
  f.write(game_state)
532
  current_move_num = f"{board.fullmove_number if move_num_in_gamestate else ''}."
533
+
534
+ if total_moves == random_move_start:
535
+ for _ in range(10):
536
+ g, b, opening_moves = add_random_moves(game_state, board, random_opening_moves)
537
+ if g is not None:
538
+ game_state = g
539
+ board = b
540
+ break
541
+ total_moves += random_opening_moves
542
+ continue
543
+
544
+
545
  total_moves += 1
546
  # I increment legal moves here so player_two isn't penalized for the game ending before its turn
547
  player_one_legal_moves += 1
 
652
  RUN_FOR_ANALYSIS = True
653
  MAX_MOVES = 999 # Due to nanogpt max input length of 1024
654
  recording_file = "logs/determine.csv" # default recording file. Because we are using list [player_ones], recording_file is overwritten
655
+ player_ones = ["50M/anneal/anneal_complete_round3.pt"]
656
  player_two_recording_name = "lc0_sweep" #"stockfish_sweep"
657
  move_num_in_gamestate = False
658
+ book_opening = True
659
  random_opening = True
660
+ random_opening_moves = 10
661
  if __name__ == "__main__":
662
  for nanogpt_player in player_ones:
663
  i = 0
664
+ for rm in [25]: #range(5, 25, 5):
665
  #for i in [0]: # [3] #range(11):
666
  num_games = 500
667
  # player_one = GPTPlayer(model="gpt-3.5-turbo-instruct")
 
671
  # player_one = StockfishPlayer(skill_level=-1, play_time=0.1)
672
 
673
  player_one_recording_name = nanogpt_player
674
+ # player_one = NanoGptPlayer(model_name=player_one_recording_name, move_num_in_gamestate=move_num_in_gamestate)
675
+ #player_one_recording_name = f"xformer_rdm_{rm}"
676
+ player_one = MambaPlayer(model_name=player_one_recording_name, move_num_in_gamestate=move_num_in_gamestate)
677
+ player_one_recording_name = f"random_mamba_start/mamba_rdmstart_{rm}"
678
+
679
  #player_two = StockfishPlayer(skill_level=i, play_time=0.1)
680
  player_two = LC0PLayer(skill=i)
681
 
 
685
  #print(f"\n\nSTARTING GAMES AGAINST STOCKFISH LEVEL {i}\n\n")
686
  print(f"\n\nSTARTING GAMES AGAINST LC0 LEVEL {i}\n\n")
687
 
688
+ play_games(player_one, player_two, num_games, book_opening=book_opening, random_opening=random_opening, random_opening_moves=random_opening_moves, random_move_start=rm)
689