Marco declarativo de aprendizaje profundo creado para lograr escala y eficiencia.
Importante
Nuestra comunidad se ha mudado a Discord. ¡Únase a nosotros allí!
Ludwig es un marco de código bajo para crear modelos de IA personalizados , como LLM y otras redes neuronales profundas.
Características clave:
Ludwig está alojado en Linux Foundation AI & Data.
Instalar desde PyPi. Tenga en cuenta que Ludwig requiere Python 3.8+.
pip install ludwig
O instalar con todas las dependencias opcionales:
pip install ludwig[full]
Consulte la contribución para obtener instrucciones de instalación más detalladas.
¿Quiere echar un vistazo rápido a algunas de las funciones de Ludwig 0.8? Echa un vistazo a este cuaderno de Colab
¿Estás buscando afinar Llama-2 o Mistral? Mira estos cuadernos:
Para obtener un tutorial completo, consulte la guía oficial de introducción o consulte los ejemplos completos.
Ajustemos un modelo de lenguaje grande LLaMA-2-7b previamente entrenado para seguir instrucciones como un chatbot ("ajuste de instrucciones").
Usaremos el conjunto de datos Stanford Alpaca, que tendrá el formato de un archivo similar a una tabla con este aspecto:
instrucción | aporte | producción |
---|---|---|
Dé tres consejos para mantenerse saludable. | 1. Consuma una dieta equilibrada y asegúrese de incluir... | |
Organice los elementos que se indican a continuación en el orden de... | pastel, yo, comiendo | Yo comiendo pastel. |
Escribe un párrafo introductorio sobre un famoso... | michelle obama | Michelle Obama es una mujer inspiradora que r... |
... | ... | ... |
Cree un archivo de configuración YAML llamado model.yaml
con lo siguiente:
model_type : llm
base_model : meta-llama/Llama-2-7b-hf
quantization :
bits : 4
adapter :
type : lora
prompt :
template : |
Below is an instruction that describes a task, paired with an input that may provide further context.
Write a response that appropriately completes the request.
### Instruction:
{instruction}
### Input:
{input}
### Response:
input_features :
- name : prompt
type : text
output_features :
- name : output
type : text
trainer :
type : finetune
learning_rate : 0.0001
batch_size : 1
gradient_accumulation_steps : 16
epochs : 3
learning_rate_scheduler :
decay : cosine
warmup_fraction : 0.01
preprocessing :
sample_ratio : 0.1
backend :
type : local
Y ahora entrenemos el modelo:
export HUGGING_FACE_HUB_TOKEN = " <api_token> "
ludwig train --config model.yaml --dataset " ludwig://alpaca "
Construyamos una red neuronal que prediga si la reseña de un crítico de cine determinado sobre Rotten Tomatoes fue positiva o negativa.
Nuestro conjunto de datos será un archivo CSV similar a este:
título_película | calificación_contenido | géneros | tiempo de ejecución | crítico_superior | contenido_revisión | recomendado |
---|---|---|---|---|---|---|
Líbranos del mal | R | Acción y Aventura, Terror | 117.0 | VERDADERO | El director Scott Derrickson y su coguionista, Paul Harris Boardman, ofrecen un procedimiento rutinario con sustos corrientes. | 0 |
Bárbara | PG-13 | Casa de arte e internacional, Drama | 105.0 | FALSO | De alguna manera, en esta conmovedora narrativa, Barbara logra mantener sus principios, su humanidad y su coraje, y lucha para salvar a una adolescente disidente cuya vida los comunistas están tratando de destruir. | 1 |
Jefes horribles | R | Comedia | 98.0 | FALSO | Estos jefes no pueden justificar ni el asesinato ni los recuerdos cómicos duraderos, comprometiendo fatalmente una farsa que podría haber sido genial pero que termina siendo simplemente mediocre. | 0 |
... | ... | ... | ... | ... | ... | ... |
Descargue una muestra del conjunto de datos desde aquí.
wget https://ludwig.ai/latest/data/rotten_tomatoes.csv
Luego cree un archivo de configuración YAML llamado model.yaml
con lo siguiente:
input_features :
- name : genres
type : set
preprocessing :
tokenizer : comma
- name : content_rating
type : category
- name : top_critic
type : binary
- name : runtime
type : number
- name : review_content
type : text
encoder :
type : embed
output_features :
- name : recommended
type : binary
¡Eso es todo! Ahora entrenemos el modelo:
ludwig train --config model.yaml --dataset rotten_tomatoes.csv
modelado feliz
Intente aplicar Ludwig a sus datos. Comuníquese con Discord si tiene alguna pregunta.
Texto repetitivo mínimo de aprendizaje automático
Ludwig se ocupa de la complejidad de ingeniería del aprendizaje automático desde el primer momento, lo que permite a los científicos investigadores centrarse en la construcción de modelos al más alto nivel de abstracción. El preprocesamiento de datos, la optimización de hiperparámetros, la administración de dispositivos y la capacitación distribuida para los modelos torch.nn.Module
son completamente gratuitos.
Construya fácilmente sus puntos de referencia
Crear una línea base de última generación y compararla con un nuevo modelo es un simple cambio de configuración.
Aplique fácilmente nuevas arquitecturas a múltiples problemas y conjuntos de datos.
Aplique nuevos modelos en el amplio conjunto de tareas y conjuntos de datos que admite Ludwig. Ludwig incluye un conjunto completo de herramientas de evaluación comparativa accesible para cualquier usuario, para ejecutar experimentos con múltiples modelos en múltiples conjuntos de datos con solo una configuración simple.
Preprocesamiento, modelado y métricas de datos altamente configurables
Todos y cada uno de los aspectos de la arquitectura del modelo, el bucle de entrenamiento, la búsqueda de hiperparámetros y la infraestructura de backend se pueden modificar como campos adicionales en la configuración declarativa para personalizar la canalización y satisfacer sus requisitos. Para obtener detalles sobre lo que se puede configurar, consulte los documentos de configuración de Ludwig.
Aprendizaje multimodal y multitarea listo para usar
Mezcle y combine datos tabulares, texto, imágenes e incluso audio en configuraciones de modelos complejas sin escribir código.
Exportación y seguimiento de modelos enriquecidos
Realice un seguimiento automático de todas las pruebas y métricas con herramientas como Tensorboard, Comet ML, Weights & Biases, MLFlow y Aim Stack.
Escale automáticamente la capacitación a clústeres de múltiples GPU y múltiples nodos
Pase de la capacitación en su máquina local a la nube sin cambios de código.
Interfaz de código bajo para modelos de última generación, incluidos los transformadores Huggingface previamente entrenados
Ludwig también se integra de forma nativa con modelos previamente entrenados, como los disponibles en Huggingface Transformers. Los usuarios pueden elegir entre una amplia colección de modelos PyTorch previamente entrenados de última generación para usarlos sin necesidad de escribir ningún código. Por ejemplo, entrenar un modelo de análisis de sentimiento basado en BERT con Ludwig es tan simple como:
ludwig train --dataset sst5 --config_str " {input_features: [{name: sentence, type: text, encoder: bert}], output_features: [{name: label, type: category}]} "
Interfaz de código bajo para AutoML
Ludwig AutoML permite a los usuarios obtener modelos entrenados proporcionando solo un conjunto de datos, la columna de destino y un presupuesto de tiempo.
auto_train_results = ludwig . automl . auto_train ( dataset = my_dataset_df , target = target_column_name , time_limit_s = 7200 )
Fácil producción
Ludwig facilita la entrega de modelos de aprendizaje profundo, incluso en GPU. Inicie una API REST para su modelo Ludwig entrenado.
ludwig serve --model_path=/path/to/model
Ludwig admite la exportación de modelos a paquetes eficientes de Torchscript.
ludwig export_torchscript -–model_path=/path/to/model
Lea nuestras publicaciones sobre Ludwig, el aprendizaje automático declarativo y los puntos de referencia SoTA de Ludwig.
Obtenga más información sobre cómo funciona Ludwig, cómo comenzar y analice más ejemplos.
Si está interesado en contribuir, tiene preguntas, comentarios o ideas para compartir, o si simplemente quiere estar al tanto, considere unirse a nuestra Comunidad Discord y síganos en X.
Ludwig es un proyecto de código abierto gestionado activamente que se basa en contribuciones de personas como usted. ¡Considere unirse al grupo activo de contribuyentes de Ludwig para hacer de Ludwig un marco aún más accesible y rico en funciones para que todos lo usen!