Rybka 3: la persistencia de un módulo

27/11/2008 – ¿Cansado de que los análisis logrados tras arduas horas de trabajo con el módulo de ajedrez se evaporen de la volátil memoria RAM? La opción de hibernar el ordenador para conservarlos hasta la siguiente sesión no resultaba muy versátil así que los programadores de Rybka 3 decidieron abordar el problema de forma mucho más eficiente y nos ofrecen diversas soluciones. Todas las funciones implicadas en el proceso están incorporadas en los parámetros del módulo y, por tanto, aparecen en inglés y no disponen de función de ayuda. Para que nadie pierda la posibilidad de analizar hasta el más mínimo detalle con Rybka 3, en este artículo le explicamos como usar sus funciones de almacenamiento de análisis. El que la sigue, la consigue...

ChessBase 14 Download ChessBase 14  Download

Programa de gestión de bases de datos de ajedrez que es referencia mundial. Todos usan ChessBase, desde el campeón del mundo al aficionado. Inicie su historia de éxito personal con ChessBase.

Más información...

Rybka 3: Tablas hash persistentes

Introducción

La posibilidad que ofrece Rybka de mantener las tablas hash permite que el módulo se beneficie de su trabajo anterior cuando se le pide que analice posiciones una segunda vez o cuando se usa para analizar posiciones cuya valoración adecuada depende de posiciones analizadas anteriormente. El mantenimiento de las tablas hash hace que Rybka sea más eficiente en esos casos.

La mayor parte de las posibilidades de almacenamiento de las tablas hash funcionan a la perfección sin necesidad de que el usuario mantenga un control especial. Sin embargo hay casos en los que se necesita la intervención del usuario para maximizar el rendimiento de la posibilidad de almacenamiento de las tablas hash. Además, los usuarios pueden compartir archivos en los que tengan almacenadas las tablas hash, de forma que el usuario A puede beneficiarse de los análisis realizados por el usuario B. Los archivos en los que se guardan las tablas hash también pueden fundirse con otros similares, de forma que el usuario A puede beneficiarse de los análisis realizados de forma independiente por los usuarios B y C. Trataremos en este artículo estos distintos casos.

Procedimientos básicos

Para los usuarios normales, los siguientes procedimientos básicos son suficientes para obtener un rendimiento razonable:



1) En la ventana de diálogo de los parámetros del módulo Rybka 3, establezca el archivo en el que se almacenarán las tablas hash (Persistent Hash File) Para ello pulse el botón con los puntos suspensivos que está a la derecha. Debe seleccionar el archivo propiamente dicho, es decir, no sirve con indicar un directorio o carpeta. Los archivos de almacenamiento de las tablas hash persistentes tienen la extensión ".rph".



2) Ponga una marca de comprobación en la casilla de habilitación de las tablas hash persistentes (Persistent Hash Enabled)

3) Establezca el archivo en el que se guardarán las tablas hash (Saved Hash File) Debe seleccionar el archivo propiamente dicho, es decir, no sirve con indicar un directorio o carpeta. Los archivos de almacenamiento de las tablas hash persistentes tienen la extensión ".rsh".

4) Cuando haya realizado un análisis en profundidad de alguna posición concreta y quiera que Rybka pueda acceder a ese trabajo posteriormente, pulse el botón Save Hash en la ventana de diálogo de los parámetros del módulo.

5) Cuando quiera recuperar los análisis guardados en el paso 3, asegúrese de que hay una marca de comprobación en la casilla de conservación de análisis (Preserve Analysis) y haga clic en el botón de carga de las tablas hash (Load Hash)

El resto de este documento es para usuarios avanzados.

Tablas hash

Todos los programas de ajedrez modernos de alto nivel emplean lo que se denomina tablas hash o tablas de transposición. Se denomina "hashing" a un algoritmo bien conocido con amplias aplicaciones, que en los programas de ajedrez se emplea para almacenar conclusiones sobre posiciones examinadas durante el proceso de búsqueda. El módulo se beneficia de esas conclusiones cuando tiene que revisar las posiciones posteriormente, bien en las iteraciones subsiguientes o bien debido a trasposiciones. Esa información es muy valiosa y contribuye enormemente a la eficiencia de la búsqueda de jugadas.

El problema es que las tablas hash tienen una limitación de tamaño: deben adecuarse a la memoria del ordenador. El contenido de las tablas de transposición se está descartando constantemente en favor de datos con prioridad más alta. En este proceso de priorización, hay una fuerte preferencia por las entradas más recientes y las más antiguas normalmente no duran mucho.

Sin embargo, en algunos casos a los usuarios les gustaría tener la posibilidad de que el módulo pudiese aprovechar el trabajo realizado algún tiempo atrás. Dicho en otras palabras, les gustaría poder mantener las entradas antiguas de las tablas hash. Rybka lo permite de tres formas distintas.

