手把手教你在Windows 10,MacOS和Linux中安装TensorFlow 2-GPU版本,亲测有效(附相关安装下载资源)
从0到1安装Tensorflow GPU版本
- Windows版本TensorFlow-GPU版本安装
- 1、要求
- 2、步骤
- 1)下载并安装显卡驱动
- 2)下载并安装Microsoft Visual Studio
- 3)下载并安装NVIDIA CUDA Toolkit
- 4)下载cuDNN,并解压缩,复制
- 5)修改环境变量
- 6)安装Anaconda
- 7)安装tensorflow-GPU版本
- 3、测试
- Linux版本TensorFlow-GPU版本安装
- 1、要求
- 2、步骤
- 1) 安装Miniconda
- 2)安装CUDA
- 3)下载NVIDIA cuDNN
- 4) 设置cuDNN权限及环境变量
- 5)安装TensorFlow_GPU版本
- 3、测试
- MacOS版本TensorFlow-CPU版本安装
- 1、要求
- 2、步骤
- 1)安装python
- 2)下载并安装Anaconda
- 3)安装Tensorflow
- 4)激活环境
- 3、测试
- 其它资料下载
听说最近炸裂的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、要求
- python版本要求:Python 3.6–3.8
- Ubuntu 16.04或更高版本
- 按下图检查tensorflow-GPU版本所需windows对应的安装软件信息
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相关资料,希望能帮助到所有小伙伴们。