設計工具
應用程式

把握資料智慧的核心

Wes Vaske | 2019 年 2 月

AI 至關重要:透過記憶體和儲存裝置把握資料智慧的核心

我一直在探索 AI 和機器學習系統的基礎架構,我發現,以任何方式討論底層儲存裝置或記憶體的效能資料非常缺乏,這很奇怪。相反,討論主要集中在不同的可用運算資源(GPU、CPU、FPGA、TPU 等)。

起初,這讓我很擔憂,因為我主要透過提供相關的解決方案工程驗證和資訊來支援我們的儲存裝置產品。然而,當我開始進行實驗時,我發現缺少討論非運算基礎架構的效能資料並不是因為缺乏必要性,而是因為它作為一個問題被忽視了。

下面的資料可以提供一些背景資訊。

按 GPU 計算的磁碟吞吐量和影像/秒數

該圖表顯示了不同 AI 訓練系統在特定模型和資料集上的表現。(具體來說,這是在 Imagenet 資料集上訓練 ResNet-50 影像分類模型,該資料集包含 120 萬張影像,大小約為 145GB。)

回溯到 2014 年,我們可以看到 AI 訓練系統的儲存裝置只需要提供約 50 MB/秒的磁碟吞吐量,就能為 8 個頂級(當時)GPU 提供資料。雖然我很希望你在每個工作負載中都使用 SSD,但如果說需要快閃記憶體驅動器來支援這種使用案例,那就太誇張了。每秒 50 MB 的傳輸率微不足道。

產品更新迭代,從 K80 GPU 升級到 P100,我們看到對儲存裝置的要求明顯提高——從每秒 50MB 提高到每秒 150MB。雖然要求提高很多,但仍不需要擔心(對以 HDD 為基礎的系統來說,150MB/秒的速度很容易達到),因為它並沒有帶來任何真正的架構挑戰。

然而,最新一代產品(以及進一步的軟體最佳化)將這一目標推向新的領域。相同型號的 ResNet-50 處理相同的資料集需要每秒近 1 GB 位元組的儲存吞吐量才能保證 GPU 以最高效率執行。以 HDD 為基礎的系統很難滿足這些要求。

因此,現在我們可以理解為什麼我們在談論 AI 系統時一直沒有討論儲存效能——直到最近才有必要進行討論。此外,如果這種趨勢繼續下去(我們沒有理由不這麼認為),未來將依賴於我們架構儲存系統的能力,以滿足次世代 GPU 的要求。

好吧,我們同意儲存裝置效能很重要,但它到底有多重要? 為 AI 系統架構的儲存裝置(和記憶體)如何不合適會產生什麼實際影響?

為了回答這些問題,我又進行了一些實驗,試圖找出問題所在。運行以下資料所使用的模型和資料集與上述模型和資料集相同——針對 Imagenet 資料集訓練的 Resnet-50。硬體是一台配有 8 個 Nvidia® V100 GPU 的雙 Intel® Xeon 8180M 伺服器。每個 GPU 有 32GB 記憶體,系統有 3TB 記憶體,我的儲存裝置是採用 RAID10 配置的 8 個 3.2TB 美光 9200 NVMe™ 固態硬碟。

按模型和批次大小計算的訓練速度 AI Blog - Figure 2

我測試了記憶體容量和磁碟吞吐量這兩個變數的影響。每個變數均透過更改相應的 docker 容器參數(mem_limit 和 device_read_bps)進行調整。

在記憶體方面,容器要不是擁有全部可用記憶體(3TB),就是擁有較小的記憶體容量,這導致系統處於穩定態後檔案系統快取中僅容納一半的資料集(128GB)。

在儲存裝置方面,容器要不是可以無限存取 NVMe 儲存裝置,就是被限制為 500 MB/s 的吞吐量。之所以選擇這個數字,是因為它大約是觀察到的峰值吞吐量(1.2GB/秒)的一半,並且與各種雲端提供商提供給 GPU 實例的磁碟種類相對應。

結果並不令人驚訝。如果 AI 系統中的儲存裝置無法跟上 GPU,又沒有足夠的記憶體來快取資料集,那麼系統效能將嚴重下降。值得慶幸的是,我們已經解決了這個問題。雖然擁有大量記憶體和超高速磁碟可以讓 AI 系統達到最高效率,但僅僅擁有高速磁碟或高密度記憶體也能讓你的 AI 系統達到很高的效率。

我在這裡要討論的最後一組實驗與 GPU 記憶體對訓練效能的影響有關。運行這些測試的硬體與上述硬體相同(8x v100 GPU),但我調整了批次大小(一次傳送給 GPU 處理的影像數量)以及算法「複雜度」(ResNet 模型的層數)。

AI Blog - Figure 3

每一行代表以每秒影像表示的特定模型的訓練吞吐量。一旦批次過大,將沒有足夠的記憶體,並且應用程式將當機(如上圖所示,各行結束處)。

我們可以從這張圖表得到一些啟示。第一點也是最明顯的一點是,吞吐量會隨著批次的增加而增加。該圖具體描述的是訓練,但推理也有同樣的表現。批次越大,吞吐量越高。

下一個啟示是,最大批次取決於模型的複雜程度。隨著模型越來越大、越來越複雜,模型的權重會佔用更多的 GPU 記憶體空間,留給資料的空間會越來越少。根據具體使用案例,如果模型的複雜度太高,將無法進行訓練,甚至會將模型的批次大小限制為 1。這一點在將模型部署到智慧邊緣或 IoT 裝置時尤為明顯,因為這些裝置的記憶體容量通常比我在這裡使用的 GPU 低得多。

總而言之,在設計 AI 系統時,你需要考慮三個主要因素:

  • 儲存裝置效能
  • 系統記憶體密度
  • GPU/加速器記憶體密度
  • 儲存裝置效能和系統記憶體密度對系統發揮最大效能至關重要,而 GPU/加速器記憶體對效能和未來模型研發也很重要。

如需更多詳細資料:瞭解根據特定 AI 和機器學習模型調整記憶體和儲存裝置的更多資訊。點播觀看網路研討會:AI 至關重要——透過記憶體和儲存裝置把握資料智慧的核心,此次網路研討會由我、Forrester® 的 Chris Gardner 和美光運算與網路部門的 Eric Booth 共同主講。

SMTS Systems Performance Engineer

Wes Vaske

Wes Vaske is a principal storage solution engineer with Micron.