StableHLO là một tập hợp thao tác dành cho các thao tác cấp cao (HLO) trong mô hình học máy (ML). Về cơ bản, đây là một lớp khả năng di chuyển giữa các khung ML và trình biên dịch ML khác nhau: các khung ML tạo ra chương trình StableHLO tương thích với các trình biên dịch ML sử dụng chương trình StableHLO.
Mục tiêu của chúng tôi là đơn giản hoá và đẩy nhanh quá trình phát triển công nghệ học máy bằng cách tạo ra khả năng tương tác nhiều hơn giữa các khung học máy (chẳng hạn như TensorFlow, JAX và PyTorch) và trình biên dịch học máy (chẳng hạn như XLA và IREE).
Tính năng và cách bắt đầu
Bản phát hành hiện tại của StableHLO bao gồm nhiều tính năng và mốc quan trọng:
- Được chỉ định đầy đủ: Thông số kỹ thuật StableHLO được xác định cho tất cả ~100 toán tử có trình xác minh và suy luận kiểu, cũng như các tính năng động và định lượng.
- Khả năng tương thích đảm bảo khả năng tương thích ngược 5 năm và tương thích tiến 2 năm, cho phép triển khai máy chủ / cạnh dài hạn và chu kỳ cập nhật hằng năm.
- Trình diễn giải tham chiếu có hỗ trợ toán tử tĩnh và động, bao gồm cả API C++ và Python.
- Khả năng mở rộng thông qua các thao tác tổng hợp và lệnh gọi tuỳ chỉnh để cho phép thử nghiệm nhanh hoặc lập mô hình các thao tác dành riêng cho nhà cung cấp.
- API C++/Python cho các tính năng cốt lõi và tệp nightly dev-wheel để dễ dàng làm quen hơn.
- Hướng dẫn về Colab để minh hoạ các API Python dùng để trích xuất StableHLO từ nhiều khung cũng như các hàm tiện ích khác.
- Bộ dữ liệu kiểm thử gồm 3k tệp kiểm thử bao gồm các chương trình động và quantised cũng như kết quả vàng để kiểm thử tích hợp nhà cung cấp, kiểm thử khả năng tương thích thuận / ngược và mức độ sử dụng mã >90%.
- Chuyển đổi chương trình để đơn giản hoá chương trình độc lập với phần cứng, chỉnh sửa các chương trình được định hình động bằng cách sử dụng các đối số đầu vào cụ thể và chuyển đổi sang các phương ngữ MLIR thượng nguồn như linalg hoặc tosa.
- Do cộng đồng thúc đẩy với nhiều đóng góp về hệ sinh thái cho các phép biến đổi, cũng như RFC cho các thay đổi về tập hợp hoạt động: Các loại FP8 mới, collective_broadcast, các hoạt động thu thập / phân tán theo lô, lượng tử hoá kết hợp, API trình thông dịch, phân ly CHLO, các phép biến đổi đơn giản hoá StableHLO, v.v.!
Nhà phát triển mô hình muốn sử dụng StableHLO hoặc XLA để biên dịch dự án ML, hãy tham khảo tài liệu tương ứng cho khung ML của bạn:
Nhà phát triển trình biên dịch muốn tích hợp StableHLO, hãy xem tài liệu bắt đầu của chúng tôi trên trang web này, bao gồm cả hướng dẫn và thông tin chi tiết dành cho nhà phát triển. Hãy xem phần cộng đồng trên trang này để biết mọi thông tin hỗ trợ, câu hỏi hoặc vấn đề liên quan đến quá trình làm quen!
Hướng dẫn tạo bản dựng
Hãy xem StableHLO trên GitHub để biết hướng dẫn tạo bản dựng.
Cộng đồng
Việc xây dựng một lớp khả năng di chuyển tuyệt vời giữa các khung máy học và trình biên dịch máy học yêu cầu sự cộng tác trên toàn bộ ngành máy học. Vì vậy, chúng tôi rất vui khi được bạn trợ giúp trong dự án StableHLO.
Chúng tôi đang sử dụng các vấn đề / yêu cầu gộp trên GitHub để sắp xếp quá trình phát triển và openxla-discuss để thảo luận lâu hơn. Chúng tôi cũng có một kênh #stablehlo
trên máy chủ Discord OpenXLA.