利用GPU加速TensorFlow

一、寫在前面

我們已經依靠keras和TensorFlow給大家做了一些機器學習在圖像處理中的應用(影像組學學習手冊,基于深度學習的圖像分類任務),此前的教程中我們沒有用GPU進行加速,但是相較于CPU而言,GPU是設計用于處理大規模并行計算任務的硬件,具有大量的小型處理單元(CUDA核心或流處理器),這使得它們能夠同時執行多個計算任務。GPU的并行性能遠遠超過了CPU,因此能夠加速機器學習過程中的訓練和推斷過程。而當下流行的深度學習框架如TensorFlow和PyTorch均提供了GPU加速的支持,使得在GPU上運行模型變得更加容易。這些框架通過CUDA或OpenCL等接口與GPU通信,從而簡化了GPU的使用。不過,為了讓TensorFlow能夠順利調用GPU,我們還需要額外安裝軟件并配置環境。

需要GPU算力的同學可參考:終于上架啦

也可以來找找組織:生信Linux交流群

計算資源不足的同學可參考:
生信分析為什么要使用服務器?
足夠支持你完成碩博生涯的生信環境
獨享用戶硬件升級對比報告

二、依賴知識

為了順利完成以下操作,你需要有Linux和Python的基礎知識:

十小時學會Linux

生信Python速查手冊

三、win11+GTX 1650下的GPU加速環境配置

1、確認系統版本與顯卡型號

首先我在我的筆記本上測試了一下,系統版本為Windows11 家庭中文版,顯卡型號為NVIDIA GeForce GTX 1650(不要問我AMD的顯卡以及其它品牌的顯卡怎么配置,因為我沒有)。確認好以上信息后,再進行下面的操作。

2、確認顯卡驅動與CUDA版本?

如果大家不知道自己顯卡的版本型號,可以現在windows的檢索欄中打開顯卡控制中心:

圖片

界面中自然有對應的版本與驅動型號:

圖片


