<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Adrian</title>
    <description>The latest articles on DEV Community by Adrian (@adrian_368e1d3e691afab697).</description>
    <link>https://dev.to/adrian_368e1d3e691afab697</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3983803%2F92991c8b-073d-44be-80c4-584f44d63100.jpg</url>
      <title>DEV Community: Adrian</title>
      <link>https://dev.to/adrian_368e1d3e691afab697</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/adrian_368e1d3e691afab697"/>
    <language>en</language>
    <item>
      <title>Portfolio de IA open source: 20+ proyectos con LLMs self-hosted en producción</title>
      <dc:creator>Adrian</dc:creator>
      <pubDate>Sun, 14 Jun 2026 14:16:29 +0000</pubDate>
      <link>https://dev.to/adrian_368e1d3e691afab697/portfolio-de-ia-open-source-20-proyectos-con-llms-self-hosted-en-produccion-167l</link>
      <guid>https://dev.to/adrian_368e1d3e691afab697/portfolio-de-ia-open-source-20-proyectos-con-llms-self-hosted-en-produccion-167l</guid>
      <description>&lt;p&gt;Este portfolio no es una página estática con capturas de pantalla. Es una infraestructura de IA &lt;strong&gt;open source y self-hosted&lt;/strong&gt; corriendo en producción: más de 20 proyectos de Machine Learning, cada uno con su demo interactiva real, sobre un único VPS. Este artículo explica cómo está montado y qué decisiones técnicas lo sostienen — porque la parte interesante no es la lista de proyectos, sino que todos funcionan a la vez sin reventar un servidor de 7,6 GB de RAM.&lt;/p&gt;

&lt;h2&gt;
  
  
  Por qué self-hosted y open source
&lt;/h2&gt;

&lt;p&gt;La alternativa fácil era encadenar APIs de pago (OpenAI, Pinecone, servicios gestionados) y enseñar pantallazos. Pero quería demostrar algo distinto: que se puede construir IA aplicada &lt;strong&gt;controlando el stack completo&lt;/strong&gt;, con costes marginales y código abierto. El &lt;a href="https://github.com/Chupacharcos/chatbot" rel="noopener noreferrer"&gt;repositorio del chatbot RAG es público&lt;/a&gt;, y cada demo es ejecutable, no un vídeo.&lt;/p&gt;

&lt;h2&gt;
  
  
  El stack de recuperación: RAG sin servicios gestionados
&lt;/h2&gt;

&lt;p&gt;El chatbot documental usa una arquitectura RAG enteramente self-hosted:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Vector store: FAISS&lt;/strong&gt; en disco, no una base vectorial gestionada. Índices pre-generados por idioma + índices dinámicos en RAM para los PDFs que sube el usuario.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Embeddings: intfloat/multilingual-e5-base&lt;/strong&gt; (768 dimensiones), corriendo localmente. Se eligió la variante &lt;em&gt;base&lt;/em&gt; sobre &lt;em&gt;large&lt;/em&gt; tras un incidente de memoria: la calidad extra no justificaba el consumo de RAM en un servidor compartido por 20 servicios.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reranker: cross-encoder mMiniLMv2&lt;/strong&gt; para reordenar los candidatos antes de pasarlos al LLM.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LLM: Groq&lt;/strong&gt; (Llama 3.1/3.3) como motor principal, con &lt;strong&gt;Ollama local&lt;/strong&gt; como alternativa. El failover entre ambos es automático.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;El resultado: un pipeline de recuperación que no depende de ninguna factura mensual por consultas vectoriales.&lt;/p&gt;

&lt;h2&gt;
  
  
  20+ servicios FastAPI en un solo VPS
&lt;/h2&gt;

&lt;p&gt;Cada proyecto de ML es un &lt;strong&gt;proceso FastAPI independiente&lt;/strong&gt; en su propio puerto, con su propio modelo y artefactos. Predicción de precio inmobiliario, calidad del aire, detección de fraude, separación de pistas musicales, detección de alergias felinas por visión por computador… cada uno aislado, cada uno desplegado como servicio systemd.&lt;/p&gt;

&lt;p&gt;El problema obvio: 20 modelos cargados en memoria a la vez no caben. La solución fue un sistema &lt;strong&gt;lazy-load&lt;/strong&gt;: las demos pesadas están detenidas por defecto y arrancan on-demand cuando un visitante pulsa "Activar demo", apagándose solas tras 30 minutos sin tráfico. Eso liberó ~2 GB de RAM y permite que el portfolio entero conviva en una máquina modesta.&lt;/p&gt;

&lt;h2&gt;
  
  
  NeuralOps: el sistema multi-agente que lo mantiene vivo
&lt;/h2&gt;

&lt;p&gt;La pieza que más disfruto: el portfolio se mantiene, promociona y mejora a sí mismo mediante un sistema de &lt;strong&gt;agentes autónomos&lt;/strong&gt;. Monitores que vigilan latencia y reinician servicios caídos, un reparador de errores que escala a GitHub Issues lo que no puede arreglar solo, agentes de contenido que sindican los artículos del blog, y un ecosistema "darwiniano" donde cada agente acumula una puntuación de rendimiento y los mejores se reproducen con mutaciones de sus parámetros.&lt;/p&gt;

&lt;p&gt;Todo corre con el mismo principio de coste marginal: razonamiento en Groq cuando importa la calidad, modelo local para las tareas baratas, y &lt;em&gt;timers&lt;/em&gt; de systemd en lugar de procesos residentes para no malgastar RAM.&lt;/p&gt;

