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 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.
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.
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.
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
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%.
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.