πŸ–₯️ Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU для TensorFlow: простой Π³ΠΈΠ΄ ΠΏΠΎ настройкС ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU Π² TensorFlow?

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU Π² TensorFlow, Π²Π°ΠΌ понадобится GPU-совмСстимая вСрсия TensorFlow ΠΈ настроСнная срСда для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPU.

Π’ΠΎΡ‚ простыС шаги для запуска TensorFlow Π½Π° GPU:

  1. УстановитС GPU-ΡΠΎΠ²ΠΌΠ΅ΡΡ‚ΠΈΠΌΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ TensorFlow с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹:

pip install tensorflow-gpu
  1. УстановитС ΠΈ настройтС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ GPU, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ вашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ GPU.
  2. Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ Ρƒ вас установлСны CUDA ΠΈ cuDNN, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ совмСстимы с вашСй вСрсиСй TensorFlow.
  1. Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ TensorFlow ΠΈ ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ использованиС GPU:

import tensorflow as tf

physical_devices = tf.config.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0], True)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ TensorFlow Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²Π°ΡˆΡƒ GPU для вычислСний.

Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ваш ΠΊΠΎΠ΄ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPU, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅ΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π£Π΄Π°Ρ‡ΠΈ Π² использовании GPU с TensorFlow!

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ TensorFlow с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ GPU

TensorFlow - это открытая ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для машинного обучСния, разработанная Google. Она прСдоставляСт инструмСнты для создания ΠΈ обучСния Π³Π»ΡƒΠ±ΠΎΠΊΠΈΡ… Π½Π΅ΠΉΡ€ΠΎΠ½Π½Ρ‹Ρ… сСтСй ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ машинного обучСния. ИспользованиС графичСского процСссора (GPU) ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ вычислСния Π² TensorFlow ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΠΎΠ±Ρ‰ΡƒΡŽ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим, ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU с TensorFlow.

Π¨Π°Π³ 1: Установка TensorFlow с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GPU

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ шаг - ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ TensorFlow с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GPU. Для этого трСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, поддСрТиваСтся Π»ΠΈ ваш GPU. TensorFlow ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ GPU ΠΎΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΉ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Nvidia ΠΈ AMD. РСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU Nvidia с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ CUDA.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ TensorFlow с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GPU, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ шаги:


    # УстановитС TensorFlow
    pip install tensorflow-gpu
    
    # УстановитС Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€Ρ‹ GPU (Ссли трСбуСтся)
    # УстановитС CUDA Toolkit (Ссли трСбуСтся)
    # УстановитС cuDNN (Ссли трСбуСтся)
    

ПослС установки TensorFlow с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ GPU, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΡ€ΠΈΡΡ‚ΡƒΠΏΠΈΡ‚ΡŒ ΠΊ использованию GPU для вычислСний Π² TensorFlow.

Π¨Π°Π³ 2: Установка Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ

Для использования TensorFlow с GPU трСбуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ частности, Π²Π°ΠΌ понадобится Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° CUDA Toolkit ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° cuDNN.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° CUDA Toolkit - это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Nvidia, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ обСспСчиваСт доступ ΠΊ функциям графичСского процСссора. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° cuDNN - это Π½Π°Π±ΠΎΡ€ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для Π³Π»ΡƒΠ±ΠΎΠΊΠΎΠ³ΠΎ обучСния, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠ΅ΠΉ Nvidia.

Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΊΠ°Ρ‡Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ CUDA Toolkit ΠΈ cuDNN с ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ сайта Nvidia ΠΈ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ инструкциям ΠΏΠΎ установкС.

Π¨Π°Π³ 3: Настройка TensorFlow для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPU

ПослС установки Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ GPU, настройтС TensorFlow для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPU. Π’Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ TensorFlow Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU вмСсто Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора (CPU).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


    import tensorflow as tf
    
    # Π£ΠΊΠ°ΠΆΠΈΡ‚Π΅ использованиС GPU
    physical_devices = tf.config.list_physical_devices('GPU')
    tf.config.experimental.set_memory_growth(physical_devices[0], True)
    

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ устанавливаСт Ρ„Π»Π°Π³, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ TensorFlow ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ GPU, вмСсто рСзСрвирования всСй памяти ΠΏΡ€ΠΈ запускС.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ваш TensorFlow настроСн для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPU.

Π¨Π°Π³ 4: Запуск ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° GPU

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° TensorFlow настроСн для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPU, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π½Π° GPU для получСния ускорСнных вычислСний.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°:


    import tensorflow as tf
    
    # Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΈ скомпилируйтС модСль
    model = tf.keras.Sequential([...])
    model.compile([...])
    
    # ЗапуститС ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ
    model.fit([...])
    
    # ЗапуститС ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с использованиСм ΠΌΠΎΠ΄Π΅Π»ΠΈ
    model.predict([...])
    

Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ΄ создаСт модСль, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π΅Π΅ ΠΈ выполняСт ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈ ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ с использованиСм GPU.

Π¨Π°Π³ 5: ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с GPU

Если ваша модСль Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большого количСства памяти GPU, Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ ошибка нСдостатка памяти. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ:

  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ мСньший ΠΏΠ°ΠΊΠ΅Ρ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° (batch size) ΠΏΡ€ΠΈ ΠΎΠ±ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ.
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ tf.data.Dataset для эффСктивной Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π΄Π°Π½Π½Ρ‹Ρ….
  • Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ усСчСниС Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚ΠΎΠ² (gradient clipping) для прСдотвращСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Π³Ρ€Π°Π΄ΠΈΠ΅Π½Ρ‚Π°.
  • Π’ случаС нСдостатка памяти, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΌΠ΅Π½ΡŒΡˆΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ эффСктивныС слои.

ИспользованиС GPU Π² TensorFlow ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ вычислСния ΠΈ ΠΏΠΎΠ²Ρ‹ΡΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Π»ΠΈ. ΠŸΡ€ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ настройкС ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ смоТСтС максимально эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ вашСй ΠΌΠΎΠ΄Π΅Π»ΠΈ TensorFlow.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

How to train Deep Neural Networks on GPU | TensorFlow | Nvidia | Cuda

Setting Up CUDA, CUDNN, Keras, and TensorFlow on Windows 11 for GPU Deep Learning

How to take advantage of GPUs and TPUs for your ML project (Coding TensorFlow)

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ–₯️ Как ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ GPU для TensorFlow: простой Π³ΠΈΠ΄ ΠΏΠΎ настройкС ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