Site icon 2k1

Cách cài đặt TensorFlow GPU

1. Giới thiệu

Mình đã cài đặt được tensorflow-gpu trên windows 10 và ubuntu 20.04:

Cấu hình hiện tại

CPU: Intel core I7 9750H
GPU: Nvidia gtx1050ti max-q

Để sử dụng được GPU trong tensorfow bạn cần cài rất nhiều thứ nhưng mình sẽ chỉ các bạn cách dễ nhất là dùng anaconda

2. Windows

Trong windows các bạn cài thư viện anaconda: https://docs.anaconda.com/anaconda/install/windows/

Sau đó các bạn chạy lệnh sau

conda create -n tf-gpu tensorflow-gpu
conda activate tf-gpu

Lệnh này sẽ tạo một môi trường có tên tf-gpu và cài các gói cần thiết

Để vào môi trường này:

activate tf-gpu

Các gói trong tf-gpu

conda list
# packages in environment at C:\Users\nguyen\.conda\envs\tf-gpu:
#
# Name                    Version                   Build  Channel
_tflow_select             2.3.0                       gpu  
absl-py                   0.12.0           py38haa95532_0  
aiohttp                   3.7.4            py38h2bbff1b_1  
astunparse                1.6.3                      py_0  
async-timeout             3.0.1            py38haa95532_0  
attrs                     20.3.0             pyhd3eb1b0_0  
autopep8                  1.5.6              pyhd3eb1b0_0  
blas                      1.0                         mkl  
blinker                   1.4              py38haa95532_0  
brotlipy                  0.7.0           py38h2bbff1b_1003  
ca-certificates           2021.4.13            haa95532_1  
cachetools                4.2.2              pyhd3eb1b0_0  
certifi                   2020.12.5        py38haa95532_0  
cffi                      1.14.5           py38hcd4344a_0  
chardet                   3.0.4           py38haa95532_1003  
click                     7.1.2              pyhd3eb1b0_0  
coverage                  5.5              py38h2bbff1b_2  
cryptography              3.4.7            py38h71e12ea_0  
cudatoolkit               10.1.243             h74a9793_0  
cudnn                     7.6.5                cuda10.1_0  
cython                    0.29.23          py38hd77b12b_0  
gast                      0.4.0                      py_0  
google-auth               1.30.0             pyhd3eb1b0_0  
google-auth-oauthlib      0.4.4              pyhd3eb1b0_0  
google-pasta              0.2.0                      py_0  
grpcio                    1.36.1           py38hc60d5dd_1  
h5py                      2.10.0           py38h5e291fa_0  
hdf5                      1.10.4               h7ebc959_0  
icc_rt                    2019.0.0             h0cc432a_1  
idna                      2.10               pyhd3eb1b0_0  
importlib-metadata        3.10.0           py38haa95532_0  
intel-openmp              2021.2.0           haa95532_616  
keras-applications        1.0.8                      py_1  
keras-preprocessing       1.1.2              pyhd3eb1b0_0  
libprotobuf               3.14.0               h23ce68f_0  
markdown                  3.3.4            py38haa95532_0  
mkl                       2021.2.0           haa95532_296  
mkl-service               2.3.0            py38h2bbff1b_1  
mkl_fft                   1.3.0            py38h277e83a_2  
mkl_random                1.2.1            py38hf11a4ad_2  
multidict                 5.1.0            py38h2bbff1b_2  
numpy                     1.20.1           py38h34a8a5c_0  
numpy-base                1.20.1           py38haf7ebc8_0  
oauthlib                  3.1.0                      py_0  
openssl                   1.1.1k               h2bbff1b_0  
opt_einsum                3.1.0                      py_0  
pip                       21.0.1           py38haa95532_0  
protobuf                  3.14.0           py38hd77b12b_1  
pyasn1                    0.4.8                      py_0  
pyasn1-modules            0.2.8                      py_0  
pycodestyle               2.7.0              pyhd3eb1b0_0  
pycparser                 2.20                       py_2  
pyjwt                     1.7.1                    py38_0  
pyopenssl                 20.0.1             pyhd3eb1b0_1  
pyreadline                2.1                      py38_1  
pysocks                   1.7.1            py38haa95532_0  
python                    3.8.8                hdbf39b2_5  
requests                  2.25.1             pyhd3eb1b0_0  
requests-oauthlib         1.3.0                      py_0  
rsa                       4.7.2              pyhd3eb1b0_1  
scipy                     1.6.2            py38h66253e8_1  
setuptools                52.0.0           py38haa95532_0  
six                       1.15.0           py38haa95532_0  
sqlite                    3.35.4               h2bbff1b_0  
tensorboard               2.4.0              pyhc547734_0  
tensorboard-plugin-wit    1.6.0                      py_0  
tensorflow                2.3.0           mkl_py38h1fcfbd6_0  
tensorflow-base           2.3.0           gpu_py38h7339f5a_0  
tensorflow-estimator      2.3.0              pyheb71bc4_0  
tensorflow-gpu            2.3.0                he13fc11_0  
termcolor                 1.1.0            py38haa95532_1  
toml                      0.10.2             pyhd3eb1b0_0  
typing-extensions         3.7.4.3              hd3eb1b0_0  
typing_extensions         3.7.4.3            pyh06a4308_0  
urllib3                   1.26.4             pyhd3eb1b0_0  
vc                        14.2                 h21ff451_1  
vs2015_runtime            14.27.29016          h5e58377_2  
werkzeug                  1.0.1              pyhd3eb1b0_0  
wheel                     0.36.2             pyhd3eb1b0_0  
win_inet_pton             1.1.0            py38haa95532_0  
wincertstore              0.2                      py38_0  
wrapt                     1.12.1           py38he774522_1  
yarl                      1.6.3            py38h2bbff1b_0  
zipp                      3.4.1              pyhd3eb1b0_0  
zlib                      1.2.11               h62dcd97_4  

