手把手教你在Windows 10,MacOS和Linux中安装TensorFlow 2-GPU版本,亲测有效(附相关安装下载资源)

在这里插入图片描述

听说最近炸裂的ChatGPT的训练就需要非常大的算力,由于数据量非常大,训练一天就要烧掉上百万美元。虽然不能像欧美那些超级大公司拥有足够的资源来训练大模型,但也能尝试着使用一些小数据来训练自己的GPT模型,于是博主近期采购了一块16GB显存的Nividia Quasro RTX 5000,准备后期训练特定场景下的GPT模型。

在这里插入图片描述
Tensorflow是最常用的深度学习框架之一,可以说是目前最受欢迎的机器学习平台,拥有广泛的用户。接下来我就来从0开始,详细和大家演示下在Windows,Mac和Linux中安装支持CUDA,cudNN和GPU的TensorFlow版本。

Windows版本TensorFlow-GPU版本安装

1、要求

  • python版本要求:Python 3.6–3.8
  • windows系统:Windows 7 or later (with C++ redistributable)
  • 按下图检查tensorflow-GPU版本所需windows对应的安装软件信息
    在这里插入图片描述

2、步骤

1)下载并安装显卡驱动

前往Nividia官网,下载并安装对应的显卡驱动,博主根据自己的显卡配置,选择如下:
在这里插入图片描述
在这里插入图片描述

2)下载并安装Microsoft Visual Studio

windows官网下载Microsoft Visual Studio,并安装Microsoft Visual Studio

3)下载并安装NVIDIA CUDA Toolkit

检查软件版本和硬件要求,我们将使用下面版本:
在这里插入图片描述
我们将安装CUDA版本11.2,但请确保安装最新或更新的版本。
在这里插入图片描述
在这里插入图片描述
使用精简(Express)(推荐)选项安装CUDA:
在这里插入图片描述

4)下载cuDNN,并解压缩,复制

接着从Nvidia官网下载NVIDIA cuDNN,注意初次使用,需要注册一个账号,使用国内网络即可注册。
在这里插入图片描述
注册完后,就可以登录下载链接,选择Archived cuDNN Releases,根据CUDA11.2版本,我们选择V8.1.0版本的cuDNN下载

在这里插入图片描述
在这里插入图片描述
下载完成后,解压缩该文件。复制这3个文件夹bin,include,lib到C盘 Drive〉Program Files,然后搜索NVIDIA GPU Computing Toolkit,一般为以下路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA。打开V11.2版本,然后黏贴刚复制的3个文件夹。
在这里插入图片描述
在这里插入图片描述

5)修改环境变量

接下来打开bin文件夹并复制其路径,一般为以下路径:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\bin。然后打开环境变量,可以直接在搜索框中搜索环境变量,即可打开。在这里插入图片描述
在这里插入图片描述
点击新建(左上角),并粘贴刚复制的bin路径。转到CUDA文件夹,选择libnvvm文件夹,并复制其路径,一般为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\libnvvp。按照相同的过程,并将该路径粘贴到系统路径中。接下来,只需重新启动电脑即可。
在这里插入图片描述
温馨提示,还可以加入以下环境变量,以保证不会出错

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\extras\CUPTI\lib64
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v11.2\include

不配置可能会报错,Could not load dynamic library ‘cudart64_110.dll’; dlerror: cudart64_110.dll not found

6)安装Anaconda

从anaconda官网,下载安装anaconda。具体教程详见官网教程
在这里插入图片描述

7)安装tensorflow-GPU版本

首先以管理员方式启动windows命令窗口,在搜索中输入cmd即可打开,输入以下命令,新建一个名字为tf-gpu-newest的环境,并安装tensorflow-gpu版本。新建环境过程中选择y,进入下一步

conda create --name tf2.5_GPU python==3.8

在这里插入图片描述

接下来激活tf2.5_GPU的环境

conda activate tf2.5_GPU

接下来,安装tensorflow的GPU版本,这里注意选择想要安装的GPU版本

conda install tensorflow-gpu==2.5

