二、人工智慧講義(工具篇)
基礎設施-晶片
(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工作流程
- 定義訓練資料:輸入張量和目標張量。
- 定義層組成的網路(或模型),將輸入對映到目標。
- 配置學習過程:選擇損失函式、優化器和需要監控的指標。
- 呼叫模型的 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還簡單的語言)。
相關文章
- 瘋狂Android講義(第二版)pdf及原始碼、工具下載Android原始碼
- 自定義View事件篇進階篇(二)-自定義NestedScrolling實戰View事件
- iOS土味兒講義(二)–彈窗的前世今生iOS
- iOS土味兒講義(二)--彈窗的前世今生iOS
- Jaskson精講第6篇-自定義JsonSerialize與DeserJSON
- 課程講義
- Android自定義View工具:Paint&Canvas(二)AndroidViewAICanvas
- 【Android自定義View】繪圖之Path篇(二)AndroidView繪圖
- React + Redux 效能優化(二)工具篇: ImmutablejsReactRedux優化JS
- 精講RestTemplate第7篇-自定義請求失敗異常處理REST
- Chrome開發者工具不完全指南(二、進階篇)Chrome
- 機器學習十講-第二講迴歸機器學習
- 陸奇演講:人工智慧精要人工智慧
- DNS第二講 BIND安裝及DNS相關內容定義(轉)DNS
- Web應用課 第二講 CSS定義方式、選擇器、顏色WebCSS
- VUE_入門講義Vue
- 動態規劃講義動態規劃
- 柳大的Linux講義·基礎篇(1)磁碟與檔案系統Linux
- 第一講:自定義服務整合原理講解
- MySQL講義第8講——資料更新之 DELETEMySqldelete
- 工具篇
- 人工智慧入門篇人工智慧
- 柳大的Linux講義·基礎篇(4)網路程式設計基礎Linux程式設計
- 柳大的Linux講義·基礎篇(2)Linux檔案系統的inodeLinux
- 第二篇:淺談自定義標頭檔案可能導致的重定義問題
- 工具篇 - Carbon
- MySQL45講基礎篇MySql
- Flutter-BLoC-第二講FlutterBloC
- Java嵌入式開發講座(第二講)Java
- 自定義View onLayout篇View
- Android專案篇(二):開源庫及工具的封裝Android封裝
- Shell第二篇:正規表示式和文字處理工具
- 瘋狂android講義目錄Android
- python類定義的講解Python
- Linux系統呼叫講義(轉)Linux
- IM即時通訊專案講解(二) 自定義實現圖片選擇GalleryViewView
- java併發程式設計工具類JUC第二篇:ArrayBlockingQueueJava程式設計BloC
- JAVA的字串這篇講清楚了Java字串