Song song dữ liệu
Song song dữ liệu huấn luyện một mô hình nhanh hơn bằng cách sao chép mô hình đó trên nhiều GPU, trong đó mỗi GPU xử lý một phần dữ liệu khác nhau.
Tổng quan
Đây là kỹ thuật chủ lực cho phép các nhóm mở rộng quy mô lên hàng chục hoặc hàng nghìn bộ tăng tốc.
Lặn sâu
Trong song song dữ liệu, mỗi GPU giữ một bản sao giống hệt trọng số của mô hình nhưng xử lý một loạt ví dụ đào tạo nhỏ riêng biệt. Mỗi thiết bị tính toán lượt tiến và lượt lùi một cách độc lập, tạo ra tập hợp độ dốc riêng. Trước khi cập nhật trọng số, độ dốc được tính trung bình trên tất cả các GPU bằng cách sử dụng thao tác giao tiếp all-reduce, để mọi bản sao vẫn được đồng bộ hóa và hoạt động như thể nó được huấn luyện trên một lô kết hợp lớn. Điều này giúp tăng thông lượng một cách hiệu quả: 8 GPU có thể xử lý khoảng 8 lần dữ liệu mỗi bước. Điều đáng chú ý là mỗi GPU phải phù hợp với toàn bộ mô hình, độ dốc của nó và trạng thái tối ưu hóa trong bộ nhớ, do đó, việc song song dữ liệu đơn giản không giúp ích gì khi một mô hình quá lớn đối với một thiết bị.
Hiểu biết kỹ thuật
Thao tác chính là giảm toàn bộ, tính tổng độ dốc trên các thiết bị và phân phối lại kết quả. Giảm toàn bộ vòng, được sử dụng bởi các thư viện như NCCL và Horovod, chuyển các phần chuyển màu xung quanh một vòng logic để tổng giao tiếp không phụ thuộc vào số lượng GPU. DistributedDataParallel của PyTorch chồng chéo giao tiếp này với truyền ngược, kích hoạt đồng bộ hóa độ dốc cho các lớp đầu trong khi các lớp sau vẫn đang tính toán, ẩn phần lớn độ trễ của mạng.
Tác động chiến lược
Chi phí và ngân sách
Các quyết định về kiến trúc sẽ thúc đẩy hiệu suất và chi phí vận hành trong nhiều năm.
Quyết định rõ ràng hơn
Giáo dục kỹ thuật giúp các nhóm chọn nhóm phù hợp chứ không chỉ nhóm mới nhất.
Kiểm soát chất lượng
Lựa chọn kỹ thuật tốt hơn làm giảm sự cố về độ tin cậy trong sản xuất.
Tương lai của tính song song dữ liệu
Song song dữ liệu thuần túy ngày càng được kết hợp với phân mảnh và song song mô hình thành các chiến lược 'song song nD' lai cho các mô hình nghìn tỷ tham số. Mong đợi tính năng nén gradient thông minh hơn, giao tiếp không đồng bộ và chồng chéo cũng như tính năng giảm toàn bộ nhận biết cấu trúc liên kết khai thác NVLink nhanh trong một nút và InfiniBand chậm hơn trên các nút. Khi các cụm phát triển, việc giảm tỷ lệ giao tiếp trên tính toán vẫn là thách thức kỹ thuật trọng tâm để khiến hàng nghìn GPU bận rộn.
Triển khai trong thế giới thực
Đào tạo trình phân loại hình ảnh ResNet trên 8 GPU trong một máy chủ bằng PyTorch DistributedDataParallel, mỗi GPU xử lý 32 trong số 256 hình ảnh.
Mở rộng quá trình đào tạo trước BERT trên hàng trăm GPU bằng Horovod, sử dụng tính năng giảm toàn bộ vòng để đồng bộ hóa độ dốc từng bước.
Tinh chỉnh mô hình đề xuất trên cụm nhiều nút trong đó mỗi nút xử lý các phân đoạn tương tác người dùng khác nhau.
Sử dụng MirroredStrategy của TensorFlow để phổ biến việc đào tạo mô hình tầm nhìn trên nhiều GPU trên một máy trạm duy nhất với những thay đổi mã tối thiểu.
Rủi ro & lan can
Tối ưu hóa một điểm chuẩn có thể che giấu những điểm yếu của hệ thống rộng hơn.
Chi phí cơ sở hạ tầng và bảo trì thường được đánh giá thấp.
Khoảng cách về bảo mật và khả năng quan sát có thể tăng lên khi hệ thống trở nên phức tạp hơn.
Lộ trình thực hiện
Xác định các mục tiêu về độ trễ, chất lượng và chi phí trước khi triển khai.
Điểm chuẩn trong điều kiện tải và dữ liệu thực tế.
Giám sát thiết bị về lỗi, độ lệch và tác động của người dùng.
Chuẩn bị đường dẫn khôi phục và ứng phó sự cố trước khi mở rộng quy mô.
Tiếp tục khám phá
Free newsletter
Get the daily AI briefing
Three verified AI stories every weekday morning, written in plain English. Free forever, no ads.
One email each weekday. Unsubscribe in one click. We never sell or share your address.
Test yourself
Take the Data Parallelism quiz
Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.
Support free AI education. AI Understanding is a 501(c)(3) nonprofit — no ads, no paywall, ever. Make a donation
Hướng dẫn tiếp theo
Quản trị dữ liệu AI
Câu hỏi thường gặp
Song song dữ liệu là gì?
Song song dữ liệu huấn luyện một mô hình nhanh hơn bằng cách sao chép mô hình đó trên nhiều GPU, trong đó mỗi GPU xử lý một phần dữ liệu khác nhau. Đó là kỹ thuật đặc biệt cho phép các nhóm mở rộng quy mô lên hàng chục hoặc hàng nghìn máy gia tốc.
Trong song song dữ liệu tiêu chuẩn, mỗi GPU nắm giữ những gì?
Mỗi GPU giữ một bản sao đầy đủ của mô hình và xử lý một phần riêng biệt của lô dữ liệu, điều này tạo nên sự song song 'dữ liệu' thay vì song song mô hình.
Hoạt động giao tiếp nào giữ cho các bản sao mô hình được đồng bộ hóa ở mỗi bước?
Sau mỗi lần lùi, độ dốc được kết hợp trên các thiết bị thông qua tính năng giảm toàn bộ (thường được tính tổng rồi tính trung bình) để mọi bản sao đều áp dụng cùng một bản cập nhật.
Hạn chế chính của song song dữ liệu đơn giản là gì?
Bởi vì mỗi GPU đều chứa một bản sao đầy đủ của mọi thứ nên việc song song dữ liệu không giúp ích được gì khi một mô hình quá lớn để vừa với một thiết bị.
Tại sao tính năng giảm toàn bộ vòng lại hấp dẫn đối với số lượng GPU lớn?
Ring all-reduce chuyển các phần gradient xung quanh một vòng logic, do đó, tổng băng thông mà mỗi GPU gửi sẽ không đổi bất kể có bao nhiêu GPU tham gia.
PyTorch DistributedDataParallel ẩn độ trễ giao tiếp như thế nào?
DDP bắt đầu đồng bộ hóa gradient cho các lớp trước đó trong khi các lớp sau vẫn đang được tính toán, làm chồng chéo giao tiếp mạng với tính toán.