PyTorch và TensorFlow là hai framework Deep Learning phổ biến nhất hiện nay. Các cuộc tranh luận về việc framework nào, PyTorch hay TensorFlow, là vượt trội hơn đã diễn ra gay gắt từ lâu nhưng vẫn chưa thể ngã ngũ với mỗi framework đều có những người hâm mộ nhiệt thành.
Cả PyTorch và TensorFlow đều đã phát triển nhanh chóng dù thời gian ra đời tính đến nay là tương đối ngắn. Khi tìm kiếm thông tin để tìm hiểu và so sánh giữa hai framework này, bạn có thể gặp nhiều thông tin lỗi thời hoặc không đầy đủ và càng làm cho bạn cảm thấy bối rối hơn.
Chúng ta thường nghe thấy rằng TensorFlow là một framework chủ yếu được sử dụng trong các dự án thực tế, còn PyTorch thường được sử dụng trong nghiên cứu. Tuy nhiên, những quan niệm này một phần xuất phát từ thông tin lỗi thời. Bài viết này nhằm cung cấp cho bạn đầy đủ thông tin và mới nhất, giúp bạn nhìn nhận đúng về 2 framework này, thấy được những điểm khác biệt và ứng dụng của chúng trong thực tế
Cân nhắc tính thực tế
PyTorch và TensorFlow đều có những câu chuyện phát triển độc đáo và những quyết định thiết kế phức tạp trong quá khứ. Những điều này đã khiến cho việc so sánh cả hai trở thành các cuộc thảo luận kỹ thuật phức tạp về các tính năng hiện tại của chúng và cả suy đoán về các tính năng được phát triển trong tương lai. Chúng ta hãy cùng xem xét hai framework này dựa trên những gì cả hai đã đạt được cho đến thời điểm này.
Ba yếu tố sau của PyTorch và TensorFlow cần được xem xét:
- Tính khả dụng của mô hình (Model Availability): Với việc các lĩnh vực của Deep Learning được mở rộng hàng năm và các mô hình ngày càng trở nên lớn hơn, việc đào tạo các mô hình hiện đại (State-of-the-Art hay SOTA) từ đầu đơn giản là không còn khả thi nữa. May mắn thay, có nhiều mô hình SOTA được công bố công khai và điều quan trọng là phải sử dụng chúng khi nào có thể.
- Cơ sở hạ tầng triển khai (Deployment Infrastructure): Việc đào tạo các mô hình hoạt động tốt là vô nghĩa nếu chúng không thể được đưa vào sử dụng. Giảm thời gian triển khai là điều tối quan trọng, đặc biệt là với sự phổ biến ngày càng tăng của các mô hình kinh doanh dịch vụ vi mô. Việc triển khai hiệu quả có hiệu quả hay không có thể tạo ra hoặc phá vỡ nhiều doanh nghiệp tập trung vào Học máy.
- Hệ sinh thái (Ecosystems): Deep learning không còn được phân loại cho các trường hợp sử dụng cụ thể trong các môi trường được kiểm soát cao. AI đang đưa sức mạnh mới vào nhiều ngành công nghiệp, do đó, một framework nằm trong một hệ sinh thái lớn hơn, tạo điều kiện phát triển cho các ứng dụng di động, cục bộ và máy chủ là rất quan trọng. Ngoài ra, sự ra đời của phần cứng Học máy chuyên biệt, chẳng hạn như Google’s Edge TPU, có nghĩa là cần phải làm việc với một framework có thể tích hợp tốt với phần cứng này để có thể thành công.
Chúng ta sẽ lần lượt khám phá các yếu tố thực tế này, sau đó đưa ra các đề xuất của về việc sử dụng framework nào trong các lĩnh vực khác nhau
PyTorch so với TensorFlow – Tính khả dụng của mô hình
Việc triển khai một mô hình Deep Learning thành công từ đầu là một nhiệm vụ không hề đơn giản, đặc biệt là đối với các ứng dụng như NLP, nơi việc kỹ thuật và tối ưu hóa gặp nhiều khó khăn. Sự phức tạp ngày càng tăng của các mô hình SOTA khiến cho việc đào tạo và điều chỉnh trở nên đơn giản là không thực tế, gần như là nhiệm vụ bất khả thi đối với các doanh nghiệp quy mô nhỏ. GPT-3 của OpenAI có hơn 175 tỷ thông số và GPT-4 sẽ có hơn 100 nghìn tỷ thông số. Các công ty khởi nghiệp và các nhà nghiên cứu cũng gặp vấn đề tương tự, đơn giản là không có tài nguyên tính toán để tự mình sử dụng và khám phá các mô hình như vậy, vì vậy việc tiếp cận các mô hình được đào tạo trước để học hỏi chuyển giao, tinh chỉnh hoặc suy luận mới là vô giá.
Đối với tính khả dụng của mô hình, PyTorch và TensorFlow khác biệt rõ rệt. Cả PyTorch và TensorFlow đều có kho lưu trữ mô hình chính thức của riêng chúng, như chúng ta sẽ khám phá bên dưới trong phần Hệ sinh thái, nhưng các chuyên gia có thể muốn sử dụng các mô hình từ các nguồn khác. Chúng ta hãy xem xét định lượng tính khả dụng của mô hình cho từng framework.
HuggingFace
Thư viện HuggingFace giúp bạn có thể kết hợp các mô hình SOTA đã được đào tạo và điều chỉnh vào pipelines của bạn chỉ trong một vài dòng code.
Khi chúng ta so sánh tính khả dụng của mô hình HuggingFace cho PyTorch và TensorFlow, kết quả thật đáng kinh ngạc. Chúng ta thấy dưới đây biểu đồ về tổng số mô hình có sẵn trên HuggingFace độc quyền của PyTorch hoặc TensorFlow hoặc có sẵn cho cả hai framework. Như chúng ta có thể thấy, số lượng mô hình có sẵn để sử dụng độc quyền trong PyTorch hoàn toàn hơn hẳn đối thủ cạnh tranh. Gần 85% các mẫu là độc quyền của PyTorch và ngay cả những mẫu không độc quyền cũng có khoảng 50% cơ hội có sẵn trong PyTorch. Ngược lại, chỉ có khoảng 16% trong số tất cả các mô hình có sẵn cho TensorFlow, với chỉ khoảng 8% là dành riêng cho TensorFlow.
Chúng ta sẽ thấy kết quả tương tự nếu hạ hạng mục tiêu của mình xuống chỉ 30 mô hình phổ biến nhất trên HuggingFace. Thậm chí 2/3 trong số 30 mẫu hàng đầu không có sẵn trong TensorFlow, trong khi tất cả đều có sẵn trong PyTorch. Không có mô hình nào trong top 30 là độc quyền của TensorFlow.
Tài liệu nghiên cứu
Đặc biệt, đối với các nhà nghiên cứu, việc tiếp cận các mô hình từ các bài báo được xuất bản gần đây là rất quan trọng. Cố gắng tạo lại các mô hình mới mà bạn muốn khám phá trong một framework khác sẽ lãng phí thời gian quý giá, vì vậy việc có thể sao chép một kho lưu trữ và ngay lập tức bắt đầu thử nghiệm có nghĩa là bạn có thể tập trung vào công việc quan trọng.
Cho rằng PyTorch là framework nghiên cứu trên thực tế, chúng ta hy vọng xu hướng mà chúng ta quan sát được trên HuggingFace sẽ tiếp tục đúng với cộng đồng nghiên cứu nói chung; và số liệu cho thấy điều đó là đúng.
Số liệu tổng hợp dữ liệu từ tám tạp chí nghiên cứu hàng đầu trong vài năm qua vào biểu đồ bên dưới, biểu đồ này cho thấy tỷ lệ tương đối của các ấn phẩm sử dụng PyTorch hoặc TensorFlow. Như bạn có thể thấy, việc áp dụng PyTorch cực kỳ nhanh chóng và chỉ trong vài năm, tốc độ tăng trưởng từ việc sử dụng chỉ khoảng 7% đã tăng đến gần 80% trong các bài báo sử dụng PyTorch hoặc TensorFlow.
Phần lớn lý do cho việc áp dụng nhanh chóng này là do những khó khăn với TensorFlow 1 đã trở nên trầm trọng hơn trong bối cảnh nghiên cứu, khiến các nhà nghiên cứu phải tìm đến PyTorch. Mặc dù nhiều vấn đề của TensorFlow đã được giải quyết khi phát hành TensorFlow 2 vào năm 2019, nhưng động lực của PyTorch đã đủ lớn để PyTorch tự duy trì như một framework tập trung vào nghiên cứu đã được thiết lập, ít nhất là từ góc độ cộng đồng.
Chúng ta có thể thấy mô hình tương tự nếu nhìn vào phần nhỏ các nhà nghiên cứu đã thay đổi các framework. Khi xem xét các ấn phẩm của các tác giả đang sử dụng PyTorch hoặc TensorFlow vào năm 2018 và 2019, chúng ta nhận thấy rằng phần lớn các tác giả đã sử dụng TensorFlow vào năm 2018 đã chuyển sang PyTorch vào năm 2019 (55%), trong khi phần lớn các tác giả đã sử dụng PyTorch năm 2018 vẫn là PyTorch 2019 (85%). Dữ liệu này được trực quan hóa trong biểu đồ Sankey bên dưới, trong đó phía bên trái tương ứng với năm 2018 và phía bên phải tương ứng với năm 2019. Lưu ý rằng dữ liệu đại diện cho tỷ lệ người dùng của từng framework trong năm 2018, không phải tổng số.
Nếu chú ý kỹ bạn sẽ thấy rằng dữ liệu này là từ trước khi phát hành TensorFlow 2, nhưng như chúng ta sẽ thấy trong phần tiếp theo, thực tế này không liên quan trong cộng đồng nghiên cứu.
Paper with Code
Cuối cùng, chúng ta xem xét dữ liệu từ Papers with Code – một trang web có nhiệm vụ tạo ra một tài nguyên mở và miễn phí với các bài báo, mã, datasets của Machine Learning, v.v. Hãy cùng vẽ biểu đồ tỷ lệ phần trăm các bài báo sử dụng PyTorch, TensorFlow hoặc một framework khác theo thời gian, với dữ liệu được tổng hợp hàng quý, từ cuối năm 2017 đến quý hiện tại. Chúng ta nhận thấy sự tăng trưởng ổn định của các loại papers sử dụng PyTorch – trong số 4.500 repositories được tạo ra trong quý này, 60% trong số đó được triển khai trong PyTorch, chỉ 11% được triển khai trong TensorFlow.
Ngược lại, chúng ta thấy sự sụt giảm đều đặn trong việc sử dụng TensorFlow. Ngay cả việc phát hành TensorFlow 2 vào năm 2019, giải quyết nhiều vấn đề đã từng khiến việc sử dụng TensorFlow 1 trở nên khó khăn trong nghiên cứu, cũng không đủ để đảo ngược xu hướng này. Chúng ta nhận thấy mức độ phổ biến của TensorFlow gần như đơn điệu, ngay cả sau khi phát hành TensorFlow 2.
Kết luận về Tính sẵn có của mô hình
Rõ ràng là từ dữ liệu trên rằng PyTorch hiện đang thống trị bối cảnh nghiên cứu. Trong khi TensorFlow 2 đã giúp việc sử dụng TensorFlow để nghiên cứu dễ dàng hơn rất nhiều, PyTorch đã cho các nhà nghiên cứu không có lý do gì để quay lại và thử TensorFlow một lần nữa. Hơn nữa, vấn đề tương thích ngược giữa nghiên cứu cũ trong TensorFlow 1 và nghiên cứu mới trong TensorFlow 2 chỉ làm trầm trọng thêm vấn đề này.
Hiện tại, PyTorch đã chiến thắng rõ ràng trong lĩnh vực nghiên cứu chỉ vì lý do nó đã được cộng đồng áp dụng rộng rãi và hầu hết các ấn phẩm / mô hình có sẵn đều sử dụng PyTorch.
Có một số ngoại lệ / lưu ý đáng chú ý:
- Google AI: Rõ ràng, nghiên cứu do Google công bố chủ yếu sử dụng TensorFlow. Do Google phát triển mạnh hơn Facebook nhiều (292 so với 92 bài báo được xuất bản trên NeurIPS hoặc ICML vào năm 2020), một số nhà nghiên cứu có thể thấy hữu ích khi sử dụng hoặc ít nhất là thành thạo TensorFlow. Google Brain cũng sử dụng JAX kết hợp với Flax – thư viện mạng nơ-ron của Google cho JAX.
- DeepMind: DeepMind đã tiêu chuẩn hóa việc sử dụng TensorFlow vào năm 2016, mặc dù họ đã thông báo vào năm 2020 rằng họ đang sử dụng JAX để đẩy nhanh nghiên cứu của mình. Trong thông báo này, họ cũng đưa ra một cái nhìn tổng quan về hệ sinh thái JAX của họ, đáng chú ý nhất là Haiku, thư viện mạng thần kinh dựa trên JAX. DeepMind cũng nhiều hơn Facebook (110 so với 92 bài báo được xuất bản trên NeurIPS hoặc ICML vào năm 2020). DeepMind đã tạo ra Sonnet, đây là một API cấp cao cho TensorFlow được thiết kế riêng cho nghiên cứu và đôi khi được gọi là “phiên bản nghiên cứu của Keras”, có thể hữu ích cho những người đang cân nhắc sử dụng TensorFlow để nghiên cứu. Hơn nữa, khuôn khổ Deepmind’s Acme có thể rất cần thiết cho những người thực hành Học tập củng cố (Reinforcement Learning).
- OpenAI: Mặt khác, OpenAI đã tiêu chuẩn hóa việc sử dụng PyTorch trong nội bộ vào năm 2020; nhưng, một lần nữa đối với những người trong Học tập tăng cường, baselines repository của họ được triển khai trong TensorFlow. Baselines cung cấp triển khai chất lượng cao các thuật toán Học tăng cường, vì vậy TensorFlow có thể là lựa chọn tốt nhất cho những người thực hành Học tăng cường.
- JAX: Google có một framework khác gọi là JAX đang ngày càng phổ biến trong cộng đồng nghiên cứu. Theo một nghĩa nào đó, chi phí trong JAX ít hơn rất nhiều so với PyTorch hoặc TensorFlow; nhưng triết lý cơ bản của nó khác với cả PyTorch và TensorFlow, và vì lý do này, việc di chuyển sang JAX có thể không phải là một lựa chọn tốt đối với hầu hết mọi người. Ngày càng có nhiều mô hình / bài báo sử dụng JAX, nhưng hiện tại vẫn chưa rõ mức độ phổ biến của nó trong cộng đồng nghiên cứu trong những năm tới so với PyTorch và TensorFlow.
TensorFlow có một chặng đường dài và gian nan, nếu không muốn nói là không thể, nếu nó muốn tái thiết lập chính nó như một framework nghiên cứu thống trị.
Như vậy, chiến thắng trong vòng 1 trong cuộc tranh luận giữa 2 framework PyTorch và TensorFlow đã thuộc về PyTorch.
PyTorch so với TensorFlow – Triển khai
Mặc dù việc sử dụng các mô hình SOTA cho các kết quả vượt trội là “chén thánh” của các ứng dụng Deep Learning từ góc độ suy luận, lý tưởng này không phải lúc nào cũng thực tế hoặc thậm chí có thể đạt được trong môi trường công nghiệp. Việc tiếp cận các mô hình SOTA là vô nghĩa nếu có một quá trình tốn nhiều công sức, dễ xảy ra lỗi. Do đó, ngoài việc xem xét framework nào cho phép bạn truy cập vào các mô tốt nhất, điều quan trọng là phải xem xét quy trình Deep Learning từ đầu đến cuối trong mỗi framework.
TensorFlow đã là framework phù hợp cho các ứng dụng hướng đến triển khai kể từ khi ra đời. TensorFlow có nhiều công cụ liên quan giúp quá trình Deep Learning từ đầu đến cuối trở nên dễ dàng và hiệu quả. TensorFlow Serving và TensorFlow Lite cho phép bạn triển khai dễ dàng trên các đám mây, máy chủ, thiết bị di động và IoT.
PyTorch từng cực kỳ mờ nhạt từ góc độ triển khai, nhưng đã được cải tiến để thu hẹp khoảng cách này trong những năm gần đây. Việc giới thiệu TorchServe và PyTorch Live đã cung cấp các công cụ triển khai gốc rất cần thiết. Nhưng liệu PyTorch đã thu hẹp khoảng cách triển khai đủ để khiến việc sử dụng nó trở nên đáng giá trong môi trường công nghiệp? Chúng ta hãy xem xét.
TensorFlow
TensorFlow cho phép mở rộng với các đồ thị tĩnh được tối ưu hóa cho hiệu suất suy luận. Khi triển khai mô hình với TensorFlow, bạn sử dụng TensorFlow Serving hoặc TensorFlow Lite tùy thuộc vào ứng dụng.
TensorFlow Serving
TensorFlow Serving được sử dụng khi triển khai các mô hình TensorFlow trên các máy chủ, có thể là nội bộ hoặc trên đám mây và được sử dụng trong nền tảng end-to-end Machine Learning của TensorFlow Extended (TFX). Serving giúp dễ dàng tuần tự hóa các mô hình thành các thư mục được xác định rõ ràng với các model tags và chọn mô hình nào được sử dụng để thực hiện các yêu cầu suy luận trong khi vẫn giữ kiến trúc máy chủ và các API tĩnh.
Serving cho phép bạn dễ dàng triển khai các mô hình trên các máy chủ gRPC chuyên biệt, chạy framework mã nguồn mở của Google cho RPC hiệu suất cao. gRPC được thiết kế với mục đích kết nối một hệ sinh thái đa dạng của các dịch vụ vi mô, vì vậy các máy chủ này rất phù hợp để triển khai mô hình. Serving nói chung được tích hợp chặt chẽ với Google Cloud thông qua Vertex AI và tích hợp với Kubernetes và Docker.
TensorFlow Lite
TensorFlow Lite (TFLite) được sử dụng khi triển khai các mô hình TensorFlow trên thiết bị di động hoặc IoT / nhúng (embedded). TFLite nén và tối ưu hóa các mô hình cho các thiết bị này, đồng thời giải quyết 5 hạn chế đối với Trí tuệ nhân tạo trên thiết bị: độ trễ, kết nối, quyền riêng tư, kích thước và mức tiêu thụ điện năng. Cùng một pipeline được sử dụng để xuất đồng thời cả mô hình SavedModels
dựa trên Keras tiêu chuẩn (được sử dụng với Serving) và mô hình TFLite, do đó, chất lượng mô hình có thể được so sánh.
TFLite có thể được sử dụng cho cả Android và iOS, cũng như vi điều khiển (ARM với Bazel hoặc CMake) và embedded Linux (ví dụ: thiết bị Coral ). Các API của TensorFlow cho Python, Java, C ++, JavaScript và Swift, cung cấp cho các nhà phát triển một loạt các tùy chọn ngôn ngữ.
PyTorch
PyTorch đã thay đổi để việc triển khai dễ dàng hơn, vốn trước đây đã nổi tiếng là mờ nhạt trong đấu trường này. Trước đây, người dùng PyTorch cần sử dụng Flask hoặc Django để xây dựng API REST trên mô hình, nhưng giờ đây họ có các tùy chọn triển khai gốc ở dạng TorchServe và PyTorch Live.
TorchServe
TorchServe là một framework triển khai mã nguồn mở kết quả từ sự hợp tác giữa AWS và Facebook (nay là Meta) và được phát hành vào năm 2020. Nó có các tính năng cơ bản như đặc tả điểm cuối, lưu trữ mô hình và quan sát các số liệu; nhưng nó vẫn kém hơn so với TensorFlow. Cả API REST và gRPC đều được hỗ trợ với TorchServe.
PyTorch Live
PyTorch lần đầu tiên phát hành PyTorch Mobile vào năm 2019, được thiết kế để tạo quy trình làm việc đầu cuối cho việc triển khai các mô hình học máy được tối ưu hóa cho Android, iOS và Linux.
PyTorch Live đã được phát hành vào đầu tháng 12 để xây dựng trên thiết bị di động. Nó sử dụng JavaScript và React Native để tạo các ứng dụng hỗ trợ AI trên nền tảng iOS và Android với giao diện người dùng được liên kết. Inference trên thiết bị vẫn được thực hiện bởi PyTorch Mobile. Trực tiếp đi kèm với các dự án mẫu để khởi động từ đó và có kế hoạch hỗ trợ đầu vào âm thanh và video trong tương lai
Kết luận về triển khai
Hiện tại, TensorFlow vẫn chiến thắng ở mặt trận triển khai. Serving và TFLite đơn giản là mạnh mẽ hơn so với các đối thủ cạnh tranh PyTorch và khả năng sử dụng TFLite cho AI cục bộ kết hợp với các thiết bị Coral của Google là điều bắt buộc đối với nhiều ngành. Ngược lại, PyTorch Live chỉ tập trung vào thiết bị di động và TorchServe vẫn còn sơ khai. Sẽ rất thú vị khi xem lĩnh vực triển khai thay đổi như thế nào trong những năm tới, nhưng hiện tại Vòng 2 trong cuộc tranh luận PyTorch so với TensorFlow thuộc về TensorFlow.
Lưu ý cuối cùng về các vấn đề khả dụng và triển khai mô hình: Đối với những người muốn sử dụng cơ sở hạ tầng triển khai TensorFlow nhưng muốn truy cập vào các mô hình chỉ có sẵn trong PyTorch, hãy cân nhắc sử dụng ONNX để chuyển mô hình từ PyTorch sang TensorFlow
PyTorch so với TensorFlow – Hệ sinh thái
Cân nhắc quan trọng cuối cùng phân tách PyTorch và TensorFlow là hệ sinh thái mà chúng nằm trong đó. Cả PyTorch và TensorFlow đều là những framework có khả năng từ góc độ mô hình hóa và sự khác biệt về kỹ thuật của chúng tại thời điểm này ít quan trọng hơn so với hệ sinh thái xung quanh chúng, cung cấp các công cụ để dễ dàng triển khai, quản lý, đào tạo phân tán, v.v. Hãy cùng xem xét hệ sinh thái của từng framework.
PyTorch
Hub
Ngoài các nền tảng như HuggingFace, còn có PyTorch Hub , một nền tảng định hướng nghiên cứu để chia sẻ kho lưu trữ với các mô hình được đào tạo trước. Hub có nhiều loại mô hình, bao gồm cả những mô hình dành cho Âm thanh, Hình ảnh và NLP. Nó cũng có các mô hình tổng quát, bao gồm một GAN để tạo ra hình ảnh chất lượng cao của khuôn mặt người nổi tiếng.
SpeechBrain
SpeechBrain là bộ công cụ phát biểu nguồn mở chính thức của PyTorch. SpeechBrain hỗ trợ ASR, nhận dạng người nói, xác minh và phân cực, v.v. Nếu bạn không muốn tạo bất kỳ mô hình nào và thay vào đó muốn có một công cụ plug-and-play với các tính năng như Auto Chapters, Sentiment Analysis, Entity Detection, v.v., hãy xem API chuyển giọng nói thành văn bản (Speech-to-Text API) của riêng AssemblyAI.
Các công cụ hệ sinh thái
Hãy xem trang Công cụ của PyTorch để biết các thư viện khác có thể hữu ích, chẳng hạn như các thư viện phù hợp với Thị giác máy tính hoặc Xử lý ngôn ngữ tự nhiên. Điều này bao gồm fast.ai – một thư viện phổ biến để sản xuất mạng nơ-ron bằng các phương pháp hay nhất hiện đại.
TorchElastic
TorchElastic được phát hành vào năm 2020 và là kết quả của sự hợp tác giữa AWS và Facebook. Nó là một công cụ để đào tạo phân tán, quản lý các quy trình của nhân viên và điều phối các hành vi khởi động lại để bạn có thể đào tạo các mô hình trên một cụm các nút tính toán có thể thay đổi động mà không ảnh hưởng đến đào tạo. Do đó, TorchElastic ngăn chặn các lỗi nghiêm trọng từ các vấn đề như sự kiện bảo trì máy chủ hoặc sự cố mạng để bạn không bị mất tiến độ đào tạo. TorchElastic tích hợp các tính năng với Kubernetes và đã được tích hợp vào PyTorch 1.9+.
TorchX
TorchX là một SDK để xây dựng và triển khai nhanh các ứng dụng Học máy. TorchX bao gồm Training Session Manager API để khởi chạy các ứng dụng PyTorch phân tán trên các schedulers được hỗ trợ. Nó chịu trách nhiệm khởi chạy distributed job trong khi hỗ trợ nguyên bản các công việc được TorchElastic quản lý cục bộ.
Lightning
PyTorch Lightning đôi khi được gọi là Keras của PyTorch. Mặc dù sự so sánh này hơi sai lệch, nhưng Lightning là một công cụ hữu ích để đơn giản hóa quá trình đào tạo và kỹ thuật mô hình trong PyTorch và nó đã trưởng thành đáng kể kể từ lần phát hành đầu tiên vào năm 2019. Lightning tiếp cận quy trình mô hình hóa theo hướng đối tượng, xác định có thể sử dụng lại và các thành phần có thể chia sẻ có thể được sử dụng trong các dự án. Để biết thêm thông tin về Lightning và so sánh quy trình làm việc của nó như thế nào so với vani PyTorch, bạn có thể xem hướng dẫn này.
TensorFlow
Hub
TensorFlow Hub là một kho lưu trữ các mô hình Machine Learning được đào tạo sẵn sàng để tinh chỉnh, cho phép bạn sử dụng một mô hình như BERT chỉ với một vài dòng code. Hub chứa các mô hình TensorFlow, TensorFlow Lite và TensorFlow.js cho các trường hợp sử dụng khác nhau, với các mô hình có sẵn cho các miền sự cố hình ảnh, video, âm thanh và văn bản. Bắt đầu với hướng dẫn tại đây hoặc xem danh sách các mô hình tại đây.
Model Garden
Nếu các mô hình được đào tạo trước có sẵn để sử dụng không hoạt động cho ứng dụng của bạn, thì TensorFlow’s Model Garden là một repository cung cấp mã nguồn cho các mô hình SOTA. Sẽ rất hữu ích nếu bạn muốn tìm hiểu kỹ cách hoạt động của các mô hình hoặc sửa đổi chúng theo nhu cầu của riêng bạn – điều không thể xảy ra với các mô hình đã được đào tạo trước theo tuần tự ngoài việc học chuyển giao và tinh chỉnh.
Model Garden chứa các thư mục về các mô hình chính thức do Google duy trì, các mô hình nghiên cứu do các nhà nghiên cứu duy trì và các mô hình cộng đồng được quản lý do cộng đồng duy trì. Mục tiêu dài hạn của TensorFlow là cung cấp các phiên bản được đào tạo trước của các mô hình từ Model Garden trên Hub và để các mô hình được đào tạo trước trên Hub có mã nguồn có sẵn trong Model Garden.
Extended (TFX)
TensorFlow Extended là nền tảng end-to-end của TensorFlow để triển khai mô hình. Bạn có thể tải, xác thực, phân tích và chuyển đổi dữ liệu; đào tạo và đánh giá mô hình; triển khai các mô hình sử dụng Serving hoặc Lite; và sau đó theo dõi các tạo tác và sự phụ thuộc của chúng. TFX có thể được sử dụng với Jupyter hoặc Colab và có thể sử dụng Apache Airflow/Beam hoặc Kubernetes để điều phối. TFX được tích hợp chặt chẽ với Google Cloud và có thể được sử dụng với Vertex AI Pipelines.
Vertex AI
Vertex AI là nền tảng Học máy hợp nhất của Google Cloud. Nó được phát hành vào năm 2021 và tìm cách hợp nhất các dịch vụ trên GCP, AI Platform và AutoML thành một nền tảng. Vertex AI có thể giúp bạn tự động hóa, giám sát và quản lý các hệ thống Machine Learning bằng cách sắp xếp các quy trình công việc theo cách không có máy chủ. Vertex AI cũng có thể lưu trữ các tạo tác của quy trình làm việc, cho phép bạn theo dõi các yếu tố phụ thuộc và dữ liệu đào tạo, siêu tham số và mã nguồn của mô hình.
MediaPipe
MediaPipe là một framework để xây dựng các Machine Learning pipelines ứng dụng đa phương thức, đa nền tảng có thể được sử dụng để nhận diện khuôn mặt, theo dõi nhiều tay, phát hiện đối tượng, v.v. Dự án là mã nguồn mở và có các ràng buộc bằng một số ngôn ngữ bao gồm Python, C ++ và JavaScript. Bạn có thể tìm thêm thông tin về cách bắt đầu với MediaPipe và các giải pháp sẵn sàng sử dụng của nó tại đây.
Coral
Mặc dù có rất nhiều công ty SaaS dựa vào AI dựa trên đám mây, nhưng nhu cầu ngày càng tăng về AI cục bộ trong nhiều ngành công nghiệp. Google Coral được tạo ra để giải quyết nhu cầu này và là một bộ công cụ hoàn chỉnh để xây dựng các sản phẩm với AI cục bộ. Coral được phát hành vào năm 2020 và giải quyết những khó khăn khi triển khai AI trên bo mạch được đề cập trong phần TFLite của phần Triển khai, bao gồm quyền riêng tư và hiệu quả.
Coral cung cấp một loạt các sản phẩm phần cứng để tạo mẫu, production và sensing, một số trong số đó là Raspberry Pis mạnh mẽ hơn được tạo riêng cho các ứng dụng AI. Các sản phẩm của họ sử dụng TPU Edge để có hiệu suất cao trên các thiết bị tiêu thụ điện năng thấp. Coral cũng cung cấp các mô hình được biên dịch trước để phân đoạn hình ảnh, ước tính tư thế, nhận dạng giọng nói và hơn thế nữa để cung cấp nền tảng cho các nhà phát triển đang tìm cách tạo hệ thống AI cục bộ của riêng họ. Các bước thiết yếu để tạo một mô hình có thể được xem trong sơ đồ bên dưới.
TensorFlow.js
TensorFlow.js là một thư viện JavaScript dành cho Machine Learning cho phép bạn đào tạo và triển khai các mô hình cả trong trình duyệt và phía máy chủ với Node.js. Họ cung cấp tài liệu với các ví dụ và thông tin về cách nhập các mô hình Python, các mô hình được đào tạo trước sẵn sàng để sử dụng ngay khi xuất xưởng và các bản trình diễn trực tiếp với mã được liên kết.
Cloud
TensorFlow Cloud là một thư viện cho phép bạn kết nối môi trường cục bộ của mình với Google Cloud. Các API được cung cấp được thiết kế để thu hẹp khoảng cách từ xây dựng mô hình và gỡ lỗi trên máy cục bộ của bạn đến đào tạo phân tán và điều chỉnh siêu tham số trên Google Cloud mà không cần sử dụng Cloud Console.
Colab
Google Colab là một môi trường máy tính xách tay dựa trên đám mây, rất giống với Jupyter. Dễ dàng kết nối Colab với Google Cloud để đào tạo GPU hoặc TPU. Lưu ý rằng PyTorch cũng có thể được sử dụng với Colab.
Playground
Playground là một công cụ giáo dục nhỏ nhưng được đánh giá cao để hiểu những kiến thức cơ bản về mạng thần kinh. Nó cung cấp một mạng dày đặc đơn giản được hình dung bên trong một giao diện người dùng sạch sẽ. Bạn có thể thay đổi số lượng lớp trong mạng và kích thước của chúng để xem cách các tính năng được học trong thời gian thực. Bạn cũng có thể thấy việc thay đổi các siêu tham số như tốc độ học và cường độ chính quy ảnh hưởng đến quá trình học tập trên các bộ dữ liệu khác nhau như thế nào. Playground cho phép bạn thực hiện quá trình học tập trong thời gian thực để xem trực quan như thế nào các đầu vào được chuyển đổi trong quá trình đào tạo. Playground thậm chí còn đi kèm với một thư viện mạng nơ-ron nhỏ mã nguồn mở mà nó được xây dựng trên đó để bạn có thể hiểu các sơ đồ và chốt của mạng.
Datasets
Tập dữ liệu của Google Research là tài nguyên tập dữ liệu mà Google phát hành tập dữ liệu theo định kỳ. Google cũng có Dataset Search để truy cập vào cơ sở dữ liệu thậm chí còn rộng hơn. Tất nhiên, người dùng PyTorch cũng có thể tận dụng các bộ dữ liệu này.
Kết luận về hệ sinh thái
Vòng này là vòng mà cả hai đều không cách nhau quá xa, nhưng cuối cùng thì TensorFlow có hệ sinh thái vượt trội. Google đã đầu tư rất nhiều vào việc đảm bảo rằng có một sản phẩm khả dụng trong từng lĩnh vực liên quan của quy trình end-to-end Deep Learning, mặc dù mức độ đánh bóng của các sản phẩm này là khác nhau trong bối cảnh này. Mặc dù vậy, việc tích hợp chặt chẽ với Google Cloud cùng với TFX giúp cho quá trình phát triển end-to-end trở nên hiệu quả và có tổ chức, đồng thời việc dễ dàng chuyển các mô hình sang thiết bị Google Coral đã mang lại chiến thắng vang dội cho TensorFlow đối với một số ngành.
Vòng 3 trong cuộc tranh luận PyTorch và TensorFlow thuộc về TensorFlow.
Bạn nên sử dụng PyTorch hoặc TensorFlow?
Như bạn có thể mong đợi, cuộc tranh luận PyTorch và TensorFlow không có một câu trả lời chính xác nào – chỉ có thể hợp lý khi nói rằng một framework này vượt trội hơn một framework khác đối với một trường hợp sử dụng cụ thể. Để giúp bạn quyết định framework nào phù hợp nhất với mình, chúng tôi (nhóm tác giả) đã tổng hợp các đề xuất của mình thành các biểu đồ bên dưới, với mỗi biểu đồ được điều chỉnh cho phù hợp với một lĩnh vực quan tâm khác nhau.
Nếu bạn muốn ứng dụng vào trong thực tế
Nếu bạn thực hiện kỹ thuật Deep Learning trong môi trường làm việc thực tế, bạn có thể đang sử dụng TensorFlow và có lẽ nên gắn bó với nó. Framework triển khai mạnh mẽ của TensorFlow và nền tảng TensorFlow Extended end-to-end là vô giá đối với những người cần sản xuất mô hình. Dễ dàng triển khai trên máy chủ gRPC cùng với giám sát mô hình và theo dõi hiện vật là những công cụ quan trọng để sử dụng trong các lĩnh vực. Với việc phát hành TorchServe gần đây, bạn có thể cân nhắc sử dụng PyTorch nếu bạn có lý do chính đáng, chẳng hạn như nhu cầu truy cập các mô hình SOTA chỉ có trong PyTorch. Trong trường hợp này, hãy xem xét sử dụng ONNX để triển khai mô hình PyTorch đã chuyển đổi trong quy trình triển khai của TensorFlow.
Nếu đang xây dựng các ứng dụng dành cho thiết bị di động, bạn có thể cân nhắc sử dụng PyTorch với bản phát hành gần đây của PyTorch Live, trừ khi bạn yêu cầu đầu vào âm thanh hoặc video, trong trường hợp đó, bạn nên sử dụng TensorFlow. Nếu bạn đang xây dựng hệ thống nhúng hoặc thiết bị IoT sử dụng AI, bạn vẫn nên sử dụng TensorFlow dựa trên đường dẫn TFLite + Coral.
Điểm mấu chốt: nếu bạn phải chọn một framework, hãy chọn TensorFlow.
Nếu bạn là Nhà nghiên cứu
Nếu bạn là một nhà nghiên cứu, bạn gần như chắc chắn đang sử dụng PyTorch và bây giờ bạn có thể nên gắn bó với nó. PyTorch là framework nghiên cứu trên thực tế, vì vậy hầu hết các mô hình SOTA đều nằm trong / dành cho PyTorch.
Có một số ngoại lệ đáng chú ý đối với quy tắc này, đáng chú ý nhất là những người trong Học tập tăng cường (Reinforcement Learning) nên xem xét sử dụng TensorFlow. TensorFlow có thư viện Agents để Học tập củng cố và framework Deepmind’s Acme được triển khai trong TensorFlow. Repository mô hình OpenAI’s Baselines cũng được triển khai trong TensorFlow, mặc dù OpenAI’s Gym có thể được sử dụng với TensorFlow hoặc PyTorch. Nếu bạn định sử dụng TensorFlow cho nghiên cứu của mình, bạn cũng nên xem Deepmind’s Sonnet để biết các thông tin tóm tắt cấp cao hơn.
Nếu không muốn sử dụng TensorFlow, bạn nên cân nhắc Google’s JAX nếu bạn đang đào tạo TPU. Bản thân nó không phải là một khung mạng nơ-ron mà gần giống với việc triển khai NumPy cho G / TPU với khả năng phân biệt tự động. Deepmind’s Haiku, mà họ gọi là “Sonnet for JAX”, là một thư viện mạng thần kinh được xây dựng trên JAX rất đáng để khám phá nếu bạn đang xem xét JAX. Ngoài ra, bạn có thể xem Flax của Google. Nếu bạn không đào tạo TPU, có lẽ tốt nhất là bạn nên gắn bó với PyTorch ngay bây giờ.
Cho dù bạn chọn framework nào, bạn nên theo dõi JAX vào năm 2022, đặc biệt là khi cộng đồng của nó phát triển và nhiều ấn phẩm bắt đầu sử dụng nó.
Điểm mấu chốt: nếu bạn là nhà nghiên cứu và cần chọn một framework, hãy chọn PyTorch
Nếu bạn là Giáo sư
Nếu bạn là giáo sư, thì việc sử dụng framework nào cho khóa học Deep Learning phụ thuộc vào mục tiêu của khóa học. Nếu trọng tâm của khóa học của bạn là đào tạo ra các kỹ sư Deep Learning sẵn sàng trong ngành, những người có thể thành công với năng lực trong toàn bộ quy trình end-to-end Deep Learning, không chỉ lý thuyết Deep Learning, thì bạn nên sử dụng TensorFlow. Trong trường hợp này, việc tiếp xúc với hệ sinh thái TensorFlow và các công cụ của nó cùng với các dự án thực hành đầu cuối sẽ rất hữu ích và có giá trị.
Nếu trọng tâm của khóa học của bạn là về lý thuyết Deep Learning và hiểu được cơ bản của các mô hình Deep Learning, thì bạn nên sử dụng PyTorch. Điều này đặc biệt đúng nếu bạn đang giảng dạy một khóa học cấp cao ở bậc đại học hoặc một khóa học cấp độ sau đại học ban đầu nhằm chuẩn bị cho sinh viên thực hiện nghiên cứu Deep Learning.
Tốt nhất, sinh viên nên tiếp xúc với từng framework và dành một chút thời gian để hiểu sự khác biệt giữa chúng có lẽ rất có giá trị mặc dù hạn chế về thời gian của một học kỳ. Nếu khóa học là một phần của chương trình lớn hơn về Học máy với nhiều lớp học dành riêng cho các chủ đề khác nhau, thì tốt hơn là bạn nên tuân theo framework phù hợp nhất cho tài liệu khóa học hơn là cố gắng tiếp xúc với cả hai.
Nếu bạn đang tìm kiếm một sự thay đổi nghề nghiệp
Nếu bạn đang muốn thay đổi sự nghiệp, PyTorch hoặc TensorFlow là một lựa chọn tốt. Điều quan trọng nhất bạn có thể làm trong trường hợp này là chứng minh rằng bạn có thể mang lại giá trị ngay từ đầu, vì vậy việc có một danh mục các dự án là rất quan trọng. Vượt ra khỏi giới hạn bằng cách áp dụng Deep Learning vào các trường hợp sử dụng sáng tạo hoặc thể hiện rằng bạn đã sẵn sàng trong ngành bằng cách thực hiện một dự án từ đầu đến cuối, sẽ giúp bạn định vị rất tốt.
Do đó, hãy sử dụng bất kỳ framework nào bạn có thể làm việc dễ dàng hơn. Sử dụng framework trực quan hơn với bạn sẽ cho phép bạn xây dựng portfolio của mình một cách hiệu quả, điều này quan trọng hơn rất nhiều so với việc quen thuộc với API của một framework cụ thể. Nếu bạn hoàn toàn không có kiến thức về framework, hãy sử dụng TensorFlow vì nó là framework ưa thích trong các lĩnh vực thực tế. Hãy xem lượng tin tuyển dụng từ các trang web nghề nghiệp khác nhau cho từng framework trong biểu đồ bên dưới và về cơ bản, TensorFlow đánh bại PyTorch.
Điểm then chốt: Nếu bạn có lý do cụ thể để sử dụng PyTorch, chẳng hạn như có mục tiêu làm việc cho OpenAI hoặc TensorFlow có quá khó khăn đối với bạn, thì hãy thoải mái sử dụng nó; nhưng khuyến nghị là tập trung vào TensorFlow.
Nếu bạn là có sở thích quan tâm đến học sâu
Nếu bạn là một người có sở thích quan tâm đến Deep Learning, bạn sử dụng framework nào sẽ tùy thuộc vào mục tiêu của bạn. Nếu bạn đang triển khai mô hình Deep Learning như một phần của một số dự án lớn hơn, thì TensorFlow có thể là thứ bạn muốn sử dụng, đặc biệt nếu bạn đang triển khai cho một thiết bị nhúng / IoT. Mặc dù bạn có thể sử dụng PyTorch cho các ứng dụng di động với việc phát hành PyTorch Live, nhưng TensorFlow + TFLite vẫn là phương pháp được ưa thích cho đến thời điểm hiện tại.
Nếu mục tiêu của bạn là tìm hiểu về Deep Learning vì lợi ích riêng của nó, thì framework nào là tốt nhất trong trường hợp này phụ thuộc vào nền tảng của bạn. Nói chung, PyTorch có lẽ là lựa chọn tốt hơn ở đây, đặc biệt nếu bạn đã quen làm việc bằng Python. Nếu bạn là người mới bắt đầu hoàn toàn mới bắt đầu tìm hiểu về Deep Learning, hãy xem phần tiếp theo.
Nếu bạn là một người mới bắt đầu
Nếu bạn là người mới bắt đầu quan tâm đến Deep Learning, bạn nên sử dụng Keras. Sử dụng các thành phần cấp cao của nó, bạn có thể dễ dàng bắt đầu hiểu những kiến thức cơ bản về Deep Learning. Một khi bạn đã chuẩn bị để bắt đầu hiểu kỹ hơn những điều cơ bản của Học sâu, bạn có một số lựa chọn:
Nếu bạn không muốn cài đặt một framework mới và lo lắng về việc năng lực của bạn sẽ chuyển sang một API mới tốt như thế nào, thì bạn có thể thử “thả xuống” từ Keras sang TensorFlow. Tùy thuộc vào nền tảng của bạn, TensorFlow có thể gây nhầm lẫn, trong trường hợp đó, hãy thử chuyển sang PyTorch.
Nếu bạn muốn một framework giống Python, thì chuyển sang PyTorch có thể là bước đi tốt nhất của bạn. Trong trường hợp này, hãy lưu ý rằng bạn sẽ phải cài đặt một framework mới và có khả năng viết lại các tập lệnh tùy chỉnh. Hơn nữa, nếu PyTorch có vẻ hơi cồng kềnh với bạn, bạn có thể chia nhỏ mã của mình và loại bỏ một số bản soạn sẵn bằng cách sử dụng PyTorch Lightning.
Kết luận
Như bạn có thể thấy, cuộc tranh luận PyTorch và TensorFlow là một cuộc tranh luận mang nhiều sắc thái có bối cảnh liên tục thay đổi và thông tin lỗi thời khiến việc tìm hiểu bối cảnh này càng trở nên khó khăn hơn. Vào năm 2022, cả PyTorch và TensorFlow đều là những framework rất hoàn chỉnh và các tính năng Deep Learning cốt lõi của chúng trùng lặp đáng kể. Ngày nay, những cân nhắc thực tế của mỗi framework, như tính khả dụng của mô hình, thời gian triển khai và các hệ sinh thái liên quan, đã thay thế sự khác biệt về kỹ thuật của chúng.
Bạn sẽ không mắc sai lầm khi chọn một trong hai khung, vì cả hai đều có tài liệu tốt, nhiều tài nguyên học tập và cộng đồng tích cực. Mặc dù PyTorch đã trở thành framework nghiên cứu trên thực tế sau khi được cộng đồng nghiên cứu chấp nhận bùng nổ và TensorFlow vẫn là khuôn khổ kế thừa của ngành, nhưng chắc chắn có những trường hợp sử dụng khác nhau cho từng lĩnh vực.
Bài viết gốc của Ryan O’Connor đăng trên AssemblyAi.