在Robot Foundation Model(RFM)系列,我們已經介紹了Pi0RFM EP01:Pi和π0具身基礎模型和OctoRFM EP02:Octo,今天這期文章,我們將介紹一個國產具身大模型Robotics Diffusion Transformer (RDT) 1B: A DIFFUSION FOUNDATION MODEL FOR BIMANUAL MANIPULATION),這是一個基於Diffusion Transformers (DiTs)的雙臂操作擴散模型。
今天這篇文章主要來自於對RDT 1B的一作劉松銘博士的訪談記錄,除了瞭解RDT 1B本身的特性外,我也和劉博士諮詢了關於目前幾個主流的機器人大模型在模型框架上的區別。值得一提的是,RDT的兩位一作劉松銘博士和吳凌軒博士以及其他共同作者都是清華大學計算機系朱軍老師組裡的博士生,RDT的效果也得益於他們組裡豐富的大模型開發經驗。在當下的具身智慧領域,其實非常需要有大模型能力的人才和科研成果融合到機器人領域,期待這個融合的過程加速。
1. RDT-1B介紹
2.RDT模型框架
3.RDT和與OCTO/HPT模型結構的區別
4.RDT和ACT/Diffusion Policy模型結構的區別
5. RDT與Pi0的對比
6. tr+df head vs. tr for diffusion
7. 一些問題
1. RDT-1B介紹
RDT-1B是一個具有 12億引數的機器人大模型,是目前針對機器人操作領域最大的基於擴散的基礎模型。它在目前規模最大的多機器人資料集集合上進行了預訓練,涵蓋 46個數據集和超過100萬段操作記錄。
為了增強其雙臂操作能力,我們在 ALOHA雙臂機器人上收集了6000多段操作記錄(這是迄今為止最大的雙臂資料集之一),並用於模型的微調。RDT-1B在靈巧性、零樣本泛化能力和小樣本學習方面樹立了新的標杆。該模型支援幾乎所有現代機械臂的控制,包括雙臂系統、關節控制、末端執行器(EEF),甚至還支援輪式運動。
我們工作的一個顯著優勢在於,我們專注於雙臂任務。這是一個非常難的領域,之前幾乎沒有團隊能在雙臂任務上取得突破。目前大多數機器人大模型包括谷歌的RT系列,位元組的GR系列都是單臂任務。而我們是目前唯一一個明確針對雙臂任務進行研究並取得實際效果的團隊。這一點,是我們的核心競爭力。雙臂任務的動作空間維度更高,相當於翻了一倍,這導致其分佈更加複雜。正因為我們設計了適合處理這種複雜性的結構,使得我們的模型可以成功應對雙臂任務。動作本身是受非線性物理規律約束的。在這種條件下,雙臂任務就更加有挑戰性,因此他們選擇不做雙臂任務也是可以理解的。
RDT任務成功率相較於之前的一些基線模型,比如 OpenVLA和OCTO,都有明顯的提升。至於HPT,我們沒有測試,因為它和我們是同期工作——HPT大約在9月30號釋出,而我們那時候已經交稿了。所以沒有機會對比,也不清楚它的具體情況。Octo和HPT在實現上有許多相似的地方,本質上是一類方法的不同代表。從這個角度來看,我不認為 HPT的表現會顯著優於OCTO。而我們實驗中發現,OCTO的效果其實並不理想。
至於成功率,他的評價維度有很多角度,如果複雜和簡單的任務放在一起,我們的平均成功率可以到60%-70%。是目前效果最好的。
2.RDT模型框架
我們這個工作主要是探討如何在已有資料的基礎上進行更高效的訓練,因此,我們選擇了使用Diffusion模型與Transformer的結合結構,這種結構在文生影片中有廣泛應用,特別是DiT (Diffusion Transformers)和UViT(a Vision Transformers)模型。我們將這些模型遷移到具身場景,希望能夠展現出類似文生圖和文生影片中的可擴充套件性。為此,我們做了一些調整和訓練,使得模型能夠在不同機器人的資料上展現更大的效率。我們的工作主要集中在模型設計和異構資料訓練這兩個方面。

