Avatar
AI
Triton Inference Server

Triton Inference Server là gì?


Nguồn ảnh: tại đây

Mô hình Triton Inference Server là một framwork để triển khai các mô hình deep learning trên sản phẩm thực tế phát triển bởi NVIDIA. Triton cho phép triển khai dưới nhiều dạng kiến trúc khác nhau từ tập trung (centralized) cho đến multi-node. Ngoài ra nó còn cung cấp công cụ quản trị quá trình deployment của chúng ta.

Một số điểm đáng chú ý của Triton:

    1. Khả năng inference song song mạnh mẽ.
    • Trường hợp 1: 2 request đến 2 model khác nhau
    • Trường hợp 2: Nhiều request đến một mô hình, Triton sẽ giúp chúng ta đặt request vào hàng đợi để giảm tải cho GPU/CPU.

    Triton hỗ trợ dynamic batching - tức là cho phép nhóm các request từ người dùng để thực hiện dự đoán theo batch. Lợi ích của việc này đó là cải thiện băng thông.

    1. Các định dạng mô hình thư viện hỗ trợ bao gồm TensorFlow, PyTorch, Caffe thậm chí là ONNX. Giao thức sử dụng để inference là Restful API, gRPC.
    1. Một trong những điểm mạnh lớn nhất của Triton là khả năng làm việc với nhiều mô hình với nhiều phiên bản khác nhau, cho phép deploy và quản lý dễ dàng trên môi trường production.

Team ProtonX đang đưa Triton vào sản phẩm của mình và trình bày tại lớp học Lớp học MLEs 02 - Xây dựng hệ thống học máy lớn. Bạn hãy đón xem nhé.

Avatar
AI
Dự đoán hạ tầng cần triển khai ChatGPT.

Dự đoán hạ tầng cần triển khai ChatGPT


Trong sự kiện Hướng dẫn đưa ChatGPT vào sản phẩm tuần trước có một câu hỏi rất hay đó là:

Thế để triển khai được mô hình ChatGPT thì phần cứng như thế nào ạ? Và triển khai như thế nào ạ?

Một câu hỏi rất hay, mặc dù OpenAI không hề công bố các kỹ thuật và hạ tầng này, dựa trên kinh nghiệm về triển khai mô hình GPT-2 trên Studio., team xin dự đoán một số kỹ thuật như sau?

1) Dự đoán kích cỡ mô hình của ChatGPT.

GPT-3 có 175 tỷ param, nếu mỗi param lưu trữ Float-16, quy ra kích cỡ

175×109×168×1000×1000×1000=350GB\frac{175 \times 10^9 \times 16}{8 \times 1000 \times 1000 \times 1000} = 350 \text{GB}

và theo chi tiết OpenAI công bố thì ChatGPT sử dụng GPT 3.5 khác GPT 3 ở chỗ OpenAI đưa học tăng cường với feedback của con người (RLHF) vào để finetune lại mô hình. Một số tin ngoài cho hay mô hình dao động trong khoảng 350GB đến 800GB.

Với kích cỡ như vậy, với một card đồ họa (GPU) thuộc loại thương mại mạnh mẽ nhất như bây giờ - A100 với 80GB RAM không thể chứa được mô hình này trong riêng một GPU.

2) Đưa mô hình để phục vụ người dùng

Trong trường hợp kích cỡ mô hình lớn hơn RAM của một GPU, nhưng không có nghĩa là chúng ta bó tay.

Giả sử chúng ta sẽ sử dụng 10 GPU A100 tương đương với không gian bộ nhớ là 80×10=800GB80 \times 10 = 800 \text{GB} và với không gian này ta sẽ chứa đủ mô hình bên trên.

Sau đó ta sẽ chia mô hình thành 10 phần tương ứng cho 10 GPU mỗi GPU sẽ làm việc với một phần. Cơ chế này trong tiếng anh gọi là checkpoint shards.

Việc chia này không hề phức tạp với ChatGPT khi mô hình chỉ dùng gia tăng số lượng layer của Transformer Decoder

