Tensor Parallelism Là Gì? Giải Thích Dễ Hiểu Cho Người Mới

Câu trả lời nhanh
Tensor Parallelism là kỹ thuật chia ma trận trọng số của model AI thành nhiều phần, mỗi GPU xử lý một phần. Khác với Data Parallelism (nhân bản toàn bộ model), Tensor Parallelism cắt trực tiếp bên trong từng phép nhân ma trận, giúp train và chạy inference các model siêu lớn mà một GPU không chứa nổi.

Tensor Parallelism Là Gì?

Minh họa Tensor Parallelism chia ma trận trọng số cho nhiều GPU
Minh họa Tensor Parallelism chia ma trận trọng số cho nhiều GPU

Tensor Parallelism (song song tensor) là kỹ thuật chia một ma trận trọng số lớn thành nhiều phần nhỏ, mỗi phần chạy trên một GPU riêng biệt. Thay vì nhân bản toàn bộ model lên từng card, bạn tách bản thân các phép nhân ma trận ra để nhiều GPU cùng tính song song.

Nói đơn giản hơn: khi một model quá lớn không vừa trên một GPU, tensor parallelism giúp “cắt” từng lớp của model theo chiều ngang rồi phân cho nhiều GPU cùng xử lý.

Tại Sao Cần Tensor Parallelism?

Các model AI hiện đại như GPT-4, Claude, hay Llama 3 có hàng chục đến hàng trăm tỷ parameter. Một GPU NVIDIA H100 có 80GB VRAM, không đủ chứa nổi toàn bộ trọng số của những model này. Bạn cần chia tải.

Có ba cách chính để chia model trên nhiều GPU:

  • Data Parallelism: Mỗi GPU chứa nguyên model, chia dữ liệu training
  • Pipeline Parallelism: Chia model theo lớp, GPU này làm xong rồi gửi cho GPU kế tiếp
  • Tensor Parallelism: Chia từng phép toán ma trận bên trong một lớp

Tensor parallelism là cách chi tiết nhất, can thiệp trực tiếp vào cấp độ phép nhân ma trận.

Tensor Parallelism Hoạt Động Thế Nào?

Trong một mạng nơ-ron, mỗi lớp chủ yếu thực hiện phép nhân ma trận: Y = X × W. Ma trận trọng số W có kích thước rất lớn. Tensor parallelism chia W thành nhiều mảnh.

Có hai cách chia chính:

Column Parallelism (Chia theo cột)

Ma trận W được cắt theo chiều dọc thành n phần. Mỗi GPU giữ một cột của W và tính riêng. Kết quả từ các GPU là độc lập với nhau, chỉ cần concatenate (ghép) lại là ra kết quả cuối.

Cách này hữu ích cho lớp feed-forward, nơi mỗi GPU tính một tập neuron riêng.

Row Parallelism (Chia theo hàng)

Ma trận W được cắt theo chiều ngang. Đầu vào X cũng chia theo cột tương ứng. Mỗi GPU nhân phần của mình, rồi cộng kết quả lại bằng phép all-reduce.

Cách này thường dùng cho lớp attention projection, nơi cần tổng hợp thông tin.

Ví Dụ Thực Tế

Gi sử bạn training model có lớp feed-forward với ma trận trọng số 4096 × 16384. Nếu dùng 4 GPU, column parallelism sẽ cắt ma trận thành 4 mảnh 4096 × 4096. Mỗi GPU chỉ cần nhân ma trận 4096 × 4096 thay vì toàn bộ.

Đây chính là cách Megatron-LM của NVIDIA triển khai tensor parallelism. Kết hợp column và row parallelism khéo léo, họ giảm thiểu communication giữa các GPU xuống mức tối thiểu.

Ưu Điểm Của Tensor Parallelism

Training model siêu lớn: Không có cách nào khác để train model 100 tỷ parameter trên phần cứng hiện tại nếu không chia tensor.

Giảm memory per GPU: Mỗi GPU chỉ cần chứa một phần trọng số, giảm áp lực VRAM.

Inference nhanh hơn: Khi Serving model lớn, tensor parallelism giúp giảm độ trễ vì nhiều GPU tính song song.

Nhược Điểm Cần Biết

Communication overhead: Các GPU phải liên lạc với nhau qua NVLink hoặc InfiniBand. Nếu băng thông mạng chậm, overhead có thể lớn hơn lợi ích.

Phức tạp trong triển khai: Khó implement hơn data parallelism nhiều. Bạn cần hiểu kiến trúc model để biết chỗ nào cắt cột, chỗ nào cắt hàng.

Scale limit: Tensor parallelism thường hiệu quả trong phạm vi 2-8 GPU trên cùng một node (cùng máy). Vượt ra ngoài node cần kết hợp thêm pipeline parallelism.

Tensor Parallelism vs Data Parallelism vs Pipeline Parallelism

Nhiều người nhầm lẫn ba khái niệm này. Mình phân biệt nhanh:

Data Parallelism: Mỗi GPU có nguyên model, chia data. Đơn giản nhất, scale tốt nhất, nhưng cần model vừa trên 1 GPU.

Pipeline Parallelism: Chia model thành các stage theo chiều dọc (lớp đầu trên GPU 1, lớp giữa trên GPU 2…). Giống dây chuyền sản xuất.

Tensor Parallelism: Chia từng lớp theo chiều ngang. Cận phẫu thuật nhất, cần bandwidth cực cao giữa GPU.

Thực tế, training model lớn người ta dùng 3D Parallelism — kết hợp cả ba cách trên cùng lúc.

Ai Đang Dùng Tensor Parallelism?

Megatron-LM (NVIDIA): Framework open-source phổ biến nhất cho tensor parallelism. DeepSpeed của Microsoft cũng tích hợp sẵn.

vLLM: Thư viện inference hàng đầu hiện nay, hỗ trợ tensor parallelism qua parameter tensor_parallel_size.

Các lab lớn: OpenAI, Google, Anthropic, Meta đều dùng tensor parallelism khi training model hàng trăm tỷ parameter. Không có lựa chọn khác.

Khi Nào Bạn Nên Dùng?

Nếu bạn chạy model nhỏ hơn 7 tỷ parameter trên GPU 24GB+, data parallelism là đủ. Đừng phức tạp hóa vấn đề.

Nếu bạn serving Llama 70B hoặc model tương tự trên nhiều GPU, tensor parallelism là bắt buộc. vLLM khiến việc này dễ hơn nhiều, chỉ cần cấu hình một dòng.

Nếu bạn training model từ scratch hoặc fine-tune model lớn, kết hợp tensor + data + pipeline parallelism. Framework như DeepSpeed hoặc Megatron-LM sẽ lo phần khó.

Kết Luận

Tensor Parallelism là kỹ thuật then chốt giúp ngành AI train được những model khổng lồ. Không có nó, model 100 tỷ parameter vẫn chỉ là ý tưởng trên giấy.

Bạn không cần hiểu từng chi tiết kỹ thuật để dùng nó, framework đã trừu tượng hóa hết. Nhưng nếu tự train model hoặc tối ưu inference, hiểu tensor parallelism sẽ giúp bạn cấu hình phần cứng thông minh hơn, tránh lãng phí GPU.

ThienLv

Mình là Thien, người tạo ra blog này. Ban ngày làm marketing, ban đêm cày tiền online và chơi với AI. Blog này là nơi mình ghi lại những gì mình thử qua — tool nào xịn, chiến thuật nào chạy được, cái gì thất bại. Mình không giỏi nhất, nhưng mình thích chia sẻ thật. Chill với một ly cafe đá là lý tưởng nhất.

Xem tất cả bài viết →

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *