EZKL: Các giải pháp và chiến lược cụ thể để tăng tốc phần cứng ZKML

avatar
MarsBit
12-04
Bài viết này được dịch máy
Xem bản gốc

Bài viết này được viết với sự cộng tác của đội ngũ Ingonyama . Đặc biệt cảm ơn @jeremyfelderđã biến điều này thành hiện thực .

ZKML tăng tốc phần cứng

Gần đây chúng tôi đã tích hợp thư viện tăng tốc GPU Icicle mã nguồn mở đội ngũ Ingonyama xây dựng. Điều này cho phép các nhà phát triển tận dụng khả năng tăng tốc phần cứng thông qua cấu hình hoàn cảnh đơn giản.

Tích hợp này là một cải tiến mang tính chiến lược cho công cụ EZKL và giải quyết nút thắt tính toán vốn có trong các hệ thống chứng minh ZK hiện tại. Nó đặc biệt hữu ích cho các mạch lớn, chẳng hạn như các mạch được tạo cho các mô hình học máy.

Chúng tôi quan sát thấy rằng thời gian MSM của mạch tổng hợp giảm 98% so với lần chạy CPU cơ bản và tổng thời gian kiểm chứng tổng hợp giảm 35% so với thời gian kiểm chứng CPU cơ bản.

Đây là bước đầu tiên hướng tới tích hợp phần cứng đầy đủ. Cùng với đội ngũ Ingonyama, chúng tôi tiếp tục nỗ lực hỗ trợ đầy đủ cho hoạt động của GPU. Ngoài ra, chúng tôi đang nỗ lực tích hợp với các nhà cung cấp phần cứng khác - lý tưởng nhất là thể hiện các tiêu chuẩn hữu hình cho lĩnh vực rộng hơn.

Chúng tôi cung cấp bối cảnh và thông số kỹ thuật dưới đây. Hoặc bạn có thể vào thẳng thư viện tại đây luôn.

Không có nút thắt kiến ​​​​thức

Để trích dẫn Đánh giá phần cứng: GPU, FPGA và Bằng chứng không tri thức, có hai thành phần đối với một ứng dụng không có kiến ​​thức:

1. DSL và thư viện cấp thấp: Chúng rất cần thiết để thể hiện các phép tính theo cách thân thiện với ZK. Ví dụ bao gồm Circom, Halo2, Noir và các thư viện cấp thấp như Arkworks. Những công cụ này chuyển đổi chương trình thành các hệ thống ràng buộc (hoặc đọc thêm tại đây ), trong đó các phép toán như cộng và nhân được biểu diễn dưới dạng các ràng buộc riêng lẻ. Hoạt động bit phức tạp hơn và yêu cầu nhiều ràng buộc hơn.

2. Hệ thống chứng minh: Chúng đóng một vai trò quan trọng trong việc tạo ra và xác minh bằng chứng. Hệ thống xác minh xử lý các đầu vào như mạch, nhân chứng và thông số. Các hệ thống có mục đích chung bao gồm Groth16 và PLONK, trong khi các hệ thống chuyên dụng như EZKL phục vụ cho các đầu vào cụ thể như mô hình học máy.

Trong các hệ thống ZK được triển khai rộng rãi nhất, các điểm nghẽn chính là:

• Phép nhân đa vô hướng (MSM): Phép nhân vectơ quy mô lớn, tiêu tốn lượng lớn thời gian và bộ nhớ ngay cả khi song song.

• Biến đổi Fourier nhanh (FFT): Một thuật toán yêu cầu chuyển đổi dữ liệu thường xuyên, gây khó khăn cho việc tăng tốc, đặc biệt là trên cơ sở hạ tầng phân tán.

Vai trò của phần cứng

Khả năng tăng tốc phần cứng, chẳng hạn như GPU và FPGA, mang lại những lợi thế đáng kể so với việc tối ưu hóa phần mềm bằng cách tăng cường tính song song và tối ưu hóa khả năng truy cập bộ nhớ:

• GPU: Cung cấp khả năng phát triển nhanh chóng và khả năng song song lớn nhưng tiêu tốn nhiều năng lượng.

• FPGA: Cung cấp độ trễ thấp hơn, đặc biệt đối với các luồng dữ liệu lớn và tiết kiệm năng lượng hơn nhưng có chu trình phát triển phức tạp.

