YouMind
Accedi

Un nuovo data layer per l'apprendimento robotico

319K
172
26
5
218

TL;DR

Rerun 0.32 introduce un data layer appositamente progettato per la robotica, caratterizzato da un formato .rrd stabile, integrazione con PyTorch e visualizzazione avanzata per colmare il divario tra i dati grezzi dei sensori e l'addestramento dei modelli.

L'AI fisica ridefinirà le industrie nel mondo reale, ma la robotica manca ancora di un livello dati unificato necessario per iterare alla velocità richiesta dall'AI moderna. La sfida principale è che l'apprendimento robotico opera su dati fisici: flussi multimodali e multi-frequenza legati a tempo, spazio e incarnazione. Le infrastrutture esistenti sono state costruite principalmente per dati web e faticano con queste proprietà.

Su @rerundotio stiamo costruendo un livello dati unificato per dati fisici per aiutare i team a addestrare e distribuire intelligenza per il mondo reale.

Il più grande rilascio di Rerun finora

Rerun è stato noto principalmente per la visualizzazione di dati temporali multimodali. Nell'ultimo anno e mezzo, abbiamo lavorato silenziosamente agli altri componenti di un livello dati unificato per supportare l'intero percorso dalla raccolta all'addestramento. Con il rilascio di Rerun SDK 0.32, queste capacità arrivano nell'open source!

Questo è il più grande rilascio da quando Rerun è stato reso open source tre anni fa, e rappresenta una enorme espansione dei tipi di lavoro che puoi fare con Rerun.

Stiamo stabilizzando il formato file e aggiungendo un nuovo set di API di lettura e scrittura di basso livello per i file. Stiamo aggiungendo una nuova API per manipolare i chunk di dati di Rerun progettata per il wrangling e la normalizzazione di dati robotici reali. Stiamo espandendo il supporto per messaggi MCAP e ROS 2 per migliorare l'esperienza out-of-the-box. Stiamo aggiungendo una nuova interfaccia di revisione dei dataset per rendere molto più veloce la revisione dei dataset di addestramento. Il server di catalogo open source ora indicizza i file .rrd su disco, così tu o il tuo agente potete scrivere query generiche su directory di registrazioni robotiche. Basata sulla stessa base, stiamo anche rilasciando un dataloader PyTorch per addestrare modelli robotici direttamente su file .rrd senza bisogno di esportare in un formato specifico per l'addestramento.

All'ecosistema robotico è mancato un framework unificato abbastanza flessibile da supportare l'intero ciclo di vita dei dati di apprendimento robotico. Con la 0.32, questa base sta ora emergendo.

Oltre a questo enorme rilascio open source, annunciamo anche Rerun Hub, il nostro catalogo dati commerciale e motore di archiviazione. Rerun Hub è ora in anteprima privata ed estende il Rerun SDK a dataset supportati da object storage. Fornisce un catalogo condiviso e un livello di accesso per trasformare, interrogare, visualizzare e trasmettere dati robotici su scala molto più ampia, preservando lo stesso modello dati e le stesse API.

Usa Rerun Hub se la tua ambizione è scalare i dati oltre ciò che può stare sulla tua macchina locale - e muoverti velocemente! Se sei un team che costruisce un prodotto basato sull'apprendimento robotico e stai pensando al tuo livello dati, contattaci.

Il resto di questo post ha due parti. Prima, un'introduzione all'architettura dati che riteniamo necessaria per scalare l'AI fisica. Secondo, un tour delle nuove capacità in Rerun SDK 0.32 che mettono in pratica quell'architettura.

L'apprendimento robotico necessita di un livello dati progettato appositamente per dati fisici

Come descritto in La tassa del livello dati per l'apprendimento robotico, gran parte dell'attrito che rallenta il progresso dell'AI fisica deriva dal tentativo di forzare i dati fisici attraverso infrastrutture progettate per carichi di lavoro tradizionali di software e analisi. Ciò che serve è un livello dati costruito per dati multi-frequenza e multimodali, che supporti tutto ciò di cui hai bisogno per iterare sull'intelligenza robotica, dalla raccolta all'addestramento e al deployment.

Gli agenti di codifica significano che gli utenti hanno bisogno del pieno controllo del livello di calcolo e applicazione

