一文掌握Windows平臺GPU深度學習開發環境部署

語言: CN / TW / HK

本文已參與「新人創作禮」活動,一起開啟掘金創作之路

這是機器未來的第2篇文章,由機器未來原創

寫在前面:

  • • 部落格簡介:專注AIoT領域,追逐未來時代的脈搏,記錄路途中的技術成長!

  • • 專欄簡介:記錄博主從0到1掌握物體檢測工作流的過程,具備自定義物體檢測器的能力

  • • 面向人群:具備深度學習理論基礎的學生或初級開發者

  • • 專欄計劃:接下來會逐步釋出跨入人工智慧的系列博文,敬請期待

  • • Python零基礎快速入門系列

  • • 快速入門Python資料科學系列

  • • 人工智慧開發環境搭建系列

  • • 機器學習系列

  • • 物體檢測快速入門系列

  • • 自動駕駛物體檢測系列

  • • ......

@[toc]

1. 概述

windows GPU深度學習開發環境的安裝包含顯示卡驅動、cuda、cuDNN深度學習加速包、anaconda、tensorflow的安裝以及安裝源的配置,理解了本文,還可以安裝pytorch等其他開發框架。

圖片

fengmian

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

圖片

2

根據提供的下載連結選擇電腦對應的最新顯示卡驅動安裝即可,這裡需要記錄一下顯示卡驅動的版本,安裝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

    圖片

    4

  • • 選擇配置

    圖片

    3

  • • 下載完成後,檔名為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搭配為主。

    圖片

    11

    圖片

    12

    下載的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目錄下即可。

    圖片

    6

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 就可以看到上面的輸出結果了。

圖片

7

  • • 檢視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_2019 Cuda 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/

    圖片

    8

3.3 安裝Anaconda

注意事項:不要有中文路徑,安裝過程無腦下一步即可。 安裝完畢之後,python、pip等軟體均已安裝完畢。

3.4 測試Anaconda

在命令提示符輸入conda -V檢視conda版本,以確認conda環境是否生效。

PS C:\Users\zhoushimin> conda -V conda 4.10.3

3.5 配置Anaconda

由於Anaconda官方伺服器在國外,安裝python軟體包時下載速度巨慢,因此需要配置國內安裝源,在這裡使用清華大學的第三方源。

  • • 首先找到配置檔案【.condarc】,其在C盤使用者目錄下,如圖:

    圖片

    9

    如果不存在,則直接建立即可。

  • • 開啟檔案後,將以下內容拷貝到檔案中

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/cloud simpleitk: 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

圖片

10

5.1.2 檢視cuda可支援的tensorflow版本

- 檢視cuda、tensorflow對照關係表     - [經過測試的構建配置](https://tensorflow.google.cn/install/source?hl=zh-cn#gpu)      ![11](https://robot-futures-oss-zone.oss-cn-hangzhou.aliyuncs.com/imgs/11.png)

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, tensorflow Successfully 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/50 30/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環境來做開發。

以上是我的學習總結,有問題歡迎交流。

參考連結:

  • • CUDA與cuDNN:https://www.jianshu.com/p/622f47f94784

推薦閱讀:

圖片