3.RDT和與OCTO/HPT模型結構的區別
有相似之處,但也存在一些區別。HPT和OCTO採用的Transformer結構,整體上是以Transformer為主幹,加上Diffusion head或MSE head,這種做法和我們的有兩點不同。首先,他們的Diffusion僅在較小的head上發生,而我們的整個主幹網路都用來做denoising。我們會認為較小的Diffusion head會極大限制地模型對多峰動作分佈的表達能力。Sergey教授在最近的talk中也提到了這一點,稱這是他們在Octo中做的不好的地方。因為它在某些情況下無法充分表達動作空間中的複雜分佈,尤其是多峰分佈的問題。因此,我們更傾向於整體採用Diffusion結構,類似於影片模型和影像生成模型,這樣可以最大化模型的生成能力。
有些人可能會擔心Diffusion模型在取樣時可能會比較慢,或者說取樣速度較慢會影響生成質量。但在我們的實驗中,這種擔心並沒有顯著體現。我們採用了一些推理加速方法,使得模型的處理速度相當快。未來,加入Diffusion Distillation相關的技巧,進一步提升推理速度,甚至可以做到1步取樣(完全解決取樣速度的問題)。在當前的情況下,推理速度不是問題,至少不會比自回歸模型或傳統Transformer模型差。關於Diffusion模型的優勢,我認為它在loss計算上非常高效,能夠從連續空間中取樣,這種方法比其他方法更能有效建模複雜的分佈。
與OCTO和HPT的模型結構的另一個不同之處在於,他們都希望在不同的機器人本體上訓練獨立的encoder/decoder。例如,HPT可能認為訓練一個主幹網路就足夠了,對於不同機器人的不同動作空間訓練不同的encoder/decoder。這種做法有一些問題。首先,HPT直接將圖片等資料作為token輸入Transformer進行self-attention計算,這會帶來較大的計算開銷,會比Diffusion Model慢很多,特別是在處理影像時,token數量比動作token要大很多。如果同時涉及多個感測器,可能會有幾百甚至上千個token,此時進行self-attention計算時複雜度會呈平方增長,計算效率較低。相比之下,DiT結構採用的是cross attention,主體是action token,action token數量較少,通常只有幾十個,這樣與影片或影像進行cross-attention時,計算量會大大降低。
如果為了不同的動作空間訓練不同的encoder。那麼會導致不同機器人的動作空間是不同的。要利用好不同機器人的資料,從不同機器人中學習到共享的物理規律,就需要把這些不同的空間進行對齊。現在還沒有明確的對齊策略。有可能需要不同機器人在相同場景做相同任務的pair–wise資料,但這樣的資料顯然是非常稀缺的。作為對比,我們的encoder、decoder和每一層網路都是在不同機器人中共享的,自然就是在統一的空間下學習,更容易學習到共享的規律。
再談到HPT的一種做法——透過不同的encoder來訓練不同的本體和結構。這種方法需要足夠的資料量才能學習到不同本體的編碼格式,而資料量不足時,這種方式會遇到困難。語言模型的成功依賴於足夠的資料來學習靈活的編碼格式,而在具身任務中,不同本體的資料量可能差異很大,特別是一些機器人可能沒有足夠的資料來學習合適的編碼。
在我們的模型中,我們選擇了一個更為統一的資料格式,這樣可以讓不同的機器人都能相容。我們曾經認為這種做法很難,但事實上,它並沒有我們想象的那麼複雜。特別是在機械臂的動作空間並沒有我們想象的那麼複雜,很多動作的維度實際上是固定的,物理意義明確的。透過設計一個通用的格式,機器人就能夠更容易地學習和理解這些動作的物理意義,而不需要去推斷這些維度的含義。這樣做能夠減少模型在學習過程中的不確定性,提高學習效率。
此外,我們不對每個機器人單獨做歸一化,而是統一地處理所有的機器人的動作空間。這樣也是為了避免不同機器人的空間不一樣。此外,我們發現大部分機器人的物理量都是有明確的意義的,彼此間其實在scale上區別不大,例如末端夾爪的空間位置大家都不太可能會超出±3米。所以這樣處理其實問題不大,不同資料集的物理意義可以明確表示。比如,0代表靜止,1代表每秒一米,位置的0代表原點,1代表一米等。這些物理意義在機器人之間是統一的。因此,選擇合適的單位後,不同機器人之間的資料能夠協同作用,提高模型的效果。相比之下,做歸一化會破壞這些物理意義,尤其是在資料量很小的情況下,歸一化的效果反而可能適得其反。
4.RDT和ACT/Diffusion Policy模型結構的區別
模型框架的區別在於,對於ACT或者Diffusion Policy這類模型來說,他們是不會輸入語言的,而且他們不會涉及混合的資料訓練,也不會涉及多工學習。Diffusion Policy,他們能想到用diffusion來做動作生成這件事不難,難得是他們把效果做的比較好,向人們證明了這條路可以走的通。所以他們提出的模型結構不那麼重要,因為這個是可以改的,他們更重要的是提出了我要用這個模型做這個東西,比如我要用VAE或者用Diffusion Model來做這些東西,然後後面的人再去改結構,讓他更加的scalable,或者加上更豐富的資料模態,和更多的機器人任務。
關於Diffusion Policy,Diffusion模型的優勢在於,它在高維連續空間中進行取樣的能力非常強,action滿足了這一點,雖然它的維度不像影像那樣高,但仍然算是高維的,這使得它能夠較好地建模這種高維空間中的機率分佈,建模的也更加精細。Diffusion模型的劣勢是取樣速度較慢,但在action任務中,這個問題並不顯著。因為action的維度本身並沒有那麼高,因此對action來說,它取樣速度不會很慢,同時在建模上具有很強的能力,它能夠很好地建模diversity(多樣性)和質量。這也是為什麼Diffusion模型在文生影像和文生影片領域非常成功的原因,它的效果明顯優於其他的機率生成模型。因此,Diffusion模型在action任務中也能夠取得不錯的結果,這並不是一件特別難以理解的事情。
至於ACT,它採用的是另一種方式,主要是用VAE來建模。VAE也算是一種比較強的模型,但它也有一些缺點。特別是在取樣質量上,VAE往往不如Diffusion模型,因為VAE在某些假設上存在問題。比如,VAE需要假設高斯潛在變數,這使得它在建模連續分佈時存在一定的侷限性。很多理論研究也討論過這個問題,為什麼VAE在建模分佈時容易出現模糊,diversity也比不上Diffusion模型。
VAE在影像建模時已經有了這些問題,在action任務中同樣會面臨類似的問題。它的精度不夠高,導致它的效能不如Diffusion模型。實際上,生成模型領域有很多關於VAE和Diffusion模型的討論。我自己也在論文中探討過為什麼沒有選擇VAE,原因類似。我認為,如果有研究人員專門對具身任務做VAE與Diffusion模型的理論對比研究,會是一個非常有趣的課題。
5. RDT與Pi0的對比
OCTO 和 HPT 都是較大的 Transformer 模型,其結構類似於自迴歸模型,比如 GPT 的那種結構。它的輸出是一個 token,然後這個 token 會接一個 Diffusion Head 進行解碼。也可以理解為,Diffusion 網路會以這個小的 token 為條件進行計算。這種 Diffusion 網路通常很小,可能只有幾十 MB。
另一類方法,比如 RDT 和 Pi0,和 OCTO 類方法的主要區別在於它們的核心計算分佈。RDT 和 Pi0 的主要計算量集中在較大的 Diffusion 網路中。比如 Pi0 的 Diffusion 網路大約有 600 多 MB,而 RDT 的網路達到了 1B 引數規模。這種設計透過增加 Diffusion 網路的規模,顯著提升了模型的表達能力。
相比之下,OCTO 和 HPT 的 Diffusion Head 很小。這種設計雖然簡化了 Diffusion 部分,但我們發現,這樣的方式會限制模型的表達能力。實際上,OCTO 和 HPT 的主要計算量集中在 Transformer 主體上,而 Diffusion 網路只是一個相對簡單的小模組。這種設計存在一定的建模能力缺陷。對於 RDT 和 Pi0,它們都將主要的計算量集中在 Diffusion 網路中,Diffusion 是整個動作生成過程中的核心計算部分。這也是兩類方法的主要區別。
此外,RDT 和 Pi0 在條件處理(Conditioning)方式上也有所不同。 Pi0 會將條件和一個視覺語言模型(VLM)的 key 和 value 進行互動,雖然這種方法有一定的特色,但我認為這並不是方法的本質區別。真正的核心區別還是計算量的分佈——是集中在 Transformer 的主體部分,還是 Diffusion 網路中。
總結來說,OCTO 和 HPT 的設計是典型的將計算量集中在 Transformer 主幹上,而 Diffusion 網路較小。這種方法在建模能力上有一定限制。而 RDT 和 Pi0 將計算量集中在 Diffusion 網路中,其 Diffusion 模組是動作生成中的主要計算部分。這是兩類方法的核心差異,而其他細節處理上的區別則是一些非本質的特點。
6. RDT使用的Diffusion Transformers與其他機器人基礎模型使用的Transformer有什麼不同
Diffusion本身是一個建模的模式,可以理解為一個loss函式,就是我要用Diffusion的loss來訓練模型,然後用Diffusion的取樣方式來訓練他。它的核心是透過一個網路來做denoising,但對於網路架構的要求並不嚴格,可以是任意網路結構,很多研究使用的是CNN網路,而並沒有特別強調必須用特定的結構。比如,Diffusion Policy這篇文章中,他主要用的的網路結構就是CNN,而且他發現CNN實驗效果比Transformer的效果還好。可能他的Transformer的設計還有問題,比如它的歸一化方法不合適,或模態注入方式不夠精細。但這個不是它的問題,因為它主體不是做網路架構的。
所以,RDT用Transformer的意思是,在Diffusion的基礎上,我怎麼設計Transformer,怎麼用Transformer來去實現這個,使它能高效處理多模態資料,並且能夠更好地擴充套件。比如,能夠喂進去更多的資料,能夠更加高效的去學更多的資料,也能學多機器人的資料,這是Transformer更加擅長做的事情。這個是Diffusion+Transformer的一個特點。
另一個方案,Transformer主體的網路,這個主要講的就是自迴歸,這就是語言模型VLM遷移過來的。這是另一套思路,他的主體網路架構是在做Next Token Prediction,這個和Diffusion的差別非常大。他的代表比如RT系列,OpenVLA,他們以Transformer做主幹網路,來做token生成。在這類網路中,Transformer作為主體架構,資料格式可能不太固定,但基本上像語言模型一樣,它將動作、影像等視為語言,將其轉換為token,然後輸入到self-attention層,進行自注意力計算,最終生成tokens。
這些模型的思路就是將資料像語言一樣處理,使用類似語言模型的方式來解決問題——將所有輸入資料都當作“語言”,然後生成tokens。至於解碼過程,通常在生成tokens之後,模型會透過一個線性層(或MLP層)進行解碼,最終得到預測結果。例如,像RT系列和GR系列模型就是使用離散的機率。這種方法透過將速度等連續變數(如從-1米到1米每秒的速度範圍)離散化成256個離散的值,並將其轉化為離散的tokens,進而處理。這就相當於將連續的速度值轉化為離散的類別。
分類問題的核心問題在於,對於動作空間中的連續資料(例如速度、位置等),使用離散化處理會丟失很多資訊。將一個連續的變數(如速度)離散化為多個分類標籤,雖然可以轉換成分類問題,但這樣會丟失數的大小關係。不同離散的bins是不同的類別,類別之間是沒有大小關係的,導致模型難以準確建模複雜的動作空間。實驗中,我們發現離散機率在處理簡單任務時效果尚可,但一旦任務變得複雜,精度就會顯著下降。
如果我們直接使用MSE迴歸,也存在相似的問題,尤其是在多維交錯的動作空間中,MSE可能會忽略各維度之間的聯合分佈,從而影響預測精度。因此,有的研究者希望能結合Diffusion模型的優勢,來彌補自迴歸模型的不足。比如,在Transformer模型的最後一層加入一個小的Diffusion模組,透過二次取樣來提升模型的精度和生成質量。
透過這種方式,我希望能夠在一定程度上彌補自迴歸模型的不足。這種方法可能可以緩解一些問題,但效果仍然有限。由於擴散模型的規模較小,它的表達能力不強,因此雖然可以提供一些補充,但依然不能完全彌補自迴歸架構的缺陷。我的理解是,可能是因為這個小Diffusion的結構,他Diffusion的部分太少了。他其實還是類似MSE的東西加上Diffusion的能力,但沒那麼強,但與純擴散模型相比,它的表現還是不如後者。畢竟,主幹如果是基於自迴歸的Transformer結構,其能力無法與基於擴散模型的主幹相比。
他們之所以使用Transformer來構建這種結構,核心思想是借鑑語言模型的能力。語言模型能夠處理多種資料格式,因為它能夠自動學習不同格式的特點,無需人為干預。然而,這種“偷懶”的做法也存在問題,帶來的負面影響是顯而易見的。例如,在建模方式上,很多潛在問題會因此被忽視。另一方面,格式不一樣的前提是資料量必須非常大,比如HPT和Octo這類方法。語言模型的資料量本身就足夠大,這使得它能學到不同格式之間的特點。比如,語法可以靈活變化,結論可以提前或推遲,原因可以放在前面或後面,甚至可以穿插圖片和其他內容。但對於機器人來說,資料量遠沒有語言這麼大,無法像語言模型那樣靈活處理各種格式。
在這種情況下,我認為不如先選擇一種通用的格式,或者說選取一種最大公約數,然後再進行人工填充。實際上,這樣的做法效果非常好,比預期的要好得多。雖然機器人的格式多樣,但沒有語言那麼複雜,透過人工選擇一個合適的空間來構建格式,完全可以實現預期目標,效果也很好。我更傾向於這種方法,即選擇一個最大公約數。這樣不僅不會引入偏差,反而有更多的優勢,能讓模型學到一些先驗知識,並且避免出現bug。透過這種方式,模型的表現會更加穩定,且效果會非常好。
關於目前的幾個機器人基礎模型使用的模型結構,我結合劉松銘給的講解和資料總結了以下圖片。GR系列是位元組的機器人基礎模型,RT系列是Goolge的機器人大模型,OpenVLA和Octo也是Goolge退出的機器人大模型,HPT是MIT推出的機器人大模型結構,他們的網路結構都是Transformer。和這些機器人大模型結構不同的是RDT和Pi0,這兩個的模型主體結構都是Diffusion Transformers,這個模型結構本質上是一個Diffusion Model,但採用了Transformer的可擴充套件能力。我(編者)作為一個外行簡單理解這兩類模型的核心區別就是他們都用了Transformer,不同之處在於Diffusion用的多還是少。RDT和Pi0用到的Diffusion更多,效果也更好。

