Comunidad de Machine Learning / Deep learning

ercabesa

estáis viendo la conferencia de openai?

desu

Me recomendáis un modelo simple y ligero para taggear imágenes?

Le paso una imagen y me devuelve una lista de tags: ["furniture", "sofa", "chair", "brown"]

Con texto tambien me vale.

Que tal serian?

https://huggingface.co/OpenGVLab/InternVL-Chat-V1-5-Int8

https://huggingface.co/Supabase/gte-small

2 respuestas
Slowbro

#182 No te vale un yolo?

https://huggingface.co/Ultralytics/YOLOv8

1 respuesta
ercabesa

#182 yolo es el modelo ad hoc para esto, al menos hasta hace un año, que últimamente no estoy tsn puesto

1 respuesta
desu

#183 #184 gracias

y para documentos? bart por ejemplo? https://huggingface.co/facebook/bart-large-cnn

1 respuesta
ercabesa

#185 buscas hacer lo mismo? categorizarlos?

1 respuesta
desu

#186 Mi objetivo final es experimentar con pgvector (comparar varias vector db) y embeddings. Búsqueda semántica, similaridad de imágenes, data management.

Entonces me interesa montar una pipeline simple, pero funcional y realista, que a partir de documentos e imágenes, obtener unas decenas de GiB de datos para correr tests.

Para imagenes, lo que me interesa es tener un modelo X que obtenga metadatos, hacer embedding de los metadatos y despues buscar.

Para documentos, seria lo mismo, pero hacer un summary primero, creo que reducirá el tamaño de la db considerablemente. Aunque aún no tengo claro como se suele hacer esto.

Input => tags relevantes => embedding => db

https://huggingface.co/learn/cookbook/advanced_rag
https://huggingface.co/learn/cookbook/rag_zephyr_langchain

Ando mirando ejemplos, al final este es un caso de uso que se esta resolviendo mucho.

https://supabase.com/vector
https://www.mixedbread.ai/

Empece ayer a mirar, voy muy perdido aun jaja

1 respuesta
Slowbro

#187 Ando un poco lento pero la parte de textos igual puedes mirar como va el RAG para LLMs (mira langchain) y para montar la parte de indexing/embeddings puedes mirar LLM2Vec (https://github.com/McGill-NLP/llm2vec). Además del converter tiene un par de encoders ya generados.

1 respuesta
desu

#188 Osea la accuracy y la calidad en general del modelo me da igual, prefiero que sea rápido por eso puse el "gte-small" para poder iterar muy rápido.

Por eso las imágenes son un caso de uso bastante simple, que no fácil de resolver en un caso real jaja, porque para montar un PoC generas un par de tags con cualquier modelo y luego a simple vista puedes ver si en el buscador pones "persona negra" te sale un "noruego" o te sale una "bicicleta". Y los embeddings de tags sé que ocuparan poco espacio y no requieren mucho esfuerzo.

Los documentos para empezar los podría generar a partir de páginas de wikipedia mismo para saber que los tags van a estar más o menos bien y voy a poder tener algo funcional al final, pero tienen la dificultad de ser mayor tamaño, ya que buscas en el contenido. Si por ejemplo quisieria hacerlo sobre .pdf de varias paginas seria mas jodido. Por eso he pensado el summary para simplificar. Doc => Summary => Tags => Embeddings.

Como digo, mi primer objetivo es saber montar la pipeline y luego quiero realizar experimentos.

Quiero evaluar:

  • Tiempo y coste de pre-procesado
  • Tiempo y coste de embeddings, y re-embeddings
  • Tiempo y coste de storage, GET y PUT
1 respuesta
Maaarc

#189 Te recomiendo empezar por HG (https://huggingface.co/models?pipeline_tag=image-segmentation&sort=trending) y de ahí el modelo que veas más trendy o te llame más, busca implementaciones o casos de uso por github/youtube/hf.

