SBCL implementa máquinas virtuales ultrarrápidas con stack de solo 8 ranuras

Este artículo de Paul Khuong explora una técnica innovadora para implementar máquinas virtuales basadas en stack, utilizando SBCL (Steel Bank Common Lisp) como plataforma de experimentación. La idea central es aprovechar un stack muy pequeño (solo 8 ranuras) para evitar el movimiento de datos durant

El problema oculto de Go: abstracciones que ralentizan el código crítico

Este artículo explora un problema fundamental en la optimización de rendimiento en Go: la ausencia de abstracciones de costo cero en las rutas críticas de código (hot paths). El autor, al portar el algoritmo Brotli a Go puro para el proyecto go-brrr, descubrió que las abstracciones idiomáticas del l

Akamai usa herramienta de Google para optimizar mantenimiento en la nube

Akamai implementa las herramientas de optimización OR-Tools de Google para mejorar la programación del mantenimiento en su infraestructura de nube. La compañía enfrenta el desafío de programar tareas de mantenimiento disruptivo en servidores hypervisor que dan servicio a cientos de miles de máquinas

nvidia y unsloth aceleran el entrenamiento de IA

Nvidia y Unsloth han colaborado para acelerar el entrenamiento de modelos de lenguaje grandes (LLM) en un 25%, según un anuncio reciente. La optimización se centra en la eliminación de cuellos de botella ocultos en el proceso de entrenamiento, específicamente en tareas de metadatos y la reutilizació

Aprendizaje profundo: Borges y Locke revelan sus secretos

Este artículo, basado en la obra de Borges y Locke, explora una teoría sobre el funcionamiento del aprendizaje profundo (Deep Learning) que desafía las explicaciones tradicionales. Borges, a través de su personaje Funes, ilustra cómo la capacidad de recordar todo (datos sin filtrar) impide el pensam

Rust optimiza memoria al procesar JSON de AWS

Este artículo del blog de dystroy.org describe una optimización significativa de memoria en un programa Rust que deserializa archivos JSON complejos. El problema original era que el programa, al procesar archivos JSON que representan estructuras de datos de AWS (Smithy Shapes), consumía una gran can

Aprendizaje profundo: ¿nace una nueva teoría científica?

Este artículo, publicado en arXiv, plantea una idea revolucionaria: la emergencia de una **teoría científica del aprendizaje profundo (Deep Learning)**. Actualmente, el Deep Learning se basa en gran medida en la experimentación y la optimización empírica, más que en principios teóricos sólidos. Este

Simula Klondike: Analiza estrategias en solitario

El proyecto Klondike3-Simulator, desarrollado por Dacracot y alojado en GitHub, es una herramienta para simular partidas del juego Klondike (Solitario). Su objetivo principal es analizar la probabilidad de éxito en diferentes estrategias de juego, algo crucial para optimizar la jugabilidad y entende

Algoritmos de Red: Más Allá del Transporte

Algoritmos de Flujo de Red: Una Visión General. ¿Qué son y por qué son importantes? Los algoritmos de flujo de red son una herramienta matemática poderosa que permite modelar y resolver problemas que involucran el movimiento de algo a través de una red. Originalmente concebidos para optimizar el tra

K: Eliminan 'raze' para optimizar código

Este artículo explora una optimización interesante en el lenguaje de programación K, específicamente relacionada con la eliminación de una técnica llamada 'raze'. K es un lenguaje de programación de matriz (array language) conocido por su concisión y expresividad. El problema que aborda el autor, Ch

Orden de datos afecta entrenamiento de redes neuronales

Este artículo explora una idea fascinante en el entrenamiento de redes neuronales: el impacto del orden en que se presentan los ejemplos de entrenamiento. Normalmente, se asume que el orden no debería importar, especialmente desde una perspectiva bayesiana donde el conjunto de datos es una colección

Entrenan LLM gigante en una GPU: avance tecnológico

El entrenamiento de modelos de lenguaje grandes (LLMs), como GPT-3 o LaMDA, es un desafío computacional enorme. Estos modelos pueden tener cientos de miles de millones de parámetros, lo que requiere una cantidad significativa de memoria y potencia de cálculo. Tradicionalmente, el entrenamiento de es

Endbot: Robot y efectos en 256 bytes, ¡increíble!

Endbot es una demostración audiovisual increíblemente compacta, que se ajusta en tan solo 256 bytes, diseñada para ejecutarse en el entorno DOS (específicamente a través de DosBox-X). Su tamaño minúsculo desafía las expectativas, logrando renderizar elementos visuales como un sprite de robot con dañ

Binario Linux de 105 bytes: ¿el mínimo ejecutable?

Un desarrollador ha logrado reducir el tamaño de un archivo ELF (Executable and Linkable Format) de Linux a tan solo 105 bytes, mientras mantiene la capacidad de imprimir el mensaje "Hello, world!". Esta hazaña, impulsada por el trabajo de Josh Triplett, se basa en técnicas de optimización que elimi

Webs lentas: ¿culpa de la inteligencia artificial?

Usuarios en internet están experimentando una ralentización generalizada en la velocidad de las aplicaciones web, incluso en páginas simples con solo texto. Esta problemática, evidenciada en plataformas como AWS, Reddit y herramientas como DeepL, sugiere un problema subyacente en la optimización del

