Chuyển đến nội dung chính
Hướng dẫn AI

Học thiết kế hệ thống AI từng bước: Từ suy luận LLM đến tác tử trên môi trường production

Hướng dẫn này giải thích cách sử dụng tài liệu Thiết kế hệ thống AI để học về suy luận LLM, mở rộng quy mô, bộ nhớ đệm, RAG, tác tử, an toàn, đánh giá và tối ưu hóa. Bạn sẽ thiết lập kho mã, đi theo lộ trình học tập, thực hiện một ví dụ thiết kế và áp dụng một khuôn khổ có thể lặp lại cho các hệ thống production cũng như phỏng vấn.

Học thiết kế hệ thống AI từng bước: Từ suy luận LLM đến tác tử production

Dự án Thiết kế Hệ thống AI là gì?

Thiết kế Hệ thống AI là một hướng dẫn giáo dục mã nguồn mở do Amit Shekhar, nhà sáng lập Outcome School, duy trì. Tài liệu giải thích cách thiết kế toàn bộ hệ thống xoay quanh một mô hình ngôn ngữ lớn thay vì xem sản phẩm AI chỉ là một lệnh gọi API đến mô hình.

Hướng dẫn kết nối các thành phần thiết kế hệ thống quen thuộc như cơ sở dữ liệu, bộ nhớ đệm, hàng đợi, bộ cân bằng tải và cổng kết nối với những ràng buộc riêng của AI như GPU, token, yêu cầu chạy dài, đầu ra dạng luồng, hành vi không xác định và chi phí mô hình theo từng yêu cầu.

Thiết kế Hệ thống AI là thiết kế hệ thống thông thường cộng với các ràng buộc vận hành mới do mô hình AI tạo ra.

Tài liệu dành cho kỹ sư AI, kỹ sư LLM, kỹ sư backend, kỹ sư máy học, kỹ sư nền tảng, kiến trúc sư, sinh viên và bất kỳ ai đang chuẩn bị cho một cuộc phỏng vấn thiết kế hệ thống AI.

Vì sao Thiết kế Hệ thống AI quan trọng

Việc gọi API LLM từ một tập lệnh có thể chỉ cần vài dòng mã. Vận hành tính năng đó cho nhiều người dùng lại là một bài toán khác. Hệ thống production phải kiểm soát độ trễ, thông lượng, độ tin cậy, quyền riêng tư, chất lượng đầu ra và chi phí, đồng thời xử lý các prompt dài cùng phản hồi được truyền theo từng token.

Ví dụ, một trợ lý hỗ trợ khách hàng production có thể cần:

  • Bắt đầu phản hồi nhanh, ngay cả khi lưu lượng tăng.
  • Dựa trên tài liệu công ty thông qua cơ chế truy xuất thông tin.
  • Ngăn thông tin riêng tư bị rò rỉ.
  • Xử lý lỗi mô hình, thời gian chờ và giới hạn tốc độ.
  • Đo lường chất lượng câu trả lời dù đầu ra không xác định.
  • Hoạt động trong phạm vi ngân sách token và hạ tầng đã xác định.

Kho lưu trữ sắp xếp các khối xây dựng cần thiết để giải quyết những vấn đề này và liên kết nhiều chủ đề với các bài viết giải thích chuyên sâu hơn.

Chủ đề và tính năng chính

Nền tảng suy luận

Hướng dẫn bắt đầu với token, máy chủ suy luận, công cụ suy luận và phần cứng AI như GPU, TPU và LPU. Tài liệu giải thích rằng LLM tạo văn bản theo phương thức tự hồi quy, dự đoán một token rồi sử dụng đầu ra đó để dự đoán token tiếp theo.

Tài liệu cũng giới thiệu hai giai đoạn suy luận chính:

  • Prefill: xử lý prompt đầu vào và xây dựng trạng thái nội bộ cần thiết cho quá trình tạo nội dung.
  • Decode: tạo phản hồi từng token một.

Các giai đoạn này ảnh hưởng đến thời gian xuất hiện token đầu tiên, số token mỗi giây, thông lượng và lựa chọn hạ tầng. Hướng dẫn cũng đề cập đến prefill phân đoạn và việc tách riêng khối lượng công việc prefill và decode.

Mở rộng, định tuyến và bộ nhớ đệm

