- vừa được xem lúc

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

0 0 3

Người đăng: Phan Thanh Vinh

Theo Viblo Asia

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ư:

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

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.

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ế.

Bình luận

Bài viết tương tự

- vừa được xem lúc

Tấn công và phòng thủ bậc nhất cực mạnh cho các mô hình học máy

tấn công bậc nhất cực mạnh = universal first-order adversary. Update: Bleeding edge của CleverHans đã lên từ 3.1.0 đến 4.

0 0 42

- vừa được xem lúc

[Deep Learning] Key Information Extraction from document using Graph Convolution Network - Bài toán trích rút thông tin từ hóa đơn với Graph Convolution Network

Các nội dung sẽ được đề cập trong bài blog lần này. . Tổng quan về GNN, GCN. Bài toán Key Information Extraction, trích rút thông tin trong văn bản từ ảnh.

0 0 223

- vừa được xem lúc

Trích xuất thông tin bảng biểu cực đơn giản với OpenCV

Trong thời điểm nhà nước đang thúc đẩy mạnh mẽ quá trình chuyển đổi số như hiện nay, Document Understanding nói chung cũng như Table Extraction nói riêng đang trở thành một trong những lĩnh vực được quan tâm phát triển và chú trọng hàng đầu. Vậy Table Extraction là gì? Document Understanding là cái

0 0 232

- vừa được xem lúc

Con đường AI của tôi

Gần đây, khá nhiều bạn nhắn tin hỏi mình những câu hỏi đại loại như: có nên học AI, bắt đầu học AI như nào, làm sao tự học cho đúng, cho nhanh, học không bị nản, lộ trình học AI như nào... Sau nhiều lần trả lời, mình nghĩ rằng nên viết hẳn một bài để trả lời chi tiết hơn, cũng như để các bạn sau này

0 0 159

- vừa được xem lúc

[B5'] Smooth Adversarial Training

Đây là một bài trong series Báo khoa học trong vòng 5 phút. Được viết bởi Xie et. al, John Hopkins University, trong khi đang intern tại Google. Hiện vẫn là preprint do bị reject tại ICLR 2021.

0 0 46

- vừa được xem lúc

Deep Learning với Java - Tại sao không?

Muốn tìm hiểu về Machine Learning / Deep Learning nhưng với background là Java thì sẽ như thế nào và bắt đầu từ đâu? Để tìm được câu trả lời, hãy đọc bài viết này - có thể kỹ năng Java vốn có sẽ giúp bạn có những chuyến phiêu lưu thú vị. DJL là tên viết tắt của Deep Java Library - một thư viện mã ng

0 0 145