YouMind
Iniciar sesión

Una nueva capa de datos para el aprendizaje de robots

@NikolausWest
INGLÉS14 may 2026
319K
172
26
5
218

TL;DR

Rerun 0.32 presenta una capa de datos diseñada específicamente para la robótica, que incluye un formato .rrd estable, integración con PyTorch y visualización avanzada para cerrar la brecha entre los datos brutos de los sensores y el entrenamiento de modelos.

La IA física transformará industrias en el mundo real, pero la robótica aún carece de la capa de datos unificada necesaria para iterar a la velocidad que exige la IA moderna. El desafío principal es que el aprendizaje robótico opera sobre datos físicos: flujos multimodales y de múltiples frecuencias vinculados al tiempo, el espacio y la corporeidad. La infraestructura existente se construyó principalmente en torno a datos web y tiene dificultades con estas propiedades.

En @rerundotio estamos construyendo una capa de datos unificada para datos físicos, ayudando a los equipos a entrenar y desplegar inteligencia para el mundo real.

El lanzamiento más grande de Rerun hasta ahora

Rerun ha sido conocido principalmente por visualizar datos de series temporales multimodales. Durante el último año y medio, hemos estado construyendo silenciosamente las otras piezas de una capa de datos unificada para respaldar todo el recorrido, desde la recolección hasta el entrenamiento. Con el lanzamiento de Rerun SDK 0.32, ¡esas capacidades llegan al código abierto!

Este es el lanzamiento más grande desde que Rerun se publicó como código abierto hace tres años, y representa una enorme expansión de los tipos de trabajo que se pueden realizar con Rerun.

Estamos estabilizando el formato de archivo y añadiendo un nuevo conjunto de APIs de lectura y escritura de bajo nivel para los archivos. Agregamos una nueva API para manipular fragmentos de datos de Rerun, diseñada para procesar y normalizar datos robóticos reales. Expandimos nuestro soporte para mensajes MCAP y ROS 2 para mejorar la experiencia lista para usar. Incorporamos una nueva interfaz de revisión de conjuntos de datos para agilizar la revisión de datasets de entrenamiento. El servidor de catálogo de código abierto ahora indexa archivos .rrd en disco, permitiendo que tú o tu agente realicen consultas genéricas sobre directorios de grabaciones robóticas. Sobre esa misma base, también lanzamos un cargador de datos para PyTorch, para que puedas entrenar modelos robóticos directamente sobre archivos .rrd sin necesidad de exportar a un formato específico de entrenamiento.

El ecosistema de la robótica carecía de un marco unificado lo suficientemente flexible como para respaldar todo el ciclo de vida de los datos de aprendizaje robótico. Con la versión 0.32, esa base está emergiendo.

Además de este enorme lanzamiento de código abierto, también anunciamos Rerun Hub, nuestro motor de almacenamiento y catálogo de datos comercial. Rerun Hub ahora está en vista previa privada y extiende el SDK de Rerun a conjuntos de datos respaldados por almacenamiento de objetos. Proporciona un catálogo compartido y una capa de acceso para transformar, consultar, visualizar y transmitir datos robóticos a una escala mucho mayor, manteniendo el mismo modelo de datos y las mismas APIs.

Usa Rerun Hub si tu ambición es escalar datos más allá de lo que cabe en tu máquina local, ¡y hacerlo rápido! Si eres parte de un equipo que construye un producto basado en aprendizaje robótico y estás pensando en tu capa de datos, contáctanos.

El resto de esta publicación tiene dos partes. Primero, una introducción a la arquitectura de datos que creemos que la IA física necesita para escalar. Segundo, un recorrido por las nuevas capacidades de Rerun SDK 0.32 que ponen en práctica esa arquitectura.

El aprendizaje robótico necesita una capa de datos diseñada específicamente para datos físicos

Como se describe en \The Data Layer Tax for Robot Learning\, gran parte de la fricción que frena el progreso de la IA física proviene de intentar forzar los datos físicos a través de una infraestructura diseñada para cargas de trabajo tradicionales de software y análisis. Lo que se necesita es una capa de datos construida para datos multimodales y de múltiples frecuencias, que respalde todo lo necesario para iterar sobre la inteligencia robótica, desde la recolección hasta el entrenamiento y el despliegue.

Los agentes de codificación implican que los usuarios necesitan control total sobre la capa de cómputo y aplicación

