當前位置:首頁 » 雲伺服器 » 搭建深度學習伺服器

搭建深度學習伺服器

發布時間: 2022-04-21 15:28:50

『壹』 深度學習 對硬體的要求

之前熱衷於學習理論知識,目前想跑代碼了發現不知道從何下手,自己電腦上搭建的平台基本就是個擺設,因為跑不起來呀。今天我們就來看看想做深度學習應該怎麼下手。

首先了解下基礎知識:
1、深度學慣用cpu訓練和用gpu訓練的區別
(1)CPU主要用於串列運算;而GPU則是大規模並行運算。由於深度學習中樣本量巨大,參數量也很大,所以GPU的作用就是加速網路運算。

(2)CPU算神經網路也是可以的,算出來的神經網路放到實際應用中效果也很好,只不過速度會很慢罷了。而目前GPU運算主要集中在矩陣乘法和卷積上,其他的邏輯運算速度並沒有CPU快。

目前來講有三種訓練模型的方式:
1. 自己配置一個「本地伺服器」,俗稱高配的電腦。
這個選擇一般是台式機,因為筆記本的「高配」實在是太昂貴了,同一個價格可以買到比筆記本好很多的配置。如果是長期使用,需要長期從事深度學習領域的研究,這個選擇還是比較好的,比較自由。

預算一萬以內的機器學習台式機/主機配置:


從李飛飛的課程里,可以看到她的電腦配置,這個配置是機器學習的基本設置。

內存:4X8G
顯示卡: 兩個NV GTX 1070

硬碟: HDD一個, SSD兩個

③ 配置主機需要了解的參數(在上一篇博客中已經詳細介紹了各個參數的含義):
GPU:一個好的GPU可以將你的訓練時間從幾周縮減成幾天,所以選GPU一定要非常慎重。可以參看GPU天梯榜,都是一些比較新的型號具有很強的性能。
在英偉達產品系列中,有消費領域的GeForce系列,有專業繪圖領域的Quadro系列,有高性能計算領域的Tesla系列,如何選擇?有論文研究,太高的精度對於深度學習的錯誤率是沒有提升的,而且大部分的環境框架都只支持單精度,所以雙精度浮點計算是不必要,Tesla系列都去掉了。從顯卡效能的指標看,CUDA核心數要多,GPU頻率要快,顯存要大,帶寬要高。這樣,最新Titan
X算是價格便宜量又足的選擇。
CPU:總的來說,你需要選擇一個好的GPU,一個較好的CPU。作為一個高速的串列處理器,常用來作為「控制器」使用,用來發送和接收指令,解析指令等。由於GPU內部結構的限制,使得它比較適合進行高速的並行運算,而並不適合進行快速的指令控制,而且許多的數據需要在GPU和CPU之間進行存取,這就需要用到CPU,因為這是它的強項。
內存條:主要進行CPU和外設之間的數據交換,它的存取速度要比硬碟快好幾倍,但是價格比較昂貴,通常會和容量成正比。內存大小最起碼最起碼最起碼要大於你所選擇的GPU的內存的大小(最好達到顯存的二倍,當然有錢的話越大越好)。在深度學習中,會涉及到大量的數據交換操作(例如按batch讀取數據)。當然你也可以選擇將數據存儲在硬碟上,每次讀取很小的batch塊,這樣你的訓練周期就會非常長。常用的方案是「選擇一個較大的內存,每次從硬碟中讀取幾個batch的數據存放在內存中,然後進行數據處理」,這樣可以保證數據不間斷的傳輸,從而高效的完成數據處理的任務。
電源問題:一個顯卡的功率接近300W,四顯卡建議電源在1500W以上,為了以後擴展,可選擇更大的電源。
固態硬碟:作為一個「本地存儲器」,主要用於存儲各種數據。由於其速度較慢,價格自然也比較便宜。建議你選擇一個較大容量的硬碟,通常會選擇1T/2T。一個好的方法是:「你可以利用上一些舊的硬碟,因為硬碟的擴展十分簡單,這樣可以節省一部分資金。」

『貳』 如何配置一台深度學習主機