3、测试

经过不算太复杂的流程,终于到了激动人心的测试环节了,直接在windows命令窗口就可以测试了,依次输入下面命令,如果看到下图所示内容,均显示True,就表示成功了。

python
import tensorflow as tf
tf.test.is_built_with_cuda() 
tf.test.is_gpu_available(cuda_only=False, min_cuda_compute_capability=None)

在这里插入图片描述
接下来,我们上微软的官方学习代码来测试下:

#!/usr/bin/env python3.8

# -*- coding: utf-8 -*-
# @Time : 2023/3/31 8:52
# @Author : Steven Hu
# @FileName: test_microsoft_tensorflow_gpu.py
# @Software: PyCharm

# https://docs.microsoft.com/zh-cn/learn/modules/intro-machine-learning-keras/2-data?source=learn

import gzip
import numpy as np
import tensorflow as tf
from typing import Tuple
import requests
from PIL import Image


class NeuralNetwork(tf.keras.Model):
    def __init__(self):
        super(NeuralNetwork, self).__init__()
        self.sequence = tf.keras.Sequential([
            tf.keras.layers.Flatten(input_shape=(28, 28)),
            tf.keras.layers.Dense(20, activation='relu'),
            tf.keras.layers.Dense(10)
        ])

    def call(self, x: tf.Tensor) -> tf.Tensor:
        y_prime = self.sequence(x)
        return y_prime


labels_map = {
    
    
    0: 'T-Shirt',
    1: 'Trouser',
    2: 'Pullover',
    3: 'Dress',
    4: 'Coat',
    5: 'Sandal',
    6: 'Shirt',
    7: 'Sneaker',
    8: 'Bag',
    9: 'Ankle Boot',
}


def read_images(path: str, image_size: int, num_items: int) -> np.ndarray:
    with gzip.open(path, 'rb') as file:
        data = np.frombuffer(file.read(), np.uint8, offset=16)
        data = data.reshape(num_items, image_size, image_size)
    return data


def read_labels(path: str, num_items: int) -> np.ndarray:
    with gzip.open(path, 'rb') as file:
        data = np.frombuffer(file.read(num_items + 8), np.uint8, offset=8)
        data = data.astype(np.int64)
    return data


def get_data(batch_size: int) -> Tuple[tf.data.Dataset, tf.data.Dataset]:
    # image_size = 28
    # num_train = 60000
    # num_test = 10000

    # training_images = read_images('data/FashionMNIST/raw/train-images-idx3-ubyte.gz', image_size, num_train)
    # test_images = read_images('data/FashionMNIST/raw/t10k-images-idx3-ubyte.gz', image_size, num_test)
    # training_labels = read_labels('data/FashionMNIST/raw/train-labels-idx1-ubyte.gz', num_train)
    # test_labels = read_labels('data/FashionMNIST/raw/t10k-labels-idx1-ubyte.gz', num_test)

    (training_images, training_labels), (test_images, test_labels) = tf.keras.datasets.fashion_mnist.load_data()

    train_dataset = tf.data.Dataset.from_tensor_slices((training_images, training_labels))
    test_dataset = tf.data.Dataset.from_tensor_slices((test_images, test_labels))

    train_dataset = train_dataset.map(lambda image, label: (float(image) / 255.0, label))
    test_dataset = test_dataset.map(lambda image, label: (float(image) / 255.0, label))

    train_dataset = train_dataset.batch(batch_size).shuffle(500)
    test_dataset = test_dataset.batch(batch_size).shuffle(500)

    return (train_dataset, test_dataset)


def training_phase():
    learning_rate = 0.1
    batch_size = 64
    epochs = 5

    (train_dataset, test_dataset) = get_data(batch_size)

    model = NeuralNetwork()

    loss_fn = tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True)
    optimizer = tf.keras.optimizers.SGD(learning_rate)
    metrics = ['accuracy']
    model.compile(optimizer, loss_fn, metrics)

    print('\nFitting:')
    model.fit(train_dataset, epochs=epochs)

    print('\nEvaluating:')
    (test_loss, test_accuracy) = model.evaluate(test_dataset)
    print(f'\nTest accuracy: {
      
      test_accuracy * 100:>0.1f}%, test loss: {
      
      test_loss:>8f}')

    model.save('outputs/model')


