Skip to content
tinAI
Go back

Hiểu về LLM Inference Engine: Bên trong Nano-vLLM (Phần 1) - Neutree Blog

Bài gốc: Understanding LLM Inference Engines: Inside Nano-vLLM (Part 1) - Neutree Blog

Tác giả: Unknown

Ngày đăng: Dịch ngày:

TL;DR

Bài viết này khám phá cách mà Nano-vLLM, một LLM Inference Engine tối giản, quản lý luồng xử lý từ prompt đến kết quả. Chúng tôi sẽ đi sâu vào kiến trúc và hệ thống xếp lịch để tối ưu hóa tài nguyên GPU trong triển khai thực tế.

Hiểu về LLM Inference Engine: Bên trong Nano-vLLM (Phần 1)

Kiến trúc, Lập lịch và Từ Prompt tới Token

Khi triển khai các mô hình ngôn ngữ lớn trong môi trường thực tế, inference engine trở thành một phần quan trọng. Nano-vLLM, một triển khai nhỏ gọn nhưng đạt chuẩn sản xuất, thể hiện các ý tưởng cốt lõi của vLLM, một trong những inference engine mã nguồn mở phổ biến nhất.

Luồng Chính: Từ Prompt tới Kết Quả

Điểm vào của Nano-vLLM là LLM class với phương thức generate. Bạn cung cấp các prompt và thông số đầu vào, hệ thống sẽ trả về văn bản đã tạo ra.

Từ Prompts tới Sequences

Sau khi gọi generate, mỗi chuỗi prompt được tokenizer chia nhỏ thành các token. Tokenizer biến mỗi prompt thành một sequence: cấu trúc dữ liệu nội bộ đại diện cho một mảng token IDs, là đơn vị làm việc cơ bản trong hệ thống.

Mô Hình Sản Xuất-Tiêu Thụ

Hệ thống sử dụng mô hình sản xuất-tiêu thụ với Scheduler ở trung tâm. Phương thức add_request đóng vai trò như nhà sản xuất: biến đổi prompts thành sequences và đặt vào hàng đợi của Scheduler.

Batching và Sự Đánh Đổi Giữa Throughput-Latency

Batching là quan trọng để giảm thiểu chi phí cố định của GPU. Tuy nhiên, mỗi sequence phải chờ đợi hoàn thành của batch hiện tại, điều này tạo ra sự đánh đổi giữa throughput và latency.

Prefill vs. Decode: Hai Giai Đoạn Sinh

Bên Trong Scheduler

Scheduler quản lý việc quyết định xử lý sequence nào và theo thứ tự nào.

Hàng Đợi Chờ và Chạy

Xử Lý Khi Cạn Kiệt Tài Nguyên

Khi bộ nhớ GPU đầy, scheduler tạm dừng sequence không thể tiếp tục, đảm bảo tài nguyên được quản lý hiệu quả.

Block Manager: Mặt Phẳng Điều Khiển KV Cache

Block Manager phân chia sequences thành các block cố định, tối ưu hóa quản lý bộ nhớ GPU.

Từ Sequences tới Blocks

Một sequence dài có thể chiếm nhiều blocks. Tính năng hash cho phép tái sử dụng những blocks có nội dung giống nhau, tối ưu hóa điện toán và lưu trữ.

Model Runner: Thực Thi và Song Song

Model Runner thực hiện mô hình trên GPU, hỗ trợ tensor parallelism để chia mô hình trên nhiều GPU.

Giao Tiếp Tensor Parallel

Một kiến trúc lãnh đạo-công nhân được sử dụng, với Rank 0 (lãnh đạo) điều phối công việc.

Chuẩn Bị Cho Tính Toán

Chuyển dữ liệu token từ bộ nhớ CPU sang GPU cho phép chuẩn bị trước khi thực hiện tính toán.


Read Original (EN) Quay lại Newsletter