Realmente, para cualquier cosa yo empezaría por HF y ya ir viendo como puedes mejorar el output (no es mi área de investigación/interés así que poco te puedo ayudar xd).

Pero para tu primer objetivo de tener una pipeline 10/10.

1 respuesta
desu

#190 Estoy en ello, estoy usando rust, surrealdb (no postgres) y candle (huggingface) porque he visto un par de tutoriales para arrancar. La surrealdb no entiendo como cojones funciona es bastante rara jaja pero soporta vectores para embedding y trabajar en memoria. Si me da mucho lío le meto postgres.

Mi objetivo es abrir un diario pronto, así que espero compartirlo cuando esté más cerca de una primera versión.

A ver si este finde termino lo que tengo empezado. Los tutoriales montan un rag con llm tipo chat así que ando haciendo eso para empezar... luego poco a poco le voy metiendo lo que quiero.

edit: ya he quitado la surreal y he puesto postgres XD

ercabesa

tenéis experiencia con colab pro? hay un osa del plan que no termino de entender

hda

Joder, estaba volviéndome loco xD

Estoy jugueteando en casa con un proyecto personal que incluye montarse un RAG para hacer luego ciertas cosas y sabía que había visto por MV algo, un devlog o algo, sobre el tema. Resulta que había sido a @desu o desde #176, en estos últimos comentarios xD

Por aportar, mi intención era usar FAISS-gpu o FAISS-gpu-raft pero va a ser que rulan entre CUDA 11.4 y 12.1. Las gráficas las llevo en 12.4 así que estoy montándome el vectorstore para el RAG mediante Chroma, (CPU), tomará un ratito y eso que no son tantos archivos, solo unos cientos de txt plano.

A ver si avanzo un poco y creo el diario (ya se lo he comentado a @jastro) con algo de chicha. Nunca me he acercado a un RAG y lo estoy montando todo en local, todo con ollama. Un modelo para embeding y otro para las instrucciones.

Llevo un par de días en flow y he quedado en una hora. Ahora mismo me apetece bastante poco, aunque sé que veré calle y me lo pasaré bien xdxd

1 1 respuesta
desu

#193 Cuidado con mencionarme, puedes tener la mala suerte de invocarme.

Mi objetivo no es el RAG + LLM, es el RAG centrado en buscar e indexar embeddings.

Por ejemplo, le paso mis documentos de pdf y notas de google sheet, me los analiza y clasifica, y después puedo encontrar información. El asistente final me parece un componente minúsculo.

Para proyectos en local como este, solo con generar y buscar de manera eficiente el vector de similitud ya puedes tener un montón de aplicaciones.

Este ejemplo lo vi ayer:
https://domluna.com/blog/tiny-binary-rag
Buscar vectores en 15M de entradas de wikipedia en 15ms en 100 líneas de código.

Si por ejemplo quieres tener un archivo con AI de tus documentos, música y demás en local, cuanta gente tiene más de 15M de elementos? Estamos hablando de búsquedas en ms.

Obviamente, 1 documento será más de 1 entrada, según su número de páginas y como puedas comprimir la información. Sin hacer los números aún, para casos de uso y aplicaciones del día a día soy optimista.

1 respuesta
hda

#194 Mi intención es un generador de apuntes (syllabus entero + apuntes) listo para poder estudiar de ellos, que bebe de una serie de vtt a los que le he hecho etl, escupiendo txt. Los vtt son sendos subtítulos de decenas de videos de un curso que suman unas 70 h (webscraping mediante, obvio). Los vtt son close captions descargados durante en proceso, pero se podría pensar en integrar whisper para sacarlos. Lo vectorizado para el RAG son los txt.

Lo que me gustaría acometer es que cada parte de los apuntes referenciase al txt clave. Por último, procesar estas referencias, enlazando al timestamp concerto del vtt de donde viene el txt. Quiero formatear la salida de dichos apuntes a markdown-ready para obsidian (mi second brain). De este modo podría embeber los vídeos referidos y, al hacer click en los enlaces de los apuntes, que el vídeo concreto empezara a reproducirse en el timestamp específico.

