
Flare là gì?
Flare là một máy chủ suy luận cục bộ được thiết kế riêng cho GPU NVIDIA SM120 và SM121. Flare hướng đến các cuộc hội thoại dài, tác nhân lập trình và những khối lượng công việc thường xuyên gọi công cụ. Mục tiêu cốt lõi là tận dụng hiệu quả tài nguyên của máy trạm và hệ thống nhỏ gọn, đồng thời duy trì khả năng sinh văn bản phản hồi nhanh.

Khác với các nền tảng phục vụ ưu tiên khả năng tương thích rộng, Flare sử dụng một hợp đồng chuyên biệt, xoay quanh các mô hình, phần cứng, kernel và mô hình triển khai được lựa chọn. Phạm vi hẹp hơn này cho phép thiết kế quá trình chuẩn bị mô hình, quản lý bộ nhớ, lập lịch và thực thi một cách đồng bộ.
Flare phù hợp nhất khi các công thức mô hình được hỗ trợ, dung lượng đã chuẩn bị và yêu cầu phần cứng NVIDIA tương thích với khối lượng công việc cục bộ của bạn.
Kiến trúc hoạt động như thế nào
Flare chia quá trình chuẩn bị mô hình và phục vụ thời gian chạy thành hai thành phần chính: Ignition và Helios.
Ignition: Chuẩn bị mô hình trong giai đoạn xây dựng
Ignition hoạt động trong hệ sinh thái máy học Python tiêu chuẩn. Thành phần này sử dụng PyTorch, Transformers và FlashInfer/b12x để tải mô hình, tinh chỉnh kernel, biên dịch các lượt chạy xuôi và ghi lại CUDA graph.
Kết quả là một gói thời gian chạy đã được chuẩn bị. Quá trình biên dịch và ghi lại CUDA graph hoàn tất trước khi bắt đầu phục vụ, vì vậy thời gian chạy sản xuất không cần thực hiện các bước chuẩn bị đó.
Helios: Phục vụ dựa trên Rust
Helios là thời gian chạy Rust phục vụ gói do Ignition tạo ra. Helios chạy mà không cần Python và chịu trách nhiệm lập lịch, lưu trữ bộ nhớ đệm, xử lý yêu cầu và quản lý rõ ràng các tài nguyên thời gian chạy.
Công thức mô hình
-> Chuẩn bị bằng Ignition
-> Tinh chỉnh kernel và biên dịch lượt chạy xuôi
-> Ghi lại CUDA graph
-> Gói thời gian chạy
-> Phục vụ bằng HeliosRanh giới này giữ cho quá trình phát triển mô hình gắn với các công cụ Python quen thuộc, đồng thời duy trì thời gian chạy phục vụ nhỏ gọn và tập trung.
Tính năng chính
- Hỗ trợ NVIDIA chuyên biệt: Flare được thiết kế cho GPU NVIDIA SM120 và SM121 thay vì nhiều loại bộ tăng tốc khác nhau.
- Python trong giai đoạn xây dựng: Quá trình chuẩn bị mô hình sử dụng PyTorch, Transformers và FlashInfer/b12x.
- Rust trong thời gian chạy: Helios phục vụ các gói đã chuẩn bị mà không cần Python.
- Tối ưu hóa trước khi phục vụ: Việc tinh chỉnh kernel, biên dịch lượt chạy xuôi và ghi lại CUDA graph hoàn tất trước khi phục vụ yêu cầu.
- Lập kế hoạch bộ nhớ rõ ràng: Các bộ đệm và dung lượng thực thi được lập kế hoạch trước.
- Trạng thái hội thoại hoàn chỉnh: Flare xem trạng thái lặp lại và bộ nhớ đệm KV là một trạng thái hội thoại thống nhất, nhằm bảo đảm tái sử dụng, phân nhánh và tiếp tục chính xác.
- Hỗ trợ mô hình dựa trên công thức: Các công thức mô hình định nghĩa phép tính của mô hình và chuyên biệt hóa bố cục hoặc quá trình thực thi khi cần.
- Định hướng cho khối lượng công việc cục bộ: Hệ thống dành cho các phiên làm việc dài, tác nhân lập trình và việc sử dụng công cụ lặp lại trên máy cục bộ.
Điều kiện tiên quyết và thiết lập
Trước khi thử sử dụng Flare, hãy xác nhận rằng môi trường của bạn phù hợp với phạm vi được chủ ý giới hạn của Flare.
- Xác minh kiến trúc GPU. Flare hướng đến GPU NVIDIA SM120 và SM121. README không tuyên bố hỗ trợ các kiến trúc GPU khác.
- Chọn một công thức mô hình được hỗ trợ. Flare không cam kết khả năng tương thích với mọi mô hình. Mô hình phải phù hợp với một công thức hiện có và luồng dữ liệu dự kiến của công thức đó.
- Lập kế hoạch dung lượng thời gian chạy. Xác định dung lượng bộ đệm và thực thi cần thiết cho các cuộc hội thoại và yêu cầu dự kiến.
- Chuẩn bị môi trường xây dựng Python. Ignition dựa vào PyTorch, Transformers và FlashInfer/b12x trong quá trình chuẩn bị mô hình.
- Chuẩn bị gói mô hình. Sử dụng Ignition để tải mô hình, tinh chỉnh kernel, biên dịch quá trình thực thi lượt chạy xuôi và ghi lại CUDA graph.
- Phục vụ bằng Helios. Khi quá trình chuẩn bị hoàn tất, cung cấp gói thời gian chạy thu được cho thời gian chạy phục vụ Rust.
README không cung cấp các lệnh cài đặt chính xác, phiên bản phụ thuộc hoặc cờ khởi chạy. Hãy làm theo hướng dẫn chuẩn bị và phục vụ mô hình của kho lưu trữ để biết quy trình chính thức. Sử dụng hướng dẫn CLI để biết chi tiết cấu hình.
Quy trình sử dụng cơ bản
Quy trình cơ bản của Flare là chuẩn bị trước, phục vụ sau. Ví dụ sau mang tính khái niệm, không phải cú pháp CLI có thể thực thi, vì README không định nghĩa các lệnh cụ thể.
Bước 1: Chọn mô hình tương thích
Bắt đầu với một mô hình được công thức Flare hỗ trợ. Các công thức đảm nhiệm phép tính của mô hình và có thể tái sử dụng các triển khai mô hình chuẩn khi luồng dữ liệu phù hợp. Khi cần bố cục hoặc hành vi thực thi khác, công thức sẽ chuyên biệt hóa các phần đó.
Bước 2: Xác định dung lượng cần thiết
Ước tính khối lượng công việc mà gói đã chuẩn bị phải hỗ trợ. Hãy xem xét độ dài cuộc hội thoại, nhu cầu thực thi đồng thời, việc sử dụng bộ nhớ đệm, trạng thái lặp lại và các tương tác công cụ lặp lại. Flare yêu cầu các bộ đệm và dung lượng quan trọng được lập kế hoạch trước khi phục vụ.
Bước 3: Xây dựng gói thời gian chạy
Chạy quy trình chuẩn bị thông qua Ignition. Ở giai đoạn này, Flare sử dụng hệ sinh thái Python để thực hiện các công việc thiết lập tốn nhiều tài nguyên.
Đầu vào:
công thức mô hình được hỗ trợ
tham số mô hình
dung lượng thực thi đã lập kế hoạch
Ignition thực hiện:
tải mô hình
tinh chỉnh kernel
biên dịch lượt chạy xuôi
ghi lại CUDA graph
Đầu ra:
gói thời gian chạy đã chuẩn bịBước 4: Khởi động Helios
Cấu hình Helios để phục vụ gói đã chuẩn bị. Helios xử lý yêu cầu, lập lịch và lưu trữ bộ nhớ đệm mà không yêu cầu Python trong môi trường phục vụ. Tham khảo tài liệu CLI để biết các tùy chọn cấu hình và giao diện khởi chạy thực tế.
Bước 5: Chạy thử khối lượng công việc dự kiến
Kiểm thử Flare với các cuộc hội thoại dài thực tế, các phiên tác vụ của tác nhân lập trình và các mẫu sử dụng công cụ. Một lời nhắc tổng hợp ngắn có thể không bộc lộ cùng hành vi quản lý trạng thái, lưu lượng bộ nhớ hoặc lập lịch như khối lượng công việc mà Flare được thiết kế để xử lý.
Tìm hiểu về trạng thái hội thoại
Flare xem trạng thái hội thoại không chỉ là bộ nhớ đệm KV. Khi mô hình cũng sử dụng trạng thái hồi quy, trạng thái đó phải luôn được đồng bộ với bộ nhớ đệm. Flare quản lý toàn bộ các thành phần này để những thao tác như tái sử dụng, phân nhánh và tiếp tục phiên vẫn bảo toàn chính xác toàn bộ hội thoại.
Thiết kế này đặc biệt phù hợp với các tác nhân. Một tác nhân có thể tạm dừng để chờ kết quả công cụ, phân nhánh khi đánh giá các phương án hoặc tiếp tục một phiên trước đó. Chỉ bảo toàn một phần trạng thái mô hình có thể dẫn đến hành vi tiếp diễn không chính xác.
Mẹo nâng cao
Chuẩn bị cho năng lực thực tế bạn cần
Vì năng lực thực thi và bộ đệm được hoạch định trước, các lựa chọn chuẩn bị ảnh hưởng trực tiếp đến những gì có thể được phục vụ. Đừng cho rằng một gói phù hợp với mọi độ dài ngữ cảnh, mức độ đồng thời hoặc cấu hình mô hình. Hãy tuân theo các quy tắc về năng lực trong tài liệu dự án.
Đưa quá trình biên dịch ra khỏi đường dẫn phục vụ
Để Ignition hoàn tất việc tinh chỉnh kernel, biên dịch forward và thu thập CUDA graph trước khi bắt đầu phục vụ production. Sự phân tách này là phần cốt lõi trong thiết kế của Flare, không phải một tối ưu hóa tùy chọn.
Coi trạng thái là một đơn vị nguyên tử
Khi triển khai việc tái sử dụng, phân nhánh hoặc tiếp tục hội thoại, hãy bảo toàn toàn bộ trạng thái do Flare quản lý. Tránh thiết kế các tích hợp giả định rằng bộ nhớ đệm KV luôn là trạng thái bền vững duy nhất của mô hình.
Sử dụng recipe làm ranh giới của mô hình
Đặt phần tính toán riêng của mô hình trong các recipe của mô hình và để runtime đảm nhiệm việc lập lịch, xử lý yêu cầu và lưu trữ bộ nhớ đệm. Cách này tuân theo sự phân tách trách nhiệm của Flare và giúp runtime dùng chung tập trung vào phần cốt lõi.
Đánh giá theo khối lượng công việc thực tế
Rust cung cấp quyền sở hữu tài nguyên tường minh, nhưng chỉ riêng ngôn ngữ triển khai không bảo đảm hiệu năng suy luận cao hơn. Tính toán GPU, lưu lượng bộ nhớ, lập lịch, cấu trúc mô hình và hình dạng khối lượng công việc vẫn rất quan trọng.
Để có phạm vi hỗ trợ rộng hơn về mô hình, phần cứng hoặc triển khai, hãy so sánh Flare với vLLM. Cả hai hệ thống đều có thể sử dụng CUDA graph, nhưng có những đánh đổi khác nhau về phạm vi và thiết kế. Hãy đánh giá trên đúng mô hình, mẫu hội thoại, năng lực và máy mà bạn dự định triển khai.
Đọc tài liệu thiết kế
Để hiểu sâu hơn lý do runtime, recipe của mô hình, cơ chế quản lý trạng thái và ranh giới lập lịch được tổ chức theo cách này, hãy tham khảo tài liệu thiết kế cốt lõi của kho mã.
Kết luận
Flare cung cấp một đường dẫn suy luận cục bộ chuyên biệt cho các mô hình được chọn trên GPU NVIDIA SM120 và SM121. Ignition chuẩn bị các gói runtime được tối ưu bằng các công cụ Python quen thuộc, trong khi Helios phục vụ chúng thông qua một runtime Rust nhỏ gọn. Flare phù hợp nhất với các khối lượng công việc cục bộ được hoạch định trước, bao gồm hội thoại dài, tác nhân lập trình, việc sử dụng công cụ lặp lại và quản lý tường minh bộ nhớ cũng như trạng thái hội thoại.