Almacenamiento de los análisis

Una opción de los usuarios de Rybka para ayudarlos a lograr eso es por medio del parámetro del módulo llamado conservación del análisis (Preserve Analysis) Cuando se activa, Rybka da más prioridad a las entradas de alta calidad (es decir, más profundas) y menos prioridad a las más recientes. Ese esquema de prioridades es menos eficiente desde el punto de vista de la disputa de partidas, en las que las posiciones surgen una vez y pronto quedan atrás. Durante el análisis interactivo, en el que el usuario vuelve una y otra vez sobre unas pocas posiciones, es más eficiente.

La conservación del análisis, sin embargo, no es una solución universal.

En primer lugar, al cabo de un tiempo tiene la tendencia a llenar las tablas hash con entradas antiguas de alta calidad que interfieren con los análisis eficientes de nuevas posiciones. Por este motivo, cuando se realizan análisis con la opción de conservación del análisis (Preserve Analysis) es mejor limpiar las tablas hash al cambiar a una posición completamente nueva.



En segundo lugar, la conservación del análisis no permite que se guarden los análisis de una sesión para otra. Tampoco permite a los usuarios compartir, fundir y catalogar sus análisis. Para eso están las tablas hash persistentes.

Propagación ascendente y descendente

Antes de entrar en el tema de las tablas hash persistentes propiamente dichas, consideremos la cuestión de cuándo queremos más que Rybka recuerde sus análisis anteriores. Hay dos posibilidades.

En primer lugar está lo que se llama propagación descendente. En este escenario, Rybka ha analizado alguna posición inicial con gran detalle y queremos que recuerde los pequeños detalles que reunió en el transcurso de ese análisis. Por ejemplo, hicimos que Rybka analizase una posición de partida durante tres horas y ahora fundamentalmente queremos que examine sus análisis para esa posición de partida, esperando que recuerde rápidamente todo, en vez de tener que recrearlo. El término propagación descendente se refiere al hecho de que el análisis debe recordarse en un punto posterior  (es decir, más bajo en el árbol de variantes) con respecto a la posición en la que se realizó el análisis original.



La segunda posibilidad es lo que se llama propagación ascendente. En ella Rybka tiene que llegar a una conclusión sobre una posición y queremos que la recuerde cuando luego le pidamos que analice una posición anterior. El término propagación ascendente se refiere a que el análisis debería recordarse en un momento que está "corriente arriba" (es decir, más alto en el árbol de variantes) con respecto a la posición en la que se realizó el análisis original.



Resulta que el mecanismo que se necesita para abordar la propagación descendente es completamente distinto del que se requiere para la propagación ascendente.

Uso y operación

Guardar y cargar tablas hash

La propagación descendente tiene la propiedad de que las conclusiones a recordar tienen un gran volumen. El árbol de búsqueda tiene forma de... en fin, de árbol, con un tamaño geométrico. No es posible almacenar todos los análisis descendentes que se hacen en una sola máquina y mucho menos fundir la información proveniente de varios usuarios. Solo es factible guardar esos análisis para una posición única o un conjunto de posiciones relacionadas.

En Rybka esa funcionalidad se obtiene por medio de un mecanismo simple de almacenamiento y carga de tablas hash. Cuando el usuario emplea el parámetro del módulo para guardar las tablas hash (Hash Save), Rybka almacena el contenido de las tablas hashs en ese instante en la ruta establecida en Saved Hash File. Cuando el usuario solicita la carga de tablas hash en los parámetros del módulo (Hash Load), Rybka recupera el contenido de las tablas hash que se hubiera guardado en la ruta referida.

Una secuencia genérica de uso sería:

1a) Rybka analiza durante largo tiempo una posición interesante (o varias posiciones próximas en el árbol de variantes)
o
1b) Con la conservación del análisis (preserve analysis) activada, el usuario analiza interactivamente con Rybka un conjunto de posiciones próximas en el árbol de variantes.

2) El usuario invoca la rutina de almacenamiento de las tablas hash (Save Hash) para guardar el contenido de las tablas hash.

3) Posteriormente, el usuario solicita la carga de las tablas hash (Load Hash) para restaurar el contenido de las tablas hash y reanudar el trabajo.

Los usuarios avanzados pueden crear auténticas bibliotecas de tablas de hash sobre sus áreas de investigación favoritas. También pueden compartir los archivos con otros usuarios.

Actualmente esta funcionalidad no admite el reajuste de tamaño o fusión. Cuando se carga el archivo de las tablas hash, las tablas que estén en uso se modifican para ajustarse al tamaño del archivo. La fusión no es una operación crítica aquí, ya que deberían mantenerse distintos archivos para las distintas posiciones.

Tablas hash persistentes