Lo bueno de esto es que, dadas las condiciones iniciales, cualquiera pueda crearse sus apuntes hipervitaminados.

Una tontería de proyecto, vaya, pero como nunca he jugado con RAG me está pareciendo entretenido. Además, me apetece hacerlo todo autohosteado/en 127.0.0.1

1 respuesta
desu

#195 https://ckvt6iam3h.execute-api.us-west-2.amazonaws.com/

https://github.com/aws-samples/video-search-rust-demo/tree/main

1 respuesta
hda

#196 como digo, lo estoy haciendo autohosteado y ya tengo los timestamps para poder colocarme en la posición del vídeo.

1 respuesta
desu

#197 Sisi, te pongo un ejemplo de UI que hace exactamente lo que quieres, dentro de un video puedes buscar texto en los subtitulos, en multiple idioma este ejemplo, y lo puedes correr en local.

Lo que este usa todo cosas de AWS, lo suyo es poner modelos propios y hacer nosotros la pipeline y fuera.

1 respuesta
hda

#198 y te agradezco el aporte. Pero no hace exactamente lo que busco. Mi objetivo es crearme unos apuntes sobre un corpus de textos de unos vídeos; en markdown para obsidian. Y como añadido, si soy capaz, que esos apuntes referencien a timestamps de los vídeos (que serían parte del md, reproduciéndose en obsidian). Pero lo importante es lo primero, mediante RAG y sin alucinaciones típicas de los llm, para poder estudiar confiablemente.

1 respuesta
desu
#199hda:

Y como añadido, si soy capaz, que esos apuntes referencien a timestamps de los vídeos

Es lo más fácil ya verás, el 90% el trabajo es el resto.

Pídeme ayuda si necesitas algo o abre un hilo.

Yo el Lunes, a primera hora de mi horario laboral, me pongo también.

1 respuesta
hda

#200 según el pipeline que tengo en la cabeza esa parte no es tan sencilla, pero ya me enfrentaré a ello. El rag se construye sobre txt. Necesito que las referencias inline de salida de los apuntes sean literales. Luego, sabiendo la relación entre los txt y los vtt buscar ese string literal (y que no caiga entre dos timestamps). Luego, recuperado el timestamp mandar la instrucción en md de play a vídeo en ese timestamp en obsidian.

Abriré devlog, y estaré más que contento con los aportes y las críticas de la comunidad. Independientemente de que en lo personal te trague más o menos.

PD: Este tipo de tonterías son las que suelo hacer para entretenerme. Si me da por compartirlo en MV es cuando están completas ([1], [2]). Por variar un poco, esta vez he pensado en hacer un diario, para el durante. Puede ser entretenido ir compartiendo las dificultades con las que me voy encontrando.

1 respuesta
desu

#201 Me explico, si tú tienes:

Video => Generas subtítulos => Extractos_De_Subtitulos => Entidad_Extractos_De_Subitutulos

Y la Entidad_Extractos_De_Subitutulos es la que indexaras con un embedding, puedes añadir metadatos como el timestamp de donde lo has sacado, el video original, lo que quieras. Donde cada Entidad_Extractos_De_Subitutulos tendra el timestamp donde empiezan los subtítulos. Y a partir de esa Entidad_Extractos_De_Subitutulos, segun tu dices que es tu objetivo, tu generas un markdown único con su referencia única en tu vault de Obsidian.

Entidad_Extractos_De_Subitutulos
-------------------------------------------------
vector_index: embedding
start_timestamp: time
original_video: video reference
....

Cuando busques en tu database el embedding de la query de búsqueda, o la string literal si quieres, devolverás los X top resultados porque puede haber múltiples ocurrencias. Pero cada ocurrencia tendrá un timestamp y video único, por tanto una referencia en Obsidian unica.

