Nguyên tắc tối ưu hoá

Một mô hình chạy được hiếm khi đã hiệu quả. Phần II đã trình bày cách xây dựng các hệ thống ML tuân thủ các ràng buộc vật lý; Phần III bàn về cách đáp ứng các yêu cầu thực tế về thời gian, bộ nhớ và năng lượng. Mỗi tối ưu hoá là một quá trình đi dọc theo một ranh giới: cải thiện một chỉ số (độ chính xác, độ trễ, năng lượng) đồng thời phải quản lý chi phí lên các chỉ số khác. Mọi tối ưu hoá trong Phần III đều là đồng thiết kế giữa thuật toán và máy, bằng cách đánh đổi cấu trúc toán học để đổi lấy tính khả thi về mặt vật lý. Các nguyên tắc ở đây định nghĩa “vật lý của hiệu quả” — những quy luật giải thích tại sao một số mô hình nhanh và chi phí hợp lý, trong khi những mô hình khác lại chậm và đắt đỏ.

Principle 5: Ranh giới Pareto
Bất biến: Sau khi các hướng mục tiêu được chuẩn hoá, một điểm khả thi nằm trên ranh giới Pareto khi và chỉ khi không có điểm nào khác ít nhất cũng tốt bằng trên mọi mục tiêu và tốt hơn hẳn trên ít nhất một mục tiêu.

  • Lượng tử hoá đánh đổi độ chính xác số học để giảm dung lượng bộ nhớ.
  • Tỉa (pruning) đánh đổi năng lực của mô hình để có các biểu diễn nhỏ hơn và có thể cải thiện tốc độ khi độ thưa (sparsity) hoặc các cấu trúc bị loại bỏ được phần cứng mục tiêu hỗ trợ.
  • Chưng cất đánh đổi tài nguyên tính toán huấn luyện để đạt hiệu quả suy luận.

Hàm ý: Các kỹ sư hệ thống cần tìm kiếm trên ranh giới này để xác định điểm vận hành phù hợp với từng môi trường triển khai cụ thể. Không tồn tại một điểm tối ưu nào có thể áp dụng cho mọi trường hợp.

Để tìm kiếm trên ranh giới Pareto, chúng ta cần biết nguồn lực nào cần được tối ưu hoá. Trước khi chọn một kỹ thuật, các kỹ sư phải chẩn đoán xem khối lượng công việc (workload) đang bị giới hạn bởi khả năng tính toán, việc di chuyển dữ liệu bộ nhớ, hay độ trễ điều phối. Cường độ số học cung cấp phép thử đầu tiên.

Principle 6: Định luật cường độ số học
Bất biến: thông lượng (\(R\)) có thể đạt được không bao giờ lớn hơn giá trị nhỏ nhất của hiệu năng tính toán đỉnh (\(R_{\text{peak}}\)) và băng thông DRAM (\(\text{BW}\)) nhân với cường độ hoạt động tại ranh giới cache–DRAM (\(I\)) (Williams et al. 2009): \[ R \leq \min(R_{\text{peak}}, I \times \text{BW}) \]

Cường độ hoạt động và băng thông DRAM đều phải được đo tại ranh giới cache–DRAM; giới hạn lý tưởng này không tính đến các chi phí cố định như khởi chạy, đồng bộ hoá và các chi phí khác.

Hàm ý: Việc tăng hiệu năng tính toán đỉnh sẽ không làm tăng giới hạn roofline lý tưởng cho một kernel đang bị giới hạn bởi băng thông. Các kỹ sư phải xác định rõ nút thắt cổ chai là khả năng tính toán, băng thông, hay một yếu tố khác của hệ thống trước khi lựa chọn phương pháp tối ưu hoá.

Williams, Samuel, Andrew Waterman, and David Patterson. 2009. “Roofline: An Insightful Visual Performance Model for Multicore Architectures.” Communications of the ACM 52 (4): 65–76. https://doi.org/10.1145/1498765.1498785.
Wulf, Wm. A., and Sally A. McKee. 1995. “Hitting the Memory Wall: Implications of the Obvious.” ACM SIGARCH Computer Architecture News 23 (1): 20–24. https://doi.org/10.1145/216585.216588.
Gholami, Amir, Zhewei Yao, Sehoon Kim, Coleman Hooper, Michael W. Mahoney, and Kurt Keutzer. 2024. AI and Memory Wall.” IEEE Micro 44 (3): 33–39. https://doi.org/10.1109/mm.2024.3373763.

Nhiều kernel quan trọng trong ML nằm ở phía bị giới hạn bởi bộ nhớ (memory-bound), đặc biệt là các thao tác ít tái sử dụng dữ liệu như tra cứu embedding, chuẩn hóa, softmax, tích chập depthwise và các đường suy luận với batch nhỏ. Ngược lại, phép nhân ma trận dày đặc và tích chập có thể chuyển sang bị giới hạn bởi tính toán (compute-bound) khi batch lớn và phần cứng được tận dụng cao. Sự phân nhánh này bắt nguồn từ “bức tường bộ nhớ” (memory wall): tốc độ của bộ xử lý trong lịch sử tăng nhanh hơn băng thông bộ nhớ, và khoảng cách tích lũy đã nới rộng suốt hơn ba thập kỷ (Wulf and McKee 1995; Gholami et al. 2024). Mạng nơ-ron, với các tensor trọng số rất lớn và tính cục bộ theo thời gian không đồng đều, đặc biệt dễ bị ảnh hưởng. Định luật cường độ số học giúp chẩn đoán vị trí của một khối lượng công việc (workload) so với bức tường này. Chi phí di chuyển dữ liệu giải thích tại sao bức tường lại khắc nghiệt đến vậy. Table 1 liên kết mỗi loại nút thắt cổ chai với các tối ưu hóa tiêu biểu để xử lý chúng, và với những thay đổi không chạm tới thành phần chi phối.