搞AI,誰又能沒有「GPU之惑」?下面列出了一些適合進行深度學習模型訓練的GPU,並將它們進行了橫向比較,一起來看看吧!

『叄』 實驗室的深度學習伺服器需要安裝操作系統和資料庫軟體嗎

需要安裝。
1。安裝系統。1。安裝ubuntu。具體安裝省略,記錄一個小bug,可能在給有獨立顯卡的台式機安裝ubuntu雙系統時遇到:在安裝時,使用U盤啟動這步,直接選擇tryubuntu或installubuntu都會出現黑屏的問題。解決方法:將游標移動到installubuntu一項上,按e鍵,會進入一個可編輯的界面,將quietsplash修改為nouveau。modeset=0nomodeset,然後按ctrl+x進入安裝。之後在ubuntu安裝nvidia驅動後,就正常了。如果沒有安裝驅動,每次進入前,都要用同樣的方法將上面的quietsplash修改。2。配置nvidia顯卡。具體分為兩步:安裝nvidia驅動,如果是圖形界面的話,在Software&Updates中的AdditionalDrivers中選擇合適的驅動安裝即可。在官網下載cudnn並安裝。2。創建和登錄用戶。在linux上創建自己的用戶,方便管理代碼和安裝應用。比如我們想要創建一個用戶名是haha,密碼是123456的用戶,命令如下:添加用戶:useradd-d/home/haha-mhaha。設置密碼(只有設置密碼之後,才能登錄用戶):passwdhaha,然後輸入密碼。然後就可以通過sshhaha@your_ip的方式登錄伺服器了。登錄後也可以設置bash:chsh-s/bin/bash或修改為zsh。加入root許可權:使用apt下載時,如果出現不在sudoers文件中的報錯,則需要將用戶加入sudoers,執行sudovim/etc/sudoers命令,rootALL=(ALL)ALL的下一行加入hahaALL=(ALL)ALL,然後保存。刪除用戶:userdel-rhaha。

『肆』 如何在後台部署深度學習模型

搭建深度學習後台伺服器

我們的Keras深度學習REST API將能夠批量處理圖像,擴展到多台機器(包括多台web伺服器和Redis實例),並在負載均衡器之後進行循環調度。