按下鍵盤上的Win + R組合鍵,然后在運行對話框中鍵入cmd,然后按Enter鍵。可以進入windows的終端,輸入:

    nvidia-smi

    回車后即可返回對應信息,這里由于我已經裝好了cuda,所以cuda的版本號也顯能夠顯示:

    圖片

    3、安裝驅動

    如果你的驅動未能正常安裝/不確定自己的驅動是否適配/需要安裝指定的驅動,可以前往NVIDIA官網[1]填上對應的信息后獲得驅動文件。以我的環境為例:

    圖片

    搜索出來的頁面點擊download到本地后,管理員模式運行安裝即可。

    圖片

    有了你的驅動之后,需要根據版本號選擇cuda版本[2],這里由于我的驅動時546.33,所以下列的cuda版本理論上我都可以兼容

    圖片

    接下來,由于我的Python環境是3.8,經過查閱Tensorflow的推薦配置[3],因此我的最終選擇是2.4.0的tensorflow、11.0的CUDA。

    圖片

    3、動手安裝

    在終端中先安裝好tensorflow

      pip?install tensorflow-gpu==2.4.0pip?install numpy==1.2.0# tensorflow-gpu的2.4.0依賴的是1.9.0的numpy,但我實際運行時會報錯

      cuda需要去官方列表頁面[4]下載:

      圖片

      填寫好信息后進行下載:

      圖片

      下載后安排到默認位置即可。

      在終端中輸入:

        nvcc?-V

        能成功返回cuda的版本信息則安裝成功:

        圖片

        前往頁面下載[5]對應版本的cudnn:

        圖片

        下載得到的是一個壓縮包,解壓后有以下目錄:

        圖片

        cudnn實際上是庫文件,所以你需要把這個文件夾下bin里的文件拷貝到cuda的bin目錄下(對應我系統中的路徑就是C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin),把include中的文件拷貝到cuda的include目錄中(對應我的系統就是:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include),把lib/x64的文件拷貝到cuda的對應位置(對應我的系統就是:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\lib\x64)。

        完成上述的文件遷移操作后,找到bandwidthTest.exe程序(在我的系統中在:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\demo_suite\bandwidthTest.exe)并在終端中運行:

          "C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\demo_suite\bandwidthTest.exe"

          注意上面的命令要有雙引號,否則空格會不識別。運行后有以下提示說明cudnn安裝成功:

          圖片

          至此,為tensorflow搭建的GPU加速環境配置完成。

          四、驗證GPU加速

          導包驗證

            import?osimport?pandas?as?pdimport?tensorflowtensorflow.config.experimental.list_physical_devices('GPU')

            在Python中輸入以上命令若能返回GPU的相關參數,則說明上述配置成功

            圖片

            如果報錯缺少dll,則需要在終端聲明以下變量(需要改為你系統中的對應位置)

              SETPATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\bin;%PATH%SETPATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\extras\CUPTI\lib64;%PATH%SETPATH=C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.0\include;%PATH%

              在Python中也可以提前申明dll文件路徑后加載tensorflow:

                import?osos.add_dll_directory("C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.0\\bin")import?pandas as pdimport?tensorflowtensorflow.config.experimental.list_physical_devices('GPU')

                成功返回GPU信息即可

                圖片

                我使用了GPU加速,一個epoch大約是10s+:

                圖片

                而不用GPU加速的結果為35s+的樣子:

                圖片

                當然,我的CPU是I7-9750H,GPU是GTX 1650(已經淪為亮機卡了,相信擁有更高端顯卡的你一定能夠跑通這個教程),因此加速效果雖然顯著,但是不離譜,如果換成目前主流的顯卡,計算速度會相差數個量級。

                本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
                如若轉載,請注明出處:http://www.pswp.cn/diannao/89509.shtml
                繁體地址,請注明出處:http://hk.pswp.cn/diannao/89509.shtml
                英文地址,請注明出處:http://en.pswp.cn/diannao/89509.shtml

                如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

                相關文章

                模型預測專題:強魯棒性DPCC

                0 1 前言 在進行DPCC的學習過程中,于下面鏈接看到了一篇強魯棒性算法;感覺挺有意思的,學習一下。 永磁同步電機高性能控制算法(12)——基于預測電流誤差補償的強魯棒預測控制/參數辨識&有限集預測控制與連續集預…

                修復opensuse 風滾草rabbitmq的Error: :plugins_dir_does_not_exist問題

                https://wiki.archlinux.org/title/Talk:RabbitMQ 報錯 yqh192 /u/l/r/l/r/plugins> sudo rabbitmq-plugins enable rabbitmq_management Error: :plugins_dir_does_not_exist Arguments given:enable rabbitmq_managementUsagerabbitmq-plugins [--node <node>] [--…

                前端做gis地圖有哪些庫

                以下是前端開發GIS地圖常用的庫&#xff1a; Leaflet&#xff1a;輕量級、易于使用的開源JavaScript庫&#xff0c;具有豐富的地圖功能和插件生態系統&#xff0c;支持多種地圖數據源&#xff0c;適合初學者和專業開發者。其優勢在于簡潔性和易用性&#xff0c;代碼結構清晰&am…

                賦能城市安全韌性|眾智鴻圖總裁扈震受邀出席智慧城市大會發表主題報告

                ——“眾智鴻圖作為城市基礎設施智能化綜合服務提供商&#xff0c;以地理信息科學、時空大數據、人工智能為核心能力&#xff0c;長期深耕于燃氣、供水、排水等城市基礎設施生命線領域及港口、園區等工業領域&#xff0c;致力于為城市穩定運行與高效發展提供堅實保障。” 2025年…

                【大語言模型入門】—— 淺析LLM基座—Transformer原理

                【大語言模型入門】—— 淺析LLM基座—Transformer原理 解密GPT核心技術&#xff1a;Transformer架構深度解析被反復強調的核心概念意味著什么&#xff1f; GPT預測機制解析&#xff1a;從Next Token Prediction到任務推理核心機制的本質案例驅動的機制解析解構策略&#xff1a…

                Django打造智能Web機器人控制平臺

                Django 實現 Web 機器人控制 以下是關于 Django 實現 Web 機器人控制管理的實例思路和關鍵代碼片段,涵蓋多個常見場景。由于篇幅限制,剩余的可通過類似模式擴展。 基礎機器人模型定義 # models.py from django.db import modelsclass Robot(models.Model):name = models.C…

                周賽98補題

                題目意思&#xff1a; 給定一個數字判斷加上自身任意因子數&#xff0c;是否能成為一個奇數。 思路&#xff1a; 我們想一個最簡單的判斷方法&#xff0c; 任意的數字的因子數都有1&#xff0c;故&#xff0c;最簡單的方法就是判斷奇偶。 奇數1成偶數&#xff0c;偶數1成奇…

                【STM32】 STM32低功耗模式詳解:睡眠模式與喚醒機制【待測試】

                本篇知識點基于F0講解 一、STM32三種低功耗模式參考表格 模式功耗喚醒時間保持狀態典型應用場景睡眠模式中等 (mA級)最短 (μs級)CPU停止&#xff0c;外設保持短暫待機&#xff0c;快速響應停止模式低 (μA級)中等 (ms級)RAM保持&#xff0c;時鐘停止長時間待機&#xff0c;電…

                【Vue入門學習筆記】Vue核心語法

                目錄 準備工作刪除不需要的代碼 模版語法文本插值使用JavaScript表達式無效寫法原始HTML 屬性綁定簡寫布爾型Attribute動態綁定多個值 準備工作 刪除不需要的代碼 刪除components下的文件 進入App.vue 刪掉代碼&#xff0c;只保留如下內容 <template></template&g…

                ClickHouse 窗口分析 argMax() / argMin()

                argMin() 是 ClickHouse 中一個非常有用的聚合函數&#xff0c;它可以找出某個列的最小值&#xff0c;并返回該最小值對應的另一個列的值 函數語法 argMin(arg, val) arg&#xff1a;要返回的列&#xff08;當找到最小值時返回該列的值&#xff09; val&#xff1a;用于比較的…

                k8s client 通過KubeConfig和證書方式連接api server

                一、背景 本文以kubePi這樣一個k8s客戶端為示例,使用證書方式,怎么連接k8s集群。 然后告訴你證書是如何生成的, 最后通過一個Python編程示例,在程序里如何使用。 api server地址:比如https://110.206.56.308:6443 Certificate:證書內容 Certificate Key:證書的私鑰 先…

                (2025.07)解決——ubuntu20.04系統開機黑屏,左上角光標閃爍

                前面一些碎碎念&#xff1a; 電腦裝的雙系統&#xff0c;之前都還好著&#xff0c;今天突然ubuntu開機的時候黑屏了&#xff0c;左上角有光標在閃爍&#xff0c;也查了一些資料&#xff0c;基本上大家的都是驅動有問題&#xff0c;還有內存問題。&#xff08;個人建議&#xff…

                一文講清libmodbus在STM32上基于FreeRTOS的移植

                libmodbus 開發庫概述 libmodbus是一個免費的跨平臺支持RTU和TCP的Modbus庫&#xff0c;遵循LGPL V2.1協議。libmodbus支持Linux、 Mac Os X、 FreeBSD、 QNX和Windows等操作系統。 libmodbus可以向符合Modbus協議的設備發送和接收數據&#xff0c;并支持通過串口或者TCP網絡進…

                go語言安裝達夢數據完整教程

                一、安裝 go-dm 驅動 1. 使用 go get 命令安裝 # 打開PowerShell或命令提示符 go get github.com/dmdbms/go-dm# 若網絡問題&#xff0c;配置代理 go env -w GOPROXYhttps://goproxy.cn,direct2. 驗證驅動安裝 go list -m github.com/dmdbms/go-dm# 預期輸出類似 github.com…

                華為云Flexus+DeepSeek征文|基于Dify構建音視頻內容轉錄工作流

                華為云FlexusDeepSeek征文&#xff5c;基于Dify構建音視頻內容轉錄工作流 一、構建音視頻內容轉錄工作流前言二、構建音視頻內容轉錄工作流環境2.1 基于FlexusX實例的Dify平臺2.2 基于MaaS的模型API商用服務 三、構建音視頻內容轉錄工作流實戰3.1 配置Dify環境3.2 配置Dify工具…

                Pandas6(數據清洗2)——置換和隨機采樣、get_dummies、擴展數據類型、字符串處理函數

                數據清洗2 一、置換和隨機采樣&#xff08;permutation,sample&#xff09; 隨機置換&#xff08;打亂排序&#xff08;洗牌&#xff09;&#xff09;函數&#xff1a;numpy.random.permutation &#xff0c;可以對一個序列進行隨機排序&#xff0c;常用于數據集隨機劃分等場景…

                按月設置索引名的完整指南:Elasticsearch日期索引實踐

                按月設置索引名的完整指南:Elasticsearch日期索引實踐 在時序數據場景中,按月設置索引名(如logs-2024-01)是優化查詢效率、降低管理成本的關鍵策略。以下是三種實現方案及詳細步驟: 方案一:索引模板 + 日期數學表達式(推薦) 原理:利用ES內置的日期數學表達式動態生成…

                西南交通大學【機器學習實驗7】

                實驗目的 理解和掌握樸素貝葉斯基本原理和方法&#xff0c;理解極大似然估計方法&#xff0c;理解先驗概率分布和后驗概率分布等概念&#xff0c;掌握樸素貝葉斯分類器訓練方法。 實驗要求 給定數據集&#xff0c;編程實現樸素貝葉斯分類算法&#xff0c;計算相應先驗概率&a…

                java生成pdf文件

                1.依賴 <dependency><groupId>com.itextpdf</groupId><artifactId>itext-core</artifactId><version>8.0.4</version><type>pom</type></dependency> 2.代碼 package org.example;import com.itextpdf.io.image…

                macOS掛載iOS應用沙盒文件夾

                背景 工具 libimobiledevice: linux&#xff0c;macOS等與ios設備通信是的工具 macFUSE 是 macOS 文件系統擴展的“引擎”&#xff0c;支持開發者創建各類虛擬文件系統。 iFUSE 是專為 iOS 設備設計的“連接器”&#xff0c;需依賴 macFUSE 實現功能。 若需訪問 iPhone/iP…