IA y Harbour Conceptos básicos

IA y Harbour Conceptos básicos

Postby Joaquim Ferrer » Sat Apr 13, 2024 10:57 am

Saludos al foro
Agradecer especialmente a Antonio Linares por la charla del pasado viernes 12-4-2024 a la que no pude asistir
Afortunadamente tenemos a Cristobal Navarro para grabarlo todo y subirlo al canal
https://www.youtube.com/watch?v=3O_8pxw1wHc

En la charla se expuso muchísima información y ganas de debate, por lo que una puerta abre varias ventanas que dan a otras puertas y ventanas ...

Según entendí se utilizó para los ejemplos el modelo de IA generativa LLama y el formato gguf (GPT-Generated Unified Format), usando Python en su desarrollo

Comprendo que desde la optica harbour es la unica posibilidad de momento para acceder a la IA

Ya desde los tiempos de tensorflow (que Antonio nos dio tambien charla en Novelda) pensé que si no se podia utilizar harbour, se podría utilizar javascript (o python)
Javascript permite 'correr' casi cualquier cosa en un webview, llamado desde harbour, FWH, ... por lo que puede ser interesante integrarlo en nuestros programas

También se expuso en la charla el uso de la libreria transformers como parte esencial del modelo de entrenamiento
Existe un proyecto github de dicha libreria para javascript
https://github.com/xenova/transformers.js
Permite procesamiento natural del lenguaje, vision por ordenador, audio, clasificar imágenes ...
Esta gente tienen un generador de musica, directamente en el navegador
https://huggingface.co/spaces/Xenova/musicgen-web

He realizado algunos ejercicios musicales y al revisar la caché de mi navegador, observo que me ha bajado un archivo binario de 428,422,300 bytes
/Xenova/musicgen-small/resolve/main/onnx/decoder_model_merged_quantized.onnx
Y otros tantos ficheros de más de 100 mb tambien en formato ONNX

Saltan mis dudas... Qué diferencia hay entre el formato gguf y onnx y para qué se usa ?
Le pregunto a ChatGPT
Code: Select all  Expand view

GGUF (Generative Graph Unit File) y ONNX (Open Neural Network Exchange) son dos formatos de archivo utilizados en el campo del aprendizaje automático, pero tienen diferencias significativas:

1. **Propósito**:
   - **GGUF**: Está diseñado específicamente para representar modelos generativos, como las redes generativas adversarias (GAN) y otras arquitecturas de modelos generativos. Se enfoca en la eficiencia y la representación precisa de estos tipos de modelos.
   - **ONNX**: Tiene un propósito más general y se utiliza para representar una amplia variedad de modelos de aprendizaje automático, incluidos modelos generativos, pero también modelos convolucionales, recurrentes y otros.

2. **Uso**:
   - **GGUF**: Principalmente se utiliza en el desarrollo y la implementación de modelos generativos. Es útil cuando se trabaja específicamente con GANs u otros modelos generativos.
   - **ONNX**: Se utiliza para la interoperabilidad entre diferentes marcos de trabajo de aprendizaje automático. Permite que los modelos entrenados en un marco de trabajo se exporten a ONNX y luego se importen a otro marco de trabajo sin necesidad de volver a entrenarlos.

3. **Compatibilidad y Ecosistema**:
   - **GGUF**: Puede tener menos soporte y herramientas disponibles en comparación con ONNX, ya que está más especializado en modelos generativos.
   - **ONNX**: Tiene un amplio ecosistema de herramientas y soporte en múltiples lenguajes de programación. Es ampliamente adoptado en la industria y la investigación.

En resumen, GGUF se enfoca específicamente en modelos generativos y ofrece una representación optimizada para este tipo de modelos, mientras que ONNX es más general y se utiliza para la interoperabilidad entre diferentes marcos de trabajo de aprendizaje automático. La elección entre los dos depende de las necesidades específicas del proyecto y del tipo de modelo que se esté utilizando.
 


Como no sé si me dice la verdad y normalmente se necesita supervisión para este tipo de respuesta, qué opinais ?

Tengo un poco de confusión entre los modelos generativos y los modelos de aprendizaje profundo / redes neuronales

Me parece interesante lo que dice del formato ONNX ...
Permite que los modelos entrenados en un marco de trabajo se exporten a ONNX y luego se importen a otro marco de trabajo sin necesidad de volver a entrenarlos

El debate está abierto !
Fivewinner desde 1.9, programador PHP y Javascript, PWA & HTML5 evangelista
User avatar
Joaquim Ferrer
 
