Logo Zephyrnet

Thư viện song song mô hình Amazon SageMaker hiện tăng tốc khối lượng công việc PyTorch FSDP lên tới 20% | Dịch vụ web của Amazon

Ngày:

Đào tạo mô hình ngôn ngữ lớn (LLM) đã trở nên phổ biến trong năm qua với việc phát hành một số mô hình phổ biến như Llama 2, Falcon và Mistral. Khách hàng hiện đang đào tạo trước và tinh chỉnh LLM từ 1 tỷ đến hơn 175 tỷ thông số để tối ưu hóa hiệu suất mô hình cho các ứng dụng trong nhiều ngành, từ chăm sóc sức khỏe đến tài chính và tiếp thị.

Việc đào tạo các mô hình hoạt động ở quy mô này có thể là một thách thức. LLM có độ chính xác cao có thể yêu cầu hàng terabyte dữ liệu đào tạo và hàng nghìn hoặc thậm chí hàng triệu giờ tính toán bằng máy gia tốc để đạt được độ chính xác mục tiêu. Để hoàn thành việc đào tạo và ra mắt sản phẩm kịp thời, khách hàng dựa vào các kỹ thuật song song để phân phối khối lượng công việc khổng lồ này trên hàng nghìn thiết bị tăng tốc. Tuy nhiên, các kỹ thuật song song này có thể khó sử dụng: các kỹ thuật và thư viện khác nhau chỉ tương thích với một số khối lượng công việc nhất định hoặc bị giới hạn ở một số kiến ​​trúc mô hình nhất định, hiệu suất đào tạo có thể rất nhạy cảm với các cấu hình khó hiểu và trạng thái tiên tiến đang phát triển nhanh chóng. Do đó, những người thực hành học máy phải dành nhiều tuần chuẩn bị để mở rộng khối lượng công việc LLM của họ sang các cụm GPU lớn.

Trong bài đăng này, chúng tôi nêu bật các tính năng mới của Amazon SageMaker Thư viện mô hình song song (SMP) giúp đơn giản hóa quy trình đào tạo mô hình lớn và giúp bạn đào tạo LLM nhanh hơn. Đặc biệt, chúng tôi đề cập đến trải nghiệm người dùng đơn giản hóa mới của thư viện SMP được xây dựng trên API song song dữ liệu được phân chia hoàn toàn (FSDP) PyTorch mã nguồn mở, chức năng song song tensor mở rộng cho phép đào tạo các mô hình với hàng trăm tỷ tham số và tối ưu hóa hiệu suất giúp giảm thời gian đào tạo mô hình và chi phí lên tới 20%.

Để tìm hiểu thêm về thư viện song song mô hình SageMaker, hãy tham khảo Thư viện song song mô hình SageMaker v2 tài liệu. Bạn cũng có thể tham khảo của chúng tôi sổ ghi chép ví dụ để bắt đầu.

Các tính năng mới giúp đơn giản hóa và tăng tốc việc đào tạo mô hình lớn

Bài đăng này thảo luận về các tính năng mới nhất có trong bản phát hành v2.0 của thư viện song song mô hình SageMaker. Những tính năng này cải thiện khả năng sử dụng của thư viện, mở rộng chức năng và đẩy nhanh quá trình đào tạo. Trong các phần sau, chúng tôi tóm tắt các tính năng mới và thảo luận cách bạn có thể sử dụng thư viện để tăng tốc quá trình đào tạo mô hình lớn của mình.

Căn chỉnh SMP với PyTorch nguồn mở

Kể từ khi ra mắt vào năm 2020, SMP đã cho phép đào tạo quy mô lớn, hiệu suất cao trên các phiên bản điện toán SageMaker. Với phiên bản chính mới nhất này của SMP, thư viện sẽ đơn giản hóa trải nghiệm người dùng bằng cách điều chỉnh các API của nó phù hợp với PyTorch nguồn mở.

Ưu đãi của PyTorch Song song dữ liệu được phân chia hoàn toàn (FSDP) là phương pháp chính để hỗ trợ khối lượng đào tạo lớn trên nhiều thiết bị điện toán. Như được minh họa trong đoạn mã sau, các API cập nhật của SMP dành cho các kỹ thuật như song song dữ liệu được phân chia phản ánh các API của PyTorch. Bạn có thể chỉ cần chạy import torch.sagemaker và sử dụng nó thay cho torch.

## training_script.py
import torch.sagemaker as tsm
tsm.init()

# Set up a PyTorch model
model = ...