Các phần về mở rộng bao gồm mở rộng theo chiều dọc, mở rộng theo chiều ngang, song song tensor, song song pipeline, tự động mở rộng, ước tính GPU và ước tính chi phí. Những phương pháp cân bằng tải dành riêng cho LLM bao gồm số token chưa hoàn thành ít nhất, định tuyến nhận biết tiền tố và các phiên cố định.

Nội dung về bộ nhớ đệm phân biệt một số lớp:

  • Bộ nhớ đệm KV để tái sử dụng các khóa và giá trị attention trong quá trình tạo nội dung.
  • Bộ nhớ đệm prompt cho các tiền tố prompt lặp lại.
  • Bộ nhớ đệm ngữ nghĩa cho các truy vấn có ý nghĩa tương tự.
  • Bộ nhớ đệm embedding để tránh tính toán embedding lặp lại.

Định tuyến mô hình cũng được đề cập, bao gồm các phương pháp dựa trên quy tắc, bộ phân loại, embedding, LLM và phương pháp chuỗi.

Truy xuất và quản lý ngữ cảnh

Hướng dẫn giải thích về embedding, cơ sở dữ liệu vector, chỉ mục vector và sinh tăng cường truy xuất, thường được gọi là RAG. Quy trình truy xuất bao gồm phân tích tài liệu, nạp dữ liệu, chia đoạn, tìm kiếm kết hợp, chuyển đổi truy vấn HyDE, xếp hạng lại, ColBERT, Agentic RAG, GraphRAG và RAG không dùng vector.

Tài liệu cũng giải quyết các giới hạn của cửa sổ ngữ cảnh thông qua cắt ngắn, tóm tắt, cửa sổ trượt, nén và bộ nhớ phân cấp. Các khái niệm liên quan gồm suy giảm ngữ cảnh, hiện tượng mất thông tin ở giữa, suy giảm RoPE và kỹ thuật ngữ cảnh.

Tác nhân và hệ thống đa tác nhân

Các phần về tác nhân xem xét những thành phần cốt lõi của một tác nhân AI, vòng lặp tác nhân đầu-cuối, gọi công cụ, đầu ra có cấu trúc, bộ nhớ và các lỗi thường gặp. Tài liệu cũng phân biệt điều phối AI xác định với hành vi tác nhân tự chủ hơn.

Các chủ đề bổ sung gồm Model Context Protocol, hay MCP, Agent Skills, tác nhân sử dụng máy tính, tác nhân trình duyệt, kỹ thuật vòng lặp, kỹ thuật đồ thị, tác nhân con, các mẫu phối hợp và giao thức Agent2Agent.

Vận hành production

Kho lưu trữ mở rộng từ các lệnh gọi mô hình sang những vấn đề production như:

  • Truyền dữ liệu qua Server-Sent Events hoặc WebSockets.
  • Xử lý bất đồng bộ và hàng đợi tin nhắn cho các tác vụ dài.
  • Giới hạn tốc độ dựa trên số yêu cầu, token, mức độ đồng thời hoặc chi phí.
  • Cổng AI và kiến trúc đa tenant.
  • Guardrail, biện pháp phòng chống prompt injection và red teaming AI.
  • Che giấu PII, vị trí lưu trú dữ liệu, nhật ký kiểm toán và các điều khoản tuân thủ.
  • Tracing, khả năng quan sát, đánh giá và quy trình LLM-as-a-judge.
  • Thời gian chờ, thử lại với backoff, mô hình dự phòng và suy giảm có kiểm soát.

Tài liệu cũng đề cập đến các tối ưu hóa suy luận như lượng tử hóa, batching liên tục, giải mã suy đoán, Flash Attention, Mixture of Experts, chưng cất mô hình và Grouped Query Attention.

Cài đặt và thiết lập

Kho lưu trữ này là một hướng dẫn học tập thay vì thư viện phần mềm, nên không yêu cầu cài đặt gói, khóa API hoặc môi trường runtime. Bạn có thể đọc trực tiếp trên GitHub.

Để lưu một bản sao cục bộ, hãy nhân bản kho lưu trữ bằng Git:

git clone https://github.com/amitshekhariitbhu/ai-system-design.git
cd ai-system-design

Mở README bằng trình xem Markdown hoặc trình soạn thảo có thể hiển thị Markdown. Vì hướng dẫn liên tục được mở rộng, hãy định kỳ cập nhật bản sao cục bộ của bạn:

git pull

