Configuración avanzada de Stockfish.

Por Daniel Muñoz

El módulo viene preconfigurado con unos parámetros que, por lo general, son idóneos para cualquier usuario. Sin embargo, es posible configurarlo en función de tus necesidades y desarrollar una cierta actividad de “tweaking”.

Parámetros y tamaño hash
Para acceder a los parámetros del módulo debes pinchar en “avanzado” dentro de la pantalla de cargar módulos. Una vez aquí te vas a encontrar con dos secciones:

  1. Sección relacionada con el tamaño hash.
  2. Y otra sección con un montón de parámetros que aparecerá cuando pinches en “parámetros”

Te voy a explicar en detalle en qué consiste todo lo anterior.

Las tablas hash / tamaño hash

Los programas de ajedrez que usan tablas hash (casi todos los motores de ajedrez actuales las usan) crean un archivo de almacenamiento temporal mientras juegan o analizan y almacenan las posiciones que han evaluado en este archivo. Si aparece una posición más adelante en la búsqueda (mediante una transposición de movimientos) que es lo mismo que una posición que ya se ha evaluado (y almacenado en las tablas hash), no es necesario analizarla por segunda vez. Simplemente extraen la información de evaluación existente de las tablas hash y luego avanzan a la siguiente posición, con lo que optimizan su rendimiento.

Es crucial configurar las tablas hash en el valor adecuado (que a menudo no es el “máximo” sugerido). Más grande no siempre es mejor; de hecho, puede ser francamente perjudicial para el rendimiento de un motor.

Entonces, ¿cómo sabes qué tamaño establecer en las tablas hash? ¿Por qué no debes configurar las tablas mucho más grandes o más pequeñas?

Si las configuras demasiado pequeñas, se llenan de posiciones demasiado rápido y luego el motor no tiene más espacio para agregar nuevas posiciones. Esto hace que el programa baje un poco su fuerza, aunque tampoco es el fin del mundo.

Pero configurar las tablas demasiado grandes es una historia diferente. No importa si compraste el mejor ordenador de la tienda con 32 gigas de RAM: si configuras las tablas hash en 32 gigas para una partida de sesenta minutos con un procesador de 800 MHz, vas a lobotomizar tu motor de ajedrez.

¿Cuál es la fórmula para configurar adecuadamente las tablas Hash?

Antes de decírtela te adelanto que te vas a asustar, pero en cuanto te lo explique vas a ver que no es nada difícil. ¡No huyas cobarde!

HT [KB] = 2.0 * PFreq [MHz] * t [s]

Básicamente lo que nos dice esta fórmula es que para conocer el tamaño del hash debemos multiplicar por 2 la velocidad de nuestro procesador y multiplicarlo por el tiempo en segundos que hayamos configurado para cada jugada. Por ejemplo, si vamos a jugar contra el módulo una partida de 10 minutos para 40 jugadas (15 seg) y nuestro procesador es de 3.000 Mhz el resultante será: (3.000 * 2) * 15 = 90000 que dividido entre 100 nos da 900 por lo que elegiremos el tamaño del hash más próximo a este valor del desplegable: 1024 en nuestro caso.

No obstante, si lo que vas a realizar es análisis infinito sin jugar contra la máquina la recomendación es más sencillo, utiliza aproximadamente la mitad de tu memoria RAM física o incrementa el valor en torno a un 20% del cociente anterior.

 

Los parámetros de Stockfish

 

 

 

 

 

 

 

 

 

Hemos llegado al último punto en el que lo que haremos será “afinar” la configuración del “engine”. Voy a explicarte en qué consiste cada uno de esos extraños parámetros que te aparecen en inglés:

Write Debug Log
Si se debe o no escribir un registro de depuración. Por defecto está configurado en NO.

Contempt. Por defecto 0, Min: -100, Max: 100
Aproximadamente equivalente al “optimismo”. Los valores positivos de desprecio favorecen el juego más “arriesgado”, mientras que los valores negativos favorecerán el estilo de juego sólido. Cero es neutro, ni muy agresivo ni muy sólido. Es el valor por defecto.

Min Split Depth Por defecto: 0, Min: 0, Max: 12
Cuando se utilizan varios subprocesos, el parámetro Split Depth define la profundidad mínima a la que se dividirá el trabajo entre los núcleos.

