Tổng quan
MLIR, hay Biểu diễn trung gian đa cấp, là một định dạng biểu diễn và thư viện các tiện ích trình biên dịch nằm giữa biểu diễn mô hình và trình biên dịch / thực thi cấp thấp tạo ra mã dành riêng cho phần cứng.
MLIR, trung tâm của nó, là một cơ sở hạ tầng linh hoạt cho các trình biên dịch tối ưu hóa hiện đại. Điều này có nghĩa là nó bao gồm một đặc tả cho các biểu diễn trung gian (IR) và một bộ công cụ mã để thực hiện các phép biến đổi trên biểu diễn đó. (Theo cách nói của trình biên dịch, khi bạn chuyển từ biểu diễn cấp cao hơn sang biểu diễn cấp thấp hơn, những biến đổi này có thể được gọi là “lowerings”)
MLIR chịu ảnh hưởng lớn của LLVM và luôn sử dụng lại nhiều ý tưởng tuyệt vời từ nó. Nó có một hệ thống kiểu linh hoạt và cho phép biểu diễn, phân tích và biến đổi đồ thị kết hợp nhiều cấp độ trừu tượng trong cùng một đơn vị biên dịch. Những phần trừu tượng này bao gồm các hoạt động TensorFlow, các vùng vòng lặp đa diện lồng nhau và thậm chí cả các lệnh LLVM cũng như các loại và hoạt động phần cứng cố định.
Chúng tôi kỳ vọng MLIR sẽ được nhiều nhóm quan tâm, bao gồm:
- Các nhà nghiên cứu và triển khai trình biên dịch đang tìm cách tối ưu hóa hiệu suất và mức tiêu thụ bộ nhớ của các mô hình học máy
- Các nhà sản xuất phần cứng đang tìm cách kết nối phần cứng của họ với TensorFlow, chẳng hạn như TPU, phần cứng thần kinh di động trong điện thoại và các ASIC tùy chỉnh khác
- Những người viết liên kết ngôn ngữ muốn tận dụng tối ưu hóa trình biên dịch và tăng tốc phần cứng.
Hệ sinh thái TensorFlow chứa một số trình biên dịch và trình tối ưu hóa hoạt động ở nhiều cấp của ngăn xếp phần mềm và phần cứng. Chúng tôi hy vọng việc áp dụng MLIR dần dần sẽ đơn giản hóa mọi khía cạnh của ngăn xếp này.