Khi bạn chạy mà vẫn gặp lỗi không nhận GPU thì bạn có thể fix như sau:

Python 3.7: conda install tensorflow-gpu=2.3 tensorflow=2.3=mkl_py37h936c3e2_0
Python 3.8: conda install tensorflow-gpu=2.3 tensorflow=2.3=mkl_py38h1fcfbd6_0

Tham khảo từ:

3. Ubuntu

Ubuntu các bạn cũng cài anaconda và tensorflow như ở windows. các lệnh cũng tương tự.

Ngoài ra nếu muốn dùng nvidia docker để sử dụng GPU trong container thì các bạn cần cài thêm một số package nữa:

Link tham khảo và cài đặt:

4. Cài trực tiếp:

Cài trực tiếp cũng được nhưng việc cài đặt khá khó khăn vì mỗi phiên bản tensorflow lại tương thích riêng với một phiên bản cuda và cudnn. Mình đã thử bằng cách này nhưng vẫn bị lỗi và không nhận GPU.

Code test tensorflow

import timeit
import tensorflow as tf
# device_name = tf.test.gpu_device_name()
# # print(device_name)
# if device_name != '/device:GPU:0':
#   raise SystemError('GPU device not found')
# print('Found GPU at: {}'.format(device_name))



device_name = tf.test.gpu_device_name()
if device_name != '/device:GPU:0':
  print(
      '\n\nThis error most likely means that this notebook is not '
      'configured to use a GPU.  Change this in Notebook Settings via the '
      'command palette (cmd/ctrl-shift-P) or the Edit menu.\n\n')
  raise SystemError('GPU device not found')


def cpu():
  with tf.device('/cpu:0'):
    random_image_cpu = tf.random.normal((100, 100, 100, 3))
    net_cpu = tf.keras.layers.Conv2D(32, 7)(random_image_cpu)
    return tf.math.reduce_sum(net_cpu)


def gpu():
  with tf.device('/device:GPU:0'):
    random_image_gpu = tf.random.normal((100, 100, 100, 3))
    net_gpu = tf.keras.layers.Conv2D(32, 7)(random_image_gpu)
    return tf.math.reduce_sum(net_gpu)


# We run each op once to warm up; see: https://stackoverflow.com/a/45067900
cpu()
gpu()

# Run the op several times.
print('Time (s) to convolve 32x7x7x3 filter over random 100x100x100x3 images '
      '(batch x height x width x channel). Sum of ten runs.')
print('CPU (s):')
cpu_time = timeit.timeit('cpu()', number=10, setup="from __main__ import cpu")
print(cpu_time)
print('GPU (s):')
gpu_time = timeit.timeit('gpu()', number=10, setup="from __main__ import gpu")
print(gpu_time)
print('GPU speedup over CPU: {}x'.format(int(cpu_time/gpu_time)))

Minh test bằng code trên và thầy trên linux hiêu năng của tensorflow tăng đáng kể. tỉ lể cpu/gpu

windows: x6
ubuntu : x30

Nếu máy bạn yếu hoặc không có GPU rời thì hãy dùng google colab

Exit mobile version