7. 一些問題
最大公約數怎麼理解?
最大公約數體現在動作空間的統一上。我們之前的一個核心想法是,儘管每個機器人動作空間的表達方式不一樣——有的用速度,有的用力,有的用關節角度——但我們將所有可能的物理量都拼接在一起。具體來說,如果某個機器人有某種物理量,就填入相應的位置,如果沒有就跳過。我們把這些物理量統一編碼成一個128維的空間。
按理說,這樣的做法可能在語言和影像領域並不適用,因為在這些領域,格式的靈活性非常高,維度非常大,特別是語言模型中,詞彙的維度非常龐大,要求處理的空間維度會極其龐大。但是在機器人領域,雖然動作空間存在一定的變化,但其變化遠沒有語言那樣複雜。即使將一個十幾維的動作空間對映到128維的空間,實際上也不算很大,因為Transformer處理的語言模型的維度通常是幾千維,而128維對於我的Transformer來說還是相對較小。因此,它完全能夠處理這麼高維度的資料,並且可以直接用於訓練,無需進行降維處理。
怎麼理解維度?具體指什麼?
維度主要是指機器人動作的指令向量維度,比如速度、角速度、加速度或者方向。空間中的速度向量就是三維。每種機器人由於其功能不同,指令型別的維度也會有所差異。但如果把所有可能的指令維度列出來,其實也就100多種左右。語言涉及的維度就太多了,如果要處理不同的語法和句法,必須將其歸類成統一的格式。其實早期的語言模型就是這樣做的,但語言的複雜度太高,句法和語法幾乎不可列舉。可能列出來的型別就成千上萬種,進一步組合的話,規模就更大了。
怎麼理解PAD填充?
對於某些機器人他可能不需要特定維度,我們就去做PAD填充。舉個例子,假設我的資料具有多個維度,比如速度、加速度和位置,這些是經典的維度。而在某些場景中,比如我需要控制一個機器人,但它只需要位置這個維度,速度和加速度並不需要,那該怎麼辦呢?
我們可以為速度和加速度填充一個預設值。這樣一來,相當於將這些多餘的維度補齊,使得原本的動作空間被嵌入到一個更大的空間裡。這樣操作後,資料格式統一,系統仍然能夠正常處理。這就是“PAD填充”的核心思想。
為什麼開源?
我們對大家貢獻資料集並沒有硬性要求,因為我們的模型是開源的。我們認為最重要的一點是保持靈活性和自由度。我們投入了大量資源訓練出一個機器人基礎模型,希望它能在各種下游任務中發揮作用,而不僅僅是停留在研究階段。否則,這麼大的投入就失去了意義。
我們鼓勵大家基於我們的基礎模型,結合自己的資料進行微調,從而實現各種應用。透過我們的測試,發現這個模型的表現非常出色,不僅效果最好,而且其建模結構也非常強大。因此,我們希望這份努力不會被浪費,而是能真正被廣泛應用。
同時,透過大家在實際應用中的反饋,例如模型在哪些地方不夠靈活、還有哪些問題,我們可以進一步改進。我們會參考這些反饋資訊,在下一版的迭代中不斷最佳化模型,以推出更優質的版本。
References:
RDT-1B
https://rdt-robotics.github.io/rdt-robotics/
劉松銘博士主頁:
https://github.com/csuastt
DiT
https://arxiv.org/pdf/2212.09748
UViT
https://arxiv.org/pdf/2209.12152
原創不易,歡迎“點贊”“打賞”“在看”三連!
也歡迎加我微信交流!
