<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>CUDA on KnightLi Blog</title>
        <link>https://knightli.com/es/tags/cuda/</link>
        <description>Recent content in CUDA on KnightLi Blog</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>es</language>
        <lastBuildDate>Sun, 26 Apr 2026 19:35:57 +0800</lastBuildDate><atom:link href="https://knightli.com/es/tags/cuda/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Actualizaciones de hardware y GPU Ubuntu 26.04 LTS: CUDA, ROCm, DPC&#43;&#43; y más cambios de plataforma</title>
        <link>https://knightli.com/es/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</link>
        <pubDate>Sun, 26 Apr 2026 19:35:57 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/26/ubuntu-26-04-lts-gpu-hardware-ai-updates/</guid>
        <description>&lt;p&gt;Si el artículo anterior funcionó como una descripción general centrada en el escritorio de &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt;, es mejor leer este como su seguimiento del hardware y la computación. En este ciclo &lt;code&gt;26.04&lt;/code&gt;, Ubuntu impulsó una serie de cambios en IA, computación GPU y compatibilidad de plataforma en el archivo principal o alcance de soporte formal.&lt;/p&gt;
&lt;p&gt;La versión corta es esta: la parte más importante de esta ronda no son solo las actualizaciones de escritorio y kernel, sino que &lt;strong&gt;Ubuntu está incorporando pilas de computación de GPU Intel, NVIDIA y AMD a la distribución de una manera más sistemática&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;1-intel-dpc-y-componentes-relacionados-ahora-están-en-ubuntu-archive&#34;&gt;1. Intel DPC++ y componentes relacionados ahora están en Ubuntu Archive
&lt;/h2&gt;&lt;p&gt;A partir de &lt;code&gt;26.04&lt;/code&gt;, el compilador de código abierto &lt;code&gt;oneAPI DPC++&lt;/code&gt; de Intel está disponible directamente desde Ubuntu Archive para crear código &lt;code&gt;SYCL&lt;/code&gt;. Su tiempo de ejecución también incluye adaptadores para GPU Intel.&lt;/p&gt;
&lt;p&gt;Ahora también están disponibles dos componentes relacionados en los repositorios de Ubuntu:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;oneDPL&lt;/code&gt;, la biblioteca DPC++, que proporciona API de desarrollador de mayor productividad&lt;/li&gt;
&lt;li&gt;&lt;code&gt;oneDNN&lt;/code&gt;, creado con &lt;code&gt;dpclang-6&lt;/code&gt;, que puede ejecutarse en GPU Intel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso significa que si ya está trabajando con &lt;code&gt;SYCL&lt;/code&gt;, computación heterogénea o cargas de trabajo de IA en GPU Intel, Ubuntu ahora ofrece una ruta más directa en lugar de obligarlo a mantener una pila externa separada para todo.&lt;/p&gt;
&lt;p&gt;Ubuntu también señala un requisito práctico: los usuarios deben estar en el grupo &amp;ldquo;renderizar&amp;rdquo; para utilizar realmente estas capacidades relacionadas con la GPU Intel.&lt;/p&gt;
&lt;h2 id=&#34;2-el-kit-de-herramientas-nvidia-cuda-ahora-se-puede-instalar-directamente-con-apt&#34;&gt;2. El kit de herramientas NVIDIA CUDA ahora se puede instalar directamente con &lt;code&gt;apt&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Para muchos desarrolladores y operadores, este puede ser uno de los cambios más útiles de inmediato en las notas.&lt;/p&gt;
&lt;p&gt;A partir de &lt;code&gt;26.04&lt;/code&gt;, el &lt;code&gt;kit de herramientas NVIDIA CUDA&lt;/code&gt; ahora se puede instalar directamente desde Ubuntu Archive:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt install cuda-toolkit
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;El valor aquí es mayor que simplemente guardar algunos pasos de configuración.&lt;/p&gt;
&lt;p&gt;Para los desarrolladores que envían software en Ubuntu, este nuevo modelo significa que pueden simplemente declarar una dependencia del &amp;ldquo;tiempo de ejecución CUDA&amp;rdquo;, mientras que Ubuntu gestiona la instalación y la compatibilidad a nivel de distribución. Eso hace que CUDA se sienta más como una capacidad nativa del sistema en Ubuntu, en lugar de una capa de software adicional que siempre debe mantenerse por separado.&lt;/p&gt;
&lt;h2 id=&#34;3-amd-rocm-710-ya-está-en-universe&#34;&gt;3. AMD ROCm 7.1.0 ya está en Universe
&lt;/h2&gt;&lt;p&gt;Por el lado de AMD, Ubuntu Universe ahora incluye &lt;code&gt;ROCm 7.1.0&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Estas bibliotecas proporcionan principalmente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;infraestructura backend para entrenamiento e inferencia de IA en GPU AMD&lt;/li&gt;
&lt;li&gt;fundamentos de software para el aprendizaje automático y la informática de alto rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Canonical también señala que los componentes relacionados con ROCm se prueban continuamente en su canal de CI/CD. Más allá de &amp;ldquo;autopkgtests&amp;rdquo;, eso incluye varias aplicaciones de espacio de usuario como:&lt;/p&gt;
&lt;p&gt;-&lt;code&gt;llama.cpp&lt;/code&gt;
-&lt;code&gt;pytorch&lt;/code&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;licuadora&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Servidor de limonada&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ese detalle es importante, porque muestra que Ubuntu no se limita a colocar paquetes en el archivo. Está validando ROCm como una pila de software mantenible.&lt;/p&gt;
&lt;h2 id=&#34;4-la-historia-más-importante-es-que-los-tres-ecosistemas-de-gpu-están-aterrizando&#34;&gt;4. La historia más importante es que los tres ecosistemas de GPU están aterrizando
&lt;/h2&gt;&lt;p&gt;Es más fácil ver la dirección de &lt;code&gt;26.04&lt;/code&gt; cuando &lt;code&gt;DPC++&lt;/code&gt;, &lt;code&gt;CUDA&lt;/code&gt; y &lt;code&gt;ROCm&lt;/code&gt; se ven juntos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Intel: incorporando componentes &lt;code&gt;SYCL&lt;/code&gt;/&lt;code&gt;oneAPI&lt;/code&gt; a repositorios oficiales&lt;/li&gt;
&lt;li&gt;NVIDIA: dando al &lt;code&gt;kit de herramientas CUDA&lt;/code&gt; una ruta de instalación administrada por distribución&lt;/li&gt;
&lt;li&gt;AMD: lanzando &lt;code&gt;ROCm 7.1.0&lt;/code&gt; en Universe con pruebas en curso&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si trabaja con este tipo de cargas de trabajo en Ubuntu, esta versión probablemente le resultará más relevante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;inferencia local LLM&lt;/li&gt;
&lt;li&gt;Entrenamiento o ajuste acelerado por GPU&lt;/li&gt;
&lt;li&gt;Blender, informática científica y HPC.&lt;/li&gt;
&lt;li&gt;entornos de desarrollo que necesitan moverse a través de diferentes plataformas GPU&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En otras palabras, Ubuntu ya no es sólo &amp;ldquo;un sistema donde puedes instalar un controlador de GPU&amp;rdquo;. Está comenzando a tener una &lt;strong&gt;pila de software de espacio de usuario más completa para computación con IA y GPU&lt;/strong&gt;.&lt;/p&gt;
&lt;h2 id=&#34;5-nvidia-dynamic-boost-está-habilitado-de-forma-predeterminada&#34;&gt;5. NVIDIA Dynamic Boost está habilitado de forma predeterminada
&lt;/h2&gt;&lt;p&gt;Desde el &amp;ldquo;25.04&amp;rdquo;, &amp;ldquo;Dynamic Boost&amp;rdquo; se ha habilitado de forma predeterminada en las computadoras portátiles NVIDIA compatibles.&lt;/p&gt;
&lt;p&gt;La idea es sencilla: dependiendo de la carga del sistema, la energía se puede cambiar dinámicamente entre la CPU y la GPU. En escenarios de juegos, eso generalmente significa darle más potencia a la GPU cuando sea necesario para extraer más rendimiento.&lt;/p&gt;
&lt;p&gt;Sólo se aplica bajo dos condiciones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la computadora portátil está conectada a la alimentación de CA&lt;/li&gt;
&lt;li&gt;la carga de la GPU es lo suficientemente alta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No se activa mientras el sistema está funcionando con batería.&lt;/p&gt;
&lt;h2 id=&#34;6-la-compatibilidad-con-las-nuevas-gpu-intel-integradas-y-discretas-sigue-avanzando&#34;&gt;6. La compatibilidad con las nuevas GPU Intel integradas y discretas sigue avanzando
&lt;/h2&gt;&lt;p&gt;Ubuntu también continúa ampliando el soporte para nuevas GPU Intel, que incluyen:&lt;/p&gt;
&lt;p&gt;Integrado:&lt;/p&gt;
&lt;p&gt;-&lt;code&gt;Intel Core Ultra Xe2&lt;/code&gt;
-&lt;code&gt;Intel Core Ultra Xe3&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Discreto:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Intel Arco 5 B570&lt;/code&gt;
-&lt;code&gt;Intel Arc 5 B580&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B50&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B60&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B65&lt;/code&gt;
-&lt;code&gt;Intel Arc Pro B70&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ubuntu también destaca varias características que ya están disponibles en estos dispositivos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;rendimiento mejorado del trazado de rayos de GPU y CPU a través de Intel Embree, beneficiando aplicaciones como &lt;code&gt;Blender 4.2+&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;codificación de vídeo por hardware para &lt;code&gt;AVC&lt;/code&gt;, &lt;code&gt;JPEG&lt;/code&gt;, &lt;code&gt;HEVC&lt;/code&gt; y &lt;code&gt;AV1&lt;/code&gt; en dispositivos &amp;ldquo;Battlemage&amp;rdquo;&lt;/li&gt;
&lt;li&gt;una nueva optimización &lt;code&gt;CCS&lt;/code&gt; en Intel Compute Runtime&lt;/li&gt;
&lt;li&gt;soporte de depuración habilitado para GPU Intel Xe&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si está viendo las versiones de seguimiento, &amp;ldquo;25.10&amp;rdquo; también continúa incorporando más capacidades, que incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;soporte inicial para la plataforma de cliente de próxima generación de Intel con nombre en código &lt;code&gt;Panther Lake&lt;/code&gt; hasta &lt;code&gt;Linux kernel 6.17&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;IOMMU mejorado, subsistema PCIe y compatibilidad con múltiples GPU&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Mesa 25.2.3&lt;/code&gt; habilitando &lt;code&gt;VK_KHR_shader_bfloat16&lt;/code&gt; para Battlemage y Panther Lake&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-media-driver 25.3.0&lt;/code&gt; agrega soporte de decodificación Panther Lake y codificación &lt;code&gt;VP9&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;intel-compute-runtime 25.31&lt;/code&gt; ajusta el comportamiento de asignación de eventos de memoria del dispositivo local y del grupo &lt;code&gt;USM&lt;/code&gt; de nivel cero&lt;/li&gt;
&lt;li&gt;&lt;code&gt;level-zero 1.24&lt;/code&gt; y &lt;code&gt;level-zero-raytracing 1.1.0&lt;/code&gt; brindan compatibilidad con especificaciones más amplias y extensión RTAS&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;7-suspender-y-reanudar-también-es-más-estable-en-las-computadoras-de-escritorio-nvidia&#34;&gt;7. Suspender y reanudar también es más estable en las computadoras de escritorio Nvidia
&lt;/h2&gt;&lt;p&gt;A partir de &lt;code&gt;25.10&lt;/code&gt;, Ubuntu habilita el soporte de suspensión y reanudación en el controlador propietario &lt;code&gt;Nvidia&lt;/code&gt; para reducir la corrupción y la congelación al activar un sistema de escritorio.&lt;/p&gt;
&lt;p&gt;Este no es el tipo de cambio más visible, pero es muy importante en el uso diario, especialmente en computadoras de escritorio que permanecen encendidas durante períodos prolongados y que se suspenden y reanudan con frecuencia.&lt;/p&gt;
&lt;h2 id=&#34;8-arm-raspberry-pi-risc-v-e-ibm-z-también-reciben-cambios-más-difíciles-a-nivel-de-plataforma&#34;&gt;8. ARM, Raspberry Pi, RISC-V e IBM Z también reciben cambios más difíciles a nivel de plataforma
&lt;/h2&gt;&lt;p&gt;Más allá de la pila de software de GPU, las notas de la versión también incluyen varios cambios a nivel de plataforma que vale la pena mencionar por separado.&lt;/p&gt;
&lt;h3 id=&#34;plataformas-de-escritorio-arm64&#34;&gt;Plataformas de escritorio ARM64
&lt;/h3&gt;&lt;p&gt;A partir de &lt;code&gt;25.10&lt;/code&gt;, el kernel &lt;code&gt;linux-generic&lt;/code&gt; &lt;code&gt;ARM64&lt;/code&gt; proporciona una compatibilidad de escritorio más amplia para las plataformas de escritorio ARM64 que arrancan a través de &lt;code&gt;UEFI&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;un-nuevo-diseño-de-arranque-de-raspberry-pi&#34;&gt;Un nuevo diseño de arranque de Raspberry Pi
&lt;/h3&gt;&lt;p&gt;Un cambio introducido en &lt;code&gt;25.10&lt;/code&gt; y refinado en &lt;code&gt;26.04&lt;/code&gt; es un nuevo diseño de partición de arranque para sistemas Raspberry Pi.
Su objetivo es mejorar la confiabilidad del arranque: los recursos de arranque recién escritos primero se &amp;ldquo;prueban&amp;rdquo; antes de confirmarlos como el nuevo conjunto &amp;ldquo;bueno conocido&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Los requisitos de fecha del firmware son la parte que la mayoría de los usuarios querrán recordar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Pi 3 / 3+ / CM3+ / Zero 2W&lt;/code&gt;: no se requiere ninguna acción adicional, el firmware de arranque está en la propia imagen&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 4/400/CM4&lt;/code&gt;: el firmware de arranque no debe tener una fecha anterior a &lt;code&gt;2022-11-25&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Pi 5/500/CM5&lt;/code&gt;: el firmware de arranque no debe tener una fecha anterior a &lt;code&gt;2025-02-11&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Puedes comprobarlo con:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si el firmware es demasiado antiguo y está utilizando &amp;ldquo;Ubuntu 24.04 LTS&amp;rdquo; o más reciente, puede actualizarlo de esta manera:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo rpi-eeprom-update -a
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo reboot
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;las-imágenes-de-escritorio-de-raspberry-pi-ahora-usan-escritorio-mínimo&#34;&gt;Las imágenes de escritorio de Raspberry Pi ahora usan escritorio mínimo
&lt;/h3&gt;&lt;p&gt;Desde &amp;ldquo;25.10&amp;rdquo;, las imágenes de escritorio de Ubuntu para Raspberry Pi se basan en &amp;ldquo;desktop-minimal&amp;rdquo; en lugar de en la semilla de &amp;ldquo;escritorio&amp;rdquo; completa.&lt;/p&gt;
&lt;p&gt;Ubuntu ofrece aquí un beneficio muy concreto: el conjunto de aplicaciones predeterminado es más pequeño, lo que ahorra alrededor de &amp;ldquo;777 MB&amp;rdquo; en la imagen sin comprimir y en los sistemas instalados.&lt;/p&gt;
&lt;p&gt;Si desea eliminar esa aplicación predeterminada configurada de forma masiva después de la actualización, puede usar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo apt purge ubuntu-desktop --autoremove
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si desea conservar algunas de esas aplicaciones, primero márquelas como instaladas manualmente con &amp;ldquo;apt&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;el-intercambio-en-raspberry-pi-ahora-lo-maneja-cloud-init&#34;&gt;El intercambio en Raspberry Pi ahora lo maneja cloud-init
&lt;/h3&gt;&lt;p&gt;Desde &amp;ldquo;25.10&amp;rdquo;, la creación de archivos de intercambio en imágenes de escritorio de Raspberry Pi se maneja mediante &amp;ldquo;cloud-init&amp;rdquo;.&lt;br&gt;
Si desea personalizar el tamaño del intercambio antes del primer inicio, puede editar los &amp;ldquo;datos de usuario&amp;rdquo; directamente en la partición de inicio.&lt;/p&gt;
&lt;h3 id=&#34;los-requisitos-de-risc-v-han-aumentado&#34;&gt;Los requisitos de RISC-V han aumentado
&lt;/h3&gt;&lt;p&gt;A partir de &lt;code&gt;25.10&lt;/code&gt;, la compilación &lt;code&gt;RISC-V&lt;/code&gt; de &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt; requiere hardware que implemente el &lt;code&gt;perfil ISA RVA23S64&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Los sistemas que no cumplan con ese requisito ya no podrán ejecutar &amp;ldquo;Ubuntu 26.04 LTS&amp;rdquo;. Si todavía tiene placas basadas en núcleos de procesador &amp;ldquo;RVA20&amp;rdquo; anteriores, debe permanecer en la línea de soporte proporcionada por &amp;ldquo;Ubuntu 24.04 LTS&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Según Ubuntu, a partir de &amp;ldquo;abril de 2026&amp;rdquo;, todavía no hay hardware &amp;ldquo;RVA23S64&amp;rdquo; real disponible. Por lo tanto, la única plataforma actualmente compatible es efectivamente un entorno virtualizado &amp;ldquo;QEMU&amp;rdquo; configurado con &amp;ldquo;-cpu rva23s64&amp;rdquo;.&lt;/p&gt;
&lt;h3 id=&#34;ibm-z-ahora-requiere-z15-como-mínimo&#34;&gt;IBM Z ahora requiere z15 como mínimo
&lt;/h3&gt;&lt;p&gt;A partir de &lt;code&gt;26.04&lt;/code&gt;, el requisito mínimo para la arquitectura &lt;code&gt;s390x&lt;/code&gt; pasó a &lt;code&gt;z15&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Eso significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;z14&lt;/code&gt; / &lt;code&gt;LinuxONE II&lt;/code&gt; y sistemas más antiguos ya no pueden instalar &lt;code&gt;Ubuntu 26.04 LTS&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;z15&lt;/code&gt; / &lt;code&gt;LinuxONE III&lt;/code&gt; y los sistemas más nuevos deberían tener un mejor rendimiento&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;9-quién-debería-leer-esto-primero&#34;&gt;9. ¿Quién debería leer esto primero?
&lt;/h2&gt;&lt;p&gt;Este artículo es más útil que la descripción general del escritorio si se encuentra en alguno de estos casos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;usas Ubuntu para &lt;code&gt;CUDA&lt;/code&gt;, &lt;code&gt;ROCm&lt;/code&gt;, &lt;code&gt;SYCL&lt;/code&gt; o inferencia de IA local&lt;/li&gt;
&lt;li&gt;realiza trabajos de desarrollo o computación en GPU Intel, NVIDIA o AMD&lt;/li&gt;
&lt;li&gt;mantiene Raspberry Pi, ARM64, RISC-V, IBM Z u otras plataformas x86 no estándar&lt;/li&gt;
&lt;li&gt;eres especialmente sensible a la disponibilidad del repositorio, el comportamiento del controlador, los tiempos de ejecución y los requisitos de la plataforma después de una actualización&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;10-comida-para-llevar-de-una-línea&#34;&gt;10. Comida para llevar de una línea
&lt;/h2&gt;&lt;p&gt;El punto clave de &amp;ldquo;Ubuntu 26.04 LTS&amp;rdquo; en el lado del hardware y la pila de IA no es que un proveedor de GPU haya obtenido una actualización destacada. Es que &lt;strong&gt;DPC++ de Intel, CUDA de NVIDIA y ROCm de AMD están ingresando al ecosistema Ubuntu de una manera más oficial, en repositorio y mantenible&lt;/strong&gt;.
Si solía pensar en Ubuntu como &amp;ldquo;primero el sistema, luego yo mismo ensamblo el entorno de GPU&amp;rdquo;, &lt;code&gt;26.04&lt;/code&gt; comienza a parecerse más a una distribución que está dispuesta a transportar activamente IA y cargas de trabajo informáticas heterogéneas.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Qu茅 es NVIDIA nvbandwidth: c贸mo usar esta herramienta de prueba de ancho de banda de GPU</title>
        <link>https://knightli.com/es/2026/04/24/nvidia-nvbandwidth-guide/</link>
        <pubDate>Fri, 24 Apr 2026 14:41:35 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/24/nvidia-nvbandwidth-guide/</guid>
        <description>&lt;p&gt;Si recientemente has estado solucionando problemas del rendimiento de la interconexión entre múltiples &lt;code&gt;NVIDIA GPU&lt;/code&gt;s, o si deseas verificar el ancho de banda real entre &lt;code&gt;PCIe&lt;/code&gt;, &lt;code&gt;NVLink&lt;/code&gt;, la memoria host y la VRAM, &lt;code&gt;NVIDIA/nvbandwidth&lt;/code&gt; es una herramienta pequeña que vale la pena conocer.&lt;/p&gt;
