圖1:微軟研究院研究團隊開發的多模態互動系統,包括一個在大樓裡指路的機器人和一個在辦公室外充當私人助理的具有具體形象的對話機器人。中間圖是機器人的視角。
無論是為實驗構建原型系統的研究人員,還是為客戶構建和部署端到端解決方案的行業開發人員,任何有開發使用多模態流資料經驗和實時操作應用程式經驗的人,都可以證明該工程技術的難度是巨大的。在延遲約束下,這些應用程式通常需要在異構的元件技術陣列上無縫地協調計算。但現有的程式設計結構和平臺工具缺少關鍵的構造和基元,比如時間的表示和推斷、同步和資料融合的能力。對於這些應用程式,傳統用於時態資料視覺化和分析的工具無法使用,抑或這些工具並沒有被緊密地整合到開發週期中。這就導致研發人員的大部分工作(和程式碼)都花在了除錯和建立用於日誌記錄、監視、理解底層問題和應用程式效能的自定義基礎工具上,而不是建立應用程式本身。
為了應對這些挑戰,併為該領域的開發、實驗和研究奠定堅實的基礎,微軟研究院的研究員們建立了情景智慧平臺(Platform for Situated Intelligence),這是一個多模態整合人工智慧系統的開源框架。該框架提供了一個為處理多模態資料流而量身定做的現代化平臺、一套支援開發週期的豐富工具集以及促進快速原型設計和重用的元件開放生態系統。雖然情景智慧平臺是根據研究團隊在物理環境下互動系統和機器人方面的經驗建立的,但它的範圍和影響明顯更廣:任何處理流、多感測器資料、結合多種人工智慧技術、在延遲約束下執行的應用程式,都可以從該框架提供的功能中受益。
情景智慧平臺:https://www.microsoft.com/en-us/research/project/platform-situated-intelligence/
開源框架:http://www.github.com/Microsoft/psi
情景智慧平臺是一個基於.NET 標準的跨平臺框架。總的來說,該框架保留了託管程式語言的功能和軟體工程優勢,比如型別安全性和記憶體管理,同時滿足了多模態整合 AI 應用的特殊需求。
從一個較高的角度來看,使用情景智慧平臺構建的應用由在資料流上相互通訊的元件圖組成。元件可以封裝感測器,如麥克風和相機;特定的人工智慧技術,如語音識別器和物體檢測器;或任何其他自定義的計算單位。這個元件圖也被稱為應用程式管道(pipeline),是由應用程式開發人員以程式設計方式構造的。
例如,在一個場景中,我們使用麥克風和攝像頭來識別正在說話的人(這可能是較大的視聽應用程式中的一小部分)。其中,音訊流由語音活動檢測器處理,攝像頭中的影像透過唇動檢測器分析。之後,語音源檢測器元件將融合這些訊號,進而識別說話者。下圖顯示了這個管道的結構,程式碼片段則說明了元件例項化和相互連線的容易程度:
// create pipeline
var p = Pipeline.Create();
// instantiate components
var microphone = new AudioSource(p);
var camera = new MediaSource(p);
圖2:有了情景智慧平臺,開發人員可以很容易地例項化和連線元件,以構建多模態整合 AI 系統的處理管道。上面展示了一個示例管道的結構和相應的程式碼。
情景智慧平臺的 GitHub 資源庫包含了一個不斷發展的元件生態系統,這些元件包括各種感測器,包括攝像頭、麥克風和深度感測器等;同時也有處理技術,包括成像、音訊、視覺、語音和語言處理技術等;還有用於執行機器學習模型和訪問雲服務(如微軟 Azure 認知服務)的元件,等等。再加上前文所述的編寫應用程式管道的簡單性,這套現成的元件促進了再次利用,並支援快速原型設計。當然,該框架還允許開發人員輕鬆地編寫和使用新元件。
雖然基於元件的開發是一項重要的軟體工程技術,但情景智慧平臺所提供的好處和優勢遠不止於此。該框架提供了一個執行時系統(runtime)和現代化的流基礎平臺,這些基礎工具專門針對多模態整合AI應用程式的需求進行了定製和最佳化。
一旦建立了應用程式管道並呼叫了 Run() 方法,情景智慧平臺將負責執行管道。執行時系統在流上承載訊息,並透過排程訊息傳遞來編排元件的執行。在這個過程中,執行時系統利用了管道的並行性,其目標是在多核執行環境中高效使用 CPU 資源,同時在高負載下提供良好的效能降低。
圖3:情景智慧平臺執行時在流上排程訊息傳遞並協調元件的執行。
除了嚴格的效能要求外,當涉及到時間推理以及對資料同步和融合的支援時,多模態應用程式也有一組特定的需求。通常,元件可能需要同步或融合不同路徑的資料流。在上述示例中,語音源檢測器將來自語音活動檢測器的結果與來自唇動檢測器的結果進行融合。簡單的方法是在訊息到達融合元件時對它們進行配對。但是,如果語音活動檢測器和唇動檢測器元件擁有不同的延遲,則可能導致產生不正確的結果。因此,需要對資料流進行適當的協調,如對延遲進行統一。如果沒有適當的工具對這些操作進行支援,那麼就需要投入大量的開發工作來解決低階的同步和協調問題。
情景智慧平臺透過將時間作為底層流基礎結構中的主要構造來解決這些挑戰。元件建立的每個訊息都帶有一個包含其建立時間的包封。此外,包封包含一個原始時間,並由初始感測器元件進行分配,對應於與該訊息相關的初始訊號首次從現實世界進入管道的時間。當訊息透過應用程式管道向下遊流動時,此初始時間將隨每個訊息自動傳播,從而使所有元件都能夠知道延遲,也就是說,從訊息的初始時間到它實際到達應用程式管道中的給定元件所經過的確切時間。
初始時間為合適的同步和資料融合提供了基礎。實際上,情景智慧平臺框架提供了一套功能強大的操作,用於融合、同步、插值、取樣和視窗化,將底層的細節(如併發、緩衝和等待訊息到達)抽象在一起,從而使開發人員能夠專注於高階別的任務。
除了時間推理之外,多模態整合 AI 應用的另一個核心需求是對資料記錄和實驗的支援。多模態應用程式的開發通常是一個資料驅動的開發週期,在該週期中,資料被收集並用於調優和迭代地改進應用程式。情景智慧平臺中的流基礎工具支援從底層開始的高吞吐量資料日誌記錄。執行時系統動態、自動地生成高效的序列化程式碼,將任何資料型別持久化到磁碟,從而最大限度地減少開發人員的工作。而永續性系統被設計為儘可能多、儘可能快地支援日誌記錄。
永續性系統還記錄了每個單獨訊息的時間資訊,從而支援管道重播場景。在開發複雜的整合應用程式時,必須透過一遍又一遍地“實時”執行來調優或除錯應用程式,這通常是非常耗時和昂貴的。而使用情景智慧平臺,開發人員可以試驗和執行管道,其中一些流會“重播”以前在磁碟上捕獲的會話。用於資料融合和同步的流運算子則確保了結果的可重複性,並且管道可以以重播模式執行,這一方法與實時感測器資料執行時相同。
上面只是介紹了情景智慧平臺基礎設施的幾個核心概念和功能。該框架還提供了許多附加功能來處理流資料,比如一種用於操作通用資料流的豐富的流運算子語言,各種調節流量的控制和節流機制,自動資料克隆以確保併發執行環境中的元件隔離,支援構建結構依賴於流經管道資料的動態管道,以及當管道處於穩定狀態時,用於最小化垃圾收集的共享記憶體機制和最佳化。
儘管與流資料一起工作的多模態整合 AI 應用需要特定的平臺工具來高效執行,但它們更廣泛的開發週期也有一些特定的需求,然而目前可用的通用軟體工具還不能充分滿足這些需求。除錯、維護和開發通常是資料驅動的,且涉及執行應用程式、檢查結果、診斷和微調的多次迭代。視覺化各種元件在一段時間內生成的資料以及檢查元件如何處理特定資料點的能力至關重要。對收集的資料進行分析和查詢、對資料的註釋和直接互動以及執行批次處理任務的能力則可以進一步加速開發。
該框架透過情景智慧平臺 Studio 解決了其中的幾個需求,這是一個支援多模態、時態資料視覺化、註釋和處理的工具。下面的影片展示了該工具的實際應用。一名開發人員正在視覺化透過樣例應用程式收集的資料,其中 Azure Kinect 裝置用於檢測和識別使用者所指向的物件。該樣例應用程式確定了人的指向方向,將光線與深度圖中的點雲相交,再將交點投射回 RGB 相機,然後在其周圍裁剪影像,並執行用於物件檢測的雲服務。該影片展示了應用程式生成的不同資料流的各種視覺化工具。
透過使用情景智慧平臺 Studio,開發人員可以使用各種各樣的視覺化工具——從簡單的數字流到音訊、影片、3D 物件和直方圖——在應用程式持久化的資料流上構建複雜的視覺化。而且開發人員還可以很容易地瀏覽資料,檢查數值,選擇片段並以不同的速度播放片段。該視覺化工具可以以多種方式配置,開發人員可以為自己的資料型別建立和新增定製的視覺化器。該工具還允許在佈局中輕鬆組合多個視覺化工具,並且這些佈局可以儲存和共享。此外,資料視覺化不僅可以基於儲存在磁碟上的資料離線完成,還可以在應用程式執行時實時完成。而且視覺化基礎設施還允許開發人員在自己的應用程式中使用這些視覺化工具。
情景智慧平臺 Studio 的其他特性:
管道視覺化:開發人員可以視覺化並檢查應用程式管道的結構及其隨時間變化的行為。並且這個視覺化可以進行配置,基於各種相關的統計資料為應用程式管道著色。例如,根據平均訊息延遲,對流應用熱圖著色,從而可以揭示管道中哪些元件變慢,以及它們在什麼時間變慢。
資料註釋:開發人員可以基於自定義註釋模式構造時態註釋。帶註釋的資料本身作為流儲存,以支援各種半自動的資料標籤和訓練場景。
資料處理:應用程式在一段時間內記錄的多個會話可以組合成更大的資料集。該工具支援載入開發人員定義的批次處理任務,並在資料上執行這些任務,而且可以結合原始流視覺化結果。對於非 UI 自動化,也可以透過命令工具使用這些資料處理功能。
在多模態、一體化的人工智慧系統領域,有趣的研究和新穎、實用的應用有著巨大的潛力。近年來,利用資料驅動的方法所開發的更精確的感知技術已經取得了重大進展。然而,考慮到所涉及的挑戰以及缺乏足夠的基礎設施平臺和工具,將這些技術整合成能夠感知、推理和應用到現實中的端到端智慧系統的進展緩慢也就不足為奇了。正是為了加快這一程序,促進該領域更多的創新和研究,微軟研究院才建立了情景智慧平臺,並將框架開源,且設計成了開放和可擴充套件的。歡迎學術界和工業界的同行來了解和使用情景智慧平臺,也歡迎大家提供寶貴的意見和建議。