6

Song song hóa toán tử và tối ưu biên dịch

AI999第4课:现代计算底座与张量化并行演化
00:00

Trong EvoX — nền tảng tính toán hiện đại — đơn vị thực thi nhỏ nhất của toán tử tiến hóa không còn là “cá thể” nữa, mà là toàn bộtensor quần thể: các toán tử đột biến, lai ghép, chọn lọc chỉ cần một lần gọi là có thể bao phủ toàn bộ cá thể; trên cơ sở đó,biên dịch đồ thị tính toánsắp xếp chuỗi toán tử thành một kế hoạch thực thi có thể tối ưu hóa, nâng cao hiệu quả thực thi trong khi vẫn giữ nguyên ngữ nghĩa thuật toán.

Song song hóa toán tử và tối ưu biên dịchTiến hóa theo lô với đơn vị là tensor · Biên dịch đồ thị tính toán để tối ưu kế hoạch thực thitensor quần thể[N, D] · Toàn bộ cá thểChiều cá thể đóng vai trò chiều lôMột lần gọi bao phủ toàn bộ cá thểMột lần gọiBao phủ toàn quần thểĐồ thị tính toán toán tử tiến hóaĐột biếnLai ghépChọn lọcQuan hệ phụ thuộc toán tử → Đồ thị tính toánTối ưu hóa toàn cục trên toàn bộ đồ thịThay vì gọi từng toán tử với các triển khai có sẵnBiên dịchTrước biên dịchVòng lặp từng cá thể · Số lần khởi chạy kernel nhiềuSố lần khởi chạy kernel nhiều, chiều lô chỉ bằng 1Hợp nhất toán tử · Sinh kernel · Tái sử dụng bộ nhớ · Tối ưu lập lịchSau biên dịchĐồ thị tính toán hợp nhất · Ít kernel hiệu quả caoMột lượt lan truyền xuôi theo lô hoàn tất cả thế hệ tiến hóaTính thế nào · Cách thực thiSố lượng kernelTensor trung gianChiến lược bộ nhớ và lập lịchTối ưu hóa chỉ tác động ở tầng thực thi, không thay đổi quy tắc cập nhật toán tửTính cái gì · Ngữ nghĩa thuật toánĐột biếnLai ghépChọn lọcVới cùng hạt giống ngẫu nhiên, kết quả tiến hóa giữ nguyên không đổi≠

Song song hóa toán tử: Tiến hóa theo lô với đơn vị là tensor

  • Toán tử cấp tensor: đột biến, lai ghép, chọn lọc có thể tác động trực tiếp lên tensor quần thể có kích thước [N, D] (N là quy mô quần thể, D là số chiều biến quyết định), một lần gọi toán tử bao phủ toàn bộ N cá thể.
  • Loại bỏ vòng lặp từng cá thể: không cần viết for ind in population: ind = mutate(ind) — kiểu vòng lặp tuần tự Python/CPU như vậy nữa, từ đó giảm chi phí lập lịch hàm và gọi framework thường xuyên.
  • Đánh đổi chiều lô để lấy thông lượng: sau khi chiều cá thể đóng vai trò chiều lô, toán tử thực thi song song quy mô lớn trên thiết bị, thông lượng tiến hóa theo lô tăng theo quy mô quần thể.

Biên dịch đồ thị tính toán: Từ chuỗi toán tử đến kế hoạch thực thi

Sắp xếp quan hệ phụ thuộc toán tử “đột biến → lai ghép → chọn lọc” thành mộtđồ thị tính toán, trình biên dịch có thể tối ưu hóa toàn cục trên toàn bộ đồ thị, chứ không chỉ gọi từng toán tử với các triển khai có sẵn:

  • Hợp nhất toán tử: gộp nhiều phép toán theo từng phần tử (element-wise) thành một kernel duy nhất, giảm việc sinh ra tensor trung gian và đọc ghi lặp đi lặp lại.
  • Sinh kernel và lập lịch: sinh kernel hiệu quả cao cho đồ thị con đã hợp nhất, hoàn tất cả thế hệ tiến hóa với số lần khởi chạy kernel ít hơn.
  • Tái sử dụng bộ nhớ: quy hoạch trước vùng đệm cho kết quả trung gian, giảm chi phí phát sinh từ cấp phát bộ nhớ hiển thị và vận chuyển dữ liệu.

Hiệu quả thay đổi, ngữ nghĩa không đổi

Cần phân biệt“tính thế nào”và“tính cái gì”. Song song hóa toán tử và tối ưu biên dịch chỉ thay đổi cách thực thi — số lượng kernel, quy mô tensor trung gian, chiến lược bộ nhớ và lập lịch — mà không thay đổi ý nghĩa logic của bản thân các phép đột biến, lai ghép, chọn lọc. Tầng thuật toán vẫn kết hợp các toán tử theo ngữ nghĩa tiến hóa, do đó với cùng hạt giống ngẫu nhiên, quỹ đạo tiến hóa và kết quả trước và sau tối ưu hóa phải nhất quán. Tóm gọn trong một câu: tensor hóa giải quyết “tính theo lô có nhanh hay không”, biên dịch đồ thị tính toán giải quyết “lập lịch kernel có tối ưu hay không”, còn “tính cái gì” thì không đổi.

Hiểu nhầm thường gặp
Nhầm tưởng “tensor hóa” là “đã đổi sang một thuật toán tiến hóa khác”. Tensor hóa chỉ là áp dụng cùng một toán tử lên toàn bộ tensor quần thể, quy tắc cập nhật giữa các cá thể không thay đổi; tối ưu biên dịch cũng không làm cho thuật toán “thông minh hơn”. Điều thực sự cần cảnh giác là sau tối ưu hóa không chạy kiểm chứng hồi quy, nhầm lẫn sự khác biệt trong triển khai thành cải tiến thuật toán.