Per servire l'intero flusso di lavoro di raccolta, normalizzazione, post-elaborazione, curation e addestramento, i team hanno bisogno di una varietà di strumenti e job di calcolo diversi. Questi strumenti e job possono, ad esempio, codificare i modi specifici in cui un team opera o le tecniche che usano per guidare la qualità dei dati su larga scala, il che li rende un'area chiave di differenziazione che i team devono possedere.

Gli agenti di codifica stanno rendendo sempre più fattibile per i team progettare questi strumenti e job di calcolo esattamente come vogliono, purché abbiano il controllo a livello di codice. Per questo, pochissimi team accetteranno di non avere quel controllo. Ecco perché il Rerun SDK è completamente open source e progettato come un framework con cui costruire, piuttosto che una piattaforma SaaS a giardino recintato. Anche il visualizzatore è progettato come una libreria, così non rimarrai mai bloccato. Rerun è sempre stato code-first e abbiamo raddoppiato gli sforzi per renderlo ancora più facile da usare per gli agenti. Questo include anche il lavoro imminente sul rendering completamente headless e sulla navigazione del visualizzatore per aiutare gli agenti a vedere i dati fisici proprio come gli umani.

La maggior parte dei team sta già costruendo applicazioni personalizzate e script di elaborazione su misura per i propri flussi di lavoro. Senza costruire su una solida base, si finisce con pezzi verticali difficili da comprendere e che non si compongono bene, il che limita i guadagni di produttività.

Il livello dati deve gestire le parti difficili dell'uso di dati fisici su larga scala

Nikolaus West - inline image

Le capacità fondamentali necessarie per servire l'intero percorso dei dati dalla raccolta al modello sono visualizzazione, interrogazione analitica, trasformazione e addestramento. Tutte queste capacità devono gestire dati multi-frequenza e multimodali che possono portare semantiche robotiche come relazioni 3D o forma. Per evitare bug e dati inconsistenti, è necessario gestire le sottigliezze di questo tipo di dati in modo coerente ovunque vengano utilizzati. Ad esempio, l'allineamento temporale e le trasformazioni 3D dovrebbero comportarsi in modo coerente in pre-elaborazione, interrogazione, visualizzazione e revisione del dataset.

Per rendere facile iterare sia sul ciclo dati-sperimento che sugli strumenti che lo alimentano, è necessario costruire su un singolo livello dati unificato che renda i passaggi banali e le applicazioni sovrastanti semplici. Ciò significa che il livello dati deve essere abbastanza flessibile da gestire i requisiti di tutte le capacità applicative e di calcolo fondamentali. Ad esempio, visualizzazione e calcolo richiedono entrambi un accesso casuale veloce a serie temporali multimodali, mentre le interrogazioni analitiche richiedono scansioni efficienti delle colonne, e sia il calcolo di post-elaborazione su larga scala (CPU) che l'addestramento (GPU) richiedono streaming parallelo di dati ad alta larghezza di banda.

I dati fisici si comportano fondamentalmente in modo diverso dai dati web e aziendali, il che significa che beneficiano di diverse astrazioni di archiviazione e interrogazione.

L'unità di archiviazione principale per i dati fisici è un chunk di colonna

I dati fisici hanno due caratteristiche distintive:

La prima è che sono multi-frequenza: diversi sensori registrano dati a frequenze molto diverse. Il GPS potrebbe essere a 1-10Hz, le telecamere a 10-30Hz, gli angoli delle articolazioni a 100-200Hz e l'IMU a 1kHz. In post-elaborazione potresti calcolare embedding semantici per ogni decimo fotogramma della telecamera o descrizioni della scena all'inizio e alla fine di ogni episodio.

La seconda è che sono multimodali: diversi sensori registrano dati di dimensioni molto diverse. L'IMU e il GPS necessitano solo di una manciata di byte per codificare un paio di numeri, mentre una telecamera RGB può utilizzare molti MB per ogni fotogramma.

Se dovessi archiviare una registrazione robotica in una tabella in cui una riga rappresenta un timestamp e una colonna rappresenta un flusso di dati, l'aspetto multi-frequenza renderebbe generalmente questa tabella molto sparsa; per qualsiasi riga data, la maggior parte delle colonne è probabilmente vuota. L'aspetto multimodale dei dati porta a un grande squilibrio di memoria poiché una singola riga può contenere celle che differiscono in dimensioni per ordini di grandezza. Le infrastrutture tabulari esistenti gestiscono questa combinazione molto male.