def inference_phase():
    print('\nPredicting:')

    model = tf.keras.models.load_model('outputs/model/')

    # url = 'https://raw.githubusercontent.com/MicrosoftDocs/tensorflow-learning-path/main/intro-keras/predict-image.png'
    #
    # with Image.open(requests.get(url, stream=True).raw) as image:
    #     X = np.asarray(image, dtype=np.float32).reshape((-1, 28, 28)) / 255.0

    with Image.open("e:\\learning_AI\\test_tensorflow_gpu_microsoft\\test_jpg\\predict-image.png") as image:  # 如果没有这张图片,可以从url:“https://raw.githubusercontent.com/MicrosoftDocs/tensorflow-learning-path/main/intro-keras/predict-image.png”下载下来
        X = np.asarray(image, dtype=np.float32).reshape((-1, 28, 28)) / 255.0
    predicted_vector = model.predict(X)
    predicted_index = np.argmax(predicted_vector)
    predicted_name = labels_map[predicted_index]

    print(f'Predicted class: {
      
      predicted_name}')


training_phase()
inference_phase()

直接在管理员命令窗口输入以下命令,即可运行,其中test_microsoft_tensorflow_gpu.py就是上面的代码,非常快地几秒钟就训练完,同时预测出图片为“Ankle Boot”。运行前先安装pillow软件包。

pip install pillow
cmd /c "C:\Users\steven.hu01\Anaconda3\envs\tf2.5_GPU\python.exe E:/learning_AI/test_tensorflow_gpu_microsoft/test_microsoft_tensorflow_gpu.py"

在这里插入图片描述

Linux版本TensorFlow-GPU版本安装

我们可以在Linux上安装CPU和GPU版本。这里就演示安装GPU版本。

1、要求

2、步骤

1) 安装Miniconda

https://docs.conda.io/en/latest/miniconda.html 下载并安装Miniconda,这里也可以参考MacOS安装步骤去安装Anaconda
在这里插入图片描述

2)安装CUDA

从Nvidia官网下载linux版本的cuda工具包,建议直接复制.run文件下载.run文件大约4.0G,然后使用sh命令安装:

sudo sh cuda_12.1.0_530.30.02_linux.run

在这里插入图片描述
安装CUDA后,在终端运行以下命令验证安装:

nvcc -V

3)下载NVIDIA cuDNN

Nvidia官网下载你的Linux系统对应的相应版本的cuDNN。我这里选择的是cuDNN Library for Linux(x86_64)下载。

在这里插入图片描述

接着解压缩下载的文件,然后复制相关文件到cuda目录下。在终端运行以下命令:

tar -xvzf cudnn-11.2-linux-x64-'version'.tgz
sudo cp cuda/include/cudnn.h /usr/lib/cuda/include/
sudo cp cuda/lib64/libcudnn* /usr/lib/cuda/lib64/

4) 设置cuDNN权限及环境变量

设置cuDNN的文件权限,在终端运行以下命令:

sudo chmod a+r /usr/lib/cuda/include/cudnn.h /usr/lib/cuda/lib64/libcudnn*

设置CUDA环境变量,在终端运行以下命令:

echo 'export LD_LIBRARY_PATH=/usr/lib/cuda/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc
echo 'export LD_LIBRARY_PATH=/usr/lib/cuda/include:$LD_LIBRARY_PATH' >> ~/.bashrc

5)安装TensorFlow_GPU版本

检查TensorFlow的版本,在终端运行以下命令:

conda create --name tensorflow_gpu python=3.8

进入环境:

conda activate tensorflow_gpu

安装Jupyter:

conda install nb_conda

仅安装CPU,使用以下命令:

conda install -c anaconda tensorflow==2.5

要同时安装GPU和CPU,使用以下命令:

