paint-brush
Cómo hacer que cualquier LLM sea más preciso en solo unas pocas líneas de códigopor@FrederikBussler
7,012 lecturas
7,012 lecturas

Cómo hacer que cualquier LLM sea más preciso en solo unas pocas líneas de código

por Frederik Bussler5m2023/08/14
Read on Terminal Reader

Demasiado Largo; Para Leer

La revolución de la IA ha cambiado con la aparición de modelos de lenguaje extenso (LLM) como ChatGPT, lo que indica una victoria sobre la complejidad de los datos. Estos LLM enfrentan desafíos debido a conjuntos de datos masivos (hasta un petabyte) y la naturaleza intrincada del lenguaje humano. Las herramientas centradas en datos como Cleanlab han revolucionado el manejo de datos de IA, automatizando los procesos de mejora de datos y democratizando los avances. La IA centrada en datos es esencial debido a los errores de anotación (7-50 %) en conjuntos de datos del mundo real, lo que dificulta el entrenamiento. OpenAI y herramientas como Cleanlab priorizan la calidad de los datos, lo que permite mejoras significativas en la precisión del modelo. Una demostración de Python muestra cómo Cleanlab detecta problemas de etiquetas, filtra datos y vuelve a entrenar modelos, lo que resulta en un notable aumento de la precisión del 63 % a más del 66 %. Este enfoque centrado en los datos es prometedor para futuros LLM como GPT-5.
featured image - Cómo hacer que cualquier LLM sea más preciso en solo unas pocas líneas de código
Frederik Bussler HackerNoon profile picture
0-item
1-item
2-item

La revolución de la IA tardó décadas en gestarse. Era un campo lleno de emoción, pero a menudo salpicado de decepciones e " inviernos de IA ". Pero recientemente, algo cambió. Los modelos de lenguaje grande (LLM) como ChatGPT, Claude y Bard catapultaron a la IA de la curiosidad del laboratorio a la corriente principal .


Este cambio no fue solo un triunfo de la IA, sino también una victoria sobre las complejidades de los datos grandes y desordenados. Como dice el dicho, “entra basura, sale basura”. Están surgiendo nuevas herramientas que se centran en mejorar los datos subyacentes y, por lo tanto, mejorar los LLM.


El doble desafío de los LLM

El término "Modelos de lenguaje grande" encierra dos grandes desafíos. En primer lugar, el gran volumen de datos. Estamos hablando de más de un petabyte (un millón de gigabytes) de datos para GPT-4, que abarcan millones de libros, blogs, publicaciones en redes sociales, transcripciones de videos y más. Esta escala colosal ofrece un gran potencial, pero también plantea importantes consideraciones logísticas.


En segundo lugar, la complejidad del lenguaje natural. Los datos lingüísticos dependientes del contexto, ambiguos y diversos son una bestia salvaje que incluso los mejores algoritmos luchan por domar. Es imposible etiquetar con precisión todos estos datos, lo que inevitablemente significa que incluso los LLM de última generación están capacitados en toneladas de datos etiquetados incorrectamente.


Al enfrentar estos desafíos, surgieron nuevas herramientas y metodologías centradas en datos, lo que permitió un verdadero salto en lo que la IA es capaz de hacer. Soluciones como Cleanlab y otras comenzaron a ofrecer formas de recopilar diversos datos, automatizar el control de calidad y procesar el lenguaje en una forma adecuada para los modelos de IA.


Estas herramientas no solo ofrecían mejoras incrementales; reformaron fundamentalmente el enfoque del manejo de datos de IA. Transformaron la tarea de manejar datos lingüísticos a gran escala de un proceso manual y propenso a errores a uno automatizado y preciso, democratizando el campo y permitiendo avances a un ritmo sin precedentes.


Por qué se necesita IA centrada en datos (con una demostración de Python)

En IA, los conjuntos de datos del mundo real contienen errores de anotación que van del 7 al 50 % . Estas imperfecciones dificultan significativamente la formación y la evaluación. La IA centrada en datos enfatiza la mejora de la calidad del propio conjunto de datos.


La estrategia de OpenAI, por ejemplo, ilustra este énfasis: “Priorizamos filtrar todos los datos malos en vez de dejar todos los datos buenos. Esto se debe a que siempre podemos ajustar nuestro modelo con más datos más adelante para enseñarle cosas nuevas, pero es mucho más difícil hacer que el modelo olvide algo que ya ha aprendido”.


Sin embargo, un enfoque de filtrado manual de datos requiere mucho tiempo y es costoso. El paquete Cleanlab es un marco de código abierto popular para practicar la IA centrada en datos en la actualidad. Le permite ejecutar algoritmos de calidad de datos en las salidas de su modelo ML entrenado para detectar problemas comunes de conjuntos de datos como errores de etiqueta, valores atípicos, deriva y más.