Việc tính toán sẽ tuần tự từ A100 đầu tiên cho đến A100 cuối. Tất nhiên nếu chỉ sử dụng 10 A100 một lúc thì với kích cỡ mô hình như vậy thì team dự đoán chỉ phục vụ được từ 5-15 người và còn cất rất nhiều kỹ thuật khác để tối ưu.

Một số thư viện AI đã hỗ trợ việc checkpoint shards ví dụ như HuggingFace

3) Scale hệ thống

Trước mắt để hiểu phần này bạn cần biết về Docker và cách đưa một mô hình AI vào trong Docker.

Bên trên chúng ta mới chỉ nhắc đến việc phục vụ được số lượng người dùng nhỏ, vậy với 100 triệu người dùng sau 2 tháng, chúng ta cần hệ thống như thế nào để có thể nhân rộng linh hoạt:

  • Gia tăng GPUs khi người dùng tăng lên
  • Giảm lượng GPUs khi người dùng ít dùng đi

Để scaling hiệu quả, thì team dự đoán có thể Kubernetes là một sự lựa chọn tốt.

Ở đây Một Cluster sẽ có nhiều Node Pool, mỗi Node Pool sẽ có nhiều Node, ta có thể sử dụng mỗi node là một A100 và trong một pool có ít nhất là 10 Node.

Sau đó ta sẽ scale Node Pool trong cluster theo mong muốn trên.

Những đánh giá này hoàn toàn dựa trên kinh nghiệm của ProtonX team và không phải do OpenAI công bố tuy nhiên team hi vọng có thể cho bạn một số cái nhìn khả dụng về thiết kế hệ thống AI lớn như vậy.

Học được nhiều điều hay ho tương tự ở lớp học MLEs - Scale ML System 02.

Avatar
Ba
Hệ thống ProtonX được thiết kế bằng ngôn ngữ lập trình gì?

Hệ thống ProtonX được thiết kế bằng ngôn ngữ lập trình gì?


Hai ngôn ngữ team ProtonX có rất nhiều kinh nghiệm và sử dụng để xây dựng các hệ thống của team.

1. Javascript để xây dựng ứng dụng

Ngôn ngữ được sử dụng cho các ứng dụng web app, ví dụ quản trị lớp học, quản trị nội dung người dùng viết.

  • Phần Front-end sử dụng Framework React JS để xây dựng giao diện. ReactJS mạnh ở điểm cho phép đóng gói các khối giao diện(component) để sử dụng lại nhiều lần. Tuy nhiên điểm yếu là cách viết khó tiếp cận cho người mới, ví dụ Hook.
  • Web server để nhận các yêu cầu của người dùng là Nodejs, điểm mạnh của Nodejs đó là có concurrency cao, một cách ngắn gọn đó là khả năng phục vụ một lượng lớn request mà không gián đoạn đột ngột. Đây là phía Back-end

Front-end giao tiếp với Back-end qua Restful API, đến tận bây giờ vẫn là giao thức phổ biến nhất và cũng được team sử dụng hệ thống AI của mình.



2. Python sử dụng xây dựng các hệ thống AI bao gồm

  • Các dự án triển khai AI ra sản phẩm thực tế team dùng Python
    • Chuyển video trên hệ thống thành văn bản phục vụ máy tìm kiếm
    • Công cụ gõ thông minh Studio. giúp người soạn thảo nội dung Tiếng Việt tốt hơn.

Web server AI chứa mô hình sử dụng Flask được tăng tốc bằng Waitress. Tuy nhiên team chưa thấy vừa lòng khi sử dụng kiến trúc này. Python sẽ tiện để làm tiền xử lý dữ liệu còn làm server thì team tin là không phải lựa chọn tốt.

Cùng học thêm cách thiết kế các hệ thống này ở MLEs - Scale ML System 02, team sẽ chia sẻ chi tiết các kỹ thuật thiết kế hệ thống này.

Filter