15 điểm bởi xguru 2021-12-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • Thông thường người ta nói TensorFlow dùng cho công nghiệp, còn PyTorch dùng cho nghiên cứu, nhưng đây là nhận định dựa trên thông tin cũ

  • Các cân nhắc thực tế: thường quy về 3 tiêu chí so sánh

→ Mức độ sẵn có của mô hình: có bao nhiêu mô hình có thể dùng công khai

→ Hạ tầng triển khai: có thể triển khai hiệu quả đến mức nào

→ Hệ sinh thái: đa dạng môi trường/phần cứng

Model Availability

  • Cả PyTorch và TensorFlow đều có kho mô hình chính thức riêng

  • HuggingFace

→ 85% chỉ dùng được trên PyTorch, và với các mô hình không độc quyền thì 50% cũng dùng được. Chỉ 16% tổng số dùng được trên TensorFlow (chỉ 8% là TF-only)

→ Với 30 mô hình phổ biến nhất, tất cả đều dùng được trên PyTorch nhưng TensorFlow chỉ dùng được 18 mô hình

  • Các bài báo nghiên cứu

→ Mức độ sử dụng PyTorch trong các bài báo nộp mỗi năm tiếp tục tăng

→ Bắt đầu từ 7% năm 2017 và đến năm 2021 đã chiếm gần 80%

→ Nhiều người chọn PyTorch vì sự khó khăn của TensorFlow 1

→ Những khó khăn này đã được cải thiện nhiều trong TensorFlow 2 ra mắt năm 2019, nhưng khi đó PyTorch đã định vị vững chắc ở mảng nghiên cứu

→ Trong số các nhà nghiên cứu dùng TensorFlow năm 2018, 55% đã chuyển sang PyTorch vào năm 2019

→ Trong số các nhà nghiên cứu dùng PyTorch năm 2018, 85% tiếp tục dùng PyTorch trong năm 2019

  • Theo dữ liệu từ Papers With Code

→ TensorFlow tiếp tục giảm, còn PyTorch và các framework khác ngày càng được dùng nhiều hơn

→ Xu hướng này vẫn tiếp diễn ngay cả sau khi TensorFlow 2 ra mắt. Chưa đủ để đảo ngược những khó khăn từng gặp ở TF1

  • Kết luận, xét về mức độ sẵn có của mô hình thì PyTorch đang thống trị thị trường

  • Một vài ngoại lệ khác

→ GoogleAI chủ yếu dùng TensorFlow, nhưng Google Brain dùng JAX/Flax

→ DeepMind cũng đã áp dụng JAX và phát triển Haiku, thư viện mạng nơ-ron cho JAX (Sonnet for JAX)

→ JAX: framework do Google phát triển riêng, đang ngày càng được ưa chuộng trong giới nghiên cứu

Deployment

  • TensorFlow ngay từ đầu đã rất phù hợp cho các ứng dụng định hướng triển khai

→ Có thể triển khai lên cloud/server/mobile/thiết bị IoT gần như không vất vả nhờ TensorFlow Serving, TensorFlow Lite, v.v.

  • PyTorch từng rất yếu ở khía cạnh triển khai, nhưng trong vài năm gần đây đã nỗ lực thu hẹp khoảng cách này

→ TorchServe và PyTorch Live

  • Kết luận, hiện tại TensorFlow vẫn vượt trội hơn về mặt triển khai

→ Đặc biệt, khả năng dùng TFLite trên thiết bị cục bộ và thiết bị Coral là điều rất cần thiết trong nhiều lĩnh vực công nghiệp

→ PyTorch Live chỉ tập trung vào di động, còn TorchServe vẫn đang ở giai đoạn đầu

Ecosystems

  • PyTorch

→ Có PyTorch Hub chính thức: sở hữu nhiều mô hình đa dạng như Audio/Vision/NLP

→ SpeechBrain: bộ công cụ giọng nói mã nguồn mở chính thức, có nhiều tính năng như ASR/nhận diện người nói/xác thực

→ Có nhiều công cụ và thư viện khác, bao gồm Fast.ai

→ TorchElastic: dự án hợp tác AWS+Facebook