I dati multi-frequenza e multimodali dovrebbero essere archiviati in chunk che contengono ciascuno sottoinsiemi delle righe e delle colonne di un dataset. La capacità, ad esempio, di posizionare un milione di campioni IMU in un chunk e solo pochi pacchetti video in un altro chunk consente di risolvere sia i problemi di sparsità che di squilibrio di memoria.

Nikolaus West - inline image

All'interno del chunk, l'archiviazione orientata alle colonne ottimizza per una migliore compressione e query di scansione delle colonne, mentre l'archiviazione orientata alle righe ottimizza per scritture semplici.

In Rerun crediamo che i chunk di colonna rappresentino il miglior compromesso per i sistemi di dati di apprendimento robotico, e abbiamo standardizzato la nostra architettura attorno ad essi come astrazione di archiviazione principale.

Il formato file .rrd di Rerun è costruito attorno ai chunk di colonna

Il formato file nativo di Rerun, .rrd, è la rappresentazione su disco dell'astrazione del chunk di colonna. Internamente, ogni chunk di colonna è codificato come un batch di record Apache Arrow insieme a metadati semantici che descrivono come i dati dovrebbero essere interpretati. Apache Arrow è lo standard industriale per la scienza dei dati, e usare Arrow significa che abbiamo un percorso veloce a copia zero verso DataFusion, Pandas e Polars.

Nikolaus West - inline image

I metadati in ogni chunk contengono informazioni semantiche su come interpretare i dati ("questo è un sensore IMU, questo è un GPS, …") in modo che possano essere trasportati attraverso pipeline di elaborazione e ancora interpretati e visualizzati automaticamente.

I chunk di colonna codificati sono avvolti in messaggi protobuf e concatenati per formare un file .rrd. Un footer alla fine del file punta a un indice, consentendo un accesso casuale veloce ai singoli chunk senza scansionare l'intero file.

Nikolaus West - inline image

Confronti con altri formati

Apache Parquet è un formato su disco colonnare, comunemente usato insieme ad Arrow. Organizza i suoi dati in gruppi di righe, ma a differenza dei chunk in .rrd, questi gruppi non possono sovrapporsi: ogni gruppo di righe contiene tutte le colonne su un intervallo denso di righe. Questo lo rende inadatto per dati robotici multi-frequenza e multimodali. Puoi aggiungere nuove righe, ma non puoi aggiungere nuove colonne (nessuna evoluzione dello schema).

MCAP è un formato per registrare log robotici sul tuo robot. È progettato per essere veloce e flessibile da scrivere, con una forte compatibilità ROS. Tuttavia, è essenzialmente un formato contenitore di messaggi opachi (codificati con JSON, protobuf, CBOR, ecc.) e non ottimizzato per query analitiche colonnari. Anche scansioni e join grandi sono lenti, poiché devi decodificare ogni messaggio.

Lance è un nuovo formato, esplicitamente costruito per dati multimodali e accesso casuale (estremamente importante per l'addestramento). A differenza di Parquet, supporta l'evoluzione dello schema. Tuttavia, un dataset Lance è ancora una pila verticale di frammenti allineati per riga, quindi i flussi multi-frequenza si gonfieranno di null.

NCore è un nuovo formato di Nvidia, costruito per la ricostruzione neurale. Il multi-frequenza è supportato nativamente tramite timestamp per componente e l'allineamento spaziale tramite un grafo di pose. Tuttavia, lo schema è chiuso (componenti sensore canonici, non dati arbitrari definiti dall'utente), è basato su Zarr piuttosto che nativo Arrow, e non è costruito per servire un motore di query SQL/dataframe generico.

Ogni funzionalità di cui il tuo team ha bisogno che un formato file non fornisce significa un'altra pipeline da mantenere sincronizzata e strumenti aggiuntivi da imparare per il successo del tuo team. Il formato di Rerun è l'unica opzione che può servire tutti i casi d'uso necessari per trasformare le registrazioni robotiche in intelligenza. Ti permette di mantenere i dati con timestamp originali, pur potendo interrogare e visualizzare dalla stessa fonte dati e trasmettere all'addestramento. Ha abbastanza struttura per costruire sistemi dati unificati sopra, ma è abbastanza flessibile da ottimizzare per diversi pattern di lettura e scrittura.

