Comunidad e Inteligencia Artificial en Google I/O Connect
En la vibrante ciudad de Ámsterdam, un evento ha reunido a más de 500 desarrolladores de todo el mundo para una experiencia inigualable: I/O Connect. Este evento, que ha capturado la atención de la industria tecnológica, se centra en uno de los temas más emocionantes y vanguardistas de nuestro tiempo: la inteligencia artificial. I/O Connect ha sido el escenario perfecto para que las mentes de la tecnología intercambien conocimientos, establezcan conexiones valiosas y descubran las últimas tendencias que impulsarán el futuro de la innovación.
Hemos tenido la oportunidad de explorar cómo esta tecnología está transformando las empresas y la sociedad en general. Desde algoritmos de aprendizaje automático hasta el procesamiento del lenguaje natural, hemos descubierto las herramientas más novedosas y emocionantes de la Inteligencia Artificial por parte de Google. Además, nos han dado acceso a demostraciones en vivo e interactuamos con las últimas creaciones tecnológicas.
¿Por qué LLMs?
Nos centramos hoy en los LLMs - acrónimo en inglés que hace referencia a Large Language Models - por dos motivos: la gran cantidad de desafíos sobre los que tiene impacto y la importancia de comenzar a dar los primeros pasos hacia el control técnico y el pasar de las Demos a Productos robustos.
LLMs son modelos de aprendizaje profundo - Deep Learning- entrenados en datasets con cantidades ingentes de datos con formato de texto: pueden abarcar gran cantidad de desafíos, tales como la agrupación de contenidos, traducción, generación de texto y código, y hasta complementar los motores de búsqueda y de recomendación.
Trayendo a su vez la realidad, hablamos de PaLM y su exploración con respecto a los parámetros que controlan su API en uno de sus workshops, para ofrecer el primer paso para pasar de una Demo a un mínimo producto viable a través del control de sus parámetros usando la SDK de Python para llamar a la Vertex AI PaLM API. Además, exploramos los principios de Responsible AI que esta API pone a su disposición para evitar posibles alucinaciones y generaciones ofensivas.
El objetivo es entender bien las posibilidades que ofrece para que sea más adaptable a los casos de uso que tratemos.
Además, cada descripción incluye lo siguiente:
Modelos de Vertex AI PaLM API
La API ofrece 6 modelos de lenguaje distintos con dos primeros bloques separados en criterios funcionales: si son orientados a lenguaje u orientados a código. Los orientados a lenguaje son:
- Text-bison: Es el que está asociado a gran cantidad de funciones relacionadas a tareas de procesamiento natural del lenguaje, además soporta más de 8000 input tokens lo que le permite asociar un contexto decente, y los datos de entrenamiento se encuentran actualizados a fecha de Feb de 2023 - las limitaciones de ChatGPT enuncian que su más usada versión se encuentra con respecto a 2021. Este modelo soporta fine-tunning, o reentrenamiento.
- Chat-bison: modelo reentrenado sobre Text-bison que soporta menos contexto inicial, con una generación similar a la de su análogo.
- Textembedding-gecko: Los embeddings son transformaciones de texto a representación numérica que se utilizan como paso previo a entrenamiento en modelos de lenguaje.
Para una primera aproximación a PaLM, cargamos el modelo, pasamos un prompt y generamos una respuesta.
Figura 1. “Hello PaLM2”. Las tres partes esenciales de uso de la API: cargamos un modelo, generamos un prompt y una respuesta. Cabe destacar que el método de carga del modelo tiene la misma semántica que la libreria de Huggin Face de Transformers.
Parámetros de control de la API
Los parámetros de control inicial se declaran en la respuesta como argumento. El modelo text-bison ofrece cuatro parámetros, que han de explorarse dependiendo del caso de uso del que se trata
- Temperature (rango de (0,1), por defecto 0): se usa para un sampleado durante la generación de respuesta y controla el nivel de estocasticidad en la selección de tokens. Si este parámetro está cercano a 0, funciona para las indicaciones que requieren respuestas más determinantes y menos abiertas. En comparación, si está más cercano a 1 pueden llevar a resultados más "creativos" o diversos. Una temperatura de 0 es determinante: siempre se selecciona la respuesta con la probabilidad más alta. Para la mayoría de los casos de uso, se recomienda comenzar con un valor de 0.2.
ResponsibleAI tip: Cabe tener en cuenta que aunque los resultado pueden ser más creativos, también pueden general texto sin sentido o inapropiado.
- Max_output_tokens (rango:1-1024, por defecto 128): es el número máximo de tokens que se pueden generar en la respuesta. Especifica un valor más bajo para respuestas más cortas y un valor más alto para respuestas más largas. Un token puede ser más pequeño que una palabra. Un token tiene aproximadamente cuatro caracteres. 100 tokens corresponden aproximadamente a 60-80 palabras. Es esencial tener en cuenta el tamaño de los tokens, ya que los modelos tienen un límite en el número de tokens de entrada y salida.
- Top_p (rango de 0 a 1, por defecto 0.95): El parametro top_p se utiliza para controlar la diversidad del texto generado y a bajo nivel cambia como el modelo selecciona tokens para el output. Un valor más alto del parámetro top_p produce resultados más "diversos" e "interesantes", ya que se permite que el modelo elija de un conjunto más amplio de posibilidades. En contraste, un valor más bajo del parámetro top_p resulta en salidas más predecibles, ya que el modelo se limita a un conjunto más pequeño de tokens posibles. Especifica un valor más bajo para evitar aleatoriedad.
- Top_k (rango 0 a 40, por defecto 40): top_k cambia la forma en que el modelo selecciona los tokens para la salida. Un top_k de 1 significa que el token seleccionado es el más probable entre todos los tokens en el vocabulario del modelo (también conocido como decodificación codiciosa). En contraste, un top_k de 3 significa que el siguiente token se selecciona entre los 3 tokens más probables (usando temperatura). En cada paso de selección de token, se muestrean los top_k tokens con las probabilidades más altas. Luego, los tokens se filtran aún más según top_p, y el tokenfinal se selecciona mediante muestreo de temperatura.
Figura 2. Respuesta cargada con los parámetros con la vocación de generar la respuesta a la pregunta: ¿Fue Frodo quién destruyó el anillo? La documentación sobre los parámetros puede encontrarse aquí.
Notebook de ejemplo aquí.
Conclusiones : Hasta el momento hemos cargado un modelo y hemos aprendido más acerca de los parámetros que nos ayudan a controlar el modelo. Para saber más sobre estos parámetros puedes consultar la documentación aquí. Nos adentramos ahora en el diseño de las entradas o prompt, con una serie de buenas prácticas recomendadas por el equipo de Google Cloud para el mejor dominio de la API.
Caso de uso: Generación de respuestas con Vertex AI dentro del escenario Pregunta-Respuesta
Como hemos citado anteriormente, existen múltiples casos de uso que el modelo pre-entrenado puede llegar a resolver. Basándonos en los diferentes ejemplos del repositorio, nos enfocamos en los problemas funcionales de pregunta-respuesta.
Estos modelos pueden resolver problemas asociados a atención al cliente, chats en websites, foros, etc.
Sin embargo, además del modelo, tener en cuenta el dar al modelo el promtp óptimo puede influir notablemente en los resultados. Por ello, se presentan una serie de buenas prácticas. Como los dos primeros conceptos clave, encontramos que el prompt debe de ser específico, conciso y rico en contexto, además de estar exento de errores gramaticales y hacer solo una pregunta en cada prompt. Clasificamos entonces el tipo de pregunta dependiendo del dominio:
- Dominio Abierto: Todas las preguntas cuyas respuestas están disponibles en línea. Pueden pertenecer a cualquier categoría, como historia, geografía, países, política, química, etc,. Estas incluyen preguntas de trivial o conocimiento general, como: P: ¿Quién ganó la medalla de oro olímpica en natación? P: ¿Quién es el presidente de [país determinado]? P: ¿Quién escribió [libro específico]? Ten en cuenta el límite de entrenamiento de los modelos generativos, ya que las preguntas que involucran información más reciente que la fecha en que el modelo fue entrenado podrían dar respuestas incorrectas o imaginativas.
- Dominio cerrado: preguntas específicas, que corresponden a una base de conocimientos interna no disponible en Internet público. Si se indica correctamente, es más probable que el modelo responda desde el contexto proporcionado y menos probable que dé respuestas más allá de lo que se encuentra en Internet abierto. Si, por ejemplo, queremos construir un bit de preguntas y respuestas basado en la documentación completa de un producto, puedes pasar la documentación completa al modelo y solicitarle que responda sólo en función de eso.
Tanto en los dominios abiertos como en los dominios cerrados podemos utilizar una o varias preguntas dependiendo de la especificidad del dominio. En el caso de los dominios cerrados, añadimos además un string a modo de contexto.
Figura 3. Dentro del contexto de Dominio abierto, podemos pasar una serie de preguntas para dar contexto al modelo. En este caso, preguntas de geografía e historia.
Existen muchas particularidades que puedes explorar en el repositorio de código abierto que el equipo de Google Cloud pone a su disposición.
Además de aprender, ha sido una experiencia única que nos ha dado la oportunidad de conectar con la comunidad. ¡Enhorabuena al equipo organizador y a todos los asistentes por su amabilidad y energía!