Tác giả: Aayush Mittal
Ngày 26 tháng 1 năm 2024
Những tiến bộ gần đây trong các mô hình ngôn ngữ lớn (LLMs) như GPT-4, PaLM đã dẫn đến những khả năng biến đổi trong các nhiệm vụ ngôn ngữ tự nhiên. LLMs đang được tích hợp vào nhiều ứng dụng khác nhau như chatbots, máy tìm kiếm và trợ lý lập trình. Tuy nhiên, việc triển khai LLMs ở quy mô lớn vẫn đầy thách thức do yêu cầu GPU và bộ nhớ lớn.
Có hai phương pháp chính để vượt qua thách thức này:
- Kỹ thuật Nén Mô hình Các kỹ thuật này nhằm giảm kích thước của mô hình trong khi vẫn duy trì độ chính xác. Các phương pháp phổ biến bao gồm:
- Cắt tỉa (Pruning) – Loại bỏ các tham số dư thừa hoặc ít quan trọng khỏi mô hình, tạo ra một mô hình thưa thớt với ít tham số hơn.
- Lượng tử hóa (Quantization) – Sử dụng số có độ chính xác thấp như int8 hoặc bfloat16 để biểu diễn trọng số thay vì fp32 hoặc fp16, giảm kích thước bộ nhớ.
- Truyền đạt kiến thức (Knowledge distillation) – Huấn luyện một mô hình “học sinh” nhỏ để mô phỏng một mô hình “giáo viên” lớn. Mô hình nhỏ sau đó được sử dụng cho quá trình suy luận.
- Thực hiện Lựa chọn Thay vì sử dụng các mô hình được nén, các kỹ thuật này thực hiện lựa chọn và chỉ thực hiện một số phần của mô hình trong mỗi quá trình suy luận:
- Kích hoạt thưa thớt (Sparse activations) – Bỏ qua các tính toán trên các kích hoạt có giá trị không.
- Tính toán có điều kiện (Conditional computation) – Chỉ thực hiện một số lớp cụ thể dựa trên đầu vào.
Trên phương diện bổ sung liên quan đến phần kiến trúc phần mềm; để tăng tốc quá trình triển khai của các Mô hình Ngôn ngữ Lớn (LLMs), các nhà nghiên cứu đã đề xuất các hệ thống suy luận không có máy chủ. Trong kiến trúc không có máy chủ, LLMs được lưu trữ trên các cụm GPU chung và được phân bổ động dựa trên nhu cầu. Điều này cho phép sử dụng hiệu quả GPU và giảm chi phí cho các nhà phát triển. Các triển khai nổi bật bao gồm Amazon SageMaker, Microsoft Azure ML, và các lựa chọn mã nguồn mở như KServe.
Mặc dù hứa hẹn của LLMs không có máy chủ, các hệ thống hiện tại có chi phí trễ lớn gây suy giảm trải nghiệm người dùng trong các ứng dụng tương tác:
- Tải checkpoint tốn kém: LLMs có dấu vết bộ nhớ lớn, thường từ gigabyte đến terabyte. Việc tải checkpoint từ lưu trữ từ xa mất thời gian, mất hơn 20 giây ngay cả với mạng được tối ưu hóa.
- Tải checkpoint không hiệu quả: Ngay cả với lưu trữ SSD local, việc tải checkpoint vào bộ nhớ GPU mất vài chục giây do các yếu tố như giải mã và phân bổ tensor. Điều này gây ra độ trễ đáng kể ngoài thời gian khởi chạy container.
Để giải quyết những vấn đề này, các nhà nghiên cứu tại MIT CSAIL đã đề xuất ServerlessLLM, một hệ thống độc đáo mang lại suy luận không máy chủ với độ trễ thấp cho LLMs. ServerlessLLM tăng cường tính cục bộ bằng cách khai thác khả năng và băng thông dồi dào nhưng chưa được sử dụng đầy đủ trong lưu trữ máy chủ đa tầng để triển khai LLMs.
Các Đổi mới Quan trọng trong ServerlessLLM
ServerlessLLM tích hợp một số thiết kế mới lạ để giảm thời gian tải LLM trong môi trường không có máy chủ:
- Tải checkpoint nhanh chóng
- Sử dụng định dạng checkpoint được tối ưu hóa cho việc đọc tuần tự nhanh chóng và địa chỉ tensor hiệu quả trong bộ nhớ.
- Ống đồng tải checkpoint nhiều tầng tối đa hóa việc sử dụng băng thông trên mạng, SSD, DRAM và bộ nhớ GPU thông qua các kỹ thuật như I/O trực tiếp, chuyển giao bộ nhớ ghim và song song hóa.
- Di chuyển trực tuyến cho suy luận dựa trên vị trí
- Di chuyển dựa trên token chỉ truyền các token gợi ý quan trọng qua mạng, tránh chuyển giao snapshot chậm chạp.
- Di chuyển hai giai đoạn cho phép suy luận không bị gián đoạn bằng cách tính toán lại trạng thái cache một cách không đồng bộ trên máy chủ đích trước khi chuyển giao token cuối cùng.
- Phân bổ máy chủ được tối ưu hóa độ trễ
- Mô hình chính xác để ước lượng thời gian tải checkpoint từ mỗi tầng và thời gian di chuyển cho một máy chủ.
- Lập lịch chuyển động có ý thức về vị trí chọn máy chủ giảm thiểu độ trễ khởi chạy dựa trên các mô hình trên.
Những tối ưu hóa này cho phép ServerlessLLM giảm thời gian tải LLM từ 4-8 lần và thời gian khởi động end-to-end lên đến hơn 25 lần so với các hệ thống hiện tại như PyTorch, TensorFlow và KServe.
Hãy đàm phán sâu hơn về cách ServerlessLLM đạt được những cải thiện hiệu suất đáng kể này.
Tăng tốc Quá trình Tải Checkpoint
Bài toán lớn đầu tiên được giải quyết bởi ServerlessLLM là độ trễ cao khi tải các điểm kiểm của LLM từ lưu trữ vào bộ nhớ GPU.
Để kích thích quá trình tải checkpoint nhanh chóng, ServerlessLLM giới thiệu:
- Định dạng checkpoint được tối ưu hóa cho việc tảiCác điểm kiểm tiêu chuẩn được sử dụng bởi các framework như PyTorch được thiết kế để đào tạo mô hình và gỡ lỗi. Nhưng đối với suy luận không có máy chủ, các điểm kiểm chỉ đọc và truy cập lặp đi lặp lại.Để tối ưu hóa cho việc sử dụng có đọc tăng cường như vậy, ServerlessLLM chuyển đổi các điểm kiểm thành một định dạng có hai thuộc tính chính:
- Đọc tuần tự dựa trên chuỗi các phần: Các tensor được nhóm vào các tệp nhị phân cho mỗi GPU, tạo điều kiện thuận lợi cho việc đọc tuần tự lớn.
- Địa chỉ tensor hiệu quả: Một chỉ mục ánh xạ tên tensor thành độ lệch bộ nhớ, cho phép phục hồi trực tiếp trong bộ nhớ mà không cần giải mã.
- Ống đồng tải checkpoint nhiều tầngServerlessLLM tận dụng kiến trúc theo tầng của các máy chủ GPU, với các phương tiện lưu trữ như SSD và mạng kết nối với GPU qua PCIe, NVMe, v.v.
Hệ thống tích hợp một đường ống đa tầng để tối đa hóa việc sử dụng băng thông trên tất cả các tầng:
- Các phần dữ liệu trong bộ nhớ được cấp phát bằng bộ nhớ ghim để chuyển nhanh chóng đến GPU.
- I/O trực tiếp được sử dụng cho việc đọc SSD hiệu quả mà không có chi phí đệm.
- Nhiều luồng đọc các phần lưu trữ khác nhau song song.
- Phối hợp giữa các giai đoạn diễn ra thông qua các hàng đợi công việc không đồng bộ.
Tất cả điều này cho phép tận dụng tối đa khả năng băng thông của ngay cả các tầng nhanh nhất như NVMe RAID. Các thử nghiệm cho thấy ServerlessLLM đạt được tốc độ tải nhanh hơn 6-8 lần so với PyTorch/TensorFlow, giảm thời gian khởi động cho các LLM lớn từ hơn một phút xuống dưới 10 giây.
Suy luận LLM Dựa trên Vị trí thông qua Di chuyển Trực tuyến
Với việc tải nhanh chóng, ServerlessLLM đối mặt với một thách thức mới – làm thế nào để tận dụng những điểm kiểm được tải trước cho tính cục bộ mà không làm gián đoạn quá trình suy luận đang diễn ra trên các máy chủ đang hoạt động?
ServerlessLLM giới thiệu một kỹ thuật mới lạ – di chuyển trực tuyến của suy luận LLM qua các máy chủ GPU. Điều này cho phép chuyển giao thực hiện một cách mượt mà đến các máy chủ có điểm kiểm địa phương.
Các yếu tố chính của di chuyển trực tuyến của LLM:
- Di chuyển dựa trên token Thay vì chụp toàn bộ trạng thái mô hình, ServerlessLLM chỉ di chuyển các token gợi ý tối thiểu qua mạng. Điều này chuyển dữ liệu ít hơn nhiều so với các bức ảnh chụp.
- Di chuyển hai giai đoạn Máy chủ đích tính toán trạng thái bộ nhớ độ cache từ các token gợi ý một cách không đồng bộ. Khi sẵn sàng, máy chủ nguồn chuyển giao các token cuối cùng trước khi giải phóng tài nguyên. Điều này ngăn chặn đình trệ trong quá trình suy luận.
Các thử nghiệm cho thấy rằng di chuyển dựa trên token giảm thời gian di chuyển từ vài chục giây xuống dưới một giây ngay cả đối với các chuỗi dài. Di chuyển trực tuyến là quan trọng để ngăn chặn độ trễ hàng đợi khi đạt được phân bổ dựa trên vị trí.
Lập lịch Tối ưu Hóa Độ trễ của Mô hình
Để giảm thiểu độ trễ từ đầu đến cuối, ServerlessLLM cải thiện bộ lập lịch để tối ưu hóa việc chọn máy chủ xem xét đến vị trí địa phương. Điều này bao gồm:
- Bộ ước lượng thời gian tải tinh tếCác mô hình dự đoán thời gian tải từ mạng, bộ nhớ SSD cache, và bộ nhớ cho mỗi máy chủ bằng cách sử dụng các thước đo như độ trễ hàng đợi, kích thước mô hình và băng thông được đo lường.
- Dự đoán thời gian di chuyển chính xácBộ lập lịch ước lượng thời gian di chuyển cho các máy chủ bằng cách sử dụng số lượng token gợi ý và token đầu ra. Nó theo dõi tiến trình suy luận không đồng bộ để tránh gánh nặng.
- Phân bổ có ý thức về vị tríĐối với mỗi yêu cầu suy luận, bộ lập lịch đánh giá thời gian tải và thời gian di chuyển ước lượng trên các máy chủ. Nó chọn máy chủ giảm thiểu độ trễ khởi động dự kiến.
Bộ lập lịch cũng duy trì hàng đợi công việc của máy chủ và tận dụng một kho dữ liệu mạnh mẽ để đảm bảo tính bền vững trong trường hợp lỗi. Cùng nhau, những đổi mới này giảm bớt đầu gối lập lịch trong khi tối đa hóa lợi ích từ vị trí địa phương.
Đánh Giá Hiệu suất của ServerlessLLM
Các thử nghiệm toàn diện đánh giá hiệu quả từ đầu đến cuối của ServerlessLLM so với các hệ thống hiện tại bằng cách sử dụng các mô hình thế giới thực như OPT-175B và các công việc được mô phỏng theo các dấu vết của Azure.
Kết quả quan trọng:
- Thử nghiệm nhỏ: ServerlessLLM tăng tốc quá trình tải checkpoint từ 3,6-8,2 lần so với PyTorch/TensorFlow. Nó đầy đủ băng thông lưu trữ, ngay cả đối với hệ thống NVMe RAID hiện đại.
- Lập lịch: ServerlessLLM giảm độ trễ phân bổ từ 4-12 lần so với lập lịch ngẫu nhiên, làm nổi bật những lợi ích của việc nhận thức vị trí địa phương. Di chuyển trực tuyến ngăn chặn độ trễ hàng đợi.
- Dịch vụ từ đầu đến cuối: Đối với các mô hình lớn như OPT-30B, ServerlessLLM cải thiện độ trễ 99th percentile từ 28-200 lần so với các hệ thống như KServe và Ray Serve. Nó cũng tăng cường hiệu suất tài nguyên.
Những lợi ích đáng kể này chứng minh khả năng của ServerlessLLM vượt qua các chướng ngại trong các triển khai không có máy chủ hiện tại và mở khóa sức mạnh của LLMs cho các dịch vụ tương tác.
Các tối ưu hóa được giới thiệu trong ServerlessLLM, như tải nhiều tầng, di chuyển trực tuyến và lập lịch dựa trên độ trễ, có thể giúp định hình thiết kế của các kiến trúc không có máy chủ trong tương lai. Khả năng của hệ thống giảm thiểu thời gian tải và khởi động mở đường cho triển khai quy mô của các mô hình ngôn ngữ lớn cho các ứng dụng thực tế.
Nhìn Về Phía Trước: Những Thách Thức Tiếp Theo
Mặc dù là một bước tiến quan trọng, ServerlessLLM chỉ đại diện cho bước đầu tiên trong việc tối ưu hóa suy luận không có máy chủ cho các mô hình ngôn ngữ lớn. Một số vấn đề còn mở, bao gồm:
- Dự đoán nhu cầu mô hình thời gian thực để hướng dẫn việc cung cấp và tải trước
- Đặt thông điệp kiểm tra thông minh trên các máy chủ để tối đa hóa việc trúng cache
- Mở rộng thuật toán lập lịch một cách hiệu quả để xử lý các cụm lớn hơn
- Đảm bảo công bằng trong phân phối tài nguyên giữa các mô hình và nhà phát triển
- Tổng quát hóa những đổi mới như di chuyển trực tuyến sang các công việc không có máy chủ khác.
Giải quyết những lĩnh vực này có thể giúp phát triển trên những hứa hẹn của LLMs không có máy chủ và làm cho khả năng của chúng trở nên dễ tiếp cận hơn. Ngoài các tối ưu hóa cấp hệ thống, việc giảm thiểu lượng khí nhà kính và nguy cơ có hại từ các mô hình lớn cũng là một ưu tiên cấp bách.
ServerlessLLM chứng minh rằng có nhiều không gian lớn để đổi mới trong các kiến trúc không có máy chủ thế hệ tiếp theo cho các công việc AI. Khi LLMs tiếp tục tăng kích thước và phổ biến, các giải pháp như ServerlessLLM mở khóa khả năng mở rộng của chúng sẽ trở nên ngày càng quan trọng. Sự kết hợp giữa nghiên cứu hệ thống và học máy có thể giới thiệu các mô hình mới trong cách phục vụ, chia sẻ và mở rộng mô hình AI một cách an toàn và bền vững.