深度學習編程環境概念(GPU, Tensorflow, Docker, CUDA, CPU, CUDNN, Keras, Anaconda, PyTorch介紹)

簡介

在深度學習過程中經常會遇到GPU, Tensorflow, Docker, CUDA, CPU, CUDNN, Keras, Anaconda, PyTorch等名次概念,也一直理不清這些編程環境的層次,所以做一個總結

總覽

在這裏插入圖片描述
越往下越底層

解釋

CPU

中央處理器(CPU,central processing unit)作爲計算機系統的運算和控制核心,是信息處理、程序運行的最終執行單元。

GPU

圖形處理器(英語:Graphics Processing Unit,縮寫:GPU)。GPU使顯卡減少了對CPU的依賴,並進行部分原本CPU的工作

OS

操作系統(Operating System)是管理計算機硬件與軟件資源的計算機程序,同時也是計算機系統的內核與基石。

CUDA

全稱Compute Unified Device Architecture,是一個並行計算平臺,同時也是一個API模型,支持C,C++和Fortarn。CUDA定義了GPU的虛擬指令集,使得用戶可以直接控制GPU的並行計算單元,編寫高效的並行程序。

cuDNN

全稱CUDA Deep Neural Network library,基於CUDA提供高度調優的神經網絡底層實現,例如卷積、池化、歸一化和激活函數。支持TensorFlow和PyTorch等多種框架。

簡單來說,CPU適合串行計算,擅長邏輯控制。GPU擅長並行高強度並行計算,適用於AI算法的訓練學習
CUDA 是NVIDIA專門負責管理分配運算單元的框架
cuDNN是用於深層神經網絡的gpu加速庫

conda

Conda是一個開源的軟件包管理系統和環境管理系統,用於安裝多個版本的軟件包及其依賴關係,並在它們之間輕鬆切換;
• Conda 是爲 Python 程序創建的,用於管理版本和Python環境;
• 目前主流的Conda軟件是:Anaconda 和Miniconda;
• Conda的兩個重要功能:(1)環境管理 (2)Python包管理;

anaconda與miniconda

Anaconda 是 一 個 開 源 的Python發行版本,其包含了Conda 、 Python 、 Numpy 、Pandas等180多個科學包及其依賴項。
Miniconda 是 Anaconda 的輕量級替代,默認只包含了Python 和 Conda,但是可以通過 Pip 和 Conda 指令來安裝所需要的包。
就是說miniconda是簡約型anaconda

conda功能

重要功能一:環境管理
– 創建環境:conda create …
– 激活環境:activate …
– 返回主環境:deactivate …
– 刪除環境:conda remove …
– 查看系統中的所有環境:conda info –e

重要功能二:包管理
– 安裝庫:conda install …
– 查看已經安裝的庫:conda list
– 查 看 某 個 環 境 的 已 安 裝 包 :conda list –n…
– 搜 索 package 的 信 息 : conda search …

conda和pip

在這裏插入圖片描述
總之,建議將Conda 與Pip 結合起來以創建數據科學環境

docker

容器

傳統的虛擬化方式(虛擬機)佔用資源多、啓動時間長。針對這個問題Linux中發展出了輕量級虛擬化技術——Linux容器(Linux Container, LXC)。LXC不模擬完整的物理機系統,而是通過對進程隔離實現虛擬化。

Docker

Docker是Linux容器的一種封裝。Docker將應用程序和需要的所有依賴打包到一個文件裏(鏡像)。Docker加載鏡像可以創建Container(鏡像的實例),運行Container後,可以提供同樣的應用體驗。
在這裏插入圖片描述

TensorFlow

一個端到端的開源機器學習平臺
端到端:該框架可以完成機器學習模型的全部流程,使得訓練時可以同時優化整個模型 。
Tensor(張量)意味着N維數組,Flow(流)意味着基於數據流圖的計算。它可看作一個自動求導工具,在此基礎上該平臺實現了許多深度學習的基本函數和模型。
在這裏插入圖片描述

Keras

一個高層的神經網絡API,用python實現並且能在TensorFlow、CNTK或者Theano框架上運行。 Keras 的開發重點是支持快速的深度學習實驗。

需要注意Keras 2.2.5. 以後的版本僅支持TensorFlow ,並且被封裝爲TensorFlow的一個模塊 tf.keras

pytorch

特點

• 簡潔:Pytorch的設計追求最少的封裝,儘量避免重複造輪子;
• 高速:Pytorch的靈活性不以速度爲待見,在評測中有良好表現;
• 易用:Pytorch的設計遵循“所思即所得”的理念;
• 擴展性好:Pytorch能無縫接入 Python 生態圈;
• 活躍的社區:Pytorch有完整的使用文檔,Facebook人工智能研究院對Pytorch提供了強力的支持。
Pytorch的設計遵循“tensor -> variable(autograd) -> nn.Module”這三個由低到高的抽象層次,分別代表高維數組(張量),自動求導(變量)和神經網絡(層/模塊):

– 張量(tensor):類似於Numpy的ndarray,可以在GPU上使用來加速計算;
– 自動求導( autograd ):爲張量上的所有操作提供了自動求導機制,它是一個在運行時定
義(define-by-run)的框架;
– 神經網絡(nn.Module):依賴於autograd包來定義模型並對它們進行求導。

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章