Pytorch 2.6

PyTorch 2.6, được phát hành vào ngày 29 tháng 1 năm 2025, mang đến nhiều cải tiến và tính năng mới so với các phiên bản trước đó. Dưới đây là tổng quan về những điểm nổi bật trong phiên bản này:

1. Hỗ trợ torch.compile cho Python 3.13

Trước đây, torch.compile chỉ hỗ trợ đến phiên bản Python 3.12. Trong phiên bản 2.6, PyTorch đã mở rộng hỗ trợ cho Python 3.13, cho phép người dùng tối ưu hóa mô hình với torch.compile trên phiên bản Python mới nhất.

Đánh giá: Việc mở rộng này giúp cộng đồng người dùng Python cập nhật và sử dụng các tính năng mới nhất của ngôn ngữ mà không gặp trở ngại về tương thích với PyTorch.

2. Giới thiệu torch.compiler.set_stance

Tính năng này cho phép người dùng chỉ định các hành vi khác nhau (“stances”) mà torch.compile có thể thực hiện giữa các lần gọi hàm đã biên dịch. Một trong những stance, chẳng hạn như “eager_on_recompile”, hướng dẫn PyTorch thực thi eagerly khi cần biên dịch lại, tái sử dụng mã đã biên dịch được lưu trong bộ nhớ cache khi có thể.

Đánh giá: Tính năng này cung cấp sự linh hoạt cho người dùng trong việc kiểm soát quá trình biên dịch, giúp tối ưu hóa hiệu suất và quản lý tài nguyên hiệu quả hơn.

3. Tăng cường AOTInductor

Phiên bản 2.6 giới thiệu một định dạng gói mới, “PT2 archive”, chứa tất cả các tệp cần thiết cho AOTInductor, cho phép người dùng gửi mọi thứ cần thiết đến các môi trường khác. Ngoài ra, còn có chức năng đóng gói nhiều mô hình vào một artifact và lưu trữ thêm metadata bên trong gói.

Đánh giá: Những cải tiến này giúp việc triển khai và phân phối mô hình trở nên dễ dàng và linh hoạt hơn, đặc biệt hữu ích trong các môi trường sản xuất và khi làm việc với nhiều mô hình.

4. Hỗ trợ FP16 trên CPU X86

Một điểm nổi bật khác của phiên bản này là hỗ trợ FP16 trên CPU X86, mở rộng khả năng tính toán số học dấu phẩy động 16-bit trên các CPU phổ biến.

Đánh giá: Điều này có thể cải thiện hiệu suất cho các mô hình yêu cầu tính toán dấu phẩy động 16-bit, đặc biệt hữu ích cho các ứng dụng yêu cầu hiệu suất cao trên phần cứng CPU.

5. Cải thiện trải nghiệm người dùng PyTorch trên GPU Intel

Phiên bản 2.6 mang lại trải nghiệm người dùng được cải thiện trên GPU Intel, đặc biệt trên Windows. Điều này bao gồm thiết lập phần mềm dễ dàng hơn, các binary Windows được cải thiện và mở rộng phạm vi của các toán tử Aten trên GPU Intel với các kernel SYCL.

Đánh giá: Những cải tiến này làm cho PyTorch trở nên thân thiện hơn với người dùng sử dụng GPU Intel, mở rộng phạm vi phần cứng được hỗ trợ và cải thiện hiệu suất trên các thiết bị này.

6. Giới thiệu torch.library.triton_op

torch.library.triton_op cung cấp một cách tiêu chuẩn để tạo các toán tử tùy chỉnh được hỗ trợ bởi các kernel triton do người dùng định nghĩa. Khi người dùng chuyển các kernel triton do họ định nghĩa thành các toán tử tùy chỉnh, torch.library.triton_op cho phép torch.compile xem xét vào việc triển khai, cho phép torch.compile tối ưu hóa kernel triton bên trong nó.

Đánh giá: Tính năng này mở ra khả năng mở rộng và tùy chỉnh cao hơn cho người dùng, cho phép họ tích hợp các kernel triton tùy chỉnh một cách liền mạch và tối ưu hóa chúng trong quá trình biên dịch.

7. FlexAttention cho LLMs trên CPU X86

PyTorch 2.6 giới thiệu FlexAttention, một cải tiến đáng kể cho việc xử lý mô hình ngôn ngữ lớn (LLMs) trên CPU X86. FlexAttention giúp tối ưu hóa việc tính toán attention, giảm độ trễ và tăng tốc độ suy luận cho các mô hình Transformer trên phần cứng CPU. Điều này đặc biệt quan trọng đối với những hệ thống không có GPU mạnh hoặc cần chạy mô hình trên các môi trường tiết kiệm chi phí.