為此,我們將使用:

  • KerasRedis(內存數據結構存儲)

  • Flask (python的微web框架)

  • 消息隊列和消息代理編程範例

  • 本篇文章的整體思路如下:

    我們將首先簡要討論Redis數據存儲,以及如何使用它促進消息隊列和消息代理。然後,我們將通過安裝所需的Python包來配置Python開發環境,以構建我們的Keras深度學習REST API。一旦配置了開發環境,就可以使用Flask web框架實現實際的Keras深度學習REST API。在實現之後,我們將啟動Redis和Flask伺服器,然後使用cURL和Python向我們的深度學習API端點提交推理請求。最後,我們將以對構建自己的深度學習REST API時應該牢記的注意事項的簡短討論結束。

    第一部分:簡要介紹Redis如何作為REST API消息代理/消息隊列

    測試和原文的命令一致。


    第三部分:配置Python開發環境以構建Keras REST API

    文章中說需要創建新的虛擬環境來防止影響系統級別的python項目(但是我沒有創建),但是還是需要安裝rest api所需要依賴的包。以下為所需要的包。


    第四部分:實現可擴展的Keras REST API

    首先是Keras Redis Flask REST API數據流程圖

    讓我們開始構建我們的伺服器腳本。為了方便起見,我在一個文件中實現了伺服器,但是它可以按照您認為合適的方式模塊化。為了獲得最好的結果和避免復制/粘貼錯誤,我建議您使用本文的「下載」部分來獲取相關的腳本和圖像。

    為了簡單起見,我們將在ImageNet數據集上使用ResNet預訓練。我將指出在哪裡可以用你自己的模型交換ResNet。flask模塊包含flask庫(用於構建web API)。redis模塊將使我們能夠與redis數據存儲介面。從這里開始,讓我們初始化將在run_keras_server.py中使用的常量.


    我們將向伺服器傳遞float32圖像,尺寸為224 x 224,包含3個通道。我們的伺服器可以處理一個BATCH_SIZE = 32。如果您的生產系統上有GPU(s),那麼您需要調優BATCH_SIZE以獲得最佳性能。我發現將SERVER_SLEEP和CLIENT_SLEEP設置為0.25秒(伺服器和客戶端在再次輪詢Redis之前分別暫停的時間)在大多數系統上都可以很好地工作。如果您正在構建一個生產系統,那麼一定要調整這些常量。

    讓我們啟動我們的Flask app和Redis伺服器:


    在這里你可以看到啟動Flask是多麼容易。在運行這個伺服器腳本之前,我假設Redis伺服器正在運行(之前的redis-server)。我們的Python腳本連接到本地主機6379埠(Redis的默認主機和埠值)上的Redis存儲。不要忘記將全局Keras模型初始化為None。接下來我們來處理圖像的序列化:


    Redis將充當伺服器上的臨時數據存儲。圖像將通過諸如cURL、Python腳本甚至是移動應用程序等各種方法進入伺服器,而且,圖像只能每隔一段時間(幾個小時或幾天)或者以很高的速率(每秒幾次)進入伺服器。我們需要把圖像放在某個地方,因為它們在被處理前排隊。我們的Redis存儲將作為臨時存儲。

    為了將圖像存儲在Redis中,需要對它們進行序列化。由於圖像只是數字數組,我們可以使用base64編碼來序列化圖像。使用base64編碼還有一個額外的好處,即允許我們使用JSON存儲圖像的附加屬性。

    base64_encode_image函數處理序列化。類似地,在通過模型傳遞圖像之前,我們需要反序列化圖像。這由base64_decode_image函數處理。

    預處理圖片


    我已經定義了一個prepare_image函數,它使用Keras中的ResNet50實現對輸入圖像進行預處理,以便進行分類。在使用您自己的模型時,我建議修改此函數,以執行所需的預處理、縮放或規范化。

    從那裡我們將定義我們的分類方法


    classify_process函數將在它自己的線程中啟動,我們將在下面的__main__中看到這一點。該函數將從Redis伺服器輪詢圖像批次,對圖像進行分類,並將結果返回給客戶端。

    在model = ResNet50(weights="imagenet")這一行中,我將這個操作與終端列印消息連接起來——根據Keras模型的大小,載入是即時的,或者需要幾秒鍾。

    載入模型只在啟動這個線程時發生一次——如果每次我們想要處理一個映像時都必須載入模型,那麼速度會非常慢,而且由於內存耗盡可能導致伺服器崩潰。

    載入模型後,這個線程將不斷輪詢新的圖像,然後將它們分類(注意這部分代碼應該時尚一部分的繼續)


    在這里,我們首先使用Redis資料庫的lrange函數從隊列(第79行)中獲取最多的BATCH_SIZE圖像。

    從那裡我們初始化imageIDs和批處理(第80和81行),並開始在第84行開始循環隊列。

    在循環中,我們首先解碼對象並將其反序列化為一個NumPy數組image(第86-88行)。

    接下來,在第90-96行中,我們將向批處理添加圖像(或者如果批處理當前為None,我們將該批處理設置為當前圖像)。

    我們還將圖像的id附加到imageIDs(第99行)。

    讓我們完成循環和函數

    在這個代碼塊中,我們檢查批處理中是否有圖像(第102行)。如果我們有一批圖像,我們通過模型(第105行)對整個批進行預測。從那裡,我們循環一個圖像和相應的預測結果(110-122行)。這些行向輸出列表追加標簽和概率,然後使用imageID將輸出存儲在Redis資料庫中(第116-122行)。

    我們使用第125行上的ltrim從隊列中刪除了剛剛分類的圖像集。最後,我們將睡眠設置為SERVER_SLEEP時間並等待下一批圖像進行分類。下面我們來處理/predict我們的REST API端點


    稍後您將看到,當我們發布到REST API時,我們將使用/predict端點。當然,我們的伺服器可能有多個端點。我們使用@app。路由修飾符以第130行所示的格式在函數上方定義端點,以便Flask知道調用什麼函數。我們可以很容易地得到另一個使用AlexNet而不是ResNet的端點,我們可以用類似的方式定義具有關聯函數的端點。你懂的,但就我們今天的目的而言,我們只有一個端點叫做/predict。

    我們在第131行定義的predict方法將處理對伺服器的POST請求。這個函數的目標是構建JSON數據,並將其發送回客戶機。如果POST數據包含圖像(第137和138行),我們將圖像轉換為PIL/Pillow格式,並對其進行預處理(第141-143行)。

    在開發這個腳本時,我花了大量時間調試我的序列化和反序列化函數,結果發現我需要第147行將數組轉換為C-contiguous排序(您可以在這里了解更多)。老實說,這是一個相當大的麻煩事,但我希望它能幫助你站起來,快速跑。

    如果您想知道在第99行中提到的id,那麼實際上是使用uuid(通用唯一標識符)在第151行生成的。我們使用UUID來防止hash/key沖突。

    接下來,我們將圖像的id和base64編碼附加到d字典中。使用rpush(第153行)將這個JSON數據推送到Redis db非常簡單。

    讓我們輪詢伺服器以返回預測

    我們將持續循環,直到模型伺服器返回輸出預測。我們開始一個無限循環,試圖得到157-159條預測線。從這里,如果輸出包含預測,我們將對結果進行反序列化,並將結果添加到將返回給客戶機的數據中。我們還從db中刪除了結果(因為我們已經從資料庫中提取了結果,不再需要將它們存儲在資料庫中),並跳出了循環(第163-172行)。

    否則,我們沒有任何預測,我們需要睡覺,繼續投票(第176行)。如果我們到達第179行,我們已經成功地得到了我們的預測。在本例中,我們向客戶機數據添加True的成功值(第179行)。注意:對於這個示例腳本,我沒有在上面的循環中添加超時邏輯,這在理想情況下會為數據添加一個False的成功值。我將由您來處理和實現。最後我們稱燒瓶。jsonify對數據,並將其返回給客戶端(第182行)。這就完成了我們的預測函數。

    為了演示我們的Keras REST API,我們需要一個__main__函數來實際啟動伺服器

    第186-196行定義了__main__函數,它將啟動classify_process線程(第190-192行)並運行Flask應用程序(第196行)。

    第五部分:啟動可伸縮的Keras REST API

    要測試我們的Keras深度學習REST API,請確保使用本文的「下載」部分下載源代碼示例圖像。從這里,讓我們啟動Redis伺服器,如果它還沒有運行:

  • redis-server

  • 然後,在另一個終端中,讓我們啟動REST API Flask伺服器:

  • python run_keras_server.py

  • 另外,我建議在向伺服器提交請求之前,等待您的模型完全載入到內存中。現在我們可以繼續使用cURL和Python測試伺服器。

    第七部分:使用cURL訪問Keras REST API

    使用cURL來測試我們的Keras REST API伺服器。這是我的家庭小獵犬Jemma。根據我們的ResNet模型,她被歸類為一隻擁有94.6%自信的小獵犬。

  • curl -X POST -F [email protected] 'http://localhost:5000/predict'

  • 你會在你的終端收到JSON格式的預測:

  • {"predictions": [{"label": "beagle","probability": 0.9461546540260315},{"label": "bluetick","probability": 0.031958919018507004},{"label": "redbone","probability": 0.006617196369916201},{"label": "Walker_hound","probability": 0.0033879687543958426},{"label": "Greater_Swiss_Mountain_dog","probability": 0.0025766862090677023}],"success": true}

  • 第六部分:使用Python向Keras REST API提交請求

    如您所見,使用cURL驗證非常簡單。現在,讓我們構建一個Python腳本,該腳本將發布圖像並以編程方式解析返回的JSON。

    讓我們回顧一下simple_request.py

  • # import the necessary packagesimport requests# initialize the Keras REST API endpoint URL along with the input# image pathKERAS_REST_API_URL = "http://localhost:5000/predict"IMAGE_PATH = "jemma.png"

  • 我們在這個腳本中使用Python請求來處理向伺服器提交數據。我們的伺服器運行在本地主機上,可以通過埠5000訪問端點/predict,這是KERAS_REST_API_URL變數(第6行)指定的。

    我們還定義了IMAGE_PATH(第7行)。png與我們的腳本在同一個目錄中。如果您想測試其他圖像,請確保指定到您的輸入圖像的完整路徑。

    讓我們載入圖像並發送到伺服器:

  • # load the input image and construct the payload for the requestimage = open(IMAGE_PATH, "rb").read()payload = {"image": image}# submit the requestr = requests.post(KERAS_REST_API_URL, files=payload).json()# ensure the request was sucessfulif r["success"]: # loop over the predictions and display them for (i, result) in enumerate(r["predictions"]): print("{}. {}: {:.4f}".format(i + 1, result["label"], result["probability"]))# otherwise, the request failedelse: print("Request failed")

  • 我們在第10行以二進制模式讀取圖像並將其放入有效負載字典。負載通過請求發送到伺服器。在第14行發布。如果我們得到一個成功消息,我們可以循環預測並將它們列印到終端。我使這個腳本很簡單,但是如果你想變得更有趣,你也可以使用OpenCV在圖像上繪制最高的預測文本。

    第七部分:運行簡單的請求腳本

    編寫腳本很容易。打開終端並執行以下命令(當然,前提是我們的Flask伺服器和Redis伺服器都在運行)。

  • python simple_request.py

  • 使用Python以編程方式使用我們的Keras深度學習REST API的結果

    第八部分:擴展深度學習REST API時的注意事項

    如果您預期在深度學習REST API上有較長一段時間的高負載,那麼您可能需要考慮一種負載平衡演算法,例如循環調度,以幫助在多個GPU機器和Redis伺服器之間平均分配請求。

    記住,Redis是內存中的數據存儲,所以我們只能在隊列中存儲可用內存中的盡可能多的圖像。

    使用float32數據類型的單個224 x 224 x 3圖像將消耗602112位元組的內存。