Để thảo luận sâu hơn về thiết kế và hiệu suất phần cứng tối ưu, hãy xem tại đây . Lĩnh vực này đang phát triển nhanh chóng và nhiều phương pháp vẫn còn cạnh tranh.

Tăng tốc GPU cho Halo2

Trong hệ thống xác minh Halo2 , tình trạng tắc nghẽn có thể khác nhau tùy thuộc vào mạch cụ thể được xác minh. Những điểm nghẽn này chủ yếu rơi vào hai loại:

1. Tắc nghẽn cam kết (MSM): Đây chủ yếu là các tắc nghẽn tính toán và thường có thể song song hóa. Trong các mạch có MSM là nút cổ chai, chúng tôi quan sát thấy một mức độ tổng quát nhất định. Điều này có nghĩa là việc áp dụng các giải pháp tăng tốc GPU có thể giải quyết hiệu quả những tắc nghẽn này với những sửa đổi tối thiểu đối với cơ sở mã hiện có.

2. Các tắc nghẽn đánh giá ràng buộc (đặc biệt là trong h-poly): Những tắc nghẽn này phức tạp hơn vì chúng có thể tiêu tốn nhiều về mặt tính toán hoặc bộ nhớ. Họ phụ thuộc rất nhiều vào các chi tiết của mạch điện. Giải quyết những vấn đề này đòi hỏi phải thiết kế lại thuật toán đánh giá cho phù hợp. Trọng tâm ở đây là tối ưu hóa sự cân bằng giữa việc sử dụng bộ nhớ và tính toán, đồng thời quyết định nên lưu trữ các kết quả trung gian hay tính toán lại chúng.

CPU

Một ví dụ điển hình là mạch tổng hợp KZG. Trong các mạch như vậy, thách thức chính nằm ở việc tích lũy các phần tử của nhóm đường cong elip. Các ràng buộc trong những trường hợp này tương đối đồng nhất và ở mức độ thấp (ví dụ: một công thức cộng không đầy đủ với các ràng buộc cấp 4, theo tài liệu Halo2 ).

Do đó, phần lớn sự phức tạp đến từ từ cam kết (MSM), một vấn đề tính toán có thể được giải quyết một cách hiệu quả bằng khả năng tăng tốc GPU.

Đối với phạm vi tích hợp này, chúng tôi đã chọn tập trung vào các điểm nghẽn trong cam kết. Đây là kết quả dễ thực hiện và tối ưu hóa thành phần cốt lõi của động cơ (tập hợp KZG). Đây chỉ là bước đầu tiên, vẫn còn nhiều việc phải làm.

Icicle: GPU hỗ trợ CUDA

Đội ngũ của Ingonyama đã phát triển Icicle như một thư viện mã nguồn mở để tăng tốc thiết kế cho ZK bằng cách sử dụng GPU hỗ trợ CUDA. CUDA, Kiến trúc thiết bị hợp nhất điện toán, là một nền tảng điện toán song song và mô hình API được tạo bởi NVIDIA. Nó cho phép phần mềm tận dụng GPU NVIDIA để xử lý cho mục đích chung. Mục tiêu chính của Icicle là chuyển các phần quan trọng của mã chương trình thử nghiệm sang GPU và tận dụng khả năng xử lý song song.

Icicle lưu trữ các API trong Rust và Golang, giúp đơn giản hóa tích hợp. Thiết kế cũng có thể tùy chỉnh với các chi tiết cụ thể sau:

• API cấp cao: dành cho nhiệm vụ thông thường như gửi, đánh giá và nội suy đa thức.

• API cấp thấp: dành cho các phép toán cụ thể, chẳng hạn như phép nhân đa vô hướng (MSM), phép biến đổi lý thuyết số (NTT) và phép biến đổi lý thuyết số nghịch đảo (INTT).

• Nhân GPU: để thực hiện tối ưu nhiệm vụ cụ thể trên GPU.

Điều đáng chú ý là Icicle hỗ trợ các chức năng cơ bản như:

• Số học trường/nhóm được vector hóa: Xử lý hiệu quả các phép toán trên các trường và nhóm.

• Số học đa thức: chìa khóa của nhiều thuật toán ZK.

• Hàm băm: quan trọng đối với các ứng dụng crypto.

• Các cấu trúc phức tạp: chẳng hạn như phép biến đổi lý thuyết số đường cong elip nghịch đảo (I/ECNTT), cây MSM và cây Merkle theo lô.

Tích hợp với EZKL

