Guías, códigos y configuraciones para la familia de modelos ReplitLM .
Esto se actualiza continuamente para agregar más formas de usar y construir sobre nuestros modelos.
Modelo | Punto de control [CC BY-SA 4.0] | Vocabulario [CC BY-SA 4.0] | Código [Apache 2.0] |
---|---|---|---|
código-de-replicación-v1-3b | Enlace de descarga | Descargar | repositorio |
código-de-replicación-v1_5-3b | (Muy pronto) | (Muy pronto) | Muy pronto |
2 de mayo de 2023: replit-code-v1-3b
¡También tenemos un espacio con GPU para el modelo replit-code-v1-3b
donde puedes usar el modelo directamente!
Demostración alojada con GPU
Todos los modelos Replit lanzados están disponibles en Hugging Face en la página de organización de Replit y se pueden usar con la biblioteca Hugging Face Transformers.
Puedes utilizar los modelos Replit con la biblioteca Hugging Face Transformers. El archivo README de cada modelo lanzado tiene instrucciones sobre cómo utilizar el modelo con Hugging Face Transformers. Asegúrese de configurar clean_up_tokenization_spaces=False
al decodificar con el tokenizador y utilice el posprocesamiento recomendado que se proporciona en el archivo README.
Modelo | LÉAME |
---|---|
código-de-replicación-v1-3b | Documentación |
Recomendamos cualquier capacitación adicional, capacitación previa y ajuste de los modelos Replit con LLM Foundry and Composer de MosaicML.
Nuestros modelos Replit son compatibles con LLM Foundry y se pueden entrenar/ajustar de una manera altamente optimizada con LLM Foundry + Composer utilizando técnicas de capacitación, componentes arquitectónicos, optimizadores y más de última generación. Todos los modelos, LLM Foundry y el marco de formación Composer están basados en Pytorch. Con estos, puede entrenar los modelos Replit en sus propios conjuntos de datos.
Los siguientes pasos le brindan un resumen de lo que se debe hacer para entrenar los modelos con enlaces a las secciones de documentación de LLM Foundry necesarias para cada paso:
Instalar fundición LLM
Para comenzar con LLM Foundry, puede seguir el archivo README de LLM Foundry para:
En un nivel alto, LLM Foundry se usa definiendo un yaml de configuración y luego ejecutando el script de entrenamiento train/train.py
en el repositorio de LLM Foundry con el yaml de configuración definido usando un comando como composer train/train.py <configuration_yaml_path> <extra_args>
. El directorio scripts/train/yamls contiene YAML de ejemplo para realizar ajustes y conservarlos.
Instalar otros requisitos para los modelos Replit
Luego tendrás que instalar algunas otras dependencias especificadas en el archivo requirements.txt
.
Para entrenar con LLM Foundry, debe convertir su conjunto de datos al formato Mosaic StreamingDataset.
Los tipos de fuentes de conjuntos de datos admitidos son conjuntos de datos JSON y conjuntos de datos de caras abrazadas.
La documentación de preparación de datos en LLM Foundry proporciona los pasos para hacerlo.
Al ejecutar convert_dataset_hf.py
o convert_dataset_json.py
en los pasos anteriores, deberá especificar que está utilizando el tokenizador Replit pasando el argumento --tokenizer replit/replit-code-v1-3b
. Un paso clave (debido a la implementación actual de llm-foundry
) es editar scripts/data_prep/convert_dataset_hf.py
pasando el trust_remote_code=True
a la llamada AutoTokenizer.from_pretrained
cuando el tokenizador se carga en el método main()
.
Probando su conjunto de datos convertido
Para probar el conjunto de datos convertido y comprobar que funciona con el cargador de datos, puede seguir la sección Probar el cargador de datos en los documentos de LLM Foundry.
Para entrenar con LLM Foundry, debe definir un yaml de configuración de ejecución. Este yaml define el modelo, el conjunto de datos de entrenamiento, el conjunto de datos de evaluación y la métrica, los parámetros de entrenamiento y más.
Usando los modelos de réplica
Para cualquier configuración YAML que defina para entrenar/sintonizar con LLM Foundry, puede conectar y usar el modelo Replit reemplazando las claves del modelo y del tokenizador en su YAML de la siguiente manera:
...
model:
name: hf_causal_lm
pretrained: true
pretrained_model_name_or_path: replit/replit-code-v1-3b
config_overrides:
attn_config:
attn_impl: triton
attn_uses_sequence_id: false
tokenizer:
name: replit/replit-code-v1-3b
kwargs:
model_max_length: ${max_seq_len}
trust_remote_code: true
...
Esto cargará nuestro modelo con sus pesos de Hugging Face para su configuración.
Después de haber convertido su conjunto de datos y definido un yaml de configuración de ejecución, puede ejecutar el entrenamiento con LLM Foundry.
Siga la sección Cómo iniciar la capacitación en los documentos de LLM Foundry para ejecutar la capacitación. La sección le muestra cómo ejecutar entrenamiento de un solo nodo y de múltiples nodos. Efectivamente, ejecutará el script de entrenamiento scripts/train/train.py
en el repositorio de LLM Foundry con la configuración yaml definida usando un comando como composer train/train.py <configuration_yaml_path> <extra_args>
.
Hay cierta lógica codificada en Composer que debemos eludir para poder guardar los puntos de control. En el script de entrenamiento scripts/train/train.py
, agregue la línea model.tokenizer = None
justo después de que se inicialice el modelo y antes de configurar el cargador de datos del tren, es decir, en el momento de escribir, la línea 147 en main()
. Esto garantiza efectivamente que no guardemos el tokenizador con el estado del punto de control. Necesitamos esta solución porque actualmente Composer no puede manejar el guardado de puntos de control con tokenizadores que incluyen archivos *.py
.
Puede configurar nuestros modelos ReplitLM para su propio caso de uso. Para la mayoría de los casos de uso de ajuste de instrucciones, recomendamos comenzar con los ejemplos de Hugging Face que aparecen a continuación. De lo contrario, también proporcionamos una guía detallada para realizar el ajuste de instrucciones con LLM Foundry.
Puede configurar el modelo replit-code-v1-3b
en conjuntos de datos estilo Alpaca utilizando la biblioteca transformers
.
Para lograrlo, necesitará un conjunto de datos de ajuste de instrucciones que ya esté en formato estilo Alpaca, como por ejemplo:
Teknium, colaborador de código abierto, ha bifurcado el repositorio de Alpaca original al repositorio stanford_alpaca-replit que está preconfigurado para ejecutarse con nuestros modelos. Le recomendamos encarecidamente que utilice esto como punto de partida.
El repositorio contiene instrucciones sobre cómo configurar y ejecutar el entrenador. El formato de conjunto de datos estilo Alpaca requerido se describe aquí. Cualquier conjunto de datos con formato estilo Alpaca funcionará con el entrenador. Por ejemplo, el conjunto de datos Code Alpaca se puede utilizar para ordenar el ajuste de nuestro modelo utilizando el script de entrenamiento en el repositorio de Teknium.
También puede utilizar LLM Foundry para realizar ajustes de instrucciones. Para hacerlo, necesita seguir los siguientes pasos de alto nivel, con los detalles y pasos específicos que debe seguir vinculados según sea necesario:
Instalar fundición LLM
Para comenzar con LLM Foundry, puede seguir el archivo README de LLM Foundry para:
En un nivel alto, LLM Foundry se usa definiendo un yaml de configuración y luego ejecutando el script de entrenamiento train/train.py
en el repositorio de LLM Foundry con el yaml de configuración definido usando un comando como composer train/train.py <configuration_yaml_path> <extra_args>
. El directorio scripts/train/yamls contiene YAML de ejemplo para ajustar y pretener.
Instalar otros requisitos para los modelos Replit
Luego tendrás que instalar algunas otras dependencias especificadas en el archivo requirements.txt
.
Puede ser cualquiera de los siguientes:
Dependiendo del conjunto de datos que esté utilizando, es posible que necesite o no formatear el conjunto de datos en el formato esperado por LLM Foundry.
Conjuntos de datos para los que no se necesita preprocesamiento personalizado
Algunos conjuntos de datos como mosaicml/dolly_hhrlhf ya vienen con una función de preprocesamiento que puedes usar de inmediato. En el momento de la publicación, los siguientes conjuntos de datos de Hugging Face venían con una función de preprocesamiento registrada previamente: HuggingFaceH4/databricks_dolly_15k
, Muennighoff/P3
, Muennighoff/flan
, bigscience/P3
, tatsu-lab/alpaca
.
Conjuntos de datos para los que se necesita un preprocesamiento personalizado
Si no está utilizando ninguno de los conjuntos de datos anteriores, deberá escribir su propia función de preprocesamiento y registrarla.
Para cualquier conjunto de datos, necesita cada ejemplo formateado como un diccionario con las siguientes claves:
formatted_example = { 'prompt' : < prompt_text > , 'response' : < response_text > }
es decir, cada muestra es un diccionario con las dos claves. Este es el formato que el cargador de datos finetuning
espera en sentido descendente.
Guía para formatear su conjunto de datos
La sección Formato de datos en el repositorio original de LLM Foundry describe cómo hacer esto.
En el caso de que necesite crear una función de preprocesamiento personalizada para obtener sus datos en el formato correcto, y los pasos en la documentación de LLM Foundry lo confunden, el TL;DR parafraseado es el siguiente:
preprocess.py
) en algún lugar de su código base, por ejemplo, en el mismo directorio que su script de entrenamiento, siempre que su script de entrenamiento pueda importarlo.preprocess_function()
que toma como entrada una muestra de su conjunto de datos y devuelve un diccionario con las claves prompt
y response
como se describe anteriormente, de acuerdo con su lógica de cómo formatear la muestra en el formato requerido.preprocess.py
) y la función (por ejemplo, preprocess_function()
) que creó. Ahora puede utilizar su conjunto de datos para ajustar el modelo Replit.
Guía
La sección Uso en el repositorio original de LLM Foundry describe cómo usar su conjunto de datos y ajustar el modelo Replit.
Si está utilizando las opciones 1) o 2) en esa sección, modificará train_loader
y eval_loader
si corresponde, en su YAML de entrenamiento según lo que hizo en los dos pasos anteriores. Si está utilizando la opción 3) (es decir, conjunto de datos de transmisión), primero convertirá el conjunto de datos al formato correcto con claves de solicitud y respuesta, y luego lo escribirá en un conjunto de datos MDS local. Después de esto, puedes modificar tu YAML para que apunte a esto.