『伍』 如何搭建適合自己的深度學習平台

  這個一定程度上取決於你投入的總預算,
如果你並無以後繼續折騰的打算,純粹只是入門的話,
可以按照普通游戲主機的配置來配。顯卡的選擇,除了很多人耳熟能詳的

『陸』 如何搭建一台深度學習伺服器

因為主流的CNN網路實現,在反向求導和更新權值的時候將當前用不到的數據都存起來了,使用了過多的顯存,所以,如果自己實現網路,把反向求導和更新同時實現,這樣在一台顯存只有4G的顯卡上就可能跑一個需要12G顯存的網路。

『柒』 做深度學習的伺服器需要哪些配置

要做一個深度學習的伺服器,需要的配置有GPU RAM, 儲存器,因為GPU是在我做深度學習伺服器裡面一個非常重要的部分,相當於是一個心臟,是非常核心的一個伺服器,所以GPU是一個非常重要的東西,儲存器也是相當重要的,因為很多數據都要放在ssd儲存器上。

『捌』 配個深度學習的伺服器,需要多大內存起步

CPU和主板支持什麼內存就插哪種。主要參數就是類型,ddr4,ddr3這種的表示。頻率要看主板支持多大,在主板BIOS設置中要設置才會倍頻,要不白買高頻率的了。