# Wrap the PyTorch model using the PyTorch FSDP module
model = FSDP(
model,
...
)

optimizer = ...
...

Với những cập nhật này đối với API của SMP, giờ đây bạn có thể nhận ra những lợi ích về hiệu suất của SageMaker và thư viện SMP mà không cần phải sửa lại các tập lệnh đào tạo PyTorch FSDP hiện có của mình. Mô hình này cũng cho phép bạn sử dụng cùng một cơ sở mã khi đào tạo tại cơ sở như trên SageMaker, đơn giản hóa trải nghiệm người dùng cho những khách hàng đào tạo trong nhiều môi trường.

Để biết thêm thông tin về cách bật SMP với tập lệnh đào tạo PyTorch FSDP hiện có của bạn, hãy tham khảo Bắt đầu với SMP.

Tích hợp song song tensor để cho phép đào tạo trên các cụm lớn

Bản phát hành SMP này cũng mở rộng khả năng của PyTorch FSDP để bao gồm các kỹ thuật song song tensor. Một vấn đề khi chỉ sử dụng song song dữ liệu được phân chia là bạn có thể gặp phải các vấn đề về hội tụ khi mở rộng quy mô cụm của mình. Điều này là do các tham số phân chia, độ dốc và trạng thái tối ưu hóa trên các cấp bậc song song dữ liệu cũng làm tăng kích thước lô toàn cầu của bạn; trên các cụm lớn, kích thước lô toàn cầu này có thể được đẩy vượt quá ngưỡng mà mô hình sẽ hội tụ. Bạn cần kết hợp một kỹ thuật song song bổ sung mà không yêu cầu tăng kích thước lô toàn cầu khi bạn mở rộng quy mô cụm của mình.

Để giảm thiểu vấn đề này, SMP v2.0 giới thiệu khả năng kết hợp song song dữ liệu được phân chia với song song tensor. Tính song song của tensor cho phép kích thước cụm tăng lên mà không làm thay đổi kích thước lô toàn cầu hoặc ảnh hưởng đến sự hội tụ của mô hình. Với tính năng này, bạn có thể tăng thông lượng đào tạo một cách an toàn bằng cách cung cấp các cụm có 256 nút trở lên.

Ngày nay, tính năng song song tensor với PyTorch FSDP chỉ khả dụng với SMP v2. SMP v2 cho phép bạn kích hoạt kỹ thuật này chỉ bằng một vài dòng thay đổi mã và mở khóa quá trình đào tạo ổn định ngay cả trên các cụm lớn. SMP v2 tích hợp với Máy biến áp để triển khai tính song song tensor và làm cho nó tương thích với API PyTorch FSDP. Bạn có thể bật đồng thời tính năng song song tensor PyTorch FSDP và SMP mà không thực hiện bất kỳ thay đổi nào đối với mô hình PyTorch hoặc cấu hình PyTorch FSDP của mình. Đoạn mã sau đây trình bày cách thiết lập từ điển cấu hình SMP ở định dạng JSON và thêm mô-đun khởi tạo SMP torch.sagemaker.init(), chấp nhận từ điển cấu hình trong phần phụ trợ khi bạn bắt đầu công việc đào tạo, cho tập lệnh đào tạo của mình.

Cấu hình SMP như sau:

{
"tensor_parallel_degree": 8,
"tensor_parallel_seed": 0
}

Trong tập lệnh đào tạo của bạn, hãy sử dụng đoạn mã sau:

import torch.sagemaker as tsm
tsm.init()

from transformers import AutoModelForCausalLM
model = AutoModelForCausalLM.from_config(..)
model = tsm.transform(model)

Để tìm hiểu thêm về cách sử dụng song song tensor trong SMP, hãy tham khảo phần tính song song tensor phần tài liệu của chúng tôi.

Sử dụng các tính năng nâng cao để tăng tốc độ đào tạo mô hình lên tới 20%

Ngoài việc cho phép đào tạo phân tán trên các cụm với hàng trăm phiên bản, SMP còn cung cấp các kỹ thuật tối ưu hóa có thể tăng tốc quá trình đào tạo mô hình lên tới 20%. Trong phần này, chúng tôi nêu bật một số tối ưu hóa này. Để tìm hiểu thêm, hãy tham khảo tính năng cốt lõi phần tài liệu của chúng tôi.

Phân mảnh lai