→ TorchX: thư viện cho phát triển và triển khai machine learning nhanh

→ PyTorch Lightning: Keras of PyTorch

  • TensorFlow

→ TensorFlow Hub chính thức: nhiều mô hình đa dạng, bao gồm BERT

→ Model Garden: kho mã nguồn cho các mô hình SOTA(State-of-the-ART)

→ TensorFlow Extended(TFX): nền tảng E2E cho triển khai mô hình

→ Vertex AI: nền tảng machine learning hợp nhất của Google Cloud

→ Media Pipe: framework đa phương thức, đa nền tảng để xây dựng pipeline machine learning cho các tính năng như nhận diện khuôn mặt, theo dõi tay, nhận diện đối tượng

→ Coral: toolkit được tạo ra để hỗ trợ các sản phẩm có AI cục bộ tích hợp (IoT)

→ TensorFlow.js: thư viện JavaScript cho machine learning

→ TensorFlow Cloud: kết nối môi trường phát triển cục bộ với Google Cloud

→ Colab: môi trường notebook trên cloud (tương tự Jupyter)

→ Playground: công cụ giáo dục tốt để hiểu các kiến thức cơ bản về mạng nơ-ron

→ Datasets: lưu trữ các bộ dữ liệu do Google công bố định kỳ (người dùng PyTorch cũng có thể dùng)

  • Kết luận, TensorFlow vượt trội hơn về hệ sinh thái

→ Google đã đầu tư rất nhiều trong thời gian qua

→ Ở một số lĩnh vực, nó cũng tốt hơn trong việc kết nối với Google Cloud hoặc port sang các thiết bị như Coral

Vậy nên dùng cái nào trong hai cái này?

  • Nếu đang ở trong ngành, lựa chọn có thể khác nhau tùy vào ngành bạn đang làm (bài gốc có flow chart để giúp chọn dễ hơn)

→ Nếu đang dùng deep learning trong môi trường công nghiệp thì có lẽ bạn đã dùng TensorFlow và cứ tiếp tục như vậy cũng được

→ Cũng có thể cân nhắc PyTorch nhờ TorchServe

→ Nếu là di động thì dùng PyTorch Live, còn nếu là đầu vào audio/video thì dùng TensorFlow

→ Nếu dùng AI trong IoT thì TensorFlow Lite + Coral

  • Nếu là nhà nghiên cứu thì sao?

→ Có lẽ bạn đã dùng PyTorch rồi và cứ tiếp tục như vậy cũng được

→ Ngoại lệ đặc biệt là nếu làm Reinforcement Learning thì có thể cân nhắc TensorFlow

→ Nếu không muốn dùng TensorFlow thì cũng đáng để thử cân nhắc JAX

→ Dù chọn gì thì trong năm 2022, JAX là cái đáng để theo dõi

  • Nếu là giảng viên thì sao?

→ Điều này có thể khác nhau tùy mục tiêu của chương trình đào tạo

→ Nếu muốn đào tạo ra các kỹ sư có thể dùng machine learning ngay trong công việc thực tế thì TensorFlow

→ Nếu muốn hiểu về deep learning và các mô hình deep learning thì PyTorch

  • Nếu đang chuyển hướng sự nghiệp thì sao?

→ Cả PyTorch / TensorFlow đều là lựa chọn tốt

→ Hãy chọn cái dễ dùng hơn

→ Nếu không muốn bị ràng buộc vào một framework cụ thể thì TensorFlow, vốn đang được dùng như tiêu chuẩn trong ngành, sẽ tốt hơn

→ Khi tìm việc/tuyển dụng thì phía TensorFlow có lợi thế hơn

  • Nếu học deep learning như sở thích?

→ Tùy bạn muốn làm gì, nhưng về cơ bản PyTorch tốt hơn

  • Nếu là người hoàn toàn mới với deep learning thì sao?

→ Khuyên nên bắt đầu với Keras

→ Nếu muốn một môi trường gần với Python native thì PyTorch, đặc biệt là PyTorch Lightning

1 bình luận

 
xguru 2021-12-20

So sánh với những câu chuyện từng được nhắc đến vào năm 2019/2020 cũng khá thú vị.