| | """ |
| | Example usage of the ChessBot Chess Model |
| | |
| | This model can be used without installing any external packages except: |
| | - torch |
| | - transformers |
| | - chess (python-chess) |
| | - numpy |
| | """ |
| |
|
| | import torch |
| | import sys |
| | sys.path.append("./") |
| | from modeling_chessbot import ChessBotModel, ChessBotConfig |
| |
|
| | |
| | config = ChessBotConfig() |
| | model = ChessBotModel.from_pretrained("./") |
| |
|
| | |
| | fen = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1" |
| | device = "cuda" if torch.cuda.is_available() else "cpu" |
| | model = model.to(device) |
| |
|
| | |
| | policy_move = model.get_move_from_fen_no_thinking(fen, T=0.1, device=device) |
| | print(f"Policy-based move: {policy_move}") |
| |
|
| | |
| | value_move = model.get_best_move_value(fen, T=0.1, device=device) |
| | print(f"Value-based move: {value_move}") |
| |
|
| | |
| | position_value = model.get_position_value(fen, device=device) |
| | print(f"Position value [black_win, draw, white_win]: {position_value}") |
| |
|
| | |
| | probs = model.get_move_from_fen_no_thinking(fen, T=0.1, device=device, return_probs=True) |
| | top_moves = sorted(probs.items(), key=lambda x: x[1], reverse=True)[:5] |
| | print("Top 5 moves:") |
| | for move, prob in top_moves: |
| | print(f" {move}: {prob:.4f}") |
| |
|