Para servir todo el flujo de trabajo de recolección, normalización, posprocesamiento, curación y entrenamiento, los equipos necesitan una variedad de herramientas y trabajos de cómputo. Esas herramientas y trabajos pueden, por ejemplo, codificar las formas específicas en que opera un equipo o las técnicas que utilizan para impulsar la calidad de los datos a escala, lo que los convierte en un área clave de diferenciación que los equipos deben poseer.

Los agentes de codificación están haciendo cada vez más viable que los equipos diseñen estas herramientas y trabajos de cómputo exactamente como quieran, siempre que tengan control a nivel de código. Debido a esto, muy pocos equipos aceptarán no tener ese control. Por eso el SDK de Rerun es completamente de código abierto y está diseñado como un marco sobre el cual puedes construir, no como una plataforma SaaS de jardín amurallado. Incluso el visor está diseñado como una biblioteca para que nunca te quedes atascado. Rerun siempre ha sido primero el código y estamos redoblando esfuerzos para que sea aún más fácil de usar para los agentes. Eso incluye trabajo futuro en renderizado completamente sin cabeza y navegación del visor para ayudar a los agentes a ver datos físicos como lo hacen los humanos.

La mayoría de los equipos ya están construyendo aplicaciones personalizadas y scripts de procesamiento adaptados a sus propios flujos de trabajo. Sin construir sobre una base sólida, terminas con piezas verticales difíciles de razonar y que no se componen bien, lo que limita las ganancias de productividad.

La capa de datos debe manejar las partes difíciles del uso de datos físicos a gran escala

Nikolaus West - inline image

Las capacidades centrales necesarias para servir todo el recorrido de los datos, desde la recolección hasta el modelo, son la visualización, las consultas analíticas, la transformación y el entrenamiento. Todas estas capacidades deben lidiar con datos multimodales y de múltiples frecuencias que pueden tener semántica robótica, como relaciones 3D o formas. Para evitar errores y datos inconsistentes, es deseable manejar las sutilezas de este tipo de datos de manera consistente dondequiera que se utilicen. Por ejemplo, la alineación temporal y las transformaciones 3D deben comportarse de manera consistente en el preprocesamiento, las consultas, la visualización y la revisión de conjuntos de datos.

Para facilitar la iteración tanto en el ciclo de datos y experimentos como en las herramientas que lo impulsan, es conveniente construir sobre una única capa de datos unificada que haga que las transiciones sean triviales y las aplicaciones superiores simples. Esto significa que la capa de datos debe ser lo suficientemente flexible para manejar los requisitos de todas las capacidades centrales de aplicación y cómputo. Por ejemplo, tanto la visualización como el cómputo requieren acceso aleatorio rápido a series temporales multimodales, mientras que las consultas analíticas requieren escaneos eficientes de columnas, y tanto el cómputo de posprocesamiento a gran escala (CPU) como el entrenamiento (GPU) requieren transmisión paralela de datos de alto ancho de banda.

Los datos físicos se comportan fundamentalmente de manera diferente a los datos web y de negocio, lo que significa que se benefician de diferentes abstracciones de almacenamiento y consulta.

La unidad de almacenamiento central para datos físicos es un fragmento de columna

Los datos físicos tienen dos características diferenciadoras:

La primera es que son de múltiples frecuencias: diferentes sensores registrarán datos a frecuencias muy distintas. El GPS puede estar a 1-10 Hz, las cámaras a 10-30 Hz, los ángulos de las articulaciones a 100-200 Hz y la IMU a 1 kHz. En el posprocesamiento, podrías calcular incrustaciones semánticas para cada décimo fotograma de la cámara o descripciones de escenas al inicio y final de cada episodio.

La segunda es que son multimodales: diferentes sensores registran datos de tamaños muy diferentes. La IMU y el GPS solo necesitan un puñado de bytes para codificar un par de números, mientras que una cámara RGB puede usar muchos MB por cada fotograma de imagen.

Si almacenaras una grabación robótica en una tabla donde una fila representa una marca de tiempo y una columna representa un flujo de datos, el aspecto de múltiples frecuencias generalmente haría que esta tabla fuera muy dispersa; para cualquier fila dada, la mayoría de las columnas probablemente estarían vacías. El aspecto multimodal de los datos conduce a un gran desequilibrio de memoria, ya que una sola fila puede contener celdas que difieren en tamaño por órdenes de magnitud. La infraestructura de datos tabulares existente maneja esta combinación muy mal.

