
Introducimos
Latxa, una familia de modelos de idiomas grandes para vascos que van de 7 a 70 mil millones de parámetros. LATXA se basa en Llama 2, que continuamos previamente en un nuevo corpus vasco que comprende 4,3 millones de documentos y tokens 4.2B. Al abordar la escasez de puntos de referencia de alta calidad para el vasco, introducimos 4 conjuntos de datos de evaluación de opción múltiple: EUSPRECIENCIA, que comprende 5,169 preguntas de los exámenes oficiales de dominio del idioma; EUS -Reading, que comprende 352 preguntas de comprensión de lectura; Eustrivia, que comprende 1.715 preguntas de trivia de 5 áreas de conocimiento; y EUSEXAMS, que comprende 16,046 preguntas de los exámenes públicos. En nuestra extensa evaluación, LATXA supera a todos los modelos abiertos anteriores que comparamos con un gran margen. Además, es competitivo con GPT-4 Turbo en el dominio y la comprensión del lenguaje, a pesar de retrasarse en la comprensión de lectura y las tareas intensivas en conocimiento. Tanto la familia de modelos LATXA, así como nuestros nuevos conjuntos de datos de evaluación previa al prepertimiento, están disponibles públicamente bajo licencias abiertas. Nuestra suite permite una investigación reproducible sobre métodos para construir LLM para idiomas de baja recursos.
Use el código a continuación para comenzar con el modelo.
from transformers import pipeline
pipe = pipeline ( "text-generation" , model = "HiTZ/latxa-7b-v1.1" )
text = "Euskara adimen artifizialera iritsi da!"
pipe ( text , max_new_tokens = 50 , num_beams = 5 )
>> [
{
'generated_text' : 'Euskara adimen artifizialera iritsi da! n Euskararen eta adimen artifizialaren arteko harremana aspaldikoa da,'
' baina azken urteotan aurrerapauso handiak eman dira arlo horretan'
}
]Código para modelos de entrenamiento en el clúster de Leonardo Cineca HPC utilizando GPT-NOOX. Si entrena en otro clúster, deberá actualizar algunas configuraciones. Consulte la documentación de GPT-NEOX si tiene alguna duda.
El proceso de capacitación se divide en varios pasos: cargar los módulos requeridos, crear un entorno virtual, instalar GPT-NOOX, descargar los modelos de LLAMA, convertir los puntos de control, descargar los datos, preprocesar los datos, definir las configuraciones de capacitación, configurar WandB, ejecutar la capacitación y convertir los puntos de control NEOX en HF.
Instalar módulos necesarios para GPT-NEOX. Puede agregar esto a .bashrc para que los módulos se carguen automáticamente:
module load profile/deeplrn
module load python/3.10.8--gcc--11.3.0
module load cuda/11.8
module load openmpi/4.1.4--gcc--11.3.0-cuda-11.8
module load zlib/1.2.13--gcc--11.3.0
module load git-lfsCrear un entorno virtual:
python -m venv $WORK /environments/neox-env Activar el entorno virtual. Puede agregar esto a .bashrc para que el entorno virtual se active automáticamente:
source $WORK /environments/neox-env/bin/activateClonar el repositorio e instalar los requisitos:
git clone https://github.com/EleutherAI/gpt-neox
cd gpt-neoxInstale los requisitos:
pip install -r requirements/requirements.txt
pip install -r requirements/requirements-wandb.txt
pip install -r requirements/requirements-flashattention.txt
python ./megatron/fused_kernels/setup.py install # optional, if using fused kernels Como el clúster Leonardo no tiene conexión a Internet, se debe usar el modo fuera de línea. Cambiar directorio de configuración de Wandb predeterminado:
export WANDB_CONFIG_DIR= $HOME /.wandbIniciar sesión en Wandb:
wandb loginCambie WandB al modo fuera de línea:
wandb offline Los registros se guardarán en el directorio $WORK/gpt-neox/wandb .
Para sincronizar registros a Wandb, ejecute:
wandb sync $WORK /gpt-neox/wandbDescargue los modelos Raw Llama de los siguientes enlaces:
Llama-2-7b: https://huggingface.co/meta-llama/llama-2-7b
Llama-2-13b: https://huggingface.co/meta-llama/llama-2-13b
Llama-2-70b: https://huggingface.co/meta-llama/llama-2-70b
Convierta los modelos RAW LLAMA en formato NEOX utilizando scripts en directorio convert .
cd convert
bash convert_raw_llama_weights_to_neox_7b.sh
bash convert_raw_llama_weights_to_neox_13b.sh
bash convert_raw_llama_weights_to_neox_70b.shDescargue los datos de previación de los siguientes enlaces:
EusCrawl: https://huggingface.co/datasets/hitz/euscrawl
Pila: https://huggingface.co/datasets/eleutherai/pile
Latxa v1.1: https://huggingface.co/datasets/hitz/latxa-corpus-v1.1
Datos de preprocesos utilizando scripts disponibles en el directorio preprocess :
Para preprocesar el conjunto de datos de pila, ejecute bash preprocess_data_pile.sh .
Para preprocesar el conjunto de datos LATXA V1, ejecute bash preprocess_data_latxa-v1.sh .
Para preprocesar el conjunto de datos LATXA V1.1, ejecute bash preprocess_data_latxa-v1.1.sh .
Defina las configuraciones de entrenamiento en el directorio configs . Puede usar las configuraciones existentes como plantilla. Hay dos configuraciones base que son comunes a todos los modelos e incluyen detalles como el punto de control y el registro. El primero se usa para modelos 7B y 13B, y el otro para modelos 70B. Las configuraciones adicionales se dividen en 4 carpetas, dependiendo del tipo de parámetros: datos, velocidad profunda, hiperparámetros y modelos.
data : contiene los archivos de configuración de datos para LATXA V1 y V1.1.deepspeed : contiene el archivo de configuración de DeepSpeed para cero 1.hyperparameters : contiene los archivos de configuración de HyperParameters para LATXA V1 y V1.1 de tres tamaños.models : contiene los archivos de configuración del modelo para tres tamaños. Ejecute el entrenamiento utilizando scripts disponibles en el directorio train . Hay scripts para modelos LATXA V1 y V1.1 de tres tamaños. Por ejemplo, para entrenar LATXA 7B V1.1, ejecute:
cd train/latxa-7b
bash llama-2-7b-v1.1.sh Los puntos de control NEOX se pueden convertir a HF utilizando el script convert_neox_to_hf.py . El script toma una ruta de entrada, la ruta de salida, la configuración del modelo, la precisión y la arquitectura como argumentos. Puede encontrar scripts de ejemplo en el directorio convert . Por ejemplo, para convertir el modelo LATXA 7B V1.1, ejecute:
cd convert
bash convert_neox_to_hf_7b_v1.1.sh Los scripts de evaluación para modelos abiertos se encuentran en el directorio scripts . El directorio openai contiene scripts para evaluar los modelos Operai. Los resultados de la evaluación están en el directorio results .
Deberá instalar el arnés de evaluación LM. Clonar el repositorio e instalar los requisitos:
git clone https://github.com/EleutherAI/lm-evaluation-harness
cd lm-evaluation-harness
pip install -e . Para ejecutar la evaluación en los modelos abiertos, use los scripts en el directorio scripts . Cada script evalúa un modelo en todas las tareas. Por ejemplo, para ejecutar la evaluación en LATXA V1.1 7B, Ejecutar:
sbatch lm_eval_latxa-7b-v1.1.slurm Los resultados de la evaluación están en el directorio results . Cada modelo tiene un directorio con los resultados de la evaluación en cada tarea. Los resultados tienen la forma de un archivo JSON con las puntuaciones promedio del modelo en cada tarea.
Para ejecutar la evaluación en los modelos OpenAI, use los scripts en el directorio de openai . Hay un script de Python para evaluar cada conjunto de datos y un script bash para cada modelo y conjunto de datos. Por ejemplo, para ejecutar la evaluación en GPT-3.5 Turbo en EustriAvia, ejecute:
bash gpt-3.5-turbo-0125_eus_trivia.sh Los resultados de la evaluación están en el directorio results . Cada modelo tiene un directorio con los resultados de la evaluación en cada tarea. En este caso, todas las salidas de los modelos se guardan para cada tarea. Los puntajes se pueden calcular utilizando el campo correct . Para eustrivia y eusexams, hay scripts adicionales para obtener resultados detallados por categoría. Por ejemplo, para obtener resultados detallados para GPT-3.5 Turbo en Eustrivia, ejecute:
python calculate_accuracy_eus_trivia.pySeguimos actualizando y mejorando nuestro modelo base, esta sección cubre los principales lanzamientos y cambios que realizamos. Recomendamos a los usuarios que siempre usen la última versión disponible.
Este trabajo ha sido parcialmente apoyado por el Gobierno Vasco (Proyecto Iker-Gaitu). También ha sido parcialmente respaldado por el Ministerio para la Transformación digital y de la Función Pública, financiado por la UE - Next Generationeu dentro del marco del proyecto con referencia 2022/TL22/002153335. Los modelos fueron entrenados en la supercomputadora de Leonardo en Cineca bajo la empresa conjunta EuroHPC, Proyecto EHPC-EXT-2023E01-013.
Para citar nuestro trabajo, use:
@misc { etxaniz2024latxa ,
title = { Latxa: An Open Language Model and Evaluation Suite for Basque } ,
author = { Julen Etxaniz and Oscar Sainz and Naiara Perez and Itziar Aldabe and German Rigau and Eneko Agirre and Aitor Ormazabal and Mikel Artetxe and Aitor Soroa } ,
year = { 2024 } ,
eprint = { 2403.20266 } ,
archivePrefix = { arXiv } ,
primaryClass = { cs.CL }
}