Trong khi bắt đầu với hành trình Deep Learning, còn được gọi là Mạng nơ-ron, người ta tìm thấy một loạt các frameworks và thư viện trong Python. Do đó, đôi khi bạn sẽ bối rối không biết nên bắt đầu từ đâu và theo đuổi cái nào trước khi bước vào lĩnh vực này. Bài viết này dành cho những người đã bắt đầu hoặc sắp bắt đầu hành trình với Deep Learning.
Trong số các máy chủ của thư viện Deep Learning hoặc frameworks như: TensorFlow, Keras, Caffe, PyTorch, Microsoft Cognitive Toolkit, Apache Spark Deep Learning Pipelines, Chainer, v.v … Có một vài trong số chúng thực sự nổi bật, cụ thể là TensorFlow và PyTorch. Nhưng trước khi chúng ta đi sâu hơn vào chúng, chúng ta hãy xem qua về sự tiến hóa của chúng.
Sự phát triển
Google Brain đã xây dựng DistBelief như một hệ thống Machine Learning độc quyền dựa trên các mạng nơ-ron Deep learning vào năm 2011. TensorFlow là hệ thống thế hệ thứ hai của Google Brain. TensorFlow được phát hành lần đầu tiên vào ngày 9 tháng 11 năm 2015, nhưng phải đến năm 2017 mới ổn định. Vào tháng 3 năm 2018, Google đã công bố phiên bản TensorFlow.js 1.0 cho Machine learning bằng JavaScript. Thông báo về TensorFlow 2.0 của Google được đưa ra vào tháng 1 năm 2019 và chính thức ra mắt vào tháng 9 năm 2019.
PyTorch được phát triển bởi Phòng thí nghiệm nghiên cứu AI (FAIR) của Facebook và bản phát hành công khai đầu tiên (0.1.12) là vào tháng 5 năm 2017. Bản phát hành ổn định mới nhất (1.4) là vào tháng 1 năm 2020. Tên PyTorch được lấy cảm hứng từ framework phổ biến Torch của Deep Learning, được viết bằng ngôn ngữ lập trình Lua và được triển khai bằng Python do đó có tên PyTorch.
Đặc tính
- Cả TensorFlow và PyTorch đều là nguồn mở nhưng được phát triển bởi hai nhân vật khổng lồ khác nhau trong công cuộc đổi mới công nghệ: Google và Facebook và được sử dụng cho các ứng dụng Machine Learning như Mạng Nơ-ron. Nhưng, lợi thế của PyTorch so với TensorFlow nằm ở hai tính khác biệt:
- Lập trình bắt buộc: Nói What AND How, còn lập trình khai báo nói What NOT How
- Đồ thị tính toán động: Được xây dựng trong thời gian sử dụng cho phép dùng các câu lệnh Python tiêu chuẩn và không có sự phân biệt giữa việc xác định biểu đồ tính toán và biên dịch cho các chương trình bắt buộc.
Quan trọng: Đồ thị tĩnh hoạt động tốt cho các mạng có kích thước cố định trong khi Đồ thị động hoạt động tốt cho các mạng Động.
Trong lĩnh vực Trí tuệ nhân tạo, sự cứng nhắc được đề cập ở trên trong Mạng lưới Nơ-ron được xác định là một trở ngại lớn. Các nhà nghiên cứu muốn làm cho Mạng Nơ-ron được xác định nhiều hơn bởi mạng khi đang chạy hơn là được xác định trước hoặc trước đó. Các công cụ tồn tại sau đó không thực sự giúp họ làm như vậy.
Về điểm này, PyTorch giành chiến thắng trước TensorFlow, vì nó mang đến một framework Deep learning mang lại Mạng lưới Nơ-ron động, tức là Define by Run (một biểu đồ được tạo ra khi đang di chuyển). Điều này đặc biệt hữu ích khi nói đến đầu vào có độ dài thay đổi trong RNNs (Recurrent Neural Networks – Mạng Nơ-ron tái phát).
Các biểu đồ tính toán động được xây dựng trong thời gian chạy cho phép chúng ta sử dụng các câu lệnh Python tiêu chuẩn do đó, không có sự phân biệt giữa việc xác định biểu đồ tính toán và biên dịch cho các chương trình bắt buộc. Hơn nữa, đồ thị động làm cho việc fix bug dễ dàng hơn. Mặt khác, TensorFlow lắp ráp một biểu đồ và sử dụng một phiên để thực thi.
2. Đường cong học tập của TensorFlow dốc hơn so với PyTorch.
PyTorch:
- Có các khả năng GPU như Numpy [và có kiểm soát CPU & GPU rõ ràng]
- Nhiều pythonic trong tự nhiên
- Dễ dàng xử lý bug
TensorFlow:
Mặc dù TensorFlow 2.0 đã cải thiện khá nhiều và tuyên bố rằng với sự tích hợp Keras và Thực thi Eager được bật theo chế độ mặc định, phiên bản 2.0 hoàn toàn dễ sử dụng và đơn giản. Nó cung cấp cho cả nhà phát triển mới cũng như những người có kinh nghiệm các công cụ & API cần thiết để xây dựng và triển khai các mô hình học máy của họ với tốc độ và độ chính xác với sự trợ giúp của tf.keras như API cấp cao, loại bỏ chức năng trùng lặp, cú pháp trực quan, nhất quán trên các API, API cấp thấp đầy đủ và giao diện kế thừa cho các biến, điểm kiểm tra, các layers. Điều này về cơ bản có nghĩa là người dùng phải tìm hiểu nhiều hơn một chút so với PyTorch, về bản chất là pythonic. Do đó, đường cong học tập dốc hơn cho TensorFlow.