Los datos multimodales y de múltiples frecuencias deben almacenarse en fragmentos que contengan cada uno subconjuntos de las filas y columnas de un conjunto de datos. La capacidad de, por ejemplo, colocar un millón de muestras de IMU en un fragmento y solo unos pocos paquetes de video en otro fragmento permite resolver tanto la dispersión como el desequilibrio de memoria.

Nikolaus West - inline image

Dentro del fragmento, el almacenamiento orientado a columnas optimiza para una mejor compresión y consultas de escaneo de columnas, mientras que el almacenamiento orientado a filas optimiza para escrituras simples.

En Rerun creemos que los fragmentos de columna representan el mejor equilibrio para los sistemas de datos de aprendizaje robótico, y hemos estandarizado nuestra arquitectura en torno a ellos como la abstracción de almacenamiento central.

El formato de archivo .rrd de Rerun está construido alrededor de fragmentos de columna

El formato de archivo nativo de Rerun, .rrd, es la representación en disco de la abstracción de fragmentos de columna. Internamente, cada fragmento de columna se codifica como un lote de registros de Apache Arrow junto con metadatos semánticos que describen cómo deben interpretarse los datos. Apache Arrow es el estándar de la industria para ciencia de datos, y usar Arrow significa que tenemos una ruta rápida de copia cero hacia DataFusion, Pandas y Polars.

Nikolaus West - inline image

Los metadatos en cada fragmento contienen información semántica sobre cómo interpretar los datos ("esto es un sensor IMU, esto es un GPS, …") para que puedan transportarse a través de tuberías de procesamiento y aún así ser interpretados y visualizados automáticamente.

Los fragmentos de columna codificados se envuelven en mensajes protobuf y se concatenan para formar un archivo .rrd. Un pie de página al final del archivo apunta a un índice, lo que permite un acceso aleatorio rápido a fragmentos individuales sin escanear todo el archivo.

Nikolaus West - inline image

Comparaciones con otros formatos

Apache Parquet es un formato columnar en disco, comúnmente usado junto con Arrow. Organiza sus datos en grupos de filas, pero a diferencia de los fragmentos en .rrd, estos grupos no pueden superponerse: cada grupo de filas contiene todas las columnas sobre un rango denso de filas. Esto lo hace inadecuado para datos robóticos multimodales y de múltiples frecuencias. Puedes agregar nuevas filas, pero no puedes agregar nuevas columnas (sin evolución de esquema).

MCAP es un formato para registrar registros robóticos en tu robot. Está diseñado para ser rápido y flexible de escribir, con una fuerte compatibilidad con ROS. Sin embargo, es esencialmente un formato contenedor de mensajes opacos (codificados con JSON, protobuf, CBOR, etc.) y no está optimizado para consultas analíticas columnares. Los escaneos grandes y las uniones también son lentos, ya que necesitas decodificar cada mensaje.

Lance es un formato nuevo, construido explícitamente para datos multimodales y acceso aleatorio (lo cual es extremadamente importante para el entrenamiento). A diferencia de Parquet, admite evolución de esquema. Sin embargo, un conjunto de datos de Lance sigue siendo una pila vertical de fragmentos alineados por filas, por lo que los flujos de múltiples frecuencias se inflarán con valores nulos.

NCore es un formato nuevo de Nvidia, construido para reconstrucción neuronal. Las múltiples frecuencias se admiten de forma nativa mediante marcas de tiempo por componente y la alineación espacial mediante un grafo de pose. Sin embargo, el esquema es cerrado (componentes de sensor canónicos, no datos definidos por el usuario arbitrarios), está basado en Zarr en lugar de ser nativo de Arrow, y no está diseñado para servir a un motor de consultas SQL/dataframe genérico.

Cada característica que tu equipo necesita y que un formato de archivo no proporciona significa otra tubería que mantener sincronizada y herramientas adicionales que aprender para que tu equipo tenga éxito. El formato de Rerun es la única opción que puede servir todos los casos de uso necesarios para transformar grabaciones robóticas en inteligencia. Te permite mantener los datos con sus marcas de tiempo originales, mientras aún puedes consultar y visualizar desde la misma fuente de datos y transmitir al entrenamiento. Tiene suficiente estructura para construir sistemas de datos unificados sobre él, pero es lo suficientemente flexible para optimizar diferentes patrones de lectura y escritura.