Un livello di indicizzazione, schema e metadati sopra i chunk di colonna semplifica l'uso di dati fisici su larga scala

Scansionare tutti i chunk in un dataset per analizzare un singolo segnale scala male anche per dataset piccoli, quindi per usarli efficacemente hai bisogno di un livello di metadati e indicizzazione che possa aiutare a trovare i chunk giusti per qualsiasi query. Questo assomiglia molto al classico pattern data lakehouse. Nel nostro caso, un singolo dataset o registrazione è composto da chunk eterogenei che non condividono lo stesso schema. Gli strumenti classici di elaborazione dati sono costruiti per gestire tabelle con uno schema uniforme. Un livello di indicizzazione e metadati in stile lakehouse per dati fisici deve quindi anche tenere traccia di questi schemi individuali in modo da poter materializzare schemi fusi di qualsiasi flusso al volo, così che gli strumenti classici possano funzionare. Ad esempio, se aggiorni il tuo IMU a uno che pubblica dati di campo magnetico nei suoi messaggi, questa aggiunta è compatibile con il tuo IMU più vecchio che non conteneva questo campo, senza bisogno di riscrivere i dati storici per compatibilità.

Nikolaus West - inline image

I chunk di colonna abbinati a un'indicizzazione efficiente ti permettono di recuperare esattamente i dati di cui hai bisogno senza pagare una penalità per flussi non correlati archiviati accanto. Non devi scegliere tra rendere veloci le operazioni comuni e poter inseguire bug a coda lunga perché hai esportato dati comuni in un warehouse separato.

Oltre ai benefici di prestazioni, questo livello ci permette di astrarre i file e presentare un'API unificata per tutti gli utenti di dati fisici nei livelli superiori. Spesso i dati robotici sono archiviati in un file e la calibrazione in un altro; astrarre questi dettagli implementativi è una parte importante della riduzione dell'attrito dei dati e della semplificazione del livello di calcolo e applicazione.

L'elaborazione su larga scala e l'addestramento richiedono streaming selettivo direttamente dall'object storage

I dataset di apprendimento robotico possono già diventare molto grandi e lo diventeranno ancora di più man mano che i team seguono le leggi di scala per ottenere modelli sempre più capaci. Per elaborare questa scala di dati spesso è necessario distribuire il lavoro a un gran numero di CPU per la post-elaborazione o GPU per l'addestramento. In questi casi è importante che il throughput dei dati possa scalare con le esigenze di questo calcolo.

Sia per massimizzare le prestazioni che per minimizzare i costi di uscita, si desidera eseguire il calcolo vicino ai dati. Allo stesso tempo, il calcolo GPU può essere difficile da ottenere, quindi molti team finiscono per noleggiare in diverse località nel tempo. Tutti questi fattori significano che si desidera poter separare l'archiviazione dai servizi che gestiscono l'indicizzazione e i metadati.

Nikolaus West - inline image

In Rerun, le query partono dal Rerun SDK che poi interroga Rerun Hub, responsabile di sapere quali chunk sono necessari per risolvere la query. A seconda dell'impostazione, l'SDK richiede i chunk tramite un proxy cache in Rerun Hub, o intervalli di byte sull'object storage. Ciò consente un'API di accesso semplificata, streaming selettivo dei chunk e la massima larghezza di banda di streaming dall'object storage sottostante.

Rerun SDK 0.32 è un toolkit dati unificato per l'apprendimento robotico

Rerun 0.32 è il più grande rilascio da quando è stato reso open source per la prima volta a febbraio 2023. Espande i casi d'uso pratici dell'SDK dalla registrazione, visualizzazione e interrogazione più semplice all'intero percorso dei dati dalla raccolta all'addestramento. Quello che segue è un tour delle nuove funzionalità che evidenziano questa espansione. Dai un'occhiata alle note di rilascio per maggiori dettagli.

Un formato file stabile con API Python a livello di chunk