Thư viện Icicle đã được tích hợp liền mạch với công cụ EZKL, cung cấp khả năng tăng tốc GPU cho người dùng có quyền truy cập trực tiếp vào GPU NVIDIA hoặc chỉ cần truy cập vào Colab. Tích hợp này nâng cao hiệu suất của công cụ EZKL bằng cách tận dụng khả năng xử lý song song của GPU. Dưới đây là cách kích hoạt và quản lý tính năng này:

• Kích hoạt khả năng tăng tốc GPU: Để kích hoạt khả năng tăng tốc GPU, hãy xây dựng hệ thống bằng tính năng Icicle và đặt các biến hoàn cảnh như sau:

xuất ENABLE_ICICLE_GPU=true

• Hoàn nguyên về CPU: Để chuyển về xử lý CPU, chỉ cần bỏ đặt biến hoàn cảnh ENABLE_ICICLE_GPU thay vì đặt thành sai:

bỏ đặt ENABLE_ICICLE_GPU

• Tùy chỉnh ngưỡng cho các mạch nhỏ: Nếu bạn muốn sửa đổi các ngưỡng tạo nên một mạch nhỏ, bạn có thể đặt biến hoàn cảnh ICICLE_SMALL_K thành giá trị mong muốn. Điều này cho phép kiểm soát tốt hơn khi sử dụng khả năng tăng tốc GPU.

CPU

Tổng quan về tích hợp ICICLE hiện tại. Tích hợp này nhắm đến các tắc nghẽn tính toán do MSM, với những tác động đáng kể được thấy trong các mạch tổng hợp KZG.

Chức năng chính

Tích hợp này cung cấp một số hỗ trợ kỹ thuật.

Quan trọng nhất, tích hợp hỗ trợ các hoạt động MSM plug-and-play trong GPU bằng thư viện Icicle. Với tư cách là hoàn cảnh mục tiêu và thử nghiệm, chúng tôi tập trung vào việc thay thế các lời hứa KZG dựa trên CPU trong lệnh tổng hợp EZKL. Đây là nơi nhiều bằng chứng được kết hợp thành một. Cụ thể hơn, KZG cam kết các hoạt động commit và commit_lagrange (được thực hiện trên CPU) so với MSM trên các đường cong elip BN254 (được thực hiện trên GPU).

Chúng tôi cũng kích hoạt các biến hoàn cảnh và chức năng thùng để cho phép các nhà phát triển chuyển đổi CPU và GPU giữa các mạch khác nhau của cùng một EZKL nhị phân/bản dựng. Để tối ưu hóa chuyển đổi GPU, khả năng tăng tốc GPU chỉ được bật theo mặc định cho các mạch có k lớn (k > 8).

Kết quả điểm chuẩn

Kết quả điểm chuẩn của chúng tôi cho thấy rằng tích hợp thư viện Icicle vào công cụ EZKL sẽ dẫn đến những cải thiện hiệu suất đáng kể:

• Giảm đáng kể thời gian MSM: Chúng tôi nhận thấy thời gian nhân đa vô hướng (MSM) giảm khoảng 98% so với lần chạy CPU cơ bản của mạch tổng hợp. Điều này chứng tỏ việc giảm tải hiệu quả nhiệm vụ tính toán cho GPU.

• Hoạt động MSM nhanh hơn đáng kể: ICICLE thực hiện các hoạt động MSM trung bình nhanh hơn 50 lần so với cấu hình CPU cơ bản. Việc tăng tốc này nhất quán trên hầu hết các MSM trong lệnh tổng hợp.

• Giảm tổng thể thời gian kiểm chứng: Tổng thời gian cần thiết để tạo ra các bằng chứng tổng hợp giảm khoảng 35% so với thời gian kiểm chứng cơ bản của CPU. Điều này phản ánh sự nâng cao hiệu suất tổng thể đáng kể trong quá trình tạo bằng chứng.

Những kết quả này nêu bật tính hiệu quả của khả năng tăng tốc GPU trong việc tối ưu hóa hệ thống chứng minh ZK, đặc biệt là trên các khía cạnh tính toán như hoạt động MSM. Để xác minh, bạn có thể xem thử nghiệm tích hợp liên tục của chúng tôi tại đây .

hướng phát triển trong tương lai

Trong tương lai, chúng tôi có kế hoạch tối ưu hóa và mở rộng khả năng tích hợp với Icicle của EZKL:

