GPT "Transformador generativo previamente capacitado" es la primera versión de la serie de modelos GPT, el procesamiento de lenguaje natural revolucionado con sus capacidades de modelado de lenguaje autorregresivo basadas en la arquitectura del transformador.
Este proyecto es una implementación del modelo GPT (transformador generativo previamente entrenado) desde cero usando TensorFlow. Incluye todos los componentes del modelo, como los incrustaciones posicionales, el mecanismo de atención, las capas de alimentación y más.
Nota importante: El objetivo de este proyecto es proporcionar una comprensión profunda de la arquitectura GPT y sus funcionamientos internos. Entonces, es principalmente para fines educativos. Puede comprender completamente la estructura y el mecanismo de trabajo de este modelo aquí, y usar los componentes que he implementado en sus proyectos. En general, si desea utilizar el proyecto para capacitar a su modelo de idioma con Big Data, es posible que deba modificar el archivo del conjunto de datos para poder procesar Big Data de manera más eficiente. Diseñé el archivo del conjunto de datos principalmente para manejar datos simples, no grandes, porque ahora no estoy a este respecto.
Hay varias versiones del GPT. Esta implementación se centra principalmente en la implementación de "Mejora de la comprensión del lenguaje mediante la pretruación generativa".
config.py : archivo de configuración para hiperparámetros del modelo.decoder.py : GPT Decoder.positional_embeddings.py : generación de incrustación posicional.embeddings.py : generación de insertos de token.attention.py : mecanismo de autoeficiencia.feed_forward.py : red neuronal de feed-forward.lr_schedule.py : programación de tasas de aprendizaje.utils.py : funciones de utilidad para capacitación e inferencia.loss_functions.py : funciones de pérdida personalizada.metrics.py : Métricas de evaluación personalizada.streamer.py : Streamer de datos para capacitación eficiente.gpt_model.py : implementación principal del modelo GPT.bpe_tokenizer.py : Tokenizer para Tokenización BPE (Byte Par Coding).tokenizer.py : Tokenizer GPT previamente capacitado.prepare_dataset.py : un archivo a través del cual realizamos algunas operaciones en el conjunto de datos (creando una carpeta especial para datos de validación).inferance.py : un archivo necesario para generar oraciones del modelo basado en el mensaje de entrada.tmp/ : Directorio para almacenar puntos de control modelo.demo/ : documentación del proyecto.tokenizer/ : Directorio para guardar el tokenizador de entrenamiento.dummy_data/ : Directorio en el que colocamos algunos datos para probar el transmisor. La documentación detallada del proyecto se puede encontrar en la demo/ directorio. Incluye explicaciones de la arquitectura GPT, los procedimientos de capacitación y cómo usar el modelo para varias tareas de procesamiento del lenguaje natural.
Clon el repositorio:
git clone https://github.com/AliHaiderAhmad001/GPT-from-Scratch-with-Tensorflow.git
cd GPT-from-Scratch-with-TensorflowCrear un entorno virtual (opcional pero recomendado):
python -m venv venv
source venv/bin/activate # On Windows: venvScriptsactivateInstalar dependencias del proyecto:
pip install -r requirements.txtDescargue y prepare el conjunto de datos: puede ir y revisar la demostración. Puede trabajar en el mismo conjunto de datos, cambiarlo o ajustar sus preferencias. Sin embargo, puede descargar el conjunto de datos directamente desde aquí. Puede tomar una parte para la validación a través del siguiente código:
python prepare_dataset.py aclImdb/test aclImdb/valid --num_files_to_move 2500El cargador de datos que uso requiere que el conjunto de validación esté en una carpeta separada.
python bpe_tokenizer.py aclImdb --batch_size 1000 --vocab_size 50357 --save --save_fp tokenizer/adapted-tokenizerpython train.pypython train.py --resumepython inferance.py " input_text_prompt " --sampler " greedy " # For greedy samplingpython inferance.py " input_text_prompt " --sampler " beam " --beam_width 5 # For beam search sampling with a beam width of 5 Este proyecto tiene licencia bajo la licencia MIT. Consulte el archivo de licencia para obtener más detalles.