Una capa de indexación, esquema y metadatos sobre fragmentos de columna simplifica el uso de datos físicos a escala

Escanear todos los fragmentos de un conjunto de datos para analizar una sola señal escala mal incluso para conjuntos de datos pequeños, por lo que para usarlos de manera efectiva necesitas una capa de metadatos e indexación que ayude a encontrar los fragmentos correctos para cualquier consulta. Esto se parece mucho al patrón clásico de data lakehouse. En nuestro caso, un solo conjunto de datos o grabación está compuesto por fragmentos heterogéneos que no comparten el mismo esquema. Las herramientas clásicas de procesamiento de datos están construidas para manejar tablas con un esquema uniforme. Por lo tanto, una capa de indexación y metadatos estilo lakehouse para datos físicos también necesita realizar un seguimiento de estos esquemas individuales para poder materializar esquemas combinados de cualquier flujo sobre la marcha, de modo que las herramientas de datos clásicas puedan trabajar con ellos. Por ejemplo, si actualizas tu IMU a una que publique datos de campo magnético en sus mensajes, esta adición es compatible con tu IMU anterior que no contenía este campo, sin necesidad de reescribir datos históricos para mantener la compatibilidad.

Nikolaus West - inline image

Los fragmentos de columna combinados con una indexación eficiente te permiten obtener exactamente los datos que necesitas sin pagar una penalización por flujos no relacionados almacenados junto a ellos. No tienes que elegir entre hacer que las operaciones comunes sean rápidas y poder perseguir errores de cola larga porque exportaste datos comunes a un almacén separado.

Además de los beneficios de rendimiento, esta capa nos permite abstraer los archivos y presentar una API unificada para todos los usuarios de datos físicos en las capas superiores. A menudo, los datos robóticos se almacenan en un archivo y la calibración en otro; abstraer estos detalles de implementación es una parte importante para reducir la fricción de los datos y simplificar la capa de cómputo y aplicación.

El procesamiento y entrenamiento a gran escala requiere transmisión selectiva directamente desde el almacenamiento de objetos

Los conjuntos de datos de aprendizaje robótico ya pueden ser muy grandes y se volverán mucho más grandes a medida que los equipos sigan las leyes de escalado para lograr modelos cada vez más capaces. Para procesar esta escala de datos, a menudo necesitas distribuir el trabajo a un gran número de CPUs para posprocesamiento o GPUs para entrenamiento. En estos casos, es importante que el rendimiento de los datos pueda escalar con las necesidades de este cómputo.

Tanto para maximizar el rendimiento como para minimizar los costos de salida, deseas ejecutar el cómputo cerca de los datos. Al mismo tiempo, el cómputo en GPU puede ser difícil de conseguir, por lo que muchos equipos terminan alquilando en diferentes ubicaciones con el tiempo. Todos estos factores significan que deseas poder separar el almacenamiento de los servicios que manejan la indexación y los metadatos.

Nikolaus West - inline image

En Rerun, las consultas comienzan desde el SDK de Rerun, que luego consulta a Rerun Hub, que es responsable de saber qué fragmentos se necesitan para resolver la consulta. Dependiendo de la configuración, el SDK solicita fragmentos a través de un proxy en caché en Rerun Hub, o rangos de bytes en el almacenamiento de objetos. Esto permite una API de acceso simplificada, transmisión selectiva de fragmentos y el máximo ancho de banda de transmisión desde el almacenamiento de objetos subyacente.

Rerun SDK 0.32 es un kit de herramientas de datos unificado para el aprendizaje robótico

Rerun 0.32 es el lanzamiento más grande desde que se publicó como código abierto en febrero de 2023. Expande los casos de uso prácticos del SDK desde el registro, visualización y consultas más simples hasta todo el recorrido de datos, desde la recolección hasta el entrenamiento. A continuación, un recorrido por las nuevas funciones que destacan esta expansión. Consulta las notas de la versión para más detalles.

Un formato de archivo estable con APIs de Python a nivel de fragmento

En Rerun 0.23 anunciamos compatibilidad hacia atrás entre versiones para el formato de archivo .rrd de Rerun. En la práctica, no hemos roto la compatibilidad entre ninguna versión desde entonces y ahora nos sentimos seguros de prometer compatibilidad hacia atrás general en el formato de archivo. Continuaremos evolucionando el formato para impulsar capacidades y rendimiento, pero los datos antiguos siempre se cargarán.