&lt;h2&gt;
  
  
  El frontend
&lt;/h2&gt;

&lt;p&gt;Laravel + MySQL para la capa web, nginx con HTTPS, Tailwind compilado y auto-alojado (sin CDN). Cada proyecto tiene su ficha, su demo y su artículo técnico en este blog explicando las decisiones reales: qué arquitectura elegí, qué descarté y qué métricas conseguí.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué puedes mirar
&lt;/h2&gt;

&lt;p&gt;Si te interesa la IA aplicada construida sin atajos de pago: explora las &lt;a href="https://dev.to/proyectos"&gt;demos&lt;/a&gt;, lee el resto de &lt;a href="https://dev.to/blog"&gt;artículos técnicos&lt;/a&gt; donde detallo cada proyecto, o revisa el &lt;a href="https://github.com/Chupacharcos/chatbot" rel="noopener noreferrer"&gt;código del chatbot RAG en GitHub&lt;/a&gt;. Todo lo que se describe aquí está funcionando ahora mismo en producción.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Publicado originalmente en &lt;a href="https://adrianmoreno-dev.com/blog/portfolio-ia-open-source-llm-self-hosted" rel="noopener noreferrer"&gt;adrianmoreno-dev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>iaopensource</category>
      <category>llmselfhosted</category>
      <category>rag</category>
      <category>fastapi</category>
    </item>
    <item>
      <title>Generador de imágenes con FLUX.1-schnell: text-to-image en producción</title>
      <dc:creator>Adrian</dc:creator>
      <pubDate>Sun, 14 Jun 2026 11:33:05 +0000</pubDate>
      <link>https://dev.to/adrian_368e1d3e691afab697/generador-de-imagenes-con-flux1-schnell-text-to-image-en-produccion-2d3a</link>
      <guid>https://dev.to/adrian_368e1d3e691afab697/generador-de-imagenes-con-flux1-schnell-text-to-image-en-produccion-2d3a</guid>
      <description>&lt;p&gt;Este proyecto nació de una necesidad propia: generar las imágenes de portada de los demás proyectos del portfolio con un estilo coherente, sin depender de bancos de imágenes ni de herramientas de pago. La solución fue desplegar mi propio generador text-to-image.&lt;/p&gt;

&lt;h2&gt;
  
  
  El modelo: por qué FLUX.1-schnell
&lt;/h2&gt;

&lt;p&gt;La familia &lt;strong&gt;FLUX.1&lt;/strong&gt; es de lo mejor que hay hoy en generación de imágenes abierta. Elegí la variante &lt;strong&gt;schnell&lt;/strong&gt; ("rápido" en alemán) por una razón práctica: está destilada para generar en muy pocos pasos de difusión, lo que la hace mucho más ligera y veloz que las variantes de máxima calidad. En un portfolio que corre sobre recursos modestos, esa diferencia entre "tarda 3 segundos" y "tarda un minuto" es la diferencia entre una demo usable y una que nadie espera.&lt;/p&gt;

&lt;h2&gt;
  
  
  Estilos predefinidos
&lt;/h2&gt;

&lt;p&gt;Para mantener coherencia visual, el generador ofrece &lt;strong&gt;estilos predefinidos&lt;/strong&gt; orientados a categorías (tech, educación, finanzas, IA). Detrás, cada estilo es esencialmente un &lt;em&gt;prompt template&lt;/em&gt; cuidado que envuelve la petición del usuario con los modificadores adecuados de composición, paleta y acabado. Es una capa fina pero muy efectiva: convierte un prompt mediocre del usuario en uno bueno.&lt;/p&gt;

&lt;h2&gt;
  
  
  Arquitectura
&lt;/h2&gt;

&lt;p&gt;El modelo se sirve desde el ecosistema &lt;strong&gt;HuggingFace&lt;/strong&gt; a través de una API &lt;strong&gt;FastAPI&lt;/strong&gt;, con post-procesado de imagen vía &lt;strong&gt;Pillow&lt;/strong&gt; y descarga directa en PNG, integrado en el frontend Laravel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Una reflexión sobre los modelos de difusión
&lt;/h2&gt;

&lt;p&gt;Un modelo de difusión genera partiendo de ruido puro y "quitándolo" iterativamente hasta revelar una imagen coherente con el texto. Las variantes destiladas como schnell comprimen ese proceso de decenas de pasos a unos pocos, sacrificando algo de fidelidad a cambio de velocidad. Para iconografía y portadas, ese intercambio es claramente favorable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Qué aprendí
&lt;/h2&gt;

&lt;p&gt;Que "usar el mejor modelo" no siempre es la decisión correcta: el &lt;strong&gt;mejor modelo para tu contexto&lt;/strong&gt; tiene en cuenta la latencia, los recursos y el uso real. Y que una buena capa de &lt;em&gt;prompt templating&lt;/em&gt; aporta más calidad percibida que saltar a un modelo más pesado.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Publicado originalmente en &lt;a href="https://adrianmoreno-dev.com/blog/generador-imagenes-flux-schnell-text-to-image" rel="noopener noreferrer"&gt;adrianmoreno-dev.com&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>iagenerativa</category>
      <category>difusin</category>
      <category>flux</category>
      <category>huggingface</category>
    </item>
  </channel>
</rss>
