<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>LeaderGPU® | Soluciones de GPU para computación de alto rendimiento</title>
    <link>https://www.leadergpu.es</link>
    <description>Un catálogo de soluciones en el que encontrará las mejores bibliotecas, programas y herramientas para la computación de alto rendimiento en diferentes categorías y ámbitos.</description>
    <language>es</language>
    <item>
      <title>Qwen3-Coder: un paradigma roto</title>
      <link>https://www.leadergpu.es/catalog/628-qwen3-coder-un-paradigma-roto</link>
      <description>&lt;p&gt;Estamos acostumbrados a pensar que los modelos de código abierto siempre están por detrás de sus homólogos comerciales en cuanto a calidad. Puede parecer que están desarrollados exclusivamente por entusiastas que no pueden permitirse invertir grandes sumas en crear conjuntos de datos de alta calidad y entrenar modelos en decenas de miles de GPU modernas.&lt;/p&gt;
&lt;p&gt;La cosa cambia cuando grandes corporaciones como OpenAI, Anthropic o Meta asumen la tarea. No sólo disponen de los recursos necesarios, sino también de los mejores especialistas en redes neuronales del mundo. Por desgracia, los modelos que crean, especialmente las últimas versiones, son de código cerrado. Los desarrolladores lo explican alegando los riesgos de un uso incontrolado y la necesidad de garantizar la seguridad de la IA.&lt;/p&gt;
&lt;p&gt;Por un lado, su razonamiento es comprensible: muchas cuestiones éticas siguen sin resolverse y la propia naturaleza de los modelos de redes neuronales sólo permite influir indirectamente en el resultado final. Por otro lado, mantener los modelos cerrados y ofrecer acceso sólo a través de su propia API es también un modelo de negocio sólido.&lt;/p&gt;
&lt;p&gt;Sin embargo, no todas las empresas se comportan así. Por ejemplo, la empresa francesa Mistral AI ofrece modelos comerciales y de código abierto, lo que permite a investigadores y aficionados utilizarlos en sus proyectos. Pero hay que prestar especial atención a los logros de las empresas chinas, la mayoría de las cuales construyen modelos de peso y código abiertos capaces de competir seriamente con las soluciones propietarias.&lt;/p&gt;
&lt;h2&gt;DeepSeek, Qwen3 y Kimi K2&lt;/h2&gt;
&lt;p&gt;El primer gran avance llegó con DeepSeek-V3. Este modelo lingüístico multimodal de DeepSeek AI se desarrolló utilizando el enfoque de Mezcla de Expertos (MoE) y unos impresionantes 671B parámetros, con 37B de los más relevantes activados para cada token. Y lo que es más importante, todos sus componentes (pesos del modelo, código de inferencia y conductos de formación) se han hecho públicos.&lt;/p&gt;
&lt;p&gt;Esto lo convirtió instantáneamente en uno de los LLM más atractivos para desarrolladores de aplicaciones de IA e investigadores por igual. El siguiente titular fue DeepSeek-R1, el primer modelo de razonamiento de código abierto. El día de su lanzamiento, hizo temblar el mercado bursátil estadounidense después de que sus desarrolladores afirmaran que entrenar un modelo tan avanzado sólo había costado 6 millones de dólares.&lt;/p&gt;
&lt;p&gt;Aunque el revuelo en torno a DeepSeek acabó por enfriarse, los siguientes lanzamientos no fueron menos importantes para la industria mundial de la IA. Hablamos, por supuesto, de Qwen 3. En nuestro análisis de &lt;a href=&quot;https://www.leadergpu.es/catalog/624-novedades-de-qwen-3&quot; target=&quot;_blank&quot;&gt;Novedades de Qwen 3&lt;/a&gt; tratamos en detalle sus características, por lo que no nos detendremos en él. Poco después apareció otro jugador: Kimi K2, de Moonshot AI.&lt;/p&gt;
&lt;p&gt;Con su arquitectura MoE, parámetros 1T (32B activados por token) y código abierto, Kimi K2 atrajo rápidamente la atención de la comunidad. En lugar de centrarse en el razonamiento, Moonshot AI buscaba un rendimiento puntero en matemáticas, programación y conocimientos transversales profundos.&lt;/p&gt;
&lt;p&gt;El as en la manga de Kimi K2 era su optimización para la integración en agentes de IA. Esta red se diseñó literalmente para aprovechar al máximo todas las herramientas disponibles. Sobresale en tareas que requieren no sólo escribir código, sino también pruebas iterativas en cada fase de desarrollo. Sin embargo, también tiene puntos débiles, que discutiremos más adelante.&lt;/p&gt;
&lt;p&gt;Kimi K2 es un modelo de lenguaje grande en todos los sentidos. Ejecutar la versión completa requiere ~2 TB de VRAM (FP8: ~1 TB). Por razones obvias, esto no es algo que puedas hacer en casa, e incluso muchos servidores de GPU no lo soportarán. El modelo necesita al menos 8 aceleradores NVIDIA® H200. Las versiones cuantificadas pueden ayudar, pero con un coste notable para la precisión.&lt;/p&gt;
&lt;h2&gt;Codificador Qwen3&lt;/h2&gt;
&lt;p&gt;Viendo el éxito de Moonshot AI, Alibaba desarrolló su propio modelo similar a Kimi K2, pero con importantes ventajas que comentaremos en breve. Inicialmente, se lanzó en dos versiones:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-480B-A35B-Instruct&lt;/a&gt; (~250 GB VRAM)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-480B-A35B-Instruct-FP8&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-480B-A35B-Instruct-FP8&lt;/a&gt; (~120 GB de VRAM)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pocos días después, aparecieron modelos más pequeños sin el mecanismo de razonamiento, que requerían mucha menos VRAM:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-30B-A3B-Instruct&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-30B-A3B-Instruct&lt;/a&gt; (~32 GB VRAM)&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://huggingface.co/Qwen/Qwen3-Coder-30B-A3B-Instruct-FP8&quot; target=&quot;_blank&quot;&gt;Qwen3-Coder-30B-A3B-Instruct-FP8&lt;/a&gt; (~18 GB VRAM)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Qwen3-Coder fue diseñado para su integración con herramientas de desarrollo. Incluye un analizador especial para llamadas a funciones (qwen3coder_tool_parser.py, análogo a la llamada a funciones de OpenAI). Junto con el modelo, se ha lanzado una utilidad de consola, capaz de realizar desde la compilación de código hasta la consulta de una base de conocimientos. Esta idea no es nueva, esencialmente es una extensión muy reelaborada de la aplicación de código Gemini de Anthropic.&lt;/p&gt;
&lt;p&gt;El modelo es compatible con la API OpenAI, lo que permite desplegarlo localmente o en un servidor remoto y conectarlo a la mayoría de los sistemas que admiten esta API. Esto incluye tanto aplicaciones cliente ya creadas como bibliotecas de aprendizaje automático. Esto lo hace viable no sólo para el segmento B2C, sino también para el B2B, ofreciendo un reemplazo drop-in sin fisuras para el producto de OpenAI sin ningún cambio en la lógica de la aplicación.&lt;/p&gt;
&lt;p&gt;Una de sus características más demandadas es la longitud de contexto ampliada. Por defecto, admite 256k tokens, pero puede aumentarse hasta 1M utilizando el mecanismo &lt;b translate=&quot;no&quot;&gt;YaRN&lt;/b&gt; (Yet another RoPe extensioN). Los LLM modernos se entrenan normalmente con conjuntos de datos cortos (2.000-8.000 tokens), y una longitud de contexto grande puede hacer que pierdan de vista el contenido anterior.&lt;/p&gt;
&lt;p&gt;YaRN es un elegante &quot;truco&quot; que hace creer al modelo que está trabajando con sus secuencias cortas habituales, mientras que en realidad procesa secuencias mucho más largas. La idea clave es &quot;estirar&quot; o &quot;dilatar&quot; el espacio posicional conservando la estructura matemática que espera el modelo. Esto permite procesar eficazmente secuencias de decenas de miles de tokens sin el reentrenamiento o la memoria adicional que exigen los métodos tradicionales de ampliación del contexto.&lt;/p&gt;
&lt;h2&gt;Descarga y ejecución de Inference&lt;/h2&gt;
&lt;p&gt;Asegúrate de haber instalado CUDA® de antemano, ya sea utilizando las instrucciones oficiales de NVIDIA® o la guía &lt;a href=&quot;https://www.leadergpu.es/articles/615-instalar-el-kit-de-herramientas-cuda-en-linux&quot; target=&quot;_blank&quot;&gt;Instalar el kit de herramientas CUDA® en Linux&lt;/a&gt;. Para comprobar el compilador necesario:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nvcc --version&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Salida esperada:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;nvcc: NVIDIA (R) Cuda compiler driver
Copyright (c) 2005-2024 NVIDIA Corporation
Built on Tue_Feb_27_16:19:38_PST_2024
Cuda compilation tools, release 12.4, V12.4.99
Build cuda_12.4.r12.4/compiler.33961263_0&lt;/pre&gt;
&lt;p&gt;Si obtiene:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Command &#39;nvcc&#39; not found, but can be installed with:
sudo apt install nvidia-cuda-toolkit&lt;/pre&gt;
&lt;p&gt;necesitas añadir los binarios CUDA® al $PATH de tu sistema.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export PATH=/usr/local/cuda-12.4/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export LD_LIBRARY_PATH=/usr/local/cuda-12.4/lib64:$LD_LIBRARY_PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta es una solución temporal. Para una solución permanente, edite &lt;b translate=&quot;no&quot;&gt;~/.bashrc&lt;/b&gt; y añada las mismas dos líneas al final.&lt;/p&gt;
&lt;p&gt;Ahora, prepara tu sistema para gestionar entornos virtuales. Puedes usar el venv incorporado en Python o el más avanzado Miniforge. Asumiendo que Miniforge está instalado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda create -n venv python=3.10&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala PyTorch con soporte CUDA® compatible con tu sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cu124&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, instale las bibliotecas esenciales:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Transformers&lt;/b&gt; - La biblioteca de modelos principal de Hugging Face&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Accelerate&lt;/b&gt; - permite la inferencia multi-GPU&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;HuggingFace Hub&lt;/b&gt; - para descargar/cargar modelos y conjuntos de datos&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Safetensors&lt;/b&gt; - formato seguro del peso del modelo&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;vLLM&lt;/b&gt; - biblioteca de inferencia recomendada para Qwen&lt;/li&gt;
&lt;/ul&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install transformers accelerate huggingface_hub safetensors vllm&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargar el modelo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;hf download Qwen/Qwen3-Coder-30B-A3B-Instruct --local-dir ./Qwen3-30B&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecutar la inferencia con paralelismo tensorial (repartiendo los tensores de capa entre las GPUs, por ejemplo 8):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python -m vllm.entrypoints.openai.api_server \
--model /home/usergpu/Qwen3-30B \
--tensor-parallel-size 8 \
--gpu-memory-utilization 0.9 \
--dtype auto \
--host 0.0.0.0 \
--port 8000&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto inicia el servidor API OpenAI de vLLM.&lt;/p&gt;
&lt;h2&gt;Pruebas e integración&lt;/h2&gt;
&lt;h3&gt;cURL&lt;/h3&gt;
&lt;p&gt;Instale &lt;b translate=&quot;no&quot;&gt;jq&lt;/b&gt; para la impresión bonita de JSON:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;sudo apt -y install jq&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Probar el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;curl -s http://127.0.0.1:8000/v1/chat/completions -H &quot;Content-Type: application/json&quot; -d &#39;{
  &quot;model&quot;: &quot;/home/usergpu/Qwen3-30B&quot;,
  &quot;messages&quot;: [
    {&quot;role&quot;: &quot;system&quot;, &quot;content&quot;: &quot;You are a helpful assistant.&quot;},
    {&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Hello! What can you do?&quot;}
  ],
  &quot;max_tokens&quot;: 180
}&#39; | jq -r &#39;.choices[0].message.content&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;VSCode&lt;/h3&gt;
&lt;p&gt;Para integrarse con &lt;b translate=&quot;no&quot;&gt;Visual Studio Code&lt;/b&gt;, instale la extensión &lt;b translate=&quot;no&quot;&gt;Continue&lt;/b&gt; y añádala a &lt;b translate=&quot;no&quot;&gt;config.yaml&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;- name: Qwen3-Coder 30B
  provider: openai
  apiBase: http://[server_IP_address]:8000/v1
  apiKey: none
  model: /home/usergpu/Qwen3-30B
  roles:
    - chat
    - edit
    - apply&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/183/original/sh_qwen3_coder_a_broken_paradigm_1.png?1755000294&quot; alt=&quot;Continue extension&quot;&gt;
&lt;h3&gt;Qwen-Agente&lt;/h3&gt;
&lt;p&gt;Para una configuración basada en GUI con Qwen-Agent (incluyendo RAG, MCP e intérprete de código):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install -U &quot;qwen-agent[gui,rag,code_interpreter,mcp]&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre el editor nano:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;nano script.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejemplo de script Python para lanzar Qwen-Agent con Gradio WebUI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;from qwen_agent.agents import Assistant
from qwen_agent.gui import WebUI

llm_cfg = {
    &#39;model&#39;: &#39;/home/usergpu/Qwen3-30B&#39;,
    &#39;model_server&#39;: &#39;http://localhost:8000/v1&#39;,
    &#39;api_key&#39;: &#39;EMPTY&#39;,
    &#39;generate_cfg&#39;: {&#39;top_p&#39;: 0.8},
}

tools = [&#39;code_interpreter&#39;]

bot = Assistant(
    llm=llm_cfg,
    system_message=&quot;You are a helpful coding assistant.&quot;,
    function_list=tools
)

WebUI(bot).run()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python script.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El servidor estará disponible en: http://127.0.0.1:7860&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/184/original/sh_qwen3_coder_a_broken_paradigm_2.png?1755000323&quot; alt=&quot;Qwen-Agent with tools&quot;&gt;
&lt;p&gt;También puedes integrar Qwen3-Coder en frameworks de agentes como CrewAI para automatizar tareas complejas con conjuntos de herramientas como la búsqueda web o la memoria de bases de datos vectoriales.&lt;/p&gt;
&lt;p&gt;Véase también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/627-c-mo-instalar-crewai-con-gui&quot;&gt;Cómo instalar CrewAI con GUI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow&quot;&gt;Creador de aplicaciones de inteligencia artificial de código reducido Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/602-c-mo-supervisar-la-aplicaci-n-langflow&quot;&gt;Cómo supervisar la aplicación LangFlow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/182/original/il_qwen3_coder_a_broken_paradigm.png?1755000263"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 12 Aug 2025 14:11:06 +0200</pubDate>
      <guid isPermaLink="false">628</guid>
      <dc:date>2025-08-12 14:11:06 +0200</dc:date>
    </item>
    <item>
      <title>Cómo instalar CrewAI con GUI</title>
      <link>https://www.leadergpu.es/catalog/627-c-mo-instalar-crewai-con-gui</link>
      <description>&lt;p&gt;Las capacidades de los modelos de redes neuronales crecen día a día. Los investigadores y las empresas comerciales invierten cada vez más en entrenarlos. Pero por sí solos, estos modelos no pueden actuar de forma autónoma. Para resolver tareas específicas, necesitan orientación: ampliación del contexto y establecimiento de direcciones. Este enfoque no siempre es eficaz, sobre todo cuando se trata de problemas complejos.&lt;/p&gt;
&lt;p&gt;Pero, ¿y si permitiéramos a una red neuronal actuar de forma autónoma? ¿Y si le proporcionáramos muchas herramientas para interactuar con el mundo exterior? Obtendríamos un agente de IA capaz de resolver tareas determinando de forma independiente qué herramientas utilizar. Suena complicado, pero funciona muy bien. Sin embargo, incluso para un usuario avanzado, crear un agente de IA desde cero puede ser una tarea nada trivial.&lt;/p&gt;
&lt;p&gt;La razón es que la mayoría de las bibliotecas populares carecen de interfaz gráfica de usuario. Requieren interacción a través de un lenguaje de programación como Python. Esto eleva drásticamente el umbral de entrada y hace que los agentes de IA sean demasiado complejos para su implementación independiente. Este es exactamente el caso de CrewAI.&lt;/p&gt;
&lt;h2&gt;Qué es CrewAI&lt;/h2&gt;
&lt;p&gt;CrewAI es una librería muy popular y práctica, pero no viene con una interfaz gráfica por defecto. Esto llevó a desarrolladores independientes a crear una interfaz no oficial. La naturaleza de código abierto de CrewAI hizo la tarea mucho más fácil, y pronto la comunidad lanzó el proyecto CrewAI Studio.&lt;/p&gt;
&lt;p&gt;Los desarrolladores y entusiastas conocieron mejor la arquitectura del sistema y pudieron crear herramientas adaptadas a tareas específicas. Los usuarios normales podían crear agentes de IA sin escribir una sola línea de código. Se hizo más fácil asignar tareas y gestionar el acceso a redes neuronales y herramientas. También permitió exportar e importar agentes de un servidor a otro y compartirlos con amigos, colegas o la comunidad de código abierto.&lt;/p&gt;
&lt;p&gt;Otra ventaja de CrewAI Studio es su flexibilidad de despliegue. Puede instalarse como una aplicación normal o como un contenedor Docker, el método preferido, ya que incluye todas las bibliotecas y componentes necesarios para ejecutar el sistema.&lt;/p&gt;
&lt;h2&gt;Instalación&lt;/h2&gt;
&lt;p&gt;Actualiza los paquetes de tu sistema operativo y las aplicaciones instaladas a las últimas versiones:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Utiliza el script de instalación automática de controladores o sigue nuestra guía &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot; target=&quot;_blank&quot;&gt;Instalar controladores NVIDIA® en Linux&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicia el servidor para que los cambios surtan efecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown - r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tras volver a conectarte por SSH, instala las utilidades del servidor web Apache 2, que te darán acceso al generador de archivos &lt;b translate=&quot;no&quot;&gt;.htpasswd&lt;/b&gt; utilizado para la autenticación básica de usuarios:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y apache2-utils&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala Docker Engine usando el script shell oficial:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade Docker Compose al sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clonar el repositorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/strnad/CrewAI-Studio.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navegue hasta el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd CrewAI-Studio&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree un archivo &lt;b translate=&quot;no&quot;&gt;.htpasswd&lt;/b&gt; para el usuario &lt;b translate=&quot;no&quot;&gt;usergpu&lt;/b&gt;. Se le pedirá que introduzca una contraseña dos veces:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;htpasswd -c .htpasswd usergpu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora edita el archivo de despliegue del contenedor. Por defecto, hay dos contenedores:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano docker-compose.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Borra la sección:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;ports:
  - &quot;5432:5432&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y añada el siguiente servicio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;
nginx:
  image: nginx:latest
  container_name: crewai_nginx
  ports:
    - &quot;80:80&quot;
  volumes:
    - ./nginx.conf:/etc/nginx/nginx.conf:ro
    - ./.htpasswd:/etc/nginx/.htpasswd:ro
  depends_on:
    - web&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Nginx necesitará un archivo de configuración, así que crea uno:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano nginx.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pega lo siguiente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;events {}

http {
  server {
    listen 80;

    location / {
      proxy_pass http://web:8501;

      # WebSocket headers
      proxy_http_version 1.1;
      proxy_set_header Upgrade $http_upgrade;
      proxy_set_header Connection &quot;upgrade&quot;;

      # Forward headers
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      proxy_set_header X-Forwarded-Proto $scheme;

      auth_basic &quot;Restricted Content&quot;;
      auth_basic_user_file /etc/nginx/.htpasswd;
    }
  }
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Todas las variables de servicio importantes para CrewAI están definidas en el archivo &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt;. Abra el archivo &lt;b translate=&quot;no&quot;&gt;.env_example&lt;/b&gt; para editarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano .env_example&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade las siguientes líneas:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;OLLAMA_HOST=&quot;http://open-webui:11434&quot;
OLLAMA_MODELS=&quot;ollama/llama3.2:latest&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y añade Postgres config:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;POSTGRES_USER=&quot;admin&quot;
POSTGRES_PASSWORD=&quot;your_password&quot;
POSTGRES_DB=&quot;crewai_db&quot;
AGENTOPS_ENABLED=&quot;False&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora copia el archivo de ejemplo y renómbralo a &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt; para que el sistema pueda leerlo durante el despliegue del contenedor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp .env_example .env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este ejemplo, usaremos modelos locales con inferencia manejada por Ollama. Recomendamos nuestra guía &lt;a href=&quot;https://www.leadergpu.es/catalog/584-open-webui-todo-en-uno&quot; target=&quot;_blank&quot;&gt;Open WebUI: Todo en uno&lt;/a&gt;, y durante el despliegue añadir &lt;b translate=&quot;no&quot;&gt;-e OLLAMA_HOST=0.0.0.0&lt;/b&gt; para permitir a CrewAI conectarse directamente al contenedor Ollama. Descargue el modelo deseado (por ejemplo, llama3.2:latest) a través de WebUI o conectándose a la consola del contenedor y ejecutando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;ollama pull llama3.2:latest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez que todo esté configurado, inicie el despliegue:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker-compose up -d --build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, visitando &lt;b translate=&quot;no&quot;&gt;http://[your_server_ip]/&lt;/b&gt; se le pedirán las credenciales de acceso. Una vez introducidas correctamente, aparecerá la interfaz CrewAI.&lt;/p&gt;
&lt;h2&gt;Características&lt;/h2&gt;
&lt;p&gt;Exploremos las entidades clave que utiliza CrewAI. Esto le ayudará a entender cómo configurar los flujos de trabajo. La entidad central en el &lt;b translate=&quot;no&quot;&gt;Agent&lt;/b&gt;, un ejecutor de tareas autónomo. Cada agente tiene atributos que le ayudan a cumplir sus tareas:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Role&lt;/b&gt;. Una breve descripción del trabajo, de 2-3 palabras.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Backstory&lt;/b&gt;. Opcional; ayuda al modelo lingüístico a entender cómo debe comportarse el agente y en qué experiencias debe basarse.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Goal&lt;/b&gt;. El objetivo que debe perseguir el agente.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Allow delegation&lt;/b&gt;. Permite al agente delegar tareas (o parte de ellas) en otros.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Verbose&lt;/b&gt;. Indica al agente que registre acciones detalladas.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;LLM Provider and Model&lt;/b&gt;. Especifica el modelo y el proveedor a utilizar.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Temperature&lt;/b&gt;. Determina la creatividad de la respuesta. Mayor = más creativo.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Max iterations&lt;/b&gt;. Número de intentos que tiene el agente para tener éxito, actuando como salvaguarda (por ejemplo, contra bucles infinitos).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los agentes actúan analizando de forma iterativa las entradas, razonando y extrayendo conclusiones utilizando las herramientas disponibles.&lt;/p&gt;
&lt;p&gt;La entrada se define mediante una entidad &lt;b translate=&quot;no&quot;&gt;Task&lt;/b&gt;. Cada tarea incluye una descripción, un agente asignado y, opcionalmente, un resultado esperado. Por defecto, las tareas se ejecutan de forma secuencial, pero pueden paralelizarse utilizando la bandera &lt;b translate=&quot;no&quot;&gt;Async execution&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;El trabajo de los agentes autónomos se apoya en &lt;b translate=&quot;no&quot;&gt;Tools&lt;/b&gt;, que permite la interacción con el mundo real. CrewAI incluye herramientas para búsquedas web, análisis sintáctico de sitios, llamadas a API y manejo de archivos, lo que mejora el contexto y ayuda a los agentes a alcanzar sus objetivos.&lt;/p&gt;
&lt;p&gt;Por último, está &lt;b translate=&quot;no&quot;&gt;Crew entity&lt;/b&gt;. Une agentes con diferentes funciones en un equipo para abordar problemas complejos. Pueden comunicarse, delegar, revisar y corregirse unos a otros, formando esencialmente una inteligencia colectiva.&lt;/p&gt;
&lt;h2&gt;Utilizando&lt;/h2&gt;
&lt;p&gt;Ahora que estás familiarizado con las entidades, vamos a construir y ejecutar un flujo de trabajo CrewAI mínimo. En este ejemplo, seguiremos el progreso global en el desarrollo de fármacos contra el cáncer.&lt;/p&gt;
&lt;p&gt;Utilizaremos tres agentes:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Oncology Drug Pipeline Analyst&lt;/b&gt; - sigue los nuevos desarrollos desde las primeras fases hasta los ensayos clínicos.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Regulatory and Approval Watchdog&lt;/b&gt; - monitoriza las aprobaciones de nuevos fármacos y los cambios normativos.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Scientific Literature and Innovation Scout&lt;/b&gt; - explora publicaciones científicas y patentes relacionadas con la oncología.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Abra la sección Agentes y cree el primer agente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/174/original/sh_how_to_install_crewai_with_gui_1.png?1753263006&quot; alt=&quot;Agent creation&quot;&gt;
&lt;p&gt;Por ahora, estamos utilizando el modelo &lt;b translate=&quot;no&quot;&gt;llama3.2:latest&lt;/b&gt; previamente descargado, pero en un escenario real, elija el que mejor se adapte a la tarea. Repite el proceso para el resto de agentes y pasa a la creación de tareas.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/175/original/sh_how_to_install_crewai_with_gui_2.png?1753263034&quot; alt=&quot;Task creation&quot;&gt;
&lt;p&gt;Reúna a todos los agentes en una cuadrilla y asígneles la tarea preparada:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/176/original/sh_how_to_install_crewai_with_gui_3.png?1753263057&quot; alt=&quot;Crew creation&quot;&gt;
&lt;p&gt;Active las herramientas necesarias de la lista:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/177/original/sh_how_to_install_crewai_with_gui_4.png?1753263096&quot; alt=&quot;Tools selection&quot;&gt;
&lt;p&gt;Por último, vaya a la página &lt;b translate=&quot;no&quot;&gt;Kickoff!&lt;/b&gt; y haga clic en &lt;b translate=&quot;no&quot;&gt;Run Crew!&lt;/b&gt; Después de algunas iteraciones, el sistema devolverá un resultado, como por ejemplo:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/178/original/sh_how_to_install_crewai_with_gui_5.png?1753263118&quot; alt=&quot;Example CrewAI result&quot;&gt;
&lt;p&gt;Antes de terminar, revisemos la sección &lt;b translate=&quot;no&quot;&gt;Import/export&lt;/b&gt;. Su flujo de trabajo o tripulación puede ser exportado como JSON para transferirlo a otro servidor CrewAI. También puede crear una aplicación de una sola página (SPA) con un solo clic - perfecto para el despliegue de producción:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/179/original/sh_how_to_install_crewai_with_gui_6.png?1753263147&quot; alt=&quot;Import and export settings&quot;&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;CrewAI simplifica significativamente la creación de agentes de IA, permitiendo su integración en cualquier aplicación o su uso independiente. La librería se basa en la idea de inteligencia distribuida, donde cada agente es un experto de dominio, y el equipo combinado supera a un único agente generalista.&lt;/p&gt;
&lt;p&gt;Al estar escrita en Python, CrewAI se integra fácilmente con plataformas y herramientas de ML. Su naturaleza de código abierto permite la ampliación mediante módulos de terceros. La comunicación entre agentes reduce el uso de tokens al distribuir el procesamiento del contexto.&lt;/p&gt;
&lt;p&gt;Como resultado, las tareas complejas se completan de forma más rápida y eficiente. La menor barrera de entrada que ofrece CrewAI Studio amplía el alcance de los agentes de IA y los sistemas multiagente. Y la compatibilidad con modelos locales garantiza un mejor control de los datos confidenciales.&lt;/p&gt;
&lt;p&gt;Véase también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow&quot;&gt;Creador de aplicaciones de inteligencia artificial de código reducido Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/622-c-mo-instalar-n8n&quot;&gt;Cómo instalar N8N&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/623-servidor-mcp-basado-en-n8n&quot;&gt;Servidor MCP basado en N8N&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/180/original/il_how_to_install_crewai_with_gui.png?1753275220"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 23 Jul 2025 15:05:43 +0200</pubDate>
      <guid isPermaLink="false">627</guid>
      <dc:date>2025-07-23 15:05:43 +0200</dc:date>
    </item>
    <item>
      <title>Novedades de Qwen 3</title>
      <link>https://www.leadergpu.es/catalog/624-novedades-de-qwen-3</link>
      <description>&lt;p&gt;La carrera mundial de la IA se acelera. Instituciones de investigación, empresas privadas e incluso naciones enteras compiten ahora por el liderazgo en el ámbito de la IA. A grandes rasgos, esta carrera puede dividirse en varias fases. La primera fase consistió en la creación de IA restringida. Los modelos de redes neuronales existentes, como GPT, MidJourney y AlphaFold, demuestran que esta etapa se ha superado con éxito.&lt;/p&gt;
&lt;p&gt;La siguiente etapa prevé la evolución de la IA hacia la AGI (Inteligencia Artificial General). La AGI debería igualar a la inteligencia humana en la resolución de una amplia gama de tareas, desde escribir historias y realizar cálculos científicos hasta comprender situaciones sociales y aprender de forma autónoma. En el momento de escribir estas líneas, aún no se ha alcanzado este nivel.&lt;/p&gt;
&lt;p&gt;La última etapa en el desarrollo de la IA se denomina ASI (Superinteligencia Artificial). Superaría con creces las capacidades humanas en todos los ámbitos. Esto permitiría desarrollar tecnologías que hoy ni siquiera podemos imaginar y gestionar sistemas globales con una precisión superior a las capacidades humanas. Sin embargo, esto sólo podría hacerse realidad tras décadas (o incluso siglos) de avances continuos.&lt;/p&gt;
&lt;p&gt;Por ello, la mayoría de los participantes en la carrera de la IA se centran en alcanzar la AGI manteniendo el control sobre ella. El desarrollo de la inteligencia artificial está estrechamente ligado a una serie de complejos retos técnicos, éticos y legales. Aun así, las recompensas potenciales superan con creces los costes, razón por la que empresas como Alibaba Group están invirtiendo fuertemente en este campo.&lt;/p&gt;
&lt;p&gt;El lanzamiento de &lt;a href=&quot;https://github.com/QwenLM/Qwen3&quot; target=&quot;_blank&quot;&gt;Qwen 3&lt;/a&gt; marca un hito importante no sólo para las redes neuronales de una empresa, sino también en la escena mundial. En comparación con su predecesor, el modelo introduce varias innovaciones importantes.&lt;/p&gt;
&lt;h2&gt;Características&lt;/h2&gt;
&lt;p&gt;Qwen 2.5 se preentrenó en un conjunto de datos de 18.000 millones de tokens, mientras que el nuevo modelo ha duplicado esa cantidad hasta 36.000 millones de tokens. El mayor conjunto de datos ha mejorado significativamente la precisión del modelo base. Curiosamente, además de los datos de Internet disponibles públicamente recogidos mediante análisis sintáctico, el sistema también se entrenó con documentos PDF. Estos documentos suelen estar bien estructurados y ser densos en conocimientos, lo que ayuda al modelo a dar respuestas más precisas y a comprender mejor las formulaciones complejas.&lt;/p&gt;
&lt;p&gt;Una de las direcciones más prometedoras en el desarrollo de la IA es la construcción de modelos capaces de razonar, que pueden ampliar el contexto de la tarea mediante un proceso iterativo. Por un lado, esto permite resolver problemas de forma más exhaustiva, pero por otro, el razonamiento tiende a ralentizar considerablemente el proceso. Por ello, los desarrolladores de Qwen 3 han introducido dos modos operativos:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Thinking mode.&lt;/b&gt; El modelo construye el contexto paso a paso antes de ofrecer una respuesta final. Esto permite abordar problemas complejos que requieren una comprensión profunda.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Non-thinking mode.&lt;/b&gt; El modelo responde casi instantáneamente, pero puede producir respuestas más superficiales sin un análisis en profundidad.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Este control manual sobre el comportamiento del modelo mejora la experiencia del usuario en el manejo de muchas tareas rutinarias. Reducir el uso del modo de pensamiento también disminuye significativamente la carga de la GPU, lo que permite procesar más tokens en el mismo periodo de tiempo.&lt;/p&gt;
&lt;p&gt;Además de esta elección binaria, también existe un mecanismo de cambio suave. Este comportamiento híbrido permite al modelo adaptarse al contexto utilizando mecanismos internos de ponderación. Si el modelo considera que una tarea es difícil, activará automáticamente el razonamiento o incluso la autoverificación. También puede responder a indicaciones del usuario como &quot;Pensemos paso a paso&quot;.&lt;/p&gt;
&lt;p&gt;Otra mejora significativa es la ampliación del soporte multilingüe. Mientras que Qwen 2.5 sólo admitía 29 idiomas, la versión 3 puede ahora entender y generar texto en 119 idiomas y dialectos. Esto ha mejorado enormemente el seguimiento de instrucciones y la comprensión contextual. Como resultado, Qwen 3 puede utilizarse ahora eficazmente en entornos no anglosajones.&lt;/p&gt;
&lt;p&gt;Además, Qwen 3 está ahora significativamente mejor integrado con los servidores MCP, lo que proporciona al modelo herramientas para profundizar en la resolución de problemas y ejecutar acciones. Ahora puede interactuar con fuentes externas y gestionar directamente procesos complejos.&lt;/p&gt;
&lt;h2&gt;Formación del modelo&lt;/h2&gt;
&lt;h3&gt;Formación previa&lt;/h3&gt;
&lt;p&gt;Un avance tan sustancial no habría sido posible sin un sistema de formación en varias fases. Inicialmente, el modelo se preentrenó con 30B tokens con una longitud de contexto de 4K, lo que le permitió adquirir conocimientos generales y habilidades lingüísticas básicas.&lt;/p&gt;
&lt;p&gt;A continuación se perfeccionó con datos más científicos y estructurados. Durante esta etapa, el modelo también adquirió la capacidad de escribir eficazmente aplicaciones en múltiples lenguajes de programación.&lt;/p&gt;
&lt;p&gt;Por último, se entrenó en un conjunto de datos de alta calidad con contexto ampliado. Como resultado, Qwen 3 admite ahora una longitud de contexto efectiva de 128.000 tokens, lo que equivale aproximadamente a 350 páginas de texto mecanografiado, dependiendo del idioma. Por ejemplo, los idiomas cirílicos suelen tener tokens más cortos debido a la morfología y al uso de prefijos, sufijos, etc.&lt;/p&gt;
&lt;h3&gt;Proceso de razonamiento&lt;/h3&gt;
&lt;p&gt;Construir modelos capaces de razonar es un proceso fascinante pero laborioso que combina varias técnicas existentes destinadas a simular el pensamiento humano. Basándonos en la información pública disponible, podemos suponer que el entrenamiento del razonamiento de Qwen 3 implicó cuatro etapas principales:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Cold start for long chains of thought.&lt;/b&gt; Entrenamiento del modelo para dividir los problemas en múltiples pasos sin adaptación previa. Esto le ayuda a aprender el pensamiento iterativo y a desarrollar una capa básica de habilidades de razonamiento.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Reinforcement learning based on reasoning.&lt;/b&gt; En esta etapa, las recompensas dependen no sólo de la respuesta final, sino también de lo bien que el modelo construya cadenas de razonamiento lógicas, interpretables y estructuradas. También se evalúa la ausencia de errores y alucinaciones.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Merging reasoning modes.&lt;/b&gt; Los seres humanos suelen basarse en dos estilos de pensamiento: rápido (intuitivo) y lento (analítico). En función del tipo de tarea, el modelo neuronal debe aprender tanto a alternar entre estos estilos como a integrarlos. Para ello se suelen utilizar ejemplos que mezclan ambos estilos o fichas especiales que indican qué estilo aplicar.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;General reinforcement learning.&lt;/b&gt; Esta etapa final se asemeja a un entorno de caja de arena en el que el modelo aprende a interactuar con herramientas, realizar tareas de varios pasos y desarrollar un comportamiento adaptativo. Aquí también se adapta a las preferencias del usuario.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Qwen 3 es un hito importante para Alibaba Group. La calidad de su formación y su metodología lo convierten en un serio competidor frente a empresas consolidadas como OpenAI y Anthropic. Las mejoras con respecto a la versión anterior son sustanciales.&lt;/p&gt;
&lt;p&gt;Una ventaja añadida es su naturaleza de código abierto, con la base de código disponible públicamente en GitHub bajo la licencia Apache 2.0.&lt;/p&gt;
&lt;p&gt;Un mayor desarrollo de la familia de modelos Qwen contribuirá a reforzar su posición en el panorama mundial de la IA y a reducir la brecha con los modelos comerciales de código cerrado. Y todos los logros actuales son, de un modo u otro, pasos hacia el progreso de la humanidad en la construcción de AGI.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/578-tu-propio-qwen-usando-hf&quot;&gt;Tu propio Qwen usando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/579-qwen-2-vs-llama-3&quot;&gt;Qwen 2 vs Llama 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/168/original/il_whats_new_in_qwen_3.png?1752240562"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 14 Jul 2025 08:05:08 +0200</pubDate>
      <guid isPermaLink="false">624</guid>
      <dc:date>2025-07-14 08:05:08 +0200</dc:date>
    </item>
    <item>
      <title>Servidor MCP basado en N8N</title>
      <link>https://www.leadergpu.es/catalog/623-servidor-mcp-basado-en-n8n</link>
      <description>&lt;p&gt;El desarrollo de las redes neuronales generativas se ha acelerado considerablemente en los últimos años. Se han vuelto notablemente más rápidas y precisas en sus respuestas y han aprendido a razonar. Sin embargo, sus capacidades siguen estando fundamentalmente limitadas por su arquitectura. Por ejemplo, todas las LLM existentes en el momento de escribir estas líneas tienen una fecha límite de conocimiento. Esto significa que, cada día que pasa, es más probable que un LLM de este tipo produzca respuestas incorrectas, simplemente porque carece de información sobre hechos ocurridos después de esa fecha.&lt;/p&gt;
&lt;p&gt;Esta limitación obliga a reentrenar el modelo por completo con datos más recientes, lo que resulta caro y lleva mucho tiempo. Pero hay otra manera. Si se permite al modelo interactuar con el mundo exterior, puede encontrar y actualizar de forma independiente la información solicitada durante una conversación con el usuario, sin necesidad de volver a entrenarlo.&lt;/p&gt;
&lt;p&gt;Así funciona, a grandes rasgos, el mecanismo RAG (Retrieval Augmented Generation). Al responder a una pregunta, el modelo consulta primero una base de datos vectorial preparada de antemano y, si encuentra información pertinente, la incorpora a la pregunta. Así, explicando y actualizando la BD vectorial, la calidad de las respuestas LLM puede mejorar mucho.&lt;/p&gt;
&lt;p&gt;Pero hay otra forma aún más interesante de incorporar un contexto actualizado a las instrucciones. Se llama MCP, que significa Protocolo de Contexto de Modelo. Fue desarrollado originalmente por Anthropic para su modelo Claude. El momento clave llegó cuando el código fuente de MCP se hizo de código abierto, lo que permitió a miles de investigadores de IA construir servidores personalizados para diversos fines.&lt;/p&gt;
&lt;p&gt;La esencia de MCP es dar a un modelo de red neuronal acceso a herramientas con las que pueda actualizar de forma independiente sus conocimientos y realizar diversas acciones para resolver eficazmente tareas dadas. El propio modelo decide qué herramienta utilizar y si es adecuada en cada situación.&lt;/p&gt;
&lt;p&gt;El soporte para MCP no tardó en aparecer en varios IDE como Cursor, así como en plataformas de automatización como N8N. Esta última es especialmente intuitiva, ya que los flujos de trabajo se crean visualmente, lo que facilita su comprensión. En N8N, puedes conectarte a un servidor MCP existente o crear el tuyo propio. Además, puede incluso organizar una conexión directa dentro de un mismo flujo de trabajo. Pero vayamos por partes.&lt;/p&gt;
&lt;h2&gt;Creación de un agente AI simple&lt;/h2&gt;
&lt;p&gt;Antes de empezar, asegúrate de que se cumple el requisito principal, tienes un LLM listo para las conexiones. Esto podría ser un modelo que se ejecuta localmente usando Ollama o un servicio externo como ChatGPT de OpenAI. En el primer caso, necesitarás conocer la dirección de la API local de Ollama (y opcionalmente su autenticación), y en el segundo caso, necesitarás una cuenta activa de OpenAI con suficientes créditos.&lt;/p&gt;
&lt;p&gt;La construcción de un agente comienza con el nodo clave AI Agent. Como mínimo, debe estar vinculado con otros dos nodos, uno para actuar como disparador, y el otro para conectarse al LLM. Si no especificas un disparador, el sistema creará uno automáticamente, disparando el agente al recibir cualquier mensaje en el chat interno:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/158/original/sh_mcp_server_based_on_n8n_1.png?1751458377&quot; alt=&quot;AI Agent only&quot;&gt;
&lt;p&gt;La única pieza que falta es el LLM. Por ejemplo, puede utilizar nuestra &lt;a href=&quot;https://www.leadergpu.es/catalog/584-open-webui-todo-en-uno&quot;&gt;Open WebUI: Todo en uno&lt;/a&gt; para configurar Ollama con una interfaz web. El único cambio necesario es que los contenedores para N8N y Open WebUI deben estar en la misma red. Por ejemplo, si el contenedor N8N está en una red llamada &lt;b translate=&quot;no&quot;&gt;web&lt;/b&gt;, entonces en el comando de despliegue para Open WebUI, sustituya &lt;b translate=&quot;no&quot;&gt;--network=host&lt;/b&gt; por &lt;b translate=&quot;no&quot;&gt;--network=web&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;En algunos casos, también tendrá que configurar manualmente la variable de entorno &lt;b translate=&quot;no&quot;&gt;OLLAMA_HOST&lt;/b&gt;, por ejemplo: &lt;b translate=&quot;no&quot;&gt;-e OLLAMA_HOST=0.0.0.0&lt;/b&gt;. Esto permite conexiones a la API de Ollama no sólo desde localhost sino también desde otros contenedores. Supongamos que Ollama se despliega en un contenedor llamado &lt;b translate=&quot;no&quot;&gt;ollama-webui&lt;/b&gt;. Entonces la URL base para conectarse desde N8N sería:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;http://open-webui:11434&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Antes de conectar el nodo Ollama Chat Model, no olvide descargar al menos un modelo. Puede hacerlo desde la interfaz web o a través de la CLI del contenedor. El siguiente comando descargará el modelo Llama 3.1 con 8 mil millones de parámetros:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ollama pull llama3.1:8b&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez descargado e instalado, el modelo aparecerá automáticamente en la lista de disponibles:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/159/original/sh_mcp_server_based_on_n8n_2.png?1751458416&quot; alt=&quot;Model select&quot;&gt;
&lt;p&gt;Un flujo de trabajo mínimo de un Agente AI tiene este aspecto:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/160/original/sh_mcp_server_based_on_n8n_3.png?1751458451&quot; alt=&quot;Minimal working AI Agent&quot;&gt;
&lt;p&gt;En esta forma, el agente sólo puede utilizar un modelo y no almacena datos de entrada ni mejora las peticiones utilizando herramientas externas. Así que tiene sentido añadir al menos el nodo &lt;b translate=&quot;no&quot;&gt;Simple Memory&lt;/b&gt;. Para cargas ligeras, es suficiente con almacenar peticiones y respuestas.&lt;/p&gt;
&lt;p&gt;Pero volvamos a MCP. Para empezar, crea un servidor utilizando el nodo especial &lt;b translate=&quot;no&quot;&gt;MCP Server Trigger&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/161/original/sh_mcp_server_based_on_n8n_4.png?1751458483&quot; alt=&quot;MCP Server Trigger only&quot;&gt;
&lt;p&gt;Este nodo es totalmente autónomo y no requiere activación externa. Se activa únicamente mediante una solicitud externa entrante a su dirección webhook. Por defecto, hay dos URL: &lt;b translate=&quot;no&quot;&gt;Test URL&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;Production URL&lt;/b&gt;. La primera se utiliza durante el desarrollo, mientras que la segunda sólo funciona cuando el flujo de trabajo se guarda y se activa.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/162/original/sh_mcp_server_based_on_n8n_5.png?1751458569&quot; alt=&quot;MCP Server Trigger settings&quot;&gt;
&lt;p&gt;El disparador es inútil por sí solo, necesita herramientas conectadas. Por ejemplo, conectemos una de las herramientas más sencillas: una calculadora. Esperará una expresión matemática como entrada. Los nodos se comunican usando JSON plano, así que para que la calculadora calcule 2 + 2, la entrada debería ser:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;[
  {
    &quot;query&quot;: {
      &quot;input&quot;: &quot;2 + 2&quot;
    }
  }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los LLM pueden generar fácilmente este tipo de JSON a partir de descripciones de tareas en texto plano y enviarlas al nodo, que realiza los cálculos y devuelve el resultado. Conectemos el cliente MCP al agente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/163/original/sh_mcp_server_based_on_n8n_6.png?1751458623&quot; alt=&quot;AI Agent with tools&quot;&gt;
&lt;p&gt;Cabe destacar que este nodo no necesita conexiones adicionales. En su configuración, basta con especificar la dirección del endpoint al que enviará los datos desde el Agente AI. En nuestro ejemplo, esta dirección apunta al contenedor llamado &lt;b translate=&quot;no&quot;&gt;n8n&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/164/original/sh_mcp_server_based_on_n8n_7.png?1751458735&quot; alt=&quot;MCP Client Settings&quot;&gt;
&lt;p&gt;Por supuesto, en esta etapa puede especificar cualquier dirección de servidor MCP externo disponible para usted. Pero para este artículo, utilizaremos una instancia local que se ejecuta dentro de N8N. Veamos cómo se comportan el cliente y el servidor cuando se le pide al Agente AI que realice una simple operación matemática:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/165/original/sh_mcp_server_based_on_n8n_8.png?1751458808&quot; alt=&quot;MCP Client calculations example&quot;&gt;
&lt;p&gt;Al recibir la petición, el Agente AI:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Busca en la Memoria Simple para ver si el usuario preguntó esto antes o si algún contexto puede ser reutilizado.&lt;/li&gt;
    &lt;li&gt;Enviará la petición al LLM, que descompondrá correctamente la expresión matemática y preparará el JSON correspondiente.&lt;/li&gt;
    &lt;li&gt;Envía el JSON a la herramienta Calculadora y recibe el resultado.&lt;/li&gt;
    &lt;li&gt;Utilizar el LLM para generar la respuesta final e insertar el resultado en la respuesta.&lt;/li&gt;
    &lt;li&gt;Almacenar el resultado en la memoria simple.&lt;/li&gt;
    &lt;li&gt;Emitir el mensaje en el chat.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/166/original/sh_mcp_server_based_on_n8n_9.png?1751458859&quot; alt=&quot;MCP Client calculations JSON&quot;&gt;
&lt;p&gt;De forma similar, los agentes pueden trabajar con otras herramientas en el servidor MCP. En lugar de Simple Memory, se pueden utilizar opciones más avanzadas como MongoDB, Postgres, Redis, o incluso algo como Zep. Por supuesto, estos requieren un mantenimiento mínimo de la base de datos, pero el rendimiento general aumentará significativamente.&lt;/p&gt;
&lt;p&gt;También hay muchas más opciones para la selección de herramientas. El nodo &lt;b translate=&quot;no&quot;&gt;MCP Server Trigger&lt;/b&gt; admite más de 200 herramientas. Puede tratarse de cualquier cosa, desde simples solicitudes HTTP hasta integraciones prediseñadas con servicios públicos de Internet. Dentro de un mismo flujo de trabajo, puedes crear tanto un servidor como un cliente. Una cosa importante a tener en cuenta: estos nodos no se pueden conectar visualmente en el editor, y ese es el comportamiento esperado:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/167/original/sh_mcp_server_based_on_n8n_10.png?1751458939&quot; alt=&quot;MCP Server and Client with tools&quot;&gt;
&lt;p&gt;En lugar del desencadenante predeterminado, puede utilizar otras opciones, como la recepción de un mensaje a través de un mensajero, el envío de un formulario de un sitio web o la ejecución en un horario. Esto le permite configurar flujos de trabajo que reaccionan a eventos o realizan operaciones rutinarias como exportaciones diarias de datos de Google Ads.&lt;/p&gt;
&lt;p&gt;Y ahí no acaban las posibilidades de los agentes de IA. Puedes crear sistemas multiagente utilizando diferentes modelos de redes neuronales que trabajen juntos para resolver tareas con mayor precisión, teniendo en cuenta muchos más factores influyentes en el proceso.&lt;/p&gt;
&lt;p&gt;Véase también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/622-c-mo-instalar-n8n&quot;&gt;Cómo instalar N8N&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow&quot;&gt;Creador de aplicaciones de inteligencia artificial de código reducido Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/602-c-mo-supervisar-la-aplicaci-n-langflow&quot;&gt;Cómo supervisar la aplicación LangFlow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/157/original/il_mcp_server_based_on_n8n.png?1751457996"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 02 Jul 2025 15:28:18 +0200</pubDate>
      <guid isPermaLink="false">623</guid>
      <dc:date>2025-07-02 15:28:18 +0200</dc:date>
    </item>
    <item>
      <title>Cómo instalar N8N</title>
      <link>https://www.leadergpu.es/catalog/622-c-mo-instalar-n8n</link>
      <description>&lt;p&gt;Los agentes de IA en 2025 siguen siendo uno de los enfoques más prometedores para resolver tareas complejas utilizando grandes modelos lingüísticos. Estos agentes son autónomos y capaces de seleccionar por sí mismos diversas herramientas para realizar las tareas asignadas. Este enfoque permite obtener resultados con menor intervención humana y mayor calidad. También abre oportunidades para descubrir formas más originales y eficaces de abordar los problemas.&lt;/p&gt;
&lt;p&gt;En lugar de limitarse a formular una tarea, se ordena a la red neuronal que la resuelva de forma autónoma, en función de los recursos que se le asignen. Sin embargo, para que este esquema funcione, tiene que haber un mecanismo que conecte las interfaces de las redes neuronales con diversas herramientas, ya sea una búsqueda en la web o una base de datos vectorial para almacenar resultados intermedios.&lt;/p&gt;
&lt;p&gt;n8n es una plataforma de automatización que admite la integración con diversas redes neuronales y servicios públicos. Los usuarios pueden diseñar visualmente cómo se procesarán los datos y qué resultado final debe obtenerse. A diferencia de las soluciones clásicas sin código, n8n permite incluir código arbitrario en cualquier fase del proceso, lo que resulta especialmente útil cuando la funcionalidad incorporada no es suficiente.&lt;/p&gt;
&lt;p&gt;El resultado es un sistema que combina la sencillez del no-code con la flexibilidad de la programación tradicional. Sin embargo, para entenderlo completamente, todavía necesitarás pasar algún tiempo explorando y revisando ejemplos de flujos de trabajo para una mejor comprensión. En este artículo, le mostraremos cómo implementar n8n en servidores LeaderGPU.&lt;/p&gt;
&lt;h2&gt;Preparación del servidor&lt;/h2&gt;
&lt;h3&gt;Actualizar el sistema&lt;/h3&gt;
&lt;p&gt;Actualice la lista de paquetes y actualice todos los paquetes instalados:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala automáticamente el controlador NVIDIA® recomendado (propietario) o utiliza nuestra guía paso a paso &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot; target=_blank&gt;Instalar controladores NVIDIA® en Linux&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora reinicia el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Instalar Docker&lt;/h3&gt;
&lt;p&gt;Puedes usar el script de instalación oficial:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añadamos la clave GPG y el repositorio de NVIDIA® container toolkit para la integración en Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualiza la lista de paquetes e instala NVIDIA® container toolkit:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicia Docker para aplicar los cambios y activar el kit de herramientas instalado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Instalar n8n&lt;/h3&gt;
&lt;p&gt;Para que el sistema pueda almacenar datos, es necesario crear un volumen antes de lanzar el contenedor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker volume create n8n_data&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, vamos a lanzar un contenedor que abrirá el puerto 5678 para conexiones externas y montará el volumen &lt;b translate=&quot;no&quot;&gt;n8n_data&lt;/b&gt; creado en el directorio &lt;b translate=&quot;no&quot;&gt;/home/node/.n8n&lt;/b&gt; dentro del contenedor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La primera vez que lances la aplicación, puede que te sorprenda el siguiente mensaje de error:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/152/original/sh_how_to_install_n8n_1.png?1750667132&quot; alt=&quot;TLS-error N8N&quot;&gt;
&lt;p&gt;Esto no es exactamente un error, es más bien una advertencia sobre cómo configurar correctamente el sistema para el acceso. El problema es que, por defecto, el sistema no tiene un certificado TLS/HTTPS. Sin él, la conexión no será segura. Así que tienes tres opciones:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Connect your own certificate&lt;/b&gt;. Puedes hacerlo especificando las rutas a los archivos de certificado mediante variables de entorno, o configurando un servidor proxy inverso.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Create an SSH tunnel and forward port 5678&lt;/b&gt; a localhost en el ordenador desde el que te estás conectando. De esta forma, obtendrás inmediatamente una conexión personal segura. Sin embargo, nadie más podrá acceder externamente al servidor.&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;Bypass the warning&lt;/b&gt;. Si se trata de un servidor de pruebas que no está pensado para su uso en producción y no te preocupa la seguridad, puedes desactivar la advertencia estableciendo la variable de entorno &lt;b translate=&quot;no&quot;&gt;N8N_SECURE_COOKIE&lt;/b&gt; en &lt;b translate=&quot;no&quot;&gt;FALSE&lt;/b&gt;. Esto se desaconseja totalmente, ya que hace que el servidor sea vulnerable a posibles ataques. Aún así, puede ser aceptable en escenarios específicos.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Este artículo explorará cada opción en detalle para que puedas elegir la correcta.&lt;/p&gt;
&lt;h2&gt;Conexión al servidor&lt;/h2&gt;
&lt;p&gt;Si aún no dispone de un certificado SSL, le recomendamos que solicite uno a &lt;a href=&quot;https://www.leaderssl.com/&quot; target=&quot;_blank&quot;&gt;&lt;/a&gt;LeaderSSL. Se puede utilizar para cualquier sitio web, tienda en línea o para verificar la autenticidad de un correo electrónico.&lt;/p&gt;
&lt;h3&gt;Uso de variables de entorno&lt;/h3&gt;
&lt;p&gt;La forma más sencilla de configurar HTTPS es cargar el certificado en el servidor y especificarlo mediante variables de entorno Docker. Comience por crear un directorio para los archivos del certificado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir ~/n8n-certs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puedes subir estos archivos (normalmente cert.crt y privkey.key) a este directorio usando cualquier método. Para obtener información más detallada, consulte:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/495-compartir-archivos-desde-windows&quot;&gt;Compartir archivos desde Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/494-compartir-archivos-desde-linux&quot;&gt;Compartir archivos desde Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/496-compartir-archivos-desde-macos&quot;&gt;Compartir archivos desde macOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ahora, vamos a lanzar el contenedor utilizando un comando completo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d \
--name n8n \
-p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-v ~/n8n-certs:/certs \
-e N8N_PROTOCOL=https \
-e N8N_SSL_CERT=&quot;/certs/cert.crt&quot; \
-e N8N_SSL_KEY=&quot;/certs/privkey.key&quot; \
docker.n8n.io/n8nio/n8n&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aquí tienes un desglose de cada argumento:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;sudo docker run -d&lt;/b&gt; lanza el contenedor Docker en modo demonio (en segundo plano)&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--name n8n&lt;/b&gt; asigna un nombre al contenedor &lt;b translate=&quot;no&quot;&gt;n8n&lt;/b&gt;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p 5678:5678&lt;/b&gt; reenvía el puerto &lt;b translate=&quot;no&quot;&gt;5678&lt;/b&gt; al contenedor&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v n8n_data:/home/node/.n8n&lt;/b&gt; crea y monta un volumen llamado &lt;b translate=&quot;no&quot;&gt;n8n_data&lt;/b&gt; en el directorio oculto &lt;b translate=&quot;no&quot;&gt;/home/node/.n8n&lt;/b&gt; dentro del contenedor&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v ~/n8n-certs:/certs&lt;/b&gt; monta el directorio de certificados&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-e N8N_PROTOCOL=https&lt;/b&gt; obliga a N8N a utilizar el protocolo HTTPS&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-e N8N_SSL_CERT=&quot;/certs/cert.crt&quot;&lt;/b&gt; establece la ruta al archivo del certificado&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-e N8N_SSL_KEY=&quot;/certs/privkey.key&quot;&lt;/b&gt; establece la ruta a la clave del certificado&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;docker.n8n.io/n8nio/n8n&lt;/b&gt; fuente de la imagen del contenedor&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Traefik&lt;/h3&gt;
&lt;p&gt;Una configuración ligeramente más compleja pero flexible implica el uso del servidor proxy inverso Traefik para asegurar la conexión a N8N. El archivo de configuración se basa en el método oficial especificado en la documentación. En primer lugar, instale la herramienta &lt;b translate=&quot;no&quot;&gt;docker-compose&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install docker-compose&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Desplegaremos Traefik y N8N juntos, y necesitan estar en la misma red. Crea una red llamada &lt;b translate=&quot;no&quot;&gt;web&lt;/b&gt;.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker network create web&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, crea un archivo &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt; para definir y ejecutar ambos contenedores:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;services:
  traefik:
    image: &quot;traefik&quot;
    container_name: &quot;proxy&quot;
    restart: always
    command:
      - &quot;--api.insecure=true&quot;
      - &quot;--providers.docker=true&quot;
      - &quot;--providers.docker.exposedbydefault=false&quot;
      - &quot;--entrypoints.web.address=:80&quot;
      - &quot;--entrypoints.web.http.redirections.entryPoint.to=websecure&quot;
      - &quot;--entrypoints.web.http.redirections.entrypoint.scheme=https&quot;
      - &quot;--entrypoints.websecure.address=:443&quot;
      - &quot;--certificatesresolvers.mytlschallenge.acme.tlschallenge=true&quot;
      - &quot;--certificatesresolvers.mytlschallenge.acme.email=${SSL_EMAIL}&quot;
      - &quot;--certificatesresolvers.mytlschallenge.acme.storage=/letsencrypt/acme.json&quot;
    ports:
      - &quot;80:80&quot;
      - &quot;443:443&quot;
    volumes:
      - traefik_data:/letsencrypt
      - /var/run/docker.sock:/var/run/docker.sock:ro
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: &quot;n8n&quot;
    restart: always
    ports:
      - &quot;127.0.0.1:5678:5678&quot;
    labels:
      - traefik.enable=true
      - traefik.http.routers.n8n.rule=Host(`${SUBDOMAIN}.${DOMAIN_NAME}`)
      - traefik.http.routers.n8n.tls=true
      - traefik.http.routers.n8n.entrypoints=web,websecure
      - traefik.http.routers.n8n.tls.certresolver=mytlschallenge
      - traefik.http.middlewares.n8n.headers.SSLRedirect=true
      - traefik.http.middlewares.n8n.headers.STSSeconds=315360000
      - traefik.http.middlewares.n8n.headers.browserXSSFilter=true
      - traefik.http.middlewares.n8n.headers.contentTypeNosniff=true
      - traefik.http.middlewares.n8n.headers.forceSTSHeader=true
      - traefik.http.middlewares.n8n.headers.SSLHost=${DOMAIN_NAME}
      - traefik.http.middlewares.n8n.headers.STSIncludeSubdomains=true
      - traefik.http.middlewares.n8n.headers.STSPreload=true
      - traefik.http.routers.n8n.middlewares=n8n@docker
    environment:
      - N8N_HOST=${SUBDOMAIN}.${DOMAIN_NAME}
      - N8N_PORT=5678
      - N8N_PROTOCOL=https
      - NODE_ENV=production
      - WEBHOOK_URL=https://${SUBDOMAIN}.${DOMAIN_NAME}/
      - GENERIC_TIMEZONE=${GENERIC_TIMEZONE}
    volumes:
      - n8n_data:/home/node/.n8n
      - ./local-files:/files
    networks:
      - web

volumes:
  n8n_data:
  traefik_data:

networks:
  web:
    name: web&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Además del archivo &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt;, crearemos otro archivo llamado &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt;. Este archivo contendrá variables como el nombre de dominio y la dirección de correo electrónico utilizados para solicitar un certificado SSL a Let&#39;s Encrypt. Si alguna vez necesitamos cambiar algo, como el nombre de dominio, sólo tendremos que actualizarlo en este archivo y luego volver a crear el contenedor.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano .env&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;DOMAIN_NAME=example.com
SUBDOMAIN=n8n
GENERIC_TIMEZONE=Europe/Amsterdam
SSL_EMAIL=user@example.com&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por último, despliega ambos contenedores:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker-compose up -d&lt;/code&gt;&lt;/pre&gt;
Ahora, N8N está disponible aquí: &lt;b translate=&quot;no&quot;&gt;https://n8n.example.com&lt;/b&gt;.&lt;h3&gt;Gestor de proxy Nginx&lt;/h3&gt;
&lt;p&gt;A diferencia de Traefik, que se configura a través de archivos, Nginx Proxy Manager ofrece una interfaz web fácil de usar. Sin embargo, no detecta servicios dinámicamente, sino que hay que añadirlos manualmente. Aún así, funciona bien para servicios estáticos como N8N.&lt;/p&gt;
&lt;p&gt;Crea otro archivo &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt; en un directorio separado con el siguiente contenido:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;services:
  app:
    image: &#39;jc21/nginx-proxy-manager:latest&#39;
    container_name: proxy
    restart: unless-stopped
    ports:
      - &#39;80:80&#39;
      - &#39;443:443&#39;
      - &#39;81:81&#39;
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - web

  n8n:
    image: docker.n8n.io/n8nio/n8n
    container_name: n8n
    restart: unless-stopped
    environment:
      - N8N_HOST=n8n.example.com
      - N8N_PORT=5678
      - WEBHOOK_URL=https://n8n.example.com/
      - N8N_PROTOCOL=http
    volumes:
      - n8n_data:/home/node/.n8n
    networks:
      - web

volumes:
  n8n_data:

networks:
  web:
    external: true&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Desplegar con:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker-compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, abra la interfaz web en: &lt;b translate=&quot;no&quot;&gt;http://your_hostname_or_ip:81&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Nombre de usuario: &lt;b translate=&quot;no&quot;&gt;admin@example.com&lt;/b&gt;&lt;/li&gt;
    &lt;li&gt;Contraseña: &lt;b translate=&quot;no&quot;&gt;changeme&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Se te pedirá que actualices tus credenciales. A continuación, abra &lt;b translate=&quot;no&quot;&gt;Hosts → Proxy Hosts → Add Proxy Host&lt;/b&gt;, introduzca su nombre de dominio (por ejemplo, &lt;b translate=&quot;no&quot;&gt;n8n.example.com&lt;/b&gt;):&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/153/original/sh_how_to_install_n8n_2.png?1750667229&quot; alt=&quot;Add domain N8N&quot;&gt;
&lt;p&gt;Rellena los campos necesarios:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Establezca &lt;b translate=&quot;no&quot;&gt;Destination/IP&lt;/b&gt; en &lt;b translate=&quot;no&quot;&gt;n8n&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Establezca &lt;b translate=&quot;no&quot;&gt;Port&lt;/b&gt; en &lt;b translate=&quot;no&quot;&gt;5678&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;En la pestaña &lt;b translate=&quot;no&quot;&gt;SSL&lt;/b&gt;, seleccione &lt;b translate=&quot;no&quot;&gt;Request a new SSL certificate with Let’s Encrypt&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Introduzca su correo electrónico y acepte las condiciones.&lt;/li&gt;
    &lt;li&gt;Haga clic en &lt;b&gt;Websockets support&lt;/b&gt;.&lt;/li&gt;
    &lt;li&gt;Opcionalmente, haga clic en &lt;b translate=&quot;no&quot;&gt;Force SSL&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Tras pulsar el botón &lt;b translate=&quot;no&quot;&gt;Save&lt;/b&gt;, se solicitará e instalará el certificado:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/154/original/sh_how_to_install_n8n_3.png?1750667362&quot; alt=&quot;Nginx Proxy Manager ready&quot;&gt;
&lt;p&gt;Una vez hecho esto, al abrir su dominio accederá a la interfaz N8N.&lt;/p&gt;
&lt;h3&gt;Túnel SSH&lt;/h3&gt;
&lt;p&gt;Si no necesita la accesibilidad externa de N8N, puede reenviar el puerto 5678 a través de SSH. Esto encripta todo el tráfico, y N8N estará disponible en &lt;b translate=&quot;no&quot;&gt;http://localhost:5678/&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nota: Esta configuración no funcionará para integraciones con servicios externos como mensajeros que requieren acceso HTTPS público.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;La forma más sencilla de redireccionar el puerto es con el popular cliente SSH &lt;a href=&quot;https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html&quot; target=&quot;_blank&quot;&gt;PuTTY&lt;/a&gt;. Una vez instalado, abra &lt;b translate=&quot;no&quot;&gt;SSH → Tunnels&lt;/b&gt; y configure &lt;b translate=&quot;no&quot;&gt;Source port - 5678&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;Destination&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;localhost:5678&lt;/b&gt;. A continuación, haga clic en &lt;b translate=&quot;no&quot;&gt;Add&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/155/original/sh_how_to_install_n8n_4.png?1750667446&quot; alt=&quot;PuTTY port forwarding&quot;&gt;
&lt;p&gt;Vuelva a &lt;b translate=&quot;no&quot;&gt;Session&lt;/b&gt;, introduzca la IP de su servidor y haga clic en &lt;b translate=&quot;no&quot;&gt;Open&lt;/b&gt;. Una vez autenticado, el túnel estará activo. Abra &lt;b translate=&quot;no&quot;&gt;http://localhost:5678&lt;/b&gt; en un navegador para acceder a N8N.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Nota: La conexión sólo funciona mientras la sesión SSH está activa. Cerrar PuTTY terminará el túnel.&lt;/i&gt;&lt;/p&gt;
&lt;h3&gt;Pasar por alto&lt;/h3&gt;
&lt;p&gt;No se recomienda utilizar este método en redes públicas. Si lanza el contenedor con la variable de entorno &lt;b translate=&quot;no&quot;&gt;N8N_SECURE_COOKIE=false&lt;/b&gt;, la advertencia desaparecerá, y obtendrá acceso a través de HTTP:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d --name n8n -p 5678:5678 -e N8N_SECURE_COOKIE=false -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Warning:&lt;/b&gt; esto expone el panel de administración de N8N a través de HTTP sin cifrar, haciéndolo vulnerable a ataques MITM (Man-In-The-Middle) y potencialmente permite a un atacante tomar completamente el control de su servidor.&lt;/p&gt;
&lt;p&gt;Véase también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/584-open-webui-todo-en-uno&quot;&gt;Open WebUI: Todo en uno&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow&quot;&gt;Creador de aplicaciones de inteligencia artificial de código reducido Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/602-c-mo-supervisar-la-aplicaci-n-langflow&quot;&gt;Cómo supervisar la aplicación LangFlow&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/151/original/il_how_to_install_n8n.png?1750667003"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 23 Jun 2025 14:30:26 +0200</pubDate>
      <guid isPermaLink="false">622</guid>
      <dc:date>2025-06-23 14:30:26 +0200</dc:date>
    </item>
    <item>
      <title>Triton™ Inference Server</title>
      <link>https://www.leadergpu.es/catalog/614-triton-inference-server</link>
      <description>&lt;p&gt;Los requisitos empresariales pueden variar, pero todos comparten un principio básico: los sistemas deben funcionar con rapidez y ofrecer la máxima calidad posible. Cuando se trata de la inferencia de redes neuronales, el uso eficiente de los recursos computacionales se convierte en algo crucial. Cualquier infrautilización de la GPU o tiempo de inactividad se traduce directamente en pérdidas económicas.&lt;/p&gt;
&lt;p&gt;Consideremos un mercado como ejemplo. Estas plataformas alojan numerosos productos, cada uno con múltiples atributos: descripciones de texto, especificaciones técnicas, categorías y contenido multimedia como fotos y vídeos. Todo el contenido requiere moderación para mantener unas condiciones justas para los vendedores y evitar que aparezcan en la plataforma productos prohibidos o contenidos ilegales.&lt;/p&gt;
&lt;p&gt;Aunque la moderación manual es posible, resulta lenta e ineficaz. En un entorno tan competitivo como el actual, los vendedores necesitan ampliar su gama de productos con rapidez: cuanto más rápido aparezcan los artículos en el mercado, más posibilidades tendrán de ser descubiertos y comprados. La moderación manual también es costosa y propensa a errores humanos, lo que puede permitir la publicación de contenidos inapropiados.&lt;/p&gt;
&lt;p&gt;La moderación automática mediante redes neuronales especialmente entrenadas ofrece una solución. Este enfoque aporta múltiples ventajas: reduce sustancialmente los costes de moderación al tiempo que suele mejorar la calidad. Las redes neuronales procesan los contenidos mucho más rápido que los humanos, lo que permite a los vendedores superar la fase de moderación con mayor rapidez, especialmente cuando se manejan grandes volúmenes de productos.&lt;/p&gt;
&lt;p&gt;Sin embargo, este método tiene sus dificultades. La moderación automatizada requiere desarrollar y entrenar modelos de redes neuronales, lo que exige personal cualificado y recursos informáticos considerables. Sin embargo, las ventajas se aprecian rápidamente tras la implantación inicial. La implantación automatizada de modelos puede agilizar considerablemente las operaciones en curso.&lt;/p&gt;
&lt;h2&gt;Inferencia&lt;/h2&gt;
&lt;p&gt;Supongamos que hemos resuelto los procedimientos de aprendizaje automático. El siguiente paso es determinar cómo ejecutar la inferencia del modelo en un servidor alquilado. Para un único modelo, normalmente se elige una herramienta que funcione bien con el marco específico en el que se creó. Sin embargo, cuando se trata de múltiples modelos creados en diferentes marcos, tiene dos opciones.&lt;/p&gt;
&lt;p&gt;Puedes convertir todos los modelos a un único formato, o elegir una herramienta que soporte múltiples marcos. Triton™ Inference Server encaja perfectamente con el segundo enfoque. Soporta los siguientes backends:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;TensorRT™&lt;/li&gt;
    &lt;li&gt;TensorRT-LLM&lt;/li&gt;
    &lt;li&gt;vLLM&lt;/li&gt;
    &lt;li&gt;Python&lt;/li&gt;
    &lt;li&gt;PyTorch (LibTorch)&lt;/li&gt;
    &lt;li&gt;ONNX Runtime&lt;/li&gt;
    &lt;li&gt;Tensorflow&lt;/li&gt;
    &lt;li&gt;FIL&lt;/li&gt;
    &lt;li&gt;DALI&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Además, puede utilizar cualquier aplicación como backend. Por ejemplo, si necesitas post-procesamiento con una aplicación C/C++, puedes integrarla sin problemas.&lt;/p&gt;
&lt;h2&gt;Escalado&lt;/h2&gt;
&lt;p&gt;Triton™ Inference Server gestiona eficientemente los recursos computacionales de un único servidor ejecutando múltiples modelos simultáneamente y distribuyendo la carga de trabajo entre las GPUs.&lt;/p&gt;
&lt;p&gt;La instalación se realiza a través de un contenedor Docker. Los ingenieros de DevOps pueden controlar la asignación de GPU al inicio, eligiendo utilizar todas las GPU o limitar su número. Aunque el software no gestiona directamente el escalado horizontal, se pueden utilizar balanceadores de carga tradicionales como HAproxy o desplegar aplicaciones en un clúster Kubernetes con este fin.&lt;/p&gt;
&lt;h2&gt;Preparación del sistema&lt;/h2&gt;
&lt;p&gt;Para configurar Triton™ en un servidor LeaderGPU con Ubuntu 22.04, primero actualiza el sistema utilizando este comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En primer lugar, instala los controladores NVIDIA® utilizando el script de autoinstalación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicia el servidor para aplicar los cambios:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez que el servidor vuelva a estar en línea, instale Docker utilizando el siguiente script de instalación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como Docker no puede pasar GPUs a contenedores por defecto, necesitarás el NVIDIA® Container Toolkit. Añade el repositorio de NVIDIA® descargando y registrando su clave GPG:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualiza la caché de paquetes e instala el kit de herramientas:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicia Docker para habilitar las nuevas capacidades:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El sistema operativo ya está listo para su uso.&lt;/p&gt;
&lt;h2&gt;Instalación del servidor de inferencia Triton™&lt;/h2&gt;
&lt;p&gt;Vamos a descargar el repositorio del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/triton-inference-server/server&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este repositorio contiene ejemplos de redes neuronales preconfiguradas y un script de descarga de modelos. Navega hasta el directorio examples:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd server/docs/examples&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue los modelos ejecutando el siguiente script, que los guardará en &lt;b translate=&quot;no&quot;&gt;~/server/docs/examples/model_repository&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./fetch_models.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La arquitectura del Servidor de Inferencia Triton™ requiere que los modelos se almacenen por separado. Puedes almacenarlos localmente en cualquier directorio del servidor o en almacenamiento en red. Al iniciar el servidor, tendrás que montar este directorio en el contenedor en el punto de montaje /models. Esto sirve como repositorio para todas las versiones de los modelos.&lt;/p&gt;
&lt;p&gt;Inicie el contenedor con este comando&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run --gpus=all --rm -p8000:8000 -p8001:8001 -p8002:8002 -v ~/server/docs/examples/model_repository:/models nvcr.io/nvidia/tritonserver:25.01-py3 tritonserver --model-repository=/models&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto es lo que hace cada parámetro&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--gpus=all&lt;/b&gt; especifica que se utilizarán todas las GPUs disponibles en el servidor;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--rm&lt;/b&gt; destruye el contenedor una vez finalizado o detenido el proceso;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p8000:8000&lt;/b&gt; reenvía el puerto 8000 para recibir peticiones HTTP;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p8001:8001&lt;/b&gt; reenvía el puerto 8001 para recibir peticiones gRPC;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-p8002:8002&lt;/b&gt; reenvía el puerto 8002 para solicitar métricas;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v ~/server/docs/examples/model_repository:/models&lt;/b&gt; reenvía el directorio con modelos&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;nvcr.io/nvidia/tritonserver:25.01-py3&lt;/b&gt; dirección del contenedor del catálogo NGC;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;tritonserver --model-repository=/models&lt;/b&gt; lanza el Servidor de Inferencia Triton™ con la ubicación del repositorio de modelos en /models.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La salida del comando mostrará todos los modelos disponibles en el repositorio, cada uno listo para aceptar peticiones:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;+----------------------+---------+--------+
| Model                | Version | Status |
+----------------------+---------+--------+
| densenet_onnx        | 1       | READY  |
| inception_graphdef   | 1       | READY  |
| simple               | 1       | READY  |
| simple_dyna_sequence | 1       | READY  |
| simple_identity      | 1       | READY  |
| simple_int8          | 1       | READY  |
| simple_sequence      | 1       | READY  |
| simple_string        | 1       | READY  |
+----------------------+---------+--------+&lt;/pre&gt;
&lt;p&gt;Los tres servicios se han lanzado con éxito en los puertos 8000, 8001 y 8002:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;I0217 08:00:34.930188 1 grpc_server.cc:2466] Started GRPCInferenceService at 0.0.0.0:8001
I0217 08:00:34.930393 1 http_server.cc:4636] Started HTTPService at 0.0.0.0:8000
I0217 08:00:34.972340 1 http_server.cc:320] Started Metrics Service at 0.0.0.0:8002&lt;/pre&gt;
&lt;p&gt;Usando la utilidad nvtop, podemos verificar que todas las GPUs están listas para aceptar la carga:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/132/original/sh_triton_inference_server_1.png?1740580538&quot; alt=&quot;8 x A6000 Triton Inference Server examples&quot;&gt;
&lt;h2&gt;Instalación del cliente&lt;/h2&gt;
&lt;p&gt;Para acceder a nuestro servidor, necesitaremos generar una petición apropiada utilizando el cliente incluido en el SDK. Podemos descargar este SDK como un contenedor Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker pull nvcr.io/nvidia/tritonserver:25.01-py3-sdk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el contenedor en modo interactivo para acceder a la consola:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -it --gpus=all --rm --net=host nvcr.io/nvidia/tritonserver:25.01-py3-sdk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos a probarlo con el modelo DenseNet en formato ONNX, utilizando el método INCEPTION para preprocesar y analizar la imagen &lt;b translate=&quot;no&quot;&gt;mug.jpg&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;/workspace/install/bin/image_client -m densenet_onnx -c 3 -s INCEPTION /workspace/images/mug.jpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El cliente contactará con el servidor, que creará un lote y lo procesará utilizando las GPUs disponibles del contenedor. Este es el resultado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;Request 0, batch size 1
Image &#39;/workspace/images/mug.jpg&#39;:
   15.349562 (504) = COFFEE MUG
   13.227461 (968) = CUP
   10.424891 (505) = COFFEEPOT&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Preparando el repositorio&lt;/h2&gt;
&lt;p&gt;Para que Triton™ gestione los modelos correctamente, debes preparar el repositorio de una manera específica. Esta es la estructura de directorios:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;model_repository/ 
        └── your_model/ 
                ├── config.pbtxt 
                └── 1/
                    └── model.*&lt;/pre&gt;
&lt;p&gt;Cada modelo necesita su propio directorio que contenga un archivo de configuración &lt;b translate=&quot;no&quot;&gt;config.pbtxt&lt;/b&gt; con su descripción. He aquí un ejemplo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;name: &quot;Test&quot;
platform: &quot;pytorch_libtorch&quot;
max_batch_size: 8
input [
  {
    name: &quot;INPUT_0&quot;
    data_type: TYPE_FP32
    dims: [ 3, 224, 224 ]
  }
]
output [
  {
    name: &quot;OUTPUT_0&quot;
    data_type: TYPE_FP32
    dims: [ 1000 ]
  }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este ejemplo, un modelo llamado &lt;b translate=&quot;no&quot;&gt;Test&lt;/b&gt; se ejecutará en el backend PyTorch. El parámetro &lt;b translate=&quot;no&quot;&gt;max_batch_size&lt;/b&gt; establece el número máximo de elementos que se pueden procesar simultáneamente, lo que permite un equilibrio de carga eficiente entre los recursos. Establecer este valor a cero desactiva el procesamiento por lotes, haciendo que el modelo procese las peticiones secuencialmente.&lt;/p&gt;
&lt;p&gt;El modelo acepta una entrada y produce una salida, ambas utilizando el tipo de número FP32. Los parámetros deben coincidir exactamente con los requisitos del modelo. Para el procesamiento de imágenes, una especificación de dimensión típica es &lt;b translate=&quot;no&quot;&gt;dims: [ 3, 224, 224 ]&lt;/b&gt;, donde:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;3&lt;/b&gt; - número de canales de color (RGB);&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;224&lt;/b&gt; - altura de la imagen en píxeles;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;224&lt;/b&gt; - anchura de la imagen en píxeles.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La salida &lt;b translate=&quot;no&quot;&gt;dims: [ 1000 ]&lt;/b&gt; representa un vector unidimensional de 1000 elementos, que se adapta a las tareas de clasificación de imágenes. Para determinar la dimensionalidad correcta para su modelo, consulte su documentación. Si el archivo de configuración está incompleto, Triton™ intentará generar automáticamente los parámetros que falten.&lt;/p&gt;
&lt;h2&gt;Iniciar un modelo personalizado&lt;/h2&gt;
&lt;p&gt;Vamos a lanzar la inferencia del modelo DeepSeek-R1 destilado del que hemos &lt;a href=&quot;https://www.leadergpu.es/catalog/613-deepseek-r1-el-futuro-de-los-llm&quot;&gt;hablado&lt;/a&gt; antes. En primer lugar, crearemos la estructura de directorios necesaria:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir ~/model_repository &amp;&amp; mkdir ~/model_repository/deepseek &amp;&amp; mkdir ~/model_repository/deepseek/1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navegue hasta el directorio del modelo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/model_repository/deepseek&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree un archivo de configuración &lt;b translate=&quot;no&quot;&gt;config.pbtxt&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano config.pbtxt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pegue lo siguiente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;# Copyright 2023, NVIDIA CORPORATION &amp; AFFILIATES. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#  * Redistributions of source code must retain the above copyright
#    notice, this list of conditions and the following disclaimer.
#  * Redistributions in binary form must reproduce the above copyright
#    notice, this list of conditions and the following disclaimer in the
#    documentation and/or other materials provided with the distribution.
#  * Neither the name of NVIDIA CORPORATION nor the names of its
#    contributors may be used to endorse or promote products derived
#    from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS&#39;&#39; AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
# PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    
# Note: You do not need to change any fields in this configuration.
    
backend: &quot;vllm&quot;
    
# The usage of device is deferred to the vLLM engine
instance_group [
  {
    count: 1
    kind: KIND_MODEL
  }
]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo pulsando &lt;b translate=&quot;no&quot;&gt;Ctrl + O&lt;/b&gt;, luego el editor con &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;. Navegue hasta el directorio &lt;b translate=&quot;no&quot;&gt;1&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree un fichero de configuración del modelo &lt;b translate=&quot;no&quot;&gt;model.json&lt;/b&gt; con los siguientes parámetros:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;{
    &quot;model&quot;:&quot;deepseek-ai/DeepSeek-R1-Distill-Llama-8B&quot;,
    &quot;disable_log_requests&quot;: true,
    &quot;gpu_memory_utilization&quot;: 0.9,
    &quot;enforce_eager&quot;: true
}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ten en cuenta que el valor de &lt;b translate=&quot;no&quot;&gt;gpu_memory_utilization&lt;/b&gt; varía según la GPU y debe determinarse experimentalmente. Para esta guía, utilizaremos &lt;b translate=&quot;no&quot;&gt;0.9&lt;/b&gt;. Su estructura de directorios dentro de &lt;b translate=&quot;no&quot;&gt;~/model_repository&lt;/b&gt; ahora debe tener este aspecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;└── deepseek
        ├── 1
        │   └── model.json
        └── config.pbtxt&lt;/pre&gt;
&lt;p&gt;Establece la variable &lt;b translate=&quot;no&quot;&gt;LOCAL_MODEL_REPOSITORY&lt;/b&gt; por conveniencia:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;LOCAL_MODEL_REPOSITORY=~/model_repository/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inicie el servidor de inferencia con este comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run --rm -it --net host --shm-size=2g  --ulimit memlock=-1 --ulimit stack=67108864 --gpus all -v $LOCAL_MODEL_REPOSITORY:/opt/tritonserver/model_repository  nvcr.io/nvidia/tritonserver:25.01-vllm-python-py3 tritonserver --model-repository=model_repository/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto es lo que hace cada parámetro:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--rm&lt;/b&gt; elimina automáticamente el contenedor tras detenerse;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-it&lt;/b&gt; ejecuta el contenedor en modo interactivo con salida de terminal;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--net&lt;/b&gt; utiliza la pila de red del host en lugar del aislamiento del contenedor;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--shm-size=2g&lt;/b&gt; establece la memoria compartida en 2 GB;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--ulimit memlock=-1&lt;/b&gt; elimina el límite de bloqueo de memoria;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--ulimit stack=67108864&lt;/b&gt; fija el tamaño de la pila en 64 MB;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--gpus all&lt;/b&gt; habilita el acceso a todas las GPU del servidor;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;-v $LOCAL_MODEL_REPOSITORY:/opt/tritonserver/model_repository&lt;/b&gt; monta el directorio del modelo local en el contenedor;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;nvcr.io/nvidia/tritonserver:25.01-vllm-python-py3&lt;/b&gt; especifica el contenedor con soporte vLLM backend;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;tritonserver --model-repository=model_repository/&lt;/b&gt; lanza el Servidor de Inferencia Triton™ con la ubicación del repositorio de modelos en model_repository.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prueba el servidor enviando una petición con &lt;b translate=&quot;no&quot;&gt;curl&lt;/b&gt;, utilizando un prompt simple y un límite de respuesta de 4096 tokens:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -X POST localhost:8000/v2/models/deepseek/generate -d &#39;{&quot;text_input&quot;: &quot;Tell me about the Netherlands?&quot;, &quot;max_tokens&quot;: 4096}&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El servidor recibe y procesa la petición con éxito.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/133/original/sh_triton_inference_server_2.png?1740580601&quot; alt=&quot;Triton Inference Server processed the test request&quot;&gt;
&lt;p&gt;El programador de tareas interno de Triton™ gestiona todas las peticiones entrantes cuando el servidor está bajo carga.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;El Servidor de Inferencia Triton™ destaca en el despliegue de modelos de aprendizaje automático en producción al distribuir eficientemente las peticiones entre las GPUs disponibles. Esto maximiza el uso de los recursos del servidor alquilado y reduce los costes de la infraestructura informática. El software funciona con varios backends, incluido vLLM para modelos lingüísticos de gran tamaño.&lt;/p&gt;
&lt;p&gt;Dado que se instala como un contenedor Docker, puede integrarse fácilmente en cualquier canal CI/CD moderno. Pruébelo usted mismo &lt;a href=&quot;https://www.leadergpu.es/es#chose-best&quot;&gt;alquilando un servidor&lt;/a&gt; de LeaderGPU.&lt;/p&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/134/original/il_triton_inference_server.png?1740583888"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 26 Feb 2025 16:40:21 +0100</pubDate>
      <guid isPermaLink="false">614</guid>
      <dc:date>2025-02-26 16:40:21 +0100</dc:date>
    </item>
    <item>
      <title>DeepSeek-R1: el futuro de los LLM</title>
      <link>https://www.leadergpu.es/catalog/613-deepseek-r1-el-futuro-de-los-llm</link>
      <description>&lt;p&gt;Aunque las redes neuronales generativas se han desarrollado rápidamente, su progreso en los últimos años se ha mantenido bastante estable. Esto cambió con la llegada de DeepSeek, una red neuronal china que no sólo impactó en la bolsa, sino que captó la atención de desarrolladores e investigadores de todo el mundo. A diferencia de otros grandes proyectos, el código de DeepSeek se publicó bajo la permisiva licencia MIT. Este paso hacia el código abierto se ganó los elogios de la comunidad, que empezó a explorar con entusiasmo las capacidades del nuevo modelo.&lt;/p&gt;
&lt;p&gt;El aspecto más impresionante fue que, al parecer, el entrenamiento de esta nueva red neuronal costó 20 veces menos que el de competidores que ofrecían una calidad similar. El modelo sólo necesitó 55 días y 5,6 millones de dólares para entrenarse. El lanzamiento de DeepSeek provocó una de las mayores caídas en un solo día de la historia del mercado bursátil estadounidense. Aunque los mercados acabaron estabilizándose, el impacto fue significativo.&lt;/p&gt;
&lt;p&gt;Este artículo examinará la precisión con la que los titulares de los medios reflejan la realidad y explorará qué configuraciones de LeaderGPU son adecuadas para instalar usted mismo esta red neuronal.&lt;/p&gt;
&lt;h2&gt;Características arquitectónicas&lt;/h2&gt;
&lt;p&gt;DeepSeek ha elegido un camino de máxima optimización, lo que no es de extrañar dadas las restricciones a la exportación de China a Estados Unidos. Estas restricciones impiden que el país utilice oficialmente los modelos de GPU más avanzados para el desarrollo de IA.&lt;/p&gt;
&lt;p&gt;El modelo emplea la tecnología Multi Token Prediction (MTP), que predice múltiples tokens en un solo paso de inferencia en lugar de uno solo. Esto funciona mediante la descodificación paralela de tokens combinada con capas especiales enmascaradas que mantienen la autorregresividad.&lt;/p&gt;
&lt;p&gt;Las pruebas de MTP han mostrado resultados notables, aumentando la velocidad de generación entre 2 y 4 veces en comparación con los métodos tradicionales. La excelente escalabilidad de la tecnología la hace valiosa para aplicaciones actuales y futuras de procesamiento del lenguaje natural.&lt;/p&gt;
&lt;p&gt;El modelo Multi-Head Latent Attention (MLA) presenta un mecanismo de atención mejorado. A medida que el modelo construye largas cadenas de razonamiento, mantiene la atención centrada en el contexto en cada etapa. Esta mejora le permite manejar mejor los conceptos abstractos y las dependencias textuales.&lt;/p&gt;
&lt;p&gt;La característica clave de MLA es su capacidad para ajustar dinámicamente el peso de la atención a distintos niveles de abstracción. Al procesar consultas complejas, MLA examina los datos desde múltiples perspectivas: el significado de las palabras, la estructura de las frases y el contexto general. Estas perspectivas forman capas distintas que influyen en el resultado final. Para mantener la claridad, MLA equilibra cuidadosamente el impacto de cada capa sin perder de vista la tarea principal.&lt;/p&gt;
&lt;p&gt;Los desarrolladores de DeepSeek incorporaron al modelo la tecnología de Mezcla de Expertos (MoE). Contiene 256 redes neuronales expertas preentrenadas, cada una especializada en tareas diferentes. El sistema activa 8 de estas redes para cada entrada de token, lo que permite un procesamiento eficiente de los datos sin aumentar los costes computacionales.&lt;/p&gt;
&lt;p&gt;En el modelo completo con 671b parámetros, sólo se activan 37b para cada token. El modelo selecciona de forma inteligente los parámetros más relevantes para procesar cada ficha entrante. Esta eficiente optimización ahorra recursos computacionales al tiempo que mantiene un alto rendimiento.&lt;/p&gt;
&lt;p&gt;Una característica crucial de cualquier chatbot de red neuronal es la longitud de su ventana de contexto. Llama 2 tiene un límite de contexto de 4.096 tokens, GPT-3.5 maneja 16.284 tokens, mientras que GPT-4 y DeepSeek pueden procesar hasta 128.000 tokens (unas 100.000 palabras, equivalentes a 300 páginas de texto mecanografiado).&lt;/p&gt;
&lt;h2&gt;R - Razonamiento&lt;/h2&gt;
&lt;p&gt;DeepSeek-R1 ha adquirido un mecanismo de razonamiento similar al de OpenAI o1, lo que le permite gestionar tareas complejas con mayor eficacia y precisión. En lugar de proporcionar respuestas inmediatas, el modelo amplía el contexto generando razonamientos paso a paso en pequeños párrafos. Este enfoque mejora la capacidad de la red neuronal para identificar relaciones complejas entre datos, lo que da lugar a respuestas más completas y precisas.&lt;/p&gt;
&lt;p&gt;Cuando se enfrenta a una tarea compleja, DeepSeek utiliza su mecanismo de razonamiento para descomponer el problema en componentes y analizar cada uno por separado. A continuación, el modelo sintetiza estos resultados para generar una respuesta para el usuario. Aunque este parece ser un enfoque ideal para las redes neuronales, conlleva importantes retos.&lt;/p&gt;
&lt;p&gt;Todas las LLM modernas comparten un rasgo preocupante: las alucinaciones artificiales. Cuando se le presenta una pregunta que no puede responder, en lugar de reconocer sus limitaciones, el modelo puede generar respuestas ficticias apoyadas en hechos inventados.&lt;/p&gt;
&lt;p&gt;Cuando se aplican a una red neuronal de razonamiento, estas alucinaciones podrían comprometer el proceso de pensamiento al basar las conclusiones en información ficticia y no en hechos. Esto podría llevar a conclusiones incorrectas, un reto que los investigadores y desarrolladores de redes neuronales tendrán que abordar en el futuro.&lt;/p&gt;
&lt;h2&gt;Consumo de VRAM&lt;/h2&gt;
&lt;p&gt;Veamos cómo ejecutar y probar DeepSeek R1 en un servidor dedicado, centrándonos en los requisitos de memoria de vídeo de la GPU.&lt;/p&gt;
&lt;table style=&quot;margin: auto;&quot; width=&quot;50%&quot;&gt;
    &lt;th&gt;Modelo&lt;/th&gt;
    &lt;th&gt;VRAM (Mb)&lt;/th&gt;
    &lt;th&gt;Tamaño del modelo (Gb)&lt;/th&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:1.5b&lt;/td&gt;
        &lt;td&gt;1,952&lt;/td&gt;
        &lt;td&gt;1.1&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:7b&lt;/td&gt;
        &lt;td&gt;5,604&lt;/td&gt;
        &lt;td&gt;4.7&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:8b&lt;/td&gt;
        &lt;td&gt;6,482&lt;/td&gt;
        &lt;td&gt;4.9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:14b&lt;/td&gt;
        &lt;td&gt;10,880&lt;/td&gt;
        &lt;td&gt;9&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:32b&lt;/td&gt;
        &lt;td&gt;21,758&lt;/td&gt;
        &lt;td&gt;20&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:70b&lt;/td&gt;
        &lt;td&gt;39,284&lt;/td&gt;
        &lt;td&gt;43&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;deepseek-r1:671b&lt;/td&gt;
        &lt;td&gt;470,091&lt;/td&gt;
        &lt;td&gt;404&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Las tres primeras opciones (1.5b, 7b, 8b) son modelos básicos que pueden realizar la mayoría de las tareas de forma eficiente. Estos modelos funcionan sin problemas en cualquier GPU de consumo con 6-8 GB de memoria de vídeo. Las versiones intermedias (14b y 32b) son ideales para tareas profesionales, pero requieren más VRAM. Los modelos más grandes (70b y 671b) requieren GPU especializadas y se utilizan principalmente para aplicaciones industriales y de investigación.&lt;/p&gt;
&lt;h2&gt;Selección de servidores&lt;/h2&gt;
&lt;p&gt;Para ayudarte a elegir un servidor para la inferencia DeepSeek, aquí tienes las configuraciones LeaderGPU ideales para cada grupo de modelos:&lt;/p&gt;
&lt;h3&gt;1,5b / 7b / 8b / 14b / 32b / 70b&lt;/h3&gt;
&lt;p&gt;Para este grupo, cualquier servidor con los siguientes tipos de GPU será adecuado. La mayoría de los servidores LeaderGPU ejecutarán estas redes neuronales sin problemas. El rendimiento dependerá principalmente del número de núcleos CUDA®. Recomendamos servidores con múltiples GPUs, tales como:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/?fltr_type%5B%5D=a40#filter_block&quot;&gt;A40&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/?fltr_type%5B%5D=l20#filter_block&quot;&gt;L20&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;671b&lt;/h3&gt;
&lt;p&gt;Ahora pasemos al caso más difícil: ¿cómo ejecutar la inferencia en un modelo con un tamaño base de 404 GB? Esto significa que se necesitarán aproximadamente 470 GB de memoria de vídeo. LeaderGPU ofrece múltiples configuraciones con las siguientes GPU capaces de manejar esta carga:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/?fltr_type%5B%5D=a100#filter_block&quot;&gt;A100&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/?fltr_type%5B%5D=h100#filter_block&quot;&gt;H100&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ambas configuraciones gestionan la carga del modelo de forma eficiente, distribuyéndola uniformemente entre varias GPU. Por ejemplo, este es el aspecto de un servidor con 8xH100 después de cargar el modelo deepseek-r1:671b:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/126/original/sh_deepseek-r1_future_of_LLMs_1.png?1739199426&quot; alt=&quot;deepseek-r1:671b on 8xH100&quot;&gt;
&lt;p&gt;La carga computacional se equilibra dinámicamente entre las GPU, mientras que las interconexiones NVLink® de alta velocidad evitan los cuellos de botella en el intercambio de datos, garantizando el máximo rendimiento.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;DeepSeek-R1 combina muchas tecnologías innovadoras como la predicción multitoken, la atención latente multicabeza y la mezcla de expertos en un modelo significativo. Este software de código abierto demuestra que los LLM pueden desarrollarse de forma más eficiente con menos recursos computacionales. El modelo tiene varias versiones, desde la más pequeña de 1,5b hasta la enorme de 671b, que requieren hardware especializado con múltiples GPU de gama alta trabajando en paralelo.&lt;/p&gt;
&lt;p&gt;Al alquilar un servidor de LeaderGPU para la inferencia de DeepSeek-R1, obtendrá una amplia gama de configuraciones, fiabilidad y tolerancia a fallos. Nuestro equipo de soporte técnico le ayudará con cualquier problema o pregunta, mientras que la instalación automática del sistema operativo reduce el tiempo de implementación.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://www.leadergpu.es/#chose-best&quot;&gt;Elija su servidor LeaderGPU&lt;/a&gt; y descubra las posibilidades que se abren al utilizar modernos modelos de redes neuronales. Si tiene alguna pregunta, no dude en formularla en nuestro chat o &lt;a href=&quot;mailto:info@leadergpu.com&quot;&gt;por correo electrónico&lt;/a&gt;.&lt;/p&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/125/original/il_deepseek-r1_future_of_LLMs.png?1739198303"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 19 Feb 2025 15:10:33 +0100</pubDate>
      <guid isPermaLink="false">613</guid>
      <dc:date>2025-02-19 15:10:33 +0100</dc:date>
    </item>
    <item>
      <title>Intel Habana Gaudí 2: instalación y prueba</title>
      <link>https://www.leadergpu.es/catalog/611-intel-habana-gaud-2-instalaci-n-y-prueba</link>
      <description>&lt;p&gt;Antes de empezar a instalar el software de los aceleradores Gaudí 2, hay una característica importante que merece la pena mencionar. Estamos acostumbrados a que el entrenamiento y la inferencia de redes neuronales se realicen utilizando GPUs. Sin embargo, Intel Habana Gaudi 2 es muy diferente de las GPU y representa una clase diferente de dispositivos que están diseñados exclusivamente para la aceleración de tareas de IA.&lt;/p&gt;
&lt;p&gt;Muchas aplicaciones y marcos de trabajo conocidos no funcionarán sin preparar primero el sistema operativo y, en algunos casos, sin un &lt;a href=&quot;https://docs.habana.ai/en/latest/PyTorch/PyTorch_Model_Porting/GPU_Migration_Toolkit/GPU_Migration_Toolkit.html&quot;&gt;kit de herramientas&lt;/a&gt; especial para la migración a la GPU. Esto explica el gran número de pasos preparatorios que describimos en este artículo. Empecemos por orden.&lt;/p&gt;
&lt;h2&gt;Paso 1. Instala SynapseAI Software Stack&lt;/h2&gt;
&lt;p&gt;Para empezar a trabajar con los aceleradores Intel Habana Gaudi 2, es necesario instalar la pila SynapseAI. Incluye un compilador de gráficos especial que transforma la topología del modelo de red neuronal para optimizar eficazmente la ejecución en la arquitectura Gaudí, bibliotecas API para el escalado horizontal, así como un SDK independiente para crear algoritmos de alto rendimiento y modelos de aprendizaje automático.&lt;/p&gt;
&lt;p&gt;Por otra parte, cabe destacar que SynapseAI es la parte que permite crear un puente entre marcos de trabajo populares como PyTorch/TensorFlow y los aceleradores de IA de Gaudi 2. Esto permite trabajar con abstracciones conocidas, y Gaudi 2 optimiza de forma independiente los cálculos Los operadores específicos para los que los aceleradores no tienen soporte de hardware se ejecutan en la CPU.&lt;/p&gt;
&lt;p&gt;Para simplificar la instalación de los componentes individuales de SynapseAI, se ha creado un cómodo script de shell. Vamos a descargarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget -nv https://vault.habana.ai/artifactory/gaudi-installer/latest/habanalabs-installer.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Haga el archivo ejecutable:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod +x habanalabs-installer.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install --type base&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Siga las instrucciones del sistema durante la instalación. Encontrarás un informe detallado en el archivo de registro. En él podrás ver qué paquetes se instalaron, así como si los aceleradores se encontraron e inicializaron correctamente.&lt;/p&gt;
&lt;p&gt;Registros aquí: /var/log/habana_logs/install-YYYY-MM-DD-HH-MM-SS.log&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;[  +3.881647] habanalabs hl5: Found GAUDI2 device with 96GB DRAM
[  +0.008145] habanalabs hl0: Found GAUDI2 device with 96GB DRAM
[  +0.032034] habanalabs hl3: Found GAUDI2 device with 96GB DRAM
[  +0.002376] habanalabs hl4: Found GAUDI2 device with 96GB DRAM
[  +0.005174] habanalabs hl1: Found GAUDI2 device with 96GB DRAM
[  +0.000390] habanalabs hl2: Found GAUDI2 device with 96GB DRAM
[  +0.007065] habanalabs hl7: Found GAUDI2 device with 96GB DRAM
[  +0.006256] habanalabs hl6: Found GAUDI2 device with 96GB DRAM&lt;/pre&gt;
&lt;p&gt;Al igual que la utilidad nvidia-smi proporciona información sobre las GPUs instaladas y los procesos de computación en ejecución, SynapseAI tiene un programa similar. Puedes ejecutarlo para obtener un informe sobre el estado actual de los aceleradores de IA Gaudí 2:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;hl-smi&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/981/original/sh_intel_habana_gaudi_2_install_and_test_1.png?1714555709&quot; alt=&quot;hl-smi screenshot&quot;&gt;
&lt;h2&gt;Paso 2. Prueba TensorFlow&lt;/h2&gt;
&lt;p&gt;TensorFlow es una de las plataformas más populares para el aprendizaje automático. Usando el mismo script de instalación, puedes instalar una versión pre-construida de TensorFlow con soporte para los aceleradores Gaudi 2. Empecemos instalando las dependencias generales:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install -t dependencies&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, instalaremos las dependencias para TensorFlow:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install -t dependencies-tensorflow&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instalar la plataforma TensorFlow dentro de un entorno virtual implementado mediante el mecanismo Python Virtual Environment (venv):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./habanalabs-installer.sh install --type tensorflow --venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Activemos el entorno virtual creado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source habanalabs-venv/bin/activate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crear un sencillo ejemplo de código Python que utilizará las capacidades de los aceleradores Gaudí 2:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;nano example.py&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;
import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
import torchvision
import torchvision.transforms as transforms
import os
# Import Habana Torch Library
import habana_frameworks.torch.core as htcore
class SimpleModel(nn.Module):
   def __init__(self):
       super(SimpleModel, self).__init__()
       self.fc1   = nn.Linear(784, 256)
       self.fc2   = nn.Linear(256, 64)
       self.fc3   = nn.Linear(64, 10)
   def forward(self, x):
       out = x.view(-1,28*28)
       out = F.relu(self.fc1(out))
       out = F.relu(self.fc2(out))
       out = self.fc3(out)
       return out
def train(net,criterion,optimizer,trainloader,device):
   net.train()
   train_loss = 0.0
   correct = 0
   total = 0
   for batch_idx, (data, targets) in enumerate(trainloader):
       data, targets = data.to(device), targets.to(device)
       optimizer.zero_grad()
       outputs = net(data)
       loss = criterion(outputs, targets)
       loss.backward()
       # API call to trigger execution
       htcore.mark_step()
       optimizer.step()
       # API call to trigger execution
       htcore.mark_step()
       train_loss += loss.item()
       _, predicted = outputs.max(1)
       total += targets.size(0)
       correct += predicted.eq(targets).sum().item()
   train_loss = train_loss/(batch_idx+1)
   train_acc = 100.0*(correct/total)
   print(&quot;Training loss is {} and training accuracy is {}&quot;.format(train_loss,train_acc))
def test(net,criterion,testloader,device):
   net.eval()
   test_loss = 0
   correct = 0
   total = 0
   with torch.no_grad():
       for batch_idx, (data, targets) in enumerate(testloader):
           data, targets = data.to(device), targets.to(device)
           outputs = net(data)
           loss = criterion(outputs, targets)
           # API call to trigger execution
           htcore.mark_step()
           test_loss += loss.item()
           _, predicted = outputs.max(1)
           total += targets.size(0)
           correct += predicted.eq(targets).sum().item()
   test_loss = test_loss/(batch_idx+1)
   test_acc = 100.0*(correct/total)
   print(&quot;Testing loss is {} and testing accuracy is {}&quot;.format(test_loss,test_acc))
def main():
   epochs = 20
   batch_size = 128
   lr = 0.01
   milestones = [10,15]
   load_path = &#39;./data&#39;
   save_path = &#39;./checkpoints&#39;
   if(not os.path.exists(save_path)):
       os.makedirs(save_path)
   # Target the Gaudi HPU device
   device = torch.device(&quot;hpu&quot;)
   # Data
   transform = transforms.Compose([
       transforms.ToTensor(),
   ])
   trainset = torchvision.datasets.MNIST(root=load_path, train=True,
                                           download=True, transform=transform)
   trainloader = torch.utils.data.DataLoader(trainset, batch_size=batch_size,
                                           shuffle=True, num_workers=2)
   testset = torchvision.datasets.MNIST(root=load_path, train=False,
                                       download=True, transform=transform)
   testloader = torch.utils.data.DataLoader(testset, batch_size=batch_size,
                                           shuffle=False, num_workers=2)
   net = SimpleModel()
   net.to(device)
   criterion = nn.CrossEntropyLoss()
   optimizer = optim.SGD(net.parameters(), lr=lr,
                       momentum=0.9, weight_decay=5e-4)
   scheduler = torch.optim.lr_scheduler.MultiStepLR(optimizer, milestones=milestones, gamma=0.1)
   for epoch in range(1, epochs+1):
       print(&quot;=====================================================================&quot;)
       print(&quot;Epoch : {}&quot;.format(epoch))
       train(net,criterion,optimizer,trainloader,device)
       test(net,criterion,testloader,device)
       torch.save(net.state_dict(), os.path.join(save_path,&#39;epoch_{}.pth&#39;.format(epoch)))
       scheduler.step()
if __name__ == &#39;__main__&#39;:
   main()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por último, ejecute la aplicación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python3 example.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para salir del entorno virtual, ejecute el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 3. Clonar el repositorio de formación&lt;/h2&gt;
&lt;p&gt;Clone el repositorio con el código MLperf:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/mlcommons/training_results_v3.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crear un directorio separado que será utilizado por el contenedor Docker con MLperf:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p mlperf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambia el directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd mlperf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Exportemos algunas variables de entorno:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export MLPERF_DIR=/home/usergpu/mlperf&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export SCRATCH_DIR=/home/usergpu/mlperf/scratch&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export DATASETS_DIR=/home/usergpu/mlperf/datasets&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree nuevos directorios utilizando las variables creadas:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p $MLPERF_DIR/Habana&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p $SCRATCH_DIR&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir -p $DATASETS_DIR&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copia la aplicación de benchmark a $MLPERF_DIR/Habana:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp -R training_results_v3.0/Intel-HabanaLabs/benchmarks/ $MLPERF_DIR/Habana&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Exporta otra variable que almacenará un enlace para descargar la versión deseada del contenedor Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export MLPERF_DOCKER_IMAGE=vault.habana.ai/gaudi-docker-mlperf/ver3.1/pytorch-installer-2.0.1:1.13.99-41&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 4. Instalar Docker&lt;/h2&gt;
&lt;p&gt;Nuestra instancia ejecuta Ubuntu Linux 22.04 LTS y no soporta Docker por defecto. Por lo tanto, antes de descargar y ejecutar contenedores, es necesario instalar el soporte para Docker. Actualicemos la caché de paquetes e instalemos algunos paquetes básicos que necesitaremos más adelante:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para instalar Docker, necesitas añadir un repositorio de proyecto firmado digitalmente. Descarga la clave de firma digital y añádela al almacén de claves del sistema operativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Docker puede ejecutarse en plataformas con diversas arquitecturas. El siguiente comando detectará la arquitectura de su servidor y añadirá la línea del repositorio correspondiente a la lista del gestor de paquetes de APT:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualice la caché de paquetes y las políticas e instale docker-ce (Docker Community Edition):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; apt-cache policy docker-ce &amp;&amp; sudo apt install docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por último, compruebe que el demonio Docker está en funcionamiento:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status docker&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 5. Ejecutar el contenedor Docker&lt;/h2&gt;
&lt;p&gt;Vamos a lanzar el contenedor en modo privilegiado utilizando las variables especificadas anteriormente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run --privileged --security-opt seccomp=unconfined \
  --name mlperf3.0 -td                    \
  -v /dev:/dev                            \
  --device=/dev:/dev                      \
  -e LOG_LEVEL_ALL=6                      \
  -v /sys/kernel/debug:/sys/kernel/debug  \
  -v /tmp:/tmp                            \
  -v $MLPERF_DIR:/root/MLPERF             \
  -v $SCRATCH_DIR:/root/scratch           \
  -v $DATASETS_DIR:/root/datasets/        \
  --cap-add=sys_nice --cap-add=SYS_PTRACE \
  --user root --workdir=/root --net=host  \
  --ulimit memlock=-1:-1 $MLPERF_DOCKER_IMAGE&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para mayor comodidad, puedes acceder al terminal dentro del contenedor a través de SSH:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker exec mlperf3.0 bash -c &quot;service ssh start&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para abrir un shell de comandos (bash) en la sesión actual, ejecute el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker exec -it mlperf3.0 bash&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 6. Preparar un conjunto de datos&lt;/h2&gt;
&lt;p&gt;Para ejecutar las pruebas de implementación de Bert desde MLperf, necesita un conjunto de datos preparado. El método óptimo es generar un conjunto de datos a partir de datos precargados. El repositorio MLperf incluye un script especial, prepare_data.sh, que requiere un conjunto específico de paquetes para funcionar. Naveguemos hasta el siguiente directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /root/MLPERF/Habana/benchmarks/bert/implementations/PyTorch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale todos los paquetes necesarios utilizando la lista pregenerada y el gestor de paquetes pip:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Establezca la variable PYTORCH_BERT_DATA para indicar al script dónde almacenar los datos:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export PYTORCH_BERT_DATA=/root/datasets/pytorch_bert&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;bash input_preprocessing/prepare_data.sh -o $PYTORCH_BERT_DATA&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El procedimiento de generación es bastante largo y puede durar varias horas. Por favor, sea paciente y no interrumpa el proceso. Si tiene previsto desconectarse de la sesión SSH, se recomienda utilizar la utilidad de &lt;a href=&quot;https://www.geeksforgeeks.org/screen-command-in-linux-with-examples/&quot;&gt;pantalla&lt;/a&gt; inmediatamente antes de iniciar el contenedor Docker.&lt;/p&gt;
&lt;h2&gt;Paso 7. Empaquetar el conjunto de datos&lt;/h2&gt;
&lt;p&gt;El siguiente paso es &quot;cortar&quot; el conjunto de datos en trozos iguales para el posterior lanzamiento de MLperf. Vamos a crear el directorio separado para los datos empaquetados:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir $PYTORCH_BERT_DATA/packed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el script de empaquetado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 pack_pretraining_data_pytorch.py \
  --input_dir=$PYTORCH_BERT_DATA/hdf5/training-4320/hdf5_4320_shards_uncompressed \
  --output_dir=$PYTORCH_BERT_DATA/packed \
  --max_predictions_per_seq=76&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 8. Ejecute una prueba&lt;/h2&gt;
&lt;p&gt;Ahora que el conjunto de datos está preparado, es el momento de ejecutar la prueba. Sin embargo, es imposible hacerlo sin una preparación previa. Los autores de la prueba Bert dejaron algunos valores codificados en el script, que interferirán con la ejecución de la prueba. En primer lugar, cambie el nombre del siguiente directorio&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mv $PYTORCH_BERT_DATA/packed $PYTORCH_BERT_DATA/packed_data_500_pt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambia el directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /root/MLPERF/Habana/benchmarks/bert/implementations/HLS-Gaudi2-PT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Como el editor GNU Nano no está instalado dentro del contenedor, debe instalarse por separado. Como alternativa, puede utilizar el editor Vi integrado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;apt update &amp;&amp; apt -y install nano&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, edita el script de lanzamiento de la prueba:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano launch_bert_pytorch.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Encuentra la primera línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;DATA_ROOT=/mnt/weka/data/pytorch/bert_mlperf/packed_data&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sustitúyela por lo siguiente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;DATA_ROOT=/root/datasets/pytorch_bert&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Encuentra la segunda línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;INPUT_DIR=$DATA_ROOT/packed&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sustitúyela por lo siguiente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;INPUT_DIR=$DATA_ROOT/packed_data_500_pt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo y salga.&lt;/p&gt;
&lt;p&gt;El código de la prueba incluye una función limitadora que restringe el gradiente para que no exceda ciertos valores, previniendo un potencial crecimiento exponencial. Por razones que desconocemos, esta función está ausente en la versión de PyTorch utilizada en el contenedor, causando que la prueba termine anormalmente durante la etapa de calentamiento.&lt;/p&gt;
&lt;p&gt;Una posible solución podría ser eliminar temporalmente esta función del código en el archivo fastddp.py. Para ello, abra el archivo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano ../PyTorch/fastddp.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Busque y comente las siguientes tres líneas de código utilizando el símbolo # (símbolo shebang) para que tengan este aspecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;#from habana_frameworks.torch import _hpex_C
#    clip_global_grad_norm = _hpex_C.fused_lamb_norm(grads, 1.0)
#    _fusion_buffer.div_((clip_global_grad_norm * _all_reduce_group_size).to(_fusion_buffer.dtype))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Además, guarda el archivo y sal. Cambia el directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ../HLS-Gaudi2-PT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por último, ejecute el script. Tardará aproximadamente 20 minutos en completarse:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./launch_bert_pytorch.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/606-qu-es-la-destilaci-n-de-conocimientos&quot;&gt;¿Qué es la destilación de conocimientos?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/607-ventajas-y-desventajas-de-compartir-la-gpu&quot;&gt;Ventajas y desventajas de compartir la GPU&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/609-nvidia-rtx-50-expectativas-y-realidad&quot;&gt;NVIDIA® RTX™ 50: expectativas y realidad&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/980/original/il_intel_habana_gaudi_2_install_and_test.png?1714555676"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:41:09 +0100</pubDate>
      <guid isPermaLink="false">611</guid>
      <dc:date>2025-01-23 13:41:09 +0100</dc:date>
    </item>
    <item>
      <title>NVIDIA® RTX™ 50: expectativas y realidad</title>
      <link>https://www.leadergpu.es/catalog/609-nvidia-rtx-50-expectativas-y-realidad</link>
      <description>&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;The highlight of CES 2025 was NVIDIA® CEO Jensen Huang’s speech. The revelation of new GPU specifications within minutes caught many off guard. In this article, we’ll examine how expert predictions matched the actual announcements.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Veamos primero la gama. La serie RTX™ 40 se lanzó con 6 modelos, desde la RTX™ 4060 hasta la RTX™ 4090. Muchos esperaban una gama similar para la serie RTX™ 50, pero no ha sido así. En su lugar, la familia RTX™ 50 incluye sólo 4 modelos: RTX™ 5070, RTX™ 5070 Ti, RTX™ 5080 y RTX™ 5090. Es posible que veamos tanto la RTX™ 5050 como la RTX5060 en el futuro, pero ninguna fuente oficial ha verificado aún estas tarjetas gráficas.&lt;/p&gt;
&lt;h2&gt;Proceso tecnológico&lt;/h2&gt;
&lt;p&gt;A menudo se dice que la ley de Moore, la observación empírica de que &quot;el número de transistores en un circuito integrado se duplica aproximadamente cada dos años&quot;, ya no es relevante para el rendimiento de los chips. Desde 2022, Jensen Huang ha declarado repetidamente que la ley de Moore ha muerto. En su lugar, propuso un nuevo concepto que hace hincapié en el desarrollo simultáneo de la arquitectura, los microchips, las bibliotecas de software y los algoritmos.&lt;/p&gt;
&lt;p&gt;Juntos, este cambio nos permite centrarnos en el rendimiento global del sistema en lugar de sólo en el recuento de transistores. El concepto de eficiencia informática ha suscitado continuos debates en la comunidad tecnológica. Aunque las opiniones al respecto varían, está claro que la industria se enfrenta a barreras tanto físicas como económicas para lograr una mayor miniaturización.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/098/original/sh_nvidia_rtx_50_expectation_and_reality_1.png?1736938750&quot; alt=&quot;RTX 5090 vs RTX 4090 - Core clock and boost clock&quot;&gt;
&lt;p&gt;Echemos un vistazo a la nueva generación de tecnología de proceso para GPU. En la presentación no se mencionó específicamente, pero todas las tarjetas de la generación anterior se fabricaron con el proceso 4N. &lt;b translate=&quot;no&quot;&gt;The RTX™ 50 series uses a different 4NP process technology&lt;/b&gt;. Al mismo tiempo, es importante entender que 4N y 4NP son sólo nombres comerciales. Los transistores siguen teniendo un tamaño de 5 nm.&lt;/p&gt;
&lt;p&gt;La tecnología de proceso 4NP mejorada permite principalmente una mayor densidad de transistores en el chip y velocidades de reloj más rápidas. Aunque los expertos predijeron que el RTX™ 50 utilizaría la misma tecnología de proceso que el RTX™ 40, técnicamente se equivocaron, aunque no por mucho, ya que el tamaño de los transistores no varía y TSMC sigue siendo el fabricante.&lt;/p&gt;
&lt;h2&gt;Número de núcleos&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/099/original/sh_nvidia_rtx_50_expectation_and_reality_2.png?1736938790&quot; alt=&quot;RTX 5090 vs RTX 4090 - CUDA cores count&quot;&gt;
&lt;p&gt;Antes del lanzamiento de la serie RTX™ 50, numerosas filtraciones de datos revelaron las características básicas de la GPU. Los primeros informes internos de julio de 2024 sugerían que el buque insignia contaría con 24.576 núcleos, 192 de trazado de rayos y 768 de tensor. Sin embargo, posteriores filtraciones ajustaron estas cifras a valores más realistas.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/100/original/sh_nvidia_rtx_50_expectation_and_reality_3.png?1736938814&quot; alt=&quot;RTX 5090 vs RTX 4090 - AI cores count&quot;&gt;
&lt;p&gt;La RTX™ 5090 final se comercializó con &lt;b translate=&quot;no&quot;&gt;21,760 CUDA® cores&lt;/b&gt; (frente a los 16.384 de la RTX™ 4090), &lt;b translate=&quot;no&quot;&gt;170 Ray-tracing cores&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;680 Tensor cores&lt;/b&gt;. Esto concuerda con la reciente estrategia de la compañía de aumentar el rendimiento no solo mediante un mayor número de transistores, sino a través de una exhaustiva optimización de la arquitectura.&lt;/p&gt;
&lt;h2&gt;Memoria&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/101/original/sh_nvidia_rtx_50_expectation_and_reality_4.png?1736938865&quot; alt=&quot;RTX 5090 vs RTX 4090 - Memory capacity&quot;&gt;
&lt;p&gt;El uso de memoria GDDR7 en las nuevas GPU no es ninguna sorpresa. Los expertos del sector habían pronosticado este cambio en 2024, después de que los tres principales fabricantes (Samsung, Micron y SK hynix) presentaran sus prototipos GDDR7 sucesivamente. NVIDIA® fue generosa con la distribución de la memoria: el modelo base &lt;b translate=&quot;no&quot;&gt;RTX™ 5070&lt;/b&gt; incluye &lt;b translate=&quot;no&quot;&gt;12 GB GDDR7&lt;/b&gt; en un bus &lt;b translate=&quot;no&quot;&gt;192-bit&lt;/b&gt;, mientras que los dos &lt;b translate=&quot;no&quot;&gt;RTX™ 5070 Ti and RTX™ 5080&lt;/b&gt; llevan &lt;b translate=&quot;no&quot;&gt;16 GB GDDR7&lt;/b&gt; en un bus &lt;b translate=&quot;no&quot;&gt;256-bit&lt;/b&gt;. En el extremo superior, el buque insignia &lt;b translate=&quot;no&quot;&gt;RTX™ 5090&lt;/b&gt; viene con una enorme &lt;b translate=&quot;no&quot;&gt;32 GB GDDR7&lt;/b&gt; en un bus &lt;b translate=&quot;no&quot;&gt;512-bit&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/102/original/sh_nvidia_rtx_50_expectation_and_reality_5.png?1736938884&quot; alt=&quot;RTX 5090 vs RTX 4090 - Memory throughput&quot;&gt;
&lt;p&gt;Los expertos predijeron inicialmente que el rendimiento máximo de esta configuración de memoria sería de 1,5 Tbps. Sin embargo, la realidad superó estas expectativas, &lt;b translate=&quot;no&quot;&gt;achieving a throughput of 1,7 Tbps&lt;/b&gt;. Esta espectacular mejora beneficia principalmente a la capacidad de procesamiento de IA de la GPU, más que al rendimiento en juegos. La combinación de alta capacidad y memoria rápida de la nueva generación es especialmente valiosa para los grandes modelos lingüísticos y las redes neuronales generativas.&lt;/p&gt;
&lt;h2&gt;Tecnologías&lt;/h2&gt;
&lt;h3&gt;Para jugadores&lt;/h3&gt;
&lt;p&gt;El trazado de rayos en tiempo real se ha convertido en una de las tecnologías de GPU más revolucionarias, marcando el inicio de la línea RTX™. Para muchos consumidores, esta característica ha sido un factor clave en sus decisiones de compra. En las tarjetas de la serie RTX™ 50, la versión 4 de DLSS (Deep Learning Super Sampling) puede desempeñar un papel igualmente importante. Esta tecnología aumenta significativamente el rendimiento de la GPU en los juegos gracias a su enfoque híbrido de renderizado de fotogramas.&lt;/p&gt;
&lt;p&gt;Con DLSS activado, en lugar de renderizar cada fotograma de forma convencional, algunos fotogramas se generan en tiempo real utilizando IA. Mientras que las primeras versiones de esta tecnología sólo podían escalar los fotogramas a resoluciones superiores, DLSS 3 introdujo una capacidad más avanzada: por cada fotograma renderizado de forma convencional, puede generar un fotograma adicional creado por IA.&lt;/p&gt;
&lt;p&gt;DLSS 4 generará tres fotogramas creados por la IA por cada fotograma renderizado tradicionalmente. &lt;b translate=&quot;no&quot;&gt;This significantly increases the frame per second (FPS) without putting heavy load on the GPU.&lt;/b&gt; La IA analiza el movimiento de los objetos y la escena para garantizar que los fotogramas generados coincidan con los renderizados convencionalmente.&lt;/p&gt;
&lt;p&gt;Esto plantea una cuestión importante: ¿cómo gestionar el desfase de entrada? Como la generación de fotogramas lleva tiempo, cada iteración aumenta el tiempo de respuesta. Una imagen fluida con una respuesta lenta a las acciones del jugador puede afectar gravemente a la experiencia de juego. &lt;b translate=&quot;no&quot;&gt;To address this, NVIDIA® has improved their Reflex 2 technology alongside DLSS to minimize latency.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;En concreto, se integró Frame Warp en el sistema. Esta tecnología reduce la latencia del juego actualizando los fotogramas renderizados con la última entrada del ratón justo antes de la visualización. Mejora tanto la competición multijugador como la capacidad de respuesta para un solo jugador.&lt;/p&gt;
&lt;h3&gt;Para los creadores de contenidos&lt;/h3&gt;
&lt;p&gt;La serie RTX™ 50 no es solo para juegos. Los creadores de contenidos de vídeo encontrarán un valor significativo en estas nuevas GPU. El modelo insignia RTX™ 5090 viene equipado con 3 codificadores y 2 descodificadores, frente a los 2 codificadores y 1 descodificador de la RTX™ 4090. Estos componentes se han mejorado gracias a la colaboración con líderes del sector: Adobe, Blackmagic Design, ByteDance y Wondershare. &lt;b translate=&quot;no&quot;&gt;As a result, the RTX™ 5090 renders video 60% faster than the RTX™ 4090 and four times faster than the RTX™ 3090.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Además de las mejoras de velocidad, también se ha mejorado la calidad. &lt;b translate=&quot;no&quot;&gt;The 9th generation NVENC encoder delivers 5% better quality in HEVC and AV1 tasks. The AV1 Ultra Quality mode achieves better data compression while maintaining image quality, reducing file sizes by 5%.&lt;/b&gt; Esto se traduce en un renderizado de vídeo más rápido en la RTX™ 5090, y en una disminución del tiempo entre la edición y la producción.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Si echamos la vista atrás seis meses, las predicciones y expectativas de los expertos resultaron ser demasiado optimistas. A medida que se acercaba la fecha de lanzamiento, se hizo evidente que las nuevas GPU ofrecerían algo más que unidades de cálculo adicionales. &lt;b translate=&quot;no&quot;&gt;The key innovation would be new optimization and AI technologies enhancing existing frame rendering systems.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;En CES 2025, durante la presentación de la serie GPU 50, se desveló una nueva era de la IA. Esta visión retrataba un mundo en el que los asistentes digitales y los robots manejan tareas complejas. En su centro habría un ecosistema que combinaría superordenadores para el entrenamiento de la IA, aceleradores de inferencia asequibles para dispositivos de consumo y software versátil que funcionaría tanto localmente como en la nube. Aunque el alcance de este futuro sigue siendo incierto, una cosa está clara: estamos en el umbral de convertir la ciencia ficción en realidad.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;LeaderGPU remains committed to providing reliable access to these cutting-edge technologies. Order your first GPU server today and begin transforming your ideas into reality.&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/606-qu-es-la-destilaci-n-de-conocimientos&quot;&gt;¿Qué es la destilación de conocimientos?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/607-ventajas-y-desventajas-de-compartir-la-gpu&quot;&gt;Ventajas y desventajas de compartir la GPU&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/611-intel-habana-gaud-2-instalaci-n-y-prueba&quot;&gt;Intel Habana Gaudí 2: instalación y prueba&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/098/original/sh_nvidia_rtx_50_expectation_and_reality_1.png?1736938750"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:34:30 +0100</pubDate>
      <guid isPermaLink="false">609</guid>
      <dc:date>2025-01-23 13:34:30 +0100</dc:date>
    </item>
    <item>
      <title>Ventajas y desventajas de compartir la GPU</title>
      <link>https://www.leadergpu.es/catalog/607-ventajas-y-desventajas-de-compartir-la-gpu</link>
      <description>&lt;p&gt;La Ley de Moore sigue vigente desde hace casi medio siglo. Los chips procesadores siguen incorporando más transistores y las tecnologías avanzan día a día. A medida que evoluciona la tecnología, también lo hace nuestro enfoque de la informática. El auge de determinadas tareas informáticas ha influido significativamente en el desarrollo del hardware. Por ejemplo, los dispositivos diseñados originalmente para el procesamiento de gráficos son ahora herramientas clave y asequibles para las redes neuronales modernas.&lt;/p&gt;
&lt;p&gt;La gestión de los recursos informáticos también se ha transformado. Ahora, los servicios masivos rara vez utilizan mainframes, como hacían en los años setenta y ochenta. En su lugar, prefieren los servicios en la nube o construir su propia infraestructura. Este cambio ha modificado las demandas de los clientes, que se centran en un escalado rápido y a la carta y en maximizar el uso de los recursos informáticos asignados.&lt;/p&gt;
&lt;p&gt;Las tecnologías de virtualización y contenedorización surgieron como soluciones. Las aplicaciones se empaquetan ahora en contenedores con todas las bibliotecas necesarias, lo que simplifica la implantación y el escalado. Sin embargo, la gestión manual se volvió impracticable a medida que el número de contenedores se disparaba a miles. Orquestadores especializados como Kubernetes se encargan ahora de la gestión y el escalado eficaces. Estas herramientas se han convertido en una parte esencial de cualquier infraestructura de TI moderna.&lt;/p&gt;
&lt;h2&gt;Virtualización de servidores&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/075/original/sh_advantages_and_disadvantages_of_gpu_sharing_1.png?1731504150&quot; alt=&quot;Server virtualization&quot;&gt;
&lt;p&gt;Al mismo tiempo, las tecnologías de virtualización evolucionaron, permitiendo la creación de entornos aislados dentro de un único servidor físico. Las máquinas virtuales se comportan de forma idéntica a los servidores físicos normales, lo que permite utilizar herramientas de gestión estándar. Dependiendo del hipervisor, a menudo se incluye una API especializada que facilita la automatización de procedimientos rutinarios.&lt;/p&gt;
&lt;p&gt;Sin embargo, esta flexibilidad viene acompañada de una menor seguridad. Los atacantes han pasado de centrarse en las máquinas virtuales individuales a explotar las vulnerabilidades del hipervisor. Al hacerse con el control de un hipervisor, los atacantes pueden acceder a voluntad a todas las máquinas virtuales asociadas. A pesar de las continuas mejoras de seguridad, los hipervisores modernos siguen siendo objetivos atractivos.&lt;/p&gt;
&lt;p&gt;La virtualización tradicional aborda dos cuestiones clave. Primera cuestión: garantiza el aislamiento de las máquinas virtuales entre sí. Las soluciones bare-metal evitan este problema, ya que los clientes alquilan servidores físicos enteros bajo su control. Pero en el caso de las máquinas virtuales, el aislamiento se basa en el software a nivel del hipervisor. Un error de código o un fallo aleatorio pueden comprometer este aislamiento, con el consiguiente riesgo de fuga o corrupción de datos.&lt;/p&gt;
&lt;p&gt;El segundo problema se refiere a la gestión de recursos. Aunque es posible garantizar la asignación de recursos a máquinas virtuales específicas, la gestión de numerosas máquinas plantea un dilema. Los recursos pueden infrautilizarse, lo que se traduce en un menor número de máquinas virtuales por servidor físico. Este escenario no es rentable para la infraestructura y conduce inevitablemente a un aumento de los precios.&lt;/p&gt;
&lt;p&gt;Otra alternativa es utilizar mecanismos automáticos de gestión de recursos. Aunque a una máquina virtual se le asignan características específicas declaradas, en realidad sólo se le proporciona el mínimo necesario dentro de estos límites. Si la máquina necesita más tiempo de procesador o RAM, el hipervisor intentará proporcionárselo, pero no puede garantizarlo. Esta situación es similar al overbooking de los aviones, cuando las aerolíneas venden más billetes de los asientos disponibles.&lt;/p&gt;
&lt;p&gt;La lógica es idéntica. Si las estadísticas muestran que un 10% de los pasajeros no llegan a tiempo a su vuelo, las aerolíneas pueden vender un 10% más de billetes con un riesgo mínimo. Si llegan todos los pasajeros, algunos no cabrán a bordo. La aerolínea se enfrentará a consecuencias menores en forma de indemnización, pero probablemente seguirá con esta práctica.&lt;/p&gt;
&lt;p&gt;Muchos proveedores de infraestructuras emplean una estrategia similar. Algunos son transparentes al respecto, declarando que no garantizan la disponibilidad constante de recursos informáticos pero ofrecen precios significativamente reducidos. Otros utilizan mecanismos similares sin anunciarlo. Apuestan a que no todos los clientes utilizarán sistemáticamente el 100% de los recursos de sus servidores y, aunque algunos lo hagan, serán minoría. Mientras tanto, los recursos ociosos generan beneficios.&lt;/p&gt;
&lt;p&gt;En este contexto, las soluciones bare-metal tienen una ventaja. Garantizan que los recursos asignados son totalmente gestionados por el cliente y no compartidos con otros usuarios del proveedor de infraestructura. Esto elimina los escenarios en los que la alta carga de un usuario de un servidor vecino repercute negativamente en el rendimiento.&lt;/p&gt;
&lt;h2&gt;Virtualización de GPU&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/076/original/sh_advantages_and_disadvantages_of_gpu_sharing_2.png?1731504219&quot; alt=&quot;GPU virtualization&quot;&gt;
&lt;p&gt;La virtualización clásica se enfrenta inevitablemente al reto de emular dispositivos físicos. Para reducir los gastos generales, se han desarrollado tecnologías especiales que permiten a las máquinas virtuales acceder directamente a los dispositivos físicos del servidor. Este enfoque funciona bien en muchos casos, pero cuando se aplica a los procesadores gráficos, crea limitaciones inmediatas. Por ejemplo, si un servidor tiene instaladas 8 GPU, sólo 8 máquinas virtuales pueden acceder a ellas.&lt;/p&gt;
&lt;p&gt;Para superar esta limitación, se inventó la tecnología vGPU. Divide una GPU en varias lógicas, que pueden asignarse a máquinas virtuales. Esto permite que cada máquina virtual tenga su &quot;trozo de tarta&quot;, y su número total ya no está limitado por el número de tarjetas de vídeo instaladas en el servidor.&lt;/p&gt;
&lt;p&gt;Las GPU virtuales se utilizan con mayor frecuencia cuando se construye VDI (Virtual Desktop Infrastructure) en áreas en las que las máquinas virtuales requieren aceleración 3D. Por ejemplo, un puesto de trabajo virtual para un diseñador o planificador suele implicar procesamiento gráfico. La mayoría de las aplicaciones de estos campos realizan cálculos tanto en el procesador central como en la GPU. Este enfoque híbrido aumenta significativamente la productividad y garantiza un uso óptimo de los recursos de cálculo disponibles.&lt;/p&gt;
&lt;p&gt;Sin embargo, esta tecnología presenta varios inconvenientes. No es compatible con todas las GPU y sólo está disponible en el segmento de servidores. La compatibilidad también depende de la versión instalada del sistema operativo y del controlador de la GPU. vGPU tiene un mecanismo de licencia independiente, lo que incrementa sustancialmente los costes de las operaciones. Además, sus componentes de software pueden servir potencialmente como vectores de ataque.&lt;/p&gt;
&lt;p&gt;Recientemente, se &lt;a href=&quot;https://www.tomshardware.com/pc-components/gpu-drivers/nvidia-gpu-driver-addresses-eight-major-high-severity-vulnerabilities-nvidia-gpu-owners-should-update-asap&quot;&gt;ha publicado&lt;/a&gt; información sobre ocho vulnerabilidades que afectan a todos los usuarios de GPU NVIDIA®. Se identificaron seis vulnerabilidades en los controladores de la GPU y dos en el software vGPU. Estos problemas se solucionaron rápidamente, pero sirven para recordar que los mecanismos de aislamiento de estos sistemas no son impecables. La supervisión constante y la instalación oportuna de actualizaciones siguen siendo las principales formas de garantizar la seguridad.&lt;/p&gt;
&lt;p&gt;Cuando se construye una infraestructura para procesar datos confidenciales y sensibles de los usuarios, cualquier virtualización se convierte en un factor de riesgo potencial. En tales casos, un enfoque bare-metal puede ofrecer mejor calidad y seguridad.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Construir una infraestructura informática siempre requiere una evaluación de riesgos. Entre las preguntas clave que hay que plantearse se incluyen: ¿Están protegidos de forma segura los datos de los clientes? ¿Crean las tecnologías elegidas vectores de ataque adicionales? ¿Cómo se pueden aislar y eliminar las posibles vulnerabilidades? Responder a estas preguntas ayuda a tomar decisiones informadas y a protegerse contra problemas futuros.&lt;/p&gt;
&lt;p&gt;En LeaderGPU, hemos llegado a una conclusión clara: actualmente, la tecnología bare-metal es superior a la hora de garantizar la seguridad de los datos de los usuarios y, al mismo tiempo, constituye una base excelente para crear una nube bare-metal. Este enfoque permite a nuestros clientes mantener la flexibilidad sin asumir los riesgos añadidos asociados a la virtualización de la GPU.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/606-qu-es-la-destilaci-n-de-conocimientos&quot;&gt;¿Qué es la destilación de conocimientos?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/609-nvidia-rtx-50-expectativas-y-realidad&quot;&gt;NVIDIA® RTX™ 50: expectativas y realidad&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/611-intel-habana-gaud-2-instalaci-n-y-prueba&quot;&gt;Intel Habana Gaudí 2: instalación y prueba&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/076/original/sh_advantages_and_disadvantages_of_gpu_sharing_2.png?1731504219"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:24:12 +0100</pubDate>
      <guid isPermaLink="false">607</guid>
      <dc:date>2025-01-23 13:24:12 +0100</dc:date>
    </item>
    <item>
      <title>¿Qué es la destilación de conocimientos?</title>
      <link>https://www.leadergpu.es/catalog/606-qu-es-la-destilaci-n-de-conocimientos</link>
      <description>&lt;p&gt;Los grandes modelos lingüísticos (LLM) se han convertido en parte integrante de nuestras vidas gracias a sus capacidades únicas. Comprenden el contexto y generan textos coherentes y extensos basados en él. Pueden procesar y responder en cualquier idioma teniendo en cuenta los matices culturales de cada uno.&lt;/p&gt;
&lt;p&gt;Los LLM destacan en la resolución de problemas complejos, la programación, el mantenimiento de conversaciones y mucho más. Esta versatilidad se debe a que procesan grandes cantidades de datos de entrenamiento, de ahí el término &quot;grandes&quot;. Estos modelos pueden contener decenas o cientos de miles de millones de parámetros, lo que hace que consuman muchos recursos para su uso cotidiano.&lt;/p&gt;
&lt;p&gt;El entrenamiento es el proceso más exigente. Los modelos de redes neuronales aprenden procesando enormes conjuntos de datos, ajustando sus &quot;pesos&quot; internos para formar conexiones estables entre neuronas. Estas conexiones almacenan conocimientos que la red neuronal entrenada puede utilizar posteriormente en dispositivos finales.&lt;/p&gt;
&lt;p&gt;Sin embargo, la mayoría de los dispositivos finales carecen de la potencia de cálculo necesaria para ejecutar estos modelos. Por ejemplo, ejecutar la versión completa de Llama 2 (70B parámetros) requiere una GPU con 48 GB de memoria de vídeo, hardware que pocos usuarios tienen en casa, y menos aún en dispositivos móviles.&lt;/p&gt;
&lt;p&gt;En consecuencia, la mayoría de las redes neuronales modernas funcionan en infraestructuras en la nube y no en dispositivos portátiles, que acceden a ellas a través de API. Aun así, los fabricantes de dispositivos están avanzando en dos sentidos: equipando los dispositivos con unidades de cálculo especializadas, como las NPU, y desarrollando métodos para mejorar el rendimiento de los modelos compactos de redes neuronales.&lt;/p&gt;
&lt;h2&gt;Reducir el tamaño&lt;/h2&gt;
&lt;h3&gt;Cortar el exceso&lt;/h3&gt;
&lt;p&gt;La cuantización es el primer método, y el más eficaz, para reducir el tamaño de una red neuronal. Los pesos de las redes neuronales suelen utilizar números de 32 bits en coma flotante, pero podemos reducirlos cambiando este formato. Utilizar valores de 8 bits (o incluso unos binarios en algunos casos) puede reducir diez veces el tamaño de la red, aunque esto disminuye significativamente la precisión de la respuesta.&lt;/p&gt;
&lt;p&gt;La poda es otro método que elimina las conexiones sin importancia de la red neuronal. Este proceso funciona tanto durante el entrenamiento como con las redes terminadas. Además de las conexiones, la poda puede eliminar neuronas o capas enteras. Esta reducción de parámetros y conexiones reduce los requisitos de memoria.&lt;/p&gt;
&lt;p&gt;La descomposición matricial o tensorial es la tercera técnica habitual de reducción de tamaño. La descomposición de una matriz grande en un producto de tres matrices más pequeñas reduce los parámetros totales manteniendo la calidad. Esto puede reducir el tamaño de la red decenas de veces. La descomposición tensorial ofrece resultados aún mejores, aunque requiere más hiperparámetros.&lt;/p&gt;
&lt;p&gt;Aunque estos métodos reducen eficazmente el tamaño, todos se enfrentan al reto de la pérdida de calidad. Los modelos comprimidos de gran tamaño superan a sus homólogos más pequeños sin comprimir, pero cada compresión corre el riesgo de reducir la precisión de la respuesta. La destilación del conocimiento representa un intento interesante de equilibrar la calidad con el tamaño.&lt;/p&gt;
&lt;h3&gt;Intentémoslo juntos&lt;/h3&gt;
&lt;p&gt;La destilación de conocimientos se explica mejor mediante la analogía de un alumno y un profesor. Mientras los alumnos aprenden, los profesores enseñan y también actualizan continuamente sus conocimientos. Cuando ambos se encuentran con nuevos conocimientos, el profesor tiene ventaja, puede recurrir a sus amplios conocimientos de otras áreas, mientras que el alumno carece aún de esta base.&lt;/p&gt;
&lt;p&gt;Este principio se aplica a las redes neuronales. Cuando se entrenan dos redes neuronales del mismo tipo pero de distinto tamaño con datos idénticos, la red más grande suele obtener mejores resultados. Su mayor capacidad de &quot;conocimiento&quot; permite respuestas más precisas que su homóloga más pequeña. Esto plantea una posibilidad interesante: ¿por qué no entrenar la red más pequeña no sólo con el conjunto de datos, sino también con los resultados más precisos de la red más grande?&lt;/p&gt;
&lt;p&gt;Este proceso es la destilación del conocimiento: una forma de aprendizaje supervisado en el que un modelo más pequeño aprende a replicar las predicciones de uno más grande. Aunque esta técnica ayuda a compensar la pérdida de calidad al reducir el tamaño de la red neuronal, requiere más recursos informáticos y tiempo de entrenamiento.&lt;/p&gt;
&lt;h2&gt;Software y lógica&lt;/h2&gt;
&lt;p&gt;Una vez aclarados los fundamentos teóricos, examinemos el proceso desde una perspectiva técnica. Empezaremos con las herramientas de software que pueden guiarle a través de las etapas de formación y destilación de conocimientos.&lt;/p&gt;
&lt;p&gt;Python, junto con la biblioteca &lt;a href=&quot;https://pytorch.org/torchtune/stable/index.html&quot;&gt;TorchTune&lt;/a&gt; del ecosistema &lt;a href=&quot;https://pytorch.org/&quot;&gt;PyTorch&lt;/a&gt;, ofrece el enfoque más sencillo para estudiar y afinar grandes modelos lingüísticos. He aquí cómo funciona la aplicación:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/092/original/il_what_is_knowledge_distillation.png?1733302736&quot; alt=&quot;What is Knowledge Distillation main illustration&quot;&gt;
&lt;p&gt;Se cargan dos modelos: un modelo completo (profesor) y un modelo reducido (alumno). Durante cada iteración de entrenamiento, el modelo del profesor genera predicciones de alta temperatura, mientras que el modelo del alumno procesa el conjunto de datos para hacer sus propias predicciones.&lt;/p&gt;
&lt;p&gt;Los valores de salida brutos (logits) de ambos modelos se evalúan mediante una función de pérdida (una medida numérica de cuánto se desvía una predicción del valor correcto). A continuación, se aplican ajustes de peso al modelo del alumno mediante retropropagación. Esto permite al modelo más pequeño aprender y replicar las predicciones del modelo maestro.&lt;/p&gt;
&lt;p&gt;El principal archivo de configuración del código de la aplicación se denomina receta. Este archivo almacena todos los parámetros y ajustes de destilación, lo que hace que los experimentos sean reproducibles y permite a los investigadores hacer un seguimiento de cómo influyen los distintos parámetros en el resultado final.&lt;/p&gt;
&lt;p&gt;A la hora de seleccionar los valores de los parámetros y el número de iteraciones, es fundamental mantener el equilibrio. Un modelo que se destila demasiado puede perder su capacidad de reconocer detalles sutiles y el contexto, recurriendo por defecto a respuestas planificadas. Aunque el equilibrio perfecto es casi imposible de conseguir, una supervisión cuidadosa del proceso de destilación puede mejorar sustancialmente la calidad de la predicción incluso de los modelos de redes neuronales más modestos.&lt;/p&gt;
&lt;p&gt;También merece la pena prestar atención a la supervisión durante el proceso de entrenamiento. Esto ayudará a identificar los problemas a tiempo y a corregirlos con prontitud. Para ello, puede utilizar la herramienta &lt;a href=&quot;https://www.tensorflow.org/tensorboard&quot;&gt;TensorBoard&lt;/a&gt;. Se integra perfectamente en los proyectos PyTorch y permite evaluar visualmente muchas métricas, como la precisión y las pérdidas. Además, permite construir un gráfico del modelo, hacer un seguimiento del uso de memoria y del tiempo de ejecución de las operaciones.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;La destilación del conocimiento es un método eficaz para optimizar las redes neuronales con el fin de mejorar los modelos compactos. Funciona mejor cuando es esencial equilibrar el rendimiento con la calidad de la respuesta.&lt;/p&gt;
&lt;p&gt;Aunque la destilación de conocimientos requiere un seguimiento cuidadoso, sus resultados pueden ser notables. Los modelos se hacen mucho más pequeños manteniendo la calidad de la predicción, y funcionan mejor con menos recursos informáticos.&lt;/p&gt;
&lt;p&gt;Cuando se planifica bien con los parámetros adecuados, la destilación de conocimientos sirve como herramienta clave para crear redes neuronales compactas sin sacrificar la calidad.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/607-ventajas-y-desventajas-de-compartir-la-gpu&quot;&gt;Ventajas y desventajas de compartir la GPU&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/609-nvidia-rtx-50-expectativas-y-realidad&quot;&gt;NVIDIA® RTX™ 50: expectativas y realidad&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/611-intel-habana-gaud-2-instalaci-n-y-prueba&quot;&gt;Intel Habana Gaudí 2: instalación y prueba&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/092/original/il_what_is_knowledge_distillation.png?1733302736"
        length="0"
        type="image/jpeg"/>
      <pubDate>Thu, 23 Jan 2025 13:21:29 +0100</pubDate>
      <guid isPermaLink="false">606</guid>
      <dc:date>2025-01-23 13:21:29 +0100</dc:date>
    </item>
    <item>
      <title>AudioCraft de MetaAI: crear música por descripción</title>
      <link>https://www.leadergpu.es/catalog/604-audiocraft-de-metaai-crear-m-sica-por-descripci-n</link>
      <description>&lt;p&gt;Las redes neuronales generativas modernas son cada vez más inteligentes. Escriben historias, entablan conversaciones con la gente y crean imágenes ultrarrealistas. Ahora, pueden producir sencillas pistas de música sin necesidad de artistas profesionales. Este futuro ya es una realidad. Era de esperar, ya que las armonías y ritmos musicales tienen sus raíces en principios matemáticos.&lt;/p&gt;
&lt;p&gt;Meta ha demostrado su compromiso con el mundo del software de código abierto. Han puesto a disposición del público tres modelos de redes neuronales que permiten crear sonidos y música a partir de descripciones de texto:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;&lt;a href=&quot;https://musicgen.com/&quot;&gt;MusicGen&lt;/a&gt; - genera música a partir de texto.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://audiocraft.metademolab.com/audiogen.html&quot;&gt;AudioGen&lt;/a&gt; - genera audio a partir de texto.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/facebookresearch/encodec&quot;&gt;EnCodec&lt;/a&gt; - compresor neural de audio de alta calidad.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;MusicGen fue entrenado en 20.000 horas de música. Puede utilizarlo localmente a través de servidores LeaderGPU dedicados como plataforma.&lt;/p&gt;
&lt;h2&gt;Instalación estándar&lt;/h2&gt;
&lt;p&gt;Actualice el repositorio de caché de paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale el gestor de paquetes de Python, pip, y las bibliotecas ffmpeg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install python3-pip ffmpeg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala torch 2.0 o más reciente usando pip:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install &#39;torch&gt;=2.0&#39;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente comando instala automáticamente &lt;b translate=&quot;no&quot;&gt;audiocraft&lt;/b&gt; y todas las dependencias necesarias:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -U audiocraft&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos a escribir una sencilla aplicación Python, utilizando el &lt;a href=&quot;https://huggingface.co/facebook/musicgen-large&quot;&gt;gran modelo MusicGen pre-entrenado&lt;/a&gt; con 3.3B parámetros:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano generate.py&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;from audiocraft.models import MusicGen
from audiocraft.data.audio import audio_write
model = MusicGen.get_pretrained(&quot;facebook/musicgen-large&quot;)
model.set_generation_params(duration=30)  # generate a 30 seconds sample.
descriptions = [&quot;rock solo&quot;]
wav = model.generate(descriptions)  # generates sample.
for idx, one_wav in enumerate(wav):
    # Will save under {idx}.wav, with loudness normalization at -14 db LUFS.
    audio_write(f&#39;{idx}&#39;, one_wav.cpu(), model.sample_rate, strategy=&quot;loudness&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta la aplicación creada:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 generate.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después de unos segundos, el archivo generado (0.wav) aparecerá en el directorio.&lt;/p&gt;
&lt;h2&gt;Café Vampir 3&lt;/h2&gt;
&lt;p&gt;Clonar un repositorio de proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/CoffeeVampir3/audiocraft-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre el directorio clonado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd audiocraft-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el comando que prepara tu sistema e instala todos los paquetes necesarios:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, ejecute el servidor Coffee Vampire 3 con el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 webui.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Coffee Vampire 3 utiliza Flask como framework. Por defecto, se ejecuta en localhost con el puerto 5000. Si desea acceso remoto, por favor utilice la función de redirección de puertos en su cliente SSH. De lo contrario, puede organizar la conexión VPN al servidor.&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;&lt;i&gt;Atención. Se trata de una acción potencialmente peligrosa; utilícela bajo su propia responsabilidad:&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano webui.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Desplácese hasta el final y sustituya &lt;b translate=&quot;no&quot;&gt;socketio.run(app)&lt;/b&gt; por &lt;b translate=&quot;no&quot;&gt;socketio.run(app, host=’0.0.0.0’, port=5000)&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Guarde el archivo y ejecute el servidor utilizando el comando anterior. Esto permite el acceso al servidor desde la Internet pública sin ningún tipo de autenticación.&lt;/p&gt;
&lt;p&gt;No olvides &lt;b translate=&quot;no&quot;&gt;disable AdBlock software&lt;/b&gt;, ya que puede bloquear el reproductor de música a la derecha de la página web. Puedes empezar entrando en el prompt y confirmando con el botón &lt;b translate=&quot;no&quot;&gt;Submit&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/902/original/sh_audiocraft_by_metaai_create_music_by_description_1.png?1713360831&quot; alt=&quot;Main page Audiocraft WebUI&quot;&gt;
&lt;h2&gt;TTS Generation WebUI&lt;/h2&gt;
&lt;h3&gt;Paso 1. Controladores&lt;/h3&gt;
&lt;p&gt;Actualice el repositorio de caché de paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale los controladores NVIDIA® usando el instalador automático o nuestra guía &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot;&gt;Instalar controladores NVIDIA® en Linux&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicie el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Paso 2. Docker&lt;/h3&gt;
&lt;p&gt;El siguiente paso es instalar Docker. Vamos a instalar algunos paquetes que hay que añadir al repositorio de Docker: &lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install apt-transport-https curl gnupg-agent ca-certificates software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descarga la clave GPG de Docker y guárdala:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade el repositorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo add-apt-repository &quot;deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale &lt;b translate=&quot;no&quot;&gt;Docker CE&lt;/b&gt; (Community Edition) con CLI y el runtime &lt;b translate=&quot;no&quot;&gt;containerd&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install docker-ce docker-ce-cli containerd.io&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade el usuario actual al grupo docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo usermod -aG docker $USER&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aplicar los cambios sin el procedimiento de cierre de sesión e inicio de sesión:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;newgrp docker&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Paso 3. Paso de GPU&lt;/h3&gt;
&lt;p&gt;Vamos a habilitar NVIDIA® GPU passthrough en Docker. El siguiente comando lee la versión actual del sistema operativo en la variable de distribución, que podemos utilizar en el siguiente paso:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;distribution=$(. /etc/os-release;echo $ID$VERSION_ID)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descarga la clave GPG del repositorio de NVIDIA® y guárdala:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descarga la lista de repositorios de NVIDIA® y almacénala para utilizarla en el gestor de paquetes estándar de APT:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualiza el repositorio de caché de paquetes e instala el kit de herramientas GPU passthrough:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get update &amp;&amp; sudo apt-get install -y nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicia el demonio Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Paso 4. WebUI&lt;/h3&gt;
&lt;p&gt;Descargue el archivo del repositorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://github.com/rsxdalv/tts-generation-webui/archive/refs/heads/main.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descomprímelo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;unzip main.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre el directorio del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd tts-generation-webui-main&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Empieza a construir la imagen:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;docker build -t rsxdalv/tts-generation-webui .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el contenedor creado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;docker compose up -d&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puede abrir &lt;b translate=&quot;no&quot;&gt;http://[server_ip]:7860&lt;/b&gt;, escriba su consulta, seleccione el modelo necesario y pulse el botón &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/903/original/sh_audiocraft_by_metaai_create_music_by_description_2.png?1713360865
&quot; alt=&quot;Audiocraft generated sound&quot;&gt;
&lt;p&gt;El sistema descarga automáticamente el modelo seleccionado durante la primera generación. ¡Que aproveche!&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/594-stable-diffusion-rifusi-n&quot;&gt;Stable Diffusion: Rifusión&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/117/original/il_audiocraft_by_metaai_create_music_by_description.png?1737557205"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 15:51:35 +0100</pubDate>
      <guid isPermaLink="false">604</guid>
      <dc:date>2025-01-22 15:51:35 +0100</dc:date>
    </item>
    <item>
      <title>Cómo supervisar la aplicación LangFlow</title>
      <link>https://www.leadergpu.es/catalog/602-c-mo-supervisar-la-aplicaci-n-langflow</link>
      <description>&lt;p&gt;En nuestro artículo &lt;a href=&quot;https://www.leadergpu.es/articles/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow&quot;&gt;Langflow&lt;/a&gt;, creador de aplicaciones de IA de bajo código, exploramos cómo empezar a utilizar el entorno de programación visual de este creador de aplicaciones de IA de bajo código. Permite a cualquier persona, incluso sin conocimientos de programación, crear aplicaciones basadas en grandes modelos de redes neuronales. Podrían ser chatbots de IA o aplicaciones de procesamiento de documentos que pueden analizar y resumir contenido.&lt;/p&gt;
&lt;p&gt;Langflow utiliza un enfoque de bloques de construcción en el que los usuarios conectan componentes prefabricados para crear la aplicación deseada. Sin embargo, a menudo surgen dos retos clave: la resolución de problemas cuando las redes neuronales se comportan de forma inesperada y la gestión de los costes. Las redes neuronales requieren importantes recursos informáticos, por lo que es esencial controlar y predecir los gastos de infraestructura.&lt;/p&gt;
&lt;p&gt;LangWatch aborda ambos retos. Esta herramienta especializada ayuda a los desarrolladores de Langflow a supervisar las solicitudes de los usuarios, realizar un seguimiento de los costes y detectar anomalías, como cuando las aplicaciones se utilizan de forma no deseada.&lt;/p&gt;
&lt;p&gt;Esta herramienta se diseñó originalmente como un servicio, pero puede desplegarse en cualquier servidor, incluso localmente. Se integra con la mayoría de los proveedores de LLM, ya sean basados en la nube o locales. Al ser de código abierto, LangWatch puede adaptarse a casi cualquier proyecto: añadiendo nuevas funciones o conectándose con sistemas internos.&lt;/p&gt;
&lt;p&gt;LangWatch permite configurar alertas cuando determinadas métricas superan los umbrales definidos. Esto le ayuda a detectar rápidamente aumentos inesperados en los costes de las solicitudes o retrasos inusuales en las respuestas. La detección precoz ayuda a evitar gastos imprevistos y posibles ataques al servicio.&lt;/p&gt;
&lt;p&gt;Para los investigadores de redes neuronales, esta aplicación permite tanto la supervisión como la optimización de las peticiones habituales de los usuarios. También proporciona herramientas para evaluar la calidad de respuesta del modelo y realizar ajustes cuando sea necesario.&lt;/p&gt;
&lt;h2&gt;Inicio rápido&lt;/h2&gt;
&lt;h3&gt;Preparación del sistema&lt;/h3&gt;
&lt;p&gt;Al igual que Langflow, la forma más sencilla de ejecutar la aplicación es a través de un contenedor Docker. Antes de instalar LangWatch, necesitarás instalar Docker Engine en tu servidor. En primer lugar, actualiza tu caché de paquetes y los paquetes a sus últimas versiones:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala los paquetes adicionales requeridos por Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descarga la clave GPG para añadir el repositorio oficial de Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade el repositorio a APT utilizando la clave que descargaste e instalaste anteriormente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualice la lista de paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para asegurarte de que Docker se instalará desde el repositorio recién añadido y no desde el del sistema, puedes ejecutar el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;apt-cache policy docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instalar motor Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compruebe que Docker se ha instalado correctamente y que el demonio correspondiente se está ejecutando y se encuentra en el estado &lt;b translate=&quot;no&quot;&gt;active (running)&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status docker&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● docker.service - Docker Application Container Engine
    Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset&gt;
    Active: active (running) since Mon 2024-11-18 08:26:35 UTC; 3h 27min ago
TriggeredBy: ● docker.socket
      Docs: https://docs.docker.com
  Main PID: 1842 (dockerd)
     Tasks: 29
    Memory: 1.8G
       CPU: 3min 15.715s
    CGroup: /system.slice/docker.service&lt;/pre&gt;
&lt;h3&gt;Construir y ejecutar&lt;/h3&gt;
&lt;p&gt;Con el motor Docker instalado y en ejecución, puede descargar el repositorio de la aplicación LangWatch:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/langwatch/langwatch&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La aplicación incluye un archivo de configuración de ejemplo con variables de entorno. Copie este archivo para que la utilidad de creación de imágenes pueda procesarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp langwatch/.env.example langwatch/.env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora estás listo para el primer lanzamiento:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker compose up --build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El sistema tardará un momento en descargar todas las capas contenedoras necesarias para LangWatch. Una vez completado, verás un mensaje de consola indicando que la aplicación está disponible en:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;http://[LeaderGPU_IP_address]:3000&lt;/pre&gt;
&lt;p&gt;Vaya a esta página en su navegador, donde se le pedirá que cree una cuenta de usuario:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/089/original/sh_how_to_monitor_langflow_application_1.png?1732712766&quot; alt=&quot;LangWatch login screen&quot;&gt;
&lt;p&gt;A diferencia de Langflow, este sistema tiene la autenticación activada por defecto. Después de iniciar sesión, tendrá que configurar el sistema para recopilar datos de su servidor Langflow.&lt;/p&gt;
&lt;h2&gt;Integración con Langflow&lt;/h2&gt;
&lt;p&gt;LangWatch necesita una fuente de datos para funcionar. El servidor escucha en el puerto 3000 y utiliza una API RESTful, que autentica los datos entrantes a través de una clave de API generada automáticamente.&lt;/p&gt;
&lt;p&gt;Para habilitar la transferencia de datos, tendrá que establecer dos variables en los archivos de configuración de Langflow: &lt;b translate=&quot;no&quot;&gt;LANGWATCH_ENDPOINT&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;LANGWATCH_API_KEY&lt;/b&gt;. En primer lugar, establezca una conexión SSH a su servidor Langflow (que debe estar fuera de línea durante este proceso).&lt;/p&gt;
&lt;p&gt;Navegue hasta el directorio con la configuración de ejemplo para Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd langflow/docker_example&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra el archivo de configuración para editarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En la sección &quot;Entorno:&quot;, añada las siguientes variables (sin corchetes [] ni comillas):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;- LANGWATCH_API_KEY= [YOUR_API_KEY]
- LANGWATCH_ENDPOINT=http://[IP_ADDRESS]:3000&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El archivo YML requiere un formato específico. Siga estas dos reglas clave:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Utilice espacios (2 ó 4) para la sangría, nunca tabuladores.&lt;/li&gt;
    &lt;li&gt;Mantenga una estructura jerárquica adecuada con una sangría coherente.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Guarde el archivo con &lt;b translate=&quot;no&quot;&gt;Ctrl + O&lt;/b&gt; y salga del editor con &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;, Langflow ya está listo para ejecutarse:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker compose up&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después del lanzamiento, verifique que todo funciona correctamente. Cree un nuevo proyecto o abra uno existente, luego inicie un diálogo a través de Playground. Langflow enviará automáticamente datos a LangWatch para su monitorización, que podrá ver en la interfaz web.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/090/original/sh_how_to_monitor_langflow_application_2.png?1732712788&quot; alt=&quot;LangWatch integration checks&quot;&gt;
&lt;p&gt;En la sección de verificación de la integración, aparece una marca de verificación en el elemento &quot;Sincronizar el primer mensaje&quot;. Esto indica que los datos de Langflow están fluyendo con éxito a LangWatch, confirmando que su configuración es correcta. Examinemos que aparece en la sección &lt;b translate=&quot;no&quot;&gt;Messages&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/091/original/sh_how_to_monitor_langflow_application_3.png?1732712853&quot; alt=&quot;LangWatch messages lookup&quot;&gt;
&lt;p&gt;La sección Mensajes muestra los datos introducidos en la aplicación, los parámetros utilizados para la generación de la respuesta y la propia respuesta de la red neuronal. Puede evaluar la calidad de la respuesta y utilizar varios filtros para ordenar los datos, incluso con cientos o miles de mensajes.&lt;/p&gt;
&lt;p&gt;Tras esta configuración inicial, explora sistemáticamente las funciones de la aplicación. En la sección &lt;b translate=&quot;no&quot;&gt;Evaluations&lt;/b&gt;, puedes configurar algoritmos de verificación de diálogos para la moderación de diálogos o el reconocimiento de datos, como &lt;b translate=&quot;no&quot;&gt;PII Detection&lt;/b&gt;. Esta función escanea las entradas en busca de información sensible, como números de la seguridad social o números de teléfono.&lt;/p&gt;
&lt;p&gt;La aplicación ofrece opciones tanto locales como basadas en la nube a través de proveedores como Azure o Cloudflare. Para utilizar las funciones en la nube, necesitarás cuentas en estos servicios, junto con sus direcciones de punto final y claves API. Ten en cuenta que se trata de proveedores externos, así que comprueba directamente los costes de sus servicios.&lt;/p&gt;
&lt;p&gt;Para las opciones locales, la aplicación cuenta con sofisticadas funciones RAG (Retrieval-augmented generation). Puede medir la precisión y relevancia de los contenidos generados por RAG y utilizar las estadísticas recopiladas para optimizar el sistema RAG y obtener respuestas más precisas de la red neuronal.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow&quot;&gt;Creador de aplicaciones de inteligencia artificial de código reducido Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/586-fotogrametr-a-con-meshroom&quot;&gt;Fotogrametría con Meshroom&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/588-renderizado-remoto-en-blender-con-flamenco&quot;&gt;Renderizado remoto en Blender con Flamenco&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/088/original/il_how_to_monitor_langflow_application.png?1732712732"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 15:14:55 +0100</pubDate>
      <guid isPermaLink="false">602</guid>
      <dc:date>2025-01-22 15:14:55 +0100</dc:date>
    </item>
    <item>
      <title>Creador de aplicaciones de inteligencia artificial de código reducido Langflow</title>
      <link>https://www.leadergpu.es/catalog/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow</link>
      <description>&lt;p&gt;El desarrollo de software ha evolucionado espectacularmente en los últimos años. Los programadores modernos tienen ahora acceso a cientos de lenguajes y marcos de programación. Más allá de los enfoques imperativos y declarativos tradicionales, está surgiendo un nuevo y apasionante método de creación de aplicaciones. Este enfoque innovador aprovecha el poder de las redes neuronales, abriendo fantásticas posibilidades a los desarrolladores.&lt;/p&gt;
&lt;p&gt;La gente se ha acostumbrado a que los asistentes de IA de los IDE ayuden a autocompletar el código y a que las redes neuronales modernas generen fácilmente código para juegos sencillos en Python. Sin embargo, están surgiendo nuevas herramientas híbridas que podrían revolucionar el panorama del desarrollo. Una de ellas es Langflow.&lt;/p&gt;
&lt;p&gt;Langflow sirve para múltiples propósitos. Para los desarrolladores profesionales, ofrece un mejor control de sistemas complejos como las redes neuronales. Para quienes no están familiarizados con la programación, permite crear aplicaciones sencillas pero prácticas. Estos objetivos se logran a través de diferentes medios, que exploraremos con más detalle.&lt;/p&gt;
&lt;h2&gt;Redes neuronales&lt;/h2&gt;
&lt;p&gt;El concepto de red neuronal puede simplificarse para los usuarios. Imagine una caja negra que recibe datos de entrada y parámetros que influyen en el resultado final. Esta caja procesa la entrada utilizando algoritmos complejos, a menudo denominados &quot;mágicos&quot;, y produce datos de salida que pueden presentarse al usuario.&lt;/p&gt;
&lt;p&gt;El funcionamiento interno de esta caja negra varía en función del diseño de la red neuronal y de los datos de entrenamiento. Es fundamental comprender que los desarrolladores y los usuarios nunca pueden alcanzar una certeza del 100% en los resultados. A diferencia de la programación tradicional, en la que 2 + 2 siempre es igual a 4, una red neuronal puede dar esta respuesta con un 99% de certeza, manteniendo siempre un margen de error.&lt;/p&gt;
&lt;p&gt;El control sobre el proceso de &quot;pensamiento&quot; de una red neuronal es indirecto. Sólo podemos ajustar ciertos parámetros, como la &quot;temperatura&quot;. Este parámetro determina lo creativa o limitada que puede ser la red neuronal en su planteamiento. Un valor bajo de temperatura limita la red a un enfoque más formal y estructurado de las tareas y soluciones. Por el contrario, los valores altos de temperatura conceden más libertad a la red, lo que puede llevarla a basarse en hechos menos fiables o incluso a crear información ficticia.&lt;/p&gt;
&lt;p&gt;Este ejemplo ilustra cómo los usuarios pueden influir en el resultado final. Para la programación tradicional, esta incertidumbre plantea un reto importante: los errores pueden aparecer de forma inesperada y los resultados concretos se vuelven impredecibles. Sin embargo, esta imprevisibilidad es sobre todo un problema para los ordenadores, no para los humanos, que pueden adaptarse a resultados variables e interpretarlos.&lt;/p&gt;
&lt;p&gt;Si la salida de una red neuronal está destinada a un ser humano, la redacción específica utilizada para describirla suele ser menos importante. Dado el contexto, las personas pueden interpretar correctamente diversos resultados desde la perspectiva de la máquina. Mientras que conceptos como &quot;valor positivo&quot;, &quot;resultado obtenido&quot; o &quot;decisión positiva&quot; pueden significar más o menos lo mismo para una persona, la programación tradicional tendría problemas con esta flexibilidad. Tendría que tener en cuenta todas las posibles variaciones de respuesta, lo cual es casi imposible.&lt;/p&gt;
&lt;p&gt;En cambio, si el procesamiento posterior se transfiere a otra red neuronal, ésta puede entender y procesar correctamente el resultado obtenido. A partir de ahí, puede llegar a su propia conclusión con un cierto grado de confianza, como ya se ha dicho.&lt;/p&gt;
&lt;h2&gt;Código bajo&lt;/h2&gt;
&lt;p&gt;La mayoría de los lenguajes de programación implican escribir código. Los programadores crean mentalmente la lógica de cada parte de una aplicación y luego la describen mediante expresiones específicas del lenguaje. Este proceso forma un algoritmo: una secuencia Clara™ de acciones que conducen a un resultado específico y predeterminado. Es una tarea compleja que requiere un gran esfuerzo mental y un profundo conocimiento de las posibilidades del lenguaje.&lt;/p&gt;
&lt;p&gt;Sin embargo, no es necesario reinventar la rueda. Muchos de los problemas a los que se enfrentan los desarrolladores modernos ya se han resuelto de diversas maneras. A menudo se pueden &lt;a href=&quot;https://stackoverflow.com/&quot;&gt;encontrar&lt;/a&gt; fragmentos de código relevantes en StackOverflow. La programación moderna puede compararse con el ensamblaje de un todo a partir de piezas de diferentes juegos de construcción. El sistema Lego ofrece un modelo de éxito, al haber estandarizado diferentes conjuntos de piezas para garantizar la compatibilidad.&lt;/p&gt;
&lt;p&gt;El método de programación de bajo código sigue un principio similar. Se modifican varias piezas de código para que encajen a la perfección y se presentan a los desarrolladores como bloques listos para usar. Cada bloque puede tener entradas y salidas de datos. La documentación especifica la tarea que resuelve cada tipo de bloque y el formato en que acepta o emite datos.&lt;/p&gt;
&lt;p&gt;Al conectar estos bloques en una secuencia específica, los desarrolladores pueden formar el algoritmo de una aplicación y visualizar claramente su lógica operativa. Quizá el ejemplo más conocido de este método de programación sea el de los gráficos de tortuga, utilizado habitualmente en entornos educativos para introducir conceptos de programación y desarrollar el pensamiento algorítmico.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/078/original/sh_low-code_ai_app_builder_langflow_1.png?1732099423&quot; alt=&quot;Turtle graphics&quot;&gt;
&lt;p&gt;La esencia de este método es simple: dibujar imágenes en la pantalla utilizando una tortuga virtual que deja un rastro mientras se arrastra por el lienzo. Utilizando bloques prefabricados, como mover un número determinado de píxeles, girar en ángulos específicos o subir y bajar el lápiz, los desarrolladores pueden crear programas que dibujen las imágenes que deseen. La creación de aplicaciones mediante un constructor de bajo código es similar a los gráficos de tortuga, pero permite a los usuarios resolver una amplia gama de problemas, no sólo dibujar sobre un lienzo.&lt;/p&gt;
&lt;p&gt;Este método se implementó mejor en la herramienta de programación Node-RED de IBM. Se desarrolló como medio universal para garantizar el funcionamiento conjunto de diversos dispositivos, servicios en línea y API. El equivalente de los fragmentos de código eran nodos de la biblioteca estándar (paleta).&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/079/original/sh_low-code_ai_app_builder_langflow_2.png?1732099465&quot; alt=&quot;Node-RED canvas&quot;&gt;
&lt;p&gt;Las capacidades de Node-RED pueden ampliarse instalando complementos o creando nodos personalizados que realicen acciones de datos específicas. Los desarrolladores colocan los nodos de la paleta en el escritorio y establecen relaciones entre ellos. Este proceso crea la lógica de la aplicación, y la visualización ayuda a mantener la claridad.&lt;/p&gt;
&lt;p&gt;Si a este concepto se añaden las redes neuronales, se obtiene un sistema fascinante. En lugar de procesar los datos con fórmulas matemáticas específicas, puedes introducirlos en una red neuronal y especificar la salida deseada. Aunque los datos de entrada pueden variar ligeramente cada vez, los resultados siguen siendo aptos para ser interpretados por humanos u otras redes neuronales.&lt;/p&gt;
&lt;h2&gt;Generación Aumentada de Recuperación (RAG)&lt;/h2&gt;
&lt;p&gt;La precisión de los datos en los grandes modelos lingüísticos es una preocupación acuciante. Estos modelos se basan únicamente en los conocimientos adquiridos durante el entrenamiento, que depende de la relevancia de los conjuntos de datos utilizados. En consecuencia, los modelos lingüísticos de gran tamaño pueden carecer de suficientes datos pertinentes, lo que puede dar lugar a resultados incorrectos.&lt;/p&gt;
&lt;p&gt;Para resolver este problema, se necesitan métodos de actualización de datos. Permitir que las redes neuronales extraigan contexto de fuentes adicionales, como páginas web, puede mejorar notablemente la calidad de las respuestas. Así es como funciona precisamente RAG (Retrieval-Augmented Generation). Los datos adicionales se convierten en representaciones vectoriales y se almacenan en una base de datos.&lt;/p&gt;
&lt;p&gt;En funcionamiento, los modelos de redes neuronales pueden convertir las peticiones de los usuarios en representaciones vectoriales y compararlas con las almacenadas en la base de datos. Cuando se encuentran vectores similares, se extraen los datos y se utilizan para formar una respuesta. Las bases de datos vectoriales son lo bastante rápidas para soportar este esquema en tiempo real.&lt;/p&gt;
&lt;p&gt;Para que este sistema funcione correctamente, debe establecerse una interacción entre el usuario, el modelo de red neuronal, las fuentes de datos externas y la base de datos vectorial. Langflow simplifica esta configuración con su componente visual: los usuarios simplemente construyen bloques estándar y los &quot;enlazan&quot;, creando una ruta para el flujo de datos.&lt;/p&gt;
&lt;p&gt;El primer paso consiste en poblar la base de datos vectorial con las fuentes pertinentes. Éstas pueden incluir archivos de un ordenador local o páginas web de Internet. He aquí un sencillo ejemplo de carga de datos en la base de datos:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/080/original/sh_low-code_ai_app_builder_langflow_3.png?1732099495&quot; alt=&quot;RAG data load&quot;&gt;
&lt;p&gt;Ahora que tenemos una base de datos vectorial además del LLM entrenado, podemos incorporarla al esquema general. Cuando un usuario envía una petición en el chat, éste forma simultáneamente una petición y consulta la base de datos de vectores. Si se encuentran vectores similares, los datos extraídos se analizan y se añaden como contexto a la solicitud formada. A continuación, el sistema envía una petición a la red neuronal y emite la respuesta recibida al usuario en el chat.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/081/original/sh_low-code_ai_app_builder_langflow_4.png?1732099527&quot; alt=&quot;RAG scheme&quot;&gt;
&lt;p&gt;Aunque el ejemplo menciona servicios en la nube como OpenAI y AstraDB, puedes utilizar cualquier servicio compatible, incluidos los desplegados localmente en servidores LeaderGPU. Si no encuentras la integración que necesitas en la lista de bloques disponibles, puedes escribirla tú mismo o añadir una creada por otra persona.&lt;/p&gt;
&lt;h2&gt;Inicio rápido&lt;/h2&gt;
&lt;h3&gt;Preparación del sistema&lt;/h3&gt;
&lt;p&gt;La forma más sencilla de desplegar Langflow es dentro de un contenedor Docker. Para configurar el servidor, comience por instalar Docker Engine. A continuación, actualice tanto la caché de paquetes como los paquetes a sus últimas versiones:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale los paquetes adicionales requeridos por Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install apt-transport-https ca-certificates curl software-properties-common&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descarga la clave GPG para añadir el repositorio oficial de Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade el repositorio a APT utilizando la clave que descargaste e instalaste anteriormente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;echo &quot;deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable&quot; | sudo tee /etc/apt/sources.list.d/docker.list &gt; /dev/null&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualice la lista de paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para asegurarte de que Docker se instalará desde el repositorio recién añadido y no desde el del sistema, puedes ejecutar el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;apt-cache policy docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instalar motor Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install docker-ce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compruebe que Docker se ha instalado correctamente y que el demonio correspondiente se está ejecutando y se encuentra en el estado &lt;b translate=&quot;no&quot;&gt;active (running)&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status docker&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;● docker.service - Docker Application Container Engine
  Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset&gt;
  Active: active (running) since Mon 2024-11-18 08:26:35 UTC; 3h 27min ago
TriggeredBy: ● docker.socket
    Docs: https://docs.docker.com
Main PID: 1842 (dockerd)
   Tasks: 29
  Memory: 1.8G
     CPU: 3min 15.715s
  CGroup: /system.slice/docker.service
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Construir y ejecutar&lt;/h3&gt;
&lt;p&gt;Todo está listo para construir y ejecutar un contenedor Docker con Langflow. Sin embargo, hay una advertencia: en el momento de escribir esta guía, la última versión (etiquetada v1.1.0) tiene un error y no se inicia. Para evitar este problema, vamos a utilizar la versión anterior, v1.0.19.post2, que funciona perfectamente después de la descarga.&lt;/p&gt;
&lt;p&gt;Lo más sencillo es descargar el repositorio del proyecto desde GitHub:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/langflow-ai/langflow&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navega hasta el directorio que contiene la configuración de despliegue de ejemplo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd langflow/docker_example&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora tendrá que hacer dos cosas. Primero, cambiar la etiqueta release para que se construya una versión funcional (en el momento de escribir estas instrucciones). En segundo lugar, añada una autorización simple para que nadie pueda utilizar el sistema sin conocer el nombre de usuario y la contraseña.&lt;/p&gt;
&lt;p&gt;Abra el archivo de configuración:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano docker-compose.yml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;en lugar de la siguiente línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;image: langflowai/langflow:latest&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;especifique la versión en lugar de la etiqueta &lt;b translate=&quot;no&quot;&gt;latest&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;image: langflowai/langflow:v1.0.19.post2&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;También debe añadir tres variables a la sección &lt;b translate=&quot;no&quot;&gt;environment&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;  - LANGFLOW_AUTO_LOGIN=false
  - LANGFLOW_SUPERUSER=admin
  - LANGFLOW_SUPERUSER_PASSWORD=your_secure_password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La primera variable desactiva el acceso a la interfaz web sin autorización. La segunda añade el nombre de usuario que recibirá derechos de administrador del sistema. La tercera añade la contraseña correspondiente.&lt;/p&gt;
&lt;p&gt;Si tiene previsto almacenar el archivo &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt; en un sistema de control de versiones, evite escribir la contraseña directamente en este archivo. En su lugar, cree un archivo independiente con extensión &lt;b translate=&quot;no&quot;&gt;.env&lt;/b&gt; en el mismo directorio y almacene allí el valor de la variable.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;LANGFLOW_SUPERUSER_PASSWORD=your_secure_password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En el archivo &lt;b translate=&quot;no&quot;&gt;docker-compose.yml&lt;/b&gt;, ahora puede hacer referencia a una variable en lugar de especificar directamente una contraseña:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;LANGFLOW_SUPERUSER_PASSWORD=${LANGFLOW_SUPERUSER_PASSWORD}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para evitar exponer accidentalmente el archivo &lt;b translate=&quot;no&quot;&gt;*.env&lt;/b&gt; en GitHub, recuerda añadirlo a &lt;b translate=&quot;no&quot;&gt;.gitignore&lt;/b&gt;. Esto mantendrá tu contraseña razonablemente a salvo de accesos no deseados.&lt;/p&gt;
&lt;p&gt;Ahora, todo lo que queda es construir nuestro contenedor y ejecutarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker compose up&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre la página web en &lt;b translate=&quot;no&quot;&gt;http://[LeaderGPU_IP_address]:7860&lt;/b&gt;, y verás el formulario de autorización:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/082/original/sh_low-code_ai_app_builder_langflow_5.png?1732099559&quot; alt=&quot;Login screen&quot;&gt;
&lt;p&gt;Una vez que introduzcas tu nombre de usuario y contraseña, el sistema te dará acceso a la interfaz web donde podrás crear tus propias aplicaciones. Para una orientación más detallada, le sugerimos que consulte &lt;a href=&quot;https://docs.langflow.org/&quot;&gt;la documentación oficial&lt;/a&gt;. En ella se ofrecen detalles sobre diversas variables de entorno que permiten personalizar fácilmente el sistema para adaptarlo a sus necesidades.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/602-c-mo-supervisar-la-aplicaci-n-langflow&quot;&gt;Cómo supervisar la aplicación LangFlow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/586-fotogrametr-a-con-meshroom&quot;&gt;Fotogrametría con Meshroom&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/588-renderizado-remoto-en-blender-con-flamenco&quot;&gt;Renderizado remoto en Blender con Flamenco&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/077/original/il_low-code_ai_app_builder_langflow.png?1732099387"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 15:11:30 +0100</pubDate>
      <guid isPermaLink="false">601</guid>
      <dc:date>2025-01-22 15:11:30 +0100</dc:date>
    </item>
    <item>
      <title>Easy Diffusion UI</title>
      <link>https://www.leadergpu.es/catalog/598-easy-diffusion-ui</link>
      <description>&lt;p&gt;Easy Diffusion UI es un software de código abierto disponible para su descarga en GitHub. A continuación te explicamos cómo instalarlo en Ubuntu 22.04 LTS. Si acabas de alquilar un servidor, instala los controladores de la GPU y amplía tu directorio de inicio. A continuación, descarga la última versión de Easy Diffusion UI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://github.com/cmdr2/stable-diffusion-ui/releases/latest/download/Easy-Diffusion-Linux.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descomprime el archivo ZIP descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;unzip Easy-Diffusion-Linux.zip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambia el directorio a easy-diffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd easy-diffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inicie la instalación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta es una colección de scripts que descarga e instala automáticamente todos los componentes necesarios. También descarga el modelo estándar de Difusión Estable en formato SafeTensors. Una vez finalizadas todas las descargas e instalaciones, la interfaz de usuario de Easy Diffusion se iniciará automáticamente.&lt;/p&gt;
&lt;h2&gt;Uso de&lt;/h2&gt;
&lt;p&gt;El artículo anterior, &lt;a href=&quot;https://www.leadergpu.es/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;, esboza un método para aceptar conexiones desde la Internet pública y proporciona un simple login y contraseña de autorización. En este caso, pretendemos demostrar otro método universal para reenviar puertos a través de una conexión SSH. Utilizamos PuTTY para establecer una conexión segura con el servidor remoto. Puedes encontrar más información al respecto en nuestra guía &lt;a href=&quot;https://www.leadergpu.es/articles/488-conectarse-a-un-servidor-linux&quot;&gt;Conectarse a un servidor Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Para elegir los puertos a redireccionar, abra &lt;b translate=&quot;no&quot;&gt;Connection &gt; SSH &gt; Tunnels&lt;/b&gt; en el árbol de opciones de la izquierda. Escribe &lt;b translate=&quot;no&quot;&gt;9000&lt;/b&gt; en el campo &lt;b translate=&quot;no&quot;&gt;Source Port&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;127.0.0.1:9000&lt;/b&gt; en el campo &lt;b translate=&quot;no&quot;&gt;Destination&lt;/b&gt;. A continuación, haz clic en el botón &lt;b translate=&quot;no&quot;&gt;Add&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/823/original/sh_easy_diffusion_ui_1.png?1712299445&quot; alt=&quot;Port forwarding in PuTTY&quot;&gt;
&lt;p&gt;Después, puedes volver a &lt;b translate=&quot;no&quot;&gt;Session&lt;/b&gt; y guardarlo para utilizarlo más adelante. Conéctate al servidor remoto como de costumbre. Ahora, todos los datos que envíes o recibas en el puerto 9000 de la dirección de loopback 127.0.0.1 se redirigirán al servidor remoto. Este método crea un túnel seguro virtual que existe mientras dure la conexión.&lt;/p&gt;
&lt;p&gt;Una vez que Easy Diffusion UI se inicia y el reenvío de puertos está activado, puede abrir un navegador web y navegar a la dirección &lt;a href=&quot;http://127.0.0.1:9000&quot;&gt;http://127.0.0.1:9000.&lt;/a&gt; Recomendamos descargar e instalar modelos personalizados, como se describe en este artículo, en lugar de confiar únicamente en el modelo estándar para generar imágenes. No olvide aumentar el número de pasos de inferencia y ajustar la resolución de imagen deseada (marcada con asteriscos).&lt;/p&gt;
&lt;p&gt;Una de las principales ventajas de Easy Diffusion UI es su compatibilidad con múltiples GPUs. Cuando quieras crear un lote de imágenes, puedes elegir cuántas imágenes se crearán en paralelo. Por ejemplo, si tienes una configuración de doble GPU:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/824/original/sh_easy_diffusion_ui_2.png?1712299546&quot; alt=&quot;Easy Diffusion UI change threads number&quot;&gt;
&lt;p&gt;Puedes visualizar la carga de la GPU durante el proceso de generación de imágenes. Establece otra conexión SSH y ejecuta un único comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;watch -n 1 nvidia-smi&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/825/original/sh_easy_diffusion_ui_3.png?1712299806&quot; alt=&quot;nvidia-smi two threads&quot;&gt;
&lt;p&gt;Además, Easy Diffusion UI simplifica la creación de indicaciones, ya que proporciona numerosos ejemplos de modificadores de imagen. Puede mezclarlos para conseguir resultados más precisos:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/826/original/sh_easy_diffusion_ui_4.png?1712299873&quot; alt=&quot;Image modifiers&quot;&gt;
&lt;p&gt;Es una buena idea explorar &lt;a href=&quot;https://openart.ai/promptbook&quot;&gt;PromptBook de OpenArt&lt;/a&gt;. Esta guía puede mejorar significativamente tus habilidades de creación de avisos. Con Easy Diffusion UI, una vez generada la imagen, puede descargarla, utilizarla como ejemplo para generar la siguiente imagen o realizar modificaciones con un solo clic:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/827/original/sh_easy_diffusion_ui_5.png?1712299912&quot; alt=&quot;Control elements&quot;&gt;
&lt;p&gt;El uso más común del botón &lt;b translate=&quot;no&quot;&gt;Upscale&lt;/b&gt; es aumentar la resolución de una imagen. La red neuronal generativa utiliza la imagen original como base y añade píxeles adicionales, interpolando así la imagen de origen al tamaño deseado.&lt;/p&gt;
&lt;p&gt;Al generar rostros, pueden surgir problemas como ojos desalineados, tamaños desproporcionados o partes malformadas. Afortunadamente, estos problemas pueden solucionarse con el botón &lt;b translate=&quot;no&quot;&gt;Fix Faces&lt;/b&gt;. Además, pueden utilizarse indicaciones negativas para evitar que se generen caras incorrectas.&lt;/p&gt;
&lt;h2&gt;Desinstalar&lt;/h2&gt;
&lt;p&gt;Todos los archivos, scripts, bibliotecas y modelos se almacenan en un único directorio. Si desea eliminar Easy Diffusion UI de su servidor, simplemente borre este directorio junto con todo el contenido:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo rm -rf easy-diffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/584-open-webui-todo-en-uno&quot;&gt;Open WebUI: Todo en uno&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/590-fooocus-replanteamiento-de-sd-y-mj&quot;&gt;Fooocus: Replanteamiento de SD y MJ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/822/original/il_easy_diffusion_ui.jpg?1712299313"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 12:13:37 +0100</pubDate>
      <guid isPermaLink="false">598</guid>
      <dc:date>2025-01-22 12:13:37 +0100</dc:date>
    </item>
    <item>
      <title>Stable Video Diffusion</title>
      <link>https://www.leadergpu.es/catalog/597-stable-video-diffusion</link>
      <description>&lt;p&gt;Las redes neuronales generativas pueden crear varios tipos de contenidos. Stable Diffusion se creó para generar imágenes a partir de la descripción de textos. Sin embargo, también puede utilizarse para crear música, sonidos e incluso vídeos. Hoy, te mostraremos cómo crear videos cortos a partir de una sola imagen utilizando Stable Diffusion con WebUI y ComfyUI.&lt;/p&gt;
&lt;h2&gt;Instalar Stable Diffusion&lt;/h2&gt;
&lt;p&gt;Comencemos instalando Stable Diffusion usando nuestra &lt;a href=&quot;https://www.leadergpu.com/articles/506-stable-diffusion-webui&quot;&gt;guía paso a paso&lt;/a&gt;. Tras la instalación, por favor interrumpe la ejecución del script &lt;b translate=&quot;no&quot;&gt;webui.sh&lt;/b&gt; pulsando Ctrl + C y cierra la conexión SSH. El sistema no le permite instalar extensiones con las opciones --listen (--share) habilitadas. Esto significa que necesita configurar el reenvío de puertos (7860 y 8189) desde su máquina local al servidor remoto. El primer puerto es necesario para WebUI y el segundo para ComfyUI.&lt;/p&gt;
&lt;p&gt;Por ejemplo, en PuTTY, necesitas abrir &lt;b translate=&quot;no&quot;&gt;Connection &gt;&gt; SSH &gt;&gt; Tunnels&lt;/b&gt; y añadir dos nuevos puertos reenviados como se muestra en la siguiente captura de pantalla:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/954/original/sh_stable_video_diffusion_1.png?1714024360&quot; alt=&quot;PuTTY port forwarding&quot;&gt;
&lt;p&gt;Ahora, puedes reconectarte al servidor remoto y ejecutar ./webui.sh de nuevo.&lt;/p&gt;
&lt;p&gt;Abra esta URL en su navegador:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;http://127.0.0.1:7860&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navegue hasta &lt;b translate=&quot;no&quot;&gt;Extensions &gt;&gt; Available&lt;/b&gt;, luego haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Load from:&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/955/original/sh_stable_video_diffusion_2.png?1714024393&quot; alt=&quot;Load available extensions&quot;&gt;
&lt;p&gt;El sistema descargará el archivo JSON con todas las extensiones disponibles. Escriba &lt;b translate=&quot;no&quot;&gt;ComfyUI&lt;/b&gt; en el cuadro de entrada de búsqueda y haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/956/original/sh_stable_video_diffusion_3.png?1714024430&quot; alt=&quot;Download ComfyUI&quot;&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/957/original/sh_stable_video_diffusion_4.png?1714024463&quot; alt=&quot;Reload UI&quot;&gt;
&lt;p&gt;La página web se recargará y aparecerá una nueva pestaña &lt;b translate=&quot;no&quot;&gt;ComfyUI&lt;/b&gt; en el panel principal. Cambie a ella y haga clic en &lt;b translate=&quot;no&quot;&gt;Install ComfyUI&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/958/original/sh_stable_video_diffusion_5.png?1714024493&quot; alt=&quot;Install ComfyUI&quot;&gt;
&lt;p&gt;Cuando termine la instalación, interrumpe de nuevo la ejecución del script webui.sh pulsando &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt;.&lt;/p&gt;
&lt;h2&gt;Instalar el modelo Stable Video Diffusion&lt;/h2&gt;
&lt;p&gt;Abra el directorio del modelo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd stable-diffusion-webui/models/Stable-diffusion/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue el modelo completo de difusión de vídeo estable:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -L https://huggingface.co/stabilityai/stable-video-diffusion-img2vid-xt/resolve/main/svd_xt.safetensors?download=true --output svd_xt.safetensors&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Volver al directorio de inicio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y ejecute de nuevo el servicio Stable Diffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descarga el &lt;a href=&quot;https://github.com/enikolair/comfyui-workflow-svd/blob/main/workflow.json&quot;&gt;ejemplo&lt;/a&gt; del flujo de trabajo de Difusión de Video Estable en formato JSON. Borra el flujo de trabajo por defecto de ComfyUI pulsando &lt;b translate=&quot;no&quot;&gt;Clear&lt;/b&gt;, luego &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt; el ejemplo descargado:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/959/original/sh_stable_video_diffusion_6.png?1714024532&quot; alt=&quot;ComfyUI workflow example&quot;&gt;
&lt;p&gt;Asegúrate de que tienes el modelo correcto seleccionado en el nodo &lt;b translate=&quot;no&quot;&gt;Image Only Checkpoint Loader (img2vid model)&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/960/original/sh_stable_video_diffusion_7.png?1714024570&quot; alt=&quot;Select CKPT model&quot;&gt;
&lt;p&gt;Pulsa el botón &lt;b translate=&quot;no&quot;&gt;choose file to upload&lt;/b&gt; en el nodo &lt;b translate=&quot;no&quot;&gt;Load Image&lt;/b&gt; y selecciona cualquier imagen individual que la red neuronal generativa transformará en un vídeo:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/961/original/sh_stable_video_diffusion_8.png?1714024606&quot; alt=&quot;Upload an image to ComfyUI&quot;&gt;
&lt;p&gt;Pruebe a generar un vídeo con todos los parámetros por defecto haciendo clic en el botón &lt;b translate=&quot;no&quot;&gt;Queue Prompt&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/962/original/sh_stable_video_diffusion_9.png?1714024638&quot; alt=&quot;Send task to queue&quot;&gt;
&lt;p&gt;Una vez finalizado el proceso, obtendrá su vídeo en formato WEBP en el nodo &lt;b translate=&quot;no&quot;&gt;SaveAnimatedWEBP&lt;/b&gt;. Haga clic con el botón derecho en el vídeo generado y elija &lt;b translate=&quot;no&quot;&gt;Save Image&lt;/b&gt;:&lt;/p&gt;
&lt;p&gt;Aquí tienes el &lt;a href=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/963/original/sh_stable_video_diffusion_10.gif?1714024668&quot;&gt;GIF resultante&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Solución de problemas&lt;/h2&gt;
&lt;p&gt;Si aparece un mensaje de error: &lt;b translate=&quot;no&quot;&gt;ModuleNotFoundError: No module named &#39;utils.json_util&#39;; &#39;utils&#39; is not a package&lt;/b&gt;, siga estos pasos:&lt;/p&gt;
&lt;p&gt;Cambie el nombre del directorio utils por utilities:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mv /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/utils /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/utilities&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Edite &lt;b translate=&quot;no&quot;&gt;custom_node_manager.py&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/app/custom_node_manager.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sustituya esta línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;from utils.json_util import merge_json_recursive&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;por:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;from utilities.json_util import merge_json_recursive&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo (&lt;b translate=&quot;no&quot;&gt;Ctrl + O&lt;/b&gt;) y salga del editor (&lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;). A continuación, edite &lt;b translate=&quot;no&quot;&gt;main.py&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /home/usergpu/stable-diffusion-webui/extensions/sd-webui-comfyui/ComfyUI/main.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reemplace esta línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;import utils.extra_config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;por:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot;&gt;import utilities.extra_config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo, salga del editor y ejecute de nuevo el servicio Difusión Estable:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/594-stable-diffusion-rifusi-n&quot;&gt;Stable Diffusion: Rifusión&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/604-audiocraft-de-metaai-crear-m-sica-por-descripci-n&quot;&gt;AudioCraft de MetaAI: crear música por descripción&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/953/original/il_stable_video_diffusion.png?1714024295"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 11:53:04 +0100</pubDate>
      <guid isPermaLink="false">597</guid>
      <dc:date>2025-01-22 11:53:04 +0100</dc:date>
    </item>
    <item>
      <title>PyTorch para Windows</title>
      <link>https://www.leadergpu.es/catalog/596-pytorch-para-windows</link>
      <description>&lt;p&gt;Antes de empezar a instalar PyTorch, necesitas instalar el intérprete de Python y Microsoft Visual C++ Redistributable. Abre un navegador web y navega hasta la &lt;a href=&quot;https://www.python.org/downloads/windows/&quot;&gt;página de descargas&lt;/a&gt; de Python. Busca la última versión de Python 3 y haz clic en el enlace:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/828/original/sh_pytorch_for_windows_1.png?1712305722&quot; alt=&quot;Download Python release&quot;&gt;
&lt;p&gt;A continuación, desplácese por la página y haga clic en &lt;b translate=&quot;no&quot;&gt;Windows Installer (64-bit)&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/829/original/sh_pytorch_for_windows_2.png?1712305818&quot; alt=&quot;Select binary&quot;&gt;
&lt;p&gt;Abre el archivo descargado para proceder a la instalación:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/830/original/sh_pytorch_for_windows_3.png?1712306001&quot; alt=&quot;Run the installer&quot;&gt;
&lt;p&gt;Marque la casilla &lt;b translate=&quot;no&quot;&gt;Add python.exe to PATH&lt;/b&gt; y haga clic en &lt;b translate=&quot;no&quot;&gt;Install Now&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/831/original/sh_pytorch_for_windows_4.png?1712306095&quot; alt=&quot;Select Install Now and Add to PATH&quot;&gt;
&lt;p&gt;Espera un minuto a que finalice el proceso de instalación:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/832/original/sh_pytorch_for_windows_5.png?1712314249&quot; alt=&quot;Python setup process&quot;&gt;
&lt;p&gt;Puede optar por &lt;b translate=&quot;no&quot;&gt;Disable path length limit&lt;/b&gt; si tiene previsto utilizar nombres largos que podrían superar los límites de &lt;b translate=&quot;no&quot;&gt;MAX_PATH&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/833/original/sh_pytorch_for_windows_6.png?1712314332&quot; alt=&quot;Python setup complete&quot;&gt;
&lt;h2&gt;Instale MS Visual C++&lt;/h2&gt;
&lt;p&gt;A continuación, descargue Microsoft Visual C++ Redistributable utilizando &lt;a href=&quot;https://aka.ms/vs/16/release/vc_redist.x64.exe&quot;&gt;este enlace&lt;/a&gt; y haga clic en el instalador:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/834/original/sh_pytorch_for_windows_7.png?1712314944&quot; alt=&quot;Run Microsoft visual C++ redistributable installer&quot;&gt;
&lt;p&gt;Debe marcar la casilla &lt;b translate=&quot;no&quot;&gt;I agree to the license terms and conditions&lt;/b&gt; y hacer clic en el botón &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/835/original/sh_pytorch_for_windows_8.png?1712315044&quot; alt=&quot;Visual C++ accept EULA&quot;&gt;
&lt;p&gt;Después de unos segundos, este software se instalará y podrás &lt;b translate=&quot;no&quot;&gt;Close&lt;/b&gt; el instalador:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/836/original/sh_pytorch_for_windows_9.png?1712315122&quot; alt=&quot;Visual C++ installation complete&quot;&gt;
&lt;p&gt;Ahora, todo está listo para la instalación de PyTorch. Haz clic en el botón &lt;b translate=&quot;no&quot;&gt;Start&lt;/b&gt; y escribe &lt;b translate=&quot;no&quot;&gt;cmd&lt;/b&gt; en el teclado. Haz clic con el botón derecho del ratón en &lt;b translate=&quot;no&quot;&gt;Command Prompt&lt;/b&gt; y selecciona &lt;b translate=&quot;no&quot;&gt;Run as administrator&lt;/b&gt; en el menú contextual:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/837/original/sh_pytorch_for_windows_10.png?1712315294&quot; alt=&quot;PyTorch install using PIP&quot;&gt;
&lt;h2&gt;Instalar PyTorch&lt;/h2&gt;
&lt;p&gt;Ejecuta el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;pip install torch torchvision&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si desea instalar una versión específica de PyTorch, puede especificarla durante la instalación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;pip install torch==1.9.0 torchvision==0.10.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez completada la instalación, comprobemos que PyTorch funciona correctamente. Ejecute el siguiente comando para abrir el intérprete de Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;python&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Escribe estas dos cadenas, terminando tu entrada con la tecla &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;import torch
print(torch.__version__)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si obtienes un resultado como este, significa que PyTorch fue instalado correctamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;2.0.1+cu117&lt;/pre&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/595-pytorch-para-linux&quot;&gt;PyTorch para Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/581-privategpt-ia-para-documentos&quot;&gt;PrivateGPT: IA para documentos&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/584-open-webui-todo-en-uno&quot;&gt;Open WebUI: Todo en uno&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/114/original/il_pytorch_for_windows.png?1737541812"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 11:35:30 +0100</pubDate>
      <guid isPermaLink="false">596</guid>
      <dc:date>2025-01-22 11:35:30 +0100</dc:date>
    </item>
    <item>
      <title>PyTorch para Linux</title>
      <link>https://www.leadergpu.es/catalog/595-pytorch-para-linux</link>
      <description>&lt;p&gt;Las distribuciones modernas de Linux dependen en gran medida de la versión instalada de Python. Por lo tanto, antes de instalar PyTorch, recomendamos crear un entorno virtual utilizando nuestra guía paso a paso &lt;a href=&quot;https://www.leadergpu.es/articles/510-utilidades-del-sistema-linux&quot;&gt;Utilidades del sistema Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Active el venv creado y proceda con la actualización pip3:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip3 install --upgrade pip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inicie la instalación de PyTorch:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip3 install torch torchvision&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si quieres instalar una versión específica de PyTorch, simplemente escribe el número de versión requerido:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip3 install torch==1.9.0 torchvision==0.10.0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando la instalación haya terminado, comprobemos que PyTorch se ha instalado correctamente. Abra el intérprete de Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python3&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Escribe estas dos cadenas, terminando tu entrada con la tecla Enter:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;import torch
print(torch.__version__)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si obtiene un resultado como este, significa que PyTorch ha sido instalado correctamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;2.0.1+cu117&lt;/pre&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/596-pytorch-para-windows&quot;&gt;PyTorch para Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/601-creador-de-aplicaciones-de-inteligencia-artificial-de-c-digo-reducido-langflow&quot;&gt;Creador de aplicaciones de inteligencia artificial de código reducido Langflow&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/604-audiocraft-de-metaai-crear-m-sica-por-descripci-n&quot;&gt;AudioCraft de MetaAI: crear música por descripción&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/113/original/il_pytorch_for_linux.png?1737536957"
        length="0"
        type="image/jpeg"/>
      <pubDate>Wed, 22 Jan 2025 10:14:16 +0100</pubDate>
      <guid isPermaLink="false">595</guid>
      <dc:date>2025-01-22 10:14:16 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: Rifusión</title>
      <link>https://www.leadergpu.es/catalog/594-stable-diffusion-rifusi-n</link>
      <description>&lt;p&gt;En nuestros artículos anteriores, exploramos las fascinantes capacidades de la Difusión Estable para generar imágenes cautivadoras. Sin embargo, es importante señalar que esta potente red neuronal generativa tiene aún más que ofrecer.&lt;/p&gt;
&lt;p&gt;Riffusion es un modelo de Difusión Estable para la creación y edición de música. Con Riffusion, puedes generar un espectrograma de un segmento musical deseado y transformarlo sin esfuerzo en un fragmento musical. Instalemos Riffusion en un servidor LeaderGPU y probémoslo en acción.&lt;/p&gt;
&lt;h2&gt;Requisitos previos&lt;/h2&gt;
&lt;p&gt;Empieza por actualizar el repositorio de caché de paquetes y los paquetes instalados:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No olvides instalar los controladores NVIDIA® mediante el comando &lt;b translate=&quot;no&quot;&gt;autoinstall&lt;/b&gt; o manualmente, siguiendo nuestra guía &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot;&gt;paso a paso&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicia el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para crear un entorno virtual, los desarrolladores sugieren utilizar una herramienta llamada Anaconda. También puedes usar venv, de la que hablamos en el tutorial de utilidades del sistema Linux. Descarga el script de instalación de Anaconda usando curl:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl --output anaconda.sh https://repo.anaconda.com/archive/Anaconda3-5.3.1-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hazlo ejecutable:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod +x anaconda.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y ejecuta:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./anaconda.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Responde SÍ a todas las preguntas, excepto a la última (instalar Microsoft VSCode). A continuación, vuelve a iniciar sesión en la consola SSH y crea un nuevo entorno virtual con Python v3.9:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda create --name riffusion python=3.9&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Activa el nuevo entorno virtual:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate riffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si desea utilizar formatos de música distintos de wav, es necesario instalar también el conjunto de bibliotecas FFmpeg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda install -c conda-forge ffmpeg&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Instalar Riffusion&lt;/h2&gt;
&lt;p&gt;Clona el repositorio de Riffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/riffusion/riffusion.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd riffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hagamos algunos cambios en el archivo de requisitos. Esto evita errores con la compatibilidad de la antorcha:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Buscar y corregir versiones de paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;diffusers==0.9.0
torchaudio==2.0.1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde los cambios y proceda a preparar un entorno virtual. El siguiente comando instala todos los paquetes necesarios:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python -m pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por último, puede abrir un &quot;patio de recreo&quot;. Se trata de una sencilla interfaz web que le ayudará a conocer mejor las características de Riffusion:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python -m riffusion.streamlit.playground&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre tu navegador favorito e introduce la dirección &lt;b translate=&quot;no&quot;&gt;http://[SERVER_IP]:8501/&lt;/b&gt;&lt;/p&gt;
&lt;h2&gt;Probar una zona de juegos&lt;/h2&gt;
&lt;p&gt;Ahora, puedes crear música utilizando indicaciones de texto y cambiando los demás parámetros:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/913/original/sh_stable_diffusion_riffusion_1.png?1713769543&quot; alt=&quot;Text to audio prompt line&quot;&gt;
&lt;p&gt;Además, puedes hacer algunas cosas complicadas, como dividir el audio en componentes separados. Por ejemplo, puedes extraer la voz de Bohemian rhapsody de Queen:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/914/original/sh_stable_diffusion_riffusion_2.png?1713769583&quot; alt=&quot;Generated results&quot;&gt;
&lt;p&gt;Recuerda que éste es sólo un ejemplo de cómo utilizar Riffusion. Creando tu propia aplicación, puedes conseguir resultados mucho más cautivadores. Los potentes servidores de LeaderGPU se encargarán de los cálculos.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/604-audiocraft-de-metaai-crear-m-sica-por-descripci-n&quot;&gt;AudioCraft de MetaAI: crear música por descripción&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/912/original/il_stable_diffusion_riffusion.png?1713769486"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 14:12:29 +0100</pubDate>
      <guid isPermaLink="false">594</guid>
      <dc:date>2025-01-21 14:12:29 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: Generación de caras repetibles</title>
      <link>https://www.leadergpu.es/catalog/593-stable-diffusion-generaci-n-de-caras-repetibles</link>
      <description>&lt;p&gt;La repetibilidad es el aspecto más importante a la hora de crear contenidos gráficos con redes neuronales generativas. Esto es válido independientemente del tipo de contenido que se cree, ya sea un personaje de cine o de videojuegos, un paisaje o el entorno de una escena. El problema principal puede formularse como: &quot;¿Cómo puedo repetir mi resultado?&quot;. Cada vez que empieces a generar imágenes con las mismas indicaciones positivas y negativas, obtendrás resultados diferentes. A veces, las diferencias son menores y aceptables, pero en la mayoría de los casos, podrían plantear un problema.&lt;/p&gt;
&lt;p&gt;Stable Diffusion se aprende en un gran conjunto de datos capturados del mundo real, lo que explica por qué la repetibilidad no es un punto fuerte de este modelo de red neuronal. Sin embargo, esta regla no se aplica a las fotos de famosos. Estas fotos se encuentran con mucha más frecuencia en el mundo real y, por tanto, en el conjunto de datos sobre el que se entrenó Stable Diffusion. Puede utilizar estas fotos como &quot;constante&quot; o &quot;punto de partida&quot; en el proceso de generación.&lt;/p&gt;
&lt;h2&gt;Método 1. &quot;Agitado, no revuelto&quot;&lt;/h2&gt;
&lt;p&gt;Por supuesto, no necesitas crear sólo imágenes de famosos, sino que puedes utilizar varias indicaciones relevantes para obtener resultados más o menos coherentes. Por ejemplo, podemos tomar a dos famosas cantantes griegas: Elena Paparizou y Marina Satti, y obtener resultados repetibles:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Model&lt;/b&gt;: &lt;a href=&quot;https://civitai.com/models/4201/realistic-vision-v60-b1&quot;&gt;Visión realista v6.0 beta 1&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Positive prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Elena Paparizou, Marina Satti, fashion portrait, alone, solo, greek woman in beautiful clothes, natural skin, 8k uhd, high quality, film grain, Canon EOS&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Negative prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, extra eyes, huge eyes, 2girl, amputation, disconnected limbs, cartoon, cg, 3d, unreal, animate, nsfw, nude, censored&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/934/original/sh_stable_diffusion_generate_repeatable_faces_1.png?1713873195&quot; alt=&quot;Greek singer generated&quot;&gt;
&lt;p&gt;Funciona con cualquier famoso, ya que Stable Diffusion intentó reproducir los rasgos faciales más destacados. Aquí, utilizamos el mismo modelo y &quot;agitamos&quot; a dos estrellas de Hollywood (Dwayne Johnson y Danny Trejo) en un nuevo personaje sintético.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Positive prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Dwayne Johnson, Danny Trejo, fashion portrait, alone, solo, 8k uhd, high quality, film grain, Canon EOS&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Negative prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, extra eyes, huge eyes, amputation, disconnected limbs, cartoon, cg, 3d, unreal, animate, nsfw, nude, censored&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/935/original/sh_stable_diffusion_generate_repeatable_faces_2.png?1713873232&quot; alt=&quot;Hollywood stars generated&quot;&gt;
&lt;p&gt;Cada vez que mezclas las mismas celebridades, obtienes resultados similares. Veamos otro método para generar personajes repetibles.&lt;/p&gt;
&lt;h2&gt;Método 2. Anclaje de nombres&lt;/h2&gt;
&lt;p&gt;Los famosos son un buen comienzo, pero consideremos otros métodos para conseguir resultados repetibles. La respuesta es muy sencilla: podemos utilizar varios nombres humanos. Cada nación tiene nombres únicos, relacionados con rasgos lingüísticos. Por ejemplo, el nombre griego Kostas puede traducirse como &quot;trabajo&quot; o &quot;esfuerzo&quot;, mientras que Nikos significa &quot;Victoria del pueblo&quot;. Estos dos nombres crean una imagen única de una persona generada, lo que ayuda a los modelos de redes neuronales a comprender nuestros objetivos de creación.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Positive prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Portrait of [Kostas | Nikos] on a white background, greek man, short haircut, beard&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;Negative prompts:&lt;/b&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;woman, bad anatomy, bad hands, three hands, three legs, bad arms, missing legs, missing arms, poorly drawn face, bad face, fused face, cloned face, worst face, three crus, extra crus, fused crus, worst feet, three feet, fused feet, fused thigh, three thigh, fused thigh, extra thigh, worst thigh, missing fingers, extra fingers, ugly fingers, long fingers, horn, extra eyes, huge eyes, 2girl, amputation, disconnected limbs, cartoon, cg, 3d, unreal, animate, nsfw, nude, censored&lt;/code&gt;&lt;/pre&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/936/original/sh_stable_diffusion_generate_repeatable_faces_3.png?1713873262&quot; alt=&quot;Greek person generated&quot;&gt;
&lt;p&gt;Vamos a generar numerosas imágenes (80-100) para la posterior creación del conjunto de datos. La indicación principal se seleccionó para proporcionar imágenes convenientes que puedan borrarse fácilmente del fondo. Las indicaciones negativas nos protegen de incluir imágenes aleatorias con distorsiones en el conjunto de datos, así como imágenes de mujeres.&lt;/p&gt;
&lt;p&gt;&lt;i&gt;Consejo: si recibe imágenes muy diferentes entre sí, pruebe a cambiar el parámetro Escala CFG de 7,5 a 15. Esto obligará a la red neuronal a seguir las indicaciones de manera más formal.&lt;/i&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/937/original/sh_stable_diffusion_generate_repeatable_faces_4.png?1713873299&quot; alt=&quot;Greek person dataset&quot;&gt;
&lt;p&gt;Puedes seleccionar tus propios nombres únicos con un sencillo generador de nombres, como &lt;a href=&quot;https://www.behindthename.com/names/list&quot;&gt;Behind the Name&lt;/a&gt;. También puedes utilizar la función ControlNet para tener un mayor control.&lt;/p&gt;
&lt;h2&gt;Método 3. Enseñar apariencia&lt;/h2&gt;
&lt;p&gt;No podemos influir directamente en el resultado final, pero observamos que algunos tokens (como los de imagen de famosos) tienen más peso que otros. Esto significa que podemos crear nuestro token condicional &quot;celebridad&quot; creando un prompt apropiado para él y entrenando más el modelo con él. Así funciona LoRA (Low-Rank Adaptation of Large Language Models). Puede utilizar &lt;a href=&quot;https://www.leadergpu.es/articles/592-stable-diffusion-lora-selfie&quot;&gt;nuestra guía paso a paso&lt;/a&gt; para entrenar su propio modelo LoRA a partir de un conjunto de datos creado por usted.&lt;/p&gt;
&lt;p&gt;Tras eliminar el fondo, obtenemos retratos nítidos y los utilizamos para crear un modelo LoRA específico. Este modelo ayuda a reproducir un rostro con unos pequeños cambios:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/938/original/sh_stable_diffusion_generate_repeatable_faces_5.png?1713873334
&quot; alt=&quot;Dataset without background&quot;&gt;
&lt;p&gt;Ahora, podemos generar este personaje en diferentes lugares, crear historias y colocarlo en varios papeles: desde jardinero a hombre de negocios. Su rostro será siempre reconocible y repetible:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/939/original/sh_stable_diffusion_generate_repeatable_faces_6.png?1713873384&quot; alt=&quot;Greek person with various backgrounds&quot;&gt;
&lt;p&gt;Este método no es ideal, pero funciona perfectamente en diversas situaciones. No hace falta preparar un conjunto de datos de una persona real, y se puede generar a distancia:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/940/original/sh_stable_diffusion_generate_repeatable_faces_7.jpg?1713873419&quot; alt=&quot;Greek person generated result&quot;&gt;
&lt;p&gt;Puedes intentar crear un personaje virtual de este tipo tú mismo, sin la ayuda de un diseñador profesional o un especialista en modelado 3D. Todo lo que necesitas son GPU rápidas, que puedes encontrar en los servidores dedicados de &lt;a href=&quot;https://www.leadergpu.es/&quot;&gt;LeaderGPU&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/594-stable-diffusion-rifusi-n&quot;&gt;Stable Diffusion: Rifusión&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/933/original/il_stable_diffusion_generate_repeatable_faces.jpg?1713873147"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 13:51:05 +0100</pubDate>
      <guid isPermaLink="false">593</guid>
      <dc:date>2025-01-21 13:51:05 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: LoRA selfie</title>
      <link>https://www.leadergpu.es/catalog/592-stable-diffusion-lora-selfie</link>
      <description>&lt;p&gt;Puedes crear tu primer conjunto de datos con una cámara sencilla y un fondo bastante uniforme, como una pared blanca o una cortina monótona. Para un conjunto de datos de muestra, he utilizado una cámara sin espejo Olympus OM-D EM5 Mark II con objetivos de kit 14-42. Esta cámara admite el control remoto desde cualquier smartphone y un modo de disparo continuo muy rápido.&lt;/p&gt;
&lt;p&gt;Monté la cámara en un trípode y establecí la prioridad de enfoque en cara. A continuación, seleccioné el modo en el que la cámara captura 10 fotogramas consecutivos cada 3 segundos e inicié el proceso. Durante el proceso de disparo, giré lentamente la cabeza en la dirección seleccionada y cambié de dirección cada 10 fotogramas:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/916/original/sh_stable_diffusion_lora_selfie_1.jpg?1713785705&quot; alt=&quot;Face directions&quot;&gt;
&lt;p&gt;El resultado fueron unos 100 fotogramas con un fondo monótono:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/917/original/sh_stable_diffusion_lora_selfie_2.png?1713785735&quot; alt=&quot;Photos with background&quot;&gt;
&lt;p&gt;El siguiente paso es eliminar el fondo y dejar el retrato sobre un fondo blanco.&lt;/p&gt;
&lt;h2&gt;Eliminar el fondo&lt;/h2&gt;
&lt;p&gt;Puede utilizar la función estándar de Adobe Photoshop &lt;b translate=&quot;no&quot;&gt;Remove background&lt;/b&gt; y el procesamiento por lotes. Vamos a almacenar las acciones que queremos aplicar a cada imagen de un conjunto de datos. Abra cualquier imagen, haga clic en el icono del triángulo y, a continuación, haga clic en el símbolo &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/918/original/sh_stable_diffusion_lora_selfie_3.png?1713785770&quot; alt=&quot;Create new PS action&quot;&gt;
&lt;p&gt;Escriba el nombre de la nueva acción, por ejemplo, &lt;b translate=&quot;no&quot;&gt;Remove Background&lt;/b&gt; y haga clic en &lt;b translate=&quot;no&quot;&gt;Record&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/919/original/sh_stable_diffusion_lora_selfie_4.png?1713785802&quot; alt=&quot;Type the name of action&quot;&gt;
&lt;p&gt;En la pestaña &lt;b translate=&quot;no&quot;&gt;Layers&lt;/b&gt;, busque el símbolo del candado y haga clic en él:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/920/original/sh_stable_diffusion_lora_selfie_5.png?1713785831&quot; alt=&quot;Lock the layer&quot;&gt;
&lt;p&gt;A continuación, haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Remove background&lt;/b&gt; del panel flotante:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/921/original/sh_stable_diffusion_lora_selfie_6.png?1713785977&quot; alt=&quot;Click remove background&quot;&gt;
&lt;p&gt;Haga clic con el botón derecho del ratón en &lt;b translate=&quot;no&quot;&gt;Layer 0&lt;/b&gt; y seleccione &lt;b translate=&quot;no&quot;&gt;Flatten Image&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/922/original/sh_stable_diffusion_lora_selfie_7.png?1713786013&quot; alt=&quot;Select Flatten Image&quot;&gt;
&lt;p&gt;Todas nuestras acciones han sido registradas. Detengamos este proceso:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/923/original/sh_stable_diffusion_lora_selfie_8.png?1713786077&quot; alt=&quot;Stop action recording&quot;&gt;
&lt;p&gt;Ahora, puede cerrar el archivo abierto sin guardar los cambios y seleccionar &lt;b translate=&quot;no&quot;&gt;File &gt;&gt; Scripts &gt;&gt; Image Processor…&lt;/b&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/924/original/sh_stable_diffusion_lora_selfie_9.png?1713786112&quot; alt=&quot;Multiple image processor&quot;&gt;
&lt;p&gt;Seleccione los directorios de entrada y salida, elija la acción &lt;b translate=&quot;no&quot;&gt;Remove Background&lt;/b&gt; creada en el paso 4 y haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Run&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/925/original/sh_stable_diffusion_lora_selfie_10.png?1713786144&quot; alt=&quot;Image processor options&quot;&gt;
&lt;p&gt;Tenga paciencia. Adobe Photoshop abrirá todas las imágenes del directorio seleccionado, repetirá las acciones grabadas (desactivar el bloqueo de capas, eliminar el fondo, aplanar la imagen) y las guardará en otro directorio seleccionado. Este proceso puede tardar un par de minutos, dependiendo del número de imágenes.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/926/original/sh_stable_diffusion_lora_selfie_11.png?1713786182&quot; alt=&quot;Photos without background&quot;&gt;
&lt;p&gt;Una vez finalizado el proceso, puede pasar al siguiente paso.&lt;/p&gt;
&lt;h2&gt;Subir al servidor&lt;/h2&gt;
&lt;p&gt;Utilice una de las siguientes guías (adaptada al sistema operativo de su PC) para cargar el directorio &lt;b translate=&quot;no&quot;&gt;dataset&lt;/b&gt; en el servidor remoto. Por ejemplo, colócalo en el directorio de inicio del usuario por defecto, &lt;b translate=&quot;no&quot;&gt;/home/usergpu&lt;/b&gt;:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/494-compartir-archivos-desde-linux&quot;&gt;Intercambio de archivos desde Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/495-compartir-archivos-desde-windows&quot;&gt;Intercambio de archivos desde Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/496-compartir-archivos-desde-macos&quot;&gt;Intercambio de archivos desde macOS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Preinstalación&lt;/h2&gt;
&lt;p&gt;Actualice los paquetes existentes del sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale dos paquetes adicionales:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y python3-tk python3.10-venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instalemos el CUDA® Toolkit versión 11.8. Descarguemos el archivo pin específico:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente comando coloca el archivo descargado en el directorio del sistema, controlado por el gestor de paquetes &lt;b translate=&quot;no&quot;&gt;apt&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente paso es descargar el repositorio principal de CUDA:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después, proceda a la instalación del paquete utilizando la utilidad estándar &lt;b translate=&quot;no&quot;&gt;dpkg&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo dpkg -i cuda-repo-ubuntu2204-11-8-local_11.8.0-520.61.05-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copie el llavero GPG en el directorio del sistema. Esto hará que esté disponible para su uso por las utilidades del sistema operativo, incluyendo el gestor de paquetes apt:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo cp /var/cuda-repo-ubuntu2204-11-8-local/cuda-*-keyring.gpg /usr/share/keyrings/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualice los repositorios de caché del sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala el kit de herramientas CUDA® usando apt:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get -y install cuda&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade CUDA® a PATH. Abra la configuración de shell bash:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade las siguientes líneas al final del archivo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;export PATH=/usr/local/cuda/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64\
                         ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo y reinicie el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Instalar entrenador&lt;/h2&gt;
&lt;p&gt;Copie el repositorio del proyecto Kohya en el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/bmaltais/kohya_ss.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd kohya_ss&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Haz ejecutable el script de instalación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod +x ./setup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./setup.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Recibirás un mensaje de advertencia de la utilidad de aceleración. Vamos a resolver el problema. Activa el entorno virtual del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source venv/bin/activate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala el paquete que falta:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install scipy&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y configura manualmente la utilidad de aceleración:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;accelerate config&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ten cuidado, porque activar un número impar de CPUs causará un error. Por ejemplo, si tengo 5 GPUs, sólo se pueden utilizar 4 con este software. De lo contrario, se producirá un error al iniciar el proceso. Puede comprobar inmediatamente la nueva configuración de la utilidad llamando a una prueba predeterminada:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;accelerate test&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si todo está bien, recibirá un mensaje como este:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Test is a success! You are ready for your distributed training!&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, puedes iniciar el servidor público del entrenador con &lt;a href=&quot;https://www.gradio.app/&quot;&gt;la GUI de Gradio&lt;/a&gt; y una simple autenticación de usuario/contraseña (cambia el usuario/contraseña por los tuyos):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./gui.sh --share --username user --password password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Recibirás dos cadenas:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Running on local URL: http://127.0.0.1:7860
Running on public URL: https://&lt;random_numbers_and_letters&gt;.gradio.live&lt;/pre&gt;
&lt;p&gt;Abra su navegador web e introduzca la URL pública en la barra de direcciones. Escriba su nombre de usuario y contraseña en los campos correspondientes y, a continuación, haga clic en Iniciar sesión:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/927/original/sh_stable_diffusion_lora_selfie_12.png?1713786225&quot; alt=&quot;Login screen&quot;&gt;
&lt;h2&gt;Preparar el conjunto de datos&lt;/h2&gt;
&lt;p&gt;Comience por crear una nueva carpeta en la que almacenará el modelo LoRA entrenado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;mkdir /home/usergpu/myloramodel&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre las siguientes pestañas: &lt;b translate=&quot;no&quot;&gt;Utilities &gt;&gt; Captioning &gt;&gt; BLIP captioning&lt;/b&gt;. Rellena los huecos como se muestra en la imagen y haz clic en &lt;b translate=&quot;no&quot;&gt;Caption images&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/928/original/sh_stable_diffusion_lora_selfie_13.png?1713786286&quot; alt=&quot;Set folders&quot;&gt;
&lt;p&gt;Trainer descargará y ejecutará un modelo de red neuronal específico (1,6 Gb) que crea mensajes de texto para cada archivo de imagen del directorio seleccionado. Se ejecutará en una sola GPU y tardará alrededor de un minuto.&lt;/p&gt;
&lt;p&gt;Cambia la pestaña a &lt;b translate=&quot;no&quot;&gt;LoRA &gt;&gt; Tools &gt;&gt; Dataset preparation &gt;&gt; Dreambooth/LoRA folder preparation&lt;/b&gt;, rellena los huecos y pulsa secuencialmente &lt;b translate=&quot;no&quot;&gt;Prepare training data&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;Copy info to Folders Tab&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/929/original/sh_stable_diffusion_lora_selfie_14.png?1713786320&quot; alt=&quot;Set options&quot;&gt;
&lt;p&gt;En este ejemplo, utilizamos el nombre &lt;b translate=&quot;no&quot;&gt;nikolai&lt;/b&gt; como &lt;b translate=&quot;no&quot;&gt;Instance prompt&lt;/b&gt; y &quot;persona&quot; como &lt;b translate=&quot;no&quot;&gt;Class prompt&lt;/b&gt;. También establecemos &lt;b translate=&quot;no&quot;&gt;/home/usergpu/dataset&lt;/b&gt; como &lt;b translate=&quot;no&quot;&gt;Training Images&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;/home/usergpu/myloramodel&lt;/b&gt; como &lt;b translate=&quot;no&quot;&gt;Destination training directory&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Cambie de nuevo a la pestaña &lt;b translate=&quot;no&quot;&gt;LoRA &gt;&gt; Training &gt;&gt; Folders&lt;/b&gt;. Asegúrese de que &lt;b translate=&quot;no&quot;&gt;Image folder&lt;/b&gt;, &lt;b translate=&quot;no&quot;&gt;Output folder&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;Logging folder&lt;/b&gt; están correctamente rellenados. Si lo desea, puede cambiar el &lt;b translate=&quot;no&quot;&gt;Model output name&lt;/b&gt; por el suyo propio. Por último, haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Start training&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/930/original/sh_stable_diffusion_lora_selfie_15.png?1713786423&quot; alt=&quot;Start training&quot;&gt;
&lt;p&gt;El sistema comenzará a descargar archivos y modelos adicionales (~10 GB). A continuación, comenzará el proceso de entrenamiento. Dependiendo de la cantidad de imágenes y de los ajustes aplicados, puede tardar varias horas. Una vez finalizado el entrenamiento, puede descargar el directorio &lt;b translate=&quot;no&quot;&gt;/home/usergpu/myloramodel&lt;/b&gt; a su ordenador para utilizarlo en el futuro.&lt;/p&gt;
&lt;h2&gt;Pruebe su LoRA&lt;/h2&gt;
&lt;p&gt;Hemos preparado algunos artículos sobre Stable Diffusion y sus bifurcaciones. Puedes intentar instalar Easy Diffusion con nuestra guía &lt;a href=&quot;https://www.leadergpu.es/articles/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;. Después de que el sistema se haya instalado y esté funcionando, puedes subir tu modelo LoRA en formato SafeTensors directamente a &lt;b translate=&quot;no&quot;&gt;/home/usergpu/easy-diffusion/models/lora&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Actualiza la página web de Easy diffusion y selecciona tu modelo de la lista desplegable:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/931/original/sh_stable_diffusion_lora_selfie_16.png?1713786465&quot; alt=&quot;Select LoRA model&quot;&gt;
&lt;p&gt;Vamos a escribir un simple mensaje, &lt;b translate=&quot;no&quot;&gt;portrait of &amp;lt;nikolai&amp;gt; wearing a cowboy hat&lt;/b&gt;, y generar nuestras primeras imágenes. Aquí, usamos un &lt;a href=&quot;https://www.leadergpu.es/articles/566-modelos-de-stable-diffusion-personalizaci-n-y-opciones&quot;&gt;modelo personalizado de Difusión Estable&lt;/a&gt; descargado de &lt;a href=&quot;https://civitai.com/&quot;&gt;civitai.com&lt;/a&gt;: &lt;a href=&quot;https://civitai.com/models/4201/realistic-vision-v51&quot;&gt;Realistic Vision v6.0 B1&lt;/a&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/932/original/sh_stable_diffusion_lora_selfie_17.png?1713786492&quot; alt=&quot;Generate the image&quot;&gt;
&lt;p&gt;Puedes experimentar con instrucciones y modelos basados en Stable Diffusion para obtener mejores resultados. ¡Que aproveche!&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/593-stable-diffusion-generaci-n-de-caras-repetibles&quot;&gt;Stable Diffusion: Generación de caras repetibles&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/594-stable-diffusion-rifusi-n&quot;&gt;Stable Diffusion: Rifusión&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/915/original/il_stable_diffusion_lora_selfie.jpg?1713785674"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 13:44:25 +0100</pubDate>
      <guid isPermaLink="false">592</guid>
      <dc:date>2025-01-21 13:44:25 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion: ¿Qué es ControlNet?</title>
      <link>https://www.leadergpu.es/catalog/591-stable-diffusion-qu-es-controlnet</link>
      <description>&lt;p&gt;Un error común entre quienes se enfrentan por primera vez a las redes neuronales generativas es que el control del resultado final es tremendamente difícil, especialmente cuando se intenta alterar el resultado mediante diferentes frases. En la actualidad, existe un conjunto de herramientas conocido como ControlNet que facilita un control relativamente sencillo y eficaz de los resultados de la generación.&lt;/p&gt;
&lt;p&gt;En este artículo, demostraremos cómo manipular fácilmente la pose de los personajes generados utilizando imágenes preexistentes y &quot;esqueletos&quot; personalizados, con la ayuda de una de estas herramientas, &lt;a href=&quot;https://huggingface.co/lllyasviel/ControlNet-v1-1/tree/main&quot;&gt;OpenPose&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Paso 1. Instalar Stable Diffusion Instalar Stable Diffusion&lt;/h2&gt;
&lt;p&gt;Por favor, utilice &lt;a href=&quot;https://www.leadergpu.es/articles/565-stable-diffusion-webui&quot;&gt;nuestra guía paso a paso&lt;/a&gt; para instalar Stable Diffusion con el modelo básico y WebUI. Esta guía se basa en el script AUTOMATIC1111.&lt;/p&gt;
&lt;h2&gt;Paso 2. Instalar la extensión ControlNet Instale la extensión ControlNet&lt;/h2&gt;
&lt;p&gt;Recomendamos encarecidamente no instalar la extensión ControlNet (sd-webui-controlnet) desde el &lt;a href=&quot;https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui-extensions/master/index.json&quot;&gt;repositorio estándar&lt;/a&gt; debido a posibles problemas de funcionalidad. Un problema importante que encontramos durante la preparación de esta guía fue la congelación de la interfaz web. Aunque la imagen se genera inicialmente con éxito, la WebUI deja de responder cuando se genera la imagen por segunda vez. Una solución alternativa sería instalar la misma extensión desde una fuente externa.&lt;/p&gt;
&lt;p&gt;Abra WebUI y siga las pestañas: &lt;b translate=&quot;no&quot;&gt;Extensions &gt; Install from URL&lt;/b&gt;. Pegue esta URL en el campo apropiado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;https://github.com/Mikubill/sd-webui-controlnet&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/942/original/sh_stable_diffusion_what_is_controlnet_1.png?1713962546&quot; alt=&quot;Install sd-webui-controlnet&quot;&gt;
&lt;p&gt;Cuando el proceso se complete con éxito, debería aparecer el siguiente mensaje:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Installed into /home/usergpu/stable-diffusion-webui/extensions/sd-webui-controlnet. Use Installed tab to restart.&lt;/pre&gt;
&lt;p&gt;Vamos a reiniciar la URL pulsando el botón Aplicar y reiniciar UI en la pestaña Instalado:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/943/original/sh_stable_diffusion_what_is_controlnet_2.png?1713962703&quot; alt=&quot;ControlNet Restart UI&quot;&gt;
&lt;p&gt;Tras reiniciar la interfaz, aparecerá el nuevo elemento ControlNet con muchas opciones adicionales:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/944/original/sh_stable_diffusion_what_is_controlnet_3.png?1713962785&quot; alt=&quot;ControlNet enabled&quot;&gt;
&lt;h2&gt;Paso 3. Descargar OpenPose&lt;/h2&gt;
&lt;h3&gt;Añadir clave HF&lt;/h3&gt;
&lt;p&gt;Vamos a generar y añadir una clave SSH que podrás utilizar en Hugging Face:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;&amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando se genera el par de claves, puedes mostrar la clave pública en el emulador de terminal:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copie toda la información empezando por ssh-rsa y terminando por usergpu@gpuserver, como se muestra en la siguiente captura de pantalla:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot;&gt;
&lt;p&gt;Abre un navegador web, escribe &lt;a href=&quot;https://huggingface.co/&quot;&gt;https://huggingface.co/&lt;/a&gt; en la barra de direcciones y pulsa &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. Inicie sesión en su cuenta de HF y abra &lt;a href=&quot;https://huggingface.co/settings/profile&quot;&gt;Configuración del perfil&lt;/a&gt;. A continuación, seleccione &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; y pulse el botón &lt;b translate=&quot;no&quot;&gt;Add SSH Key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot;&gt;
&lt;p&gt;Rellene el &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; y pegue el &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiado del terminal. Guarda la clave pulsando &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267&quot; alt=&quot;Paste the key&quot;&gt;
&lt;p&gt;Ahora, tu cuenta HF está vinculada a la clave SSH pública. La segunda parte (clave privada) se almacena en el servidor. El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como modelos de redes neuronales.&lt;/p&gt;
&lt;h3&gt;Instalar Git LFS&lt;/h3&gt;
&lt;p&gt;El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como modelos de redes neuronales. Abre tu directorio de inicio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descarga y ejecuta el script de shell. Este script instala un nuevo repositorio de terceros con git-lfs:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, puedes instalarlo usando el gestor de paquetes estándar:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos a configurar git para utilizar nuestro apodo HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y vinculado a la cuenta de correo de HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Descargar el repositorio&lt;/h3&gt;
&lt;p&gt;Recomendamos, si es posible, utilizar un disco duro local para descargar y almacenar los modelos. Puedes aprender más sobre esto en nuestra guía, &lt;a href=&quot;https://www.leadergpu.es/articles/492-partici-n-de-disco-en-linux&quot;&gt;Particionado de discos en Linux&lt;/a&gt;. Para este ejemplo, hemos montado un disco SSD en el punto de montaje /mnt/fastdisk. Hagámoslo propiedad del usuario por defecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown usergpu:usergpu /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre el directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clonar el repositorio ControlNet de HuggingFace. Git-LFS previamente instalado sustituirá automáticamente los punteros por archivos reales:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:lllyasviel/ControlNet-v1-1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;En este ejemplo, añadimos sólo un modelo a Stable Diffusion WebUI. Sin embargo, puedes copiar todos los modelos disponibles del repositorio (~18GB):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp /mnt/fastdisk/ControlNet-v1-1/control_v11p_sd15_openpose.pth /home/usergpu/stable-diffusion-webui/models/ControlNet/&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 4. Ejecutar el proceso de generación&lt;/h2&gt;
&lt;p&gt;El modelo actual es bastante básico y puede no dar resultados satisfactorios. Por lo tanto, le sugerimos que lo sustituya por un modelo personalizado. Encontrará directrices sobre cómo hacerlo en este artículo: &lt;a href=&quot;https://www.leadergpu.es/articles/566-modelos-de-stable-diffusion-personalizaci-n-y-opciones&quot;&gt;Modelos de difusión estable: personalización y opciones&lt;/a&gt;. Para este ejemplo, hemos descargado &lt;a href=&quot;https://civitai.com/api/download/models/130072&quot;&gt;RealisticVision v6.0 B1&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Si desea generar su primera imagen utilizando OpenPose, abra la pestaña &lt;b translate=&quot;no&quot;&gt;ControlNet&lt;/b&gt;, elija &lt;b translate=&quot;no&quot;&gt;OpenPose&lt;/b&gt;, marque &lt;b translate=&quot;no&quot;&gt;Enable&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;Allow Preview&lt;/b&gt;. A continuación, haga clic en &lt;b translate=&quot;no&quot;&gt;Upload&lt;/b&gt; para añadir una imagen que contenga la pose deseada:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/945/original/sh_stable_diffusion_what_is_controlnet_4.png?1713962881&quot; alt=&quot;Enable OpenPose and Preview&quot;&gt;
&lt;p&gt;Puede solicitar al sistema que genere una vista previa de la pose haciendo clic en el botón con el icono de la explosión:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/946/original/sh_stable_diffusion_what_is_controlnet_5.png?1713963007&quot; alt=&quot;Show preview&quot;&gt;
&lt;p&gt;A la izquierda, se muestra la imagen original. A la derecha, puede ver el &quot;esqueleto&quot; que representa la pose reconocida por el modelo de red neuronal:&lt;/p&gt;
&lt;table border=&quot;0&quot;&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/947/original/sh_stable_diffusion_what_is_controlnet_6.png?1713963067&quot; alt=&quot;Dancing woman&quot;&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/948/original/sh_stable_diffusion_what_is_controlnet_7.png?1713963111&quot; alt=&quot;OpenPose skeleton&quot;&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Ahora puede escribir la indicación principal, por ejemplo &quot;&lt;b translate=&quot;no&quot;&gt;dancing bear, by Pixar&lt;/b&gt;&quot; o &quot;&lt;b translate=&quot;no&quot;&gt;dancing fox, by Pixar&lt;/b&gt;&quot; y pulsar el botón &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;. Al cabo de unos segundos obtendrás resultados como estos:&lt;/p&gt;
&lt;table border=&quot;0&quot;&gt;
  &lt;tr&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/949/original/sh_stable_diffusion_what_is_controlnet_8.png?1713963180&quot; alt=&quot;Dancing bear&quot;&gt;&lt;/td&gt;
    &lt;td&gt;&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/950/original/sh_stable_diffusion_what_is_controlnet_9.png?1713963213&quot; alt=&quot;Dancing fox&quot;&gt;&lt;/td&gt;
  &lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;El sistema intentará generar una nueva imagen, dado el &quot;esqueleto&quot; obtenido de la imagen original. En algunos casos, la pose puede no ser exacta, pero esto puede corregirse fácilmente editando manualmente el &quot;esqueleto&quot;.&lt;/p&gt;
&lt;h2&gt;Paso 5. Cambio de pose&lt;/h2&gt;
&lt;p&gt;Aunque parezca magia, el modelo no es perfecto, y los errores ocasionales pueden afectar a la imagen final. Para evitar problemas durante la generación de la imagen, tienes la opción de ajustar manualmente el &quot;esqueleto&quot; haciendo clic en el botón &lt;b translate=&quot;no&quot;&gt;Edit&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/951/original/sh_stable_diffusion_what_is_controlnet_10.png?1713963246&quot; alt=&quot;Edit the skeleton&quot;&gt;
&lt;p&gt;En el editor proporcionado, puedes ajustar fácilmente la pose arrastrando y soltando, o eliminar los puntos no deseados con un clic derecho. A continuación, haz clic en el botón &lt;b translate=&quot;no&quot;&gt;Send pose to ControlNet&lt;/b&gt; y se aplicará la nueva pose:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/952/original/sh_stable_diffusion_what_is_controlnet_11.png?1713963279&quot; alt=&quot;Send pose to ControlNet&quot;&gt;
&lt;p&gt;Además de OpenPose, ControlNet ofrece diversas herramientas para personalizar y perfeccionar los resultados. Además, los servidores dedicados proporcionados por LeaderGPU garantizan un proceso rápido y cómodo.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/592-stable-diffusion-lora-selfie&quot;&gt;Stable Diffusion: LoRA selfie&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/593-stable-diffusion-generaci-n-de-caras-repetibles&quot;&gt;Stable Diffusion: Generación de caras repetibles&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/594-stable-diffusion-rifusi-n&quot;&gt;Stable Diffusion: Rifusión&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/941/original/il_stable_diffusion_what_is_controlnet.png?1713962506"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 10:42:39 +0100</pubDate>
      <guid isPermaLink="false">591</guid>
      <dc:date>2025-01-21 10:42:39 +0100</dc:date>
    </item>
    <item>
      <title>Fooocus: Replanteamiento de SD y MJ</title>
      <link>https://www.leadergpu.es/catalog/590-fooocus-replanteamiento-de-sd-y-mj</link>
      <description>&lt;p&gt;La llegada de Stable Diffusion y MidJourney ha revolucionado nuestra comprensión del potencial de las redes neuronales generativas. Estas herramientas han desvelado una nueva perspectiva del proceso de creación de imágenes y hasta qué punto podemos manipularlo. El enfoque principal consiste en proporcionar al sistema indicaciones sobre el resultado deseado. Esencialmente, destacamos tres aspectos importantes: objeto, estilo y entorno.&lt;/p&gt;
&lt;p&gt;También son importantes, aunque no indispensables, otras instrucciones más concretas, como la composición deseada, el tipo de cámara/lente y la coloración. Cuanto más completas sean las instrucciones, más fácil le resultará a la red neuronal procesarlas. En el espacio profesional ha surgido incluso el papel del ingeniero de instrucciones. Sin embargo, este papel puede ser fácilmente sustituido por las mismas redes neuronales generativas. Combinando la creación de imágenes con la creación de textos, podemos generar instrucciones adicionales para lograr un resultado óptimo.&lt;/p&gt;
&lt;p&gt;Este es el concepto fundamental de Fooocus. Integra el modelo XL Stable Diffusion y un generador de prompt basado en GPT2, que enriquece y detalla tu simple prompt. Además, Fooocus está equipado con diversas mejoras y extensiones. Estas características facilitan la generación de imágenes espectaculares a través de una interfaz sencilla, desprovista de herramientas complejas. Profundicemos en su funcionalidad e instalemos Fooocus en un servidor dedicado LeaderGPU.&lt;/p&gt;
&lt;h2&gt;Requisitos previos&lt;/h2&gt;
&lt;p&gt;Comienza con los prerrequisitos de instalación y reinicia después:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade &amp;&amp; sudo ubuntu-drivers autoinstall &amp;&amp; sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue el script de shell que instala Anaconda para gestionar entornos virtuales:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://repo.anaconda.com/archive/Anaconda3-2023.09-0-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Establezca la bandera de ejecución y proporcione acceso a los datos:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod a+x Anaconda3-2023.09-0-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el script de instalación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./Anaconda3-2023.09-0-Linux-x86_64.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Una vez finalizado el proceso, recomendamos desconectar la sesión SSH y preparar el reenvío de puertos. Necesita redirigir el puerto 7865 desde el servidor remoto a una dirección loopback local, 127.0.0.1:7865. Para obtener más información, consulte una de nuestras guías anteriores: &lt;a href=&quot;https://www.leadergpu.es/articles/597-stable-video-diffusion&quot;&gt;Difusión de vídeo estable&lt;/a&gt;. A continuación, vuelve a conectarte y procede a clonar el repositorio del proyecto en GitHub.&lt;/p&gt;
&lt;h2&gt;Instalación de Fooocus&lt;/h2&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/lllyasviel/Fooocus.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambia el directorio a Fooocus:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd Fooocus&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crea un entorno virtual usando Anaconda y el YAML-config preparado por el autor del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda env create -f environment.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cambiemos nuestro entorno base por uno recién creado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate fooocus&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente paso es instalar las librerías de Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install -r requirements_versions.txt&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, todo está listo para empezar:&lt;/p&gt;
&lt;h2&gt;Fooocus start&lt;/h2&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;python entry_with_update.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El arranque inicial puede llevar algún tiempo mientras la aplicación verifica y descarga todos los archivos necesarios para su funcionamiento. Es posible que quieras tomarte una taza de café mientras tanto. Una vez finalizado el proceso, abre tu navegador y escribe la siguiente URL en la barra de direcciones:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;http://127.0.0.1:7865&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Escriba su consulta simple y haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;. Si quieres más control, marca &lt;b translate=&quot;no&quot;&gt;Advanced&lt;/b&gt; y selecciona las opciones necesarias:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/976/original/sh_fooocus_rethinking_of_sd_and_mj_1.png?1714481840&quot; alt=&quot;Fooocus WebUI&quot;&gt;
&lt;p&gt;La verdadera magia se despliega entre bastidores. En el momento en que pulsa el botón &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;, su pregunta se transfiere al modelo de lenguaje basado en GPT2. Este modelo transforma su breve mensaje en una mezcla de mensajes elaborativos positivos y negativos. Posteriormente, esta mezcla se introduce en el modelo Stable Diffusion XL, ajustado para emular el estilo MidJourney. De este modo, incluso un mensaje breve puede generar resultados impresionantes.&lt;/p&gt;
&lt;p&gt;Por supuesto, no hay ninguna restricción a la hora de escribir sus propios mensajes. Sin embargo, tras varias iteraciones, resulta evidente que, incluso en ausencia de éstas, el contenido generado sigue siendo intrigante y diverso.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/598-easy-diffusion-ui&quot;&gt;Easy Diffusion UI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.com/catalog/597-stable-video-diffusion&quot;&gt;Stable Video Diffusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/975/original/il_fooocus_rethinking_of_sd_and_mj.png?1714481802"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 10:36:52 +0100</pubDate>
      <guid isPermaLink="false">590</guid>
      <dc:date>2025-01-21 10:36:52 +0100</dc:date>
    </item>
    <item>
      <title>Renderizado remoto en Blender con Flamenco</title>
      <link>https://www.leadergpu.es/catalog/588-renderizado-remoto-en-blender-con-flamenco</link>
      <description>&lt;p&gt;Cuando el renderizado de escenas pesadas en &lt;a href=&quot;https://www.blender.org/&quot;&gt;Blender&lt;/a&gt; empieza a consumir demasiado tiempo de su equipo, tiene dos opciones: actualizar el ordenador de cada miembro del equipo o subcontratar el renderizado a una granja dedicada. Muchas empresas ofrecen soluciones de renderizado ya preparadas, pero si necesita un control total sobre la infraestructura, estas soluciones pueden no ser la opción más fiable.&lt;/p&gt;
&lt;p&gt;Un enfoque alternativo podría consistir en crear una infraestructura híbrida. En esta configuración, mantendría el almacenamiento de datos y la gestión de la granja de renderizado dentro de su infraestructura existente. El único elemento que se ubicaría fuera serían los &lt;a href=&quot;https://www.leadergpu.com/&quot;&gt;servidores GPU&lt;/a&gt; alquilados en los que se realizaría el renderizado.&lt;/p&gt;
&lt;p&gt;En general, la infraestructura de la granja de renderizado para Blender tiene este aspecto:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/888/original/sh_blender_remote_rendering_with_flamenco_1.jpg?1713174084&quot; alt=&quot;Basic components scheme&quot;&gt;
&lt;p&gt;Aquí tenemos un nodo central &lt;b translate=&quot;no&quot;&gt;Manager&lt;/b&gt; que organiza todos los procesos. Recibe las tareas de renderizado de los usuarios a través de un &lt;b translate=&quot;no&quot;&gt;Blender Add-on&lt;/b&gt; específico y mueve todos los archivos necesarios a &lt;b translate=&quot;no&quot;&gt;Shared Storage&lt;/b&gt;. Luego, el &lt;b translate=&quot;no&quot;&gt;Manager&lt;/b&gt; distribuye las tareas a &lt;b translate=&quot;no&quot;&gt;Worker nodes&lt;/b&gt;. Ellos reciben un trabajo que contiene toda la información acerca de dónde el Trabajador puede encontrar los archivos para renderizar y qué hacer con los resultados obtenidos. Para implementar este esquema, puedes utilizar una aplicación completamente gratuita y de código abierto llamada &lt;a href=&quot;https://flamenco.blender.org/&quot;&gt;Flamenco&lt;/a&gt;. En esta guía, mostramos cómo preparar todos los nodos, especialmente los &lt;b translate=&quot;no&quot;&gt;Manager&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;Worker&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;El nodo &lt;b translate=&quot;no&quot;&gt;Storage&lt;/b&gt; no tiene requisitos específicos. Puede utilizarse con cualquier sistema operativo que soporte los protocolos SMB/CIFS o NFS. El único requisito es que el directorio de almacenamiento debe estar montado y accesible por el sistema operativo. En tu infraestructura, puede ser cualquier carpeta compartida accesible a todos los nodos.&lt;/p&gt;
&lt;p&gt;Cada nodo tiene direcciones IP diferentes, y el servidor &lt;b translate=&quot;no&quot;&gt;Wireguard VPN&lt;/b&gt; será un punto central que los una en una red L2. Este servidor, situado en el perímetro externo, te permite trabajar sin realizar cambios en la política NAT existente.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/889/original/sh_blender_remote_rendering_with_flamenco_2.jpg?1713174131&quot; alt=&quot;Virtual components scheme&quot;&gt;
&lt;p&gt;Para este ejemplo, creamos la siguiente configuración mixta:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.1 - Wireguard VPN server&lt;/b&gt; (servidor virtual por cualquier proveedor de infraestructura) con una IP externa;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.2 - Worker node&lt;/b&gt; (servidor dedicado por LeaderGPU) con una IP externa;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.3 - Manager node&lt;/b&gt; (servidor virtual en la red de la oficina) situado detrás de NAT;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.4 - Storage node&lt;/b&gt; (servidor virtual en la red de la oficina) situado detrás de NAT;&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;10.0.0.5 - User node&lt;/b&gt; (ordenador portátil del consumidor en la red de la oficina) situado detrás de NAT.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Primer paso Wireguard&lt;/h2&gt;
&lt;h3&gt;Servidor VPN&lt;/h3&gt;
&lt;p&gt;Puedes instalar y configurar Wireguard manualmente, usando una guía oficial y ejemplos. Sin embargo, hay una alternativa más fácil: script no oficial por el ingeniero de software de París (Stanislas aka &lt;a href=&quot;https://github.com/angristan&quot;&gt;angristan&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Descarga el script desde GitHub:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;wget https://raw.githubusercontent.com/angristan/wireguard-install/master/wireguard-install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Hazlo ejecutable:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;sudo chmod +x wireguard-install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecutar:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;sudo ./wireguard-install.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Siga las instrucciones y configure el rango de direcciones IP &lt;b translate=&quot;no&quot;&gt;10.0.0.1/24&lt;/b&gt;. El sistema te pedirá que crees inmediatamente un fichero de configuración para el primer cliente. Según el plan, este cliente será el nodo trabajador con nombre &lt;b translate=&quot;no&quot;&gt;Worker&lt;/b&gt; y dirección &lt;b translate=&quot;no&quot;&gt;10.0.0.2&lt;/b&gt;. Cuando finalice el script, aparecerá un archivo de configuración en el directorio raíz: &lt;b translate=&quot;no&quot;&gt;/root/wg0-client-Worker.conf&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Ejecuta el siguiente comando para ver esta configuración:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;cat /home/usergpu/wg0-client-Worker.conf&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/32,fd42:42:42::2/128
DNS = 1.1.1.1,1.0.0.1
[Peer]
PublicKey = [SERVER_PRIVATE_KEY]
PresharedKey = [SERVER_PRESHARED_KEY]
Endpoint = [IP_ADDRESS:PORT]
AllowedIPs = 10.0.0.0/24,::/0&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute de nuevo el script de instalación para crear otro cliente. Añada todos los clientes futuros de esta forma y, finalmente, podrá comprobar que se han creado todos los archivos de configuración:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;ls -l | grep wg0&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;-rw-r--r-- 1 root    root      529 Jul 14 12:59 wg0-client-Manager.conf
-rw-r--r-- 1 root    root      529 Jul 14 12:59 wg0-client-Storage.conf
-rw-r--r-- 1 root    root      529 Jul 14 12:59 wg0-client-User.conf
-rw-r--r-- 1 root    root      529 Jul 14 12:58 wg0-client-Worker.conf&lt;/pre&gt;
&lt;h3&gt;Clientes VPN&lt;/h3&gt;
&lt;p&gt;Los clientes VPN incluyen todos los nodos que necesitan estar conectados a una única red. En nuestra guía, esto se refiere al nodo gestor, el nodo de almacenamiento, el nodo cliente (si se utiliza Linux) y los nodos trabajadores. Si el servidor VPN se ejecuta en un nodo trabajador, no es necesario configurarlo como cliente (este paso puede omitirse).&lt;/p&gt;
&lt;p&gt;Actualice el repositorio de caché de paquetes y, a continuación, instale los paquetes de soporte de Wireguard y CIFS:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install wireguard cifs-utils&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Eleve los privilegios a superusuario:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo -i&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra el directorio de configuración de Wireguard:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;cd /etc/wireguard&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el comando &lt;b translate=&quot;no&quot;&gt;umask&lt;/b&gt; para que sólo el superusuario tenga acceso a los archivos de este directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;umask 077&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Genera una clave privada y guárdala en un archivo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;wg genkey &gt; private-key&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Generar una clave pública utilizando la clave privada:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;wg pubkey &gt; public-key &lt; private-key&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crear un archivo de configuración:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;nano /etc/wireguard/wg0.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pega tu propia configuración, creada para este cliente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Interface]
PrivateKey = [CLIENT_PRIVATE_KEY]
Address = 10.0.0.2/32,fd42:42:42::2/128
DNS = 1.1.1.1,1.0.0.1
[Peer]
PublicKey = [SERVER_PRIVATE_KEY]
PresharedKey = [SERVER_PRESHARED_KEY]
Endpoint = [SERVER_IP_ADDRESS:PORT]
AllowedIPs = 10.0.0.0/24,::/0
PersistentKeepalive = 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No olvides añadir la opción &lt;b translate=&quot;no&quot;&gt;PersistentKeepalive = 1&lt;/b&gt; (donde 1 significa 1 segundo) en cada nodo situado detrás de NAT. Puedes elegir este periodo experimentalmente. El valor recomendado por los autores de Wireguard es 25. Guarda el archivo y sal, usando el atajo de teclado &lt;b translate=&quot;no&quot;&gt;CTRL + X&lt;/b&gt; y la tecla &lt;b translate=&quot;no&quot;&gt;Y&lt;/b&gt; para confirmar.&lt;/p&gt;
&lt;p&gt;Si quieres pasar el trafico de internet configura &lt;b translate=&quot;no&quot;&gt;AllowedIPs&lt;/b&gt; a &lt;b translate=&quot;no&quot;&gt;0.0.0.0/0,::/0&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;A continuación, cierra la sesión desde la cuenta raíz:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;exit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inicie la conexión usando systemctl:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Comprueba que todo va bien y que el servicio se ha iniciado correctamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
Active: active (exited) since Mon 2023-10-23 09:47:53 UTC; 1h 45min ago
  Docs: man:wg-quick(8)
        man:wg(8)
        https://www.wireguard.com/
        https://www.wireguard.com/quickstart/
        https://git.zx2c4.com/wireguard-tools/about/src/man/wg-quick.8
        https://git.zx2c4.com/wireguard-tools/about/src/man/wg.8
Process: 4128 ExecStart=/usr/bin/wg-quick up wg0 (code=exited, status=0/SUCCESS)
Main PID: 4128 (code=exited, status=0/SUCCESS)
  CPU: 76ms&lt;/pre&gt;
&lt;p&gt;Si encuentra un error como &quot;resolvconf: command not found&quot; en Ubuntu 22.04 simplemente cree un enlace de símbolo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ln -s /usr/bin/resolvectl /usr/local/bin/resolvconf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Habilite el nuevo servicio para que se conecte automáticamente mientras el sistema operativo está arrancando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, puedes comprobar la conectividad enviando paquetes eco:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ping 10.0.0.1&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=145 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=72.0 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=72.0 ms
64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=72.2 ms
--- 10.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 71.981/90.230/144.750/31.476 ms&lt;/pre&gt;
&lt;h2&gt;Paso 2. Nodo NAS&lt;/h2&gt;
&lt;p&gt;Conéctese al servidor VPN siguiendo la guía del paso 1. A continuación, instale los paquetes Samba de servidor y cliente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install samba samba-client&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Haga una copia de seguridad de su configuración por defecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree un directorio que se utilizará como recurso compartido:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mkdir /mnt/share&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree un nuevo grupo de usuarios que tendrá acceso al nuevo recurso compartido:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo groupadd smbusers&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade un usuario existente al grupo creado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo usermod -aG smbusers user&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Establezca una contraseña para este usuario. Este paso es necesario porque la contraseña del sistema y la contraseña de Samba son entidades diferentes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo smbpasswd -a $USER&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Elimine la configuración por defecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo rm /etc/samba/smb.conf&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y crea una nueva:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/samba/smb.conf&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[global]
workgroup = WORKGROUP
security = user
map to guest = bad user
wins support = no
dns proxy = no
[private]
path = /mnt/share
valid users = @smbusers
guest ok = no
browsable = yes
writable = yes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarda el archivo y prueba los nuevos parámetros:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;testparm -s&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicie ambos servicios Samba:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo service smbd restart&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo service nmbd restart&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por último, dé permiso para compartir la carpeta:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown user:smbusers /mnt/share&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 3. Conexión del cliente Samba&lt;/h2&gt;
&lt;p&gt;Todos los nodos de Flamenco utilizan un directorio compartido ubicado en /mnt/flamenco. Debe montar este directorio en cada nodo antes de ejecutar los scripts flamenco-client o flamenco-manager. En este ejemplo, utilizamos un nodo trabajador alojado en LeaderGPU con el nombre de usuario &lt;b translate=&quot;no&quot;&gt;usergpu&lt;/b&gt;. Por favor, sustituye estos datos por los tuyos si difieren.&lt;/p&gt;
&lt;p&gt;Crea un archivo oculto donde puedas almacenar las credenciales del recurso compartido SMB:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /home/usergpu/.smbcredentials&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Escriba estas dos cadenas:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;username=user # your Samba username
password=password # your Samba password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarda este archivo y sal. Luego, asegure este archivo cambiando los permisos de acceso:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chmod 600 /home/usergpu/.smbcredentials&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree un nuevo directorio que pueda utilizarse como punto de montaje para adjuntar el almacenamiento remoto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mkdir /mnt/flamenco&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y haz al usuario propietario de este directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown usergpu:users /mnt/flamenco&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Lo único que falta es que el directorio de red se monte automáticamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/mnt-flamenco.mount&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Mount Remote Storage
[Mount]
What=//10.0.0.4/private
Where=/mnt/flamenco
Type=cifs
Options=mfsymlinks,credentials=/home/usergpu/.smbcredentials,uid=usergpu,gid=users
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añade dos líneas a tu configuración VPN en la sección &lt;b translate=&quot;no&quot;&gt;[Interface]&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo -i&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-root&quot;&gt;nano /etc/wireguard/wg0.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;…
PostUp = ping 10.0.0.4 -c 4 &amp;&amp; systemctl start mnt-flamenco.mount
PostDown = systemctl stop mnt-flamenco.mount
…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicie el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compruebe que los servicios se han cargado y que el directorio compartido se ha montado correctamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;df -h&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Filesystem          Size  Used Avail Use% Mounted on
tmpfs                35G  3.3M   35G   1% /run
/dev/sda2            99G   18G   77G  19% /
tmpfs               174G     0  174G   0% /dev/shm
tmpfs               5.0M     0  5.0M   0% /run/lock
tmpfs                35G  8.0K   35G   1% /run/user/1000
//10.0.0.4/private   40G  9.0G   31G  23% /mnt/flamenco&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 4. Nodo gestor&lt;/h2&gt;
&lt;p&gt;Configure una conexión VPN siguiendo la guía del Paso 1. Detenga el servicio VPN antes de continuar:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl stop wg-quick@wg0.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Preparémonos. El montaje automático requiere utilidades para el protocolo CIFS:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install cifs-utils&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente paso importante es instalar Blender. Puede hacerlo utilizando el gestor de paquetes estándar de APT, pero lo más probable es que instale una de las versiones más antiguas (inferior a la v3.6.4). Utilicemos Snap para instalar la última versión:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo snap install blender --classic&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compruebe la versión instalada usando el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;blender --version&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;Blender 4.4.3
build date: 2025-04-29
build time: 15:12:13
build commit date: 2025-04-29
build commit time: 14:09
build hash: 802179c51ccc
build branch: blender-v4.4-release
build platform: Linux
build type: Release
…&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si recibe un mensaje de error indicando que faltan bibliotecas, simplemente instálelas. Todas estas bibliotecas están incluidas en el paquete XOrg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install xorg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue la aplicación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://flamenco.blender.org/downloads/flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descomprime el archivo descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;tar xvfz flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vaya al directorio creado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd flamenco-3.7-linux-amd64/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E inicie Flamenco por primera vez:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./flamenco-manager&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra la siguiente dirección en su navegador: &lt;a href=&quot;http://10.0.0.3:8080/&quot;&gt;http://10.0.0.3:8080/&lt;/a&gt;. Haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Let&#39;s go&lt;/b&gt;. Escriba &lt;b translate=&quot;no&quot;&gt;/mnt/flamenco&lt;/b&gt; en el campo correspondiente y, a continuación, haga clic en &lt;b translate=&quot;no&quot;&gt;Next&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/890/original/sh_blender_remote_rendering_with_flamenco_3.png?1713174175&quot; alt=&quot;Shared storage setup&quot;&gt;
&lt;p&gt;Flamenco intentará localizar el archivo ejecutable de Blender. Si ha instalado Blender desde Snap, la ruta será &lt;b translate=&quot;no&quot;&gt;/snap/bin/blender&lt;/b&gt;. Compruebe este punto y haga clic en &lt;b translate=&quot;no&quot;&gt;Next&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/891/original/sh_blender_remote_rendering_with_flamenco_4.png?1713174210&quot; alt=&quot;PATH environment setup&quot;&gt;
&lt;p&gt;Compruebe el resumen y haga clic en &lt;b translate=&quot;no&quot;&gt;Confirm&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/892/original/sh_blender_remote_rendering_with_flamenco_5.png?1713174240&quot; alt=&quot;Check summary settings&quot;&gt;
&lt;p&gt;Vuelva a la sesión SSH y utilice el atajo de teclado &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt; para interrumpir la aplicación. El primer lanzamiento genera el archivo de configuración &lt;b translate=&quot;no&quot;&gt;flamenco-manager.yaml&lt;/b&gt;. Vamos a añadir algunas opciones a las secciones &lt;b translate=&quot;no&quot;&gt;variables&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;blenderArgs&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano flamenco-manager.yaml&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;# Configuration file for Flamenco.
# For an explanation of the fields, refer to flamenco-manager-example.yaml
#
# NOTE: this file will be overwritten by Flamenco Manager&#39;s web-based configuration system.
#
# This file was written on 2023-10-17 12:41:28 +00:00 by Flamenco 3.7
_meta:
  version: 3
manager_name: Flamenco Manager
database: flamenco-manager.sqlite
listen: :8080
autodiscoverable: true
local_manager_storage_path: ./flamenco-manager-storage
shared_storage_path: /mnt/flamenco
shaman:
  enabled: true
  garbageCollect:
    period: 24h0m0s
    maxAge: 744h0m0s
    extraCheckoutPaths: []
task_timeout: 10m0s
worker_timeout: 1m0s
blocklist_threshold: 3
task_fail_after_softfail_count: 3
variables:
  blender:
    values:
    - platform: linux
      value: blender
    - platform: windows
      value: blender
    - platform: darwin
      value: blender
  storage:
    values:
    is_twoway: true
    values:
    - platform: linux
      value: /mnt/flamenco
    - platform: windows
      value: Z:\
    - platform: darwin
      value: /Volumes/shared/flamenco
  blenderArgs:
    values:
    - platform: all
      value: -b -y -E CYCLES -P gpurender.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El primer bloque adicional describe &lt;a href=&quot;https://flamenco.blender.org/usage/variables/multi-platform/&quot;&gt;variables Two-way&lt;/a&gt; adicionales, necesarias para granjas multiplataforma. Esto resuelve el principal problema con las barras oblicuas y las rutas. En Linux, utilizamos el símbolo de la barra oblicua (/) como separador, pero en Windows, utilizamos el símbolo de la barra invertida (\). Aquí, creamos la regla de sustitución para todas las alternativas disponibles: Linux, Windows y macOS (&lt;a href=&quot;https://en.wikipedia.org/wiki/Darwin_(operating_system)&quot;&gt;Darwin&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Cuando se monta un recurso compartido de red en Windows, es necesario elegir una letra de unidad. Por ejemplo, nuestro &lt;b translate=&quot;no&quot;&gt;Storage&lt;/b&gt; se monta con la letra &lt;b translate=&quot;no&quot;&gt;Z:&lt;/b&gt;. La regla de sustitución indica al sistema que para la plataforma Windows, la ruta &lt;b translate=&quot;no&quot;&gt;/mnt/flamenco&lt;/b&gt; se ubicará en &lt;b translate=&quot;no&quot;&gt;Z:\&lt;/b&gt;. Para macOS, esta ruta será &lt;b translate=&quot;no&quot;&gt;/Volumes/shared/flamenco&lt;/b&gt;.&lt;/p&gt;
&lt;p&gt;Mire el segundo bloque añadido. Esto instruye a Blender a usar el motor de renderizado &lt;a href=&quot;https://www.cycles-renderer.org/&quot;&gt;Cycles&lt;/a&gt; y llama a un simple script Python, &lt;b translate=&quot;no&quot;&gt;gpurender.py&lt;/b&gt;, cuando Blender se ejecuta. Este es un simple truco para seleccionar la GPU en lugar de la CPU. No hay una opción estándar para hacer esto directamente. No puedes invocar &lt;b translate=&quot;no&quot;&gt;blender --use-gpu&lt;/b&gt; o algo similar. Sin embargo, puedes invocar cualquier script externo de Python usando la opción &lt;b translate=&quot;no&quot;&gt;-P&lt;/b&gt;. Este comando ordena a &lt;b translate=&quot;no&quot;&gt;Worker&lt;/b&gt; que busque un script en el directorio local y lo ejecute cuando el trabajo asignado invoque al ejecutable de Blender.&lt;/p&gt;
&lt;p&gt;Ahora, podemos delegar el control de la aplicación al subsistema &lt;a href=&quot;https://systemd.io/&quot;&gt;systemd&lt;/a&gt; init. Informemos al sistema sobre la ubicación del directorio de trabajo, el archivo ejecutable y los privilegios de usuario necesarios para el lanzamiento. Crea un nuevo archivo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Llénalo con las siguientes cadenas:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Flamenco Manager service
[Service]
User=user
WorkingDirectory=/home/user/flamenco-3.7-linux-amd64
ExecStart=/home/user/flamenco-3.7-linux-amd64/flamenco-manager
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo y salga del editor de texto nano.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● flamenco-manager.service - Flamenco Manager service
Loaded: loaded (/etc/systemd/system/flamenco-manager.service; disabled; vendor preset: enabled)
Active: active (running) since Tue 2023-10-17 11:03:50 UTC; 7s ago
Main PID: 3059 (flamenco-manage)
 Tasks: 7 (limit: 4558)
  Memory: 28.6M
     CPU: 240ms
CGroup: /system.slice/flamenco-manager.service
        └─3059 /home/user/flamenco-3.7-linux-amd64/flamenco-manager&lt;/pre&gt;
&lt;p&gt;Habilite el inicio automático al arrancar el sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable flamenco-manager.service&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 5. Nodo trabajador&lt;/h2&gt;
&lt;p&gt;Conéctese al servidor VPN utilizando la guía del Paso 1 y monte el recurso compartido del Paso 3. Detenga el servicio VPN antes de continuar:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo snap install blender --classic&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Los archivos *.blend modernos se comprimen con el algoritmo Zstandard. Para evitar errores, es esencial incorporar soporte para este algoritmo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install python3-zstd&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue la aplicación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://flamenco.blender.org/downloads/flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descomprime el archivo descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;tar xvfz flamenco-3.7-linux-amd64.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Navegue hasta el directorio creado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd flamenco-3.7-linux-amd64/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cree un script adicional que habilite el renderizado GPU cuando se ejecuten trabajos de Flamenco:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano gpurender.py&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;import bpy
def enable_gpus(device_type, use_cpus=False):
    preferences = bpy.context.preferences
    cycles_preferences = preferences.addons[&quot;cycles&quot;].preferences
    cycles_preferences.refresh_devices()
    devices = cycles_preferences.devices
    if not devices:
        raise RuntimeError(&quot;Unsupported device type&quot;)
    activated_gpus = []
    for device in devices:
        if device.type == &quot;CPU&quot;:
            device.use = use_cpus
        else:
            device.use = True
            activated_gpus.append(device.name)
            print(&#39;activated gpu&#39;, device.name)
    cycles_preferences.compute_device_type = device_type
    bpy.context.scene.cycles.device = &quot;GPU&quot;
    return activated_gpus
enable_gpus(&quot;CUDA&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo y salga. A continuación, cree un servicio independiente para ejecutar Flamenco desde systemd:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Flamenco Worker service
[Service]
User=usergpu
WorkingDirectory=/home/usergpu/flamenco-3.7-linux-amd64
ExecStart=/home/usergpu/flamenco-3.7-linux-amd64/flamenco-worker
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Recarga la configuración e inicia el nuevo servicio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl status flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;● flamenco-worker.service - Flamenco Worker service
Loaded: loaded (/etc/systemd/system/flamenco-worker.service; enabled; preset: enabled)
Active: active (running) since Tue 2023-10-17 13:56:18 EEST; 47s ago
Main PID: 636 (flamenco-worker)
 Tasks: 5 (limit: 23678)
Memory: 173.9M
   CPU: 302ms
CGroup: /system.slice/flamenco-worker.service
        └─636 /home/user/flamenco-3.7-linux-amd64/flamenco-worker&lt;/pre&gt;
&lt;p&gt;Activar el inicio automático al arrancar el sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable flamenco-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 6. Nodo de usuario&lt;/h2&gt;
&lt;p&gt;El nodo de usuario se puede gestionar con cualquier sistema operativo. Para esta guía, mostramos cómo configurar un nodo con Windows 11 y 4 componentes necesarios:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Conexión VPN&lt;/li&gt;
  &lt;li&gt;Directorio remoto montado&lt;/li&gt;
  &lt;li&gt;Blender instalado&lt;/li&gt;
  &lt;li&gt;Complemento Flamenco&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Descargue e instale Wireguard desde el &lt;a href=&quot;https://download.wireguard.com/windows-client/wireguard-installer.exe&quot;&gt;sitio web oficial&lt;/a&gt;. Crea un nuevo archivo de texto y pega la configuración, generada para el cliente en el Paso 1. Cambie el nombre del archivo a &lt;b translate=&quot;no&quot;&gt;flamenco.conf&lt;/b&gt; y añádalo en Wireguard utilizando el botón &lt;b translate=&quot;no&quot;&gt;Add tunnel&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/893/original/sh_blender_remote_rendering_with_flamenco_6.png?1713174282&quot; alt=&quot;Wireguard Add Tunnel&quot;&gt;
&lt;p&gt;Conéctese a su servidor pulsando el botón &lt;b translate=&quot;no&quot;&gt;Activate&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/894/original/sh_blender_remote_rendering_with_flamenco_7.png?1713174312&quot; alt=&quot;Activate the tunnel&quot;&gt;
&lt;p&gt;Vamos a montar un directorio remoto. Haz clic con el botón derecho en &lt;b translate=&quot;no&quot;&gt;This PC&lt;/b&gt; y selecciona &lt;b translate=&quot;no&quot;&gt;Map network drive…&lt;/b&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/895/original/sh_blender_remote_rendering_with_flamenco_8.png?1713174340&quot; alt=&quot;Mount the remote directory&quot;&gt;
&lt;p&gt;Elige &lt;b translate=&quot;no&quot;&gt;Z:&lt;/b&gt; como letra de unidad, escribe la dirección del recurso compartido Samba &lt;b translate=&quot;no&quot;&gt;\\10.0.0.4\private&lt;/b&gt; y no olvides marcar &lt;b translate=&quot;no&quot;&gt;Connect using different credentials&lt;/b&gt;. A continuación, haz clic en &lt;b translate=&quot;no&quot;&gt;Finish&lt;/b&gt;. El sistema te pedirá que introduzcas un nombre de usuario y una contraseña para el recurso compartido. A continuación, el directorio de red se montará como unidad Z:.&lt;/p&gt;
&lt;p&gt;Descarga e instala Blender desde el &lt;a href=&quot;https://www.blender.org/download/&quot;&gt;sitio web oficial&lt;/a&gt;. A continuación, abra la URL &lt;a href=&quot;http://10.0.0.3:8080/flamenco3-addon.zip&quot;&gt;http://10.0.0.3:8080/flamenco3-addon.zip&lt;/a&gt; e instale el complemento Flamenco. Actívalo en preferencias: &lt;b translate=&quot;no&quot;&gt;Edit &gt; Preferences &gt; Add-ons&lt;/b&gt;. Marque &lt;b translate=&quot;no&quot;&gt;System: Flamenco 3&lt;/b&gt;, introduzca la URL del Gestor &lt;a href=&quot;http://10.0.0.3:8080&quot;&gt;http://10.0.0.3:8080&lt;/a&gt;, y pulse el botón actualizar. El sistema se conectará al nodo gestor y cargará la configuración de almacenamiento automáticamente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/896/original/sh_blender_remote_rendering_with_flamenco_9.png?1713174378&quot; alt=&quot;Enable Flamenco add-on&quot;&gt;
&lt;p&gt;Abra el archivo que necesita renderizar. En la pestaña &lt;b translate=&quot;no&quot;&gt;Scene&lt;/b&gt;, seleccione &lt;b translate=&quot;no&quot;&gt;Cycles&lt;/b&gt; de la lista desplegable Renderizar &lt;b translate=&quot;no&quot;&gt;Engine&lt;/b&gt;. No olvides guardar el archivo, ya que estos ajustes se almacenan directamente en el archivo *.blend:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/897/original/sh_blender_remote_rendering_with_flamenco_10.png?1713174408&quot; alt=&quot;Select Render Engine&quot;&gt;
&lt;p&gt;Desplázate hacia abajo y encuentra la sección &lt;b translate=&quot;no&quot;&gt;Flamenco 3&lt;/b&gt;. Haz clic en &lt;b translate=&quot;no&quot;&gt;Fetch job types&lt;/b&gt; para obtener una lista de los tipos disponibles. Selecciona &lt;b translate=&quot;no&quot;&gt;Simple Blender Render&lt;/b&gt; en la lista desplegable y configura otras opciones, como el número de fotogramas, el tamaño de los trozos y la carpeta de salida. Por último, haz clic en &lt;b translate=&quot;no&quot;&gt;Submit to Flamenco&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/898/original/sh_blender_remote_rendering_with_flamenco_11.png?1713174432
&quot; alt=&quot;Set rendering parameters&quot;&gt;
&lt;p&gt;El complemento Flamenco crea un nuevo trabajo y carga un archivo de mezcla en el almacenamiento compartido. El sistema enviará el trabajo a un trabajador disponible e iniciará el proceso de renderizado:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/899/original/sh_blender_remote_rendering_with_flamenco_12.png?1713174462&quot; alt=&quot;Check added rendering job&quot;&gt;
&lt;p&gt;Si compruebas la carga de la GPU con nvtop o utilidades similares, mostrará que todas las GPUs tienen tareas de computación:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/900/original/sh_blender_remote_rendering_with_flamenco_13.png?1713174495&quot; alt=&quot;Check GPU load&quot;&gt;
&lt;p&gt;Encontrarás el resultado en el directorio que hayas seleccionado en el paso anterior. Ejemplo &lt;a href=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/901/original/sh_blender_remote_rendering_with_flamenco_14.gif?1713175121&quot;&gt;aquí&lt;/a&gt; (&lt;a href=&quot;https://www.blender.org/download/demo-files/&quot;&gt;Ripple Dreams&lt;/a&gt; por &lt;a href=&quot;https://twitter.com/redjam_9&quot;&gt;James Redmond&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Véase también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/586-fotogrametr-a-con-meshroom&quot;&gt;Fotogrametría con Meshroom&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/590-fooocus-replanteamiento-de-sd-y-mj&quot;&gt;Fooocus: Replanteamiento de SD y MJ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/888/original/sh_blender_remote_rendering_with_flamenco_1.jpg?1713174084"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 09:47:24 +0100</pubDate>
      <guid isPermaLink="false">588</guid>
      <dc:date>2025-01-21 09:47:24 +0100</dc:date>
    </item>
    <item>
      <title>Fotogrametría con Meshroom</title>
      <link>https://www.leadergpu.es/catalog/586-fotogrametr-a-con-meshroom</link>
      <description>&lt;p&gt;La fotogrametría es un método de transformación de objetos físicos en modelos digitales tridimensionales que pueden editarse con software 3D. En este proceso se suelen utilizar dispositivos especializados llamados escáneres 3D, que son de dos tipos principales: ópticos y láser.&lt;/p&gt;
&lt;p&gt;Los escáneres ópticos suelen utilizar una o varias cámaras digitales e iluminación especial para iluminar uniformemente el objeto durante el escaneado. Esto permite crear un modelo 3D. Los escáneres láser, por su parte, utilizan rayos láser. Estos dispositivos emiten múltiples rayos láser y miden el tiempo que tarda cada rayo en rebotar en el objeto. A partir de estos datos, junto con la información de los sensores de posición, el escáner calcula la distancia a cada punto del objeto. Así se crea una &quot;nube de puntos&quot; que constituye la base del modelo 3D.&lt;/p&gt;
&lt;h3&gt;Nube de puntos&lt;/h3&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/050/original/sh_photogrammetry_with_meshroom_1.png?1724833519&quot; alt=&quot;Points cloud rabbit&quot;&gt;
&lt;p&gt;Para construir el futuro marco de un objeto, el sistema necesita conocer las coordenadas de cada vértice en el espacio tridimensional. El conjunto de vértices se denomina nube de puntos. Cuantos más vértices haya, más detallado será el objeto. Crear una nube de puntos es el primer paso, y uno de los más cruciales, para recrear un modelo 3D a partir de fotografías.&lt;/p&gt;
&lt;p&gt;Es importante tener en cuenta que cada vértice de la nube de puntos está inicialmente desconectado de otros vértices. Esto permite un filtrado sencillo: mantener los puntos necesarios y eliminar el resto, antes de empezar a recrear la malla del objeto.&lt;/p&gt;
&lt;h3&gt;Objetos de malla&lt;/h3&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/051/original/sh_photogrammetry_with_meshroom_2.png?1724833553&quot; alt=&quot;Mesh object rabbit&quot;&gt;
&lt;p&gt;Un objeto de malla es un tipo de modelo 3D formado por primitivas geométricas triangulares, a menudo denominadas mallas o polimallas. Una vez formados los puntos del objeto, la aplicación puede componer independientemente primitivas triangulares a partir de ellos. Conectando estas primitivas, es posible crear un modelo 3D de casi cualquier forma. En esta fase, el modelo carece de color y permanece sin pintar.&lt;/p&gt;
&lt;p&gt;La etapa de texturizado posterior resuelve este problema.&lt;/p&gt;
&lt;h3&gt;Texturizado&lt;/h3&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/052/original/sh_photogrammetry_with_meshroom_3.png?1724833589&quot; alt=&quot;Textured rabbit&quot;&gt;
&lt;p&gt;La última etapa consiste en aplicar la textura de la imagen extraída de las fotos al objeto de malla preparado. La calidad de las fotos tomadas y su resolución desempeñan aquí un papel fundamental. Si es baja, el resultado final no tendrá el mejor aspecto. Pero si se ha tomado un número suficiente de fotos de buena calidad, entonces a la salida recibirás un modelo 3D totalmente listo para usar de un objeto real. A continuación daremos algunos consejos útiles para preparar las fotos originales.&lt;/p&gt;
&lt;h2&gt;Ajustes de la cámara&lt;/h2&gt;
&lt;p&gt;Para evitar decepciones en tus primeros intentos de crear un modelo 3D a partir de fotografías, ten en cuenta estas sencillas reglas básicas. Cada regla ayudará a evitar problemas que suelen surgir durante la fase de creación del objeto de malla.&lt;/p&gt;
&lt;p&gt;En primer lugar, no confíes en los ajustes automáticos de tu cámara digital. Las cámaras modernas intentan equilibrar cuatro parámetros clave de forma independiente:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;ISO,&lt;/li&gt;
    &lt;li&gt;el balance de blancos,    &lt;/li&gt;
    &lt;li&gt;velocidad de obturación,&lt;/li&gt;
    &lt;li&gt;apertura.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En modo automático, incluso pequeños cambios en las condiciones externas pueden hacer que estos ajustes varíen entre fotogramas. Estas variaciones pueden provocar incoherencias notables durante la fase de texturizado.&lt;/p&gt;
&lt;p&gt;Para mantener parámetros consistentes entre fotogramas, utilice el modo &lt;b translate=&quot;no&quot;&gt;Manual&lt;/b&gt; (M). La apertura es un ajuste crucial aquí. Dependiendo de tu objetivo, busca una posición en la que esté casi cerrado. Esto ayuda a conseguir la máxima profundidad de campo: cuanto menos abierto esté el diafragma, mejor. Sin embargo, evita los valores extremos. Si tu objetivo puede acercarse a &lt;b translate=&quot;no&quot;&gt;f/22&lt;/b&gt;, obtendrás buenos resultados utilizando valores entre &lt;b translate=&quot;no&quot;&gt;f/11&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;f/20&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/053/original/sh_photogrammetry_with_meshroom_4.png?1724833619&quot; alt=&quot;Makarios aperture difference&quot;&gt;
&lt;p align=&quot;center&quot;&gt;&lt;sup&gt;&lt;i&gt;Izquierda f/11, derecha f/22&lt;/i&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;Cerrar el diafragma, sin embargo, crea otro problema: luz insuficiente. Esto se puede solucionar de dos formas: aumentando la sensibilidad ISO o alargando la velocidad de obturación. Ambos métodos afectarán al resultado final, aunque de forma diferente. Aumentar la ISO a 6400 introduce ruido digital en la imagen, por lo que es mejor utilizar los valores más bajos posibles. Para obtener unos resultados casi ideales, tiene sentido ajustar el ISO a 100. Sin embargo, esto significa que persiste el problema de la iluminación insuficiente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/054/original/sh_photogrammetry_with_meshroom_5.png?1724833649&quot; alt=&quot;Makarios ISO difference&quot;&gt;
&lt;p align=&quot;center&quot;&gt;&lt;sup&gt;&lt;i&gt;Izquierda ISO 100, derecha ISO 6400&lt;/i&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;La forma más eficaz de aumentar la luz que pasa a través del sensor de la cámara en condiciones de poca luz es alargar la velocidad de obturación. Cuanto más tiempo permanezca abierto el obturador, más fotones llegarán al sensor, lo que se traducirá en una mejor calidad de imagen. Sin embargo, este enfoque presenta un reto: sin trípode, una velocidad de obturación de 1/50 segundos o más puede desenfocar la imagen. El uso de un trípode elimina este problema.&lt;/p&gt;
&lt;p&gt;El balance de blancos es el último parámetro crucial. Es importante desactivar el ajuste automático y elegir un perfil preestablecido (como &quot;Día soleado&quot;) o un valor personalizado en Kelvin. Por ejemplo, 5200K es un ajuste habitual. Los valores más bajos desplazan el tono hacia el amarillo, mientras que los más altos se inclinan hacia el azul. Para evitar correcciones de color en el post-procesado, utiliza el mismo perfil de balance de blancos para todas las fotos de una serie.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/055/original/sh_photogrammetry_with_meshroom_6.png?1724833681&quot; alt=&quot;Makarios white balance&quot;&gt;
&lt;p align=&quot;center&quot;&gt;&lt;sup&gt;&lt;i&gt;Perfiles de balance de blancos. Izquierda &quot;Día soleado&quot;, derecha &quot;Auto&quot;.&lt;/i&gt;&lt;/sup&gt;&lt;/p&gt;
&lt;p&gt;En resumen, para capturar fotos de alta calidad para fotogrametría:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Utilice un trípode cuando no haya suficiente luz.&lt;/li&gt;
    &lt;li&gt;Cierre el diafragma casi al mínimo.&lt;/li&gt;
    &lt;li&gt;Ajusta el ISO a su valor mínimo.&lt;/li&gt;
    &lt;li&gt;Elija una velocidad de obturación que le proporcione el resultado deseado (o utilice el exposímetro integrado de su cámara).&lt;/li&gt;
    &lt;li&gt;Utiliza el mismo preajuste de balance de blancos.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Hacer fotos&lt;/h2&gt;
&lt;p&gt;Hablemos de cuántas fotos hay que hacer y desde qué ángulos. El tipo de objeto y su fondo influyen significativamente en el resultado final. Los objetos sin superficies brillantes, transparentes o reflectantes son ideales para la fotogrametría. En la práctica, objetos como ventanas y cristales suelen requerir correcciones posteriores en un editor 3D. Sin embargo, la técnica general de toma sigue siendo la misma.&lt;/p&gt;
&lt;p&gt;Para objetos pequeños situados sobre una superficie, imagine una esfera alrededor del objeto. Haz fotos como si tu cámara rodeara el objeto tres veces: una desde abajo, otra en el centro y otra desde arriba.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/056/original/sh_photogrammetry_with_meshroom_7.png?1724833713&quot; alt=&quot;Rabbit camera positions&quot;&gt;
&lt;p&gt;Es fundamental que el objeto ocupe al menos la mitad, preferiblemente las tres cuartas partes de cada fotograma. En lugar de utilizar el zoom, intenta acercarte físicamente al objeto. Al crear un punto de nube, el software necesita tantos píxeles como sea posible.&lt;/p&gt;
&lt;p&gt;Al disparar, recuerda que el software combina los fotogramas en un único objeto para obtener una geometría correcta. Ten por norma tomar al menos tres fotogramas desde cada ángulo. Una vez que hayas centrado el objeto en el encuadre, divídelo mentalmente en vertical en tres partes iguales. Tome tres fotografías, cada una enfocando un tercio del objeto. Esto proporciona el solapamiento necesario para que la aplicación calcule con precisión la ubicación de cada punto en el espacio 3D. Después de fotografiar el objeto desde todos los lados y ángulos posibles, puede empezar a preparar el software.&lt;/p&gt;
&lt;h2&gt;Instalar Meshroom&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://alicevision.org/&quot;&gt;Meshroom&lt;/a&gt; es una aplicación gratuita y multiplataforma que realiza secuencialmente todas las etapas de procesamiento, utilizando los recursos de la CPU y la GPU. Aunque puede ejecutarse en un ordenador doméstico estándar, cada etapa puede llevar mucho tiempo. Para proyectos a gran escala que impliquen la reconstrucción 3D de numerosos objetos, como la creación de una impresionante escena 3D, alquilar un &lt;a href=&quot;https://www.leadergpu.es/&quot;&gt;servidor GPU dedicado&lt;/a&gt; puede ser una solución práctica.&lt;/p&gt;
&lt;p&gt;Consideremos un servidor LeaderGPU con la siguiente configuración: &lt;b translate=&quot;no&quot;&gt;2 x NVIDIA® RTX™ 3090, 2 x Intel® Xeon® Silver 4210 (3.20 GHz), 128GB RAM&lt;/b&gt;. Utilizaremos Windows Server 2022 como sistema operativo. Antes de instalar Meshroom, necesitarás realizar algunos pasos preliminares:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/489-conectarse-a-un-servidor-windows&quot;&gt;Conectarse a un servidor Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/500-instalar-controladores-nvidia-en-windows&quot;&gt;Instalar los drivers de NVIDIA® en Windows&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/513-renderizado-de-gpu-en-rdp&quot;&gt;Renderizado GPU en RDP&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Visita la web oficial del proyecto para &lt;a href=&quot;https://alicevision.org/#meshroom&quot;&gt;descargar Meshroom&lt;/a&gt;. Descomprime el archivo resultante para encontrar una aplicación lista para usar que no requiere instalación adicional. Inicia &lt;b translate=&quot;no&quot;&gt;Meshroom.exe&lt;/b&gt; para comenzar.&lt;/p&gt;
&lt;h3&gt;Cargar imágenes&lt;/h3&gt;
&lt;p&gt;La ventana principal de la aplicación está dividida en dos partes: superior e inferior. La parte superior contiene la Galería de imágenes, el Visor de imágenes y el Visor 3D. La sección inferior alberga el Editor de gráficos y el Administrador de tareas. Para empezar, arrastre y suelte las fotos capturadas en el área designada. Se admiten tanto formatos de archivo comprimidos (por ejemplo, JPG) como RAW. Se recomienda utilizar archivos RAW porque contienen muchos más datos por cada fotograma.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/057/original/sh_photogrammetry_with_meshroom_8.png?1724833779&quot; alt=&quot;Meshroom main window&quot;&gt;
&lt;p&gt;Tenga en cuenta que, por defecto, ya dispone de una canalización estándar preparada, que se muestra esquemáticamente en el Editor de gráficos. Este es uno de los controles más importantes que ayuda a configurar todos los aspectos del procesamiento de imágenes en cada etapa. Puede ejecutar manualmente cada etapa haciendo clic con el botón derecho del ratón y seleccionando &lt;b translate=&quot;no&quot;&gt;Compute&lt;/b&gt; en el menú desplegable.&lt;/p&gt;
&lt;p&gt;Pero por primera vez, puede simplemente hacer clic en el botón verde &lt;b translate=&quot;no&quot;&gt;Start&lt;/b&gt;, y la aplicación lo hará todo por usted. Le pedirá que guarde el proyecto, para que no pierda accidentalmente los resultados del cálculo. Haga clic en &lt;b translate=&quot;no&quot;&gt;Save&lt;/b&gt;, especifique un nombre y un directorio y guarde el proyecto:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/058/original/sh_photogrammetry_with_meshroom_9.png?1724833809&quot; alt=&quot;Meshroom save project&quot;&gt;
&lt;p&gt;A continuación, la aplicación transfiere todas las etapas de procesamiento del Editor de Gráficos al Administrador de Tareas, que se encarga de su ejecución en un orden específico. Para comprobar el estado de cada etapa, seleccione el bloque correspondiente en el Editor gráfico y haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Log&lt;/b&gt; situado en la esquina inferior derecha de la pantalla. También puede ver en tiempo real qué etapa se está procesando en ese momento:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/059/original/sh_photogrammetry_with_meshroom_10.png?1724833857&quot; alt=&quot;Meshroom task manager&quot;&gt;
&lt;p&gt;A la derecha, puedes ver la nube de puntos que has construido. El resultado final, generado utilizando el pipeline estándar, está disponible en el directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Your_Project_Path]\MeshroomCache\Texturing\[Random_Symbols]\texturedMesh.obj&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por supuesto, si fijas de antemano la ruta de salida en el nodo final del pipeline, el objeto acabará en la ruta que hayas especificado. Luego puedes importarlo a cualquier editor de texto para arreglar superficies, añadir fuentes de luz y otros efectos antes de renderizarlo.&lt;/p&gt;
&lt;h2&gt;Integración&lt;/h2&gt;
&lt;p&gt;Aunque el resultado inicial pueda parecer impresionante, a menudo es necesario refinarlo en un editor 3D. Meshroom simplifica este proceso permitiéndole importar no sólo el modelo, sino también la nube de puntos y las posiciones de la cámara en editores de terceros como &lt;a href=&quot;https://www.sidefx.com/&quot;&gt;Houdini&lt;/a&gt; o &lt;a href=&quot;https://www.blender.org/&quot;&gt;Blender&lt;/a&gt;. En la siguiente sección exploraremos cómo hacerlo.&lt;/p&gt;
&lt;h3&gt;Houdini&lt;/h3&gt;
&lt;p&gt;De hecho, Meshroom es una interfaz fácil de usar para el motor AliceVision, que se encarga de todas las operaciones relacionadas con el cálculo. Esta interfaz implementa el correspondiente pipeline y el gestor de tareas. Si utilizas Houdini, puedes crear tu propio pipeline directamente dentro de la aplicación y utilizarlo junto con otras herramientas, eliminando la necesidad de lanzar Meshroom por separado.&lt;/p&gt;
&lt;p&gt;Para empezar, lo mejor es &lt;a href=&quot;https://www.sidefx.com/download/download-houdini/120709/&quot;&gt;descargar&lt;/a&gt; e instalar un lanzador dedicado que gestione las actualizaciones y plugins de Houdini. A continuación, añade el plugin SideFX Labs, que ofrece numerosas herramientas adicionales, incluyendo nodos específicos para AliceVision. Para ello, haga clic en el botón &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt;, a continuación, seleccione &lt;b translate=&quot;no&quot;&gt;Shelves&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/060/original/sh_photogrammetry_with_meshroom_11.png?1724833888&quot; alt=&quot;Houdini add Shelves Houdini add Shelves&quot;&gt;
&lt;p&gt;Desplázate hacia abajo en la lista y selecciona &lt;b translate=&quot;no&quot;&gt;SideFX Labs&lt;/b&gt;, luego haz clic en el botón &lt;b translate=&quot;no&quot;&gt;Update Toolset&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/061/original/sh_photogrammetry_with_meshroom_12.png?1724833916&quot; alt=&quot;Houdini SideFX Labs Update Toolset&quot;&gt;
&lt;p&gt;Para instalar un plugin, siga estos pasos: Haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Start Launcher&lt;/b&gt;, vaya a la sección &lt;b translate=&quot;no&quot;&gt;Labs/Packages&lt;/b&gt; del menú de la izquierda y seleccione &lt;b translate=&quot;no&quot;&gt;Install packages&lt;/b&gt;. Se abrirá una ventana en la que podrá elegir los paquetes que desee instalar:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/062/original/sh_photogrammetry_with_meshroom_13.png?1724833946&quot; alt=&quot;Add Houdini plugin&quot;&gt;
&lt;p&gt;Elija el &lt;b translate=&quot;no&quot;&gt;Production Build&lt;/b&gt; para su versión de Houdini y haga clic en &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;. Después, reinicia la aplicación para asegurarte de que los nuevos iconos de efectos aparecen en la parte superior:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/063/original/sh_photogrammetry_with_meshroom_14.png?1724833974&quot; alt=&quot;Houdini new items&quot;&gt;
&lt;p&gt;Es crucial tener en cuenta que aquí no encontrarás ninguna mención a AliceVision o Meshlab. Esto se debe a que el plugin correspondiente sólo funciona dentro del pipeline de contexto de geometría. Para comprobarlo, haz clic en el icono &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt;, luego selecciona &lt;b translate=&quot;no&quot;&gt;New Pane Tab Type&lt;/b&gt;, y elige &lt;b translate=&quot;no&quot;&gt;Network View&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/064/original/sh_photogrammetry_with_meshroom_15.png?1724834004&quot; alt=&quot;Houdini Network View&quot;&gt;
&lt;p&gt;Pulse la tecla &lt;b translate=&quot;no&quot;&gt;Tab&lt;/b&gt; y añada un nodo &lt;b translate=&quot;no&quot;&gt;Geometry&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/065/original/sh_photogrammetry_with_meshroom_16.png?1724834038&quot; alt=&quot;Houdini add Geometry&quot;&gt;
&lt;p&gt;Haga doble clic para abrir el nodo creado y escriba &lt;b translate=&quot;no&quot;&gt;av&lt;/b&gt; en su teclado. El sistema mostrará instantáneamente una lista de nodos disponibles que comienzan con los símbolos Labs AV. Estos nodos te permiten controlar el motor AliceVision e integrarlo en tus propios pipelines:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/066/original/sh_photogrammetry_with_meshroom_17.png?1724834061&quot; alt=&quot;Houdini AliceVision nodes&quot;&gt;
&lt;p&gt;Para crear un pipeline adecuado, consulta la &lt;a href=&quot;https://www.sidefx.com/tutorials/alicevision-plugin/&quot;&gt;documentación oficial&lt;/a&gt; del plugin. Además, considera añadir el directorio AliceVision a la lista de variables de entorno en el archivo houdini.env. Para una instalación estándar utilizando el lanzador, este archivo se encuentra normalmente en el directorio &lt;b translate=&quot;no&quot;&gt;C:\Users\Administrator\Documents\houdini20.5\&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Abra el archivo houdini.env con cualquier editor de texto y añada la siguiente línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;ALICEVISION_PATH = [path to alicevision directory in Meshroom folder]&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por ejemplo, si instalaste Meshroom en el directorio raíz de la unidad D:, tu ruta podría tener este aspecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;ALICEVISION_PATH = D:\Meshroom\aliceVision&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo, a continuación, reinicie la aplicación Houdini.&lt;/p&gt;
&lt;h3&gt;Blender&lt;/h3&gt;
&lt;p&gt;Para los usuarios de Blender, recomendamos el plugin &lt;b translate=&quot;no&quot;&gt;Meshroom2Blender&lt;/b&gt;. Aunque funciona de forma diferente al plugin de Houdini, permite exportar nubes de puntos y posiciones de cámara calculadas por Meshroom a Blender. Para acceder al código del plugin, abra el enlace en su navegador:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;https://raw.githubusercontent.com/tibicen/meshroom2blender/master/view3d_point_cloud_visualizer.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el código como &lt;b translate=&quot;no&quot;&gt;view3d_point_cloud_visualizer.py&lt;/b&gt; en un directorio conveniente. A continuación, abra Blender y navegue hasta &lt;b translate=&quot;no&quot;&gt;Edit&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;Preferences&lt;/b&gt;. Desde allí, selecciona la pestaña &lt;b translate=&quot;no&quot;&gt;Add-ons&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/067/original/sh_photogrammetry_with_meshroom_18.png?1724834088&quot; alt=&quot;Blender Preferences&quot;&gt;
&lt;p&gt;Haga clic en la flecha hacia abajo y seleccione &lt;b translate=&quot;no&quot;&gt;Install from Disk&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/068/original/sh_photogrammetry_with_meshroom_19.png?1724834111&quot; alt=&quot;Blender install addons&quot;&gt;
&lt;p&gt;En la ventana recién abierta, navega hasta el directorio donde guardaste el plugin. Seleccione el archivo del plugin y haga clic en &lt;b translate=&quot;no&quot;&gt;Install from Disk button&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/069/original/sh_photogrammetry_with_meshroom_20.png?1724834139&quot; alt=&quot;Blender choose plugin file&quot;&gt;
&lt;p&gt;El plugin ya está instalado. Se recomienda reiniciar la aplicación. Después de reiniciar, verá el elemento &lt;b translate=&quot;no&quot;&gt;Point Cloud Visualizer&lt;/b&gt; en el modo de visualización. El plugin requiere que especifique la ruta a un archivo con la extensión &lt;b translate=&quot;no&quot;&gt;.ply&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/070/original/sh_photogrammetry_with_meshroom_21.png?1724834177&quot; alt=&quot;Blender new option&quot;&gt;
&lt;p&gt;Por defecto, Meshroom no genera este tipo de archivo. Para crearlo, abra el pipeline y añada el nodo &lt;b translate=&quot;no&quot;&gt;ConvertSfMFormat&lt;/b&gt;. Utilice como entrada el &lt;b translate=&quot;no&quot;&gt;SfMData&lt;/b&gt; del nodo &lt;b translate=&quot;no&quot;&gt;StructureFromMotion&lt;/b&gt;. Para la salida, especifique el &lt;b translate=&quot;no&quot;&gt;Images Folder&lt;/b&gt; del nodo &lt;b translate=&quot;no&quot;&gt;Texturing&lt;/b&gt;.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/071/original/sh_photogrammetry_with_meshroom_22.png?1724834206&quot; alt=&quot;Meshroom add Convert node&quot;&gt;
&lt;p&gt;El último paso es especificar el formato. Haga clic en &lt;b translate=&quot;no&quot;&gt;SfM File Format&lt;/b&gt; en el nodo &lt;b translate=&quot;no&quot;&gt;ConvertSfMFormat&lt;/b&gt; y seleccione &lt;b translate=&quot;no&quot;&gt;ply&lt;/b&gt; en la lista desplegable:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/072/original/sh_photogrammetry_with_meshroom_23.png?1724834239&quot; alt=&quot;Meshroom Convert format&quot;&gt;
&lt;p&gt;Haga clic con el botón derecho del ratón en el nodo creado y seleccione &lt;b translate=&quot;no&quot;&gt;Compute&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/073/original/sh_photogrammetry_with_meshroom_24.png?1724834267&quot; alt=&quot;Meshroom compute task&quot;&gt;
&lt;p&gt;Una vez finalizado el proceso, encontrarás el archivo necesario en el directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Your_Project_Path]\MeshroomCache\ConvertSfMFormat\[Random_Symbols]\sfm.ply&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puede cargarlo en Blender de dos formas: a través del plugin mencionado o mediante el proceso de importación estándar &lt;b translate=&quot;no&quot;&gt;File&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;Import&lt;/b&gt; - &lt;b translate=&quot;no&quot;&gt;Stanford PLY (.ply)&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/074/original/sh_photogrammetry_with_meshroom_25.png?1724834291&quot; alt=&quot;Blender import points cloud&quot;&gt;
&lt;p&gt;Para más información sobre el uso de este plugin, sugerimos consultar el &lt;a href=&quot;https://github.com/tibicen/meshroom2blender&quot;&gt;repositorio del proyecto&lt;/a&gt; o en algún recurso web especializado.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;La fotogrametría es un amplio campo de conocimiento, en el que hemos intentado contar sólo algunas técnicas básicas para convertir imágenes 2D en un modelo 3D. Se utiliza en muchas industrias, desde la arquitectura hasta la creación de juegos de ordenador.&lt;/p&gt;
&lt;p&gt;Una vez adquirida la primera experiencia en la toma de un conjunto de datos y su transformación coherente en un modelo 3D, podrás mejorar tus habilidades y transferir objetos físicos a un espacio 3D virtual. Pues bien, LeaderGPU te ayudará con la potencia de cálculo, reduciendo el tiempo de cálculo y liberando tu estación de trabajo para otras tareas, a menudo más prioritarias.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/588-renderizado-remoto-en-blender-con-flamenco&quot;&gt;Renderizado remoto en Blender con Flamenco&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/590-fooocus-replanteamiento-de-sd-y-mj&quot;&gt;Fooocus: Replanteamiento de SD y MJ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/049/original/il_photogrammetry_with_meshroom.png?1724833423"
        length="0"
        type="image/jpeg"/>
      <pubDate>Tue, 21 Jan 2025 09:38:44 +0100</pubDate>
      <guid isPermaLink="false">586</guid>
      <dc:date>2025-01-21 09:38:44 +0100</dc:date>
    </item>
    <item>
      <title>Open WebUI: Todo en uno</title>
      <link>https://www.leadergpu.es/catalog/584-open-webui-todo-en-uno</link>
      <description>&lt;p&gt;Open WebUI fue desarrollado originalmente para Ollama, de la que hablamos en uno de nuestros artículos. Anteriormente, se llamaba Ollama WebUI, pero con el tiempo, el enfoque cambió a la universalidad de la aplicación, y el nombre fue cambiado a Open WebUI. Este software resuelve el problema clave de trabajar cómodamente con grandes modelos de redes neuronales colocados localmente o en servidores controlados por el usuario.&lt;/p&gt;
&lt;h2&gt;Instalación&lt;/h2&gt;
&lt;p&gt;El método de instalación principal y más preferido es desplegar un contenedor Docker. Esto le permite no pensar en la presencia de dependencias u otros componentes que aseguren el correcto funcionamiento del software. Sin embargo, puedes instalar Open WebUI clonando el repositorio del proyecto desde GitHub y construyéndolo desde el código fuente. En este artículo, consideraremos ambas opciones.&lt;/p&gt;
&lt;p&gt;Antes de empezar, asegúrate de que los controladores GPU están instalados en el servidor. Nuestra instrucción &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot;&gt;Instalar controladores NVIDIA® en Linux&lt;/a&gt; te ayudará a hacerlo.&lt;/p&gt;
&lt;h3&gt;Usando Docker&lt;/h3&gt;
&lt;p&gt;Si acabas de encargar un servidor, no dispondrás del motor Docker ni del conjunto de herramientas necesarias para pasar las GPU al contenedor. No recomendamos instalar Docker desde el repositorio estándar de Ubuntu, ya que puede estar desactualizado y no soportar todas las opciones modernas. Sería mejor utilizar el script de instalación publicado en el sitio web oficial:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Además de Docker, necesitas instalar el NVIDIA® Container Toolkit, así que activa el repositorio de Nvidia:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualiza tu caché de paquetes e instala NVIDIA® Container Toolkit:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para que la cadena de herramientas funcione, tendrás que reiniciar el demonio Docker:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puedes ejecutar el contenedor deseado. Tenga en cuenta que el siguiente comando no aísla los contenedores de la red host porque más tarde puede habilitar opciones adicionales, tales como la generación de imágenes utilizando la WebUI de Stable Diffusion. Este comando descargará y ejecutará automáticamente todas las capas de la imagen:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d --network=host --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Usando Git&lt;/h3&gt;
&lt;h4&gt;Ubuntu 22.04&lt;/h4&gt;
&lt;p&gt;Primero, necesitas clonar el contenido del repositorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/open-webui/open-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd open-webui/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copia la configuración de ejemplo (puedes modificarla si es necesario), que establecerá las variables de entorno para la compilación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cp -RPp .env.example .env&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala el instalador NVM, que te ayudará a instalar la versión necesaria de Node.js en el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después de eso, es necesario cerrar y volver a abrir la sesión SSH para que el siguiente comando funcione correctamente.&lt;/p&gt;
&lt;p&gt;Instalar Node Package Manager:&lt;/p&gt;  
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install npm&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;Instala Node.js versión 22 (actual en el momento de escribir este artículo):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;npm install 22&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instalar las dependencias necesarias para el posterior montaje:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;npm install&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Comencemos la compilación. Tenga en cuenta que requiere más de 4 GB de RAM libre:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;npm run build&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El frontend está listo; ahora es el momento de preparar el backend. Ve al directorio con el mismo nombre:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ./backend&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala los paquetes pip y ffmpeg:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install python3-pip ffmpeg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Antes de la instalación, es necesario añadir una nueva ruta a la variable de entorno:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano ~/.bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Añada la siguiente línea al final del archivo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;export PATH=&quot;/home/usergpu/.local/bin:$PATH&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualicémoslo a la última versión:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 -m pip install --upgrade pip&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puedes instalar las dependencias:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt -U&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instalar Ollama:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://ollama.com/install.sh | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Todo está listo para lanzar la aplicación:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;bash start.sh&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;Ubuntu 24.04 / 24.10&lt;/h4&gt;
&lt;p&gt;Cuando instales OpenWebUI en Ubuntu 24.04/24.10, te enfrentarás a un reto clave: el sistema operativo usa Python 3.12 por defecto, mientras que OpenWebUI solo soporta la versión 3.11. No puedes simplemente downgradear Python, hacerlo rompería el sistema operativo. Como el paquete python3.11 no está disponible en los repositorios estándar, necesitarás crear un entorno virtual para usar la versión correcta de Python.&lt;/p&gt;
&lt;p&gt;La mejor solución es utilizar el sistema de gestión de paquetes Conda. Conda funciona como pip pero añade soporte de entorno virtual similar a venv. Dado que sólo necesitas una funcionalidad básica, utilizarás Miniconda, una distribución ligera. Descarga la última versión desde GitHub:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -L -O &quot;https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;bash Miniforge3-$(uname)-$(uname -m).sh&lt;/code&gt;&lt;/pre&gt;
Creemos un entorno virtual llamado pyenv y especifiquemos la versión 3.11 de Python:&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda create -n pyenv python=3.11&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Activemos el entorno creado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;conda activate pyenv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora puedes proceder con los pasos estándar de instalación de OpenWebUI para Ubuntu 22.04. El entorno virtual asegura que todos los scripts de instalación se ejecutarán sin problemas y sin conflictos de versiones de paquetes.&lt;/p&gt;
&lt;h2&gt;Modelos&lt;/h2&gt;
&lt;h3&gt;Biblioteca Ollama&lt;/h3&gt;
&lt;p&gt;Open WebUI le permite cargar modelos directamente desde la interfaz web, especificando únicamente el nombre en el formato &lt;b translate=&quot;no&quot;&gt;model:size&lt;/b&gt;. Para ello, vaya a &lt;a href=&quot;http://192.168.88.20:8080/admin/settings&quot;&gt;http://192.168.88.20:8080/admin/settings&lt;/a&gt; y haga clic en &lt;b translate=&quot;no&quot;&gt;Connections&lt;/b&gt;. A continuación, haga clic en el icono de llave inglesa situado frente a la cadena &lt;b translate=&quot;no&quot;&gt;http://localhost:11434&lt;/b&gt;. Después de ver los nombres de los modelos de la &lt;a href=&quot;https://ollama.com/library&quot;&gt;biblioteca&lt;/a&gt;, introduzca su nombre y haga clic en el icono de carga:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/027/original/sh_open_webui_all_in_one_1.png?1722870065&quot; alt=&quot;Open WebUI manage models&quot;&gt;
&lt;p&gt;A continuación, el sistema descargará automáticamente el modelo deseado, que quedará inmediatamente disponible para su uso. Dependiendo del tamaño seleccionado, la descarga puede tardar un tiempo diferente. Antes de realizar la descarga, asegúrese de que hay espacio suficiente en la unidad de disco. Para más información, consulte el artículo &lt;a href=&quot;https://www.leadergpu.es/articles/492-partici-n-de-disco-en-linux&quot;&gt;Particionamiento del disco en Linux&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Modelos personalizados&lt;/h3&gt;
&lt;p&gt;Si necesita integrar un modelo de red neuronal que no se encuentra en la biblioteca Ollama, puede utilizar la función experimental y cargar cualquier modelo arbitrario en formato GGUF. Para ello, vaya a &lt;b translate=&quot;no&quot;&gt;Settings - Admin Settings - Connections&lt;/b&gt; y haga clic en el icono de llave inglesa situado frente a &lt;b translate=&quot;no&quot;&gt;http://localhost:11434&lt;/b&gt;. Haga clic en &lt;b translate=&quot;no&quot;&gt;Show&lt;/b&gt; en la sección &lt;b translate=&quot;no&quot;&gt;Experimental&lt;/b&gt;. Por defecto, está activado el modo archivo, que permite cargar un archivo desde el ordenador local. Si hace clic en &lt;b translate=&quot;no&quot;&gt;File Mode&lt;/b&gt;, cambiará a &lt;b translate=&quot;no&quot;&gt;URL Mode&lt;/b&gt;, que le permite especificar la URL del archivo modelo, y el servidor lo descargará automáticamente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/028/original/sh_open_webui_all_in_one_2.png?1736411361&quot; alt=&quot;Open WebUI upload gguf model&quot;&gt;
&lt;h2&gt;RAG&lt;/h2&gt;
&lt;p&gt;Además de una interfaz web cómoda y funcional, Open WebUI ayuda a ampliar las capacidades de los distintos modelos, garantizando su uso conjunto. Por ejemplo, es fácil cargar documentos para formar una base de datos vectorial RAG (Retrieval-augmented generation). En el proceso de generación de una respuesta al usuario, LLM podrá basarse no sólo en los datos obtenidos directamente como resultado del entrenamiento, sino también en los colocados en una base de datos vectorial similar.&lt;/p&gt;
&lt;h3&gt;Documentos&lt;/h3&gt;
&lt;p&gt;Por defecto, Open WebUI escanea el directorio /data/docs en busca de archivos que puedan ser colocados en el espacio vectorial de la base de datos y realiza la transformación utilizando el modelo incorporado &lt;a href=&quot;https://huggingface.co/sentence-transformers/all-MiniLM-L6-v2&quot;&gt;all-MiniLM-L6-v2&lt;/a&gt;. Este no es el único modelo adecuado para esta tarea, por lo que tiene sentido probar otras opciones, por ejemplo, de esta lista.&lt;/p&gt;
&lt;p&gt;Los documentos de texto, sin etiquetas ni otros caracteres especiales, son los más adecuados para el GAR. Por supuesto, puede cargar documentos tal cual, pero esto puede afectar en gran medida a la precisión de las respuestas generadas. Por ejemplo, si tienes una base de conocimientos en formato Markdown, primero puedes limpiarla de formato y sólo después subirla a /data/docs.&lt;/p&gt;
&lt;h3&gt;Búsqueda web&lt;/h3&gt;
&lt;p&gt;Además de los documentos locales, se puede ordenar al modelo de red neuronal que utilice cualquier sitio web como fuente de datos. Esto le permitirá responder a preguntas utilizando no sólo los datos con los que fue entrenado, sino también datos alojados en sitios web especificados por el usuario.&lt;/p&gt;
&lt;p&gt;De hecho, se trata de un tipo de RAG, que recibe páginas HTML como entrada y luego las transforma de una manera especial, ocupando su lugar en una base de datos vectorial. La búsqueda en dicha base de datos será muy rápida; por lo tanto, el modelo de red neuronal podrá generar rápidamente una respuesta basada en sus resultados. Open WebUI soporta diferentes motores de búsqueda, pero sólo puede trabajar con uno a la vez, que se especifica en la configuración.&lt;/p&gt;
&lt;p&gt;Para incluir los resultados de la búsqueda web en las respuestas de la red neuronal, haz clic en &lt;b translate=&quot;no&quot;&gt;+&lt;/b&gt; (símbolo más) y desliza el interruptor de Búsqueda web:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/029/original/sh_open_webui_all_in_one_3.png?1722870140&quot; alt=&quot;Open WebUI enable Web Search&quot;&gt;
&lt;h2&gt;Generación de imágenes&lt;/h2&gt;
&lt;p&gt;Lo más destacado de Open WebUI es que este software permite combinar varias redes neuronales con diferentes tareas para resolver un mismo problema. Por ejemplo, Llama 3.1 dialoga perfectamente con el usuario en varios idiomas, pero sus respuestas serán exclusivamente texto. No puede generar imágenes, por lo que no hay forma de ilustrar sus respuestas.&lt;/p&gt;
&lt;p&gt;Stable Diffusion, sobre la que hemos escrito a menudo, es lo contrario: esta red neuronal genera imágenes perfectamente, pero no puede trabajar con textos en absoluto. Los desarrolladores de Open WebUI intentaron combinar los puntos fuertes de ambas redes neuronales en un diálogo e implementaron el siguiente esquema de trabajo.&lt;/p&gt;
&lt;p&gt;Cuando realizas un diálogo en Open WebUI, aparece un botón especial junto a cada respuesta de la red neuronal. Al hacer clic en él, recibirás una ilustración de esta respuesta directamente en el chat:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/030/original/sh_open_webui_all_in_one_4.png?1722870173&quot; alt=&quot;Open WebUI images in dialogue&quot;&gt;
&lt;p&gt;Esto se consigue llamando a la API de Difusión Estable WebUI, y por el momento, están disponibles una conexión con versiones de Automatic1111 y una conexión con ComfyUI. También puede generar imágenes a través de la red neuronal Dall-E, pero no se puede implementar localmente - se trata de un servicio de generación de imágenes de pago con código fuente cerrado.&lt;/p&gt;
&lt;p&gt;Esta característica sólo funcionará si, además de Open WebUI con Ollama, Stable Diffusion WebUI está instalado en el servidor. Puedes encontrar las instrucciones de instalación &lt;a href=&quot;https://www.leadergpu.es/articles/565-stable-diffusion-webui&quot;&gt;aquí&lt;/a&gt;. Lo único que vale la pena mencionar es que al ejecutar el script ./webui.sh, tendrá que especificar una clave adicional para habilitar la API:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh --listen --api --gradio-auth user:password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Otro escollo puede surgir debido a la falta de memoria de vídeo. Si te encuentras con esto, puedes utilizar dos claves útiles: &lt;b translate=&quot;no&quot;&gt;--medvram&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;--lowvram&lt;/b&gt;. Esto evitará el error Out-of-memory al iniciar la generación.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/583-c-mo-funciona-ollama&quot;&gt;¿Cómo funciona Ollama?&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/574-tu-propia-llama-2-en-linux&quot;&gt;Tu propia LLaMa 2 en Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/026/original/il_open_webui_all_in_one.png?1722870022"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 15:21:46 +0100</pubDate>
      <guid isPermaLink="false">584</guid>
      <dc:date>2025-01-20 15:21:46 +0100</dc:date>
    </item>
    <item>
      <title>¿Cómo funciona Ollama?</title>
      <link>https://www.leadergpu.es/catalog/583-c-mo-funciona-ollama</link>
      <description>&lt;p&gt;Ollama es una herramienta para ejecutar localmente grandes modelos de redes neuronales. El uso de servicios públicos suele ser percibido por las empresas como un riesgo potencial de fuga de datos confidenciales y sensibles. Por ello, desplegar LLM en un servidor controlado permite gestionar de forma independiente los datos depositados en él, al tiempo que se aprovechan los puntos fuertes de LLM.&lt;/p&gt;
&lt;p&gt;Esto también ayuda a evitar la desagradable situación de &quot;vendor lock-in&quot;, en la que cualquier servicio público puede dejar de prestar servicios unilateralmente. Por supuesto, el objetivo inicial es permitir el uso de redes neuronales generativas en lugares donde no hay acceso a Internet o éste es difícil (por ejemplo, en un avión).&lt;/p&gt;
&lt;p&gt;La idea era simplificar el lanzamiento, control y puesta a punto de las LLM. En lugar de complejas instrucciones de varios pasos, Ollama permite ejecutar un simple comando y recibir el resultado final al cabo de un tiempo. Se presentará simultáneamente en forma de modelo de red neuronal local, con el que podrá comunicarse mediante una interfaz web y una API para integrarlo fácilmente en otras aplicaciones.&lt;/p&gt;
&lt;p&gt;Para muchos desarrolladores, esto se convirtió en una herramienta muy útil, ya que en la mayoría de los casos era posible integrar Ollama con el IDE utilizado y recibir recomendaciones o código ya escrito directamente mientras se trabajaba en la aplicación.&lt;/p&gt;
&lt;p&gt;En un principio, Ollama estaba destinado únicamente a ordenadores con el sistema operativo macOS, pero más tarde fue portado a Linux y Windows. También se ha lanzado una versión especial para trabajar en entornos contenerizados como Docker. Actualmente, funciona igual de bien tanto en ordenadores de sobremesa como en cualquier servidor dedicado con una GPU. Ollama admite la posibilidad de cambiar entre distintos modelos de forma inmediata y maximiza todos los recursos disponibles. Por supuesto, estos modelos pueden no rendir tan bien en un escritorio normal, pero funcionan bastante adecuadamente.&lt;/p&gt;
&lt;h2&gt;Cómo instalar Ollama&lt;/h2&gt;
&lt;p&gt;Ollama puede instalarse de dos maneras: sin utilizar la contenedorización, mediante un script de instalación, y como un contenedor Docker ya preparado. El primer método facilita la gestión de los componentes del sistema y los modelos instalados, pero es menos tolerante a fallos. El segundo método es más tolerante a fallos, pero al utilizarlo hay que tener en cuenta todos los aspectos inherentes a los contenedores: una gestión algo más compleja y un enfoque diferente del almacenamiento de datos.&lt;/p&gt;
&lt;p&gt;Independientemente del método elegido, se necesitan varios pasos adicionales para preparar el sistema operativo.&lt;/p&gt;
&lt;h3&gt;Requisitos previos&lt;/h3&gt;
&lt;p&gt;Actualizar el repositorio caché de paquetes y los paquetes instalados:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instale todos los controladores de GPU necesarios utilizando la función de instalación automática:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reinicie el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Instalación mediante script&lt;/h3&gt;
&lt;p&gt;El siguiente script detecta la arquitectura actual del sistema operativo e instala la versión adecuada de Ollama:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://ollama.com/install.sh | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Durante la operación, el script creará un usuario &lt;b translate=&quot;no&quot;&gt;ollama&lt;/b&gt; separado, bajo el cual se lanzará el demonio correspondiente. Por cierto, el mismo script funciona bien en WSL2, permitiendo la instalación de la versión Linux de Ollama en Windows Server.&lt;/p&gt;
&lt;h3&gt;Instalación mediante Docker&lt;/h3&gt;
&lt;p&gt;Existen varios métodos para instalar el motor Docker en un servidor. La forma más sencilla es utilizar un script específico que instale la versión actual de Docker. Este método es eficaz para Ubuntu Linux, desde la versión 20.04 (LTS) hasta la última versión, Ubuntu 24.04 (LTS):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://get.docker.com/ | sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para que los contenedores Docker interactúen correctamente con la GPU, es necesario instalar un kit de herramientas adicional. Dado que no está disponible en los repositorios básicos de Ubuntu, es necesario añadir primero un repositorio de terceros mediante el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&amp;&amp; curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed &#39;s#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g&#39; | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Actualizar el repositorio caché de paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;E instala el paquete &lt;a href=&quot;https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/latest/install-guide.html&quot;&gt;nvidia-container-toolkit&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install nvidia-container-toolkit&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No olvides reiniciar el demonio docker a través de systemctl:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl restart docker&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Es hora de descargar y ejecutar Ollama con la interfaz web Open-WebUI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo docker run -d -p 3000:8080 --gpus=all -v ollama:/root/.ollama -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:ollama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra el navegador web y navegue a &lt;b translate=&quot;no&quot;&gt;http://[server-ip]:3000&lt;/b&gt;:&lt;/p&gt;
&lt;h2&gt;Descargar y ejecutar los modelos&lt;/h2&gt;
&lt;h3&gt;A través de la línea de comandos&lt;/h3&gt;
&lt;p&gt;Basta con ejecutar el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ollama run llama3&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;A través de WebUI&lt;/h3&gt;
&lt;p&gt;Abra &lt;b translate=&quot;no&quot;&gt;Settings &gt; Models&lt;/b&gt;, escriba el nombre del modelo necesario, por ejemplo, &lt;b translate=&quot;no&quot;&gt;llama3&lt;/b&gt; y haga clic en el botón con el símbolo de descarga:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/990/original/sh_how_does_ollama_work_1.png?1717153168&quot; alt=&quot;Models download&quot;&gt;
&lt;p&gt;El modelo se descargará e instalará automáticamente. Una vez completada, cierra la ventana de configuración y selecciona el modelo descargado. A continuación, podrás iniciar un diálogo con él:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/991/original/sh_how_does_ollama_work_2.png?1717153253&quot; alt=&quot;Start chatting&quot;&gt;
&lt;h2&gt;Integración de VSCode&lt;/h2&gt;
&lt;p&gt;Si ha instalado Ollama utilizando el script de instalación, podrá ejecutar cualquiera de los modelos soportados casi al instante. En el siguiente ejemplo, ejecutaremos el modelo por defecto esperado por la extensión Ollama Autocoder (&lt;b translate=&quot;no&quot;&gt;openhermes2.5-mistral:7b-q4_K_M&lt;/b&gt;):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ollama run openhermes2.5-mistral:7b-q4_K_M&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por defecto, Ollama permite trabajar a través de una API, permitiendo únicamente conexiones desde el host local. Por lo tanto, antes de instalar y utilizar la extensión para Visual Studio Code, es necesario redireccionar puertos. En concreto, es necesario redirigir el puerto remoto &lt;b translate=&quot;no&quot;&gt;11434&lt;/b&gt; al equipo local. Puede encontrar un ejemplo de cómo hacerlo en nuestro artículo sobre &lt;a href=&quot;https://www.leadergpu.es/articles/598-easy-diffusion-ui&quot;&gt;Easy Diffusion WebUI&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Escriba &lt;b translate=&quot;no&quot;&gt;Ollama Autocoder&lt;/b&gt; en el campo de búsqueda y haga clic en &lt;b translate=&quot;no&quot;&gt;Install&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/992/original/sh_how_does_ollama_work_3.png?1717153306&quot; alt=&quot;Install Ollama Autocoder&quot;&gt;
&lt;p&gt;Después de instalar la extensión, un nuevo elemento titulado &lt;b translate=&quot;no&quot;&gt;Autocomplete with Ollama&lt;/b&gt; estará disponible en la paleta de comandos. Comience a codificar e inicie este comando.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/993/original/sh_how_does_ollama_work_4.png?1717153542&quot; alt=&quot;Autocomplete with Ollama&quot;&gt;
&lt;p&gt;La extensión se conectará al servidor LeaderGPU utilizando el reenvío de puertos y, en unos segundos, el código generado aparecerá en su pantalla:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/994/original/sh_how_does_ollama_work_5.png?1717153572&quot; alt=&quot;Test Python example&quot;&gt;
&lt;p&gt;Puede asignar este comando a una tecla de acceso rápido. Utilízalo siempre que quieras complementar tu código con un fragmento generado. Éste es sólo un ejemplo de las extensiones VSCode disponibles. El principio del reenvío de puertos desde un servidor remoto a un ordenador local permite configurar un único servidor con un LLM en ejecución para todo un equipo de desarrolladores. Esta garantía impide que terceras empresas o piratas informáticos utilicen el código enviado.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/584-open-webui-todo-en-uno&quot;&gt;Open WebUI: Todo en uno&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/574-tu-propia-llama-2-en-linux&quot;&gt;Tu propia LLaMa 2 en Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/989/original/il_how_does_ollama_work.png?1717153121"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 15:16:02 +0100</pubDate>
      <guid isPermaLink="false">583</guid>
      <dc:date>2025-01-20 15:16:02 +0100</dc:date>
    </item>
    <item>
      <title>PrivateGPT: IA para documentos</title>
      <link>https://www.leadergpu.es/catalog/581-privategpt-ia-para-documentos</link>
      <description>&lt;p&gt;Los grandes modelos lingüísticos han evolucionado mucho en los últimos años y se han convertido en herramientas eficaces para muchas tareas. El único problema de su uso es que la mayoría de los productos basados en estos modelos utilizan servicios ya preparados de terceras empresas. Este uso tiene el potencial de filtrar datos sensibles, por lo que muchas empresas evitan cargar documentos internos en servicios LLM públicos.&lt;/p&gt;
&lt;p&gt;Un proyecto como PrivateGPT podría ser una solución. En principio, está diseñado para un uso totalmente local. Su punto fuerte es que puedes enviar varios documentos como entrada, y la red neuronal los leerá por ti y proporcionará sus propios comentarios en respuesta a tus peticiones. Por ejemplo, puedes &quot;alimentarla&quot; con textos extensos y pedirle que saque algunas conclusiones basadas en la petición del usuario. Esto le permite ahorrar mucho tiempo en la corrección de textos.&lt;/p&gt;
&lt;p&gt;Esto es especialmente cierto en campos profesionales como la medicina. Por ejemplo, un médico puede hacer un diagnóstico y pedir a la red neuronal que lo confirme basándose en el conjunto de documentos cargados. Esto permite obtener una opinión independiente adicional, reduciendo así el número de errores médicos. Como las solicitudes y los documentos no salen del servidor, se puede estar seguro de que los datos recibidos no aparecerán en el dominio público.&lt;/p&gt;
&lt;p&gt;Hoy le mostraremos cómo desplegar una red neuronal en servidores LeaderGPU dedicados con el sistema operativo Ubuntu 22.04 LTS en tan sólo 20 minutos.&lt;/p&gt;
&lt;h2&gt;Preparación del sistema&lt;/h2&gt;
&lt;p&gt;Empieza por actualizar tus paquetes a la última versión:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, instala paquetes adicionales, bibliotecas y el controlador gráfico de NVIDIA®. Todos ellos serán necesarios para compilar correctamente el software y ejecutarlo en la GPU:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install build-essential git gcc cmake make openssl libssl-dev libbz2-dev libreadline-dev libsqlite3-dev zlib1g-dev libncursesw5-dev libgdbm-dev libc6-dev zlib1g-dev libsqlite3-dev tk-dev libssl-dev openssl libffi-dev lzma liblzma-dev libbz2-dev&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Instalación de CUDA® 12.4&lt;/h2&gt;
&lt;p&gt;Además del controlador, es necesario instalar el kit de herramientas NVIDIA® CUDA®. Estas instrucciones se han probado en CUDA® 12.4, pero todo debería funcionar también en CUDA® 12.2. Sin embargo, ten en cuenta que tendrás que indicar la versión que tienes instalada cuando especifiques la ruta a los archivos ejecutables.&lt;/p&gt;
&lt;p&gt;Ejecute el siguiente comando secuencialmente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2204/x86_64/cuda-ubuntu2204.pin&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mv cuda-ubuntu2204.pin /etc/apt/preferences.d/cuda-repository-pin-600&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://developer.download.nvidia.com/compute/cuda/12.4.0/local_installers/cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.14-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo dpkg -i cuda-repo-ubuntu2204-12-4-local_12.4.0-550.54.14-1_amd64.deb&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo cp /var/cuda-repo-ubuntu2204-12-4-local/cuda-*-keyring.gpg /usr/share/keyrings/&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get update &amp;&amp; sudo apt-get -y install cuda-toolkit-12-4&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Puede &lt;a href=&quot;https://www.leadergpu.es/articles/615-instalar-el-kit-de-herramientas-cuda-en-linux&quot;&gt;encontrar&lt;/a&gt; más información sobre la instalación de CUDA® en nuestra Base de conocimientos. Ahora, reinicie el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;PyEnv install&lt;/h2&gt;
&lt;p&gt;Es hora de instalar una sencilla utilidad de control de versiones de Python llamada PyEnv. Este es un fork significativamente mejorado del proyecto similar para Ruby (&lt;a href=&quot;https://github.com/rbenv/rbenv&quot;&gt;rbenv&lt;/a&gt;), configurado para trabajar con Python. Se puede instalar con un script de una línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl https://pyenv.run | bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, necesitas añadir algunas variables al final del archivo script, que se ejecuta al iniciar sesión. Las tres primeras líneas son responsables del correcto funcionamiento de PyEnv, y la cuarta es necesaria para Poetry, que se instalará más tarde:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano .bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;export PYENV_ROOT=&quot;$HOME/.pyenv&quot;
[[ -d $PYENV_ROOT/bin ]] &amp;&amp; export PATH=&quot;$PYENV_ROOT/bin:$PATH&quot;
eval &quot;$(pyenv init -)&quot;
export PATH=&quot;/home/usergpu/.local/bin:$PATH&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aplica la configuración que has hecho:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source .bashrc&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala la versión 3.11 de Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pyenv install 3.11&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crear un entorno virtual para Python 3.11:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pyenv local 3.11&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Instalación de poesía&lt;/h2&gt;
&lt;p&gt;La siguiente pieza del puzzle es Poetry. Se trata de un análogo de pip para la gestión de dependencias en proyectos Python. El autor de Poetry estaba cansado de lidiar constantemente con diferentes métodos de configuración, como &lt;b translate=&quot;no&quot;&gt;setup.cfg&lt;/b&gt;, &lt;b translate=&quot;no&quot;&gt;requirements.txt&lt;/b&gt;, &lt;b translate=&quot;no&quot;&gt;MANIFEST.ini&lt;/b&gt;, y otros. Esto se convirtió en el motor para el desarrollo de una nueva herramienta que utiliza un archivo &lt;b translate=&quot;no&quot;&gt;pyproject.toml&lt;/b&gt;, que almacena toda la información básica acerca de un proyecto, no sólo una lista de dependencias.&lt;/p&gt;
&lt;p&gt;Instalar Poesía:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -sSL https://install.python-poetry.org | python3 -&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;PrivateGPT install&lt;/h2&gt;
&lt;p&gt;Ahora que todo está listo, puede clonar el repositorio PrivateGPT:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/imartinez/privateGPT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ve al repositorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd privateGPT&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute la instalación de dependencias utilizando Poetry mientras habilita los componentes adicionales:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;ui&lt;/b&gt; - añade una interfaz web de gestión basada en &lt;a href=&quot;https://www.gradio.app/&quot;&gt;Gradio&lt;/a&gt; a la aplicación backend;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;embedding-huggingface&lt;/b&gt; - habilita el soporte para incrustar modelos descargados de &lt;a href=&quot;https://huggingface.co/&quot;&gt;HuggingFace&lt;/a&gt;;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;llms-llama-cpp&lt;/b&gt; - añade soporte para la inferencia directa de modelos en formato GGUF;&lt;/li&gt;
    &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;vector-stores-qdrant&lt;/b&gt; - añade la base de datos vectorial qdrant.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;poetry install --extras &quot;ui embeddings-huggingface llms-llama-cpp vector-stores-qdrant&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Establezca su token de acceso a Hugging Face. Para más información, lea &lt;a href=&quot;https://huggingface.co/docs/hub/security-tokens&quot; target=&quot;_blank&quot;&gt;este artículo&lt;/a&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export HF_TOKEN=&quot;YOUR_HUGGING_FACE_ACCESS_TOKEN&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, ejecuta el script de instalación, que descargará automáticamente el modelo y los pesos (Meta Llama 3.1 8B Instruct por defecto):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;poetry run python scripts/setup&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente comando recompilar &lt;b translate=&quot;no&quot;&gt;llms-llama-cpp&lt;/b&gt; por separado para habilitar el soporte de NVIDIA® CUDA®, con el fin de descargar las cargas de trabajo a la GPU:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;CUDACXX=/usr/local/cuda-12/bin/nvcc CMAKE_ARGS=&quot;-DGGML_CUDA=on -DCMAKE_CUDA_ARCHITECTURES=native&quot; FORCE_CMAKE=1 pip install llama-cpp-python --no-cache-dir --force-reinstall --upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si aparece un error como &lt;b&gt;nvcc fatal : Unsupported gpu architecture &#39;compute_&#39;&lt;/b&gt;, especifique la arquitectura exacta de la GPU que está utilizando. Por ejemplo &lt;b&gt;DCMAKE_CUDA_ARCHITECTURES=86&lt;/b&gt; para NVIDIA® RTX™ 3090.&lt;/p&gt;
&lt;p&gt;El último paso antes de empezar es instalar el soporte para llamadas asíncronas (async/await):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install asyncio&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;PrivateGPT run&lt;/h2&gt;
&lt;p&gt;Ejecuta PrivateGPT utilizando un único comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;make run&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra su navegador web y vaya a la página &lt;b translate=&quot;no&quot;&gt;http://[LeaderGPU_server_IP_address]:8001&lt;/b&gt;&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/984/original/sh_privategpt_ai_for_documents_1.png?1714731952&quot; alt=&quot;PrivateGPT WebUI&quot;&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/571-starcoder-su-asistente-local-de-codificaci-n&quot;&gt;StarCoder: su asistente local de codificación
    &lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/590-fooocus-replanteamiento-de-sd-y-mj&quot;&gt;Fooocus: Replanteamiento de SD y MJ&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/565-stable-diffusion-webui&quot;&gt;Stable Diffusion WebUI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/983/original/il_privategpt_ai_for_documents.png?1714731899"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 12:01:00 +0100</pubDate>
      <guid isPermaLink="false">581</guid>
      <dc:date>2025-01-20 12:01:00 +0100</dc:date>
    </item>
    <item>
      <title> Qwen 2 vs Llama 3</title>
      <link>https://www.leadergpu.es/catalog/579-qwen-2-vs-llama-3</link>
      <description>&lt;p&gt;Los grandes modelos lingüísticos (LLM) han tenido un gran impacto en nuestras vidas. A pesar de comprender su estructura interna, estos modelos siguen siendo un foco de atención para los científicos, que a menudo los comparan con una &quot;caja negra&quot;. El resultado final depende no sólo del diseño del LLM, sino también de su entrenamiento y de los datos utilizados para éste.&lt;/p&gt;
&lt;p&gt;Mientras que los científicos encuentran oportunidades de investigación, a los usuarios finales les interesan sobre todo dos cosas: la velocidad y la calidad. Estos criterios desempeñan un papel crucial en el proceso de selección. Para comparar con precisión dos LLM, es necesario estandarizar muchos factores aparentemente no relacionados.&lt;/p&gt;
&lt;p&gt;El equipo utilizado para las interferencias y el entorno de software, incluidos el sistema operativo, las versiones de los controladores y los paquetes de software, son los que más influyen. Es esencial seleccionar una versión de LLM que funcione en varios equipos y elegir una métrica de velocidad que sea fácilmente comprensible.&lt;/p&gt;
&lt;p&gt;Como métrica hemos seleccionado &quot;tokens por segundo&quot; (tokens/s). Es importante tener en cuenta que un token ≠ una palabra. El LLM descompone las palabras en componentes más simples, típicos de un idioma concreto, denominados tokens.&lt;/p&gt;
&lt;p&gt;La predictibilidad estadística del siguiente carácter varía de un idioma a otro, por lo que la tokenización será diferente. Por ejemplo, en inglés, de cada 75 palabras se obtienen aproximadamente 100 tokens. En las lenguas que utilizan el alfabeto cirílico, el número de fichas por palabra puede ser mayor. Así, 75 palabras en una lengua cirílica, como el ruso, podrían equivaler a 120-150 tokens.&lt;/p&gt;
&lt;p&gt;Puedes comprobarlo con la herramienta &lt;a href=&quot;https://platform.openai.com/tokenizer&quot;&gt;Tokenizer&lt;/a&gt; de OpenAI. Muestra en cuántos tokens se divide un fragmento de texto, lo que convierte a los &#39;tokens por segundo&#39; en un buen indicador de la velocidad y el rendimiento del procesamiento del lenguaje natural de un LLM.&lt;/p&gt;
&lt;p&gt;Cada prueba se realizó en el sistema operativo Ubuntu 22.04 LTS con los controladores de NVIDIA® versión 535.183.01 y el kit de herramientas NVIDIA® CUDA® 12.5 instalados. Se formularon preguntas para evaluar la calidad y velocidad del LLM. La velocidad de procesamiento de cada respuesta se registró y contribuirá al valor medio de cada configuración probada.&lt;/p&gt;
&lt;p&gt;Comenzamos probando varias GPU, desde los modelos más recientes hasta los más antiguos. Una condición crucial para la prueba era que midiéramos el rendimiento de una sola GPU, aunque hubiera varias en la configuración del servidor. Esto se debe a que el rendimiento de una configuración con varias GPU depende de factores adicionales como la presencia de una interconexión de alta velocidad entre ellas (NVLink).&lt;/p&gt;
&lt;p&gt;Además de la velocidad, también intentamos evaluar la calidad de las respuestas en una escala de 5 puntos, donde 5 representa el mejor resultado. Esta información se facilita aquí únicamente para una comprensión general. Cada vez, plantearemos las mismas preguntas a la red neuronal e intentaremos discernir con qué precisión comprende cada una lo que el usuario quiere de ella.&lt;/p&gt;
&lt;h2&gt;Qwen 2&lt;/h2&gt;
&lt;p&gt;Recientemente, un equipo de desarrolladores de Alibaba Group presentó la segunda versión de su red neuronal generativa Qwen. Entiende 27 idiomas y está bien optimizada para ellos. Qwen 2 se presenta en distintos tamaños para facilitar su implantación en cualquier dispositivo (desde sistemas embebidos con recursos muy limitados hasta un servidor dedicado con GPU):&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;0,5B: adecuado para IoT y sistemas embebidos;&lt;/li&gt;
    &lt;li&gt;1,5B: versión ampliada para sistemas embebidos, utilizada cuando las capacidades de 0,5B no son suficientes;&lt;/li&gt;
    &lt;li&gt;7B: modelo de tamaño medio, muy adecuado para el procesamiento del lenguaje natural;&lt;/li&gt;
    &lt;li&gt;57B: modelo grande de alto rendimiento, adecuado para aplicaciones exigentes;&lt;/li&gt;
    &lt;li&gt;72B: el modelo Qwen 2 definitivo, diseñado para resolver los problemas más complejos y procesar grandes volúmenes de datos.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Las versiones 0.5B y 1.5B se entrenaron en conjuntos de datos con una longitud de contexto de 32K. Las versiones 7B y 72B se entrenaron ya con el contexto de 128K. El modelo de compromiso 57B se entrenó en conjuntos de datos con una longitud de contexto de 64K. Los creadores posicionan Qwen 2 como un análogo de Llama 3 capaz de resolver los mismos problemas, pero mucho más rápido.&lt;/p&gt;
&lt;h2&gt;Llama 3&lt;/h2&gt;
&lt;p&gt;La tercera versión de la red neuronal generativa de la familia MetaAI Llama se presentó en abril de 2024. Fue lanzada, a diferencia de Qwen 2, sólo en dos versiones: 8B y 70B. Estos modelos se posicionaron como una herramienta universal para resolver muchos problemas en diversos casos. Continuaba la tendencia hacia el multilingüismo y la multimodalidad, al tiempo que se hacía más rápida que las versiones anteriores y admitía una mayor longitud de contexto.&lt;/p&gt;
&lt;p&gt;Los creadores de Llama 3 intentaron afinar los modelos para reducir el porcentaje de alucinaciones estadísticas y aumentar la variedad de respuestas. Así, Llama 3 es muy capaz de dar consejos prácticos, ayudar a redactar una carta comercial o especular sobre un tema especificado por el usuario. Los conjuntos de datos en los que se entrenaron los modelos de Llama 3 tenían una longitud de contexto de 128K y más del 5% incluían datos en 30 idiomas. Sin embargo, como se afirma en el comunicado de prensa, el rendimiento de la generación en inglés será significativamente mayor que en cualquier otro idioma.&lt;/p&gt;
&lt;h2&gt;Comparación&lt;/h2&gt;
&lt;h3&gt;NVIDIA® RTX™ A6000&lt;/h3&gt;
&lt;p&gt;Empecemos nuestras mediciones de velocidad con la GPU NVIDIA® RTX™ A6000, basada en la arquitectura Ampere (no confundir con la NVIDIA® RTX™ A6000 Ada). Esta tarjeta tiene unas características muy modestas, pero al mismo tiempo dispone de 48 GB de VRAM, lo que le permite funcionar con modelos de redes neuronales bastante grandes. Por desgracia, la baja velocidad de reloj y el escaso ancho de banda son las razones de la baja velocidad de inferencia de los LLM de texto.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/995/original/il_qwen_2_vs_llama_3_1.png?1720184216&quot; alt=&quot;Nvidia A6000 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Inmediatamente después de su lanzamiento, la red neuronal Qwen 2 empezó a superar a Llama 3. Al responder a las mismas preguntas, la diferencia media de velocidad fue del 24% a favor de Qwen 2. La velocidad de generación de respuestas se situó en el rango de 11-16 tokens por segundo. Esto es 2-3 veces más rápido que intentar ejecutar la generación incluso en una CPU potente, pero en nuestra clasificación, este es el resultado más modesto.&lt;/p&gt;
&lt;h3&gt;NVIDIA® RTX™ 3090&lt;/h3&gt;
&lt;p&gt;La siguiente GPU también se basa en la arquitectura Ampere, tiene 2 veces menos memoria de vídeo, pero al mismo tiempo, funciona a una frecuencia más alta (19500 MHz frente a 16000 Mhz). El ancho de banda de la memoria de vídeo también es mayor (936,2 GB/s frente a 768 GB/s). Ambos factores aumentan considerablemente el rendimiento de la RTX™ 3090, incluso teniendo en cuenta que tiene 256 núcleos CUDA® menos.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/996/original/il_qwen_2_vs_llama_3_2.png?1720184259&quot; alt=&quot;Nvidia RTX 3090 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Aquí se ve claramente que Qwen 2 es mucho más rápida (hasta un 23%) que Llama 3 al realizar las mismas tareas. En cuanto a la calidad de la generación, el soporte multilingüe de Qwen 3 es realmente digno de elogio, y el modelo siempre responde en el mismo idioma en el que se formuló la pregunta. Con Llama 3, en este sentido, ocurre a menudo que el modelo entiende la pregunta en sí, pero prefiere formular las respuestas en inglés.&lt;/p&gt;
&lt;h3&gt;NVIDIA® RTX™ 4090&lt;/h3&gt;
&lt;p&gt;Ahora lo más interesante: veamos cómo la NVIDIA® RTX™ 4090, construida sobre la arquitectura Ada Lovelace, llamada así por la matemática inglesa Augusta Ada King, condesa de Lovelace, se enfrenta a la misma tarea. Se hizo famosa por ser la primera programadora de la historia de la humanidad, y en el momento de escribir su primer programa no existía ningún ordenador ensamblado que pudiera ejecutarlo. Sin embargo, se reconoció que el algoritmo descrito por Ada para calcular los números de Bernoulli fue el primer programa del mundo escrito para ser ejecutado en un ordenador.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/997/original/il_qwen_2_vs_llama_3_3.png?1720184288&quot; alt=&quot;Nvidia RTX 4090 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;El gráfico muestra claramente que la RTX™ 4090 hizo frente a la inferencia de ambos modelos casi el doble de rápido. Es interesante que en una de las iteraciones Llama 3 consiguiera superar a Qwen 2 en un 1,2%. Sin embargo, teniendo en cuenta las demás iteraciones, Qwen 2 mantuvo su liderazgo, siendo un 7% más rápido que Llama 3. En todas las iteraciones, la calidad de las respuestas de ambas redes neuronales fue alta, con un número mínimo de alucinaciones. El único defecto es que en contadas ocasiones se mezclaron uno o dos caracteres chinos en las respuestas, lo que no afectó en absoluto al significado global.&lt;/p&gt;
&lt;h3&gt;NVIDIA® RTX™ A40&lt;/h3&gt;
&lt;p&gt;La siguiente tarjeta NVIDIA® RTX™ A40, con la que realizamos pruebas similares, se basa de nuevo en la arquitectura Ampere y cuenta con 48 GB de memoria de vídeo en la placa base. Comparada con la RTX™ 3090, esta memoria es ligeramente más rápida (20000 MHz frente a 19500 MHz), pero tiene menor ancho de banda (695,8 GB/s frente a 936,2 GB/s). La situación se compensa con el mayor número de núcleos CUDA® (10752 frente a 10496), lo que en conjunto permite a la RTX™ A40 rendir ligeramente más rápido que la RTX™ 3090.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/998/original/il_qwen_2_vs_llama_3_4.png?1720184316&quot; alt=&quot;Nvidia A40 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;En cuanto a la comparación de la velocidad de los modelos, aquí Qwen 2 también está por delante de Llama 3 en todas las iteraciones. Cuando se ejecuta en RTX™ A40, la diferencia de velocidad es de aproximadamente un 15% con las mismas respuestas. En algunas tareas, Qwen 2 dio un poco más de información importante, mientras que Llama 3 fue lo más específico posible y dio ejemplos. A pesar de ello, hay que comprobarlo todo dos veces, ya que a veces ambos modelos empiezan a dar respuestas controvertidas.&lt;/p&gt;
&lt;h3&gt;NVIDIA® L20&lt;/h3&gt;
&lt;p&gt;La última participante en nuestras pruebas fue la NVIDIA® L20. Esta GPU está construida como la RTX™ 4090, sobre la arquitectura Ada Lovelace. Se trata de un modelo bastante nuevo, presentado en otoño de 2023. A bordo, tiene 48 GB de memoria de vídeo y 11776 núcleos CUDA®. El ancho de banda de memoria es inferior al de la RTX™ 4090 (864 GB/s frente a 936,2 GB/s), al igual que la frecuencia efectiva. Por tanto, las puntuaciones de inferencia NVIDIA® L20 de ambos modelos estarán más cerca de la 3090 que de la 4090.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/999/original/il_qwen_2_vs_llama_3_5.png?1720184358&quot; alt=&quot;Nvidia L20 chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;La prueba final no trajo sorpresas. Qwen 2 resultó ser más rápido que Llama 3 en todas las iteraciones.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Combinemos todos los resultados recogidos en un gráfico. Qwen 2 fue entre un 7% y un 24% más rápido que Llama 3 dependiendo de la GPU utilizada. Basándonos en esto, podemos concluir claramente que si necesitas obtener inferencia de alta velocidad de modelos como Qwen 2 o Llama 3 en configuraciones de una sola GPU, entonces el líder indiscutible será la RTX™ 3090. Una posible alternativa podría ser la A40 o la L20. Pero no merece la pena ejecutar la inferencia de estos modelos en tarjetas Ampere de la generación A6000.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/001/000/original/il_qwen_2_vs_llama_3_6.png?1720184380&quot; alt=&quot;Conclusion chart qwen2-vs-llama3&quot;&gt;
&lt;p&gt;Deliberadamente no mencionamos en las pruebas las tarjetas con una cantidad menor de memoria de vídeo, por ejemplo, NVIDIA® RTX™ 2080Ti, ya que no es posible encajar allí los modelos 7B u 8B antes mencionados sin cuantización. Pues bien, el modelo Qwen 2 de 1,5B, por desgracia, no tiene respuestas de alta calidad y no puede servir como sustituto completo del 7B.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/578-tu-propio-qwen-usando-hf&quot;&gt;Tu propio Qwen usando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/576-tu-propia-vicu-a-en-linux&quot;&gt;Tu propia Vicuña en Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/107/original/il_qwen_2_vs_llama_3.png?1737368521"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 11:27:11 +0100</pubDate>
      <guid isPermaLink="false">579</guid>
      <dc:date>2025-01-20 11:27:11 +0100</dc:date>
    </item>
    <item>
      <title>Tu propio Qwen usando HF</title>
      <link>https://www.leadergpu.es/catalog/578-tu-propio-qwen-usando-hf</link>
      <description>&lt;p&gt;Los modelos de grandes redes neuronales, con sus extraordinarias capacidades, están firmemente arraigados en nuestras vidas. Reconociendo esto como una oportunidad de desarrollo futuro, las grandes corporaciones empezaron a desarrollar sus propias versiones de estos modelos. El gigante chino Alibaba no se quedó de brazos cruzados. Crearon su propio modelo, QWen (Tongyi Qianwen), que se convirtió en la base de muchos otros modelos de redes neuronales.&lt;/p&gt;
&lt;h2&gt;Requisitos previos&lt;/h2&gt;
&lt;h3&gt;Actualizar caché y paquetes&lt;/h3&gt;
&lt;p&gt;Actualicemos la caché de paquetes y actualicemos nuestro sistema operativo antes de empezar a configurar Qwen. Además, necesitamos añadir Python Installer Packages (PIP), si no está ya presente en el sistema. Ten en cuenta que para esta guía, estamos utilizando Ubuntu 22.04 LTS como sistema operativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade &amp;&amp; sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Instalar controladores NVIDIA®&lt;/h3&gt;
&lt;p&gt;Puede utilizar la utilidad automatizada que se incluye por defecto en las distribuciones de Ubuntu:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternativamente, puedes instalar los controladores NVIDIA® manualmente usando nuestra &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot;&gt;guía paso a paso&lt;/a&gt;. No olvides reiniciar el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Interfaz web de generación de texto&lt;/h2&gt;
&lt;h3&gt;Clonar el repositorio&lt;/h3&gt;
&lt;p&gt;Abra el directorio de trabajo en el SSD:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clona el repositorio del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/oobabooga/text-generation-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Instalar requisitos&lt;/h3&gt;
&lt;p&gt;Abra el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd text-generation-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compruebe e instale todos los componentes que faltan:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Añadir clave SSH a HF&lt;/h2&gt;
&lt;p&gt;Antes de empezar, necesita configurar el reenvío de puertos (puerto remoto 7860 a 127.0.0.1:7860) en su cliente SSH. Puede encontrar información adicional en el siguiente artículo: &lt;a href=&quot;https://www.leadergpu.es/articles/488-conectarse-a-un-servidor-linux&quot;&gt;Conectarse al servidor Linux&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Actualice el repositorio caché de paquetes y los paquetes instalados:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Genera y añade una clave SSH que puedas utilizar en Hugging Face:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;&amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando se genera el par de claves, puede mostrar la clave pública en el emulador de terminal:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copie toda la información empezando por ssh-rsa y terminando por usergpu@gpuserver como se muestra en la siguiente captura de pantalla:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot;&gt;
&lt;p&gt;Abre un navegador web, escribe &lt;a href=&quot;https://huggingface.co/&quot;&gt;https://huggingface.co/&lt;/a&gt; en la barra de direcciones y pulsa &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. Accede a tu cuenta HF y abre &lt;a href=&quot;https://huggingface.co/settings/profile&quot;&gt;Profile settings&lt;/a&gt;. A continuación, seleccione &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; y pulse el botón &lt;b translate=&quot;no&quot;&gt;Add SSH Key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot;&gt;
&lt;p&gt;Rellena el &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; y pega el &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiado del terminal. Guarda la clave pulsando &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267&quot; alt=&quot;Paste the key&quot;&gt;
&lt;p&gt;Ahora, tu cuenta HF está vinculada a la clave SSH pública. La segunda parte (clave privada) se almacena en el servidor. El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como los modelos de redes neuronales. Abre tu directorio de inicio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue y ejecute el script de shell. Este script instala un nuevo repositorio de terceros con git-lfs:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, puedes instalarlo usando el gestor de paquetes estándar:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos a configurar git para utilizar nuestro apodo HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y vinculado a la cuenta de correo de HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Descargar el modelo&lt;/h2&gt;
&lt;p&gt;El siguiente paso consiste en descargar el modelo mediante la técnica de clonación de repositorios utilizada habitualmente por los desarrolladores de software. La única diferencia es que el Git-LFS previamente instalado procesará automáticamente los ficheros punteros marcados y descargará todo el contenido. Abre el directorio necesario (/mnt/fastdisk en nuestro ejemplo):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este comando puede tardar algún tiempo en completarse:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:Qwen/Qwen1.5-32B-Chat-GGUF&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Ejecutar el modelo&lt;/h2&gt;
&lt;p&gt;Ejecute un script que iniciará el servidor web y especificará /mnt/fastdisk como directorio de trabajo con los modelos. Este script puede descargar algunos componentes adicionales en el primer lanzamiento.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start_linux.sh --model-dir /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra su navegador web y seleccione &lt;b translate=&quot;no&quot;&gt;llama.cpp&lt;/b&gt; en la lista desplegable &lt;b translate=&quot;no&quot;&gt;Model loader&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/986/original/sh_your_own_qwen_using_hf_1.png?1716463522&quot; alt=&quot;llama.cpp settings&quot;&gt;
&lt;p&gt;Asegúrese de configurar el parámetro &lt;b translate=&quot;no&quot;&gt;n-gpu-layers&lt;/b&gt;. Es el responsable de qué porcentaje de cálculos se descargarán a la GPU. Si dejas el número en 0, todos los cálculos se realizarán en la CPU, lo cual es bastante lento. Una vez configurados todos los parámetros, haz clic en el botón &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt;. Después, vaya a la pestaña &lt;b translate=&quot;no&quot;&gt;Chat&lt;/b&gt; y seleccione &lt;b translate=&quot;no&quot;&gt;Instruct mode&lt;/b&gt;. Ahora, puede introducir cualquier pregunta y recibir una respuesta:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/987/original/sh_your_own_qwen_using_hf_2.png?1716463543&quot; alt=&quot;Qwen chat example&quot;&gt;
&lt;p&gt;El procesamiento se realizará por defecto en todas las GPUs disponibles, teniendo en cuenta los parámetros especificados previamente:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/988/original/sh_your_own_qwen_using_hf_3.png?1716463565&quot; alt=&quot;Qwen task GPU loading&quot;&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/574-tu-propia-llama-2-en-linux&quot;&gt;Tu propia LLaMa 2 en Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/576-tu-propia-vicu-a-en-linux&quot;&gt;Tu propia Vicuña en Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/985/original/il_your_own_qwen_using_hf.png?1716463472"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:43:46 +0100</pubDate>
      <guid isPermaLink="false">578</guid>
      <dc:date>2025-01-20 09:43:46 +0100</dc:date>
    </item>
    <item>
      <title>Tu propia Vicuña en Linux</title>
      <link>https://www.leadergpu.es/catalog/576-tu-propia-vicu-a-en-linux</link>
      <description>&lt;p&gt;Este artículo te guiará a través del proceso de despliegue de una alternativa LLaMA básica en un servidor LeaderGPU. Para ello utilizaremos el proyecto &lt;a href=&quot;https://github.com/lm-sys/FastChat&quot;&gt;FastChat&lt;/a&gt; y el modelo &lt;a href=&quot;https://lmsys.org/blog/2023-03-30-vicuna/&quot;&gt;Vicuna&lt;/a&gt; de libre acceso. &lt;/p&gt;
&lt;p&gt;El modelo que utilizaremos está basado en la arquitectura LLaMA de Meta pero ha sido optimizado para un despliegue eficiente en hardware de consumo. Esta configuración proporciona un buen equilibrio entre el rendimiento y los requisitos de recursos, por lo que es adecuado tanto para pruebas como para entornos de producción.&lt;/p&gt;
&lt;h2&gt;Preinstalación&lt;/h2&gt;
&lt;p&gt;Preparémonos para instalar FastChat actualizando el repositorio caché de paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instala los drivers de NVIDIA® automáticamente usando el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;También puede instalar estos controladores manualmente con &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot;&gt;nuestra guía paso a paso&lt;/a&gt;. A continuación, reinicie el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente paso es instalar PIP (Package Installer for Python):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Instalar FastChat&lt;/h2&gt;
&lt;h3&gt;Desde PyPi&lt;/h3&gt;
&lt;p&gt;Hay dos formas posibles de instalar FastChat. Puedes instalarlo directamente desde PyPi:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip3 install &quot;fschat[model_worker,webui]&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Desde GitHub&lt;/h3&gt;
&lt;p&gt;Alternativamente, puedes clonar el repositorio de FastChat desde GitHub e instalarlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/lm-sys/FastChat.git&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd FastChat&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No olvides actualizar PIP antes de continuar:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip3 install --upgrade pip&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip3 install -e &quot;.[model_worker,webui]&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Ejecutar FastChat&lt;/h2&gt;
&lt;h3&gt;Primer inicio&lt;/h3&gt;
&lt;p&gt;Para garantizar el éxito del primer inicio, se recomienda llamar manualmente a FastChat directamente desde la línea de comandos:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 -m fastchat.serve.cli --model-path lmsys/vicuna-7b-v1.5&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esta acción recupera y descarga automáticamente el modelo designado de su elección, que debe especificarse mediante el parámetro --model-path. El 7b representa un modelo con 7.000 millones de parámetros. Se trata del modelo más ligero, adecuado para GPUs con 16 GB de memoria de vídeo. En el archivo &lt;a href=&quot;https://github.com/lm-sys/FastChat/blob/main/README.md&quot;&gt;Léame&lt;/a&gt; del proyecto encontrarás enlaces a modelos con un mayor número de parámetros.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/965/original/sh_your_own_vicuna_in_linux_1.png?1714043790&quot; alt=&quot;Sample Vicuna conversation&quot;&gt;
&lt;p&gt;Ahora tienes la opción de entablar una conversación con el chatbot directamente dentro de la interfaz de línea de comandos o puedes configurar una interfaz web. Contiene tres componentes:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Controlador&lt;/li&gt;
    &lt;li&gt;Trabajadores&lt;/li&gt;
    &lt;li&gt;Servidor web de Gradio&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Configurar servicios&lt;/h3&gt;
&lt;p&gt;Transformemos cada componente en un servicio systemd independiente. Crea 3 archivos separados con el siguiente contenido:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/vicuna-controller.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Vicuna controller service
[Service]
User=usergpu
WorkingDirectory=/home/usergpu
ExecStart=python3 -m fastchat.serve.controller
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/vicuna-worker.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Vicuna worker service
[Service]
User=usergpu
WorkingDirectory=/home/usergpu
ExecStart=python3 -m fastchat.serve.model_worker --model-path lmsys/vicuna-7b-v1.5
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/systemd/system/vicuna-webserver.service&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;[Unit]
Description=Vicuna web server
[Service]
User=usergpu
WorkingDirectory=/home/usergpu
ExecStart=python3 -m fastchat.serve.gradio_web_server
Restart=always
[Install]
WantedBy=multi-user.target&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Systemd suele actualizar su base de datos de demonios durante el proceso de arranque del sistema. Sin embargo, puede hacerlo manualmente utilizando el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl daemon-reload&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, agreguemos tres nuevos servicios al inicio y lancémoslos inmediatamente usando la opción &lt;b translate=&quot;no&quot;&gt;--now&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl enable vicuna-controller.service --now &amp;&amp; sudo systemctl enable vicuna-worker.service --now &amp;&amp; sudo systemctl enable vicuna-webserver.service --now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sin embargo, si intenta abrir una interfaz web en http://[DIRECCIÓN_IP]:7860, se encontrará con una interfaz completamente inutilizable y sin modelos disponibles. Para resolver este problema, detenga el servicio de interfaz web:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl stop vicuna-webserver.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el servicio web manualmente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 -m fastchat.serve.gradio_web_server&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Añadir una autenticación&lt;/h3&gt;
&lt;p&gt;Esta acción llama a otro script, que registrará el modelo previamente descargado en una base de datos interna de Gradio. Espera unos segundos e interrumpe el proceso utilizando el acceso directo &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt;. También nos ocuparemos de la seguridad y activaremos un sencillo mecanismo de autenticación para acceder a la interfaz web. Abre el siguiente archivo si instalaste FastChat desde PyPI:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /home/usergpu/.local/lib/python3.10/site-packages/fastchat/serve/gradio_web_server.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;o&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /home/usergpu/FastChat/fastchat/serve/gradio_web_server.py&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Desplácese hasta el final. Encuentra esta línea:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;auth=auth,&lt;/pre&gt;
&lt;p&gt;Cámbiala poniendo el nombre de usuario o la contraseña que quieras:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;auth=(“username”,”password”),&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Guarde el archivo y salga, usando el acceso directo &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt;. Por último, inicie la interfaz web:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo systemctl start vicuna-webserver.service&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre &lt;b translate=&quot;no&quot;&gt;http://[IP_ADDRESS]:7860&lt;/b&gt; en tu navegador y disfruta de FastChat con Vicuña:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/966/original/sh_your_own_vicuna_in_linux_2.png?1714043825&quot; alt=&quot;Sample Vicuna poem&quot;&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/574-tu-propia-llama-2-en-linux&quot;&gt;Tu propia LLaMa 2 en Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/578-tu-propio-qwen-usando-hf&quot;&gt;Tu propio Qwen usando HF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/964/original/il_your_own_vicuna_in_linux.jpg?1714043750"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:25:01 +0100</pubDate>
      <guid isPermaLink="false">576</guid>
      <dc:date>2025-01-20 09:25:01 +0100</dc:date>
    </item>
    <item>
      <title>Tu propia LLaMa 2 en Linux</title>
      <link>https://www.leadergpu.es/catalog/574-tu-propia-llama-2-en-linux</link>
      <description>&lt;h2&gt;Paso 1. Preparar el sistema operativo&lt;/h2&gt;
&lt;h3&gt;Actualizar caché y paquetes&lt;/h3&gt;
&lt;p&gt;Vamos a actualizar la caché de paquetes y actualizar tu sistema operativo antes de empezar a configurar LLaMa 2. Ten en cuenta que para esta guía, estamos utilizando Ubuntu 22.04 LTS como sistema operativo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Además, necesitamos añadir Python Installer Packages (PIP), si no está ya presente en el sistema:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Instalar controladores NVIDIA®&lt;/h3&gt;
&lt;p&gt;Puedes utilizar la utilidad automatizada que se incluye por defecto en las distribuciones de Ubuntu:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Alternativamente, puedes instalar los controladores NVIDIA® manualmente usando &lt;a href=&quot;https://www.leadergpu.es/articles/499-instalar-controladores-nvidia-en-linux&quot;&gt;nuestra guía paso a paso&lt;/a&gt;. No olvides reiniciar el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 2. Obtener modelos de MetaAI&lt;/h2&gt;
&lt;h3&gt;Solicitud oficial&lt;/h3&gt;
&lt;p&gt;Abra la siguiente dirección en su navegador: &lt;a href=&quot;https://ai.meta.com/resources/models-and-libraries/llama-downloads/&quot;&gt;https://ai.meta.com/resources/models-and-libraries/llama-downloads/&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rellene todos los campos necesarios, lea el acuerdo de usuario y haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Agree and Continue&lt;/b&gt;. Al cabo de unos minutos (horas, días), recibirá una URL de descarga especial, que le concede permiso para descargar modelos durante un periodo de 24 horas.&lt;/p&gt;
&lt;h3&gt;Clonar el repositorio&lt;/h3&gt;
&lt;p&gt;Antes de descargar, comprueba el almacenamiento disponible:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;df -h&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;Filesystem      Size  Used Avail Use% Mounted on
tmpfs            38G  3.3M   38G   1% /run
/dev/sda2        99G   24G   70G  26% /
tmpfs           189G     0  189G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/nvme0n1    1.8T   26G  1.7T   2% /mnt/fastdisk
tmpfs            38G  8.0K   38G   1% /run/user/1000&lt;/pre&gt;
&lt;p&gt;Si tiene discos locales desmontados, por favor siga las instrucciones en &lt;a href=&quot;https://www.leadergpu.es/articles/492-partici-n-de-disco-en-linux&quot;&gt;Particionado de discos en Linux&lt;/a&gt;. Esto es importante porque los modelos descargados pueden ser muy grandes, y es necesario planificar su ubicación de almacenamiento de antemano. En este ejemplo, tenemos un SSD local montado en el directorio /mnt/fastdisk. Vamos a abrirlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Crea una copia del repositorio original de LLaMa:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/facebookresearch/llama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si encuentra un error de permiso, simplemente conceda permisos al usuarioergpu:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown -R usergpu:usergpu /mnt/fastdisk/&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Descarga mediante script&lt;/h3&gt;
&lt;p&gt;Abra el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd llama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./download.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pega la URL proporcionada desde MetaAI y selecciona todos los modelos necesarios. Recomendamos descargar todos los modelos disponibles para evitar solicitar permiso de nuevo. Sin embargo, si necesitas un modelo específico, descarga solo ese.&lt;/p&gt;
&lt;h3&gt;Prueba rápida a través de una aplicación de ejemplo&lt;/h3&gt;
&lt;p&gt;Para empezar, podemos comprobar si falta algún componente. Si faltan bibliotecas o aplicaciones, el gestor de paquetes las instalará automáticamente:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -e .&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El siguiente paso es añadir nuevos binarios al PATH:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;export PATH=/home/usergpu/.local/bin:$PATH&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el ejemplo de demostración:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;torchrun --nproc_per_node 1 /mnt/fastdisk/llama/example_chat_completion.py --ckpt_dir /mnt/fastdisk/llama-2-7b-chat/ --tokenizer_path /mnt/fastdisk/llama/tokenizer.model --max_seq_len 512 --max_batch_size 6&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La aplicación creará un proceso de cálculo en la primera GPU y simulará un diálogo sencillo con peticiones típicas, generando respuestas utilizando LLaMa 2.&lt;/p&gt;
&lt;h2&gt;Paso 3. Obtener llama.cpp&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ggerganov/llama.cpp/tree/master&quot;&gt;LLaMa C++&lt;/a&gt; es un proyecto creado por el físico y desarrollador de software búlgaro Georgi Gerganov. Tiene muchas utilidades que facilitan el trabajo con este modelo de red neuronal. Todas las partes de llama.cpp son software de código abierto y se distribuyen bajo la &lt;a href=&quot;https://github.com/ggerganov/llama.cpp/blob/master/LICENSE&quot;&gt;licencia MIT&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Clonar el repositorio&lt;/h3&gt;
&lt;p&gt;Abre el directorio de trabajo en el SSD:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clona el repositorio del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/ggerganov/llama.cpp.git&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Compilar aplicaciones&lt;/h3&gt;
&lt;p&gt;Abre el directorio clonado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd llama.cpp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Inicia el proceso de compilación con el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;make&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 4. Obtener text-generation-webui&lt;/h2&gt;
&lt;h3&gt;Clonar el repositorio&lt;/h3&gt;
&lt;p&gt;Abra el directorio de trabajo en el SSD:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Clona el repositorio del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/oobabooga/text-generation-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;Instalar requisitos&lt;/h3&gt;
&lt;p&gt;Abra el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd text-generation-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Compruebe e instale todos los componentes que faltan:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;pip install -r requirements.txt&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Paso 5. Convertir PTH en GGUF&lt;/h2&gt;
&lt;h3&gt;Formatos comunes&lt;/h3&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;PTH (Python TorcH)&lt;/b&gt; - Un formato consolidado. Esencialmente, es un archivo ZIP estándar con un diccionario de estado PyTorch serializado. Sin embargo, este formato tiene alternativas más rápidas como GGML y GGUF.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;GGML (Georgi Gerganov’s Machine Learning)&lt;/b&gt; - Este es un formato de archivo creado por Georgi Gerganov, el autor de llama.cpp. Se basa en una biblioteca del mismo nombre, escrita en C++, que ha aumentado considerablemente el rendimiento de los modelos lingüísticos de gran tamaño. Ahora ha sido sustituido por el moderno formato GGUF.&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;GGUF (Georgi Gerganov’s Unified Format)&lt;/b&gt; - Se trata de un formato de archivo ampliamente utilizado para los LLM, compatible con diversas aplicaciones. Ofrece mayor flexibilidad, escalabilidad y compatibilidad para la mayoría de los casos de uso.&lt;/p&gt;
&lt;h3&gt;llama.cpp convert.py script&lt;/h3&gt;
&lt;p&gt;Edita los parámetros del modelo antes de convertirlo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;nano /mnt/fastdisk/llama-2-7b-chat/params.json&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Corrige &lt;b translate=&quot;no&quot;&gt;&quot;vocab_size&quot;: -1&lt;/b&gt; a &lt;b translate=&quot;no&quot;&gt;&quot;vocab_size&quot;: 32000&lt;/b&gt;. Guarda el archivo y sal. A continuación, abra el directorio llama.cpp:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk/llama.cpp&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el script que convertirá el modelo al formato GGUF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;python3 convert.py /mnt/fastdisk/llama-2-7b-chat/ --vocab-dir /mnt/fastdisk/llama&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Si todos los pasos anteriores son correctos, recibirás un mensaje como este:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Wrote /mnt/fastdisk/llama-2-7b-chat/ggml-model-f16.gguf&lt;/pre&gt;
&lt;h2&gt;Paso 6. WebUI&lt;/h2&gt;
&lt;h3&gt;Cómo iniciar WebUI&lt;/h3&gt;
&lt;p&gt;Abre el directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk/text-generation-webui/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el script de inicio con algunos parámetros útiles:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--model-dir&lt;/b&gt; indica la ruta correcta a los modelos&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--share&lt;/b&gt; crea un enlace público temporal (si no quieres reenviar un puerto a través de SSH)&lt;/li&gt;
  &lt;li&gt;&lt;b translate=&quot;no&quot;&gt;--gradio-auth&lt;/b&gt; añade autorización con un nombre de usuario y una contraseña (sustituye usuario:contraseña por los tuyos)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start_linux.sh --model-dir /mnt/fastdisk/llama-2-7b-chat/ --share --gradio-auth user:password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tras el lanzamiento con éxito, recibirás un enlace local y un enlace compartido temporal para acceder:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;Running on local URL:  http://127.0.0.1:7860
Running on public URL: https://e9a61c21593a7b251f.gradio.live
&lt;/pre&gt;
&lt;p&gt;Este enlace expira en 72 horas.&lt;/p&gt;
&lt;h3&gt;Cargar el modelo&lt;/h3&gt;
&lt;p&gt;Autorízate en la WebUI utilizando el nombre de usuario y la contraseña seleccionados y sigue estos 5 sencillos pasos:&lt;/p&gt;
&lt;ol&gt;
  &lt;li&gt;Vaya a la pestaña &lt;b translate=&quot;no&quot;&gt;Model&lt;/b&gt;.&lt;/li&gt;
  &lt;li&gt;Selecciona &lt;b translate=&quot;no&quot;&gt;ggml-model-f16.gguf&lt;/b&gt; en el menú desplegable.&lt;/li&gt;
  &lt;li&gt;Elige cuántas capas quieres calcular en la GPU (&lt;b translate=&quot;no&quot;&gt;n-gpu-layers&lt;/b&gt;).&lt;/li&gt;
  &lt;li&gt;Elige cuántos subprocesos quieres iniciar (&lt;b translate=&quot;no&quot;&gt;threads&lt;/b&gt;).  &lt;/li&gt;
  &lt;li&gt;Haz clic en el botón &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/967/original/sh_your_own_llama_2_in_linux_1.png?1714136367&quot; alt=&quot;Loading the model&quot;&gt;
&lt;h3&gt;Inicia el diálogo&lt;/h3&gt;
&lt;p&gt;Cambie la pestaña a &lt;b translate=&quot;no&quot;&gt;Chat&lt;/b&gt;, escriba su pregunta y haga clic en &lt;b translate=&quot;no&quot;&gt;Generate&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/968/original/sh_your_own_llama_2_in_linux_2.png?1714136407&quot; alt=&quot;Start the dialog&quot;&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/573-llama-3-usando-hugging-face&quot;&gt;Llama 3 usando Hugging Face&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/578-tu-propio-qwen-usando-hf&quot;&gt;Tu propio Qwen usando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/579-qwen-2-vs-llama-3&quot;&gt;Qwen 2 vs Llama 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/001/025/original/il_your_own_llama_2_in_Linux.png?1721999193"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:13:25 +0100</pubDate>
      <guid isPermaLink="false">574</guid>
      <dc:date>2025-01-20 09:13:25 +0100</dc:date>
    </item>
    <item>
      <title>Llama 3 usando Hugging Face</title>
      <link>https://www.leadergpu.es/catalog/573-llama-3-usando-hugging-face</link>
      <description>&lt;p&gt;El 18 de abril de 2024 se lanzó el último gran modelo lingüístico de MetaAI, Llama 3. Se presentaron dos versiones a los usuarios: 8B y 70B. La primera versión contiene más de 15.000 tokens y fue entrenada con datos válidos hasta marzo de 2023. La segunda versión, más amplia, se entrenó con datos válidos hasta diciembre de 2023.&lt;/p&gt;

&lt;h2&gt;Paso 1. Preparar el sistema operativo Preparar el sistema operativo&lt;/h2&gt;

&lt;h3&gt;Actualizar caché y paquetes&lt;/h3&gt;

&lt;p&gt;Vamos a actualizar la caché de paquetes y actualizar tu sistema operativo antes de empezar a configurar LLaMa 3. Ten en cuenta que para esta guía, estamos utilizando Ubuntu 22.04 LTS como sistema operativo:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;amp;&amp;amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Además, necesitamos añadir Python Installer Packages (PIP), si no está ya presente en el sistema:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Instalar controladores NVIDIA®&lt;/h3&gt;

&lt;p&gt;Puedes utilizar la utilidad automatizada que se incluye por defecto en las distribuciones de Ubuntu:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo ubuntu-drivers autoinstall&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Alternativamente, puedes instalar los controladores NVIDIA® manualmente. No olvides reiniciar el servidor:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Paso 2. Obtener el modelo&lt;/h2&gt;

&lt;p&gt;Inicia sesión en &lt;a href=&quot;https://huggingface.co/&quot;&gt;Hugging&lt;/a&gt; Face con tu nombre de usuario y contraseña. Vaya a la página correspondiente a la versión de LLM deseada: &lt;a href=&quot;https://huggingface.co/meta-llama/Meta-Llama-3-8B&quot;&gt;Meta-Llama-3-8B&lt;/a&gt; o &lt;a href=&quot;https://huggingface.co/meta-llama/Meta-Llama-3-70B&quot;&gt;Meta-Llama-3-70B&lt;/a&gt;. En el momento de la publicación de este artículo, el acceso al modelo se proporciona de forma individual. Rellene un breve formulario y haga clic en el botón &lt;b translate=&quot;no&quot;&gt;Submit&lt;/b&gt;:&lt;/p&gt;

&lt;h3&gt;Solicitar acceso a HF&lt;/h3&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/905/original/sh_llama3_quick_start_1.png?1713533099&quot; alt=&quot;Fill the form&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;A continuación recibirá un mensaje indicándole que su solicitud ha sido enviada:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/906/original/sh_llama3_quick_start_2.png?1713533131&quot; alt=&quot;Form submitted&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Obtendrá acceso al cabo de 30-40 minutos y se le notificará por correo electrónico.&lt;/p&gt;

&lt;h3&gt;Añadir clave SSH a HF&lt;/h3&gt;

&lt;p&gt;Genera y añade una clave SSH que puedas utilizar en Hugging Face:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;amp;&amp;amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Cuando se genere el par de claves, podrá visualizar la clave pública en el emulador de terminal:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Copie toda la información empezando por &lt;b translate=&quot;no&quot;&gt;ssh-rsa&lt;/b&gt; y terminando por &lt;b translate=&quot;no&quot;&gt;usergpu@gpuserver&lt;/b&gt; como se muestra en la siguiente captura de pantalla:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Abra la &lt;a href=&quot;https://huggingface.co/settings/profile&quot;&gt;configuración del perfil de&lt;/a&gt; Hugging Face. A continuación, seleccione &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; y haga clic en el botón Añadir clave SSH:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Rellene el &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; y pegue el &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiado del terminal. Guarde la clave pulsando &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267&quot; alt=&quot;Paste the key&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Ahora, tu cuenta HF está vinculada con la clave SSH pública. La segunda parte (clave privada) se almacena en el servidor. El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como los modelos de redes neuronales. Abre tu directorio de inicio:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Descargue y ejecute el script de shell. Este script instala un nuevo repositorio de terceros con git-lfs:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ahora, puedes instalarlo usando el gestor de paquetes estándar:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Vamos a configurar git para utilizar nuestro apodo HF:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Y vinculado a la cuenta de correo de HF:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Descargar el modelo&lt;/h3&gt;

&lt;p&gt;Abra el directorio de destino:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;E inicia la descarga del repositorio. Para este ejemplo elegimos la versión 8B:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:meta-llama/Meta-Llama-3-8B&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Este proceso tarda hasta 5 minutos. Puede monitorizarlo ejecutando el siguiente comando en otra consola SSH:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;watch -n 0.5 df -h&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Aquí verás cómo se reduce el espacio libre en el disco montado, asegurando que la descarga avanza y los datos se guardan. El estado se actualizará cada medio segundo. Para detener manualmente la visualización, pulse la combinación de teclas Ctrl + C.&lt;/p&gt;

&lt;p&gt;También puedes instalar &lt;a href=&quot;https://github.com/aristocratos/btop&quot;&gt;btop&lt;/a&gt; y supervisar el proceso con esta utilidad:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install btop &amp;amp;&amp;amp; btop&lt;/code&gt;&lt;/pre&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/910/original/sh_llama3_quick_start_6.png?1713533300&quot; alt=&quot;Btop view&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Para salir de la utilidad btop, pulse la tecla &lt;b translate=&quot;no&quot;&gt;Esc&lt;/b&gt; y seleccione &lt;b translate=&quot;no&quot;&gt;Quit&lt;/b&gt;.&lt;/p&gt;

&lt;h2&gt;Paso 3. Ejecutar el modelo Ejecutar el modelo&lt;/h2&gt;

&lt;p&gt;Abra el directorio:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Descarga el repositorio de Llama 3:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/meta-llama/llama3&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Cambia el directorio:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd llama3&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Ejecuta el ejemplo:&lt;/p&gt;


&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;torchrun --nproc_per_node 1 example_text_completion.py \
--ckpt_dir /mnt/fastdisk/Meta-Llama-3-8B/original \
--tokenizer_path /mnt/fastdisk/Meta-Llama-3-8B/original/tokenizer.model \
--max_seq_len 128 \
--max_batch_size 4&lt;/code&gt;&lt;/pre&gt;

&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/911/original/sh_llama3_quick_start_7.png?1713533328
&quot; alt=&quot;Llama3 example result&quot; unselectable=&quot;on&quot;&gt;
&lt;p&gt;Ahora puedes utilizar Llama 3 en tus aplicaciones.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/574-tu-propia-llama-2-en-linux&quot;&gt;Tu propia LLaMa 2 en Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/578-tu-propio-qwen-usando-hf&quot;&gt;Tu propio Qwen usando HF&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/579-qwen-2-vs-llama-3&quot;&gt;Qwen 2 vs Llama 3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/904/original/il_llama3_quick_start.jpg?1713533056"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 20 Jan 2025 09:05:10 +0100</pubDate>
      <guid isPermaLink="false">573</guid>
      <dc:date>2025-01-20 09:05:10 +0100</dc:date>
    </item>
    <item>
      <title>StarCoder: su asistente local de codificación</title>
      <link>https://www.leadergpu.es/catalog/571-starcoder-su-asistente-local-de-codificaci-n</link>
      <description>&lt;p&gt;Microsoft CoPilot ha supuesto una revolución en el campo del desarrollo de software. Este asistente de IA ayuda enormemente a los desarrolladores con diversas tareas de codificación, facilitándoles la vida. Sin embargo, un inconveniente es que no es una aplicación independiente, sino un servicio basado en la nube. Esto significa que los usuarios deben aceptar los términos y condiciones del servicio y pagar una suscripción.&lt;/p&gt;
&lt;p&gt;Afortunadamente, el mundo del software de código abierto nos ofrece numerosas alternativas. En el momento de escribir este artículo, la alternativa más notable a CoPilot es StarCoder, desarrollada por el proyecto BigCode. StarCoder es un extenso modelo de red neuronal con 15,5B de parámetros, entrenado en más de 80 lenguajes de programación.&lt;/p&gt;
&lt;p&gt;Este modelo se distribuye en Hugging Face (HF) utilizando un &lt;a href=&quot;https://huggingface.co/docs/hub/models-gated&quot; target=&quot;_blank&quot;&gt;modelo gated&lt;/a&gt; bajo el &lt;a href=&quot;https://huggingface.co/spaces/bigcode/bigcode-model-license-agreement&quot; target=&quot;_blank&quot;&gt;acuerdo de licencia BigCode OpenRAIL-M v1&lt;/a&gt;. Puedes descargar y utilizar este modelo de forma gratuita, pero necesitas tener una cuenta en HF con una clave SSH vinculada. Antes de poder descargarlo, hay algunos pasos adicionales que debes seguir.&lt;/p&gt;
&lt;h2&gt;Añadir clave SSH a HF&lt;/h2&gt;
&lt;p&gt;Antes de empezar, tienes que configurar el reenvío de puertos (puerto remoto 7860 a 127.0.0.1:7860) en tu cliente SSH. Puedes encontrar información adicional en los siguientes artículos:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/597-stable-video-diffusion&quot;&gt;Difusión de vídeo estable&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/488-conectarse-a-un-servidor-linux&quot;&gt;Conectarse a un servidor Linux&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Actualice el repositorio caché de paquetes y los paquetes instalados:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos a instalar el gestor de paquetes del sistema Python (PIP):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-pip
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Genera y añade una clave SSH que puedas usar en Hugging Face:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/.ssh &amp;&amp; ssh-keygen&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando se genera el par de claves, puede mostrar la clave pública en el emulador de terminal:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cat id_rsa.pub&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Copie toda la información empezando por ssh-rsa y terminando por usergpu@gpuserver como se muestra en la siguiente captura de pantalla:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/907/original/sh_llama3_quick_start_3.png?1713533169&quot; alt=&quot;Copy RSA key&quot;&gt;
&lt;p&gt;Abre un navegador web, escribe &lt;a href=&quot;https://huggingface.co/&quot; target=&quot;_blank&quot;&gt;https://huggingface.co/&lt;/a&gt; en la barra de direcciones y pulsa &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. Accede a tu cuenta HF y abre &lt;a href=&quot;https://huggingface.co/settings/profile&quot; target=&quot;_blank&quot;&gt;Profile settings&lt;/a&gt;. A continuación, seleccione &lt;b translate=&quot;no&quot;&gt;SSH and GPG Keys&lt;/b&gt; y pulse el botón &lt;b translate=&quot;no&quot;&gt;Add SSH Key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/908/original/sh_llama3_quick_start_4.png?1713533229&quot; alt=&quot;Add SSH key&quot;&gt;
&lt;p&gt;Rellena el &lt;b translate=&quot;no&quot;&gt;Key name&lt;/b&gt; y pega el &lt;b translate=&quot;no&quot;&gt;SSH Public key&lt;/b&gt; copiado del terminal. Guarda la clave pulsando &lt;b translate=&quot;no&quot;&gt;Add key&lt;/b&gt;:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/909/original/sh_llama3_quick_start_5.png?1713533267
&quot; alt=&quot;Paste the key&quot;&gt;
&lt;p&gt;Ahora, tu cuenta HF está vinculada a la clave SSH pública. La segunda parte (clave privada) se almacena en el servidor. El siguiente paso es instalar una extensión específica de Git LFS (Large File Storage), que se utiliza para descargar archivos de gran tamaño, como los modelos de redes neuronales. Abre tu directorio de inicio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd ~/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Descargue y ejecute el script de shell. Este script instala un nuevo repositorio de terceros con git-lfs:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ahora, puedes instalarlo usando el gestor de paquetes estándar:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt-get install git-lfs&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Vamos a configurar git para utilizar nuestro apodo HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.name &quot;John&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y vinculado a la cuenta de correo de HF:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git config --global user.email &quot;john.doe@example.com&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Descargar el modelo&lt;/h2&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;&lt;i&gt;Ten en cuenta que StarCoder en formato binario puede ocupar una cantidad significativa de espacio en disco (&amp;gt;75 GB). No olvides consultar &lt;a href=&quot;https://www.leadergpu.es/articles/492-partici-n-de-disco-en-linux&quot;&gt;este artículo&lt;/a&gt; para asegurarte de que estás utilizando la partición montada correcta.&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;Todo está listo para la descarga del modelo. Abre el directorio de destino:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Y empieza a descargar el repositorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:bigcode/starcoder&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este proceso tarda hasta 15 minutos. Por favor, sea paciente. Puede monitorizarlo ejecutando el siguiente comando en otra consola SSH:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;watch -n 0.5 df -h&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Aquí, verás cómo se reduce el espacio libre en el disco montado, asegurando que la descarga está progresando y los datos se están guardando. El estado se actualizará cada medio segundo. Para detener manualmente la visualización, pulse el acceso directo &lt;b translate=&quot;no&quot;&gt;Ctrl + C&lt;/b&gt;.&lt;/p&gt;
&lt;h2&gt;Ejecutar el modelo completo con WebUI&lt;/h2&gt;
&lt;p&gt;Clona el repositorio del proyecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone https://github.com/oobabooga/text-generation-webui.git&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abre el directorio descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd text-generation-webui&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecute el script de inicio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./start_linux.sh --model-dir /mnt/fastdisk&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El script comprobará la presencia de las dependencias necesarias en el servidor. Las dependencias que falten se instalarán automáticamente. Cuando se inicie la aplicación, abra su navegador web y escriba la siguiente dirección:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;http://127.0.0.1:7860&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Abra la pestaña &lt;b translate=&quot;no&quot;&gt;Model&lt;/b&gt; y seleccione el modelo descargado &lt;b translate=&quot;no&quot;&gt;starcoder&lt;/b&gt; de la lista desplegable. Haga clic en la lista &lt;b translate=&quot;no&quot;&gt;Model loader&lt;/b&gt; y seleccione &lt;b translate=&quot;no&quot;&gt;Transformers&lt;/b&gt;. Ajusta el deslizador de memoria máxima de la GPU para cada GPU instalada. Esto es muy importante, ya que ponerlo a 0 restringe el uso de VRAM e impide que el modelo se cargue correctamente. También tienes que establecer el uso máximo de RAM. Ahora, haz click en el botón &lt;b translate=&quot;no&quot;&gt;Load&lt;/b&gt; y espera a que el proceso de carga se complete:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/969/original/sh_starcoder_your_local_coding_assistant_1.png?1714386546&quot; alt=&quot;Load StarCoder model&quot;&gt;
&lt;p&gt;Cambia a la pestaña &lt;b translate=&quot;no&quot;&gt;Chat&lt;/b&gt; y prueba la conversación con el modelo. Ten en cuenta que Starcoder no está pensado para diálogos como ChatGPT. Sin embargo, puede ser útil para comprobar si hay errores en el código y sugerir soluciones.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/970/original/sh_starcoder_your_local_coding_assistant_2.png?1714386599&quot; alt=&quot;Run the StarCoder&quot;&gt;
&lt;p&gt;Si quieres obtener un modelo de diálogo completo, puedes probar otros dos modelos: &lt;a href=&quot;https://huggingface.co/HuggingFaceH4/starchat-alpha&quot; target=&quot;_blank&quot;&gt;starchat-alpha&lt;/a&gt; y &lt;a href=&quot;https://huggingface.co/HuggingFaceH4/starchat-beta&quot; target=&quot;_blank&quot;&gt;starchat-beta&lt;/a&gt;. Estos modelos fueron afinados para conducir un diálogo tal como lo hace ChatGPT. Los siguientes comandos ayudan a descargar y ejecutar estos modelos:&lt;/p&gt;
&lt;p&gt;Para starchat-alpha:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:HuggingFaceH4/starchat-alpha&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Para starchat-beta:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;git clone git@hf.co:HuggingFaceH4/starchat-beta&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El procedimiento de carga es el mismo que el descrito anteriormente. Además, puedes encontrar la &lt;a href=&quot;https://github.com/bigcode-project/starcoder.cpp/tree/main&quot; target=&quot;_blank&quot;&gt;implementación en C++&lt;/a&gt; de starcoder, que será eficaz para la inferencia en CPU.&lt;/p&gt;
&lt;p&gt;Ver también:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/574-tu-propia-llama-2-en-linux&quot;&gt;Tu propia LLaMa 2 en Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/576-tu-propia-vicu-a-en-linux&quot;&gt;Tu propia Vicuña en Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/catalog/578-tu-propio-qwen-usando-hf&quot;&gt;Tu propio Qwen usando HF&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/971/original/il_starcoder_your_local_coding_assistant.jpg?1714386646"
        length="0"
        type="image/jpeg"/>
      <pubDate>Fri, 17 Jan 2025 14:52:58 +0100</pubDate>
      <guid isPermaLink="false">571</guid>
      <dc:date>2025-01-17 14:52:58 +0100</dc:date>
    </item>
    <item>
      <title>Modelos de Stable Diffusion: personalización y opciones</title>
      <link>https://www.leadergpu.es/catalog/566-modelos-de-stable-diffusion-personalizaci-n-y-opciones</link>
      <description>&lt;p&gt;El tuning es una forma excelente de mejorar cualquier coche o aparato. Las redes neuronales generativas también se pueden tunear. Hoy no queremos profundizar en la estructura de la Difusión Estable, pero pretendemos conseguir mejores resultados que con una configuración estándar.&lt;/p&gt;
&lt;p&gt;Hay dos formas sencillas de hacerlo: instalando modelos personalizados y utilizando las opciones de optimización estándar. En este artículo, aprenderemos cómo instalar nuevos modelos en Stable Diffusion y qué opciones nos permiten utilizar el hardware de forma más eficaz.&lt;/p&gt;
&lt;p&gt;Si quieres compartir fotos divertidas de gatos monos o comida de aspecto estupendo, lo normal es que las publiques en Instagram. Si desarrollas aplicaciones y quieres poner el código a disposición de todo el mundo, lo publicas en GitHub. Pero si entrenas un modelo gráfico de IA y quieres compartirlo, deberías prestar atención a &lt;a href=&quot;https://civitai.com/&quot;&gt;CivitAI&lt;/a&gt;. Se trata de una gran plataforma para compartir conocimientos y resultados con los miembros de la comunidad.&lt;/p&gt;
&lt;p&gt;Antes de empezar a descargar, necesitas cambiar el directorio de trabajo. Todos los modelos de IA en Stable Diffusion están ubicados en el directorio &quot;models&quot;:Antes de empezar a descargar, necesitas cambiar el directorio de trabajo. Todos los modelos de IA de Stable Diffusion se encuentran en el directorio &quot;models&quot;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;cd stable-diffusion-webui/models/Stable-diffusion&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Comprobemos qué modelos se proporcionan por defecto:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;ls -a&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&#39;Put Stable Diffusion checkpoints here.txt&#39;
v1-5-pruned-emaonly.safetensors&lt;/pre&gt;
&lt;p&gt;Sólo hay un modelo con el nombre &quot;v1-5-pruned-emaonly&quot; y la extensión &quot;safetensors&quot;. Este modelo es un buen punto de partida, pero tenemos cinco modelos más interesantes. Vamos a descargarlos y compararlos con el modelo estándar.&lt;/p&gt;
&lt;h2&gt;Avisos de difusión estable&lt;/h2&gt;
&lt;p&gt;Para mostrar visualmente la diferencia entre ellos, hemos ideado unas sencillas indicaciones:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;princess, magic, fairy tales, portrait, 85mm, colorful&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Para muchos modelos, representar con precisión la geometría y los rasgos faciales puede ser un reto importante. Para ello, añada indicaciones negativas que garanticen la generación de imágenes sin estas características:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;poorly rendered face, poorly drawn face, poor facial details, poorly drawn hands, poorly rendered hands, low resolution, bad composition, mutated body parts, blurry image, disfigured, oversaturated, bad anatomy, deformed body features&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Ajuste el valor máximo de pasos de muestreo (150) para obtener más detalles en el resultado.&lt;/p&gt;
&lt;h3&gt;Modelo estándar&lt;/h3&gt;
&lt;p&gt;El modelo estándar funciona bien en este tipo de tareas. Sin embargo, algunos detalles no son del todo precisos. Por ejemplo, hay un problema con los ojos: están claramente desproporcionados:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/816/original/sh_stable_diffusion_models_customization_and_options_1.png?1712233278&quot; alt=&quot;Stable Diffusion Models standard&quot;&gt;
&lt;p&gt;Si nos fijamos en la diadema, también está torcida y es asimétrica. El resto de los detalles están bien ejecutados y corresponden a las indicaciones dadas. El fondo está borroso porque hemos puesto la indicación &quot;85 mm&quot;. Se trata de una distancia focal muy utilizada para retratos en fotografía profesional.&lt;/p&gt;
&lt;h3&gt;Visión realista&lt;/h3&gt;
&lt;p&gt;Este modelo es ideal para retratos. La imagen parece tomada con un objetivo de calidad con la distancia focal especificada. Las proporciones del rostro y el cuerpo son exactas, el vestido se ajusta perfectamente y la diadema de la cabeza resulta estéticamente agradable:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/817/original/sh_stable_diffusion_models_customization_and_options_2.png?1712233379&quot; alt=&quot;Stable Diffusion Models Realistic Vision&quot;&gt;
&lt;p&gt;Por cierto, el autor recomienda utilizar la siguiente plantilla para las indicaciones negativas:&lt;/p&gt;
&lt;p&gt;&lt;b translate=&quot;no&quot;&gt;deformed iris, deformed pupils, semi-realistic, cgi, 3d, render, sketch, cartoon, drawing, anime:1.4), text, close up, cropped, out of frame, worst quality, low quality, jpeg artifacts, ugly, duplicate, morbid, mutilated, extra fingers, mutated hands, poorly drawn hands, poorly drawn face, mutation, deformed, blurry, dehydrated, bad anatomy, bad proportions, extra limbs, cloned face, disfigured, gross proportions, malformed limbs, missing arms, missing legs, extra arms, extra legs, fused fingers, too many fingers, long neck&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Pero incluso con nuestras sencillas indicaciones, el resultado es excelente.&lt;/p&gt;
Descargue el modelo aquí: &lt;a href=&quot;https://civitai.com/models/4201/realistic-vision-v20&quot;&gt;Visión realista&lt;/a&gt;&lt;h3&gt;Deliberado&lt;/h3&gt;
&lt;p&gt;Otro modelo sorprendente para estos fines. Los detalles también están bien trabajados aquí, pero ten cuidado y vigila el número de dedos. Este es un problema muy común con las redes neuronales: a menudo pueden dibujar dedos de más o incluso extremidades enteras.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/818/original/sh_stable_diffusion_models_customization_and_options_3.png?1712233625&quot; alt=&quot;Stable Diffusion Models Deliberate&quot;&gt;
&lt;p&gt;Crear líneas visuales es una de las técnicas favoritas de las películas. Así, este modelo también eligió dibujar a una persona sobre el fondo de un camino forestal.&lt;/p&gt;
&lt;p&gt;Descargue el modelo aquí: &lt;a href=&quot;https://huggingface.co/XpucT/Deliberate&quot;&gt;Deliberate&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;OpenJourney&lt;/h3&gt;
&lt;p&gt;Entre las redes neuronales generativas, Midjourney (MJ) ha recibido especial atención. MJ fue pionera en este campo y a menudo se pone como ejemplo para otras. Las imágenes que crea tienen un estilo único. OpenJourney se inspira en el estilo de MJ y es una Stable Diffusion convenientemente ajustada.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/819/original/sh_stable_diffusion_models_customization_and_options_4.png?1712233730&quot; alt=&quot;Stable Diffusion Models OpenJourney&quot;&gt;
&lt;p&gt;Genera imágenes que parecen dibujos animados. Son vibrantes y brillantes. Para obtener mejores resultados, añada el indicador de estilo &lt;b translate=&quot;no&quot;&gt;mdjrny-v4&lt;/b&gt; &lt;/p&gt;
&lt;p&gt;Descarga el modelo aquí: &lt;a href=&quot;https://huggingface.co/prompthero/openjourney&quot;&gt;OpenJourney&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Cualquier cosa&lt;/h3&gt;
&lt;p&gt;Este modelo crea imágenes parecidas a las de un dibujante profesional de manga (una persona que dibuja cómics). Así, tenemos una princesa de estilo anime.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/820/original/sh_stable_diffusion_models_customization_and_options_5.png?1712233804&quot; alt=&quot;Stable Diffusion Models Anything&quot;&gt;
&lt;p&gt;Este modelo está entrenado en imágenes con una resolución de 768x768. Puede ajustar esta resolución para obtener mejores resultados que el estándar 512x512.&lt;/p&gt;
&lt;p&gt;Descarga el modelo aquí: &lt;a href=&quot;https://civitai.com/models/66/anything-v3&quot;&gt;Cualquier cosa&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Memphis corporativo&lt;/h3&gt;
&lt;p&gt;Este estilo de imágenes ganó gran popularidad a principios de la década de 2020 y se utilizó ampliamente como estilo corporativo en diferentes empresas de alta tecnología. A pesar de las críticas, se encuentra a menudo en presentaciones y sitios web.&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/821/original/sh_stable_diffusion_models_customization_and_options_6.png?1712233943&quot; alt=&quot;Stable Diffusion Models Corporate Memphis&quot;&gt;
&lt;p&gt;La princesa resultó ser minimalista, pero bastante bonita. Especialmente divertidos fueron los detalles que la modelo colocó en el fondo.&lt;/p&gt;
&lt;p&gt;Descargue el modelo aquí: &lt;a href=&quot;https://huggingface.co/jinofcoolnes/corporate_memphis&quot;&gt;Corporate Memphis&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Opciones de difusión estable&lt;/h2&gt;
&lt;p&gt;La difusión estable consume muchos recursos, por lo que se han desarrollado muchas opciones para ella. La más popular de ellas es &lt;b translate=&quot;no&quot;&gt;--xformers&lt;/b&gt;. Esta opción habilita dos mecanismos de optimización. El primero reduce el consumo de memoria y el segundo se utiliza para aumentar la velocidad.&lt;/p&gt;
&lt;p&gt;Si intentas añadir --xformers sin pasos adicionales, obtendrás un error diciendo que los paquetes&lt;a href=&quot;https://pypi.org/project/torch/&quot;&gt;(torch&lt;/a&gt; y &lt;a href=&quot;https://pypi.org/project/torchvision/&quot;&gt;torchvision&lt;/a&gt;) están compilados para diferentes versiones de CUDA®. Para solucionar esto, tenemos que entrar en el entorno virtual Python (venv) que se utiliza para Stable Diffusion. Después de eso, instalar los paquetes para la versión deseada de CUDA® (v1.18).&lt;/p&gt;
&lt;p&gt;Primero debemos actualizar la caché de paquetes apt e instalar el instalador de paquetes para Python (pip). El siguiente paso es activar Python venv con el script &lt;b translate=&quot;no&quot;&gt;activate&lt;/b&gt;:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;source stable-diffusion-webui/venv/bin/activate&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después de eso, la línea de comandos cambia a &lt;b translate=&quot;no&quot;&gt;(venv) username@hostname:~$&lt;/b&gt; Vamos a instalar los paquetes torch y torchvision con CUDA® 11.8:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;pip install torch==2.0.0+cu118 torchvision==0.15.1+cu118 --index-url https://download.pytorch.org/whl/cu118&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este proceso puede tardar varios minutos porque los paquetes son bastante grandes. Tendrás el tiempo justo para servirte un café. Por último, puedes desactivar el entorno virtual e iniciar Stable Diffusion con la opción &lt;b translate=&quot;no&quot;&gt;--xformers&lt;/b&gt; (sustituye &lt;b translate=&quot;no&quot;&gt;[user]&lt;/b&gt; y &lt;b translate=&quot;no&quot;&gt;[password]&lt;/b&gt; por tus propios valores):&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-venv&quot;&gt;deactivate&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui --xformers --listen --gradio-auth [user]:[password]&lt;/password&gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;La alternativa más rápida para &lt;b translate=&quot;no&quot;&gt;--xformers&lt;/b&gt; es &lt;b translate=&quot;no&quot;&gt;--opt-sdp-no-mem-attention&lt;/b&gt;. Consume más memoria pero funciona un poco más rápido. Puede utilizar esta opción sin pasos adicionales.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Hoy hemos examinado las capacidades de la Difusión Estable cuando se combina con otros modelos añadidos y opciones de optimización. Recuerde, aumentando o disminuyendo el número de pasos de muestreo, puede ajustar el nivel de detalle de la imagen final.&lt;/p&gt;
&lt;p&gt;Por supuesto, esto es sólo una pequeña parte de lo que se puede hacer con una red neuronal generativa de este tipo. Así que &lt;a href=&quot;https://www.leadergpu.es/#chose-best&quot;&gt;pide ahora mismo un servidor GPU&lt;/a&gt; y empieza a experimentar. Te esperan muchos más descubrimientos y oportunidades. Las tarjetas de vídeo potentes y de alta velocidad te ayudarán a ahorrar tiempo y a generar imágenes geniales.&lt;/p&gt;
&lt;p&gt;Véase también:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/565-stable-diffusion-webui&quot;&gt;WebUI de Stable Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/598-easy-diffusion-ui&quot;&gt;Interfaz de usuario de Easy Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/595-pytorch-para-linux&quot;&gt;PyTorch para Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/596-pytorch-para-windows&quot;&gt;PyTorch para Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/815/original/il_stable_diffusion_models_customization_and_options.png?1712233216"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 25 Nov 2024 13:30:16 +0100</pubDate>
      <guid isPermaLink="false">566</guid>
      <dc:date>2024-11-25 13:30:16 +0100</dc:date>
    </item>
    <item>
      <title>Stable Diffusion WebUI</title>
      <link>https://www.leadergpu.es/catalog/565-stable-diffusion-webui</link>
      <description>&lt;p&gt;Las redes neuronales generativas parecen mágicas. Responden a preguntas, crean imágenes e incluso escriben código en varios lenguajes de programación. El éxito de estas redes tiene dos componentes: modelos preentrenados y aceleradores de hardware. Ciertamente, es posible utilizar núcleos de CPU para esta carga de trabajo, pero sería como una carrera de caracoles. Generar una imagen pequeña puede llevar mucho tiempo, decenas de minutos. Generar la misma imagen en una GPU llevaría cientos de veces menos.&lt;/p&gt;
&lt;p&gt;El primer secreto reside en el número de núcleos. Los núcleos de la CPU son universales y pueden manejar instrucciones complejas. Sin embargo, los procesadores de servidor convencionales tienen un máximo de 64 núcleos. Incluso en los sistemas multiprocesador, el número de núcleos rara vez supera los 256. Los núcleos de las GPU son más sencillos, pero como resultado caben muchos más en el chip. Por ejemplo, una NVIDIA® RTX™ 4090 tiene 16.384 núcleos.&lt;/p&gt;
&lt;p&gt;El segundo secreto es que la carga de trabajo puede dividirse en muchas tareas sencillas, que pueden ejecutarse en subprocesos paralelos en núcleos de GPU dedicados. Este truco acelera considerablemente el procesamiento de datos. Hoy veremos cómo funciona y desplegaremos una red neuronal generativa &lt;a href=&quot;https://github.com/Stability-AI/stablediffusion&quot;&gt;Stable Diffusion Web UI&lt;/a&gt; en la infraestructura &lt;a href=&quot;https://www.leadergpu.es/&quot;&gt;LeaderGPU&lt;/a&gt;. Tomemos, por ejemplo, un servidor con una NVIDIA® RTX™ 4090 que tiene 16.384 núcleos de GPU. Como sistema operativo, seleccionamos la actual versión LTS de Ubuntu 22.04 y elegimos la opción &quot;Instalar controladores NVIDIA® y CUDA® 11.8&quot;.&lt;/p&gt;
&lt;h2&gt;Preparación del sistema&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/811/original/sh_stable_diffusion_webui_1.png?1712212269&quot; alt=&quot;Stable Diffusion WebUI system prepare&quot;&gt;
&lt;p&gt;Antes de empezar, vamos a considerar la memoria. Stable Diffusion es un sistema grande que puede ocupar hasta 13G en tu disco duro. El disco virtual estándar en una instalación de LeaderGPU es de 100G. El sistema operativo ocupa 25G. Si desplegamos Stable Diffusion sin ampliar la partición de inicio, agotaremos toda la memoria libre y nos encontraremos con un error de &quot;No queda espacio en el dispositivo&quot;. Es una buena idea extender nuestro directorio home.&lt;/p&gt;
&lt;h3&gt;Ampliar el directorio de inicio&lt;/h3&gt;
&lt;p&gt;Primero, necesitamos comprobar todos los discos disponibles.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo fdisk -l&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;Disk /dev/sda: 447.13 GiB, 480103981056 bytes, 937703088 sectors
Disk model: INTEL SSDSC2KB48
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes

Disk /dev/sdb: 50 GiB, 53687091200 bytes, 104857600 sectors
Disk model: VIRTUAL-DISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 9D4C1F0C-D4A7-406E-AECB-BF57E4726437&lt;/pre&gt;
&lt;p&gt;Luego necesitamos crear una nueva partición Linux en nuestro disco SSD físico, /dev/sda:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo fdisk /dev/sda&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pulsa las siguientes teclas, una a una: &lt;b translate=&quot;no&quot;&gt;g → n → Enter → Enter → Enter → w&lt;/b&gt;. Esto resultará en una nueva partición /dev/sda1 sin sistema de archivos. Ahora, crea un sistema de archivos ext4 en ella:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo mkfs.ext4 /dev/sda1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Cuando termine el proceso, pasamos al siguiente paso.&lt;/p&gt;
&lt;p&gt;&lt;font color=&quot;red&quot;&gt;&lt;i&gt;Atención. Por favor, proceda con la siguiente operación con sumo cuidado. Cualquier error cometido al modificar el archivo fstab puede provocar que su servidor no pueda arrancar con normalidad y puede requerir un reinicio completo del sistema operativo.&lt;/i&gt;&lt;/font&gt;&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo blkid&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;/dev/sdb2: UUID=&quot;6b17e542-0934-4dba-99ca-a00bd260c247&quot; BLOCK_SIZE=&quot;4096&quot; TYPE=&quot;ext4&quot; PARTUUID=&quot;70030755-75d8-4339-a4e0-26a97f1d1c5d&quot;
/dev/loop1: TYPE=&quot;squashfs&quot;
/dev/sdb1: PARTUUID=&quot;63ff1714-bd29-4062-be04-21af32423c0a&quot;
/dev/loop4: TYPE=&quot;squashfs&quot;
/dev/loop0: TYPE=&quot;squashfs&quot;
/dev/sda1: UUID=&quot;fb2ba455-2b8d-4da0-8719-ce327d0026bc&quot; BLOCK_SIZE=&quot;4096&quot; TYPE=&quot;ext4&quot; PARTUUID=&quot;6e0108df-b000-5848-8328-b187daf37a4f&quot;
/dev/loop5: TYPE=&quot;squashfs&quot;
/dev/loop3: TYPE=&quot;squashfs&quot;&lt;/pre&gt;
&lt;p&gt;Copie &lt;b translate=&quot;no&quot;&gt;UUID&lt;/b&gt; (fb2ba455-2b8d-4da0-8719-ce327d0026bc en el ejemplo) de la partición &lt;b translate=&quot;no&quot;&gt;/dev/sda1&lt;/b&gt;. A continuación, daremos instrucciones al sistema para que monte automáticamente esta unidad por su UUID en el arranque:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo nano /etc/fstab&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Introduzca esta línea antes de &lt;b translate=&quot;no&quot;&gt;/swap.img&lt;/b&gt;... string:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash&quot;&gt;/dev/disk/by-uuid/&lt;PARTITION UUID&gt; /home/usergpu ext4 defaults defaults&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;# /etc/fstab: static file system information.
#
# Use &#39;blkid&#39; to print the universally unique identifier for a
# device; this may be used with UUID= as a more robust way to name devices
# that works even if disks are added and removed. See fstab(5).
#
# &lt;file system&gt; &lt;mount point&gt;   &lt;type&gt;  &lt;options&gt;       &lt;dump&gt;  &lt;pass&gt;
# / was on /dev/sdb2 during curtin installation
/dev/disk/by-uuid/6b17e542-0934-4dba-99ca-a00bd260c247 / ext4 defaults,_netdev 0 1
/dev/disk/by-uuid/fb2ba455-2b8d-4da0-8719-ce327d0026bc /home/usergpu ext4 defaults defaults
/swap.img       none    swap    sw      0       0&lt;/pre&gt;
&lt;p&gt;Salga con el atajo de teclado &lt;b translate=&quot;no&quot;&gt;Ctrl + X&lt;/b&gt; y confirme el guardado del archivo pulsando &lt;b translate=&quot;no&quot;&gt;Enter&lt;/b&gt;. La nueva configuración se aplicará en el próximo arranque del sistema. Vamos a reiniciar el servidor:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Después de reiniciar, podemos comprobar todos los directorios montados con el siguiente comando:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;df -h&lt;/code&gt;&lt;/pre&gt;
&lt;pre translate=&quot;no&quot;&gt;Filesystem      Size  Used Avail Use% Mounted on
tmpfs           6.3G  1.7M  6.3G   1% /run
/dev/sdb2        49G   23G   24G  50% /
tmpfs            32G     0   32G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
/dev/sda1       440G   28K  417G   1% /home/usergpu
tmpfs           6.3G  4.0K  6.3G   1% /run/user/1000&lt;/pre&gt;
&lt;p&gt;¡Magnífico! Pero ahora no tenemos acceso para escribir algo en nuestro directorio home porque fue cambiado por el archivo de configuración &lt;b translate=&quot;no&quot;&gt;fstab&lt;/b&gt;. Es hora de recuperar la propiedad del directorio:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo chown -R usergpu /home/usergpu&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;¡Buen trabajo! Pasemos al siguiente paso.&lt;/p&gt;
&lt;h3&gt;Instalar paquetes básicos&lt;/h3&gt;
&lt;p&gt;Actualiza la caché de software desde los repositorios oficiales de Ubuntu y actualiza algunos paquetes:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt update &amp;&amp; sudo apt -y upgrade&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El sistema ha informado de que se ha instalado un nuevo kernel y estará operativo tras el reinicio del sistema. Seleccione &lt;b translate=&quot;no&quot;&gt;OK&lt;/b&gt; dos veces.&lt;/p&gt;
&lt;p&gt;A continuación, tenemos que resolver las dependencias, que requieren Stable Diffusion. El primer paquete añade la funcionalidad de entorno virtual Python:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install python3-venv&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;El segundo paquete añade una implementación de la función &lt;b translate=&quot;no&quot;&gt;malloc()&lt;/b&gt; del lenguaje de programación C personalizada por Google. Evita el error &lt;b translate=&quot;no&quot;&gt;“Cannot locate TCMalloc”&lt;/b&gt; y mejora el uso de la memoria de la CPU.&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt install -y --no-install-recommends google-perftools&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Por último, reinicia el servidor de nuevo:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Difusión estable automática 1111: instalar script&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/812/original/sh_stable_diffusion_webui_2.png?1712212341&quot; alt=&quot;Stable Diffusion WebUI install script&quot;&gt;
&lt;p&gt;La forma más fácil de instalar Stable Diffusion con WebUI es utilizando el script preconfigurado escrito por el usuario de GitHub &lt;a href=&quot;https://github.com/AUTOMATIC1111&quot;&gt;AUTOMATIC1111&lt;/a&gt;. Este script descarga e instala estas dos partes mientras resuelve todas las dependencias necesarias.&lt;/p&gt;
&lt;p&gt;Vamos a descargar el script:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;wget https://raw.githubusercontent.com/AUTOMATIC1111/stable-diffusion-webui/master/webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A continuación, démosle acceso a los datos de modificación y ejecutémoslo como un programa:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;chmod a+x webui.sh&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Ejecuta el script descargado:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Este proceso puede tardar un par de minutos. Todo está listo para crear imágenes perfectas con Stable Diffusion.&lt;/p&gt;
&lt;h3&gt;Solución de problemas&lt;/h3&gt;
&lt;p&gt;Si se encuentra con el error &quot;Torch is not able to use GPU&quot;, puede solucionarlo reinstalando a través de apt:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo apt -y install nvidia-driver-535&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Es necesario reiniciar el sistema operativo para habilitar el controlador:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;sudo shutdown -r now&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Generar&lt;/h2&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/813/original/sh_stable_diffusion_webui_3.png?1712212549
&quot; alt=&quot;Stable Diffusion WebUI run script&quot;&gt;
&lt;p&gt;El script de instalación &lt;b translate=&quot;no&quot;&gt;./webui.sh&lt;/b&gt; tiene otra función. Sirve simultáneamente a la parte del servidor de Stable Diffusion y WebUI. Sin embargo, si lo utiliza sin argumentos, el servidor estará disponible como un demonio local en &lt;a href=&quot;http://127.0.0.1:7860&quot;&gt;http://127.0.0.1:7860.&lt;/a&gt; Esto puede resolverse de dos maneras: reenviando puertos a través de un túnel SSH o permitiendo conexiones desde IPs externas.&lt;/p&gt;
&lt;p&gt;La segunda forma es más simple: simplemente añade la opción &lt;b translate=&quot;no&quot;&gt;--listen&lt;/b&gt; y podrás conectarte a la interfaz web en &lt;b translate=&quot;no&quot;&gt;http://[YOUR_LEADERGPU_SERVER_IP_ADDRESS]:7860&lt;/b&gt;. Sin embargo, esto es completamente inseguro, ya que cualquier usuario de Internet tendrá acceso. Para evitar el uso no autorizado, añada la opción &lt;b translate=&quot;no&quot;&gt;--gradio-auth&lt;/b&gt; junto al nombre de usuario y la contraseña, separados por dos puntos:&lt;/p&gt;
&lt;pre translate=&quot;no&quot;&gt;&lt;code translate=&quot;no&quot; class=&quot;bash-user&quot;&gt;./webui.sh --listen --gradio-auth user:password&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Esto añade una página de login a tu instancia WebUI.El script descargará los modelos básicos y las dependencias requeridas por primera vez:&lt;/p&gt;
&lt;img src=&quot;https://assets.getwildcard.com/system/images/imgs/000/000/814/original/sh_stable_diffusion_webui_4.png?1712212654&quot; alt=&quot;Stable Diffusion WebUI Gradio&quot;&gt;
&lt;p&gt;Puedes disfrutar del resultado. Sólo tienes que introducir algunos datos, separarlos por comas, y hacer clic en el botón Generar. Después de unos segundos, se mostrará una imagen generada por la red neuronal.&lt;/p&gt;
&lt;h2&gt;Conclusión&lt;/h2&gt;
&lt;p&gt;Hemos recorrido todo el camino desde un servidor LeaderGPU vacío con sólo un sistema operativo preinstalado hasta una instancia lista con Stable Diffusion y una interfaz WebUI. La próxima vez, aprenderemos más sobre el ajuste del rendimiento del software y cómo mejorar adecuadamente tu instancia de Stable Diffusion con nuevas versiones de controladores y paquetes.&lt;/p&gt;
&lt;p&gt;Vea también:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/566-modelos-de-stable-diffusion-personalizaci-n-y-opciones&quot;&gt;Modelos de Stable Diffusion: personalización y opciones&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/598-easy-diffusion-ui&quot;&gt;Interfaz de usuario de Easy Diffusion&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/595-pytorch-para-linux&quot;&gt;PyTorch para Linux&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;a href=&quot;https://www.leadergpu.es/articles/596-pytorch-para-windows&quot;&gt;PyTorch para Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <enclosure url="https://assets.getwildcard.com/system/images/imgs/000/000/810/original/il_stable_diffusion_webui.png?1712212156"
        length="0"
        type="image/jpeg"/>
      <pubDate>Mon, 25 Nov 2024 13:24:45 +0100</pubDate>
      <guid isPermaLink="false">565</guid>
      <dc:date>2024-11-25 13:24:45 +0100</dc:date>
    </item>
  </channel>
</rss>