Song song dữ liệu được phân chia là một kỹ thuật đào tạo phân tán tiết kiệm bộ nhớ giúp phân chia trạng thái của mô hình (tham số mô hình, độ dốc và trạng thái tối ưu hóa) trên các thiết bị. Dung lượng bộ nhớ nhỏ hơn này cho phép bạn đưa mô hình lớn hơn vào cụm của mình hoặc tăng kích thước lô. Tuy nhiên, tính song song của dữ liệu được phân chia cũng làm tăng yêu cầu giao tiếp trong công việc đào tạo của bạn vì các thành phần lạ của mô hình được phân chia thường xuyên được thu thập từ các thiết bị khác nhau trong quá trình đào tạo. Theo cách này, mức độ phân mảnh là một cấu hình quan trọng giúp cân bằng mức tiêu thụ bộ nhớ và chi phí liên lạc.

Theo mặc định, PyTorch FSDP phân chia các thành phần mô hình trên tất cả các thiết bị tăng tốc trong cụm của bạn. Tùy thuộc vào công việc đào tạo của bạn, phương pháp sharding này có thể làm tăng chi phí liên lạc và tạo ra tắc nghẽn. Để giải quyết vấn đề này, thư viện SMP cung cấp tính năng song song dữ liệu được phân chia kết hợp có thể định cấu hình trên PyTorch FSDP. Tính năng này cho phép bạn đặt mức độ phân mảnh tối ưu cho khối lượng công việc đào tạo của mình. Chỉ cần chỉ định mức độ phân đoạn trong đối tượng JSON cấu hình và đưa nó vào tập lệnh đào tạo SMP của bạn.

Cấu hình SMP như sau:

{ "hybrid_shard_degree": 16 }

Để tìm hiểu thêm về các ưu điểm của tính song song của dữ liệu được phân chia kết hợp, hãy tham khảo Mở rộng quy mô gần tuyến tính của đào tạo mô hình khổng lồ trên AWS. Để biết thêm thông tin về cách triển khai phân đoạn kết hợp với tập lệnh đào tạo FSDP hiện có của bạn, hãy xem song song dữ liệu chia sẻ lai trong tài liệu của chúng tôi.

Sử dụng các hoạt động giao tiếp tập thể SMDDP được tối ưu hóa cho cơ sở hạ tầng AWS

Bạn có thể sử dụng thư viện SMP với Thư viện song song dữ liệu phân tán (SMDDP) của SageMaker để đẩy nhanh khối lượng công việc đào tạo được phân bổ của bạn. SMDDP bao gồm một tối ưu hóa AllGather hoạt động giao tiếp tập thể được thiết kế để mang lại hiệu suất tốt nhất trên các phiên bản tăng tốc SageMaker p4d và p4de. Trong đào tạo phân tán, các hoạt động giao tiếp tập thể được sử dụng để đồng bộ hóa thông tin giữa các nhân viên GPU. AllGather là một trong những hoạt động giao tiếp tập thể cốt lõi thường được sử dụng trong song song dữ liệu được phân chia để cụ thể hóa các tham số lớp trước các bước tính toán tiến và lùi. Đối với các công việc đào tạo bị tắc nghẽn do giao tiếp, hoạt động tập thể nhanh hơn có thể giảm thời gian và chi phí đào tạo mà không có tác dụng phụ đối với sự hội tụ.

Để sử dụng thư viện SMDDP, bạn chỉ cần thêm hai dòng mã vào tập lệnh đào tạo của mình:

import torch.distributed as dist

# Initialize with SMDDP
import smdistributed.dataparallel.torch.torch_smddp
dist.init_process_group(backend="smddp") # Replacing "nccl"

# Initialize with SMP
import torch.sagemaker as tsm
tsm.init()

Ngoài SMP, SMDDP còn hỗ trợ PyTorch FSDP và DeepSpeed ​​mã nguồn mở. Để tìm hiểu thêm về thư viện SMDDP, hãy xem Chạy đào tạo phân tán với thư viện song song dữ liệu phân tán SageMaker.

Kích hoạt giảm tải

Thông thường, quá trình đào tạo mô hình sẽ tính toán các kích hoạt ở mỗi lớp và giữ chúng trong bộ nhớ GPU cho đến khi quá trình đào tạo ngược của lớp tương ứng kết thúc. Những kích hoạt được lưu trữ này có thể tiêu tốn bộ nhớ GPU đáng kể trong quá trình đào tạo. Giảm tải kích hoạt là một kỹ thuật thay vào đó di chuyển các tensor này sang bộ nhớ CPU sau khi chuyển tiếp và sau đó tải chúng trở lại GPU khi cần. Cách tiếp cận này có thể giảm đáng kể việc sử dụng bộ nhớ GPU trong quá trình đào tạo.

