LLVM Creator phát triển ngôn ngữ lập trình Mojo mới

Chris Lattner, người sáng lập và kiến ​​trúc sư trưởng của LLVM và là người tạo ra ngôn ngữ lập trình Swift, và Tim Davis, cựu giám đốc các dự án AI của Google như Tensorflow và JAX, đã giới thiệu một ngôn ngữ lập trình mới, Mojo, kết hợp tính dễ sử dụng để phát triển nghiên cứu và tạo mẫu nhanh với tiềm năng tạo ra các sản phẩm cuối cùng có hiệu suất cao. Đầu tiên đạt được thông qua việc sử dụng cú pháp quen thuộc của ngôn ngữ Python và thứ hai thông qua khả năng biên dịch thành mã máy, cơ chế an toàn bộ nhớ và sử dụng các công cụ tăng tốc phần cứng.

Dự án tập trung vào việc sử dụng để phát triển trong lĩnh vực học máy nhưng được trình bày dưới dạng ngôn ngữ có mục đích chung giúp mở rộng khả năng của Python với các công cụ lập trình hệ thống và phù hợp với nhiều nhiệm vụ. Ví dụ: ngôn ngữ này có thể áp dụng cho các lĩnh vực như điện toán hiệu năng cao, xử lý và chuyển đổi dữ liệu. Một tính năng thú vị của Mojo là khả năng chỉ định ký tự biểu tượng cảm xúc "🔥" làm phần mở rộng cho các tệp mã (ví dụ: "helloworld.🔥"), ngoài phần mở rộng văn bản ".mojo".

Hiện tại, ngôn ngữ đang ở giai đoạn phát triển chuyên sâu và chỉ có giao diện trực tuyến được cung cấp để thử nghiệm. Các tập hợp riêng biệt để chạy trên hệ thống cục bộ hứa hẹn sẽ được xuất bản sau, sau khi nhận được phản hồi về hoạt động của môi trường web tương tác. Mã nguồn của trình biên dịch, JIT và các phát triển khác liên quan đến dự án dự kiến ​​sẽ được mở sau khi kiến ​​trúc bên trong hoàn thành (mô hình phát triển nguyên mẫu hoạt động đằng sau cánh cửa đóng kín gợi nhớ đến giai đoạn phát triển ban đầu của LLVM, Clang và Nhanh). Do cú pháp Mojo dựa trên ngôn ngữ Python và hệ thống kiểu gần với C/C++, nên trong tương lai họ dự định phát triển các công cụ để đơn giản hóa việc dịch các dự án hiện có được viết bằng C/C++ và Python sang Mojo, cũng như để phát triển các dự án lai kết hợp mã Python và Mojo.

Dự án được thiết kế để sử dụng các tài nguyên phần cứng sẵn có của các hệ thống không đồng nhất trong việc thực hiện các phép tính. Ví dụ: GPU, bộ tăng tốc học máy chuyên dụng và vectơ lệnh bộ xử lý (SIMD) có thể được sử dụng để chạy các ứng dụng Mojo và tính toán song song. Những lý do được đưa ra để phát triển một tập hợp con riêng của ngôn ngữ Python thay vì tham gia công việc tối ưu hóa CPython hiện có bao gồm tập trung vào việc biên dịch, tích hợp các khả năng lập trình hệ thống và sử dụng kiến ​​trúc bên trong khác về cơ bản cho phép mã chạy trên GPU và nhiều loại khác nhau. bộ tăng tốc phần cứng. Tuy nhiên, các nhà phát triển Mojo dự định vẫn tương thích với CPython nhiều nhất có thể.

