在 Windows 使用 Docker 跑 ML tensorflow 並啟用 GPU

筆記下目前抓寶的心得感想

重點

  1. TensorFlow 2.10 是最後一個原生 Windows 上支援 GPU 的 TensorFlow 版本 。 
    從 TensorFlow 2.11 開始,您需要在 WSL2 中安裝 TensorFlow, 或安裝或嘗試 TensorFlow-DirectML-Plugin
    Install TensorFlow with pip
  2. TensorFlow Docker 鏡像
    已配置為運行 TensorFlow。Docker 容器在 虛擬環境,是設置 GPU 支援的最簡單方法。
    安裝 TensorFlow 2
  3. 利用 Docker 可以用到目前最新 tensorflow 2.15 版本
  4. 記得執行 docker run 時增加選項 --gpus all 否則會顯示 0 GPU 哦!

前提

結論

Dockerfile

FROM tensorflow/tensorflow:latest-gpu

RUN python3 -m pip install --upgrade pip

WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

CMD python main.py

main.py

import tensorflow as tf
print("Num GPUs Available: ", len(tf.config.list_physical_devices('GPU')))

--gpus all

Output:

Num GPUs Available:  1

其中 main.py 可以替換成訓練用的 script

import tensorflow as tf
# 訓練程式碼...

另外 requirements.txt 裡面不需要 tensorflow<2.11

說明

  1. 安裝 Docker Desktop: The #1 Containerization Tool for Developers | Docker
  2. 安裝 Windows Subsystem for Linux - Microsoft 應用程式
  3. 安裝 Ubuntu - Microsoft Apps
  4. 建立 Dockerfile
  5. docker build
  6. docker run --gpus all

Dockerfile

FROM tensorflow/tensorflow:latest-gpu

CMD python -c "import tensorflow as tf; print('Num GPUs Available: ', len(tf.config.list_physical_devices('GPU')))"

docker build & run

docker build -t foo . && docker run --gpus all -it foo

Output:

Num GPUs Available:  1

備註

  • NoteBook 有內顯要切獨顯來跑
  • 獨顯有省電模式要切慣用最大效能 P0 來跑
  • 可以指定掛載檔案路徑讓 Model 輸出時可以在外頭直接拿到新的檔案
    例如輸出到 /output 並直接由 D:\models 看到輸出的模型 *.h5
    docker run -v D:\models:/output

參照

Install TensorFlow 2

參考來源

How to Deploy GPU-Accelerated Applications on Amazon ECS with Docker Compose | Docker

PS5