In Rerun 0.23 abbiamo annunciato la compatibilità all'indietro versione-per-versione per il formato file .rrd di Rerun. In pratica non abbiamo mai rotto la compatibilità tra versioni da allora e ora ci sentiamo fiduciosi di promettere una compatibilità all'indietro generale sul formato file. Continueremo a evolvere il formato per spingere capacità e prestazioni, ma i vecchi dati si caricheranno sempre.

Prima della 0.32, potevi scrivere file .rrd solo usando un importatore da un altro formato o le API di livello superiore log o send_columns, e l'unico modo per leggere i dati era attraverso query dataframe o SQL. Con questo rilascio introduciamo ora API di lettura e scrittura a livello di chunk, che ti danno un controllo preciso sulla forma esatta dei tuoi dati.

Presi insieme, questi due cambiamenti significano che .rrd è abbastanza maturo per un'ampia serie di team su cui costruire i propri livelli dati.

API di elaborazione chunk per il wrangling di dati nativi robotici

I dati robotici sono spesso disordinati. Normalizzare dati da più fonti in qualcosa che i team possano analizzare e su cui addestrare diventa rapidamente complesso. Questa parte della pipeline dati consiste spesso in script Python messi insieme che sono lenti e pieni di bug sottili.

Per risolvere questi problemi stiamo introducendo un nuovo set di API di elaborazione chunk (sperimentali). Forniscono un'interfaccia di caricamento uniforme per formati come .rrd, MCAP, Parquet e URDF che producono flussi di chunk Apache Arrow. Puoi quindi definire facilmente pipeline di elaborazione sopra questi flussi.

I dati robotici spesso si presentano sotto forma di struct profondamente annidati e la normalizzazione e il wrangling dei dati spesso significano rimodellare, convertire e trasformare il loro contenuto. Per soddisfare questa esigenza stiamo anche rilasciando Lenses, un linguaggio dichiarativo per selezionare e trasformare questo tipo di dati, ispirato a jq.

Queste API sono state esplicitamente progettate e testate pensando agli agenti di codifica, e scopriamo che hanno molta più facilità a produrre codice corretto ed efficiente con le API di elaborazione chunk di Rerun che con Python generico. In futuro queste trasformazioni di elaborazione chunk potranno essere eseguite nel visualizzatore e nel cloud tramite Rerun Hub, oltre all'attuale esecutore lato SDK.

Supporto integrato ampliato per tipi MCAP, ROS 2 e visualizzazioni robotiche

Riteniamo fondamentale che sia facile ingerire e rendere utili tutti i dati robotici in Rerun. Allo stesso tempo, ci sono molti dati che possono essere gestiti perfettamente senza personalizzazione, e continuiamo a migliorare quell'esperienza a ogni rilascio. La 0.32 porta prestazioni migliorate e più supporto out-of-the-box per MCAP e tipi ROS 2 comuni, oltre a un'espansione delle visualizzazioni disponibili. Vedi l'elenco aggiornato dei messaggi con supporto integrato qui.

Le griglie di occupazione, o mappe 2D in 3D, sono importanti per i robot mobili e sono state una funzionalità molto richiesta in Rerun per un po'. La 0.32 aggiunge quindi il nuovo GridMap archetype e visualizzatore, abbinato al supporto integrato per i corrispondenti messaggi ROS 2.

Un'altra richiesta comune è stata la capacità di visualizzare i cambiamenti di stato nel tempo. La 0.32 porta una nuova State Timeline View sperimentale. Se hai aspettato questa vista in Rerun, ci piacerebbe ricevere il tuo feedback su cosa altro vorresti vedere dalla vista.

Server di catalogo con query SQL o dataframe indicizzate sui contenuti di molte registrazioni su disco

Le API del catalogo in Rerun SDK ti permettono di scrivere query SQL o Dataframe completamente generiche su dataset robotici. Quando connesso a Rerun Hub, questo ha supportato dataset su larga scala per un po', mentre il server open source ha supportato solo dataset che entrano completamente in memoria. Con la 0.32 stiamo espandendo il server di catalogo open source per indicizzare intervalli di byte di file su disco locale, così ora puoi facilmente analizzare qualsiasi directory locale di registrazioni robotiche in file .rrd con solo l'SDK open source.

Una nuova interfaccia per la revisione rapida dei dataset per addestramento e valutazione

