這是機器未來的第2篇文章,由機器未來原創
寫在前面:
??博客簡介:專注AIoT領域,追逐未來時代的脈搏,記錄路途中的技術成長!
??專欄簡介:記錄博主從0到1掌握物體檢測工作流的過程,具備自定義物體檢測器的能力
??面向人群:具備深度學習理論基礎的學生或初級開發者
??專欄計劃:接下來會逐步發布跨入人工智能的系列博文,敬請期待
??Python零基礎快速入門系列
??快速入門Python數據科學系列
??人工智能開發環境搭建系列
??機器學習系列
??物體檢測快速入門系列
??自動駕駛物體檢測系列
??......
@[toc]
1. 概述
windows GPU深度學習開發環境的安裝包含顯卡驅動、cuda、cuDNN深度學習加速包、anaconda、tensorflow的安裝以及安裝源的配置,理解了本文,還可以安裝pytorch等其他開發框架。
2. GPU工具鏈安裝
2.1 GPU工具鏈的組成
Nvidia顯卡、顯卡驅動、cuda工具套件、cuDNN工具包四部分構成。
目前支持深度學習的顯卡基本上就是N卡,不論是硬件性能,還是最新的論文支持基本上都是N卡,所以不用在這里糾結了,采購時一定要上N卡。
??什么是cuda CUDA(ComputeUnified Device Architecture),是顯卡廠商NVIDIA推出的運算平臺。 CUDA是一種由NVIDIA推出的通用并行計算架構,該架構使GPU能夠解決復雜的計算問題。注意:cuda的支持依賴顯卡驅動的版本。
??什么是cuDNN NVIDIA cuDNN是用于深度神經網絡的GPU加速庫。它強調性能、易用性和低內存開銷。NVIDIA cuDNN可以集成到更高級別的機器學習框架中,如谷歌的Tensorflow、加州大學伯克利分校的流行caffe軟件。簡單的插入式設計可以讓開發人員專注于設計和實現神經網絡模型,而不是簡單調整性能,同時還可以在GPU上實現高性能現代并行計算。
??CUDA與CUDNN的關系 CUDA看作是一個并行計算架構平臺,cuDNN是基于CUDA的深度學習GPU加速庫,有了它才能在GPU上完成深度學習的計算。想要在CUDA上運行深度神經網絡,就要安裝cuDNN,這樣才能使GPU進行深度神經網絡的工作,工作速度相較CPU快很多。
2.2 安裝nvidia顯卡驅動
下載地址:https://www.nvidia.com/download/index.aspx?lang=en-us
根據提供的下載鏈接選擇電腦對應的最新顯卡驅動安裝即可,這里需要記錄一下顯卡驅動的版本,安裝cuda要用,我這臺老電腦顯卡驅動的文件名為425.31-notebook-win10-64bit-international-whql.exe,版本是425.31。
2.3 安裝cuda-通用并行計算架構平臺
??查詢顯卡可支持的cuda版本
-
??https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html
根據上一個步驟下載的顯卡驅動的版本,選擇可支持的最新cuda toolkit版本,從上圖中可以看到支持425.31驅動版本的cuda toolkit版本是CUDA 10.1 (10.1.105 general release, and updates) ,因此選擇下載cuda10.1的版本。
??顯卡驅動cuda版本對照表
??安裝cuda
??https://developer.nvidia.com/cuda-toolkit-archive
??cuda下載地址:
-
??下載最新版本的cuda10.1
-
??選擇配置
??下載完成后,文件名為cuda_10.1.243_426.00_win10.exe,雙擊一直下一步安裝即可, 默認安裝路徑為C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1。
2.4 安裝cuDNN-深度學習GPU加速庫
??cuDNN下載地址(需要注冊)
??https://developer.nvidia.com/rdp/cudnn-archive
??cuDNN版本的選擇 以tensorflow常見cuda和cuDNN搭配為主。
下載的cuda版本為10.1版本,從列表中查找支持cuda10.1的最新的cuDNN版本是cuDNN7.6.5,下載后的cuDNN文件為cudnn-10.1-windows10-x64-v7.6.5.32.zip
??安裝cuDNN
-
??將下載的cudnn-10.1-windows10-x64-v7.6.5.32.zip解壓,然后將解壓后cuda文件夾下的文件或文件夾,完全拷貝到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1目錄下即可。
2.5 測試GPU環境
??命令提示行輸入nvidia-smi
查詢GPU使用情況和更改GPU狀態的功能
PS?C:\Users\zhoushimin>?nvidia-smi
Mon?Apr?04?22:00:37?2022
+-----------------------------------------------------------------------------+
|?NVIDIA-SMI?426.00???????Driver?Version:?426.00???????CUDA?Version:?10.1?????|
|-------------------------------+----------------------+----------------------+
|?GPU??Name????????????TCC/WDDM?|?Bus-Id????????Disp.A?|?Volatile?Uncorr.?ECC?|
|?Fan??Temp??Perf??Pwr:Usage/Cap|?????????Memory-Usage?|?GPU-Util??Compute?M.?|
|===============================+======================+======================|
|???0??GeForce?GT?650M????WDDM??|?00000000:01:00.0?N/A?|??????????????????N/A?|
|?N/A???36C????P0????N/A?/??N/A?|?????40MiB?/??2048MiB?|?????N/A??????Default?|
+-------------------------------+----------------------+----------------------+
+-----------------------------------------------------------------------------+
|?Processes:???????????????????????????????????????????????????????GPU?Memory?|
|??GPU???????PID???Type???Process?name?????????????????????????????Usage??????|
|=============================================================================|
|????0????????????????????Not?Supported???????????????????????????????????????|+-----------------------------------------------------------------------------+
如果提示'nvidia-smi' 不是內部或外部命令,也不是可運行的程序,則可能環境變量沒有配置好,需要將 C:\Program Files\NVIDIA Corporation\NVSMI 目錄添加到系統環境變量中關閉命令提示符,重新打開輸入?nvidia-smi
?就可以看到上面的輸出結果了。
??查看cuda版本 輸入nvcc -V
查看cuda版本
PS?C:\Users\zhoushimin>?nvcc?-V
nvcc:?NVIDIA?(R)?Cuda?compiler?driver
Copyright?(c)?2005-2019?NVIDIA?Corporation
Built?on?Sun_Jul_28_19:12:52_Pacific_Daylight_Time_2019Cuda?compilation?tools,?release?10.1,?V10.1.243
可以看到cuda版本為10.1
??查看cuDNN版本 輸入如下命令查看
type?"C:\Program?Files\NVIDIA?GPU?Computing?Toolkit\CUDA\v10.1\include\cudnn.h"?|?less
按回車鍵,直到輸出結果如下:
#ifndef?CUDNN_VERSION_H_
#define?CUDNN_VERSION_H_
#define?CUDNN_MAJOR?7
#define?CUDNN_MINOR?6
#define?CUDNN_PATCHLEVEL?5
#define?CUDNN_VERSION?(CUDNN_MAJOR?*?1000?+?CUDNN_MINOR?*?100?+?CUDNN_PATCHLEVEL)
#endif?/*?CUDNN_VERSION_H?*/
可知cuDNN的版本為7.6.5
如果找不到相關信息,可以使用如下命令測試
type?"C:\Program?Files\NVIDIA?GPU?Computing?Toolkit\CUDA\v10.1\include\cudnn_version.h"?|?less
3. 安裝Anaconda
3.1 概述
Anaconda,中文大蟒蛇,是一個開源的Python發行版本,其包含了conda、Python等180多個科學包及其依賴項。其簡化了python軟件包的安裝,并且自動關聯依賴,自動下載依賴的軟件包,避免不必要的沖突,另外,anaconda最重要的功能就是創建虛擬環境,實現各種項目開發框架及版本的隔離。
3.2 下載anaconda
Anaconda的官方下載速度較慢,推薦使用清華大學的源下載,盡量選擇日期較新的版本,根據操作系統版本選擇對應的版本。
??官方下載地址:https://www.anaconda.com/
??國內下載地址:
-
??清華大學 https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/
3.3 安裝Anaconda
注意事項:不要有中文路徑,安裝過程無腦下一步即可。 安裝完畢之后,python、pip等軟件均已安裝完畢。
3.4 測試Anaconda
在命令提示符輸入conda -V
查看conda版本,以確認conda環境是否生效。
PS?C:\Users\zhoushimin>?conda?-Vconda?4.10.3
3.5 配置Anaconda
由于Anaconda官方服務器在國外,安裝python軟件包時下載速度巨慢,因此需要配置國內安裝源,在這里使用清華大學的第三方源。
??首先找到配置文件【.condarc】,其在C盤用戶目錄下,如圖:
如果不存在,則直接創建即可。
??打開文件后,將以下內容拷貝到文件中
channels:
-?defaults
show_channel_urls:?true
default_channels:
-?https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
-?https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
-?https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
conda-forge:?https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2:?https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda:?https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo:?https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch:?https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch-lts:?https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloudsimpleitk:?https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
??清除索引緩存 在命令行執行命令
conda?clean?-i
??建立虛擬環境測試下載速度
conda?create?-n?myenv?numpy
測試時會發現下載包的速度杠杠的,測試完畢后,刪除myenv虛擬環境
conda?remove?-n?myenv?--all
??恢復官方安裝源 如果使用第三方源出現問題,可以恢復官方安裝源重試,恢復指令如下:
conda?config?--remove-key?channels
4. 配置pip國內安裝源
使用pip安裝軟件包時,有些安裝包下載速度特別慢,可以選擇國內的安裝源。
4.1 安裝源列表
以下安裝源可以選擇:
#?清華大學?
https://pypi.tuna.tsinghua.edu.cn/simple/
#?阿里云?
http://mirrors.aliyun.com/pypi/simple/
#?中國科技大學?https://pypi.mirrors.ustc.edu.cn/simple
4.2 安裝源的使用方式
4.2.1 臨時使用
以安裝tensorflow使用阿里云安裝源為例,在-i后面指定安裝源即可
pip?install?tensorflow_gpu==2.3?-i?http://mirrors.aliyun.com/pypi/simple/
4.2.2 永久使用
做如下配置后,無需再使用-i選項
pip?install?pip?-U?#升級?pip?到最新的版本后進行配置:pip?config?set?global.index-url?https://mirrors.aliyun.com/pypi/simple/
4.2.3 恢復官方安裝源
如果安裝源出現異常,恢復官方安裝源的方式如下:
pip?config?unset?global.index-url`
5. 安裝tensorflow
5.1 創建tensorflow虛擬環境
為了隔離不同項目可能對應的不同tensorflow版本或pytorch或python版本,強烈建議使用conda創建不同的虛擬環境以實現各種不同的開發環境的隔離。
我們需要根據開發框架、cuda版本等信息綜合選擇合適的開發環境,強烈不建議自行搭建開發環境適配開源框架,你會懷疑人生,時間周期可能是星期級別!
5.1.1 查看開源框架支持的python和tensorflow版本
博主的需求是安裝物體檢測API[OBJECT DETECTION API],根據項目的最低配置可以了解到支持的是tensorflow-2.2 python3.6
5.1.2 查看cuda可支持的tensorflow版本
-?查看cuda、tensorflow對照關系表
????-?[經過測試的構建配置](https://tensorflow.google.cn/install/source?hl=zh-cn#gpu)?????
5.1.3 根據開源框架支持的tensorflow版本、cuda版本,選擇tensorflow-2.2,python-3.6,根據這些信息創建虛擬環境
conda?create?-n?[env_name]?python=[python?version]
詳細命令如下:
conda?create?-n?tensorflow-2.2-py36?python=3.6
輸出如下:
PS?C:\Users\zhoushimin>?conda?create?-n?tensorflow-2.2-py36?python=3.6
Collecting?package?metadata?(repodata.json):?done
Solving?environment:?done
==>?WARNING:?A?newer?version?of?conda?exists.?<==
current?version:?4.10.3
latest?version:?4.12.0
Please?update?conda?by?running
$?conda?update?-n?base?-c?defaults?conda
##?Package?Plan?##
environment?location:?D:\Tools\Anaconda3\envs\tensorflow-2.2-py36
added?/?updated?specs:
-?python=3.6
The?following?packages?will?be?downloaded:
package????????????????????|????????????build
---------------------------|-----------------
certifi-2021.5.30??????????|???py36haa95532_0?????????142?KB??defaults
pip-21.2.2?????????????????|???py36haa95532_0?????????2.1?MB??defaults
python-3.6.13??????????????|???????h3758d61_0????????17.7?MB??defaults
setuptools-58.0.4??????????|???py36haa95532_0?????????976?KB??defaults
wincertstore-0.2???????????|???py36h7fe50ca_0??????????13?KB??defaults
------------------------------------------------------------
Total:????????20.9?MB
The?following?NEW?packages?will?be?INSTALLED:
certifi????????????anaconda/pkgs/main/win-64::certifi-2021.5.30-py36haa95532_0
pip????????????????anaconda/pkgs/main/win-64::pip-21.2.2-py36haa95532_0
python?????????????anaconda/pkgs/main/win-64::python-3.6.13-h3758d61_0
setuptools?????????anaconda/pkgs/main/win-64::setuptools-58.0.4-py36haa95532_0
sqlite?????????????anaconda/pkgs/main/win-64::sqlite-3.38.2-h2bbff1b_0
vc?????????????????anaconda/pkgs/main/win-64::vc-14.2-h21ff451_1
vs2015_runtime?????anaconda/pkgs/main/win-64::vs2015_runtime-14.27.29016-h5e58377_2
wheel??????????????anaconda/pkgs/main/noarch::wheel-0.37.1-pyhd3eb1b0_0
wincertstore???????anaconda/pkgs/main/win-64::wincertstore-0.2-py36h7fe50ca_0
Proceed?([y]/n)??y
等待執行完畢。
5.2 切換至虛擬環境,安裝tensorflow
??切換至虛擬環境
conda?activate?tensorflow-2.2-py36
??安裝tensorflow
pip?install?tensorflow==2.2.0
??安裝完畢后的輸出如下
Successfully?built?termcolor
Installing?collected?packages:?urllib3,?pyasn1,?idna,?charset-normalizer,?zipp,?typing-extensions,?six,?rsa,?requests,?pyasn1-modules,?oauthlib,?cachetools,?requests-oauthlib,?importlib-metadata,?google-auth,?dataclasses,?werkzeug,?tensorboard-plugin-wit,?protobuf,?numpy,?markdown,?grpcio,?google-auth-oauthlib,?absl-py,?wrapt,?termcolor,?tensorflow-estimator,?tensorboard,?scipy,?opt-einsum,?keras-preprocessing,?h5py,?google-pasta,?gast,?astunparse,?tensorflowSuccessfully?installed?absl-py-1.0.0?astunparse-1.6.3?cachetools-4.2.4?charset-normalizer-2.0.12?dataclasses-0.8?gast-0.3.3?google-auth-1.35.0?google-auth-oauthlib-0.4.6?google-pasta-0.2.0?grpcio-1.44.0?h5py-2.10.0?idna-3.3?importlib-metadata-4.8.3?keras-preprocessing-1.1.2?markdown-3.3.6?numpy-1.19.5?oauthlib-3.2.0?opt-einsum-3.3.0?protobuf-3.19.4?pyasn1-0.4.8?pyasn1-modules-0.2.8?requests-2.27.1?requests-oauthlib-1.3.1?rsa-4.8?scipy-1.4.1?six-1.16.0?tensorboard-2.2.2?tensorboard-plugin-wit-1.8.1?tensorflow-2.2.0?tensorflow-estimator-2.2.0?termcolor-1.1.0?typing-extensions-4.1.1?urllib3-1.26.9?werkzeug-2.0.3?wrapt-1.14.0?zipp-3.6.0
5.3 測試tensorflow gpu環境
創建gpu_tf_test.py,拷貝如下代碼:
import?numpy?as?np
import?tensorflow?as?tf
from?tensorflow?import?keras
from?tensorflow.keras.models?import?Sequential
from?tensorflow.keras.layers?import?Dense
from?tensorflow.keras.optimizers?import?SGD
import?time?
#?config?=?tf.ConfigProto()
#?config.gpu_options.allow_growth?=?True
#?session?=?tf.Session(config=config)
#?啟用GPU
from?tensorflow.compat.v1?import?ConfigProto#?tf?2.x的寫法
config?=ConfigProto()
config.gpu_options.per_process_gpu_memory_fraction=0.9
tf.compat.v1.Session(config=config)
#?構建數據集
X_data?=?np.linspace(-1,1,1000)[:,?np.newaxis]
noise?=?np.random.normal(0,0.05,X_data.shape)
y_data?=?np.square(X_data)?+?noise?+?0.5
print("shape")
print(X_data.shape)
#?構建神經網絡
model?=?Sequential()
model.add(Dense(10,?input_shape=(1,),?kernel_initializer='normal',?activation='relu'))
#model.add(Dense(5,?activation='relu'))
#?vs?分類為softmax激活
model.add(Dense(10000,?kernel_initializer='normal'))
model.add(Dense(10000,?kernel_initializer='normal'))
model.add(Dense(100,?kernel_initializer='normal'))
model.add(Dense(1,?kernel_initializer='normal'))
#sgd?=?SGD(lr=0.001)
model.compile(loss='mean_squared_error',?optimizer="sgd")?#adam
#?訓練?epoch?=?10,?30,?50,?view?the?results
start?=?time.time()
model.fit(X_data,?y_data,?epochs=50,?batch_size=16,?verbose=1)
end?=?time.time()
#?在原數據上預測
y_predict=model.predict(X_data)
#print(y_predict)
model.summary()
print("training?time?{}".format(end?-?start))
執行測試
#?切換至虛擬環境
conda?activate?tensorflow-2.2-py36
#?執行測試python?gpu_tf_test.py
輸出如下:
(tensorflow-2.2-py36)?C:\Users\zhoushimin\Desktop>python?gpu_test.py
2022-04-05?00:24:35.790114:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cudart64_101.dll
2022-04-05?00:24:39.180693:?I?tensorflow/compiler/xla/service/service.cc:168]?XLA?service?0x211ab3407a0?initialized?for?platform?Host?(this?does?not?guarantee?
that?XLA?will?be?used).?Devices:
2022-04-05?00:24:39.181152:?I?tensorflow/compiler/xla/service/service.cc:176]???StreamExecutor?device?(0):?Host,?Default?Version
2022-04-05?00:24:39.185023:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?nvcuda.dll
2022-04-05?00:24:39.957288:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1561]?Found?device?0?with?properties:?
pciBusID:?0000:01:00.0?name:?GeForce?GT?650M?computeCapability:?3.0
coreClock:?0.835GHz?coreCount:?2?deviceMemorySize:?2.00GiB?deviceMemoryBandwidth:?59.60GiB/s
2022-04-05?00:24:39.958038:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cudart64_101.dll
2022-04-05?00:24:39.965471:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cublas64_10.dll
2022-04-05?00:24:39.972214:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cufft64_10.dll
2022-04-05?00:24:39.975560:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?curand64_10.dll
2022-04-05?00:24:39.985029:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cusolver64_10.dll
2022-04-05?00:24:39.989813:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cusparse64_10.dll
2022-04-05?00:24:40.014427:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cudnn64_7.dll
2022-04-05?00:24:40.016214:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1657]?Ignoring?visible?gpu?device?(device:?0,?name:?GeForce?GT?650M,?pci?bus?id:?0000:01:00.0,?compute?capability:?3.0)?with?Cuda?compute?capability?3.0.?The?minimum?required?Cuda?capability?is?3.5.
2022-04-05?00:24:40.063972:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1102]?Device?interconnect?StreamExecutor?with?strength?1?edge?matrix:
2022-04-05?00:24:40.064381:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]??????0?
2022-04-05?00:24:40.064707:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1121]?0:???N
2022-04-05?00:24:40.068691:?I?tensorflow/compiler/xla/service/platform_util.cc:139]?StreamExecutor?cuda?device?(0)?is?of?insufficient?compute?capability:?3.5?required,?device?is?3.0
2022-04-05?00:24:40.069704:?I?tensorflow/compiler/jit/xla_gpu_device.cc:161]?Ignoring?visible?XLA_GPU_JIT?device.?Device?number?is?0,?reason:?Internal:?no?supported?devices?found?for?platform?CUDA
shape
(1000,?1)
2022-04-05?00:24:40.099506:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1561]?Found?device?0?with?properties:?
pciBusID:?0000:01:00.0?name:?GeForce?GT?650M?computeCapability:?3.0
coreClock:?0.835GHz?coreCount:?2?deviceMemorySize:?2.00GiB?deviceMemoryBandwidth:?59.60GiB/s
2022-04-05?00:24:40.100197:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cudart64_101.dll
2022-04-05?00:24:40.100541:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cublas64_10.dll
2022-04-05?00:24:40.100821:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cufft64_10.dll
2022-04-05?00:24:40.101140:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?curand64_10.dll
2022-04-05?00:24:40.101432:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cusolver64_10.dll
2022-04-05?00:24:40.101674:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cusparse64_10.dll
2022-04-05?00:24:40.101915:?I?tensorflow/stream_executor/platform/default/dso_loader.cc:44]?Successfully?opened?dynamic?library?cudnn64_7.dll
2022-04-05?00:24:40.103257:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1657]?Ignoring?visible?gpu?device?(device:?0,?name:?GeForce?GT?650M,?pci?bus?id:?0000:01:00.0,?compute?capability:?3.0)?with?Cuda?compute?capability?3.0.?The?minimum?required?Cuda?capability?is?3.5.
2022-04-05?00:24:40.104045:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1102]?Device?interconnect?StreamExecutor?with?strength?1?edge?matrix:
2022-04-05?00:24:40.104239:?I?tensorflow/core/common_runtime/gpu/gpu_device.cc:1108]
2022-04-05?00:24:40.139180:?W?tensorflow/core/framework/cpu_allocator_impl.cc:81]?Allocation?of?400000000?exceeds?10%?of?free?system?memory.
2022-04-05?00:24:41.717374:?W?tensorflow/core/framework/cpu_allocator_impl.cc:81]?Allocation?of?400000000?exceeds?10%?of?free?system?memory.
2022-04-05?00:24:41.799759:?W?tensorflow/core/framework/cpu_allocator_impl.cc:81]?Allocation?of?400000000?exceeds?10%?of?free?system?memory.
Epoch?1/50
2022-04-05?00:24:42.666531:?W?tensorflow/core/framework/cpu_allocator_impl.cc:81]?Allocation?of?400000000?exceeds?10%?of?free?system?memory.
2022-04-05?00:24:42.841301:?W?tensorflow/core/framework/cpu_allocator_impl.cc:81]?Allocation?of?400000000?exceeds?10%?of?free?system?memory.
63/63?[==============================]?-?36s?567ms/step?-?loss:?0.2708
Epoch?2/50
63/63?[==============================]?-?35s?559ms/step?-?loss:?0.0703
Epoch?3/50
63/63?[==============================]?-?39s?614ms/step?-?loss:?0.0350
Epoch?4/50
63/63?[==============================]?-?41s?643ms/step?-?loss:?0.0140
Epoch?5/50
63/63?[==============================]?-?41s?650ms/step?-?loss:?0.0144
Epoch?6/5030/63?[=============>................]?-?ETA:?21s?-?loss:?0.0091
從日志中可以看到顯卡GeForce GT 650M已經加載成功了,cuda也加載成功了,因為GPU性能較弱,僅3.0,不滿足最小要求3.5,直接使用的cpu在運行。
6. 總結
總體來說,深度學習安裝環境的安裝還是比較麻煩的,涉及到
??顯卡支持的cuda版本確定
??依賴新卡驅動版本號
??cuDNN版本的確認
??依賴cuda版本和開發框架匹配的cuDNN版本
??python版本的確認等
??依賴開源項目支持的版本
一般來說,一個項目一個環境,避免環境沖突。一個項目一個環境可以通過anaconda來實現,也可以使用docker來實現隔離。有一些框架在windows平臺支持不好,例如目標檢測框架MMDetection,盡可能還是使用linux環境來做開發。
以上是我的學習總結,有問題歡迎交流。
推薦閱讀:
物體檢測快速入門系列(1)-Windows部署GPU深度學習開發環境
物體檢測快速入門系列(2)-Windows部署Docker GPU深度學習開發環境
物體檢測快速入門系列(3)-TensorFlow 2.x Object Detection API快速安裝手冊
物體檢測快速入門系列(4)-基于Tensorflow2.x Object Detection API構建自定義物體檢測器