Pipeline Parallelism
Khám phá cách pipeline parallelism phân vùng các deep learning model trên nhiều GPU. Tìm hiểu cách ngăn lỗi out-of-memory và tối ưu distributed training.
Song song hóa theo pipeline là một kỹ thuật huấn luyện phân tán nâng cao, được thiết kế để phân chia một mạng neural (NN) lớn trên nhiều thiết bị tính toán, chẳng hạn như GPU, bằng cách tách model theo chiều sâu. Khi trọng số model và trạng thái của optimizer trong một kiến trúc hiện đại vượt quá giới hạn bộ nhớ của một accelerator đơn lẻ, các kỹ sư sẽ chia các layer tuần tự của mạng thành các "stage". Ví dụ, 10 layer đầu tiên có thể nằm trên GPU 0, trong khi 10 layer tiếp theo nằm trên GPU 1. Trong lượt forward, dữ liệu di chuyển từ thiết bị này sang thiết bị tiếp theo. Bằng cách nối chuỗi các thiết bị này, các nhà nghiên cứu có thể huấn luyện những thuật toán deep learning (DL) quy mô lớn mà không gặp phải [lỗi hết bộ nhớ](https://ultralytics-translation-6.invalid làm giới hạn phần cứng).
Cách thức hoạt động của song song hóa theo pipeline#
Việc triển khai ngây thơ bằng cách chia các layer giữa các thiết bị dẫn đến tình trạng kém hiệu quả nghiêm trọng, được gọi là "pipeline bubble". Vì các layer được xử lý tuần tự, GPU 1 hoàn toàn ở trạng thái nhàn rỗi trong khi GPU 0 xử lý các layer ban đầu. Để tối đa hóa mức sử dụng phần cứng, các pipeline scheduler hiện đại chia batch size tổng thể thành các "micro-batch" nhỏ hơn.
Thay vì chờ toàn bộ batch hoàn tất, GPU 0 ngay lập tức bắt đầu xử lý micro-batch thứ hai ngay khi chuyển micro-batch đầu tiên cho GPU 1. Các công cụ như Microsoft DeepSpeed và PyTorch Distributed Pipelining API thường sử dụng chiến lược lập lịch 1F1B (Một lượt forward, một lượt backward). Phương pháp này luân phiên tính toán lượt forward và backward cho các micro-batch khác nhau một cách đồng thời, qua đó giảm đáng kể pipeline bubble và mức tiêu thụ bộ nhớ. Những cải tiến gần đây trong năm 2024 và 2025 thậm chí còn giới thiệu Zero Bubble Pipeline Parallelism, một chiến lược dự đoán trọng số có nhận biết optimizer, gần như loại bỏ thời gian nhàn rỗi trên các cụm máy tính.
Phân biệt các kỹ thuật song song hóa liên quan#
Song song hóa theo pipeline hoạt động trong một hệ sinh thái rộng hơn gồm các chiến lược điện toán phân tán. Hiểu rõ những khác biệt này là yếu tố then chốt để mở rộng hiệu quả các model AI:
- Song song hóa model: Đây là thuật ngữ bao quát cho việc chia một model trên nhiều thiết bị. Song song hóa theo pipeline là một dạng rất cụ thể của song song hóa model, trong đó kiến trúc được phân chia tuần tự theo chiều sâu.
- Song song hóa tensor: Không giống cách chia theo chiều sâu của song song hóa theo pipeline, song song hóa tensor chia nhỏ từng phép toán ma trận theo chiều ngang trên các GPU. Hai kỹ thuật này thường được kết hợp để tối đa hóa throughput.
- Song song hóa dữ liệu: Song song hóa dữ liệu nhân bản toàn bộ model trên mỗi GPU và phân phối dữ liệu huấn luyện giữa các GPU. Đối với các kiến trúc phát hiện đối tượng và phân đoạn ảnh nhỏ gọn, được tối ưu hóa cao như model Ultralytics YOLO26, vốn có thể chạy nguyên bản trên VRAM của một thiết bị đơn lẻ, song song hóa dữ liệu thông qua DDP của PyTorch là phương pháp được ưu tiên để tăng tốc quá trình huấn luyện.
Các Ứng dụng Thực tế trong AI và ML#
Mở rộng cơ sở hạ tầng phức tạp là yếu tố thiết yếu để xây dựng các hệ thống AI hiện đại, tiên tiến nhất:
- Huấn luyện foundation model: Việc phát triển các mô hình ngôn ngữ lớn (LLMs) khổng lồ và các foundation model như Llama 3 của Meta đòi hỏi phải kết hợp song song hóa tensor, dữ liệu và pipeline. Các framework như NVIDIA Megatron-LM tận dụng những chiến lược này để huấn luyện các kiến trúc hỗn hợp chuyên gia (MoE) quy mô lớn trên hàng nghìn GPU thuộc các nền tảng đám mây như AWS SageMaker.
- Chẩn đoán y khoa độ phân giải cao: Trong AI trong lĩnh vực y tế và mô hình hóa khoa học, các ảnh quét thể tích 3D thường tạo ra activation quá lớn để một accelerator xử lý. Việc pipeline các layer của mạng qua nhiều node cho phép các bệnh viện nghiên cứu huấn luyện các mạng sâu trên những dataset MRI khổng lồ mà không làm giảm độ phân giải ảnh.
Ví dụ code: Khái niệm phân vùng layer#
Trước đây, việc phân phối các layer trên nhiều thiết bị đòi hỏi code tùy chỉnh phức tạp. Ngày nay, logic nền tảng ánh xạ các layer cụ thể tới những mã định danh thiết bị khác nhau. Dưới đây là biểu diễn khái niệm về cách các stage của mạng được chia trên nhiều thiết bị trong PyTorch, tạo nền tảng cho các hoạt động song song hóa theo pipeline:
import torch.nn as nn
class SimplePipelineModel(nn.Module):
def __init__(self):
super().__init__()
# Stage 1 is assigned to the first GPU
self.stage1 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:0")
# Stage 2 is assigned to the second GPU
self.stage2 = nn.Sequential(nn.Linear(1024, 1024), nn.ReLU()).to("cuda:1")
def forward(self, x):
# The forward pass seamlessly crosses device boundaries
x_out = self.stage1(x.to("cuda:0"))
return self.stage2(x_out.to("cuda:1"))Mặc dù việc tạo foundation model đòi hỏi khả năng điều phối phức tạp, việc triển khai các dự án thị giác máy tính (CV) nhanh và có khả năng mở rộng nhìn chung đơn giản hơn. Để triển khai model tinh gọn và tự động sử dụng nhiều GPU, các nhà phát triển tin dùng Ultralytics Platform để tự động mở rộng workload. Bằng cách tận dụng các mẹo huấn luyện model mạnh mẽ, nền tảng này trừu tượng hóa việc quản lý cơ sở hạ tầng, cho phép các kỹ sư tập trung hoàn toàn vào việc xây dựng các giải pháp AI chính xác có khả năng suy luận theo thời gian thực.









