0

Setup Cực Đơn Giản Tensorflow GPU Jupyter Notebooks trên Docker Window WSL2

Mở Đầu

Docker trên WSL2 (Windows Subsystem for Linux) cho phép bạn tránh những sự không tương thích mà bạn có thể thấy khi chạy trực tiếp trên Windows bằng cách chạy trong một container Docker cho Linux. Với card màn hình hỗ trợ NVIDIA CUDA, khả năng tăng tốc GPU sẽ đào tạo các mô hình của bạn nhanh hơn, cải thiện khả năng lặp lại và tìm ra kiến trúc học sâu tối ưu cùng các tham số liên quan cho giải pháp bạn đang tìm kiếm.

Docker là cách dễ nhất để chạy TensorFlow GPU vì máy chủ chỉ yêu cầu trình điều khiển NVIDIA®”.
Tensorflow GPU Support

Một trong những cách nhanh nhất để bắt đầu với TensorFlowKeras trên máy phát triển cục bộ của bạn là sử dụng Docker. Điều này đặc biệt hữu ích nếu bạn đang làm việc trên máy WindowsGPU NVIDIA để tăng tốc quá trình đào tạo và suy luận mô hình. Tôi đã tổng hợp hướng dẫn thiết lập chi tiết sau đây để giúp bạn bắt đầu và chạy nhanh hơn.

Yêu cầu hệ thống

  • Windows 10 19044 (hay còn gọi là 21H2) trở lên
  • Card GPU hỗ trợ CUDA – Bạn có thể kiểm tra GPU NVIDIA có hổ trợ CUDA tại đây.

Để cài đặt được Tensorflow GPU trên Windows thì cần cài đặt rất nhiều và phức tạp dễ dẫn đến lỗi và mất khá nhiều thời gian như:

tensorflow gpu version support

Docker & WSL2 Trên Windows

  • Để cài đặt Docker DesktopWSL2, hãy xem hướng dẫn Cài đặt Docker Desktop trên Docker Docs.

Thiết lập NVIDIA CUDA GPU Docker

  • Để thiết lập NVIDIA Cuda trên Docker chúng ta sử dụng image nvidia/cuda:12.2.2-devel-ubuntu22.04 tại đây.

  • Sử dụng Powershell/CMD Windows để tải xuống image:

docker pull nvidia/cuda:12.2.2-devel-ubuntu22.04
  • Xác Minh GPU bằng lệnh sau:
docker run --rm --gpus all nvidia/cuda:12.2.2-devel-ubuntu22.04 nvidia-smi
  • Kết quả thu được máy mình đang có 1 card là GTX 1650 Ti

verify GPU cuda working

Tensorflow Jupyter NoteBooks Docker

  • Chạy các lệnh sau trong PowerShell/CMD Windows ở đây mình sẽ dùng phiên bản tensorflow/tensorflow:2.14.0-gpu-jupyter:
docker pull tensorflow/tensorflow:2.14.0-gpu
  • Chúng ta sẽ sử dụng các lệnh sau kiểm tra xem nó có hoạt động bằng cách truy cập vào Container :
docker run --name my_tensorflow -it --gpus all tensorflow/tensorflow:2.14.0-gpu bash
nvidia-smi

# similar output as above

python3 -c "import tensorflow as tf; print('TensorFlow Version:', tf.__version__); print(tf.config.list_physical_devices('GPU'))"

# example output:
# [PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')]

python3 -c "from tensorflow.python.client import device_lib; device_lib.list_local_devices()"

# example output:
#  Created device /device:GPU:0 with 5913 MB memory:  -> device: 0, name: NVIDIA GeForce RTX 2070 SUPER, pci bus id: 0000:08:00.0, compute capability: 7.5
  • Ok, GPU của tôi đã hoạt động trên tensorflow GPU.

Sử dụng Docker-Compose

  • Bây giờ chúng ta sẽ sử dụng Docker-Compose để chạy TensorflowJupyter Lab với ví dụ về thị giác máy ính sử dụng Keras, đây là một ví dụ:
git clone https://github.com/vinhphan812/tensorflow-gpu-docker

cd tensorflow-gpu-docker
  • Sao chép và đổi tên sample.env tập tin thành .env.
  • Chạy bằng Docker Compose:
docker compose up -d
  • Xem tab Nhật ký trong Docker Desktop, bên dưới Containers > tensorflow-gpu-docker.

Link truy cập vào Jupyter Notebooks Lab

image.png

Ngoài làm việc trực tiếp local website ra thì bạn còn có thể sử dụng Visual Studio Code hoặc Pycharm để truy cập đến Jupyter Notebooks:

Tóm Lại

  • Sức mạnh kết hợp của DockerWSL2 giúp dễ dàng hơn nhiều để đưa TensorFlow với khả năng tăng tốc GPU lên và chạy nhanh chóng. Bạn có thể tránh được những thách thức trong việc quản lý các phụ thuộc thư viện có thể không tương thích với Windows gốc. Nó cũng giúp dễ dàng hơn nhiều để tái tạo kết quả nhất quán trên các hệ thống khác. Tôi thực sự khuyên bạn nên thiết lập này nếu bạn có máy WindowsGPU tương thích CUDA.

  • Tôi hy vọng bạn có cơ hội dùng thử các tài nguyên này và hướng dẫn thiết lập này sẽ giúp bạn dành nhiều thời gian hơn để tìm hiểu và thử nghiệm AI nhằm xây dựng các sản phẩm tuyệt vời và các giải pháp thực tế.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.