Hướng dẫn dùng tulip icon python
Đặt vấn đềMình thường sử dụng nền tảng Google Colab và Kaggle để tận dụng GPU miễn phí, đây là 2 nền tảng tuyệt vời cho cá nhân hoặc các nhóm nghiên cứu nhỏ. Một vấn đề: mỗi lần request một máy ảo GPU, chúng ta thường nhận được con K80, thỉnh thoảng vớ được con T4... hên lắm thì được con P100. Mà dùng con K80 train thì lâu dã man, vẫn biết là có em K80 thì còn tốt hơn không có =)), nhưng có cách nào tốt hơn không. Show
Trong bài viết này, chúng ta sẽ :
TPU là gìHình ảnh của một TPU board Một TPU là một mạch tích hợp dùng riêng cho các ứng dụng AI, được Google phát triển với mục đích:
Cấu tạo của một TPU coreMột core của TPU gồm hai thành phần chính là MXU and VPU.
Cách MXU thực hiện phép nhânChúng ta quan sát hình mô tả dưới đây: Note:
Sử dụng TPU trên ColabCách cấu hình để sử dụng TPUViệc sử dụng TPU Colab để train cho các mô hình tensorflow 2 hay keras rất đơn giản, có 2
phần chính cần thêm trong code: Detect TPU và config tensorflow:
Khởi tạo model và fit dữ liệu:
Note:
Ví dụ train model với TPUĐể thử nghiệm nhanh việc sử dụng TPU trên colab, mình sẽ sử dụng bộ
data "Flowers " public trên Google Storage.
Tiếp theo, mình lần lượt train dữ liệu với 4 model khác nhau và thực hiện train với các phần cứng TPU, K80, T4, P100. Thời gian train cho 25 epochs sẽ được ghi lại để làm kết quả so sánh. Các model dùng trong thử nghiệm:
Ví dụ với custom VGG19: Các bạn có thể tham khảo source:
https://colab.research.google.com/drive/1gQJ-M2ocLjr9Utnqzt279KezN6jdCijJ?usp=sharing
Sau khi chạy đoạn code trên, ta thu được model với tổng 112,327,749 params. Tiến hành trainning nào:
Mình thực hiện train với 25 epochs và đo tổng thời gian của quá trình fit, kết quả là:
Thực sự "phê", như các bạn thấy, thời gian cho epoch đầu tiên là ~14s, thời gian cho các epochs sau là ~4s , tổng thời gian train sau 25 epochs là 127,82s (hơn 2 phút). Trong khi sử dụng K80 trên colab, thời gian cho mỗi epochs ~74s và tổng thời gian train là 1866.703s (hơn 30 phút) So sánh thời gian train giữa TPU-K80-T4-P1001: Trong thử nghiệm này, mình sẽ train các model trên TPU và GPU với cùng điều kiện dữ liệu, batch size = 32 với 25 epochs. Thực chất để batch size như vậy thì hơi thiệt thòi cho TPU vì như vậy 8 core của TPU sẽ không được sử dụng hết. Nhưng để batch size lớn hơn thì máy GPU thường xuất hiện lỗi OOM (Out of memory) =))
Bảng 1: Thời gian train một số model (giây) 2: Lần này, mình cho TPU được bung lụa, trên máy TPU mình set batch size = 128, các máy GPU vẫn giữ nguyên và thực hiện train lại
Bảng 2: Thời gian train một số model (giây) Nhận xét
Tổng kếtTrên đây chúng ta đã đi tìm hiểu về TPU và cách sử dụng TPU trên Colab. Hi vọng bài viết đem lại một số thông tin hữu ích cho các bạn. Cảm ơn mọi người đã đọc bài! |