TensorFlow是一個基于數據流編程(dataflow programming)的符號數學系統,被廣泛應用于各類機器學習(machine learning)算法的編程實現,其前身是谷歌的神經網絡算法庫DistBelief [1] 。
Tensorflow擁有多層級結構,可部署于各類服務器、PC終端和網頁并支持GPU和TPU高性能數值計算,被廣泛應用于谷歌內部的產品開發和各領域的科學研究 。
TensorFlow由谷歌人工智能團隊谷歌大腦(Google Brain)開發和維護,擁有包括TensorFlow Hub、TensorFlow Lite、TensorFlow Research Cloud在內的多個項目以及各類應用程序接口(Application Programming Interface, API) 。自2015年11月9日起,TensorFlow依據阿帕奇授權協議(Apache 2.0 open source license)開放源代碼 。
持續監控GPU使用情況命令:
$ watch -n 10 nvidia-smi
一、指定使用某個顯卡
如果機器中有多塊GPU,tensorflow會默認吃掉所有能用的顯存, 如果實驗室多人公用一臺服務器,希望指定使用特定某塊GPU。
可以在文件開頭加入如下代碼:
import osos.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"os.environ["CUDA_VISIBLE_DEVICES"] = "1" # 使用第二塊GPU(從0開始)
也可以制定使用某幾塊GPU
import osos.environ["CUDA_DEVICE_ORDER"] = "PCI_BUS_ID"os.environ["CUDA_VISIBLE_DEVICES"] = "0, 2" # 使用第一, 三塊GPU
禁用GPU
import osos.environ["CUDA_VISIBLE_DEVICES"] = "-1"
支持的設備
在一套標準系統中通常有多臺計算設備。TensorFlow 支持 CPU 和 GPU 這兩種設備。它們均用 strings 表示。例如:
"/cpu:0":機器的 CPU。"/device:GPU:0":機器的 GPU(如果有一個)。"/device:GPU:1":機器的第二個 GPU(以此類推)。
如果 TensorFlow 指令中兼有 CPU 和 GPU 實現,當該指令分配到設備時,GPU 設備有優先權。例如,如果 matmul 同時存在 CPU 和 GPU 核函數,在同時有 cpu:0 和 gpu:0 設備的系統中,gpu:0 會被選來運行 matmul。
記錄設備分配方式
要找出您的指令和張量被分配到哪個設備,請創建會話并將 log_device_placement 配置選項設為 True。
#Creates a graph.a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a')b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b')c = tf.matmul(a, b)#Creates a session with log_device_placement set to True.sess = tf.Session(config=tf.ConfigProto(log_device_placement=True))#Runs the op.print(sess.run(c))
應該會看到以下輸出內容:
Device mapping:/job:localhost/replica:0/task:0/device:GPU:0 -> device: 0, name: Tesla K40c, pci busid: 0000:05:00.0b: /job:localhost/replica:0/task:0/device:GPU:0a: /job:localhost/replica:0/task:0/device:GPU:0MatMul: /job:localhost/replica:0/task:0/device:GPU:0[[ 22. 28.] [ 49. 64.]]
新聞熱點
疑難解答