Antes de 0.32, solo podías escribir archivos .rrd usando un importador de otro formato o las APIs de nivel superior log o send_columns, y la única forma de leer datos era a través de consultas dataframe o SQL. Con este lanzamiento, ahora introducimos APIs de lectura y escritura a nivel de fragmento, que te dan control preciso sobre la forma exacta de tus datos.

En conjunto, estos dos cambios significan que .rrd es lo suficientemente maduro para que una amplia variedad de equipos construyan sus capas de datos sobre él.

APIs de procesamiento de fragmentos para la manipulación de datos nativos de robótica

Los datos robóticos a menudo son desordenados. Normalizar datos de múltiples fuentes en algo que los equipos puedan analizar y entrenar se vuelve complejo rápidamente. Esta parte de la tubería de datos a menudo consiste en scripts de Python improvisados que son lentos y están llenos de errores sutiles.

Para resolver estos problemas, estamos introduciendo un nuevo conjunto de (experimentales) APIs de procesamiento de fragmentos. Proporcionan una interfaz de cargador uniforme para formatos como .rrd, MCAP, Parquet y URDF que producen flujos de fragmentos de Apache Arrow. Luego puedes definir fácilmente tuberías de procesamiento sobre esos flujos.

Los datos robóticos a menudo vienen en forma de estructuras profundamente anidadas, y la normalización y manipulación de datos a menudo implica remodelar, convertir y transformar su contenido. Para satisfacer esa necesidad, también lanzamos Lenses, un lenguaje declarativo para seleccionar y transformar este tipo de datos, inspirado en jq.

Estas APIs han sido diseñadas explícitamente para y probadas con agentes de codificación, y encontramos que tienen mucho más fácil producir código correcto y eficiente con las APIs de procesamiento de fragmentos de Rerun que con Python genérico. En el futuro, estas transformaciones de procesamiento de fragmentos podrán ejecutarse en el visor y en la nube a través de Rerun Hub, además del ejecutor actual del lado del SDK.

Soporte integrado expandido para MCAP, tipos de ROS 2 y visualizaciones robóticas

Creemos que es fundamental que sea fácil ingerir y hacer que todos los datos robóticos sean útiles en Rerun. Al mismo tiempo, hay muchos datos que pueden manejarse perfectamente sin personalización, y continuamos mejorando esa experiencia en cada lanzamiento. 0.32 trae un rendimiento mejorado y más soporte listo para usar para MCAP y tipos comunes de ROS 2, así como una expansión de las visualizaciones disponibles. Consulta la lista actualizada de mensajes con soporte integrado aquí.

Las cuadrículas de ocupación, o mapas 2D en 3D, son importantes para robots móviles y han sido una característica muy solicitada en Rerun durante un tiempo. Por lo tanto, 0.32 agrega el nuevo arquetipo y visualizador GridMap, junto con soporte integrado para los mensajes ROS 2 correspondientes.

Otra solicitud común ha sido la capacidad de visualizar cambios de estado a lo largo del tiempo. 0.32 trae una nueva Vista de Línea de Tiempo de Estado experimental. Si has estado esperando esta vista en Rerun, nos encantaría recibir tus comentarios sobre qué más te gustaría ver en ella.

Servidor de catálogo con consultas SQL o dataframe indexadas sobre el contenido de muchas grabaciones en disco

Las APIs de Catálogo en el SDK de Rerun te permiten escribir consultas SQL o Dataframe completamente genéricas sobre conjuntos de datos robóticos. Cuando se conecta a Rerun Hub, esto ha soportado conjuntos de datos a gran escala durante algún tiempo, mientras que el servidor de código abierto solo ha soportado conjuntos de datos que caben completamente en memoria. Con 0.32, expandimos el servidor de catálogo de código abierto para indexar rangos de bytes de archivos en el disco local, por lo que ahora puedes analizar fácilmente cualquier directorio local de grabaciones robóticas en archivos .rrd solo con el SDK de código abierto.

Una nueva interfaz para la revisión rápida de conjuntos de datos para entrenamiento y evaluación

