---
# System prepended metadata

title: CUDA、cuDNN、TensorFlow 虛擬環境建置紀錄
tags: [TensorFlow, Virtualenv, CUDA, cuDNN, Python]

---

# CUDA、cuDNN、TensorFlow 虛擬環境建置紀錄
因為最近大三要做專題
系上提供了一台配有 GPU(1650ti) 的筆電
就順便紀錄一下 cuda、cudnn 和 tensorflow-gpu 的安裝過程
## **Step 0 確認 GPU 配對的 CUDA 版本**
1. 首先在cmd下
    ```
    nvidia-smi
    ```

2. 這裡會顯示你的所有 GPU 資訊和 GPU 的使用情況。第一行中，CUDA Version 顯示的是**可以安裝 CUDA 的最高版本**，依照我的顯示卡來說，最高是到 12.0 !
![pic1](https://hackmd.io/_uploads/r1lj3aVja.png)

3. TensorFlow、CUDA、cuDNN 對照表可以到 [這裡](https://tensorflow.google.cn/install/source_windows?hl=en#gpu) 看 
(TensorFlow 對應的 CUDA 只能高不能低，但有時太高也會出問題，盡量接近或相同)

## **Step 1 下載 cuda**
知道了電腦需要的 CUDA 版本之後就可以開始安裝 CUDA 了
CUDA 下載在 [這裡](https://developer.nvidia.com/cuda-toolkit-archive)
依照我的 GPU 支援的 CUDA 我就找 12.0 以下的
1. **先從官網找 exe**
![pic2](https://hackmd.io/_uploads/SkQMU1Bj6.png)

2. **開始安裝**
![pic3](https://hackmd.io/_uploads/r1O4UkBoa.png)

3. **選擇自訂**
![pic4](https://hackmd.io/_uploads/HkQwLyBip.png)

4. **選擇 CUDA 就好**
![pic5](https://hackmd.io/_uploads/B1_2c1Sia.png)

5. **檢查 CUDA 位置**
之後下載結束後，可以在 cmd 下
    ```
    where nvcc
    ```

    可以查看 cuda 安裝的位置
    ![pic6](https://hackmd.io/_uploads/BJlG2JHja.png)

## **Step 2 下載 cuDNN**
CUDA 下載後就要換下載 cuDNN 了
cuDNN 下載在 [這裡](https://developer.nvidia.com/rdp/cudnn-archive)

1. **先從官網找版本**
他都會說他是 for 什麼版本的 CUDA
![pic7](https://hackmd.io/_uploads/BkT0Tkria.png)
2. **下載 Local Installer for Windows**
因為我作業系統是 Windows 下載 Local Installer for Windows
![pic8](https://hackmd.io/_uploads/rybUJgrsa.png)
3. **把資料放進 CUDA 資料夾**
下載完 zip 裡的資料夾大概長這樣
![pic9](https://hackmd.io/_uploads/HyZpgersp.png)
然後到 cuda 的資料夾位置裡，會有跟剛剛 cuDNN 同名的資料夾
![pic10](https://hackmd.io/_uploads/HyHdmxro6.png)
之後就把 bin、include、lib，覆蓋掉 cuda 裡同名的資料夾，CUDA 和 cuDNN 在這裡就已經完成了

## **Step 3 使用 Virtualenv 創建虛擬環境**
1. **安裝 Virtualenv**
    ```
    pip install virtualenv
    ```

2. **確認python位置**
Virtualenv 的語法可以指定 Python 版本創建虛擬環境
要確定 Python 位置可以下
    ```
    where python
    ``` 
    ![pic11](https://hackmd.io/_uploads/BJaTzZBip.png)

3. **創建虛擬環境**
前面是指定 Python 版本，後面是虛擬環境名稱
    ```
    virtualenv --python=C:\python\python\py37_9\python.exe test_venv
    ```

4. **啟動虛擬環境**
    ```
    cd test_venv/Script
    activate
    ```
    前面有 (test_venv) 就代表成功啟動了
    ![pic12](https://hackmd.io/_uploads/rJtXibHop.png)
5. **退出虛擬環境**
    ```
    deactivate
    ```

## **Step 4 虛擬環境中安裝 TensorFlow**
我這個虛擬環境 Python 版本是 3.7.9，那我選一個支援的 TensorFlow-GPU 版本是 2.8.0
```
pip install tensorflow-gpu==2.8.0
```

之後想要確認 GPU 是否抓的到，可以依以下步驟
1. 創建一個 Python 程式
2. import 套件
    ```python=
    import tensorflow
    ```
    必須沒有出現 No Moudle named "tensorflow"，才算成功
3. 檢查 CUDA 能否抓到 GPU
    ```python=
    from tensorflow.python.client import device_lib
    print(device_lib.list_local_devices())
    ```
    有出現 GPU 才算完成


## **Step 5 打包venv**
可以把虛擬環境中安裝的套件全部列為一個 txt
```
pip freeze > requirements.txt
```
安裝套件 txt 中的套件
```
pip install -r requirements.txt
```