Al usar múltiples hilos, se supone, lógicamente, que la eficiencia de los motores se multiplicará automáticamente en un porcentaje igual a 100 (es decir, un núcleo = 100 por ciento, dos núcleos = 2×100 por ciento). Pero no es así. Agregar un segundo núcleo no significa que agreguemos otro 100% de eficiencia a su poder de análisis. Significa que agregamos una eficiencia de aproximadamente el 75 por ciento a sus 100 anteriores. Y este porcentaje disminuye con cada núcleo que agregas a la configuración de tu PC, todo por el hecho de que los núcleos trabajan en paralelo y a menudo pueden tratar de trabajar simultáneamente en el líneas de análisis.

Threads, Por defecto: 1, Min: 1, Max: 128
Número de hilos a usar durante el análisis. Este número debes configurarlo en la cantidad de núcleos en tu CPU.

Hash, Por defecto: 16, Min: 1, Max: 1048576
La cantidad de memoria que se debe usar para el hash durante la búsqueda, especificado en MB (megabytes). Este número debe ser más pequeño que la cantidad de memoria física para su sistema.

Move overhead
Move Overhead es una variable interna en Stockfish que compensa cualquier ruido ambiental externo en su algoritmo de administración del tiempo. Se establece en milisegundos, por lo que un valor de 1000 obligaría al stockfish a mantener un búfer de 1 segundo antes de realizar una jugada. Puedes incrementar este valor si realizas partidas entre módulos y detectas derrotas por tiempo.

Skill Level Por defecto: 20, Min: 0, Max: 20
Este valor determina lo bien que quieres que juegue Stockfish. En el nivel 0, Stockfish hará movimientos tontos. El nivel 20 es el mejor / el valor más fuerte.

Slow Mover Por defecto: 89, Min: 10, Max: 1000
Esto significa algo así como “mover lento”, lo que te permite es configurar cuánto piensa el motor en cada jugada dentro de los límites del tiempo. Cuando aumentas el valor, haces que SF piense más, disminuyéndolo (hasta 10 que es el mínimo) haces que SF mueva más rápido.

SyzygyProbeDepth Por defecto: 1, Min: 1, Max: 100
Este valor determina la profundidad a la que las tablas se sondearán durante una búsqueda (ten en cuenta que la posición de la raíz siempre se tratará de encontrar si ‘Usar Syzygy’ está habilitado y el número de piezas en el tablero es menor o igual al ‘SyzygyProbeLimit‘ [ver a continuación]. Un número más alto significa que SF esperará más para comenzar a sondear las tablas.

Syzygy50MoveRule Por defecto, activado.
Cuando se usan tablas de Nalimov o Syzygy en el análisis algunas posiciones pueden contener una secuencia de jugadas hasta el mate que requieren romper la regla de 50 movimientos. Si no está marcada esta casilla se permite no respetar esta norma.

SyzygyProbeLimit Por defecto: 6, Min: 0, Max: 6
Esto determina cuántas piezas debe haber en el tablero antes de que Stockfish comience a sondear la base de datos de finales. Por defecto, esto está configurado en 6 (el límite superior actual de las tablas de Syzygy)

1 comentario

  1. A este interesante articulo “fantasmadel50” le agregar en el Foro de Ajedrez Activo las siguientes opiniones.

    DELINEAMIENTOS GENERALES.

    1) A mas tiempo mas hash , a menos tiempo menos hash.

    2) La tablas hash o de transposicion , esta estrechamente relacionada con el tiempo de la partida y los recursos de la maquina ej procesador , ram etc .

    3) Para partidas bala 1 o 2 min con o sin inc, generalmente 64 , 128 mb

    4) Partidas blitz 512 mb, 384 mb.

    5) La prueba de disco es muy aceptada hoy en dia para poder determinar la hash.

    6) Pruebas de rendimiento en fritz dado que no todos los motores gestionan las hash de igual manera.

    7) Cargar motores en por ej fritz e ir observando el consumo que tienen e ir afinando nuestras tablas hash.

    Cool Para los que tiene sistema windows , generalmente el propio sistema limita el maximo de hash a poder utilizar.

    Y por lo general es el 50 porciento del maximo de memoria ram que tengamos en la maquina o a veses la tercera parte.

Deja un comentario

Your email address will not be published.