Configuración y Ejecución de Evaluaciones de Modelos de Lenguaje con OpenCompass

El proceso de evaluación de modelos de lenguaje, especialmente aquellos accesibles a través de APIs, requiere una configuración cuidadosa y la ejecución de scripts específicos. A continuación, se detalla el procedimiento utilizando el framework OpenCompass.

  1. Preparación del Entorno de Evaluación

Es fundamental crear un entorno virtual aislado para gestionar las dependencias del proyecto. Se recomienda usar conda para este fin.

# Crear un entorno conda llamado 'opencompass' con Python 3.10
conda create -n opencompass python=3.10
# Activar el entorno recién creado
conda activate opencompass

# Navegar al directorio de trabajo y clonar el repositorio de OpenCompass
cd /root
git clone -b 0.3.3 https://github.com/opencompass/opencompass
cd opencompass
# Instalar OpenCompass en modo editable y sus dependencias
pip install -e .
pip install -r requirements.txt
# Instalar una versión específica de huggingface_hub, crucial para la compatibilidad
pip install huggingface_hub==0.25.2

Las advertencias (Warning) que puedan aparecer durante la instalación generalmente no afectan el resultado final de la evaluación y pueden ser ignoradas.

  1. Evaluación de Modelos API

Para evaluar modelos que se acceden a través de una API, se necesitan credenciales y la dirección del servicio.

2.1. Obtención de Credenciales de API Acceda a la página oficial de Puyu (InternLM) para obtener su clave de API (api key) y la dirección del servciio (api service address). Alternativamente, se pueden conseguir a través de plataformas de terceros como "Silicon Flow" (硅基流动). Una vez obtenidas, configure la clave de API como una variable de entorno en su terminal:

export INTERNLM_API_KEY='TU_CLAVE_API_AQUI' # Reemplace con su API Key obtenida

2.2. Configuración del Modelo Cree un archivo de configuración para definir el modelo a evaluar. Navegue hasta el directorio de OpenCompass y cree un nuevo archivo Python para la configuración del modelo API de Puyu:

cd /root/opencompass/
touch opencompass/configs/models/openai/puyu_api.py

Edite el archivo puyu_api.py y añada el siguiente contenido:

import os
from opencompass.models import OpenAISDK

# Dirección del servicio API obtenida previamente
puyu_service_url = 'https://internlm-chat.intern-ai.org.cn/puyu/api/v1/'
# Obtener la clave de API desde las variables de entorno
api_key_value = os.getenv('INTERNLM_API_KEY')

# Definición de la lista de modelos a configurar
models = [
    dict(
        type=OpenAISDK, # Tipo de modelo: SDK de OpenAI
        path='internlm2.5-latest', # Nombre del modelo tal como se solicita al servicio
        key=api_key_value, # Clave de API para autenticación
        openai_api_base=puyu_service_url, # URL base del endpoint de la API
        rpm_verbose=True, # Habilitar la verbosidad para el control de tasa de solicitudes
        query_per_second=0.16, # Límite de solicitudes por segundo
        max_out_len=1024, # Longitud máxima de la secuencia de salida
        max_seq_len=4096, # Longitud máxima de la secuencia de entrada
        temperature=0.01, # Temperatura para el muestreo de la generación
        batch_size=1, # Tamaño del lote para el procesamiento
        retry=3, # Número de reintentos en caso de fallo
    )
]

2.3. Configuración del Conjunto de Datos De manera similar, prepare un archivo de configuración para el conjunto de datos que se utilizará en la evaluación. Para este ejemplo, se utilizará una submuestra del benchmark CMMLU.

cd /root/opencompass/
touch opencompass/configs/datasets/demo/demo_cmmlu_chat_gen.py

Edite el archivo demo_cmmlu_chat_gen.py con el siguiente código:

from mmengine import read_base

# Cargar configuraciones base de datos CMMLU
with read_base():
    from ..cmmlu.cmmlu_gen_c13365 import cmmlu_datasets

# Modificar cada dataset para usar solo una muestra y prefi_o 'demo_'
for dataset_config in cmmlu_datasets:
    dataset_config['abbr'] = 'demo_' + dataset_config['abbr']
    # Configurar el rango de prueba para usar solo el primer elemento [0:1]
    dataset_config['reader_cfg']['test_range'] = '[0:1]'

Este paso es crucial para acelerar la evaluación al procesar solo un ejemplo por subconjunto del benchmark CMMLU. Si el archivo demo_cmmlu_chat_gen.py ya existe, modifíquelo según lo indicado.

2.4. Inicio de la Evaluación Una vez completadas todas las configuraciones, puede iniciar el proceso de evaluación ejecutando el script principal de OpenCompass:

python run.py --models puyu_api.py --datasets demo_cmmlu_chat_gen.py --debug

El flag --debug puede ser útil para depurar problemas durante la ejecución.

  1. Solución de Errores Comunes Si durante la ejecución se encuentra con un error del tipo ModuleNotFoundError: No module named 'rouge', esto indica que la librería rouge no está instalada. Puede resolverlo ejecutando el siguiente comando:
conda install -c conda-forge rouge

Tras resolver cualquier dependencia faltante y con las configuraciones listas, la evaluación comenzará. Se estima que el proceso puede demorar aproximadamente 10 minutos, dependiendo de la complejidad y el número de evaluaciones.

Etiquetas: opencompass evaluación de modelos API internlm cmmlu

Publicado el 8-10 00:22