Mojo có thể được sử dụng cả trong chế độ thông dịch bằng JIT và để biên dịch thành các tệp thực thi (AOT, trước thời hạn). Trình biên dịch được tích hợp sẵn các công nghệ hiện đại để tối ưu hóa tự động, lưu vào bộ đệm và biên dịch phân tán. Văn bản nguồn bằng ngôn ngữ Mojo được chuyển đổi thành mã trung gian cấp thấp MLIR (Biểu diễn trung gian đa cấp), do dự án LLVM phát triển và cung cấp các khả năng bổ sung để tối ưu hóa việc xử lý biểu đồ luồng dữ liệu. Trình biên dịch cho phép bạn sử dụng nhiều chương trình phụ trợ khác nhau hỗ trợ MLIR để tạo mã máy.

Việc sử dụng các cơ chế phần cứng bổ sung để tăng tốc độ tính toán giúp có thể đạt được hiệu suất vượt trội so với các ứng dụng C/C++ trong các phép tính chuyên sâu. Ví dụ: khi thử nghiệm một ứng dụng để tạo bộ Mandelbrot, một ứng dụng được biên dịch bằng ngôn ngữ Mojo khi được thực thi trên đám mây AWS (r7iz.metal-16xl) hóa ra nhanh hơn 6 lần so với việc triển khai trong C++ (0.03 giây so với 0.20 giây) và cũng nhanh hơn 35 nghìn lần so với ứng dụng Python khi sử dụng CPython 3.10.9 tiêu chuẩn (0.03 giây so với 1027 giây) và nhanh hơn 1500 lần khi sử dụng PYPY (0.03 giây so với 46.1 giây) .

Khi đánh giá hiệu suất trong lĩnh vực giải quyết các bài toán machine learning, Công cụ suy luận mô-đun ngăn xếp AI, được viết bằng ngôn ngữ Mojo, so với giải pháp dựa trên thư viện TensorFlow, nhanh hơn gấp 3 lần khi xử lý mô hình ngôn ngữ trên hệ thống với bộ xử lý Intel, nhanh hơn 6.4 lần khi xử lý thực thi mô hình tạo đề xuất và nhanh hơn 2.1 lần khi làm việc với các mô hình xử lý thông tin hình ảnh. Khi sử dụng bộ xử lý AMD, mức tăng khi sử dụng Mojo lần lượt là 3.2, 5 và 2.2 lần và khi sử dụng bộ xử lý ARM - lần lượt là 5.3, 7.5 và 1.7 lần. Giải pháp dựa trên PyTorch tụt hậu so với Mojo 1.4, 1.1 và 1.5 lần trên CPU Intel, 2.1, 1.2 và 1.5 lần trên CPU AMD và 4, 4.3 và 1.3 lần trên CPU ARM.

LLVM Creator phát triển ngôn ngữ lập trình Mojo mới

Ngôn ngữ này hỗ trợ gõ tĩnh và các tính năng an toàn bộ nhớ ở mức độ thấp gợi nhớ đến Rust, chẳng hạn như theo dõi vòng đời tham chiếu và kiểm tra mượn. Ngoài các phương tiện để làm việc an toàn với con trỏ, ngôn ngữ này còn cung cấp các tính năng cho công việc cấp thấp, ví dụ: truy cập trực tiếp vào bộ nhớ ở chế độ không an toàn bằng cách sử dụng loại Con trỏ, gọi các lệnh SIMD riêng lẻ hoặc truy cập các phần mở rộng phần cứng như TensorCores và AMX .

LLVM Creator phát triển ngôn ngữ lập trình Mojo mới

Để đơn giản hóa việc tách mã Python cổ điển và mã Python được tối ưu hóa cho các hàm có định nghĩa kiểu rõ ràng cho tất cả các biến, người ta đề xuất sử dụng một từ khóa riêng “fn” thay vì “def”. Tương tự đối với các lớp, nếu bạn cần đóng gói tĩnh dữ liệu vào bộ nhớ trong quá trình biên dịch (như trong C), bạn có thể sử dụng kiểu “struct” thay vì “class”. Cũng có thể chỉ cần nhập các mô-đun bằng ngôn ngữ C/C++, ví dụ: để nhập hàm cos từ thư viện toán học, bạn có thể chỉ định “from”math.h” import cos”.

Nguồn: opennet.ru

Thêm một lời nhận xét