• Mở rộng hoạt động của GPU: Một lĩnh vực trọng tâm là thay thế nhiều hoạt động CPU hơn bằng GPU. Điều này bao gồm các hoạt động liên quan đến các phép biến đổi lý thuyết số (NTT), hiện dựa trên CPU. Bằng cách giảm tải các hoạt động này cho GPU, chúng tôi hy vọng sẽ đạt được hiệu quả và tốc độ cao hơn.

• Giới thiệu các hoạt động theo lô: Một sự phát triển quan trọng khác là việc bổ sung các hoạt động theo lô. Cải tiến này được thiết kế đặc biệt để cho phép sử dụng GPU hiệu quả ngay cả trong các mạch nhỏ hơn và rộng hơn. Bằng cách đó, chúng tôi mong muốn mở rộng lợi ích của việc tăng tốc GPU đến nhiều loại và kích cỡ mạch hơn, đảm bảo hiệu suất tối ưu trong mọi tình huống.

Nhìn rộng hơn, chúng tôi mong muốn được tích hợp với các hệ thống phần cứng khác. Điều này sẽ cung cấp tính năng đo điểm chuẩn chức năng và tính linh hoạt của nhà phát triển cho nhiều lĩnh vực hơn.

Thông qua những phát triển trong tương lai này, chúng tôi mong muốn tiếp tục nâng cao ranh giới hiệu suất của các hệ thống chứng minh ZK, làm cho chúng hiệu quả hơn và phù hợp hơn với nhiều ứng dụng hơn.

ruột thừa

Cân nhắc tích hợp trong tương lai

Đối với những người đóng góp và nhà phát triển, chúng tôi đã thử nghiệm tích hợp này bằng cách sử dụng hướng dẫn lệnh tổng hợp trên một phiên bản tùy chỉnh có bốn chứng thực. Một số lưu ý về tích hợp trong tương lai

• Hoàn cảnh điểm chuẩn: Chạy thử nghiệm c bằng cách sử dụng phiên bản AWS c6a.8xlarge với CPU điểm chuẩn của AMD Epyc 7R13.

• Hướng dẫn lệnh tổng hợp: Đã xác minh hiệu suất của tích hợp bằng cách sử dụng hướng dẫn lệnh tổng hợp, bao gồm một phiên bản thử nghiệm với 4 so sánh cơ sở để chứng minh điều đó.

• Thử nghiệm ban đầu trên một phiên bản MSM duy nhất: Ban đầu, thử nghiệm tập trung vào một phiên bản MSM duy nhất trong thùng EZKL/halo2 để xác minh chức năng.

• Các vấn đề với bối cảnh GPU trong các bằng chứng hoàn chỉnh: Khi mở rộng sang các bằng chứng hoàn chỉnh, người ta nhận thấy bối cảnh GPU bị mất sau một thao tác. Giải pháp đạt được bằng cách tạo một tham chiếu tĩnh để duy trì bối cảnh GPU trong suốt lệnh chứng minh.

• Tập trung vào các mạch/lệnh tổng hợp: Tích hợp này chủ yếu tập trung vào các mạch/lệnh tổng hợp, được đặc trưng bởi K lớn (số lượng ràng buộc) và một số ít cột tư vấn.

• Tác động đến lệnh Proof: Các sửa đổi trong mã cũng sẽ ảnh hưởng đến lệnh Proof. Cần phải đảm bảo rằng hiệu suất của các bằng chứng riêng lẻ được duy trì hoặc cải thiện với những thay đổi này.

• Thay đổi hiệu suất dựa trên kích thước và chiều rộng mạch: Đối với cả mạch lớn và hẹp, việc cải tiến GPU mang lại kết quả tích cực. Tuy nhiên, đối với các mạch nhỏ hơn (K<8) và rộng hơn, việc tăng cường GPU sẽ dẫn đến giảm hiệu suất.

• Những cải tiến trong tương lai về tối ưu hóa chung: Các kế hoạch sẽ tăng cường tích hợp GPU cho tất cả các loại mạch, đặc biệt tập trung vào các hoạt động hàng loạt để đạt được hiệu suất tối ưu trên nhiều kích cỡ mạch khác nhau.

Nguồn
Tuyên bố từ chối trách nhiệm: Nội dung trên chỉ là ý kiến của tác giả, không đại diện cho bất kỳ lập trường nào của Followin, không nhằm mục đích và sẽ không được hiểu hay hiểu là lời khuyên đầu tư từ Followin.
Thích
Thêm vào Yêu thích
Bình luận