Table 1: Chẩn đoán nút thắt cổ chai: Trước khi tối ưu hóa, hãy xác định vế nào của “luật sắt” đang chi phối. Tối ưu sai vế sẽ khiến nút thắt chính không đổi và thường không mang lại, hoặc chỉ mang lại rất ít, cải thiện đầu-cuối.
Nếu khối lượng công việc (workload) là… Thuật ngữ chi phối Tối ưu hóa có hiệu quả Tối ưu hóa bị lãng phí
Giới hạn bởi bộ nhớ \(D_{\text{vol}}/\text{BW}\) Lượng tử hoá, tỉa (pruning), batching Bộ tăng tốc nhanh hơn (nhiều FLOP/s hơn)
Giới hạn bởi tính toán \(O/(R_{\text{peak}} \cdot \eta_{\text{hw}})\) Kernels tốt hơn, Tensor Cores, bộ tăng tốc nhanh hơn Băng thông bộ nhớ nhiều hơn
Giới hạn bởi độ trễ \(L_{\text{lat}}\) Hợp nhất kernel, điều phối bất đồng bộ, microbatching giới hạn dưới SLO độ trễ Nhiều FLOP/s hoặc băng thông một mình

Hiệu năng chỉ là một mặt chi phí của việc di chuyển dữ liệu; năng lượng là một ràng buộc thứ hai.

Principle 7: Bất biến năng lượng–di chuyển
Bất biến: Tổng năng lượng của một khối lượng công việc (workload) phụ thuộc đồng thời vào năng lượng trên mỗi sự kiện và số lượng sự kiện. Trong tham chiếu công nghệ 45 nm được trích dẫn, việc di chuyển một giá trị 32-bit từ DRAM có thể tốn năng lượng trên mỗi sự kiện lớn hơn khoảng 100–1.000\(\times\) so với một phép toán dấu phẩy động 32-bit, tùy thuộc vào loại phép toán (Horowitz 2014). Ở đây, \(e_{\text{DRAM,32-bit}}\) là năng lượng của một lần truy cập DRAM 32-bit, và \(e_{\text{arithmetic,32-bit}}\) là năng lượng của một sự kiện số học dấu phẩy động 32-bit trong công nghệ 45 nm đã nêu. \[ e_{\text{DRAM,32-bit}} \gg e_{\text{arithmetic,32-bit}} \quad \text{for the cited reference} \]

Hệ quả: Khi di chuyển dữ liệu chiếm phần lớn năng lượng của khối lượng công việc (workload), các chiến lược tối ưu nên ưu tiên hợp nhất kernel (tránh lưu lượng dữ liệu ngoài chip trung gian) và lượng tử hoá (giảm kích thước dữ liệu); ngược lại, khi tính toán chiếm ưu thế, trọng tâm vẫn là giảm số lượng phép toán và cải thiện các kernel số học.

Horowitz, Mark. 2014. “1.1 Computing’s Energy Problem (and What We Can Do about It).” 2014 IEEE International Solid-State Circuits Conference Digest of Technical Papers (ISSCC), 10–14. https://doi.org/10.1109/isscc.2014.6757323.

Ngay cả khi tính cục bộ dữ liệu là hoàn hảo và bạn nhắm đúng nút thắt cổ chai, vẫn có một giới hạn cuối cùng đối với mức tăng tốc mà bất kỳ tối ưu hóa nào có thể mang lại.

Principle 8: Định luật Amdahl
Bất biến: Mức tăng tốc tối đa của một hệ thống bị giới hạn bởi phần khối lượng công việc (workload) không thể tăng tốc (Amdahl 1967). Ở đây, \(f_{\text{parallel}}\) là phần thời gian thực thi ban đầu được tăng tốc và \(S_{\text{parallel}}\) là mức tăng tốc của phần đó; mô hình công việc cố định giả định phần còn lại không thay đổi và việc tăng tốc không phát sinh thêm chi phí. \[ \text{Speedup} = \frac{1}{(1-f_{\text{parallel}}) + \frac{f_{\text{parallel}}}{S_{\text{parallel}}}} \]

Hàm ý: Nếu 95 phần trăm của một mô hình chạy nhanh hơn 100\(\times\) trên một GPU, mức tăng tốc tổng thể của hệ thống bị giới hạn ở mức khoảng 16.8\(\times\). Điều này giải thích tại sao tải dữ liệutiền xử lý thường trở thành nút thắt cổ chai cuối cùng trong các hệ thống được tối ưu hóa cao.

Amdahl, Gene M. 1967. “Validity of the Single Processor Approach to Achieving Large Scale Computing Capabilities.” Proceedings of the April 18-20, 1967, Spring Joint Computer Conference on - AFIPS ’67 (Spring), AFIPS ’67 (spring), 483–85. https://doi.org/10.1145/1465482.1465560.

Phần III áp dụng có hệ thống các nguyên tắc này thông qua phân loại D·A·M—Dữ liệu, Thuật toán, Máy—bắt đầu bằng việc đặt câu hỏi liệu công việc có cần thiết không, sau đó liệu nó có thể được đơn giản hóa không, và cuối cùng là làm thế nào để thực hiện nhanh hơn (xem Khung phân loại D·A·M để biết full diagnostic framework). Benchmarking khép vòng bằng cách kiểm tra xem những tiết kiệm lý thuyết đó có giữ được trong thực thi end-to-end mà không vi phạm các ràng buộc chất lượng hay không.

Back to top