Mặc dù PyTorch hỗ trợ giảm tải kích hoạt nhưng việc triển khai nó không hiệu quả và có thể khiến GPU không hoạt động trong khi kích hoạt được lấy về từ CPU trong quá trình truyền ngược. Điều này có thể gây ra sự suy giảm hiệu suất đáng kể khi sử dụng tính năng giảm tải kích hoạt.

SMP v2 cung cấp thuật toán giảm tải kích hoạt được tối ưu hóa có thể cải thiện hiệu suất đào tạo. Việc triển khai SMP tìm nạp trước các kích hoạt trước khi chúng cần thiết trên GPU, giúp giảm thời gian nhàn rỗi.

Vì SMP được xây dựng dựa trên các API của PyTorch nên việc kích hoạt giảm tải được tối ưu hóa chỉ cần một vài dòng thay đổi mã. Chỉ cần thêm các cấu hình liên quan (sm_activation_offloadingactivation_loading_horizon tham số) và đưa chúng vào tập lệnh đào tạo của bạn.

Cấu hình SMP như sau:

{
"activation_loading_horizon": 2,
"sm_activation_offloading": True
}

Trong tập lệnh đào tạo, sử dụng đoạn mã sau:

import torch.sagemaker as tsm
tsm.init()

# Native PyTorch module for activation offloading
from torch.distributed.algorithms._checkpoint.checkpoint_wrapper import (
apply_activation_checkpointing,
offload_wrapper,
)

model = FSDP(...)

# Activation offloading requires activation checkpointing.
apply_activation_checkpointing(
model,
check_fn=checkpoint_tformer_layers_policy,
)

model = offload_wrapper(model)

Để tìm hiểu thêm về các công cụ điểm kiểm tra PyTorch mã nguồn mở để giảm tải kích hoạt, hãy xem phần checkpoint_wrapper.py tập lệnh trong kho PyTorch GitHub và Điểm kiểm tra kích hoạt trong bài đăng trên blog PyTorch Mở rộng các mô hình nền tảng đa phương thức trong TorchMultimodal với phân phối Pytorch. Để tìm hiểu thêm về cách triển khai giảm tải kích hoạt được tối ưu hóa của SMP, hãy xem kích hoạt giảm tải phần tài liệu của chúng tôi.

Ngoài phân mảnh kết hợp, SMDDP và giảm tải kích hoạt, SMP còn cung cấp các tính năng tối ưu hóa bổ sung có thể đẩy nhanh khối lượng công việc đào tạo mô hình lớn của bạn. Điều này bao gồm điểm kiểm tra kích hoạt được tối ưu hóa, khởi tạo tham số bị trì hoãn và các điểm khác. Để tìm hiểu thêm, hãy tham khảo tính năng cốt lõi phần tài liệu của chúng tôi.

Kết luận

Khi các tập dữ liệu, quy mô mô hình và cụm đào tạo tiếp tục phát triển, việc đào tạo phân tán hiệu quả ngày càng trở nên quan trọng để cung cấp mô hình và sản phẩm kịp thời và giá cả phải chăng. Bản phát hành mới nhất của thư viện song song mô hình SageMaker giúp bạn đạt được điều này bằng cách giảm thay đổi mã và căn chỉnh với API PyTorch FSDP, cho phép đào tạo trên các cụm lớn thông qua tính song song tensor và tối ưu hóa có thể giảm thời gian đào tạo tới 20%.

Để bắt đầu với SMP v2, hãy tham khảo tài liệu hướng dẫn và của chúng tôi sổ tay mẫu.


Về các tác giả

Robert Van Dusen là Giám đốc sản phẩm cấp cao của Amazon SageMaker. Ông lãnh đạo các khung, trình biên dịch và kỹ thuật tối ưu hóa cho đào tạo deep learning.

Luis Quintela là Trình quản lý nhà phát triển phần mềm cho thư viện song song mô hình AWS SageMaker. Trong thời gian rảnh rỗi, người ta có thể thấy anh ta cưỡi chiếc Harley của mình ở Khu vực Vịnh SF.

Gautam Kumar là Kỹ sư phần mềm với AWS AI Deep Learning. Anh ấy đam mê xây dựng các công cụ và hệ thống cho AI. Trong thời gian rảnh rỗi, anh thích đạp xe và đọc sách.

Rahul Huilgol là Kỹ sư phát triển phần mềm cao cấp về Học sâu phân tán tại Amazon Web Services.

tại chỗ_img

Tin tức mới nhất

tại chỗ_img