Một kiến trúc phần mềm mở sẽ loại bỏ các ràng buộc của việc kết nối lâu dài với nhà cung cấp.
Trên toàn bộ phạm vi, từ các nhà cung cấp dịch vụ đám mây cho đến các phòng thí nghiệm trí tuệ nhân tạo và các công ty khởi nghiệp, có một mong muốn mãnh liệt để truy cập các Đơn vị Xử lý Đồ họa (GPU) cắt cạnh hiện có. Tuy nhiên, thị trường hiện đang đối mặt với tình trạng khan hiếm về các GPU cao cấp này, mà chủ yếu đang được một công ty duy nhất, NVIDIA, thống trị. Sự tăng cầu đặc biệt này từ các doanh nghiệp đã dẫn đến tình trạng khan hiếm, dẫn đến sự tăng giá vọt.
Điều này đang là một thách thức đối với ngành công nghiệp, với nhiều người cho rằng tình trạng khan hiếm có thể thậm chí đe dọa đến sự đổi mới trong lĩnh vực trí tuệ nhân tạo. Do đó, điều mà ngành công nghiệp cần là sự cạnh tranh. Trong khi NVIDIA, với tư cách là một nhà tiên phong trong lĩnh vực này, vẫn là người dẫn đầu, các nhà cung cấp GPU khác như Intel và AMD đang đạt được sự tiến bộ đáng kể và thu hẹp khoảng cách với NVIDIA. Tuy nhiên, việc lựa chọn giữa nhiều nhà cung cấp GPU vẫn là một nhiệm vụ phức tạp.
Nhu cầu cho một kiến trúc phần mềm mở
Nếu phần mềm hoặc ứng dụng của bạn được tối ưu hóa cho GPU của một nhà cung cấp cụ thể, việc chuyển đổi sang GPU từ một nhà cung cấp khác có thể gặp khó khăn mà đòi hỏi sự sửa đổi mã nguồn đáng kể và kiểm thử. Hơn nữa, các trình điều khiển GPU và các giao diện lập trình ứng dụng (API) cho GPU thường là đặc thù của từng nhà cung cấp. Các ứng dụng sử dụng các API này, như CUDA hoặc OpenCL, có thể không tương thích với GPU từ các nhà cung cấp khác mà không cần sửa đổi đáng kể. Điều này có thể dẫn đến một giai đoạn bị ràng buộc, trong đó việc chuyển đổi GPU trở nên phức tạp và tốn kém.
Hơn nữa, các nhà cung cấp GPU thường cung cấp các bộ phát triển phần mềm (SDKs), thư viện và công cụ được tùy chỉnh cho GPU của họ. Các nhà phát triển có thể phụ thuộc vào các thành phần phần mềm đặc thù của nhà cung cấp này cho các nhiệm vụ như lập trình GPU (ví dụ: CUDA cho GPU NVIDIA). Do đó, việc chuyển đổi sang GPU từ một nhà cung cấp khác có thể đòi hỏi việc viết lại hoặc điều chỉnh phần mềm để hoạt động với ngăn xếp phần mềm của họ.
Vì vậy, một kiến trúc phần mềm mở, giúp lựa chọn các nhà cung cấp GPU, không thể phủ nhận là một lợi ích lớn đối với cộng đồng trí tuệ nhân tạo,” Mohammed Imran K R, Giám đốc công nghệ tại E2E Networks, cho biết. Ngoài việc làm cho việc lựa chọn giữa các nhà cung cấp GPU dễ dàng hơn, một kiến trúc phần mềm mở sẽ loại bỏ các ràng buộc của việc kết nối lâu dài với nhà cung cấp, cho phép các nhà nghiên cứu và nhà phát triển trí tuệ nhân tạo lựa chọn GPU dựa trên yêu cầu cụ thể của họ.
“Điều này cũng sẽ dẫn đến một môi trường cạnh tranh hơn, đẩy các nhà sản xuất GPU phát triển và cung cấp các tùy chọn phần cứng tốt hơn cho các tải công việc trí tuệ nhân tạo. Nó cũng sẽ tạo ra tính hiệu quả về chi phí, vì tổ chức có thể lựa chọn GPU dựa trên cả hiệu suất và chi phí, từ đó tối ưu hóa tài nguyên của họ,” ông nói.
Hơn nữa, một cơ sở hạ tầng mở cũng sẽ khuyến khích sự hợp tác trong cộng đồng trí tuệ nhân tạo. Các công cụ và giao diện chuẩn hóa sẽ làm cho việc làm việc với các nền tảng GPU khác nhau dễ dàng hơn đối với các nhà phát triển và nhà nghiên cứu, có thể tăng tốc sự tiến bộ trong công nghệ trí tuệ nhân tạo. “Ngoài ra, phương pháp này cũng phù hợp với xu hướng ngành công nghiệp ưa chuộng các giải pháp mã nguồn mở và tương thích, giúp các công ty xây dựng các ngăn xếp công nghệ có tính linh hoạt,” Shivam Arora, Giám đốc Marketing tại Compunnel, cho biết.
Tuy nhiên, cũng cần xem xét rằng việc phát triển và duy trì một cơ sở hạ tầng mở như vậy sẽ đòi hỏi sự phối hợp từ các nhà cung cấp GPU, các nhà phát triển phần mềm và cộng đồng trí tuệ nhân tạo. “Mặc dù sẽ có tính linh hoạt, tối ưu hóa hiệu suất có thể trở thành một vấn đề,” Sanjay Lodha, Chủ tịch & Giám đốc điều hành của Netweb Technologies, cho biết.
OpenCL, ROCm và oneAPI
Có thể khẳng định rằng OpenCL là một trong những kiến trúc phần mềm mở như vậy đã tồn tại. Ra mắt vào năm 2009 bởi Apple và Khronos Group để cung cấp một tiêu chuẩn cho tính toán đa dạng, OpenCL có thể là một lựa chọn khả thi, nhưng nó cũng đi kèm với một loạt các thách thức riêng của nó. OpenCL cho phép bạn viết các chương trình có thể thực thi trên các kiến trúc GPU khác nhau từ các nhà cung cấp khác nhau. “Mặc dù OpenCL đang có sự phát triển, nó vẫn bị hạn chế và có thể không cung cấp cùng mức độ tối ưu hóa như một công cụ đặc thù của nhà cung cấp như CUDA từ NVIDIA,” Lodha cho biết.
Từ góc độ phát triển công nghệ trí tuệ nhân tạo, OpenCL hiện nay có một số điểm yếu so với CUDA, với một khía cạnh quan trọng là hầu hết các nghiên cứu, mô hình và khung làm việc gần đây đều giả định CUDA là nền tảng lập trình GPU mặc định. “Ngoài ra, việc đạt được tính di động giữa các nhà cung cấp khác nhau có thể khó khăn với OpenCL, vì các nhà sản xuất GPU khác nhau triển khai nó với mức độ tuân thủ và hiệu suất khác nhau,” Imran cho biết.
Trong thực tế, một nghiên cứu so sánh các chương trình CUDA với OpenCL trên GPU NVIDIA đã cho thấy rằng CUDA nhanh hơn OpenCL 30%. Đồng thời, ROCm của AMD, cũng là một lựa chọn thay thế cho CUDA, cũng đang phát triển mạnh mẽ. Thú vị, mã CUDA có thể chuyển đổi thành mã ROCm bằng các công cụ HIP (Giao diện tích hợp đa dạng cho tính di động) được cung cấp bởi AMD. Một sự phát triển thú vị khác trong vài năm qua là oneAPI. Trong khi ROCm nhắm mục tiêu cả GPU của AMD và NVIDIA, các ứng dụng oneAPI có thể chạy trên các GPU từ Intel, NVIDIA và AMD, làm cho cả hai đều là lựa chọn khả thi.
Rời khỏi CUDA
Mặc dù các doanh nghiệp có thể xem xét các nhà cung cấp thay thế như Intel, AMD hoặc thậm chí là Huawei có trụ sở tại Trung Quốc, nhưng việc ngành công nghiệp từ bỏ CUDA có thể đầy thách thức. “Điều này liên quan đến việc viết lại hoặc điều chỉnh mã nguồn hiện có, có thể gây ra sự gián đoạn và đòi hỏi sự đào tạo lại đáng kể cho các nhà phát triển. Tuy nhiên, sự quan tâm ngày càng tăng của ngành công nghiệp đối với các lựa chọn mã nguồn mở cho thấy sự sẵn lòng gia nhập sự thay đổi. Độ khó của sự chuyển đổi này cuối cùng phụ thuộc vào nhu cầu và mục tiêu cụ thể của công ty cũng như cam kết của họ đối với các nguyên tắc mã nguồn mở,” Arora nói.
Lodha, mặt khác, có chút hoài nghi hơn. Ông tin rằng sẽ rất khó khăn đối với cộng đồng trí tuệ nhân tạo rời bỏ CUDA để chuyển đổi sang một kiến trúc phần mềm GPU mở hơn vì nhiều mô hình học máy đã được đào tạo bằng mã nguồn CUDA. “Điều này có nghĩa là các nhà nghiên cứu và nhà phát triển sẽ cần viết lại mã nguồn của họ để sử dụng một khung lập trình GPU khác.”
Tuy nhiên, ông tin rằng lợi ích của việc chuyển đổi sang một khung lập trình GPU mã nguồn mở hơn vượt qua nhược điểm. Ông cũng cho rằng một khung lập trình mã nguồn mở sẽ làm cho việc so sánh hiệu suất của các GPU khác nhau và lựa chọn GPU phù hợp nhất với nhu cầu của họ dễ dàng hơn đối với các nhà nghiên cứu và nhà phát triển. Nó cũng sẽ làm cho việc các nhà cung cấp cạnh tranh với nhau dễ dàng hơn, điều này sẽ dẫn đến giá thấp hơn và sản phẩm tốt hơn.
“Tôi nghĩ cách tốt nhất để chuyển từ CUDA sang một lựa chọn mã nguồn mở hơn là chuyển tiến dần. Các nhà nghiên cứu và nhà phát triển có thể bắt đầu bằng cách viết mã mới trong một khung lập trình mã nguồn mở, như OpenCL hoặc ROCm. Họ cũng có thể bắt đầu chuyển mã nguồn CUDA hiện có sang một khung lập trình mã nguồn mở. Hiện tại đã có các công cụ được sử dụng nhưng vẫn cần nỗ lực lập trình,”
Imran cũng đồng tình. Ông cho rằng đảm bảo tính tương thích với các thành phần khác trong ngăn xếp phần mềm và đạt được tính di động giữa các nhà cung cấp khác nhau là khó khăn trong thời điểm hiện tại. “Tuy nhiên, trong tương lai, chúng tôi tin rằng sẽ có các lựa chọn và có những lý do thuyết phục cho điều này, bao gồm giảm thiểu việc kết nối dài hạn với nhà cung cấp, thúc đẩy tính tương thích và đóng góp vào một hệ sinh thái GPU đa dạng hơn.”