二、人工智慧講義(工具篇)

chenxy02發表於2020-10-28

基礎設施-晶片

(ASIC: Application Specific Integrated Circuit,專用積體電路)

當前GPU佔據大部分的AI訓練市場,CPU佔據了大部分的AI推理市場。

基礎設施-晶片-CPU vs GPU 

從架構上看,GPU採用了數量眾多的計算單元,但只有非常簡單的控制邏輯並省去了Cache。而CPU不僅被Cache佔據 了大量空間,而且還有複雜的控制邏輯和諸多優化電路,相比之下計算能力只是CPU很小的一部分。CPU是通用處理 器, 擅長處理複雜指令、邏輯判斷、中端處理。GPU是專用處理器,擅長處理計算密集型的並行任務。 

影響GPU效能的3個維度: 計算能力、視訊記憶體容量、視訊記憶體頻寬(顯示卡位寬指的是視訊記憶體位寬,即視訊記憶體在一個時鐘週期內所能傳送資料的位數)

開源框架

開源框架-TensorFlow

簡介

  • Google開源的用於機器學習和深度學習的框架,深受廣大機器學習開發者歡迎
  • 基於資料計算圖(data flow graphs)的框架,用於大規模分散式機器學習
  • 節點(nodes)表示數學計算,邊(edges)表示節點之間相互聯絡的陣列,即張量(tensor)

特點

  • 架構靈活:支援各種神經網路型別,具有很好的通用性
  • 可擴充套件性:通過對OP的擴充套件支援,能夠擴充套件不同的功能
  • 多語言支援:支援使用C++/Python/Java構建和執行計算圖
  • 以C API為分界線,將系統分為前端 和後端2個系統 
  • 前端系統:負責提供程式設計模型,構造 計算圖
  • 後端系統:負責提供執行時環境,執 行前端構建的計算圖 
  •  分散式執行時層:分割計運算元圖,分配到 不同裝置的Worker上 

開源框架-Keras 

簡介

  • Keras是一個模型級(model-level)的庫,為開發深度學習模型提供了高層次的構建模組。
  • 它不處理張量操作、求微分等低層次的運算。相反,它依賴於一個專門的、高度優化的張量庫來完成這些運算,這個張量庫就是Keras的後端引擎(backend engine)。 Keras 沒有選擇單個張 量庫並將 Keras 實現與這個庫繫結,而是以模組化的方式處理這 個問題。因此,幾 個不同的後端引擎都可以無縫嵌入到 Keras 中。目前, Keras 有 三個後端實現: TensorFlow 後端、 Theano 後端和微軟認知工具包(CNTK, Microsoft cognitive toolkit)後端

典型的Keras工作流程

  1. 定義訓練資料:輸入張量和目標張量。
  2. 定義層組成的網路(或模型),將輸入對映到目標。
  3. 配置學習過程:選擇損失函式、優化器和需要監控的指標。
  4. 呼叫模型的 fit 方法在訓練資料上進行迭代。

開源框架-Caffe

簡介

  •  Caffe 全 稱 為 Convolutional Architecture for Fast Feature Embedding,是一個被廣泛使用的開源深度學習框架 

特點

  • 容易上手,網路結構都是以配置檔案形式(一個JSON型別的.prototxt檔案)定義,不需要 用程式碼設計網路。 
  • 訓練速度快,能夠訓練state-of-the-art的模型與大規模 的資料。
  • 元件模組化,可以方便地擴充到新的模型和學習任務上。 

開源框架-MXNet 

Amazon於2016年11月22日宣佈將選擇MXNet作為AWS上 的深度學習框架。

特點

  • 靈活:同時支援指令式程式設計和符號式程式設計。指令式程式設計提供類 似numpy一樣的張量藉口, 符號式程式設計可以通過配置來定義和訓練神經網路。 
  • 便捷:MXNet可以在CPU和GPU上執行,同時可以在伺服器, 桌面,以及移動手機上執行。 
  • 多語言支援:核心由C++編寫,同時提供多語言的API,包括 C++,Python,R,Julia, Perl,Matlab以及Javascript。 
  • 高效能:優化的C++後臺計算引擎,實現對資料I/O以及計 算的並行化
  • 雲端分散式:支援多CPU/GPU的分散式訓練,包括AWS, GCE,Azure,以及Yarn叢集
  • 自動微分:訓練模型過程中自動計算梯度

開源框架-PaddlePaddle 

PaddlePaddle框架的開源始於2016年9月份,特點和定位是 easy to use,因此對很多演算法進行了完整的封裝,不僅是針 對只目前現成的CV、NLP等演算法 (如VGG、ResNet、LSTM、 GRU等),它在模型庫models (https://github.com/PaddlePaddle/models)模組下,封裝 了詞向量(包括Hsigmoid加速詞向量訓練和噪聲對比估計加 速詞向量訓練)、RNN 語言模型、點選率預估、文字分類、 排序學習(資訊檢索和搜尋引擎研究的核心問題之一)、 結構化語義模型、命名實體識別、序列到序列學習、閱讀 理解、自動問答、影像分類、目標檢測、場景文字識別、 語音識別等多個技術領域人工智慧的通用解決方案。 

開源框架-Pytorch 

2017年1月,Facebook人工智慧研究院(FAIR)團隊在GitHub 上開源了PyTorch,並迅速佔領GitHub熱度榜榜首。 作為一個2017年才釋出,具有先進設計理念的框架,PyTorch 的歷史可追溯到2002年就誕生於紐約大學的Torch。 Torch使用了一種不是很大眾的語言Lua作為介面。Lua簡潔高 效,但由於其過於小眾,用的人不是很多,以至於很多人聽 說要掌握Torch必須新學一門語言就望而卻步(其實Lua是一門 比Python還簡單的語言)。

相關文章