Te digo que guardar el start_timestamp en esta entidad me parece muy facil. Lo dificil es montar todo lo otro.

Corrigeme si me equivoco en algo o no te he interpretado bien.

1 1 respuesta
hda

#202 Lo tendré en cuenta :)

desu

El problema de los RAG dinámicos* es el siguiente, que pasa cuando mañana sale un algoritmo mejor?

Si el caso de uso es crear subtítulos, pues hombre, es un problema estático. No hay mucho juego. Dado un INPUT sabes el OUTPUT. Pero como sea un problema dinámico como el taggeado, extracción de features, hacer resúmenes... etc Estás jodidísimo, porque hay que re-hacer todos los embeddings. Y por lo que he visto en imágenes, por ejemplo, un caso de uso simple con un dataset de un par de TBs, pueden ser cientos de miles de euros al año, como mínimo... Que un datascientist te venga y te pida hacer una prueba, una prueba, ya serán unos 30k-50k euros jaja. Pídele a tu manager que te apruebe la prueba anda :-).

Me interesan estos temas, embeddings que compartan propiedades matemáticas sobre el espacio de componentes, modelos de ML que se puedan usar embedded con WASM para hacerlo en cliente o edge, embeddings incrementales? que se puedan combinar, y obviamente en el mundo real todo el ML tiene que ser anonimizado zzz.

No me muestro optimista en estos casos de uso la verdad.

Jastro

Desde hace tiempo, quiero meterme en el mundo del machine learning, pero no me queda del todo claro, como empezar. Quitando lo de empezar con python, que en eso todo el mundo esta de acuerdo, he visto que gente recomienda empezar con tensorflow otros recomiendan Keras. Estoy muy muy perdido.

me recomendais algun curso / libro / guia de inicio?

3 respuestas
desu

#205 Que quieres hacer? Cuál es tu objetivo? Empecemos por ahí.

1 respuesta
Jastro

#206 de momento mi intencion no es ser profesional, es mas un hobby que otra cosa.

  • He visto que aplican machine learning para videojuegos, por ejemplo recreando el nivel de super mario y haciendo que poco a poco aprenda de sus errores, es una gilipollez pero es algo que me gustaria ver como lo han implementado y entender como funciona. Como hacer que la maquina entienda que ha fallado y como hacer que mejore, etc, etc.

Es mas tener conocimiento que otra cosa

2 respuestas
ercabesa

#205 machine learning engloba muchos aspectos realmente, hay librerías que según la naturaleza de lo que quieras resolver.

Keras y Tensorflow está mas pensado para trabajar con redes neuronales, y entre ambas keras es mas sencilla, pero si quieres llegar a más necesitarás tf.

Aún así, da un poco igual, lo importante es tener una base sólida "teorica" y ya vas viendo cual se ajusta mejor

para lo que comentas en #207 mira reinforcement learning y el algoritmo qlearning y ya vas tirando

1 respuesta
gonya707

#205 Keras no deja de ser una capa extra de abstraccion por encima de tensorflow, si usas keras (que deberias si no quieres complicarte la vida) lo basico de TF y como funciona lo vas a aprender aunque no quieras.

Lo que quieres hacer como lo de entrenar un modelo para que se pase el super mario es una rama de ML llamado Reinforced Learning, una vez aprendas lo basico mirate cosas mas especificas de RL

Algunos recursos interesantes:

https://www.youtube.com/watch?v=aircAruvnKk&list=PLZHQObOWTQDNU6R1_67000Dx_ZCJB-3pi

https://www.youtube.com/watch?v=vXtfdGphr3c

1 1 respuesta
desu

#207 Este curso de Berkeley hace unos años era el standard en el mundo: http://ai.berkeley.edu/project_overview.html

En el caso de los videojuegos, los agentes y el reinforcement learning, es un buen punto de inicio.

Tienes el código de ejercicios en python, empiezas haciendo DFS/BFS/A* y terminas con un agente de re-fuerzo.

1 1 respuesta