Con solo unas pocas líneas de código, puede encontrar e identificar automáticamente problemas en varios tipos de datos, como imágenes, texto, tablas y audio. Al usar el paquete Cleanlab, puede decidir cómo mejorar su conjunto de datos y modelo, volver a entrenar su modelo ML y ver cómo mejora su rendimiento sin ningún cambio en su código existente.


Cleanlab Studio, por otro lado, es más que una simple extensión del paquete Cleanlab; es una plataforma sin código diseñada para encontrar y solucionar problemas en conjuntos de datos del mundo real. No solo se detiene en la detección de problemas, sino que va más allá en el manejo de la curación y corrección de datos, e incluso automatiza casi todas las partes difíciles de convertir datos sin procesar en ML o Analytics confiables.


Usemos el paquete Cleanlab para demostrar el poder de la IA centrada en datos.


1. Preparación de datos y ajuste

Comenzamos con el conjunto de datos de cortesía de Stanford . Asegúrese de tener el tren y los conjuntos de prueba cargados. En esta demostración, ajustaremos el Davinci LLM para la clasificación de 3 clases, primero sin Cleanlab, y luego veremos cómo podemos mejorar la precisión centrándonos en los datos. Podemos ejecutar un comando bash simple para entrenar un modelo.


!openai api fine_tunes.create -t "train_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "baseline"


Cuando haya terminado, podemos consultar un punto final fine_tunes.results para ver la precisión de la prueba.


!openai api fine_tunes.results -i ft-9800F2gcVNzyMdTLKcMqAtJ5 > baseline.csv

`df = pd.read_csv('baseline.csv')

línea base_acc = df.iloc[-1]['clasificación/precisión']`


Obtenemos un resultado de 63% de precisión. A ver si podemos mejorar esto.


2. Obtenga las probabilidades de clase pronosticadas

Ahora, usemos la API de OpenAI para calcular incrustaciones y ajustar un modelo de regresión logística para obtener probabilidades de clase predichas fuera de la muestra.


# Get embeddings from OpenAI. from openai.embeddings_utils import get_embedding

embedding_model = "text-similarity-davinci-001" train["embedding"] = train.prompt.apply(lambda x: get_embedding(x, engine=embedding_model)) embeddings = train["embedding"].values

# Get out-of-sample predicted class probabilities via cross-validation.

from sklearn.linear_model import LogisticRegression

model = LogisticRegression() labels = train["completion"].values pred_probs = cross_val_predict(estimator=model, X=embeddings, y=labels, cv=10, method="predict_proba")


Con solo una línea de código, Cleanlab estima qué ejemplos tienen problemas de etiquetas en nuestro conjunto de datos de entrenamiento.


from cleanlab.filter import find_label_issues

Ahora podemos obtener índices de ejemplos que se estima que tienen problemas de etiquetas:


issue_idx = find_label_issues(labels, pred_probs, return_indices_ranked_by='self_confidence') # sort indices by likelihood of label error


3. Filtrar problemas de etiquetas y volver a entrenar

Ahora, extrajimos automáticamente los índices de ejemplos potencialmente mal etiquetados, para que podamos eliminarlos y entrenar un nuevo clasificador.


# Remove the label errors

train_cl = train.drop(issue_idx).reset_index(drop=True) format_data(train_cl, "train_cl.jsonl")


Ahora entrenemos un clasificador más robusto con mejores datos.


!openai api fine_tunes.create -t "train_cl_prepared.jsonl" -v "test_prepared.jsonl" --compute_classification_metrics --classification_n_classes 3 -m davinci --suffix "dropped"


# Evaluate model on test data

!openai api fine_tunes.results -i ft-InhTRQGu11gIDlVJUt0LYbEx > cleanlab.csv df = pd.read_csv('cleanlab.csv') dropped_acc = df.iloc[-1]['classification/accuracy']


Obtenemos una precisión de más del 66%, mejorando un modelo de ajuste fino de última generación (GPT-3, ya que no se puede ajustar GPT-4), simplemente mejorando automáticamente el conjunto de datos, sin ningún cambio. al modelo


Con Cleanlab Studio, también es posible corregir automáticamente las etiquetas incorrectas en lugar de simplemente eliminarlas por completo, lo que mejora aún más la precisión. Una guía de Cleanlab muestra que esto lleva la precisión hasta un 77%.


comida para llevar

Al usar herramientas centradas en datos como Cleanlab, puede encontrar y corregir problemas de datos y etiquetas de manera eficiente, lo que lleva a mejoras significativas en el rendimiento de LLM como Davinci. Este enfoque no altera la arquitectura del modelo ni los hiperparámetros y se enfoca solo en mejorar la calidad de los datos de entrenamiento.


El enfoque descrito en esta guía podría ser la clave para desbloquear una mayor precisión y solidez en los modelos de IA, incluso con futuros LLM avanzados como GPT-5.