Ngôn ngữ lập trình Mojo đã có bước tiến đáng kể khi bổ sung hỗ trợ GPU Apple Silicon trong các phiên bản nightly mới nhất. Sự phát triển này nhằm mục đích làm cho lập trình GPU trở nên dễ tiếp cận hơn bằng cách nhắm đến phần cứng đã có sẵn trong tay hàng triệu nhà phát triển - máy tính Mac hiện đại. Tuy nhiên, thông báo này đã gây ra cuộc tranh luận sôi nổi trong cộng đồng lập trình về việc liệu Mojo có thể vượt qua những rào cản đáng kể để được áp dụng rộng rãi hay không.
Làm cho lập trình GPU trở nên dân chủ hơn
Hỗ trợ GPU Apple Silicon mới của Mojo đại diện cho nỗ lực hạ thấp rào cản đối với lập trình GPU. Thay vì yêu cầu phần cứng NVIDIA đắt tiền để viết các kernel tùy chỉnh, các nhà phát triển giờ đây có thể thử nghiệm với tăng tốc GPU bằng cách sử dụng máy tính Mac hiện có của họ. Việc triển khai hoạt động với tất cả chip dòng M1-M4 chạy macOS 15 hoặc mới hơn, mặc dù nó yêu cầu các công cụ phát triển cụ thể bao gồm Xcode 16.
Phương pháp kỹ thuật bao gồm việc biên dịch mã Mojo thành bitcode Apple Intermediate Representation ( AIR ), sau đó được chuyển đổi sang định dạng tương thích Metal để thực thi. Quá trình này diễn ra ngầm thông qua MetalDeviceContext chuyên biệt quản lý toàn bộ pipeline từ biên dịch đến thực thi.
Ghi chú kỹ thuật: AIR ( Apple Intermediate Representation ) là định dạng mã cấp thấp của Apple được sử dụng cho lập trình GPU Metal , trong khi Metal là API đồ họa và tính toán của Apple tương tự như CUDA hoặc OpenCL .
Yêu cầu hệ thống cho hỗ trợ GPU Apple Silicon của Mojo:
- Mac Apple Silicon (chip dòng M1-M4)
- macOS 15 hoặc mới hơn
- Xcode 16 hoặc mới hơn
- Metal Shading Language 3.2 (phiên bản AIR bitcode 2.7.0)
Khả năng hiện tại hạn chế gây ra câu hỏi
Mặc dù hỗ trợ ban đầu đầy hứa hẹn, việc triển khai hiện tại có những hạn chế đáng kể. Các biểu đồ MAX cơ bản chưa hoạt động, có nghĩa là các mô hình AI không thể chạy trên GPU Apple Silicon . Nhiều tính năng nâng cao như atomic operations, một số intrinsics nhất định và khả năng tương tác PyTorch vẫn còn thiếu. Thậm chí các ví dụ đơn giản như reduction operations cũng chưa hoạt động.
Những hạn chế này đã khiến một số thành viên cộng đồng đặt câu hỏi về việc liệu nỗ lực này có giải quyết được nhu cầu thực sự của nhà phát triển hay không. Cuộc thảo luận tiết lộ sự chia rẽ cơ bản: trong khi một số người thấy tiềm năng trong việc làm cho lập trình GPU dễ tiếp cận hơn, những người khác lại cho rằng hầu hết các nhà phát triển dựa vào các thư viện hiện có được tối ưu hóa cao thay vì viết kernel tùy chỉnh.
Những hạn chế hiện tại:
- Không hỗ trợ intrinsics cho nhiều khả năng phần cứng
- Các ví dụ về reduction.mojo và phép nhân ma trận phức tạp không hoạt động
- Các GPU puzzles từ 16 trở lên yêu cầu các tính năng phần cứng nâng cao hơn
- Không hỗ trợ đồ thị MAX cơ bản
- Không có MAX custom ops
- Không có khả năng tương tác với PyTorch
- Chưa thể chạy hoặc phục vụ các mô hình AI
Cuộc tranh luận về thách thức áp dụng
Cuộc thảo luận cộng đồng đã tiết lộ những bất đồng sâu sắc về triển vọng tương lai của Mojo . Những người chỉ trích chỉ ra số lượng nhỏ các nhà phát triển thực sự viết kernel GPU tùy chỉnh, cho rằng hầu hết công việc machine learning dựa vào các thư viện được xây dựng sẵn, được tối ưu hóa cao từ các framework như PyTorch . Họ lập luận rằng việc cải thiện hiệu suất 30% từ kernel tùy chỉnh và các thủ thuật compiler không đáng kể so với việc cải thiện 500%+ từ việc nâng cấp phần cứng, thêm load balancing và routing, KV và prefix caching, các collective ops được tối ưu hóa, v.v.
Việc cải thiện 30% mà bạn nhận được từ kernel và các thủ thuật compiler hoàn toàn không đáng kể so với việc cải thiện 500%+ mà bạn nhận được từ việc nâng cấp phần cứng, thêm load balancing và routing, KV và prefix caching, các collective ops được tối ưu hóa, v.v.
Những người ủng hộ phản bác rằng việc làm cho lập trình GPU dễ dàng hơn có thể mở rộng nhóm các nhà phát triển có khả năng viết kernel tùy chỉnh. Họ chỉ ra tiềm năng tương thích đa nền tảng của Mojo và lời hứa về việc đạt được hiệu suất C++ trong khi duy trì cú pháp giống Python .
Mối quan tâm về mô hình kinh doanh và câu hỏi mã nguồn mở
Một chủ đề lặp đi lặp lại trong các cuộc thảo luận cộng đồng tập trung vào tính chất thương mại của Mojo . Không giống như CUDA , đi kèm miễn phí với phần cứng NVIDIA , Mojo được phát triển bởi một công ty thương mại cần tạo ra doanh thu. Điều này đã tạo ra sự do dự trong các nhà phát triển lo lắng về việc xây dựng trên một nền tảng có thể yêu cầu phí cấp phép hoặc có thể thay đổi hướng dựa trên nhu cầu kinh doanh.
Việc so sánh với các ngôn ngữ được hỗ trợ thương mại khác như Swift ( Apple ) và Go ( Google ) đã xuất hiện, với một số người lập luận rằng việc áp dụng thành công là có thể mặc dù có quyền sở hữu của công ty. Tuy nhiên, những người khác chỉ ra những nỗ lực thất bại như Swift for TensorFlow như những câu chuyện cảnh báo.
Ghi chú kỹ thuật: CUDA là nền tảng tính toán song song của NVIDIA đi kèm miễn phí với GPU của họ nhưng không phải mã nguồn mở, trong khi Mojo dự định trở thành mã nguồn mở hoàn toàn vào cuối năm 2025.
Kết luận
Hỗ trợ GPU Apple Silicon của Mojo đại diện cho một thành tựu kỹ thuật thú vị, nhưng cuộc tranh luận cộng đồng làm nổi bật những thách thức phức tạp mà bất kỳ ngôn ngữ lập trình mới nào phải đối mặt trong không gian AI/ML. Mặc dù khả năng kỹ thuật ấn tượng, các câu hỏi về áp dụng, phát triển hệ sinh thái và tính bền vững của mô hình kinh doanh vẫn chưa được giải quyết. Sự thành công của sáng kiến này có thể sẽ phụ thuộc vào việc liệu Modular có thể giải quyết những mối quan tâm này trong khi tiếp tục mở rộng khả năng và lợi thế hiệu suất của Mojo hay không.
Tham khảo: Hỗ trợ GPU Apple Silicon trong Mojo