Trí tuệ nhân tạo
TensorRT-LLM: Hướng dẫn toàn diện để tối ưu hóa suy luận mô hình ngôn ngữ lớn để có hiệu suất tối đa

Khi nhu cầu về các mô hình ngôn ngữ lớn (LLM) tiếp tục tăng, việc đảm bảo suy luận nhanh chóng, hiệu quả và có thể mở rộng trở nên quan trọng hơn bao giờ hết. NVIDIA TenorRT-LLM bước vào để giải quyết thách thức này bằng cách cung cấp một bộ công cụ mạnh mẽ và tối ưu hóa được thiết kế riêng cho suy luận LLM. TensorRT-LLM cung cấp một loạt các cải tiến hiệu suất ấn tượng, chẳng hạn như lượng tử hóa, hợp nhất hạt nhân, xử lý hàng loạt trong khi bay và hỗ trợ nhiều GPU. Những tiến bộ này giúp đạt được tốc độ suy luận nhanh hơn tới 8 lần so với các phương pháp dựa trên CPU truyền thống, chuyển đổi cách chúng ta triển khai LLM trong sản xuất.
Hướng dẫn toàn diện này sẽ khám phá mọi khía cạnh của TensorRT-LLM, từ kiến trúc và các tính năng chính cho đến các ví dụ thực tế để triển khai các mô hình. Cho dù bạn là kỹ sư AI, nhà phát triển phần mềm hay nhà nghiên cứu, hướng dẫn này sẽ cung cấp cho bạn kiến thức để tận dụng TensorRT-LLM để tối ưu hóa suy luận LLM trên GPU NVIDIA.
Tăng tốc suy luận LLM với TensorRT-LLM
TensorRT-LLM mang lại những cải tiến đáng kể về hiệu suất suy luận LLM. Theo các thử nghiệm của NVIDIA, các ứng dụng dựa trên TensorRT cho thấy 8x nhanh hơn tốc độ suy luận so với nền tảng chỉ sử dụng CPU. Đây là một tiến bộ quan trọng trong các ứng dụng thời gian thực như chatbot, hệ thống đề xuất và hệ thống tự động đòi hỏi phản hồi nhanh.
Phương thức hoạt động
TensorRT-LLM tăng tốc quá trình suy luận bằng cách tối ưu hóa mạng nơ-ron trong quá trình triển khai bằng các kỹ thuật như:
- Lượng tử hóa: Giảm độ chính xác của trọng số và kích hoạt, thu nhỏ kích thước mô hình và cải thiện tốc độ suy luận.
- Layer và Tensor Fusion: Kết hợp các phép toán như hàm kích hoạt và phép nhân ma trận thành một phép toán duy nhất.
- Điều chỉnh hạt nhân: Chọn hạt nhân CUDA tối ưu cho tính toán GPU, giảm thời gian thực hiện.
Những tối ưu hóa này đảm bảo rằng các mô hình LLM của bạn hoạt động hiệu quả trên nhiều nền tảng triển khai khác nhau, từ trung tâm dữ liệu quy mô lớn đến hệ thống nhúng.
Tối ưu hóa hiệu suất suy luận với TensorRT
Được xây dựng trên mô hình lập trình song song CUDA của NVIDIA, TensorRT cung cấp các tối ưu hóa chuyên biệt cao cho suy luận trên GPU NVIDIA. Bằng cách hợp lý hóa các quy trình như lượng tử hóa, điều chỉnh hạt nhân và hợp nhất các hoạt động tensor, TensorRT đảm bảo rằng LLM có thể chạy với độ trễ tối thiểu.
Một số kỹ thuật hiệu quả nhất bao gồm:
- Lượng tử hóa:Điều này làm giảm độ chính xác số của các tham số mô hình trong khi vẫn duy trì độ chính xác cao, giúp tăng tốc suy luận một cách hiệu quả.
- Tenor Fusion:Bằng cách kết hợp nhiều hoạt động vào một nhân CUDA duy nhất, TensorRT giảm thiểu chi phí bộ nhớ và tăng thông lượng.
- Tự động điều chỉnh hạt nhân:TensorRT tự động chọn kernel tốt nhất cho mỗi hoạt động, tối ưu hóa suy luận cho một GPU nhất định.
Các kỹ thuật này cho phép TensorRT-LLM tối ưu hóa hiệu suất suy luận cho các tác vụ học sâu như xử lý ngôn ngữ tự nhiên, công cụ đề xuất và phân tích video thời gian thực.
Tăng tốc khối lượng công việc AI với TensorRT
TensorRT tăng tốc khối lượng công việc học sâu bằng cách kết hợp các tối ưu hóa độ chính xác như INT8 và FP16. Các định dạng có độ chính xác giảm này cho phép suy luận nhanh hơn đáng kể trong khi vẫn duy trì độ chính xác. Điều này đặc biệt có giá trị trong các ứng dụng thời gian thực, nơi độ trễ thấp là yêu cầu quan trọng.
INT8 và FP16 việc tối ưu hóa đặc biệt hiệu quả trong:
- Video Streaming:Các tác vụ xử lý video dựa trên AI, như phát hiện đối tượng, được hưởng lợi từ những tối ưu hóa này bằng cách giảm thời gian xử lý khung hình.
- Hệ thống khuyến nghị:Bằng cách tăng tốc suy luận cho các mô hình xử lý lượng lớn dữ liệu người dùng, TensorRT cho phép cá nhân hóa theo thời gian thực ở quy mô lớn.
- Xử lý ngôn ngữ tự nhiên (NLP):TensorRT cải thiện tốc độ của các tác vụ NLP như tạo văn bản, dịch thuật và tóm tắt, khiến chúng phù hợp với các ứng dụng thời gian thực.
Triển khai, chạy và mở rộng quy mô với NVIDIA Triton
Sau khi mô hình của bạn được tối ưu hóa với TensorRT-LLM, bạn có thể dễ dàng triển khai, chạy và mở rộng quy mô bằng cách sử dụng Máy chủ suy luận NVIDIA Triton. Triton là phần mềm nguồn mở hỗ trợ xử lý hàng loạt động, nhóm mô hình và thông lượng cao. Nó cung cấp một môi trường linh hoạt để quản lý các mô hình AI ở quy mô lớn.
Một số tính năng chính bao gồm:
- Thực hiện mô hình đồng thời: Chạy nhiều mô hình cùng lúc, tối đa hóa việc sử dụng GPU.
- Lô động: Kết hợp nhiều yêu cầu suy luận thành một đợt, giảm độ trễ và tăng thông lượng.
- Đầu vào âm thanh/video phát trực tuyến: Hỗ trợ luồng đầu vào trong các ứng dụng thời gian thực, chẳng hạn như phân tích video trực tiếp hoặc dịch vụ chuyển giọng nói thành văn bản.
Điều này khiến Triton trở thành một công cụ có giá trị để triển khai các mô hình được tối ưu hóa TensorRT-LLM trong môi trường sản xuất, đảm bảo khả năng mở rộng và hiệu quả cao.
Các tính năng cốt lõi của TensorRT-LLM cho suy luận LLM
API Python nguồn mở
TensorRT-LLM cung cấp một mô-đun cao và API Python nguồn mở, đơn giản hóa quá trình xác định, tối ưu hóa và thực thi LLM. API cho phép các nhà phát triển tạo LLM tùy chỉnh hoặc sửa đổi các LLM được xây dựng sẵn để phù hợp với nhu cầu của họ, mà không cần kiến thức chuyên sâu về CUDA hoặc các khuôn khổ học sâu.
Phân loại trong chuyến bay và sự chú ý được phân trang
Một trong những tính năng nổi bật của TensorRT-LLM là Phân lô trên chuyến bay, tối ưu hóa việc tạo văn bản bằng cách xử lý nhiều yêu cầu đồng thời. Tính năng này giảm thiểu thời gian chờ và cải thiện việc sử dụng GPU bằng cách sắp xếp chuỗi động.
Ngoài ra, Đã phân trang Chú ý đảm bảo rằng việc sử dụng bộ nhớ vẫn ở mức thấp ngay cả khi xử lý các chuỗi đầu vào dài. Thay vì phân bổ bộ nhớ liền kề cho tất cả các mã thông báo, sự chú ý được phân trang chia bộ nhớ thành các "trang" có thể được sử dụng lại một cách động, ngăn ngừa phân mảnh bộ nhớ và cải thiện hiệu quả.
Suy luận đa GPU và đa nút
Đối với các mô hình lớn hơn hoặc khối lượng công việc phức tạp hơn, TensorRT-LLM hỗ trợ đa GPU và suy luận đa nút. Khả năng này cho phép phân phối các phép tính mô hình trên nhiều GPU hoặc nút, cải thiện thông lượng và giảm thời gian suy luận tổng thể.
Hỗ trợ FP8
Với sự ra đời của FP8 (dấu chấm động 8 bit), TensorRT-LLM tận dụng GPU H100 của NVIDIA để chuyển đổi trọng số mô hình sang định dạng này để suy luận được tối ưu hóa. FP8 cho phép giảm mức tiêu thụ bộ nhớ và tính toán nhanh hơn, đặc biệt hữu ích trong các triển khai quy mô lớn.
Kiến trúc và thành phần TensorRT-LLM
Hiểu được kiến trúc của TensorRT-LLM sẽ giúp bạn tận dụng tốt hơn khả năng của nó để suy luận LLM. Hãy cùng phân tích các thành phần chính:
Định nghĩa mô hình
TensorRT-LLM cho phép bạn định nghĩa LLM bằng cách sử dụng API Python đơn giản. API xây dựng một biểu diễn đồ thị của mô hình, giúp quản lý dễ dàng hơn các lớp phức tạp liên quan đến kiến trúc LLM như GPT hoặc BERT.
Ràng buộc trọng lượng
Trước khi biên dịch mô hình, các trọng số (hoặc tham số) phải được liên kết với mạng. Bước này đảm bảo rằng các trọng số được nhúng trong công cụ TensorRT, cho phép suy luận nhanh và hiệu quả. TensorRT-LLM cũng cho phép cập nhật trọng số sau khi biên dịch, tăng thêm tính linh hoạt cho các mô hình cần cập nhật thường xuyên.
Phù hợp mẫu và hợp nhất
Chiến dịch Fusion là một tính năng mạnh mẽ khác của TensorRT-LLM. Bằng cách hợp nhất nhiều hoạt động (ví dụ, phép nhân ma trận với các hàm kích hoạt) thành một hạt nhân CUDA duy nhất, TensorRT giảm thiểu chi phí liên quan đến việc khởi chạy nhiều hạt nhân. Điều này làm giảm việc truyền bộ nhớ và tăng tốc suy luận.
bổ sung
Để mở rộng khả năng của TensorRT, các nhà phát triển có thể viết bổ sung—các hạt nhân tùy chỉnh thực hiện các nhiệm vụ cụ thể như tối ưu hóa các khối chú ý nhiều đầu. Ví dụ, Flash-Chú ý plugin cải thiện đáng kể hiệu suất của các lớp chú ý LLM.
Điểm chuẩn: Tăng hiệu suất TensorRT-LLM
TensorRT-LLM chứng minh hiệu suất tăng đáng kể cho suy luận LLM trên nhiều GPU khác nhau. Sau đây là so sánh về tốc độ suy luận (được đo bằng token mỗi giây) khi sử dụng TensorRT-LLM trên nhiều GPU NVIDIA khác nhau:
Mô hình | Độ chính xác | Chiều dài đầu vào/đầu ra | H100 (80GB) | A100 (80GB) | L40S FP8 |
---|---|---|---|---|---|
GPTJ6B | FP8 | 128/128 | 34,955 | 11,206 | 6,998 |
GPTJ6B | FP8 | 2048/128 | 2,800 | 1,354 | 747 |
LLaMA v2 7B | FP8 | 128/128 | 16,985 | 10,725 | 6,121 |
LLaMA v3 8B | FP8 | 128/128 | 16,708 | 12,085 | 8,273 |
Các điểm chuẩn này cho thấy TensorRT-LLM mang lại những cải tiến đáng kể về hiệu suất, đặc biệt là đối với các chuỗi dài hơn.
Thực hành: Cài đặt và xây dựng TensorRT-LLM
Bước 1: Tạo môi trường chứa
Để dễ sử dụng, TensorRT-LLM cung cấp hình ảnh Docker để tạo ra môi trường được kiểm soát cho việc xây dựng và chạy mô hình.
docker build --pull \ --target devel \ --file docker/Dockerfile.multi \ --tag tensorrt_llm/devel:latest .