HƯỚNG DẪN KỸ THUẬT

Trình tối ưu hóa Zero và Sharded

ZeRO (Trình tối ưu hóa dự phòng bằng không) loại bỏ việc sao chép lãng phí bộ nhớ của tính song song dữ liệu bằng cách bảo vệ trạng thái tối ưu hóa, độ dốc và trọng số trên các GPU.

Đọc trong 2 phútCập nhật lần cuối

Tổng quan

It lets you train enormous models with the simplicity of data parallelism but a fraction of the per-GPU memory.

Lặn sâu

Trong song song dữ liệu thông thường, mỗi GPU đều lưu trữ một bản sao đầy đủ dự phòng của trạng thái tối ưu hóa, độ dốc và tham số, điều này cực kỳ lãng phí, đặc biệt đối với Adam, nơi trạng thái tối ưu hóa có thể lớn gấp vài lần kích thước của chính mô hình. ZeRO, được giới thiệu bởi Microsoft trong DeepSpeed, loại bỏ sự dư thừa này bằng cách phân vùng các tensor này trên các GPU để mỗi thiết bị chỉ sở hữu một lát. ZeRO có ba giai đoạn lũy tiến: Trạng thái tối ưu hóa phân đoạn Giai đoạn 1, Giai đoạn 2 thêm phân đoạn độ dốc và Giai đoạn 3 tự phân chia các tham số. Khi cần, GPU sẽ thu thập các phần còn thiếu thông qua giao tiếp, tính toán rồi giải phóng chúng. Kết quả là bộ nhớ trên mỗi GPU thấp hơn đáng kể, cho phép đào tạo từ hàng tỷ đến hàng nghìn tỷ tham số, trong khi vẫn duy trì mô hình lập trình song song dữ liệu dễ dàng.

Hiểu biết kỹ thuật

ZeRO giao dịch thêm giao tiếp để tiết kiệm bộ nhớ. Trong Giai đoạn 3, trước khi chuyển tiếp một lớp, một bộ thu thập tất cả sẽ thu thập các thông số đầy đủ của lớp đó trên mỗi GPU; sau đó các lát không thuộc sở hữu sẽ bị loại bỏ để lấy lại bộ nhớ. Các gradient được giảm phân tán nên mỗi GPU chỉ giữ lại phần gradient phù hợp với các tham số mà nó sở hữu. FSDP (Song song dữ liệu được phân chia hoàn toàn) của PyTorch thực hiện cùng một ý tưởng, gói các mô-đun thành phân đoạn và chia lại một cách nhanh chó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 ZeRO và Trình tối ưu hóa được phân chia

Sharding đang trở thành lựa chọn mặc định cho đào tạo quy mô lớn chứ không phải là một lựa chọn mới lạ. Mong đợi sự tích hợp sâu hơn với tính năng giảm tải (đẩy các lát vào CPU hoặc NVMe thông qua ZeRO-Infinity), chồng chéo tốt hơn giữa tập hợp toàn bộ và giảm phân tán với tính toán để che giấu chi phí của chúng cũng như kết hợp với tính song song của tenxơ và đường ống. Khi các mô hình tiếp tục phát triển, trình tối ưu hóa phân đoạn hiệu quả về bộ nhớ là trọng tâm để điều chỉnh chúng phù hợp với ngân sách phần cứng thực tế.

Triển khai trong thế giới thực

Sử dụng DeepSpeed ​​ZeRO Giai đoạn 2 để tinh chỉnh mô hình ngôn ngữ nhiều tỷ thông số có thể làm tràn bộ nhớ GPU.

Đào tạo với PyTorch FSDP, giúp phân chia các tham số, độ dốc và trạng thái tối ưu hóa trên các GPU và tập hợp chúng theo từng lớp theo yêu cầu.

Áp dụng ZeRO-Offload để đẩy trạng thái tối ưu hóa vào bộ nhớ CPU, cho phép một GPU duy nhất đào tạo một mô hình lớn hơn nhiều lần so với VRAM của nó.

Mở rộng mô hình nghìn tỷ tham số với ZeRO-Infinity bằng cách truyền phát các phân đoạn tham số từ bộ lưu trữ NVMe khi hết bộ nhớ GPU và CPU.

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

1

Xác định các mục tiêu về độ trễ, chất lượng và chi phí trước khi triển khai.

2

Điểm chuẩn trong điều kiện tải và dữ liệu thực tế.

3

Giám sát thiết bị về lỗi, độ lệch và tác động của người dùng.

4

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 ZeRO and Sharded Optimizers quiz

Instant feedback on every answer, and a shareable certificate with a verifiable ID once you pass a course.

Bắt đầu bài kiểm tra

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

Trình tối ưu hóa Lookahead và Lion

Câu hỏi thường gặp

What is ZeRO and Sharded Optimizers?

ZeRO (Trình tối ưu hóa dự phòng bằng không) loại bỏ việc sao chép lãng phí bộ nhớ của tính song song dữ liệu bằng cách bảo vệ trạng thái tối ưu hóa, độ dốc và trọng số trên các GPU. Nó cho phép bạn đào tạo các mô hình khổng lồ với sự đơn giản của song song dữ liệu nhưng chỉ chiếm một phần nhỏ bộ nhớ trên mỗi GPU.

ZeRO loại bỏ sự dư thừa nào so với song song dữ liệu đơn giản?

Tính song song dữ liệu tiêu chuẩn lưu trữ bản sao đầy đủ về trạng thái tối ưu hóa, độ dốc và trọng số trên mỗi GPU; ZeRO phân chia những thứ này để mỗi GPU chỉ giữ một lát.

Tại sao trạng thái tối ưu hóa thường chiếm nhiều bộ nhớ nhất đối với Adam?

Adam duy trì các ước tính đang chạy, chẳng hạn như khoảnh khắc thứ nhất và thứ hai cho mỗi tham số, kết hợp với trọng số chính fp32 có thể làm giảm kích thước của chính mô hình.

Phân đoạn ZeRO Giai đoạn 3 mà Giai đoạn 1 và 2 không có là gì?

Giai đoạn 1 phân chia trạng thái tối ưu hóa phân đoạn, Giai đoạn 2 thêm độ dốc và Giai đoạn 3 tiến xa hơn bằng cách phân chia các tham số mô hình trên các GPU.

Trong ZeRO Giai đoạn 3, làm cách nào GPU có được đầy đủ thông số cần thiết để chuyển tiếp một lớp?

Trước khi tính toán một lớp, một bộ tổng hợp sẽ tập hợp đầy đủ các tham số của nó trên mỗi GPU; Sau khi hoàn thành, các lát không thuộc sở hữu sẽ được giải phóng để lấy lại bộ nhớ.

Tính năng PyTorch nào thực sự triển khai phân đoạn kiểu ZeRO?

Các tham số, độ dốc và trạng thái tối ưu hóa song song dữ liệu được phân chia hoàn toàn (FSDP) của PyTorch, thu thập và phân chia lại chúng một cách nhanh chóng, phản ánh ZeRO.