En 0.32, lanzamos la primera versión de nuestra herramienta de revisión de conjuntos de datos (experimental). Te permite echar un vistazo rápido a muchas grabaciones a la vez, para buscar anomalías y desarrollar intuición sobre tus datos. También te permite marcar grabaciones, lo que la hace útil como una herramienta de anotación simple. La vista se configura usando un blueprint normal de Rerun.

Muchos equipos de aprendizaje robótico han solicitado esta funcionalidad y nos encantaría recibir todos tus comentarios sobre cómo convertir esto en la herramienta de revisión de conjuntos de datos más eficiente posible.

Un cargador de datos para aprendizaje robótico que admite mezcla simple de conjuntos de datos y búsquedas aleatorias en archivos .rrd

Hemos comenzado a trabajar en una de nuestras funciones más solicitadas: ¡un cargador de datos de PyTorch para Rerun! El nuevo módulo rerun.experimental.dataloader expone las grabaciones de Rerun como conjuntos de datos de PyTorch iterables o de tipo mapa, transmitiendo imágenes codificadas, escalares y video comprimido (h264/h265/av1) sobre la marcha. El acceso aleatorio, la precarga con múltiples trabajadores y el soporte para DDP funcionan de inmediato. Es compatible tanto con el servidor de catálogo OSS como con nuestro producto comercial Rerun Hub para cuando quieras entrenar directamente sobre grandes conjuntos de datos respaldados por almacenamiento de objetos.

Estamos increíblemente emocionados de lanzar este cargador de datos de entrenamiento para que la comunidad comience a experimentar con él. Tenemos la intención de convertirlo en el mejor cargador de datos de transmisión para el aprendizaje robótico imaginable y nos encantaría recibir todos tus comentarios y solicitudes.

Poder entrenar directamente sobre la misma capa de datos que usas para visualización, análisis y transformación es crucial para que los equipos puedan unificar verdaderamente sus capas de datos, lo que les permite simplificar sistemas y acelerar los ciclos de experimentación.

Rerun Hub está en vista previa privada y construido para escalar

Durante el último año y medio, hemos estado construyendo silenciosamente la capa de datos necesaria para acelerar la aplicación del aprendizaje robótico a valiosas aplicaciones del mundo real, junto con un grupo inicial de excelentes startups y laboratorios. Actualmente manejamos petabytes de datos de entrenamiento robótico y estamos en un punto en el que estamos listos para incorporar a más equipos a nuestro producto comercial Rerun Hub, que ahora entra en vista previa privada.

Rerun Hub es un motor de almacenamiento y catálogo que se conecta al SDK de Rerun de código abierto para facilitar el trabajo con datos de aprendizaje robótico, desde la recolección hasta el entrenamiento y el despliegue. Actúa como una capa de gestión y acceso uniforme que impulsa todas las capacidades centrales de datos: ingesta, visualización, consultas analíticas, transformación y entrenamiento. Los datos pueden almacenarse en cualquier almacenamiento de objetos compatible con S3, y Rerun Hub media de manera eficiente la transmisión selectiva directa desde el almacenamiento de objetos al SDK de Rerun en tus trabajos de entrenamiento o posprocesamiento masivamente paralelo. El hub centralizado también simplifica la colaboración y la revisión automatizada al facilitar la construcción de enlaces de datos compartibles, ya sea mediante código o de forma interactiva en el visor.

Nikolaus West - inline image

Si estás construyendo robots inteligentes y te interesa actualizar tu capa de datos para iterar más rápido, contáctanos. Para equipos que ya han alcanzado cierta escala con sistemas existentes complejos, Rerun es fácil de adoptar gradualmente y también podemos ofrecer ingenieros desplegados en el sitio para ayudarte a actualizar sin mover a personas clave de otras prioridades principales.

Guardar con un clic

Lee artículos virales en profundidad con IA en YouMind

Guarda la fuente, haz preguntas concretas, resume el argumento y convierte un artículo viral en notas reutilizables en un único espacio de trabajo con IA.

Explora YouMind
Para creadores

Convierte tu Markdown en un artículo de 𝕏 impecable

Cuando publicas tus propios textos largos, dar formato en 𝕏 a imágenes, tablas y bloques de código es un fastidio. YouMind convierte un borrador completo en Markdown en un artículo de 𝕏 impecable y listo para publicar.

Prueba Markdown a 𝕏

Más patrones por descifrar

Artículos virales recientes

Explorar más artículos virales