La propagación ascendente tiene la grata propiedad de que las conclusiones que tienen que almacenarse tienen un volumen menor. De hecho, para los propósitos de la propagación ascendente, dos horas de análisis de una posición raíz podrían en teoría presentarse completamente con una sola entrada, para la posición de partida propiamente dicha. Esto nos permite ser más ambiciosos: para la propagación ascendente queremos guardar todo, automáticamente y para siempre. Y queremos ser capaces de fundirlo con cualquier cosa que hayan hecho otros usuarios. Para eso están las tablas hash persistentes.

Las operaciones de las tablas hash persistentes son sencillas:



- El usuario debería establecer en el parámetro del módulo Persistent Hash File la ruta hasta el archivo en el que quiera almacenar las tablas hash persistentes.

- El usuario debe poner una marca de comprobación en la casilla de habilitación de las tablas hash persistentes (Persistent Hash Enabled)

- El archivo de las tablas hash persistentes siempre se mantiene en el disco y se accede a él directamente allí. Puede ser tan grande como el disco duro. El rendimiento del disco duro no es problema ya que el número de accesos es muy reducido en comparación con el tamaño del árbol de búsqueda.

- Cuando existe un archivo de tablas hash persistentes en la ruta especificada, se usa al cargar el módulo. Cuando no existe el archivo, se crea uno vacío automáticamente.

- Para desactivar las tablas hash persistentes, quite la marca de la opción de habilitación de las tablas hash persistentes (Persistent Hash Enabled), que es como está por omisión.

- El parámetro del módulo para establecer el tamaño de la las tablas hash persistentes (Persistent Hash Size) se emplea en dos escenarios:

1) Cuando se carga el módulo sin que exista un archivo de tablas hash persistentes en la ruta especificada, se crea un archivo del tamaño especificado.

2) Cuando se activa el botón de redimensionamiento de las tablas hash persistentes  (Persistent Hash Resize), el archivo se redimensiona con el tamaño especificado.

- El parámetro del módulo de reinicio de las tablas hash persistentes (Persistent Hash Reset) elimina el contenido del archivo de las tablas hash persistentes.

- Para fundir dos archivos de tablas hash persistentes, indique cuál es y dónde esta el archivo a incorporar (Persistent Hash Merge File) y haga clic en el botón de realizar la fusión de archivos (Persistent Hash Do Merge). Los dos archivos no tienen porque tener el mismo tamaño. La información refundida estará contenida en el archivo de tablas hash persistentes principal, cuyo tamaño no variará.

- El parámetro de profundidad de escritura en las tablas hash persistentes  (Persistent Hash Write Depth) controla la frecuencia con que se escribe en el archivo de tabla hash persistente durante la búsqueda. Cuanto más alto sea el valor, menor será la frecuencia de escritura.

- El parámetro de profundidad de juego en la tabla hash persistente (Persistent Hash Play Depth) ordena que el módulo juegue en una partida un movimiento automáticamente, sin pensarlo más si la posición ya está en la tabla hash persistente con al menos la profundidad especificada. Para obtener el mejor rendimiento, este ajuste debería adecuarse al control de tiempo.

Mantenimiento de las tablas hash persistentes

La forma más sencilla de que los usuarios manejen las tablas hash persistentes es fijarla una vez, la primera vez que usan Rybka, fundirlas periódicamente con otras tablas hash permanentes cuando tienen oportunidad y dejar que todo lo demás funcione sin ninguna interferencia.

No obstante hay un motivo para realizar el mantenimiento de las tablas hash persistentes. Cada pocas semanas, el usuario puede archivar su tabla hash persistente en uso (Puede hacerse con una simple copia del archivo) y luego refundirlo con su archivo anterior. En ciertos casos eso mejorará el rendimiento.

Además hay razones para mantener distintas tablas hash persistentes para posiciones distintas. Al contrario que en el caso de la propagación descendente (es decir, archivo y carga de tablas hash), en el que es fundamentalmente obligado, para las tablas hash persistentes este tipo de mantenimiento dará un beneficio mucho menos, que posiblemente no compense el esfuerzo adicional. Este tema necesita ser investigado más.

Enlaces

Precios

Versión multiprocesador: Deep Rybka 3   99,90 euros
Versión para un procesador: Rybka 3   49,99 euros
Libro de aperturas de Rybka 3   24,99 euros

Rybka 3 incluye una base de datos de un millón de partidas y la compra del programa conlleva un año de acceso al servidor Playchess.com.
Rybka 3 es un módulo UCI, que incluye las versiones para sistemas operativos de 32 y 64-bit. Rybka puede configurarse como módulo por defecto en ChessBase 10.


Temas Rybka 3
Discussion and Feedback Join the public discussion or submit your feedback to the editors


Comentar

Normas sobre los comentarios

 
 

¿Aún no eres usuario? Registro