內存大小,當然越大越好!還是那句話看主板支持多大的內存。一般16g一個人用足夠,多個人怎麼也得32g吧。畢竟matlab有時還是會用到的,內存別太小。

一般就是看威剛,金士頓,芝奇,海盜船這幾個牌子,芝奇,海盜船用的晶元據說好一些,金士頓也有駭客神條,還是看預算吧,一般不會差太多錢。

支持深度學習伺服器定製,歡迎了解更多解決方案:網頁鏈接

『玖』 如何在mac系統下搭建theano深度學習

方案一 基於SSH直接搭建 Git支持的協議主要是四種: 本地: 需要文件共享系統,許可權不好控制 HTTP:速度慢 SSH:同時支持讀寫操作,不支持匿名的讀取(Git默認協議) GIT:最快 從搭建的難易程度和特點綜合篩選,最合適的還是ssh,並且大部分伺服器上基本都有ssh服務,所以省去了不少麻煩。一個最基本的思路是給每一個人一個ssh帳號,這樣大家就可以通過用戶名和口令來訪問了,但是顯然這不是一個好的選擇,這個做法有些多餘,並且對於repo的許可權很難管理。 在使用Github的時候,會利用rsa/sitaramc/gitolite $ mkdir -p $HOME/bin $ gitolite/install -to $HOME/bin $ gitolite setup -pk YourName port 22 identityfile ~/.ssh/admin 這樣,當訪問gitolite的時候就會自動根據配置文件執行,配置完成後可以根據下面的命令,將gitolite-admin轉移到本地。 git clone gitolite:gitolite-admin.git 克隆完成後,可以發現,gitolite-admin下面有兩個目錄,其中conf保存配置文件,可以通過編輯裡面的gitolite.conf文件,管理git伺服器,keydir目錄保存用戶的公鑰pub文件。 當講修改後的repo 提交的時候,gitolite就會自動的應用這些配置,管理過程就方便了很多。 配置規則 打開gitolite.conf文件可以看到其中的示例: To add new users alice, bob, and carol, obtain their public keys and add them to 'keydir' as alice.pub, bob.pub, and carol.pub respectively. To add a new repo 'foo' and give different levels of access to these users, edit the file 'conf/gitolite.conf' and add lines like this: repo foo RW+ = alice RW = bob R = carol 上面的配置文件就是新建了一個repo foo,並且添加了三位項目成員,每一個人的許可權不同。提交push後,管理便生效了。 可視化 可能會需要一個web界面來管理這些項目,目前知道的有三種方式: git源碼中自帶的組件,cgi腳本實現,使用gitolite服務 gitlab開源框架,基於ROR,新版本不再使用gitolite服務 FB開源PHP框架 phabricator,功能高端上檔次