Posts: 105
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: IA y Harbour Conceptos básicos

Postby Antonio Linares » Sat Apr 13, 2024 4:34 pm

Estimado Joaquim,

Por lo que tengo entendido el formato GGUF es mucho mas reciente que el modelo ONNX.

El equipo de desarrollo de llama.cpp comenzó a usar GGUF en el 2022. De todas formas, son formatos que han ido apareciendo como evolución de formatos anteriores.

Microsoft tiene sus propios APIs para el uso de ONNX pero nosotros en FWH64 hemos optado por el uso de llama.cpp y el formato GGUF.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IA y Harbour Conceptos básicos

Postby Joaquim Ferrer » Mon Apr 29, 2024 10:36 am

Nuevamente nuestro master Antonio Linares nos deleitó con una nueva sesión, que como siempre, gracias al cuidado de Cristobal Navarro es posible visualizar en https://www.youtube.com/watch?v=dyL_Va55_W0

Llevo un par de dias viendo la sesión en bucle ... aún sigo conmocionado por Llama3 y https://huggingface.co

Nunca hasta ahora había tenido una conversación tan seria con un sabio (palabras de A.L.) tan grande. He efectuado 2 preguntas :

Pregunta 1: Tienes en cuenta los prompt de los usuarios para tu entrenamiento ?
Respuesta :
Code: Select all  Expand view
Sí, los prompt de los usuarios son una parte importante de mi entrenamiento y capacidad para generar respuestas precisas y relevantes. Durante mi entrenamiento, los investigadores utilizaron una técnica llamada "aprendizaje supervisado", donde se me presentaron ejemplos de entradas (prompt) y las respuestas correspondientes. Los prompt de los usuarios se utilizan para proporcionar contexto y orientación a mi modelo de lenguaje. Al exponerme a una amplia variedad de prompt y sus respuestas correspondientes,


Pregunta 2: Entiendo que tus entrenadores previamente filtran los prompt de los usuarios ?
Respuesta :
Code: Select all  Expand view
Sí, es correcto. Durante mi entrenamiento, los investigadores y desarrolladores realizan un proceso de filtrado y curación de los prompt de los usuarios antes de utilizarlos para el entrenamiento. Este paso es crucial para garantizar la calidad y la pertinencia de los datos que se utilizan para entrenar el modelo de lenguaje. El proceso de filtrado implica eliminar cualquier prompt que pueda ser inapropiado, ofensivo o que no cumpla con las directrices establecidas para el entrenamiento del modelo. Los investigadores revisan manualmente los prompt o utilizan algoritmos avanzados para detectar y eliminar contenido inadecuado.
Además, los prompt también pueden ser filtrados en función de criterios específicos, como la longitud, la claridad o la relevancia para el dominio o tarea en cuestión. Este proceso de curación garantiza que solo se incluyan prompt de alta calidad y pertinentes en el conjunto de datos de entrenamiento.
El objetivo del filtrado y la curación es garantizar que el modelo se entrene con datos limpios y confiables, lo que mejora su capacidad para generar respuestas precisas y apropiadas. Es una parte importante del proceso de entrenamiento y ayuda a crear un modelo de lenguaje robusto y confiable.
 


Estoy 'razonando' con una puñetera máquina ... o eso parece

En la sesión del viernes pasado se comentó que se estaba intentando conectar huggingface con harbour mediante la web con WebView2, ya que no se dispone de ninguna API

Revisando el codigo fuente de la ventana de chat, veo que se hace una petición POST, a una URL que contiene un hash de conversación, al estilo https://huggingface.co/chat/conversation/662f63b... y pasando varios parámetros recogidos en la sesion localStorage del navegador

Dicha petición devuelve un JSON con la respuesta, con la siguiente estructura
Code: Select all  Expand view