README không mô tả lệnh build nào. Nhiệm vụ thiết lập chính là chọn lộ trình học và sử dụng mục lục để điều hướng giữa các khái niệm.

Cách sử dụng hướng dẫn

Lựa chọn 1: Theo dõi lộ trình học đầy đủ

Nếu bạn mới tìm hiểu về thiết kế hệ thống AI, hãy đọc hướng dẫn theo trình tự. Tiến trình khái niệm được đề xuất là:

  1. Tìm hiểu token, máy chủ suy luận và phần cứng AI.
  2. Hiểu prefill, decode, độ trễ và thông lượng.
  3. Học về mở rộng quy mô, ước tính và cân bằng tải.
  4. So sánh các chiến lược lưu vào bộ nhớ đệm và định tuyến mô hình.
  5. Tìm hiểu embedding, cơ sở dữ liệu vector và RAG.
  6. Học cách quản lý cửa sổ ngữ cảnh.
  7. Khám phá streaming, hàng đợi, giới hạn tốc độ và gateway.
  8. Tìm hiểu agent, công cụ, MCP, đầu ra có cấu trúc và bộ nhớ.
  9. Tiếp tục với hệ thống đa agent, đa phương thức và giọng nói.
  10. Bổ sung cơ chế bảo vệ, quyền riêng tư, khả năng quan sát và đánh giá.
  11. Học cách kiểm soát chi phí, hạ tầng tinh chỉnh và tối ưu hóa suy luận.
  12. Áp dụng khung giải quyết vấn đề thiết kế hệ thống của repository.

Lựa chọn 2: Chuẩn bị cho phỏng vấn

Để chuẩn bị phỏng vấn, hãy bắt đầu với phần về cách giải quyết mọi bài toán thiết kế hệ thống AI. Sau đó xem lại các khối kỹ thuật cần thiết cho từng quyết định thiết kế. Khung này gồm tám giai đoạn:

  1. Yêu cầu: xác định người dùng, quy mô, mục tiêu độ trễ, nhu cầu quyền riêng tư và các ràng buộc.
  2. Mục tiêu AI: xác định mô hình cần thực hiện điều gì.
  3. Chuẩn bị dữ liệu: xác định cách dữ liệu nguồn được thu thập, phân tích, làm sạch và lập chỉ mục.
  4. Thiết kế kiến trúc: bố trí gateway, dịch vụ, mô hình, truy xuất, bộ nhớ đệm, hàng đợi và bộ lưu trữ.
  5. Lựa chọn mô hình và prompting: chọn mô hình và chiến lược prompt dựa trên chất lượng, độ trễ và chi phí.
  6. Đánh giá: xác định cách đo lường đầu ra và hành vi của hệ thống.
  7. Triển khai và phục vụ: lập kế hoạch cho suy luận, mở rộng quy mô, streaming và khả năng phục hồi.
  8. Giám sát: theo dõi chất lượng, độ trễ, lỗi, mức tiêu thụ token và chi phí.

Lựa chọn 3: Sử dụng như tài liệu tham khảo

Nếu bạn đã xây dựng các ứng dụng AI, hãy sử dụng mục lục làm tài liệu tham khảo. Ví dụ, tham khảo các phần về bộ nhớ đệm khi cần giảm tính toán lặp lại, các phần về RAG khi chất lượng truy xuất yếu, hoặc các phần về khả năng quan sát và đánh giá khi hệ thống hoạt động về mặt kỹ thuật nhưng chất lượng câu trả lời chưa rõ ràng.

Ví dụ sử dụng cơ bản: Thiết kế trợ lý hỗ trợ

Repository không phải là một framework có thể thực thi, vì vậy “sử dụng” có nghĩa là áp dụng các khái niệm của repository vào một bài toán thiết kế. Hãy xét một trợ lý hỗ trợ khách hàng cần trả lời câu hỏi dựa trên tài liệu nội bộ của công ty.

1. Xác định yêu cầu

Hãy ghi lại các yêu cầu chức năng và vận hành trước khi chọn mô hình:

Trường hợp sử dụng: hỏi đáp hỗ trợ khách hàng
Nguồn kiến thức: tài liệu sản phẩm và chính sách nội bộ
Chế độ phản hồi: văn bản dạng streaming
Yêu cầu chất lượng: câu trả lời dựa trên các tài liệu được truy xuất
Yêu cầu an toàn: không để lộ dữ liệu riêng tư
Mục tiêu vận hành: độ trễ thấp, chi phí được kiểm soát, khả năng chịu lỗi

