中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用plaidML在具有AMD GPU的macOS上進行機器學習

發布時間:2021-12-31 13:37:17 來源:億速云 閱讀:363 作者:柒染 欄目:互聯網科技

如何使用plaidML在具有AMD GPU的macOS上進行機器學習,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

是否想在Mac的集成AMD GPU或外部圖形卡上訓練機器學習模型?除了PlaidML,別無所求。

任何嘗試在macOS上使用TensorFlow訓練神經網絡的人都知道該過程很糟糕。由于GPU加速訓練需要Nvidia芯片組,因此TensorFlow只能利用Mac上的CPU。大多數大型模型在CPU上的訓練時間要比簡單的GPU多幾個數量級。

更糟糕的是,許多Mac擁有功能強大的謹慎的AMD GPU,它們在訓練時被迫閑置。TensorFlow僅支持與macOS不兼容的Nvidia設備。這是plaidML出現的地方。

可以安裝PlaidML并將其用于在Mac的圖形處理器上訓練Keras模型,而無需在基于云的系統上花費時間或購買新機器。

TensorFlow用作Keras的后端,解釋Keras的高級Python語法并將其轉換為可以在專用硬件(例如GPU)上并行執行的指令。

PlaidML是Keras的替代后端,它支持Nvidia CUDA以外的并行化框架。在Mac上,可以使用PlaidML在CPU,CPU的集成圖形,謹慎的AMD圖形處理器,甚至是通過Thunderbolt 3連接的外部AMD GPU上訓練Keras模型。

首先開始使用PlaidML,因為正在尋找一種在非常大的圖像數據集上訓練深度卷積神經網絡的方法。曾嘗試在Google的Colab中執行此操作,但是事實證明,該在線工具對于長期運行的工作非常令人沮喪。有一個 Radeon RX580 eGPU積塵,所以想用一種方法在MacBook上本地訓練模型。

經過幾個快速步驟,就開始使用PlaidML。這是在系統上使用它的方法。首先通過pip安裝PlaidML。強烈建議在此處使用虛擬環境,以將PlaidML安裝與系統的其余部分隔離開。

PlaidML的強大功能來自其簡單性。安裝后,激活GPU就像運行一樣簡單

 

plaidml-setup

選擇是否要啟用實驗性功能后,此工具將詢問要使用哪種計算設備。應該看到類似以下的列表:

1 : llvm_cpu.0

2 : metal_intel(r)_hd_graphics_530.0

3 : metal_amd_radeon_pro_450.0

4 : metal_amd_radeon_rx_580.0

第一個選擇是我的CPU,第二個選擇是CPU中的Intel集成顯卡,第三個選擇是15英寸MacBook Pro中謹慎的AMD GPU,第四個選擇是我的RX 580 eGPU。絕對喜歡它的簡單性來切換處理器;這使可以使用筆記本電腦的謹慎GPU隨時隨地訓練簡單的模型,并使用eGPU進行較重的任務。

唯一需要注意的是,不再有權使用TensorFlow功能(例如TensorFlow數據集)。編寫的所有代碼都必須使用純Keras。還沒有發現這是一個很大的限制,無論如何它會導致更多的可移植軟件。PlaidML還可以與Nvidia GPU一起使用,因此,如果在使用不同GPU架構的團隊中工作,PlaidML會使事情變得非常簡單。使用PlaidML作為Keras的后端很簡單,如下所示:

from os import environenviron["KERAS_BACKEND"] = "plaidml.keras.backend"import keras

就是這樣。下面是一個完整的示例,可以在安裝PlaidML之后在自己的系統上嘗試。它用一個隱藏的層訓練一個非常簡單的神經網絡,對輸入向量求和。

import numpy as npfrom os import environenviron["KERAS_BACKEND"] = "plaidml.keras.backend"import kerasfrom keras.layers import Densefrom matplotlib import pyplot as plt # Paramsnum_samples = 100000; vect_len = 20; max_int = 10; min_int = 1; # Generate datasetX = np.random.randint(min_int, max_int, (num_samples, vect_len))Y = np.sum(X, axis=1) # Get 80% of data for trainingsplit_idx = int(0.8 * len(Y))train_X = X[:split_idx, :]; test_X = X[split_idx:, :]train_Y = Y[:split_idx]; test_Y = Y[split_idx:] # Make modelmodel = keras.models.Sequential()model.add(keras.layers.Dense(32, activation='relu', input_shape=(vect_len,)))model.add(keras.layers.Dense(1))model.compile('adam', 'mse') history = model.fit(train_X, train_Y, validation_data=(test_X, test_Y), \                    epochs=10, batch_size=100) # summarize historyplt.plot(history.history['loss'])plt.plot(history.history['val_loss'])plt.title('model loss')plt.ylabel('loss')plt.xlabel('epoch')plt.legend(['train', 'test'], loc='upper left')plt.show()

可以在其他計算設備上嘗試此操作。可能會發現,在CPU上訓練該模型的速度更快,因為數據集非常小且模型非常簡單。但是對于更復雜的模型,會發現速度大大提高。可以在PlaidML GitHub頁面上找到一些更重的測試 。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长垣县| 五常市| 柏乡县| 阿拉善盟| 石嘴山市| 敦煌市| 晋宁县| 景东| 旬邑县| 滦南县| 肥乡县| 通州区| 阿坝县| 马鞍山市| 西乌珠穆沁旗| 清河县| 邹城市| 昔阳县| 吉首市| 镇巴县| 平山县| 福安市| 华坪县| 武威市| 伊春市| 婺源县| 福建省| 泰兴市| 东港市| 安庆市| 淮北市| 高密市| 乐清市| 绥中县| 乌苏市| 墨竹工卡县| 白山市| 临潭县| 灵宝市| 汾西县| 柳州市|