&lt;p&gt;No es una utilidad de benchmark general, ni es un comando oculto dentro de un framework de modelo grande. Es una herramienta de código abierto de NVIDIA diseñada específicamente para medir el ancho de banda y la latencia para copias de memoria relacionadas con la GPU. En lugar de solo mirar el ancho de banda teórico, &lt;code&gt;nvbandwidth&lt;/code&gt; es mejor para responder a una pregunta práctica: &lt;strong&gt;¿cuánto ancho de banda puede entregar esta máquina y sus interconexiones GPU actuales en este momento?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;1-qué-hace-nvbandwidth&#34;&gt;1. ¿Qué hace &lt;code&gt;nvbandwidth&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;Según el README oficial, &lt;code&gt;nvbandwidth&lt;/code&gt; es una herramienta de línea de comandos para medir el ancho de banda en las &lt;code&gt;NVIDIA GPU&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Se enfoca principalmente en el rendimiento de transferencia a través de diferentes patrones de &lt;code&gt;memcpy&lt;/code&gt;, tales como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GPU -&amp;gt; GPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CPU -&amp;gt; GPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GPU -&amp;gt; CPU&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Transferencias entre GPUs a través de múltiples nodos&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estas pruebas son especialmente útiles en escenarios como:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Solucionar problemas de cuellos de botella de interconexión en el entrenamiento o la inferencia multi-GPU&lt;/li&gt;
&lt;li&gt;Verificar el comportamiento real de enlaces como &lt;code&gt;NVLink&lt;/code&gt;, &lt;code&gt;PCIe&lt;/code&gt; y &lt;code&gt;C2C&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Comparar diferencias de transferencia entre servidores, topologías, drivers o versiones de CUDA&lt;/li&gt;
&lt;li&gt;Realizar validación de hardware de referencia antes del despliegue del clúster&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En resumen, &lt;code&gt;nvbandwidth&lt;/code&gt; no se trata del rendimiento del modelo (model throughput). Se trata de la capacidad de bajo nivel para mover datos.&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;2-no-produce-solo-una-puntuación-simple&#34;&gt;2. No produce solo una puntuación simple
&lt;/h2&gt;&lt;p&gt;Mucha gente considera una prueba de ancho de banda como algo que termina con un solo número, pero &lt;code&gt;nvbandwidth&lt;/code&gt; proporciona una salida más detallada que eso.&lt;/p&gt;
&lt;p&gt;Informa los resultados como matrices para cada tipo de prueba. Por ejemplo, en una prueba como &lt;code&gt;device_to_device_memcpy_write_ce&lt;/code&gt;, muestra el ancho de banda entre cada par de GPUs por fila y columna. Eso significa que puedes ver más que solo una estimación aproximada de la velocidad a nivel de todo el sistema. También puedes detectar:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Qué pares de GPUs son especialmente rápidos&lt;/li&gt;
&lt;li&gt;Qué rutas están claramente limitadas por &lt;code&gt;PCIe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Si ciertos pares de GPUs muestran un ancho de banda anormalmente bajo&lt;/li&gt;
&lt;li&gt;Si la topología multi-GPU coincide con tus expectativas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si estás trabajando con un servidor de 8 GPUs, una plataforma dual-socket o un sistema multinodo, esta salida de estilo matriz suele ser más útil que un único número promedio.&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;3-cómo-entender-las-copias-ce-y-sm&#34;&gt;3. Cómo entender las copias &lt;code&gt;CE&lt;/code&gt; y &lt;code&gt;SM&lt;/code&gt;
&lt;/h2&gt;&lt;p&gt;La documentación oficial divide las pruebas en dos categorías:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CE&lt;/code&gt;: transferencias del motor de copia basadas en las APIs &lt;code&gt;memcpy&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;SM&lt;/code&gt;: transferencias basadas en el kernel&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos dos tipos de resultados no están garantizados a coincidir exactamente, porque representan diferentes rutas de copia. Si principalmente quieres entender el comportamiento regular de transferencia de dispositivo a dispositivo, generalmente mirarás &lt;code&gt;CE&lt;/code&gt; primero. Si quieres estudiar los detalles de ejecución más de cerca, entonces &lt;code&gt;SM&lt;/code&gt; también vale la pena revisar.&lt;/p&gt;
&lt;p&gt;El README también explica que los resultados de ancho de banda utilizan la mediana a través de múltiples ejecuciones de prueba por defecto. Las versiones más nuevas incluyen además estadísticas de variabilidad, lo que facilita juzgar cuán estables son los números.&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;4-qué-entorno-requiere&#34;&gt;4. ¿Qué entorno requiere
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; no es una utilidad binaria pura que simplemente descargues y ejecutes. Espera un entorno de desarrollo CUDA estándar.&lt;/p&gt;
&lt;p&gt;El README actual enumera estos requisitos básicos:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA Toolkit 11.x&lt;/code&gt; o más reciente&lt;/li&gt;
&lt;li&gt;Un compilador con soporte para &lt;code&gt;C++17&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CMake 3.20+&lt;/code&gt;, siendo &lt;code&gt;3.24+&lt;/code&gt; recomendado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Boost program_options&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Un dispositivo &lt;code&gt;CUDA&lt;/code&gt; utilizable y un controlador compatible&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Los requisitos son más altos si deseas la versión multinode. El README actual indica explícitamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las compilaciones multinode requieren &lt;code&gt;CUDA Toolkit 12.3&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El controlador debe ser &lt;code&gt;550&lt;/code&gt; o más reciente&lt;/li&gt;
&lt;li&gt;Se requiere &lt;code&gt;MPI&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;El servicio &lt;code&gt;nvidia-imex&lt;/code&gt; debe estar configurado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por lo tanto, esta es mucho más una herramienta de ingeniería para servidores y clusters de GPU en Linux que algo destinado a un uso de escritorio casual.&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;5-cómo-construir-y-ejecutar-la-versión-de-nodo-único&#34;&gt;5. Cómo construir y ejecutar la versión de nodo único
&lt;/h2&gt;&lt;p&gt;El proceso de construcción de nodo único es sencillo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;En &lt;code&gt;Ubuntu&lt;/code&gt; / &lt;code&gt;Debian&lt;/code&gt;, el proyecto también proporciona un script &lt;code&gt;debian_install.sh&lt;/code&gt; que instala dependencias comunes y construye el proyecto.&lt;/p&gt;
&lt;p&gt;Después de construir, puedes verificar primero la salida de ayuda:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth -h
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Algunas opciones comúnmente utilizadas incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-l&lt;/code&gt;: listar pruebas disponibles&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-t&lt;/code&gt;: ejecutar una prueba específica por nombre o índice&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-p&lt;/code&gt;: ejecutar pruebas por prefijo&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-b&lt;/code&gt;: establecer el tamaño del búfer de memcpy, predeterminado &lt;code&gt;512 MiB&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-i&lt;/code&gt;: establecer el número de iteraciones de benchmark&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-j&lt;/code&gt;: salida &lt;code&gt;JSON&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-H&lt;/code&gt;: habilitar huge pages para la asignación de memoria del host&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si solo deseas ejecutar la suite de pruebas predeterminada una vez, usa:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si solo quieres probar un elemento específico, como una copia de dispositivo a dispositivo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;./nvbandwidth -t device_to_device_memcpy_read_ce
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;6-el-soporte-multinodo-es-una-de-sus-características-más-destacadas&#34;&gt;6. El soporte multinodo es una de sus características más destacadas
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; no es solo para pruebas multi-GPU en un solo nodo. También admite escenarios multinodo.&lt;/p&gt;
&lt;p&gt;Según el README, la compilación multinodo se realiza de esta manera:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cmake -DMULTINODE&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; .
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;make
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;En tiempo de ejecución, normalmente se utiliza junto con &lt;code&gt;mpirun&lt;/code&gt;, con un proceso lanzado por GPU. La documentación también requiere que todos los ranks participantes pertenezcan al mismo clúster multinodo, y recomienda ejecutar las pruebas principalmente con el prefijo &lt;code&gt;multinode&lt;/code&gt; bajo MPI.&lt;/p&gt;
&lt;p&gt;Esto acerca su posicionamiento a la informática de alto rendimiento (high-performance computing) y a los sistemas GPU grandes que a las comprobaciones básicas de una estación de trabajo.&lt;/p&gt;
&lt;p&gt;Si estás trabajando con implementaciones multinodo de &lt;code&gt;NVLink&lt;/code&gt; o plataformas más complejas como &lt;code&gt;GB200&lt;/code&gt; / &lt;code&gt;Grace Hopper&lt;/code&gt;, el valor de &lt;code&gt;nvbandwidth&lt;/code&gt; es mucho mayor de lo que sería en una configuración típica de GPU de consumo.&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;7-qué-cambió-en-v09&#34;&gt;7. Qué cambió en v0.9
&lt;/h2&gt;&lt;p&gt;A partir del &lt;strong&gt;24 de abril de 2026&lt;/strong&gt;, la página de GitHub Releases muestra que la última versión de &lt;code&gt;nvbandwidth&lt;/code&gt; es &lt;strong&gt;&lt;code&gt;v0.9&lt;/code&gt;&lt;/strong&gt;, lanzada el &lt;strong&gt;8 de abril de 2026&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Las actualizaciones más destacadas en este lanzamiento incluyen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Se agregaron estadísticas de variabilidad a la salida de ancho de banda&lt;/li&gt;
&lt;li&gt;Se agregó soporte para páginas grandes (huge page) para la memoria anfitriona (excluyendo Windows)&lt;/li&gt;
&lt;li&gt;Se agregó muestreo de pares (pair sampling) para pruebas de dispositivo a dispositivo&lt;/li&gt;
&lt;li&gt;Se agregó una guía de solución de problemas&lt;/li&gt;
&lt;li&gt;Se unificaron los caminos de ejecución de nodo único y multinodo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;También vale la pena señalar dos cambios orientados a la ingeniería:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Mejora en la detección de la arquitectura CUDA sin depender tanto del acceso directo a la GPU&lt;/li&gt;
&lt;li&gt;Se eliminó el soporte para Volta (&lt;code&gt;sm_70&lt;/code&gt; / &lt;code&gt;sm_72&lt;/code&gt;) en entornos de CUDA Toolkit 13.0+&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por lo tanto, si solo mirabas las versiones anteriores, &lt;code&gt;v0.9&lt;/code&gt; ya no es solo un probador básico de ancho de banda. Claramente se está moviendo hacia una mejor automatización, solución de problemas y validación de sistemas a gran escala.&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;8-cuándo-es-una-buena-opción&#34;&gt;8. ¿Cuándo es una buena opción?
&lt;/h2&gt;&lt;p&gt;``nvbandwidth` es especialmente adecuado cuando:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Quieres verificar el ancho de banda de interconexión real entre múltiples &lt;code&gt;NVIDIA GPU&lt;/code&gt;s&lt;/li&gt;
&lt;li&gt;Sospechas que una GPU está instalada en una ranura &lt;code&gt;PCIe&lt;/code&gt; con ancho de banda limitado&lt;/li&gt;
&lt;li&gt;Quieres comparar rutas &lt;code&gt;NVLink&lt;/code&gt; frente a rutas no &lt;code&gt;NVLink&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Estás desplegando un clúster de GPU multinode y necesitas validar los enlaces&lt;/li&gt;
&lt;li&gt;Quieres los resultados de las pruebas en &lt;code&gt;JSON&lt;/code&gt; para pipelines de automatización&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Pero si tu objetivo es solo responder preguntas como &amp;ldquo;¿qué tan rápido es el entrenamiento?&amp;rdquo; o &amp;ldquo;¿cuántos tokens por segundo puede alcanzar la inferencia?&amp;rdquo;, esta herramienta no es la respuesta completa.
En ese caso, todavía necesitas pruebas a nivel de carga de trabajo (workload-level testing) con tu framework de entrenamiento, motor de inferencia o aplicación real.&lt;/p&gt;
&lt;p&gt;false&lt;/p&gt;
&lt;h2 id=&#34;9-cómo-pensar-sobre-su-valor&#34;&gt;9. Cómo pensar sobre su valor
&lt;/h2&gt;&lt;p&gt;Muchos problemas de rendimiento de GPU no son causados realmente por una capacidad de cómputo insuficiente. Ocurren porque la ruta de datos no está funcionando como se espera.&lt;/p&gt;
&lt;p&gt;Por ejemplo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Las GPUs no están utilizando la ruta de interconexión prevista&lt;/li&gt;
&lt;li&gt;El acceso Cross-NUMA está reduciendo la velocidad&lt;/li&gt;
&lt;li&gt;Ciertos pares de GPU tienen un ancho de banda anormal&lt;/li&gt;
&lt;li&gt;La comunicación multinode está solo parcialmente configurada&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Estos problemas a menudo son difíciles de diagnosticar si solo se observa &lt;code&gt;nvidia-smi&lt;/code&gt; o el rendimiento del modelo. Una herramienta de nivel más bajo y orientada a matrices, como &lt;code&gt;nvbandwidth&lt;/code&gt;, es útil precisamente porque expone lo que está sucediendo en la capa de interconexión.&lt;/p&gt;
&lt;p&gt;Así que una forma sencilla de pensarlo es: &lt;strong&gt;&lt;code&gt;nvbandwidth&lt;/code&gt; es una herramienta de verificación de salud en línea de comandos para el ancho de banda en sistemas NVIDIA GPU.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;enlaces-relacionados&#34;&gt;Enlaces relacionados
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Proyecto GitHub: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvbandwidth&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvbandwidth&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Lanzamientos: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvbandwidth/releases&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvbandwidth/releases&lt;/a&gt;
false&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Ranking de rendimiento GPU en llama.cpp: cómo leer los scoreboards CUDA, ROCm y Vulkan con pp512 / tg128 / FA</title>
        <link>https://knightli.com/es/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</link>
        <pubDate>Thu, 23 Apr 2026 10:22:04 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/23/llama-cpp-gpu-benchmark-cuda-rocm-vulkan-scoreboard/</guid>
        <description>&lt;p&gt;Los scoreboards de &lt;code&gt;llama.cpp&lt;/code&gt; son muy útiles, pero también son fáciles de malinterpretar si solo miras una cifra. En esas tablas suelen aparecer &lt;code&gt;CUDA&lt;/code&gt;, &lt;code&gt;ROCm&lt;/code&gt;, &lt;code&gt;Vulkan&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt;, &lt;code&gt;FA&lt;/code&gt; y &lt;code&gt;t/s&lt;/code&gt;, y cada uno describe una dimensión diferente del benchmark.&lt;/p&gt;
&lt;p&gt;Este artículo resume cómo leer esas tablas y qué conclusiones prácticas conviene sacar antes de comparar GPUs.&lt;/p&gt;
&lt;h2 id=&#34;entender-primero-las-métricas&#34;&gt;Entender primero las métricas
&lt;/h2&gt;&lt;h3 id=&#34;qué-es-q4_0&#34;&gt;Qué es Q4_0
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; es un formato de cuantización de 4 bits. No significa que el modelo sea más fuerte. Significa que el modelo es más pequeño, usa menos VRAM y cabe en más dispositivos.&lt;/p&gt;
&lt;p&gt;La mayoría de estos scoreboards estandarizan sobre &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt; para que la comparación entre GPUs sea más sencilla.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-pp512&#34;&gt;Qué es pp512
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; suele significar &lt;code&gt;prompt processing 512 tokens&lt;/code&gt;, es decir, el throughput al procesar 512 tokens de entrada.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp&lt;/code&gt; = prompt processing&lt;/li&gt;
&lt;li&gt;&lt;code&gt;512&lt;/code&gt; = la entrada tiene 512 tokens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto se acerca más a la velocidad de ingestión del prompt, por eso suele ser mucho más alto que la velocidad de generación.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-tg128&#34;&gt;Qué es tg128
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; suele significar &lt;code&gt;text generation 128 tokens&lt;/code&gt;, es decir, la velocidad al generar 128 tokens de forma continua.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;tg&lt;/code&gt; = text generation&lt;/li&gt;
&lt;li&gt;&lt;code&gt;128&lt;/code&gt; = generar 128 tokens seguidos&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt; = tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta métrica suele estar más cerca de la velocidad que el usuario percibe en uso interactivo.&lt;/p&gt;
&lt;h3 id=&#34;qué-es-fa&#34;&gt;Qué es FA
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;FA&lt;/code&gt; significa &lt;code&gt;Flash Attention&lt;/code&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;with FA&lt;/code&gt; significa que Flash Attention está activado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt; significa que Flash Attention está desactivado&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En muchas GPUs, FA mejora &lt;code&gt;pp512&lt;/code&gt; con más claridad que &lt;code&gt;tg128&lt;/code&gt;, pero la ganancia no es idéntica entre backends, drivers y arquitecturas GPU.&lt;/p&gt;
&lt;h3 id=&#34;cómo-leer-ts&#34;&gt;Cómo leer t/s
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;t/s&lt;/code&gt; significa &lt;code&gt;tokens per second&lt;/code&gt;. La regla clave es comparar el mismo tipo de prueba con los mismos ajustes.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No compares &lt;code&gt;pp512&lt;/code&gt; y &lt;code&gt;tg128&lt;/code&gt; como si fueran lo mismo.&lt;/li&gt;
&lt;li&gt;No mezcles resultados &lt;code&gt;no FA&lt;/code&gt; con &lt;code&gt;with FA&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;No asumas que CUDA, ROCm y Vulkan son directamente intercambiables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;conclusiones-rápidas&#34;&gt;Conclusiones rápidas
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA sigue siendo la ruta más fuerte en conjunto para benchmarks GPU de &lt;code&gt;llama.cpp&lt;/code&gt;, especialmente en GPUs Nvidia de gama alta.&lt;/li&gt;
&lt;li&gt;ROCm ya ofrece resultados fuertes en GPUs AMD de gama alta y aceleradores Instinct.&lt;/li&gt;
&lt;li&gt;Vulkan tiene la cobertura de hardware más amplia, incluyendo Nvidia, AMD, Intel, GPUs antiguas y algunos setups Apple / Asahi.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; se acerca más a la velocidad percibida en uso diario, mientras &lt;code&gt;pp512&lt;/code&gt; es mejor para juzgar throughput de prompt.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;cómo-usar-las-tablas&#34;&gt;Cómo usar las tablas
&lt;/h2&gt;&lt;h3 id=&#34;1-decide-si-te-importa-más-tg128-o-pp512&#34;&gt;1. Decide si te importa más tg128 o pp512
&lt;/h3&gt;&lt;p&gt;Para chat y uso interactivo, &lt;code&gt;tg128&lt;/code&gt; suele importar más. Para prompts largos, batch processing o workloads de ingestión, &lt;code&gt;pp512&lt;/code&gt; pesa más.&lt;/p&gt;
&lt;h3 id=&#34;2-compara-el-backend-que-realmente-usas&#34;&gt;2. Compara el backend que realmente usas
&lt;/h3&gt;&lt;p&gt;Usuarios Nvidia deberían priorizar CUDA. Usuarios AMD deberían comparar primero ROCm y Vulkan. Si necesitas compatibilidad amplia o hardware mixto, presta atención a Vulkan.&lt;/p&gt;
&lt;h3 id=&#34;3-mira-fa-al-final&#34;&gt;3. Mira FA al final
&lt;/h3&gt;&lt;p&gt;En muchas GPUs, activar FA mejora más &lt;code&gt;pp512&lt;/code&gt; que &lt;code&gt;tg128&lt;/code&gt;, así que una sola cifra destacada puede ser engañosa.&lt;/p&gt;
&lt;h3 id=&#34;4-no-compares-generaciones-solo-por-memoria&#34;&gt;4. No compares generaciones solo por memoria
&lt;/h3&gt;&lt;p&gt;Una GPU con más VRAM no siempre gana en &lt;code&gt;tg128&lt;/code&gt;. La generación token a token puede depender mucho de ancho de banda, caché, backend, kernel y optimizaciones del runtime.&lt;/p&gt;
&lt;h3 id=&#34;5-usa-las-tablas-como-orientación-no-como-garantía&#34;&gt;5. Usa las tablas como orientación, no como garantía
&lt;/h3&gt;&lt;p&gt;Los scoreboards son aportes comunitarios. Pueden variar por commit, driver, sistema operativo, flags de compilación, versión de &lt;code&gt;llama.cpp&lt;/code&gt;, temperatura y configuración de energía.&lt;/p&gt;
&lt;h2 id=&#34;qué-muestran-en-general-los-scoreboards&#34;&gt;Qué muestran en general los scoreboards
&lt;/h2&gt;&lt;p&gt;En las tablas CUDA, las GPUs Nvidia modernas de gama alta, como RTX 5090, RTX PRO 6000 Blackwell, H100, A100, RTX 4090 y RTX 5080, ocupan los rangos superiores. El patrón general confirma que CUDA sigue siendo la ruta más madura para Nvidia.&lt;/p&gt;
&lt;p&gt;En las tablas ROCm / HIP, aceleradores como MI300X y tarjetas AMD de gama alta como RX 7900 XTX muestran resultados fuertes. Esto confirma que ROCm ya es una ruta seria, aunque la experiencia puede depender mucho de soporte de driver y plataforma.&lt;/p&gt;
&lt;p&gt;En las tablas Vulkan, el valor principal es la amplitud. Aparecen Nvidia, AMD, Intel, Apple vía MoltenVK / Asahi, GPUs antiguas y GPUs integradas. Vulkan no siempre es la ruta más rápida, pero suele ser la más flexible para comparar hardware diverso.&lt;/p&gt;
&lt;h2 id=&#34;resumen-en-una-frase&#34;&gt;Resumen en una frase
&lt;/h2&gt;&lt;p&gt;En benchmarks de &lt;code&gt;llama.cpp&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;FA&lt;/code&gt; y &lt;code&gt;CUDA&lt;/code&gt; / &lt;code&gt;ROCm&lt;/code&gt; / &lt;code&gt;Vulkan&lt;/code&gt; describen dimensiones distintas. Cuando entiendes el contexto del benchmark, las tablas se vuelven mucho más fáciles de leer.&lt;/p&gt;
&lt;h2 id=&#34;fuentes&#34;&gt;Fuentes
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;CUDA discussion #15013: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15013&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15013&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Apple Silicon discussion #4167: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/4167&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/4167&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;ROCm discussion #15021: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/15021&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/15021&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Vulkan discussion #10879: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ggml-org/llama.cpp/discussions/10879&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ggml-org/llama.cpp/discussions/10879&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Qué significan realmente las métricas comunes de benchmark GPU: FA, pp512, tg128 y Q4_0</title>
        <link>https://knightli.com/es/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</link>
        <pubDate>Thu, 23 Apr 2026 00:15:00 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/23/how-to-read-llm-cuda-scoreboard-fa-pp512-tg128-q4-0/</guid>
        <description>&lt;p&gt;En cuanto empiezas a mirar benchmarks de LLM locales o inferencia GPU, aparece una pila de abreviaturas: &lt;code&gt;FA&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt;, &lt;code&gt;tg128&lt;/code&gt; y &lt;code&gt;Q4_0&lt;/code&gt;. Todas parecen métricas de rendimiento, pero sin contexto pueden ser sorprendentemente difíciles de interpretar.&lt;/p&gt;
&lt;p&gt;Por ejemplo, puedes ver una línea como:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Y justo debajo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pp512 t/s
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;tg128 t/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si no desarmas estos términos, cuesta entender qué mide realmente el benchmark o cómo comparar los resultados de dos GPUs distintas.&lt;/p&gt;
&lt;p&gt;Este artículo no trata sobre qué GPU conviene comprar. Trata específicamente de explicar las métricas más comunes que aparecen en benchmarks de inferencia GPU.&lt;/p&gt;
&lt;h2 id=&#34;primero-qué-dice-realmente-la-línea-del-título&#34;&gt;Primero, qué dice realmente la línea del título
&lt;/h2&gt;&lt;p&gt;Una línea como &lt;code&gt;CUDA Scoreboard for Llama 2 7B, Q4_0 (no FA)&lt;/code&gt; ya te cuenta casi todo el setup de prueba.&lt;/p&gt;
&lt;p&gt;Como mínimo, contiene cuatro capas de información:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CUDA&lt;/code&gt;: el benchmark corre por la ruta NVIDIA CUDA&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Llama 2 7B&lt;/code&gt;: el modelo probado es la versión 7B de &lt;code&gt;Llama 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;: el modelo usa un formato cuantizado de 4 bits&lt;/li&gt;
&lt;li&gt;&lt;code&gt;no FA&lt;/code&gt;: &lt;code&gt;Flash Attention&lt;/code&gt; estuvo desactivado en esta prueba&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;En términos prácticos, este título suele significar:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Un benchmark de un modelo grande cuantizado corriendo en una GPU NVIDIA, medido bajo una ruta de inferencia concreta.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-fa-flash-attention&#34;&gt;Qué significa FA: Flash Attention
&lt;/h2&gt;&lt;p&gt;Aquí, &lt;code&gt;FA&lt;/code&gt; significa &lt;code&gt;Flash Attention&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Es una de las técnicas de aceleración más importantes en entrenamiento e inferencia de modelos grandes, principalmente porque optimiza cómo se calcula la atención. En modelos Transformer, la atención ya es una de las partes más caras y más intensivas en ancho de banda de memoria.&lt;/p&gt;
&lt;p&gt;Una implementación tradicional de atención suele sufrir:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;lecturas y escrituras frecuentes de memoria&lt;/li&gt;
&lt;li&gt;muchos resultados intermedios&lt;/li&gt;
&lt;li&gt;movimiento repetido entre VRAM y caché on-chip&lt;/li&gt;
&lt;li&gt;overhead que crece rápido al aumentar el contexto&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Lo que hace &lt;code&gt;Flash Attention&lt;/code&gt;, en términos simples, es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;reorganizar el orden de cálculo&lt;/li&gt;
&lt;li&gt;reducir cuántas veces los resultados intermedios vuelven a VRAM&lt;/li&gt;
&lt;li&gt;mantener más trabajo dentro de caché rápida&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso le da tres ventajas típicas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;es más rápida&lt;/li&gt;
&lt;li&gt;ahorra memoria&lt;/li&gt;
&lt;li&gt;es matemáticamente equivalente a la atención estándar, no un atajo de menor precisión&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Por eso muchos frameworks modernos de inferencia y entrenamiento la tratan como una optimización clave.&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-no-fa&#34;&gt;Qué significa no FA
&lt;/h2&gt;&lt;p&gt;Si &lt;code&gt;FA&lt;/code&gt; significa &lt;code&gt;Flash Attention&lt;/code&gt;, &lt;code&gt;no FA&lt;/code&gt; simplemente significa que no se activó &lt;code&gt;Flash Attention&lt;/code&gt; para esa prueba.&lt;/p&gt;
&lt;p&gt;Es decir, el benchmark se midió usando una implementación de atención más tradicional.&lt;/p&gt;
&lt;p&gt;Las tablas suelen marcar explícitamente &lt;code&gt;no FA&lt;/code&gt; por varias razones:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;mantener una línea base de comparación&lt;/li&gt;
&lt;li&gt;soportar hardware o software donde &lt;code&gt;FA&lt;/code&gt; no está disponible&lt;/li&gt;
&lt;li&gt;evitar mezclar resultados de condiciones de optimización distintas&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así que cuando veas &lt;code&gt;no FA&lt;/code&gt;, no lo leas como &amp;ldquo;esta GPU es débil&amp;rdquo;. Una lectura más precisa es:&lt;/p&gt;
&lt;p&gt;&amp;ldquo;Esta puntuación se midió sin Flash Attention activado.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-q4_0-un-formato-de-cuantización&#34;&gt;Qué significa Q4_0: un formato de cuantización
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Q4_0&lt;/code&gt; se refiere a un formato de cuantización de 4 bits.&lt;/p&gt;
&lt;p&gt;Los pesos del modelo original normalmente no se guardan con tan baja precisión. La cuantización comprime pesos de mayor precisión en una representación de menos bits para que el modelo sea más fácil de ejecutar en GPUs de consumo.&lt;/p&gt;
&lt;p&gt;Una forma aproximada de pensarlo:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q&lt;/code&gt;: Quantization&lt;/li&gt;
&lt;li&gt;&lt;code&gt;4&lt;/code&gt;: 4-bit&lt;/li&gt;
&lt;li&gt;&lt;code&gt;_0&lt;/code&gt;: identificador de un esquema concreto de cuantización&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Su importancia práctica es directa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;menor tamaño de modelo&lt;/li&gt;
&lt;li&gt;menos requisitos de VRAM&lt;/li&gt;
&lt;li&gt;más probabilidad de caber en hardware de consumo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Así que &lt;code&gt;Llama 2 7B, Q4_0&lt;/code&gt; no significa solo &amp;ldquo;un modelo 7B normal&amp;rdquo;. Significa &amp;ldquo;un modelo 7B ya comprimido con un formato de cuantización de 4 bits.&amp;rdquo;&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-pp512-ts&#34;&gt;Qué significa pp512 t/s
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; suele significar:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Prompt Processing 512 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mide qué tan rápido el modelo procesa el prompt de entrada, normalmente en &lt;code&gt;t/s&lt;/code&gt;, es decir, &lt;code&gt;tokens per second&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Aquí, &lt;code&gt;512&lt;/code&gt; significa que la longitud de prompt usada en la prueba fue de &lt;code&gt;512 tokens&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Esta métrica no mide velocidad de salida. Mide qué tan rápido el modelo codifica y calcula sobre la entrada antes de empezar a responder. Puedes pensarla como la velocidad de la etapa &amp;ldquo;leer primero el prompt&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;Una propiedad importante de esta etapa es que normalmente es mucho más paralelizable.&lt;/p&gt;
&lt;p&gt;Como la secuencia de entrada puede procesarse en batches, la GPU puede mantener sus unidades de cómputo muy ocupadas. Por eso los números de &lt;code&gt;pp512&lt;/code&gt; pueden verse extremadamente altos.&lt;/p&gt;
&lt;p&gt;Si ves algo como:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pp512 ~= 14000 t/s
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;no hay razón para preocuparse. Mide throughput de procesamiento de prompt, no velocidad de generación token por token.&lt;/p&gt;
&lt;h2 id=&#34;qué-significa-tg128-ts&#34;&gt;Qué significa tg128 t/s
&lt;/h2&gt;&lt;p&gt;&lt;code&gt;tg128&lt;/code&gt; suele significar:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Text Generation 128 tokens&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Mide la velocidad media de generar &lt;code&gt;128 tokens&lt;/code&gt;, también en &lt;code&gt;t/s&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Esta métrica está mucho más cerca de lo que la gente quiere decir intuitivamente cuando pregunta si un modelo se siente rápido, porque mide directamente la etapa de salida.&lt;/p&gt;
&lt;p&gt;La diferencia principal frente a &lt;code&gt;pp512&lt;/code&gt; es que la generación de texto suele ser autoregresiva.&lt;/p&gt;
&lt;p&gt;Eso significa:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;el modelo debe generar el primer token&lt;/li&gt;
&lt;li&gt;luego usarlo para generar el segundo&lt;/li&gt;
&lt;li&gt;y seguir así&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esta etapa no puede paralelizarse como el procesamiento de prompt, así que naturalmente es mucho más lenta.&lt;/p&gt;
&lt;p&gt;Por eso es normal ver:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt; en decenas de miles de &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt; solo en cientos de &lt;code&gt;t/s&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es un error de benchmark. Son workloads fundamentalmente distintos.&lt;/p&gt;
&lt;h2 id=&#34;por-qué-pp512-y-tg128-difieren-tanto&#34;&gt;Por qué pp512 y tg128 difieren tanto
&lt;/h2&gt;&lt;p&gt;Esta suele ser la primera confusión al leer un scoreboard.&lt;/p&gt;
&lt;p&gt;La explicación corta:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; mide algo más cercano al throughput paralelo, mientras &lt;code&gt;tg128&lt;/code&gt; mide capacidad de generación token por token.&lt;/p&gt;
&lt;p&gt;Más detalladamente:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;la etapa de entrada es más fácil de paralelizar&lt;/li&gt;
&lt;li&gt;la etapa de salida depende de generación secuencial&lt;/li&gt;
&lt;li&gt;la generación suele ser más sensible a ancho de banda y caché&lt;/li&gt;
&lt;li&gt;por eso la generación es mucho más lenta que el procesamiento de prompt&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Esto también explica un patrón interesante:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;una GPU puede ser más fuerte en &lt;code&gt;pp512&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;otra puede terminar ligeramente más rápida en &lt;code&gt;tg128&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;No es contradictorio. Una métrica se inclina más hacia throughput de cómputo pico; la otra refleja comportamiento de memoria y latencia en la ruta de generación.&lt;/p&gt;
&lt;h2 id=&#34;cómo-pensar-sobre-ts&#34;&gt;Cómo pensar sobre t/s
&lt;/h2&gt;&lt;p&gt;Aquí, &lt;code&gt;t/s&lt;/code&gt; significa &lt;code&gt;tokens per second&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Indica cuántos tokens el modelo puede procesar o generar por segundo.&lt;/p&gt;
&lt;p&gt;Pero hay una salvedad importante: un &lt;code&gt;token&lt;/code&gt; no equivale exactamente a un carácter o una palabra. Es la unidad producida por el tokenizer del modelo, y su longitud real puede variar mucho entre modelos e idiomas.&lt;/p&gt;
&lt;p&gt;En la práctica, &lt;code&gt;t/s&lt;/code&gt; sirve sobre todo para:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;comparar GPUs con el mismo modelo&lt;/li&gt;
&lt;li&gt;comparar ajustes distintos en el mismo entorno&lt;/li&gt;
&lt;li&gt;comparar un framework antes y después de activar una optimización concreta&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Es mucho menos fiable como métrica absoluta universal entre modelos, frameworks y tokenizers distintos.&lt;/p&gt;
&lt;h2 id=&#34;en-qué-fijarse-primero-al-leer-un-scoreboard&#34;&gt;En qué fijarse primero al leer un scoreboard
&lt;/h2&gt;&lt;p&gt;Si no quieres enterrarte bajo abreviaturas, empieza por estas preguntas.&lt;/p&gt;
&lt;h3 id=&#34;1-qué-modelo-se-está-probando&#34;&gt;1. Qué modelo se está probando
&lt;/h3&gt;&lt;p&gt;¿Es &lt;code&gt;Llama 2 7B&lt;/code&gt;? ¿Es la misma variante cuantizada, como &lt;code&gt;Q4_0&lt;/code&gt;? Si cambia el modelo o el formato de cuantización, comparar directamente pierde sentido.&lt;/p&gt;
&lt;h3 id=&#34;2-si-las-optimizaciones-clave-están-activadas&#34;&gt;2. Si las optimizaciones clave están activadas
&lt;/h3&gt;&lt;p&gt;El ejemplo más común es &lt;code&gt;FA&lt;/code&gt;. Si un benchmark usa &lt;code&gt;Flash Attention&lt;/code&gt; y otro no, las puntuaciones no son directamente comparables.&lt;/p&gt;
&lt;h3 id=&#34;3-si-la-métrica-mide-entrada-o-salida&#34;&gt;3. Si la métrica mide entrada o salida
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;pp512&lt;/code&gt; y &lt;code&gt;tg128&lt;/code&gt; miden etapas distintas. Una se acerca a velocidad de lectura de prompt; la otra a velocidad de generación de respuesta.&lt;/p&gt;
&lt;h3 id=&#34;4-si-te-importa-throughput-o-sensación-de-uso&#34;&gt;4. Si te importa throughput o sensación de uso
&lt;/h3&gt;&lt;p&gt;Si te importa procesar rápido un prompt largo, &lt;code&gt;pp512&lt;/code&gt; pesa más. Si te importa qué tan rápido se siente el modelo al responder, &lt;code&gt;tg128&lt;/code&gt; suele estar más cerca de la experiencia real.&lt;/p&gt;
&lt;h2 id=&#34;una-forma-práctica-de-recordarlo&#34;&gt;Una forma práctica de recordarlo
&lt;/h2&gt;&lt;p&gt;Puedes resumirlo así:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Q4_0&lt;/code&gt;: el modelo está comprimido en una versión cuantizada de 4 bits&lt;/li&gt;
&lt;li&gt;&lt;code&gt;FA&lt;/code&gt;: si Flash Attention está activado&lt;/li&gt;
&lt;li&gt;&lt;code&gt;pp512&lt;/code&gt;: velocidad para procesar una entrada de 512 tokens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tg128&lt;/code&gt;: velocidad para generar una salida de 128 tokens&lt;/li&gt;
&lt;li&gt;&lt;code&gt;t/s&lt;/code&gt;: unidad de velocidad, tokens por segundo&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Con esos cinco puntos claros, es mucho más fácil juzgar qué mide realmente un CUDA Scoreboard.&lt;/p&gt;
&lt;h2 id=&#34;cierre&#34;&gt;Cierre
&lt;/h2&gt;&lt;p&gt;Las tablas de benchmark GPU a menudo parecen más complicadas de lo que son, no porque las métricas sean misteriosas, sino porque identidad del modelo, cuantización, flags de optimización y etapas distintas de throughput se comprimen en abreviaturas cortas.&lt;/p&gt;
&lt;p&gt;Cuando desarmas términos como &lt;code&gt;FA&lt;/code&gt;, &lt;code&gt;Q4_0&lt;/code&gt;, &lt;code&gt;pp512&lt;/code&gt; y &lt;code&gt;tg128&lt;/code&gt;, estas tablas se vuelven mucho más legibles.&lt;/p&gt;
&lt;p&gt;Lo importante no es recordar solo una puntuación, sino saber:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;de qué configuración de modelo viene&lt;/li&gt;
&lt;li&gt;si las optimizaciones clave estaban activadas&lt;/li&gt;
&lt;li&gt;si midió entrada o salida&lt;/li&gt;
&lt;li&gt;si refleja throughput de cómputo o algo más cercano a la sensación real de generación&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Eso facilita juzgar qué significan realmente los resultados.&lt;/p&gt;
</description>
        </item>
        <item>
        <title>Notas de Ollama Multi-GPU: agrupación de VRAM, selección de GPU y malentendidos comunes</title>
        <link>https://knightli.com/es/2026/04/19/ollama-multiple-gpu-notes/</link>
        <pubDate>Sun, 19 Apr 2026 00:18:00 +0800</pubDate>
        
        <guid>https://knightli.com/es/2026/04/19/ollama-multiple-gpu-notes/</guid>
        <description>&lt;p&gt;Al ejecutar la inferencia local con Ollama, surgen rápidamente algunas preguntas: si ya tengo una GPU y mi placa base todavía tiene ranuras PCIe vacías, ¿ayuda agregar más GPU? ¿Es necesario que las GPU sean idénticas? ¿Se puede combinar VRAM? ¿Acelerará la inferencia como un marco de entrenamiento de múltiples GPU?&lt;/p&gt;
&lt;p&gt;Esta nota resume cómo se comporta Ollama con múltiples GPU. La versión corta:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ollama admite múltiples GPU.&lt;/li&gt;
&lt;li&gt;El valor principal de varias GPU generalmente es adaptar modelos más grandes a la VRAM disponible, sin obtener un escalado lineal de tokens.&lt;/li&gt;
&lt;li&gt;De forma predeterminada, si un modelo cabe completamente en una GPU, Ollama tiende a cargarlo en una sola GPU.&lt;/li&gt;
&lt;li&gt;Si un modelo no cabe en una GPU, Ollama puede distribuirlo entre las GPU disponibles.&lt;/li&gt;
&lt;li&gt;Ollama puede ver modelos de GPU mixtos, pero el rendimiento y la ubicación pueden no ser los ideales.&lt;/li&gt;
&lt;li&gt;SLI/NVLink no es necesario para el uso de múltiples GPU.&lt;/li&gt;
&lt;li&gt;Para limitar qué GPU puede usar Ollama, use &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt;, &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; o &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;comportamiento-oficial-gpu-única-primero-gpu-múltiple-cuando-sea-necesario&#34;&gt;Comportamiento oficial: GPU única primero, GPU múltiple cuando sea necesario
&lt;/h2&gt;&lt;p&gt;Las preguntas frecuentes de Ollama describen directamente la lógica de carga de múltiples GPU: al cargar un nuevo modelo, Ollama estima la VRAM requerida y la compara con la memoria de GPU disponible actualmente. Si el modelo cabe completamente en una GPU, carga el modelo en esa GPU. Si no cabe en una sola GPU, el modelo se distribuye entre todas las GPU disponibles.&lt;/p&gt;
&lt;p&gt;La razón es el rendimiento. Mantener un modelo en una GPU generalmente reduce las transferencias de datos a través del bus PCIe durante la inferencia, por lo que suele ser más rápido.&lt;/p&gt;
&lt;p&gt;Así que no pienses en Ollama multi-GPU como si &amp;ldquo;más tarjetas significan automáticamente varias veces más rápido&amp;rdquo;. Un modelo más preciso es:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;El modelo pequeño cabe en una GPU: normalmente funciona con una GPU.&lt;/li&gt;
&lt;li&gt;El modelo grande no cabe en una GPU: se divide en varias GPU.&lt;/li&gt;
&lt;li&gt;Todavía no hay suficiente VRAM: parte del modelo vuelve a la memoria del sistema y la velocidad cae notablemente.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Utilice este comando para ver dónde está cargado el modelo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;La columna &amp;ldquo;PROCESADOR&amp;rdquo; puede mostrar algo como:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;100% GPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;48%/52% CPU/GPU
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;100% CPU
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si ve &amp;ldquo;48%/52% CPU/GPU&amp;rdquo;, parte del modelo ya está en la memoria del sistema. En ese caso, agregar más memoria GPU o usar una GPU con VRAM más grande suele ser más útil que seguir dependiendo de la CPU/RAM.&lt;/p&gt;
&lt;h2 id=&#34;multi-gpu-no-es-un-simple-apilamiento-informático&#34;&gt;Multi-GPU no es un simple apilamiento informático
&lt;/h2&gt;&lt;p&gt;La inferencia LLM local no es lo mismo que SLI en los juegos. Con Ollama en múltiples GPU, el patrón común es que se colocan diferentes capas o tensores en diferentes dispositivos. Esto puede hacer que un modelo más grande encaje en la VRAM disponible combinada, pero es posible que aún sea necesario que los datos se muevan entre dispositivos durante la inferencia.&lt;/p&gt;
&lt;p&gt;Por lo tanto, los beneficios de múltiples GPU generalmente se dividen en dos categorías:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Beneficio de VRAM: los modelos más grandes encajan más fácilmente, o menos parte del modelo recurre a CPU/RAM.&lt;/li&gt;
&lt;li&gt;Beneficio de rendimiento: generalmente es más obvio cuando un modelo no cabría en una GPU o se extendería en gran medida a la CPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Si un modelo 8B o 14B ya cabe por completo en un solo RTX 3090, forzarlo en dos GPU puede no ser más rápido. Incluso puede ralentizarse debido a la sobrecarga de transferencia entre GPU. La estrategia predeterminada de Ollama de &amp;ldquo;usar una GPU cuando sea necesario&amp;rdquo; evita ese costo innecesario de PCIe.&lt;/p&gt;
&lt;h2 id=&#34;no-se-requiere-sli-o-nvlink&#34;&gt;No se requiere SLI o NVLink
&lt;/h2&gt;&lt;p&gt;Ollama multi-GPU no depende de SLI. Se pueden programar varias GPU PCIe normales siempre que el controlador y Ollama puedan detectarlas.
NVLink o un ancho de banda PCIe superior puede ayudar en algunos escenarios entre GPU, pero no es un requisito. Muchos servidores y estaciones de trabajo GPU usados ​​pueden ejecutar varias GPU a través de PCIe normal.&lt;/p&gt;
&lt;p&gt;A lo que debes prestar atención es al ancho de banda PCIe. La diferencia entre &lt;code&gt;x1&lt;/code&gt;, &lt;code&gt;x4&lt;/code&gt;, &lt;code&gt;x8&lt;/code&gt; y &lt;code&gt;x16&lt;/code&gt; afecta la rapidez con la que se carga un modelo en VRAM. Si cambia con frecuencia de modelo grande, el ancho de banda PCIe se vuelve más importante. Después de cargar un modelo, PCIe generalmente importa menos durante la generación, pero la división entre GPU aún puede agregar gastos generales.&lt;/p&gt;
&lt;p&gt;Reglas más seguras:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Prefiere las bandas x16/x8 a las bandas x1 estilo minería.&lt;/li&gt;
&lt;li&gt;El ancho de banda PCIe es más importante cuando se cambian modelos grandes con frecuencia.&lt;/li&gt;
&lt;li&gt;Si un modelo permanece residente en VRAM durante mucho tiempo, el ancho de banda PCIe es menos visible.&lt;/li&gt;
&lt;li&gt;Para máquinas con múltiples GPU, verifique la topología PCIe de la placa base y los carriles conectados a la CPU.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;limite-las-gpu-nvidia-que-utiliza-ollama&#34;&gt;Limite las GPU NVIDIA que utiliza Ollama
&lt;/h2&gt;&lt;p&gt;En sistemas NVIDIA con múltiples GPU, use &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt; para controlar qué GPU puede ver Ollama.&lt;/p&gt;
&lt;p&gt;Ejecución temporal:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Utilice sólo la segunda GPU:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Obligar a Ollama a no utilizar GPU NVIDIA:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los documentos oficiales señalan que los ID numéricos pueden cambiar de orden, por lo que los UUID de GPU son más confiables. Primero verifique los UUID:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;nvidia-smi -L
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Salida de ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU 0: NVIDIA GeForce RTX 3090 (UUID: GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx)
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;GPU 1: NVIDIA GeForce RTX 3070 (UUID: GPU-yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy)
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Luego especifique el UUID:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;GPU-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si Ollama está instalado como un servicio systemd de Linux, coloque la variable en el entorno del servicio:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl edit ollama.service
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Agregar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;CUDA_VISIBLE_DEVICES=0,1&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Recargar y reiniciar:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl daemon-reload
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;sudo systemctl restart ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h2 id=&#34;selección-de-dispositivos-amd-y-vulkan&#34;&gt;Selección de dispositivos AMD y Vulkan
&lt;/h2&gt;&lt;p&gt;Para AMD ROCm, use &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; para controlar las GPU visibles:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ROCR_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Para obligar a Ollama a no usar GPU ROCm, use una identificación no válida:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;ROCR_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Los documentos de GPU de Ollama también mencionan el soporte experimental de Vulkan. Para GPU Vulkan, use &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt;:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_VULKAN&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; &lt;span class=&#34;nv&#34;&gt;GGML_VK_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;0&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si los dispositivos Vulkan causan problemas, desactívelos:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;GGML_VK_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;-1 ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Es más probable que las configuraciones de múltiples GPU de AMD tengan problemas de compatibilidad con el controlador, la versión ROCm y la versión GFX. Los documentos oficiales también mencionan los requisitos del controlador ROCm de Linux y las anulaciones de compatibilidad, como &lt;code&gt;HSA_OVERRIDE_GFX_VERSION&lt;/code&gt;. Si combina diferentes generaciones de GPU AMD, primero verifique que cada tarjeta funcione por sí sola antes de probar con varias GPU.&lt;/p&gt;
&lt;h2 id=&#34;exponer-varias-gpu-en-docker&#34;&gt;Exponer varias GPU en Docker
&lt;/h2&gt;&lt;p&gt;Si ejecuta Ollama en Docker, las configuraciones de NVIDIA generalmente requieren &lt;code&gt;nvidia-container-toolkit&lt;/code&gt; y luego &lt;code&gt;--gpus&lt;/code&gt; para exponer los dispositivos.&lt;/p&gt;
&lt;p&gt;Exponga todas las GPU:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Exponer GPU específicas:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus &lt;span class=&#34;s1&#34;&gt;&amp;#39;&amp;#34;device=0,1&amp;#34;&amp;#39;&lt;/span&gt; &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;También puedes combinar esto con variables de entorno:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker run -d &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --gpus&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;all &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -e &lt;span class=&#34;nv&#34;&gt;CUDA_VISIBLE_DEVICES&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;0,1 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -v ollama:/root/.ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  -p 11434:11434 &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  --name ollama &lt;span class=&#34;se&#34;&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  ollama/ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si &lt;code&gt;nvidia-smi&lt;/code&gt; no puede ver las GPU dentro del contenedor, Ollama tampoco puede usarlas. Primero solucione los problemas de transferencia de GPU de Docker y luego Ollama.&lt;/p&gt;
&lt;h2 id=&#34;qué-es-ollama_sched_spread&#34;&gt;¿Qué es &lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt;?
&lt;/h2&gt;&lt;p&gt;En algunas discusiones sobre configuración de múltiples GPU, es posible que vea &lt;code&gt;OLLAMA_SCHED_SPREAD=1&lt;/code&gt; o &lt;code&gt;OLLAMA_SCHED_SPREAD=true&lt;/code&gt;. Está relacionado con el programador de Ollama y se usa a menudo cuando las personas desean que los modelos o solicitudes se distribuyan más ampliamente entre las GPU.&lt;/p&gt;
&lt;p&gt;Ejemplo:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nv&#34;&gt;OLLAMA_SCHED_SPREAD&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; ollama serve
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;O con systemd:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-ini&#34; data-lang=&#34;ini&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;[Service]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;na&#34;&gt;Environment&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;=&lt;/span&gt;&lt;span class=&#34;s&#34;&gt;&amp;#34;OLLAMA_SCHED_SPREAD=true&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Pero no es un cambio mágico. Habilitarlo no implica un escalado lineal de tokens y aún puede ejecutarse en OOM cuando se cargan varios modelos, las estimaciones de VRAM son ajustadas, la longitud del contexto aumenta o la caché KV se expande. El comportamiento principal de las preguntas frecuentes todavía se aplica: si una GPU puede contener completamente el modelo, una GPU suele ser más eficiente; Si una GPU no puede contenerlo, entonces resulta útil la división entre varias GPU.
Trate &lt;code&gt;OLLAMA_SCHED_SPREAD&lt;/code&gt; como un experimento de programación avanzada, no como una configuración multi-GPU requerida. Primero, comprenda el comportamiento predeterminado y luego ajústelo según &lt;code&gt;ollama ps&lt;/code&gt;, registros y &lt;code&gt;nvidia-smi&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id=&#34;cómo-comprobar-si-se-están-utilizando-varias-gpu&#34;&gt;Cómo comprobar si se están utilizando varias GPU
&lt;/h2&gt;&lt;p&gt;Comandos útiles:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;ollama ps
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;watch -n 0.5 nvidia-smi
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Ver los registros del servicio de Ollama:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;journalctl -u ollama -f
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Si usa Docker:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;docker logs -f ollama
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Esté atento a:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Si Ollama descubre GPU compatibles.&lt;/li&gt;
&lt;li&gt;Si el modelo muestra &amp;ldquo;100% GPU&amp;rdquo; o una división CPU/GPU.&lt;/li&gt;
&lt;li&gt;Si cada GPU tiene VRAM asignada.&lt;/li&gt;
&lt;li&gt;Si la VRAM crece en varias GPU durante la carga del modelo.&lt;/li&gt;
&lt;li&gt;Si los tokens de generación mejoran en comparación con el desbordamiento de CPU/RAM.&lt;/li&gt;
&lt;li&gt;Si la descarga de OOM o de modelos ocurre con frecuencia.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;La utilización de la GPU por sí sola puede resultar engañosa. La inferencia LLM no siempre mantiene las GPU completamente cargadas, especialmente con varias GPU, tamaños de lote bajos, contextos pequeños, CPU lentas o enlaces PCIe lentos.&lt;/p&gt;
&lt;h2 id=&#34;malentendidos-comunes&#34;&gt;Malentendidos comunes
&lt;/h2&gt;&lt;h3 id=&#34;malentendido-1-dos-gpu-de-12-gb-equivalen-a-una-gpu-de-24-gb&#34;&gt;Malentendido 1: Dos GPU de 12 GB equivalen a una GPU de 24 GB
&lt;/h3&gt;&lt;p&gt;No exactamente. Varias GPU pueden colocar un modelo en varios dispositivos, pero el acceso entre dispositivos tiene una sobrecarga. Resuelve el problema de &amp;ldquo;no encaja&amp;rdquo;, pero no es equivalente a la velocidad y estabilidad de una GPU de gran VRAM.&lt;/p&gt;
&lt;h3 id=&#34;malentendido-2-no-se-pueden-mezclar-diferentes-modelos-de-gpu&#34;&gt;Malentendido 2: No se pueden mezclar diferentes modelos de GPU
&lt;/h3&gt;&lt;p&gt;No necesariamente. Si el controlador, la capacidad informática y las bibliotecas de tiempo de ejecución son compatibles con las tarjetas, Ollama puede ver varias GPU. Pero las configuraciones mixtas suelen estar limitadas por una tarjeta más lenta, una VRAM más pequeña y una topología PCIe. La configuración más predecible sigue siendo el mismo modelo, el mismo tamaño de VRAM y controladores de la misma generación con buen soporte.&lt;/p&gt;
&lt;h3 id=&#34;malentendido-3-la-gpu-múltiple-siempre-es-más-rápida-que-la-gpu-única&#34;&gt;Malentendido 3: La GPU múltiple siempre es más rápida que la GPU única
&lt;/h3&gt;&lt;p&gt;No siempre. Si el modelo se adapta completamente a una GPU rápida, una GPU única puede ser más rápida. La GPU múltiple es útil principalmente para modelos grandes, contextos prolongados o VRAM de GPU única insuficiente.&lt;/p&gt;
&lt;h3 id=&#34;malentendido-4-se-requiere-nvlink--sli&#34;&gt;Malentendido 4: Se requiere NVLink / SLI
&lt;/h3&gt;&lt;p&gt;No. Ollama puede utilizar sistemas PCIe múltiples-GPU ordinarios. NVLink no es un requisito previo.&lt;/p&gt;
&lt;h3 id=&#34;malentendido-5-agregar-una-gpu-no-requiere-reiniciar-los-servicios&#34;&gt;Malentendido 5: Agregar una GPU no requiere reiniciar los servicios
&lt;/h3&gt;&lt;p&gt;No siempre es cierto. Es posible que sea necesario reiniciar los servicios systemd de Linux, las aplicaciones en segundo plano de Windows y los contenedores Docker antes de que redescubran dispositivos y variables de entorno.&lt;/p&gt;
&lt;h2 id=&#34;sugerencias-de-selección-de-gpu&#34;&gt;Sugerencias de selección de GPU
&lt;/h2&gt;&lt;p&gt;Para la inferencia local de Ollama, la prioridad aproximada es:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;La VRAM de una sola GPU más grande suele ser más fácil de administrar.&lt;/li&gt;
&lt;li&gt;Las GPU idénticas son más fáciles de solucionar que las GPU mixtas.&lt;/li&gt;
&lt;li&gt;Los carriles PCIe más completos facilitan la carga de modelos grandes.&lt;/li&gt;
&lt;li&gt;Primero se debe verificar la capacidad de computación CUDA o la compatibilidad con ROCm en las tarjetas más antiguas.&lt;/li&gt;
&lt;li&gt;La alimentación, la refrigeración y el flujo de aire del chasis de varias GPU deben planificarse con antelación.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Para plataformas económicas de segunda mano:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Dual RTX 3090 sigue siendo una opción común de alta VRAM.&lt;/li&gt;
&lt;li&gt;Las tarjetas Tesla más antiguas, como la P40/M40, tienen una gran VRAM, pero la potencia, la refrigeración, la compatibilidad con el controlador y el rendimiento necesitan compensaciones.&lt;/li&gt;
&lt;li&gt;Las tarjetas como RTX 4070/4070 Ti tienen buena eficiencia, pero la VRAM de una sola tarjeta puede ser limitante.&lt;/li&gt;
&lt;li&gt;Puede ser divertido experimentar con varias tarjetas antiguas de 8 GB, pero no son ideales para ejecutar modelos grandes a largo plazo.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;resumen&#34;&gt;Resumen
&lt;/h2&gt;&lt;p&gt;La compatibilidad con múltiples GPU de Ollama se entiende mejor como &amp;ldquo;primero la expansión de VRAM y luego la aceleración del rendimiento&amp;rdquo;. Si el modelo cabe completamente en una GPU, la ruta predeterminada de una sola GPU suele ser más rápida. Si una GPU no puede contenerlo, varias GPU pueden distribuir el modelo entre dispositivos y evitar un gran desbordamiento de CPU/RAM, lo que hace que se puedan utilizar modelos más grandes.&lt;/p&gt;
&lt;p&gt;En la práctica, use &lt;code&gt;ollama ps&lt;/code&gt; para verificar dónde está cargado el modelo, luego use las herramientas &lt;code&gt;nvidia-smi&lt;/code&gt; o ROCm para observar la asignación de VRAM. Para la selección de GPU, use &lt;code&gt;CUDA_VISIBLE_DEVICES&lt;/code&gt; en NVIDIA, &lt;code&gt;ROCR_VISIBLE_DEVICES&lt;/code&gt; en AMD ROCm y &lt;code&gt;GGML_VK_VISIBLE_DEVICES&lt;/code&gt; para Vulkan. Si se ejecuta en Docker, primero asegúrese de que el contenedor pueda ver las GPU.&lt;/p&gt;
&lt;p&gt;La multi-GPU no es mágica. Puede ayudar a adaptar modelos más grandes, pero no garantiza una aceleración lineal. La ruta estable sigue siendo preferir GPU únicas con gran VRAM o configuraciones idénticas de múltiples GPU, considerando al mismo tiempo la compatibilidad con controladores, PCIe, alimentación, refrigeración y cuantificación de modelos.&lt;/p&gt;
&lt;h2 id=&#34;referencias&#34;&gt;Referencias
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;Preguntas frecuentes de Ollama: ¿Cómo carga Ollama modelos en múltiples GPU?: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama/blob/main/docs/faq.mdx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ollama/ollama/blob/main/docs/faq.mdx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Documentos de Ollama GPU: soporte de hardware/selección de GPU: &lt;a class=&#34;link&#34; href=&#34;https://github.com/ollama/ollama/blob/main/docs/gpu.mdx&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/ollama/ollama/blob/main/docs/gpu.mdx&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Centro Docker de Ollama: &lt;a class=&#34;link&#34; href=&#34;https://hub.docker.com/r/ollama/ollama&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://hub.docker.com/r/ollama/ollama&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Kit de herramientas de contenedor NVIDIA: &lt;a class=&#34;link&#34; href=&#34;https://github.com/NVIDIA/nvidia-container-toolkit&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/NVIDIA/nvidia-container-toolkit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        
    </channel>
</rss>