Cụ thể, FlexAttention tận dụng các tối ưu hóa về phần cứng trên kiến trúc X86, giúp cải thiện việc quản lý bộ nhớ đệm (cache) và tăng hiệu quả xử lý ma trận trong cơ chế attention. Những cải tiến này giúp giảm đáng kể thời gian suy luận của các mô hình ngôn ngữ lớn như GPT, LLaMA khi chạy trên CPU.

Đánh giá: Việc hỗ trợ FlexAttention trên CPU X86 là một bước tiến quan trọng, giúp mở rộng khả năng chạy mô hình ngôn ngữ lớn mà không cần phụ thuộc vào GPU. Điều này mang lại lợi ích lớn cho các doanh nghiệp và nhà nghiên cứu muốn triển khai AI trong môi trường hạn chế tài nguyên. Tuy nhiên, để đạt hiệu suất tối ưu, người dùng vẫn cần tinh chỉnh các tham số mô hình phù hợp với phần cứng cụ thể của mình.

8. Dim.AUTO

PyTorch 2.6 giới thiệu Dim.AUTO, một tính năng mới giúp người dùng viết mã linh hoạt hơn khi làm việc với tensor có kích thước động. Thay vì phải chỉ định rõ kích thước của một chiều (dimension) trong một số trường hợp nhất định, Dim.AUTO cho phép PyTorch tự động xác định kích thước phù hợp dựa trên ngữ cảnh.

Đánh giá: Đây là một cải tiến nhỏ nhưng hữu ích, giúp đơn giản hóa mã nguồn và giảm thiểu lỗi do việc xử lý kích thước tensor phức tạp, đặc biệt trong các kiến trúc mạng sâu có cấu trúc động.


9. Thay đổi trong tham số weights_only của torch.load

Trước đây, torch.load có tham số weights_only=True, giúp người dùng chỉ tải trọng số của mô hình, bỏ qua các metadata khác. Tuy nhiên, trong PyTorch 2.6, giá trị mặc định của tham số này được thay đổi để tránh lỗi tiềm ẩn khi tải mô hình.

Đánh giá: Việc điều chỉnh giá trị mặc định giúp đảm bảo tính nhất quán khi tải mô hình, tránh các trường hợp mất metadata quan trọng. Tuy nhiên, điều này có thể ảnh hưởng đến một số pipeline đã sử dụng weights_only=True trong các phiên bản trước.


10. Ngừng hỗ trợ kênh Anaconda chính thức của PyTorch

PyTorch 2.6 chính thức thông báo ngừng cung cấp gói cài đặt thông qua kênh Anaconda chính thức. Thay vào đó, người dùng được khuyến nghị sử dụng pip hoặc conda-forge để cài đặt PyTorch.

Đánh giá: Đây là một thay đổi quan trọng ảnh hưởng đến người dùng Anaconda, đặc biệt là những ai quen với việc cài đặt PyTorch từ kênh chính thức. Tuy nhiên, quyết định này giúp tập trung vào các phương thức cài đặt phổ biến hơn, đảm bảo tính nhất quán và cập nhật nhanh hơn.


Kết luận

PyTorch 2.6 mang lại nhiều cải tiến đáng chú ý, bao gồm hỗ trợ Python 3.13, cải thiện hiệu suất trên GPU Intel, hỗ trợ FP16 trên CPU X86, và giới thiệu các tính năng mới như Dim.AUTO, torch.compiler.set_stance, hay torch.library.triton_op. Những thay đổi này giúp PyTorch trở nên linh hoạt hơn, tối ưu hóa hiệu suất tốt hơn, và hỗ trợ mạnh mẽ hơn cho các mô hình AI/ML.

Dù có một số thay đổi có thể ảnh hưởng đến cách cài đặt và sử dụng PyTorch (như việc ngừng hỗ trợ Anaconda), hầu hết các cập nhật đều mang lại lợi ích lớn cho cộng đồng người dùng.


Tài liệu tham khảo

  1. PyTorch 2.6 Release Notes
  2. Phoronix: PyTorch 2.6 Features
  3. GitHub: PyTorch Release 2.6

Bài viết trên đã tổng hợp và phân tích các điểm mới trong PyTorch 2.6 so với các phiên bản trước, giúp bạn đọc hiểu rõ hơn về những thay đổi quan trọng. Nếu bạn có bất kỳ câu hỏi hoặc ý kiến nào, hãy để lại bình luận bên dưới!

Comments