Nella 0.32 stiamo distribuendo la prima versione del nostro strumento di revisione dei dataset (sperimentale). Ti permette di dare un'occhiata rapida a molte registrazioni contemporaneamente, per cacciare anomalie e costruire intuizione sui tuoi dati. Ti permette anche di contrassegnare le registrazioni, rendendolo utile come semplice strumento di annotazione. La vista è configurata usando un normale blueprint di Rerun.

Molti team di apprendimento robotico hanno chiesto questa funzionalità e ci piacerebbe ricevere tutto il tuo feedback su come trasformarlo nello strumento di revisione dei dataset più efficiente possibile.

Un dataloader per l'apprendimento robotico che supporta il mixing semplice di dataset e seek casuali in file .rrd

Abbiamo iniziato a lavorare su una delle funzionalità più richieste: un dataloader PyTorch per Rerun! Il nuovo modulo rerun.experimental.dataloader espone le registrazioni Rerun come dataset PyTorch iterabili o in stile mappa, trasmettendo in streaming immagini codificate, scalari e video compressi (h264/h265/av1) al volo. L'accesso casuale, il prefetching multi-worker e il supporto DDP funzionano out-of-the-box. È compatibile sia con il server di catalogo OSS che con il nostro prodotto commerciale Rerun Hub per quando vuoi addestrare direttamente su grandi dataset supportati da object storage.

Siamo incredibilmente entusiasti di rilasciare questo dataloader di addestramento per la comunità per iniziare a sperimentare. Intendiamo renderlo il miglior dataloader in streaming per l'apprendimento robotico immaginabile e ci piacerebbe ricevere tutto il tuo feedback e le tue richieste.

Essere in grado di addestrare direttamente dallo stesso livello dati che usi per visualizzazione, analisi e trasformazione è cruciale per i team per poter veramente unificare i propri livelli dati, ed è così che possono davvero semplificare i sistemi e accelerare i cicli di esperimento.

Rerun Hub è in anteprima privata e costruito per scalare

Nell'ultimo anno e mezzo abbiamo lavorato silenziosamente per costruire il livello dati necessario ad accelerare il portare l'apprendimento robotico a preziose applicazioni reali insieme a un primo gruppo di grandi startup e laboratori. Attualmente gestiamo petabyte di dati di addestramento robotico e siamo a un punto in cui siamo pronti ad accogliere più team nel nostro prodotto commerciale Rerun Hub, che ora entra in anteprima privata.

Rerun Hub è un catalogo e motore di archiviazione che si connette al Rerun SDK open source per rendere facile lavorare con dati di apprendimento robotico dalla raccolta all'addestramento e al deployment. Agisce come un livello di gestione e accesso uniforme che alimenta tutte le capacità dati fondamentali: ingestione, visualizzazione, interrogazioni analitiche, trasformazione e addestramento. I dati possono essere archiviati in qualsiasi object storage compatibile con S3, e Rerun Hub media efficientemente lo streaming selettivo diretto dall'object storage al Rerun SDK nei tuoi job di addestramento o post-elaborazione massivamente paralleli. L'hub centralizzato semplifica anche la collaborazione e la revisione automatizzata rendendo facile costruire link dati condivisibili sia tramite codice che interattivamente nel visualizzatore.

Nikolaus West - inline image

Se stai costruendo robot intelligenti e sei interessato ad aggiornare il tuo livello dati per iterare più velocemente, contattaci. Per i team che hanno già raggiunto una certa scala con sistemi esistenti complessi, Rerun è facile da adottare gradualmente e possiamo anche offrire ingegneri dispiegati sul campo per aiutarti ad aggiornare senza spostare le persone chiave da altre priorità principali.

Salva con un clic

Leggi in profondità gli articoli virali con l’AI di YouMind

Salva la fonte, fai domande mirate, riassumi l’argomentazione e trasforma un articolo virale in note riutilizzabili in un unico spazio di lavoro AI.

Scopri YouMind
Per i creator

Trasforma il tuo Markdown in un articolo 𝕏 pulito

Quando pubblichi i tuoi testi lunghi, formattare immagini, tabelle e blocchi di codice per 𝕏 è una seccatura. YouMind trasforma un'intera bozza Markdown in un articolo 𝕏 pulito e pronto da pubblicare.

Prova Markdown verso 𝕏

Altri pattern da decodificare

Articoli virali recenti

Esplora altri articoli virali