conda install -c anaconda tensorflow-gpu==2.5

要安装其他库,可以通过创建yml文件,然后在该目录下,打开终端,运行以下命令安装:

conda env update --file tools.yml

下面是可以选择初始安装的其他库(当然,也可以直接用pip安装它们)。

dependencies:
    - jupyter
    - scikit-learn
    - scipy
    - pandas
    - pandas-datareader
    - matplotlib
    - pillow
    - tqdm
    - requests
    - h5py
    - pyyaml
    - flask
    - boto3
    - pip
    - pip:
        - bayesian-optimization
        - gym
        - kaggle

3、测试

在终端,先打开python,然后运行以下命令即可测试tensorflow-GPU版本是否安装成功:

python
import tensorflow as tf
tf.config.list_physical_devices("GPU")

如果看到下面类似的输出,则表示安装成功了
[PhysicalDevice(name=’/physical_device:GPU:0′, device_type=’GPU’)]

MacOS版本TensorFlow-CPU版本安装

我的macbook pro 不支持最新版本的Nvidia GPU,因此给大家简单演示tensorflow-CPU的安装。您可以通过一些购买更好的Macbook去安装GPU版本的Tensorflow,参考下图,不过貌似只支持1.1.0版本的tensorflow。所以要玩GPU还是搞台windows的台式机靠谱点。
在这里插入图片描述

1、要求

  • Python 3.6–3.8 Python 3.6-3.8
  • macOS 10.12.6 (Sierra) or later (no GPU support)
  • macOS 10.12.6(Sierra)或更高版本(不支持GPU)
  • 检查 tensorflow官网,按下图以获取最新版本信息
    在这里插入图片描述

2、步骤

1)安装python

根据tensorflow安装版本,下载相应的python版本,推荐安装python3.8稳定版本
在这里插入图片描述

2)下载并安装Anaconda

从anaconda官网,下载安装anaconda。具体教程详见官网教程
在这里插入图片描述

3)安装Tensorflow

创建一个.yml文件来安装TensorFlow和依赖项(如下所述)

dependencies:
    - python=3.8
    - pip>=19.0
    - jupyter
    - scikit-learn
    - scipy
    - pandas
    - pandas-datareader
    - matplotlib
    - pillow
    - tqdm
    - requests
    - h5py
    - pyyaml
    - flask
    - boto3
    - pip:
        - tensorflow==2.5
        - bayesian-optimization
        - gym
        - kaggle

在包含tensorflow.yml的同一目录运行以下命令,即可安装:

conda env create -f tensorflow.yml -n tensorflow

4)激活环境

使用以下命令激活环境:

python -m ipykernel install --user --name tensorflow --display-name "Python 3.8 (tensorflow)"

3、测试

我们将使用Jupyter notebook进行测试。使用以下命令启动Jupyter:

jupyter notebook

copy下面的代码并在jupyter notebook上运行。

import sys

import tensorflow.keras
import pandas as pd
import sklearn as sk
import tensorflow as tf

print(f"Tensor Flow Version: {
      
      tf.__version__}")
print(f"Keras Version: {
      
      tensorflow.keras.__version__}")
print()
print(f"Python {
      
      sys.version}")
print(f"Pandas {
      
      pd.__version__}")
print(f"Scikit-Learn {
      
      sk.__version__}")
gpu = len(tf.config.list_physical_devices('GPU'))>0
print("GPU is", "available" if gpu else "NOT AVAILABLE")

如果按下图所示,则表示安装成功了!
在这里插入图片描述

其它资料下载

如果大家想继续了解人工智能相关学习路线和知识体系,欢迎大家翻阅我的另外一篇博客《重磅 | 完备的人工智能AI 学习——基础知识学习路线,所有资料免关注免套路直接网盘下载
这篇博客参考了Github知名开源平台,AI技术平台以及相关领域专家:Datawhale,ApacheCN,AI有道和黄海广博士等约有近100G相关资料,希望能帮助到所有小伙伴们。

猜你喜欢

转载自blog.csdn.net/qq_31136513/article/details/129859318