Tensor Parallelism
Tìm hiểu cách tensor parallelism phân mảnh các ma trận trọng số trên các GPU để đào tạo các mô hình khổng lồ. Khám phá sự khác biệt của nó so với song song dữ liệu (data parallelism) với Ultralytics.
Tensor Parallelism là một kỹ thuật distributed training nâng cao được sử dụng trong machine learning để chia nhỏ các cấu trúc toán học lớn, hay còn gọi là tensor, trên nhiều phần cứng tăng tốc như GPUs hoặc TPU. Khi huấn luyện các mô hình deep learning khổng lồ, số lượng tham số có thể dễ dàng vượt quá dung lượng bộ nhớ của một thiết bị duy nhất. Thay vì đặt toàn bộ lớp neural network trên một GPU, tensor parallelism thực hiện sharding (phân mảnh) các ma trận trọng số và chia nhỏ các phép toán (như nhân ma trận) trên nhiều thiết bị trong một cụm. Điều này cho phép mô hình tận dụng kết hợp bộ nhớ và sức mạnh tính toán của toàn bộ hệ thống phần cứng, thực thi các tính toán song song theo mô hình Single-Program Multiple-Data (SPMD) đồng thời đồng bộ hóa kết quả thông qua các kết nối tốc độ cao như NVIDIA NVLink.
Link to this sectionCách thức hoạt động của Tensor Parallelism#
Cốt lõi của một neural network là các phép nhân ma trận. Tensor parallelism phân phối các phép toán này bằng cách chia ma trận theo hàng hoặc theo cột. Ví dụ, trong một lớp kết nối đầy đủ (fully connected layer) hoặc cơ chế chú ý transformer, một GPU có thể tính toán nửa bên trái của ma trận trong khi GPU khác tính toán nửa bên phải. Sau khi các phép tính song song hoàn tất, các thiết bị sẽ giao tiếp với nhau—thường sử dụng các All-Reduce collective operations nhanh—để tổng hợp các kết quả một phần trước khi chuyển tensor hoàn chỉnh sang lớp tiếp theo. Các tiến bộ học thuật gần đây trong năm 2025 đang tối ưu hóa hơn nữa quy trình này bằng cách giới thiệu các kích hoạt được đồng bộ hóa một phần để giảm bớt chi phí giao tiếp vốn thường là nút thắt cổ chai của các cụm tính toán lớn.
Link to this sectionPhân biệt các kỹ thuật song song liên quan#
Việc hiểu cách tensor parallelism phù hợp với bối cảnh rộng lớn hơn của tính toán phân tán đòi hỏi phải phân biệt nó với các chiến lược phổ biến khác:
- Tensor Parallelism so với Model Parallelism: Tensor parallelism là một danh mục phụ rất cụ thể của model parallelism. Trong khi model parallelism nói chung đề cập đến việc chia tách một mô hình trên các thiết bị theo bất kỳ cách nào, thì tensor parallelism chỉ đề cập nghiêm ngặt đến việc sharding các tensor riêng lẻ bên trong một lớp đơn lẻ.
- Tensor Parallelism so với Pipeline Parallelism: Pipeline parallelism là một dạng model parallelism khác giúp phân vùng mạng theo chiều sâu—đặt các lớp đầu tiên trên GPU 0, các lớp tiếp theo trên GPU 1, v.v. Điều này tạo ra các phụ thuộc tuần tự được gọi là các pipeline bubble. Tensor parallelism chia nhỏ chính các lớp đó, thực thi chúng đồng thời mà không có độ trễ tuần tự, nhưng yêu cầu băng thông mạng cao hơn nhiều.
- Tensor Parallelism so với Data Parallelism: Trong data parallelism, toàn bộ mô hình được sao chép đầy đủ trên mọi GPU và chỉ có tập dữ liệu huấn luyện là được chia nhỏ trên các thiết bị. Đối với các kiến trúc được tối ưu hóa cao như Ultralytics YOLO26, vốn phù hợp dễ dàng trên các GPU hiện đại, data parallelism thông qua
DistributedDataParallelcủa PyTorch là phương pháp mặc định. Tensor parallelism thường chỉ cần thiết khi các tham số của một lớp đơn lẻ vượt quá VRAM của phần cứng, gây ra lỗi hết bộ nhớ (OOM).
Link to this sectionCác ứng dụng trong thực tế#
Tensor parallelism là không thể thiếu trong cơ sở hạ tầng AI hiện đại, đặc biệt là đối với các kiến trúc tiên tiến đòi hỏi quy mô tính toán khổng lồ:
- Huấn luyện các mô hình ngôn ngữ lớn (LLMs): Các mô hình nền tảng khổng lồ như Llama 3 của Meta và DeepSeek V3 sử dụng các framework như NVIDIA Megatron-LM để triển khai tensor parallelism. Vì kích thước hidden dimension và các attention head của các mô hình này quá lớn, việc chia nhỏ chúng trên một node 8-GPU là bắt buộc để huấn luyện hiệu quả và duy trì độ trễ thấp trong quá trình real-time inference.
- Các mô hình thị giác lớn (LVMs) và tạo 3D: Khi thị giác máy tính mở rộng quy mô hướng tới các hệ thống suy luận đa phương thức khổng lồ, các nhà nghiên cứu sử dụng tensor parallelism kết hợp với pipeline parallelism trên các dịch vụ như AWS SageMaker để huấn luyện các vision transformer (ViT) khổng lồ. Kỹ thuật này cho phép xử lý hình ảnh độ phân giải cao và tạo video vốn đòi hỏi các khối bộ nhớ liền kề khổng lồ.
Link to this sectionTriển khai Tensor Parallelism trong PyTorch#
Trước đây, các kỹ sư phải viết logic phân tán tùy chỉnh phức tạp để shard tensor. Gần đây, PyTorch đã giới thiệu DTensor (Distributed Tensor), giúp đơn giản hóa quy trình này một cách tự nhiên. Dưới đây là ví dụ về việc tạo một tensor được chia nhỏ theo hàng bằng cách sử dụng official PyTorch Distributed Tensor API:
import torch
from torch.distributed.device_mesh import init_device_mesh
from torch.distributed.tensor import Shard, distribute_tensor
# Initialize a 1D device mesh across 2 GPUs
mesh = init_device_mesh("cuda", (2,))
# Create a standard PyTorch tensor (e.g., representing a layer's weights)
local_tensor = torch.randn(1024, 1024)
# Distribute the tensor across the GPUs by sharding along the first dimension (row-wise)
# Each GPU now holds a (512, 1024) chunk of the original tensor
distributed_tensor = distribute_tensor(local_tensor, mesh, [Shard(0)])
print(f"Global shape: {distributed_tensor.shape}, Local shape: {distributed_tensor.to_local().shape}")For edge-optimized vision tasks and rapid model deployment, developers typically rely on the Ultralytics Platform to automatically handle optimal hardware utilization. While multi-billion parameter foundation models require manual tensor parallelism configurations, you can efficiently scale training for models like YOLO26 using simple CLI commands out-of-the-box. This ensures maximum throughput by seamlessly utilizing native data parallelism techniques alongside robust model training tips.