{"type":"status","status":"started"}
{"type":"stream","token":"Sí, l"}
{"type":"stream","token":"os pr"}
{"type":"stream","token":"ompt "}
{"type":"stream","token":"de lo"}
{"type":"stream","token":"s usu"}
{"type":"stream","token":"arios"}
{"type":"stream","token":" son "}
{"type":"stream","token":"una p"}
{"type":"stream","token":"arte "}
{"type":"stream","token":"impor"}
...
{"type":"stream","token":"entes temas, estilos de lenguaje y tipos de preguntas, lo que me permite adaptarme a una variedad de solicitudes de los usuarios."}
{"type":"finalAnswer","text":"Sí, los prompt de los usuarios son una parte importante de mi entrenamiento y capacidad para generar respuestas precisas y relevantes. Durante mi entrenamiento, los investigadores utilizaron una técnica llamada \"aprendizaje supervisado\", donde se me presentaron ejemplos de entradas (prompt) y las respuestas correspondientes.\n\nLos prompt de los usuarios se utilizan para proporcionar contexto y orientación a mi modelo de lenguaje. Al exponerme a una amplia variedad de prompt y sus respuestas correspondientes, aprendo a reconocer patrones, comprender la intención detrás de las preguntas o solicitudes y generar respuestas apropiadas y coherentes.\n\nLos investigadores y desarrolladores recopilan y curan cuidadosamente grandes conjuntos de datos que contienen prompt de usuarios y sus respuestas correspondientes. Estos prompt pueden variar desde preguntas simples hasta oraciones complejas, y las respuestas pueden ser de diferentes longitudes y estilos.\n\nAl entrenarme con estos prompt y sus respuestas, aprendo a mapear la relación entre las entradas y las salidas deseadas. Esto me permite generar respuestas que se ajustan al contexto y las expectativas del usuario.\n\nEs importante destacar que la calidad y la diversidad de los prompt de los usuarios también son fundamentales para mi efectividad. Los investigadores se esfuerzan por incluir una amplia gama de prompt que abarquen diferentes temas, estilos de lenguaje y tipos de preguntas, lo que me permite adaptarme a una variedad de solicitudes de los usuarios."}
 


Creo que se realiza un bucle de peticiones POST y se recibe el inicio, con status = started y el final con finalAnswer=text, por eso en la web se escribe token a token, como una máquina de escribir

Para harbour se podria ir directamente a la respuesta final

Voy a intentar construir una página web que simule estas llamadas, a ver que sale
Fivewinner desde 1.9, programador PHP y Javascript, PWA & HTML5 evangelista
User avatar
Joaquim Ferrer
 
Posts: 105
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: IA y Harbour Conceptos básicos

Postby Antonio Linares » Mon Apr 29, 2024 10:46 am

Estimado Joaquim,

> Voy a intentar construir una página web que simule estas llamadas, a ver que sale

Lo que comentas es super interesante :-D

Si conseguimos hacer las consultas a Llama3 en HuggingChat de una forma simple desde Harbour sería un avance enorme!

Te ruego compartas aqui tus avances, y si necesitas ayuda en algo, solo tienes que decirlo.

Puedes explicarnos aqui como has hecho para identificar dicha conversación ? Sería estupendo poder reproducirla :-)

Respecto a las respuestas de la IA ten en cuenta que la IA "navega" por un espacio multidimensional de vectores en donde puede decir cosas que no son ciertas pero para ella son posibles y tienen una cierta "conexión". Hay que comprobar lo que dice pues muchas veces se lo inventa :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42099
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: IA y Harbour Conceptos básicos

Postby Joaquim Ferrer » Mon Apr 29, 2024 10:56 am

Antonio Linares wrote:Puedes explicarnos aqui como has hecho para identificar dicha conversación ? Sería estupendo poder reproducirla :-)


Simplemente con la consola de depuración de chrome
Image
Fivewinner desde 1.9, programador PHP y Javascript, PWA & HTML5 evangelista
User avatar
Joaquim Ferrer
 
Posts: 105
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: IA y Harbour Conceptos básicos

Postby Carles » Mon Apr 29, 2024 11:04 am

Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1137
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: IA y Harbour Conceptos básicos

Postby Joaquim Ferrer » Mon Apr 29, 2024 11:47 am

Carles wrote:
Por si te sirve --> https://huggingface.co/docs/inference-e ... t_endpoint

C.



Gracias Carles, por ahi van los tiros ... pero parece que es de pago

To access the Inference Endpoints web application, you or your organization need to add a valid payment method to your Hugging Face account.
Fivewinner desde 1.9, programador PHP y Javascript, PWA & HTML5 evangelista
User avatar
Joaquim Ferrer
 
Posts: 105
Joined: Sat Jan 14, 2012 3:46 pm
Location: Barcelona

Re: IA y Harbour Conceptos básicos

Postby Carles » Mon Apr 29, 2024 11:53 am

Sip,

Ahora lo he visto...

Inference Endpoints pricing is based on your hourly compute, and billed monthly. This can be as low as $0.032 per CPU core/hr and $0.5 per GPU/hr depending on your needs.



Baratito... :lol:


C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1137
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona


Return to Artificial Intelligence

Who is online

Users browsing this forum: No registered users and 1 guest