這些算法背后的數學和科學是幾十年前開發的,但直到最近幾年,神經網絡驅動的人工智能才開始起飛。那么,是什么讓神經網絡在過去的不足之處取得了成功呢?
通常情況下,有一個關鍵事件會催化任何技術從“利基”到“轉型”的階段轉變。圖形處理單元 (GPU) 從圖形設備到通用計算機的重新構想是當前 AI 革命結晶的核心。GPU 可以加速一組特定的數學運算:向量和矩陣變換。它們使我們能夠在實際時間內處理信息,但僅憑 GPU 無法將我們帶到這里。人工智能革命的發生是因為 GPU 提供了強大的動力,
如果不是研究人員和開發人員大軍創建了抽象出直接編程 GPU 的細微差別和困難的庫,那么 GPU 驅動的神經網絡加速突破將仍然是利基市場。這對于解決各種用例面臨的挑戰非常有效。但是,這些庫不遵循安全關鍵開發指南,而這些指南越來越成為許多應用程序的基本要求。
當我們審視自主性以及依賴安全性、確定性和可靠性的嵌入式行業時,我們發現自己又回到了相變的起點。我們有 GPU,通過 Khronos Group 的 Vulkan? SC,我們有一個 API,它支持安全關鍵圖形和計算 GPU 編程。現在,我們需要一個位于 Vulkan SC 安全層之上的補充庫集合,這些庫遵循安全關鍵準則和標準,以將我們從利基市場帶入主流。
CoreAVI 通過引入 ComputeCore 開始了這場革命。ComputeCore 是 CoreAVI 對線性代數 (BLAS) API 的實現。線性代數,尤其是向量,是所有 AI 算法的燃料。立即選擇您最喜歡的 AI 引擎。該引擎運行速度很快,因為它有一個 BLAS 庫來加速所有向量操作。ComputeCore 正是這樣做的,但它的實施是為了滿足航空電子、汽車和工業市場的功能安全認證標準(DO-178C、A 級、ISO 26262 ASIL D 和 IEC61508 SIL 3)。向量和矩陣是人工智能和數據處理的核心。這經常被提及,但幾乎從未解釋過。讓我們來看看。
什么是數據處理?
當我們想到數據處理時,即廣義上的數據處理,即獲取一些信息并以某種方式對其進行轉換時,有一個數據結構是任何和所有處理的核心,那就是向量。無論如何,向量有什么特別之處?
當我們談到數據處理時,我們指的是獲取信息并對其進行修改的能力。在某些情況下,我們希望轉換信息以便從中提取知識。這就是機器學習的情況。我們可能會拍攝一張圖像并以一種可以告訴我們場景中存在哪些對象的方式對其進行轉換。我們這樣做是為了計算機視覺,實現自動駕駛汽車。我們還可以通過模糊、銳化或提取有關場景中結構的邊緣信息來轉換圖像。這些操作是強大的視覺管道中的常見步驟。
數據也可能是非可視的。考慮一個天氣預報系統,我們希望系統預測一年中給定日期的最高和最低溫度。在這種情況下,系統的輸入可能是一組歷史數據樣本,這些樣本描述了過去十年中給定位置的一年中每一天的溫度范圍。在任何情況下,數據樣本都是一個信息單元。分析圖像時,數據樣本是單個圖像。在分析患者的臨床病史以嘗試預測該患者患心臟病的風險時,數據樣本是單個患者。數據樣本由以某種方式描述樣本的特征列表組成。在圖像的情況下,特征是構成圖像的像素。在醫療病人的情況下,這些特征是描述該患者的屬性:年齡、性別、吸煙習慣、家族中的心臟病史以及與他們的臨床病史相關的其他信息。當我們將每個數據樣本視為特征的集合時,這種觀點與向量的概念非常吻合。
將數據樣本轉換為向量
我們如何將圖像和患者轉換為向量?對于圖像,我們將每個像素的顏色解釋為一個數值并構造一個像素值列表。例如,一個寬度為 2 像素、高度為 2 像素的圖像將生成一個具有 4 個值的向量,并且可能如下所示:[10,0,245,50],其中每個值表示該像素的顏色強度。 更高分辨率的圖像會產生更高維度的矢量,例如,256x256 像素的圖像會產生 65,536 個值的矢量。
患者信息也可以通過使用數字對每個特征的含義進行編碼來向量化,例如 1 = 男性,0 = 女性,1 = 家族中有心臟病史,0 = 沒有心臟病等。將數據樣本轉換為向量是在兩個非常重要的方面很有用:它有助于以一種易于與每個單獨樣本相關的方式封裝特征列表,其次,解釋向量以幾何方式揭示有關數據集中樣本如何相互關聯的信息。例如,假設我們要創建一種算法,可以學習區分汽車和行人的圖像。我們首先將圖像解釋為向量。幾何上,
圖 1. 此圖說明了笛卡爾坐標系中的 3D 矢量 V1。向量是從原點開始到由其 3 個分量定義的點結束的線:x、y、z。
雖然我們無法直觀地表示維度高于 3D 的向量,但在數學上我們仍然可以使用相同的方程來操作它們。向量如此特別的原因在于,當我們對它們進行幾何解釋時,指向相似方向的向量具有相似的屬性。例如,當我們將汽車和行人的圖像解釋為某個多維空間(稱為超空間)中的向量時,雖然我們無法可視化該向量所指向的方向,但我們可以計算它,并且可以比較向量屬于汽車的圖像和屬于行人圖像的向量。事實證明,汽車圖像的矢量指向大致相同的方向,行人圖像的矢量指向與其他行人圖像相似的方向,但遠離汽車矢量。
要創建一種可以學習自動區分汽車和行人的算法,意味著以數學方式操縱這些向量以了解它們指向的方向并找到將汽車和行人向量所在空間一分為二的線或超平面。一旦我們找到超平面,算法就可以簡單地通過知道它的向量落在直線的哪一側、所有汽車向量所在的一側或所有行人向量所在的一側來對全新圖像進行分類。
這就是為什么人工智能算法最終都會執行大量的向量運算。這是因為輸入數據通常表示為向量,因為這樣做在幾何上是有利的。在 AI 中經常使用的另一種數據結構是矩陣。其原因不應該讓人感到意外。向量是值的集合。矩陣只是一個堆疊在另一個之上的向量的集合。在某些情況下,將向量組合為矩陣很有用,這樣我們就可以同時處理一組向量——例如一組輸入樣本。
計算工具——內容、原因和方式
至此,我們已經確定了人工智能中對向量和矩陣的需求。現在我們需要一種方法來快速執行這些計算。
當我們想到自動化時——例如,在繁忙的高速公路上無人駕駛的汽車,或者在倉庫或工廠中與人類一起工作的機器人——我們會想到實時執行的系統,并產生實時后果。當自動駕駛汽車沒有足夠的時間檢測到行人以避免碰撞時,人工智能算法本身可能不是故障的根源。實際上,該算法可能已經正確地檢測到了行人,但檢測時間可能只花了幾毫秒。這個例子有助于說明幾件事。首先,這些系統需要盡可能快地執行向量和矩陣數學。其次,在安全關鍵應用中,這些操作需要在確定的時間內發生。也就是說,我們需要能夠計算執行算法的最壞情況執行時間,這樣我們就可以在每個可預見的情況下確定系統是否有足夠的時間對執行該算法的結果做出反應。如果避開障礙物的機會之窗已經過去,那么檢測障礙物將毫無用處。
為了解決這些問題,應用程序和解決方案開發人員需要兩件事。首先,他們需要一個可以加速向量和矩陣運算計算的工具。對于非安全關鍵用例,開源社區提供了大量免費工具和框架。其中包括 Tensorflow、Pytorch、Caffe 和 Scikit-learn 等框架。
所有這些框架和庫都依賴于一個稱為 BLAS 庫的關鍵組件,如上所述,它提供了一組函數來加速向量和矩陣運算。不幸的是,這些框架沒有按照功能安全標準實施。行業需要的是生產一套構建塊工具和框架,按照安全關鍵標準和實踐構建。這些框架必須包括保證確定性執行的 GPU 驅動程序實現。它們必須包括加速核心數學運算的工具——例如 BLAS API 的安全關鍵實現。工具和框架必須為計算機視覺和圖像處理的基本預處理和后處理任務提供安全關鍵(確定性)解決方案,但也適用于一般機器學習任務,可幫助強大的人工智能管道中的每個決策過程。換句話說,該行業必須提供與非安全關鍵市場相同的解決方案,并且具有相同的復雜性,同時解決嚴重受限環境中的確定性和資源管理難題。
加速
到目前為止,我們已經討論了處理向量和矩陣的必要性,并以確定的方式進行處理。我們還說過,要快速執行這些操作,我們需要一個執行加速的工具。我們所說的加速是什么意思?
通常,當我們想到軟件執行時,我們會將 CPU 視為執行編程指令的終端設備。系統中的大多數軟件都在 CPU 上運行。事實上,我們可以使用 C 編程語言實現 BLAS 并在 CPU 上執行計算。這種方法的好處是嵌入式領域(實時設備、汽車、機器人)中的大多數程序員都熟悉 C 編程語言,并且有使用 C 開發安全關鍵軟件的標準實踐。
這種方法的缺點是 CPU 擅長快速執行順序操作,但不擅長并行化工作。不幸的是,為大多數 AI 算法處理向量和矩陣所涉及的任務被稱為“令人尷尬的并行問題”。因此,在可以并行執行這些計算的機器上執行這些計算符合我們的最大利益,而不是順序執行。
結論
過去的十年對于人工智能來說是偉大的。研究界和開源工程界已經產生了大量工具,為當今的許多非安全關鍵產品提供動力。亞馬遜的 Alexa 或谷歌的 Home Assistant 等產品由最先進的自然語言處理 (NLP) 算法提供支持。
工具生態系統使對這些算法的突破性研究成為可能,使工程師和科學家能夠相對輕松地開發和訓練復雜的神經網絡,并加速 GPU 設備上的操作。這些工具包括 TensorFlow 和 PyTorch 等神經網絡框架、Python 科學庫 scikit-learn 等統計和數據分析工具,以及 CUDA? 和 SYCL? 等高性能計算框架。
OpenCV 等圖像處理庫通過為常用算法和技術提供內置功能,讓工程師的生活更輕松。事實上,這些可用的框架是如此成功和無處不在,以至于當我們進入安全關鍵領域時,許多人還沒有意識到這些工具在確定性和安全性很重要的地方是不可用的。但正如研究界使用的工具生態系統不僅僅是 CUDA 或 OpenCL?,安全關鍵行業也需要構建一個安全關鍵工具和框架的生態系統。
BLAS 和 FFT 的安全關鍵實施是朝著正確方向邁出的一步,但我們需要我們的合作伙伴以及整個嵌入式和自治社區來幫助定義將為未來所有可靠設備提供動力的工具和安全關鍵 API。開源社區已經展示了可以實現的目標,并為我們的產品和想法的原型制作提供了一個很好的平臺,但我們知道 Python 庫不能確定地執行。自主意味著責任。負責任的系統必須安全可靠。行業越早意識到這一點,我們就能越早離開沙箱,并根據嚴格的安全標準和準則構建基礎設施,以促進安全自治的大規模部署。
審核編輯:郭婷
-
機器人
+關注
關注
213文章
29537瀏覽量
211758 -
cpu
+關注
關注
68文章
11049瀏覽量
216140 -
人工智能
+關注
關注
1804文章
48788瀏覽量
246944
發布評論請先 登錄
RISC-V向量處理器:現代計算的革命性引擎

半導體硅表面氧化處理:必要性、原理與應用

電子產品三防處理技術全面剖析

淺析中低壓系統母線裝設弧光保護的必要性及應用

工業工程軟件在企業導入中的重要性與必要性
盛顯科技:在拼接處理器上配置混合矩陣的步驟是什么?
AD603輸入阻抗很小,輸入端用電容耦合的必要性在哪里?
盛顯科技:拼接處理器為什么要配置混合矩陣?

智能開關柜一鍵順控的必要性有哪些?

評論