『拾』 學生能去哪裡租用便宜的gpu雲伺服器來進行深度學習計算

其實你可以去騰訊雲去租用GPU雲伺服器來進行深度學習計算。騰訊雲 GPU 實例類型眾多,應用廣泛,不同的實例類型有不同的產品定位。用戶可以根據自身的應用場景,結合性能、價格等因素,選擇最符合業務需求的實例。

比如你要進行深度學習計算,建議使用騰訊雲GN8/GN10X 實例。GN10Xp配備Tesla V100 NVLink 32GB GPU,具有強大的單精度浮點運算能力,並具備較大的 GPU 板載內存。最大實例規格配置8個 V100 ,80個 vGPU 和320GB主機內存,是深度學習訓練的首選。

GN10Xp 最大實例規格具備125.6 TFLOPS 單精度浮點運算能力,支持 Tensor Core 加速,單卡搭載32GB顯存,GPU 卡之間通過300GB/s的 NVLink 高速互連。強大的計算與數據吞吐能力大大縮短訓練周期,使得復雜模型的快速迭代成為可能,人工智慧相關業務得以把握先機。

騰訊雲GPU雲伺服器,管理很簡單GPU雲伺服器採用和雲伺服器CVM一致的管理方式,無需跳板機登錄,簡單易用。清晰的顯卡驅動的安裝、部署指引,免去高學習成本。而且節約成本,你無需預先採購、准備硬體資源,一次性購買,免除硬體更新帶來的額外費用,有效降低基礎設施建設投入。目前,騰訊雲的GPU雲伺服器已全面支持包年包月計費和按量計費,你可以根據需要選擇計費模式。

熱點內容
易語言模板不能靜態編譯 發布:2024-04-26 19:59:02 瀏覽:352
sql注釋語句 發布:2024-04-26 19:58:48 瀏覽:653
sql存儲過程out 發布:2024-04-26 19:33:15 瀏覽:414
struts2訪問方法 發布:2024-04-26 19:11:36 瀏覽:259
外文翻譯android 發布:2024-04-26 19:03:30 瀏覽:90
土金木配置怎麼樣 發布:2024-04-26 18:52:50 瀏覽:611
這台電腦如何訪問另一台電腦伺服器 發布:2024-04-26 18:51:08 瀏覽:628
怎麼快速了解電腦的配置 發布:2024-04-26 18:42:11 瀏覽:998
rsa加密演算法例子 發布:2024-04-26 18:40:29 瀏覽:244
thinkphp緩存關閉 發布:2024-04-26 18:19:32 瀏覽:97