Khi có số liệu thực tế, hãy bổ sung lưu lượng dự kiến, độ dài prompt, độ dài đầu ra, mức đồng thời cao nhất và độ trễ chấp nhận được. Các giá trị này quyết định việc ước tính token, GPU, thông lượng và chi phí.

2. Phác thảo luồng yêu cầu

Một thiết kế cấp cao được lắp ghép từ các khối xây dựng trong hướng dẫn có thể được biểu diễn như sau:

Client
  -> AI Gateway
  -> Xác thực và giới hạn tốc độ
  -> Cơ chế bảo vệ đầu vào và xử lý PII
  -> Pipeline truy xuất
       -> Embedding truy vấn
       -> Tìm kiếm vector hoặc hybrid
       -> Xếp hạng lại
  -> Xây dựng prompt
  -> Bộ định tuyến mô hình hoặc máy chủ suy luận
  -> Xác thực đầu ra và cơ chế bảo vệ
  -> Phản hồi dạng streaming
  -> Tracing, đánh giá và giám sát chi phí

Đây là bảng tính thiết kế, không phải mã do repository cung cấp. Mỗi thành phần tương ứng với một chủ đề được đề cập trong hướng dẫn.

3. Thiết kế pipeline truy xuất

Phân tích và nhập các tài liệu nguồn, chia chúng thành các đoạn phù hợp, tạo embedding và lưu trữ biểu diễn có thể tìm kiếm. Khi có truy vấn, hãy truy xuất các đoạn liên quan và cân nhắc tìm kiếm hybrid hoặc xếp hạng lại khi độ tương đồng vector không đủ mức liên quan.

Giữ ngữ cảnh cuối cùng trong giới hạn cửa sổ ngữ cảnh của mô hình. Các chiến lược quản lý ngữ cảnh trong hướng dẫn có thể hữu ích khi tài liệu được truy xuất, lịch sử hội thoại và chỉ dẫn cùng cạnh tranh không gian.

4. Lập kế hoạch độ trễ và streaming

Đo riêng thời gian đến token đầu tiên và tốc độ sinh. Prefill ảnh hưởng đến tốc độ bắt đầu sinh, trong khi decode ảnh hưởng đến tốc độ các token tiếp theo xuất hiện. Streaming qua SSE hoặc WebSockets có thể cải thiện khả năng phản hồi cảm nhận được mà không làm giảm lượng tính toán thực tế của mô hình.

5. Bổ sung độ tin cậy và an toàn

Sử dụng timeout, retry với backoff, mô hình dự phòng, cơ chế suy giảm có kiểm soát và xác thực đầu ra. Đặt cơ chế bảo vệ đầu vào và đầu ra xung quanh mô hình, bảo vệ khỏi prompt injection, ẩn PII khi cần và lưu giữ nhật ký kiểm toán phù hợp.

6. Đánh giá và quan sát

Trace toàn bộ yêu cầu thay vì chỉ giám sát lệnh gọi mô hình. Các khía cạnh hữu ích trong hướng dẫn gồm độ trễ, thông lượng, mức sử dụng token, chi phí, hành vi truy xuất, chất lượng đầu ra của mô hình, việc thực thi công cụ và hành vi của agent. Vì đầu ra của LLM không mang tính xác định, việc đánh giá cần nhiều hơn các bài kiểm thử unit so khớp chính xác theo cách thông thường.

Mẹo nâng cao

Tối ưu đúng giai đoạn độ trễ

Đừng xem độ trễ của mô hình là một con số duy nhất. Hãy xác định nút thắt nằm ở prefill, giải mã, truy xuất, xếp hàng hay một công cụ bên ngoài. Thời gian đến token đầu tiên và số token mỗi giây thể hiện những trải nghiệm người dùng khác nhau, đồng thời có thể cần các cách tối ưu khác nhau.

Định tuyến yêu cầu thay vì dùng một mô hình cho mọi việc

Hướng dẫn trình bày một số chiến lược định tuyến mô hình. Một thiết kế production có thể phân loại yêu cầu và chuyển các tác vụ đơn giản đến mô hình rẻ hơn, đồng thời dành mô hình mạnh hơn cho những trường hợp khó. Định tuyến theo chuỗi có thể nâng cấp lên mô hình khác khi phản hồi trước đó chưa đủ đáp ứng.