AtnRes: Nueva técnica optimiza modelos de lenguaje

Attention Residuals (AttnRes) es una innovadora técnica que optimiza las conexiones residuales en los Transformers, una arquitectura fundamental en modelos de lenguaje grandes (LLMs) como GPT. Tradicionalmente, las conexiones residuales simplemente suman la salida de cada capa con una ponderación u

Flash-KMeans: K-Means Veloz para Sistemas Online

El algoritmo K-Means es una técnica fundamental en aprendizaje automático para agrupar datos similares. Tradicionalmente, se ha utilizado para tareas como organizar conjuntos de datos o preprocesar incrustaciones (embeddings), pero su aplicación en tiempo real, en sistemas online, ha sido limitada p

Rob Pike: 5 Claves para Programar Mejor

Las '5 Reglas de Programación' de Rob Pike, un ingeniero influyente en Google y creador de lenguajes como Go, ofrecen una guía valiosa para el desarrollo de software eficiente y mantenible. Estas reglas, que se basan en principios establecidos por otros grandes de la informática, enfatizan la import

Llamadas de función en Rust: ¿realmente cuestan tanto?

Este artículo aborda una preocupación común en programación, especialmente en Rust: el costo de la indirección, es decir, la sobrecarga de las llamadas a funciones. La advertencia habitual es "cada llamada de función adicional añade sobrecarga, inlínala". Sin embargo, en el contexto del código asínc

Booleano en Rust: ¿Cuántas opciones existen?

Este artículo, publicado en la revista técnica experimental "Paged Out!", explora una pregunta aparentemente trivial pero reveladora: ¿cuántas opciones caben en un booleano en Rust? La pregunta surge de una curiosidad inicial y se convierte en una oportunidad para profundizar en los detalles de la r

IA investiga y optimiza modelos de lenguaje sola

Este repositorio de GitHub, creado por Andrej Karpathy, presenta un enfoque innovador para la investigación en inteligencia artificial: la 'autoresearch'. En lugar de la investigación tradicional, donde humanos modifican el código, este sistema permite a agentes de IA experimentar y optimizar modelo

Rust: Propuesta optimiza la llamada de funciones

Este artículo explora una propuesta para mejorar la convención de llamada en Rust, especialmente en arquitecturas x86, y cómo esto impacta la eficiencia del código generado. La convención de llamada define cómo se pasan los argumentos a las funciones y cómo se devuelven los valores, y la actual conv

Z3: resuelve problemas complejos con esta herramienta

Hillel Wayne ha publicado una serie de scripts de ejemplo utilizando Z3, un potente solucionador SMT (Satisfiability Modulo Theories). Z3 es una herramienta que puede resolver problemas matemáticos y de programación, encontrando soluciones que satisfacen un conjunto de ecuaciones y restricciones. Wa

Juegos: Eliminar Ciudades para Mantener la Diversión

Este artículo explora un problema interesante que surge en el diseño de juegos: cómo eliminar elementos de un mapa de forma estratégica para mantenerlo jugable y atractivo. El problema se presenta en el contexto del juego 'Two Spies', donde eliminar ciudades del mapa es un mecanismo clave para evita

Level of Detail: Optimiza el desarrollo de software

Este artículo explora el concepto de 'Level of Detail' (LoD), originalmente utilizado en gráficos 3D para optimizar el rendimiento renderizando modelos con menos detalle a distancia, y lo aplica al desarrollo de software. La idea central es que, al igual que en gráficos, no siempre es necesario tene

Nueva técnica acelera cálculos complejos con GPUs

El artículo de Bee Rosa Davis presenta una innovadora técnica llamada 'Curvature-Guided Wavefront Execution' (Ejecución de Frente de Onda Guiada por Curvatura) que revoluciona la resolución de problemas de satisfacción de restricciones (CSP) utilizando la potencia de las GPUs. En esencia, se trata d

Copapy: Python redefine la computación embebida

Un nuevo framework de Python llamado Copapy ha sido desarrollado para facilitar la computación en tiempo real determinista y de baja latencia en sistemas embebidos. Inspirado en frameworks de IA como PyTorch y JAX, Copapy busca ofrecer la flexibilidad de Python con el rendimiento de código máquina o

Juegos 2D: Crea Niveles con Solo 5 Tiles

Este artículo presenta una técnica innovadora para el auto-tileado en el desarrollo de juegos 2D, que reduce significativamente la cantidad de tiles necesarios para crear niveles complejos. Tradicionalmente, el auto-tileado implica analizar los ocho vecinos de una celda y seleccionar una de entre 16

Llamadas a funciones: ¿Cuánto cuestan y cómo optimizarlas?

En programación, es común encadenar funciones, donde una función llama a otra. Aunque esto es una práctica habitual, cada llamada de función tiene un costo en términos de rendimiento. Este artículo explora ese costo y cómo los compiladores pueden optimizarlo a través de una técnica llamada 'inlining

Geo joins: Nueva técnica acelera búsquedas espaciales 400x

Se ha desarrollado un nuevo método para acelerar las consultas espaciales en bases de datos, conocidas como 'uniones geoespaciales' o 'geo joins', logrando mejoras de velocidad de hasta 400 veces. Las 'geo joins', que involucran la comparación de geometrías para determinar intersecciones (como encon