Áp dụng bộ nhớ đệm ở đúng lớp

Bộ nhớ đệm KV, prompt, ngữ nghĩa và embedding giải quyết những vấn đề khác nhau. Trước tiên, hãy xác định nội dung nào được lặp lại: trạng thái sinh, tiền tố prompt, các câu hỏi tương đương về ngữ nghĩa hay việc tính embedding. Sau đó chọn bộ nhớ đệm phù hợp và cân nhắc tính đúng đắn, độ mới, quyền riêng tư cũng như ranh giới giữa các tenant.

Xem chất lượng truy xuất như một pipeline

Chất lượng RAG không chỉ phụ thuộc vào cơ sở dữ liệu vector. Việc phân tích, chia đoạn, tạo embedding, biến đổi truy vấn, tìm kiếm lai, xếp hạng lại và tập hợp ngữ cảnh đều ảnh hưởng đến câu trả lời cuối cùng. Hãy đánh giá các kết quả truy xuất trung gian trước khi quy trách nhiệm cho mô hình ngôn ngữ.

Chỉ sử dụng agent khi quy trình thực sự cần

Hãy phân biệt giữa việc điều phối có thể dự đoán và một agent tự động chọn công cụ hoặc hành động. Hướng dẫn cũng lưu ý rằng MCP có thể hữu ích cho việc tích hợp công cụ và ngữ cảnh theo chuẩn, nhưng có thể là quá mức cần thiết đối với một quy trình đơn giản. Hãy chọn cách tiếp cận ít phức tạp nhất nhưng vẫn đáp ứng yêu cầu.

Ước tính token, GPU và chi phí từ sớm

Các phép ước tính nhanh giúp phát hiện những giả định tốn kém trước khi triển khai. Hãy ước tính số token đầu vào và đầu ra trên mỗi yêu cầu, khối lượng yêu cầu, mức đồng thời, yêu cầu về thông lượng và chi phí mô hình dự kiến. Lưu ý rằng văn bản tiếng Anh trung bình có khoảng bốn ký tự trên mỗi token, dù quá trình token hóa thực tế phụ thuộc vào tokenizer của mô hình.

Giải thích từng chủ đề bằng lời của bạn

README khuyến nghị giải thích mỗi phần đã hoàn thành cho người khác. Một mở rộng hữu ích là ghi lại đánh đổi đằng sau từng lựa chọn kiến trúc: vì sao cần hàng đợi, vì sao một bộ nhớ đệm cụ thể có ích, vì sao có thể chấp nhận mô hình dự phòng và lựa chọn đó ảnh hưởng thế nào đến chất lượng, độ trễ, tính an toàn hoặc chi phí.

Kế hoạch thực hành đề xuất

  1. Đọc một phần chính của hướng dẫn.
  2. Tóm tắt mục đích và các đánh đổi của phần đó mà không nhìn lại văn bản.
  3. Thêm thành phần đó vào một kiến trúc mẫu.
  4. Xác định ít nhất một chỉ số cho thành phần đó.
  5. Mô tả một chế độ lỗi và một biện pháp giảm thiểu.
  6. Đọc bài viết chuyên sâu được liên kết khi phần tổng quan chưa đủ.
  7. Lặp lại bài tập với các nghiên cứu tình huống như trợ lý lập trình hoặc agent giọng nói thời gian thực.

Cách tiếp cận này biến repository từ một danh sách tài liệu tham khảo thành một chương trình học thiết kế thực tiễn.

Kết luận

AI System Design cung cấp một lộ trình rộng và thân thiện với người mới, từ những nền tảng về suy luận LLM đến các vấn đề production như RAG, agent, an toàn, đánh giá, khả năng quan sát, khả năng chịu lỗi và tối ưu chi phí. Đây không phải là một gói phần mềm để cài đặt, mà là một hướng dẫn có cấu trúc giúp hiểu cách các thành phần AI phối hợp với nhau.

Nếu mới bắt đầu, hãy đi từ những nền tảng; hoặc bắt đầu với khung thiết kế tám bước nếu bạn đang chuẩn bị phỏng vấn. Dù chọn cách nào, hãy áp dụng từng khái niệm vào một hệ thống cụ thể, đo lường tác động và ghi lại các đánh đổi đằng sau những quyết định của bạn.