Vài năm gần đây đã chứng kiến sự phát triển nhanh chóng trong lĩnh vực xử lý ngôn ngữ tự nhiên (NLP). Trong khi phần cứng đã được cải thiện, chẳng hạn như với thế hệ bộ tăng tốc mới nhất của NVIDIA và Amazon, những người thực hành công nghệ máy học nâng cao (ML) vẫn thường xuyên gặp vấn đề khi mở rộng các mô hình ngôn ngữ lớn của họ trên nhiều GPU.
Trong bài đăng trên blog này, chúng tôi tóm tắt ngắn gọn sự gia tăng của các mô hình NLP quy mô lớn và nhỏ, chủ yếu thông qua sự trừu tượng được cung cấp bởi Hugging Face và với phần phụ trợ mô-đun của Amazon SageMaker. Đặc biệt, chúng tôi đánh dấu sự ra mắt của bốn tính năng bổ sung trong thư viện song song mô hình SageMaker giúp mở khóa 175 tỷ tham số mô hình NLP trước và tinh chỉnh cho khách hàng.
Chúng tôi đã sử dụng thư viện này trên nền tảng đào tạo SageMaker và đạt được thông lượng 32 mẫu mỗi giây trên các phiên bản lớn 120 ml.p4d.24xlarge và 175 tỷ thông số. Chúng tôi dự đoán rằng nếu chúng tôi tăng con số này lên 240 trường hợp, thì mô hình đầy đủ sẽ mất 25 ngày để đào tạo.
Để biết thêm thông tin về song song mô hình, hãy xem bài báo Tính song song của mô hình Amazon SageMaker: Khuôn khổ chung và linh hoạt để đào tạo mô hình lớn.
Bạn cũng có thể xem sổ ghi chép GPT2 mà chúng tôi đã sử dụng để tạo các số hiệu suất này trên Kho GitHub.
Để tìm hiểu thêm về cách sử dụng song song các tính năng mới trong mô hình SageMaker, hãy tham khảo Các tính năng mở rộng của Thư viện song song mô hình SageMaker cho PyTorchvà Sử dụng với SageMaker Python SDK.
NLP trên Amazon SageMaker - Ôm lấy khuôn mặt và mô hình song song
Nếu bạn chưa quen với Khuôn mặt ôm và NLP, điểm nổi bật lớn nhất bạn cần biết là các ứng dụng sử dụng xử lý ngôn ngữ tự nhiên (NLP) đang bắt đầu đạt được hiệu suất ở cấp độ con người. Điều này phần lớn được thúc đẩy bởi một cơ chế học tập, được gọi là sự chú ý, điều này đã tạo ra một mô hình học sâu, được gọi là biến áp, có khả năng mở rộng hơn nhiều so với các phương pháp tuần tự học sâu trước đây. Bây giờ nổi tiếng Mô hình BERT được phát triển để tận dụng máy biến áp và đã phát triển một số chiến thuật NLP hữu ích trong quá trình thực hiện. Người vận chuyển và bộ mô hình, cả bên trong và bên ngoài NLP, đều được lấy cảm hứng từ BERT, là công cụ chính đằng sau kết quả tìm kiếm trên Google của bạn, trong của bạn Google dịch kết quảvà một loạt các công ty khởi nghiệp mới.
SageMaker và Hugging Face đã hợp tác để giúp khách hàng điều này dễ dàng hơn bao giờ hết. Chúng tôi đã ra mắt vùng chứa học tập sâu về Hugging Face (DLC's) để bạn đào tạo và lưu trữ các mô hình được đào tạo trước trực tiếp từ Hugging Face's kho hơn 26,000 mẫu mã. Chúng tôi đã khởi chạy trình biên dịch đào tạo SageMaker để bạn tăng tốc thời gian chạy của các vòng huấn luyện Khuôn mặt ôm của bạn lên đến 50%. Chúng tôi cũng đã tích hợp SDK Transformers hàng đầu của Hugging Face với thư viện đào tạo phân tán của chúng tôi để mở rộng mô hình NLP của bạn dễ dàng hơn bao giờ hết.
Để biết thêm thông tin về các mẫu Máy biến hình khuôn mặt ôm trên Amazon SageMaker, hãy xem Hỗ trợ cho các kiểu máy biến áp khuôn mặt ôm.
Các tính năng mới cho đào tạo mô hình NLP quy mô lớn với thư viện song song mô hình SageMaker
Tại AWS re: Invent 2020, SageMaker đã tung ra các thư viện phân tán cung cấp hiệu suất tốt nhất trên đám mây để đào tạo các mô hình thị giác máy tính như Mặt nạ-RCNN và các mô hình NLP như T5-3B. Điều này có thể thực hiện được thông qua các nguyên lý giao tiếp nâng cao nhanh hơn 20-40% so với NCCL trên AWS và các kỹ thuật phân phối mô hình cho phép các mô hình ngôn ngữ cực lớn mở rộng quy mô trên hàng chục đến hàng trăm đến hàng nghìn GPU.
Thư viện song song mô hình SageMaker (SMP) luôn cung cấp cho bạn khả năng lấy mô hình NLP được xác định trước của bạn trong PyTorch, thông qua Hugging Face hoặc bất kỳ nơi nào khác và phân vùng mô hình đó thành nhiều GPU trong cụm của bạn. Nói một cách khác, SMP chia mô hình của bạn thành nhiều phần nhỏ hơn để bạn không gặp phải lỗi hết bộ nhớ (OOM). Chúng tôi rất vui được bổ sung các kỹ thuật tiết kiệm bộ nhớ bổ sung rất quan trọng cho các mô hình quy mô lớn, cụ thể là:
- Tensor song song
- Sharding trạng thái của trình tối ưu hóa
- Kiểm tra kích hoạt
- Kích hoạt giảm tải
Bạn có thể kết hợp bốn tính năng này có thể được kết hợp để sử dụng bộ nhớ hiệu quả hơn và đào tạo thế hệ tiếp theo của các mô hình NLP quy mô cực lớn.
Huấn luyện phân tán và song song tensor
Để hiểu về song song tensor, sẽ hữu ích khi biết rằng có nhiều loại đào tạo phân tán, hoặc song song. Có thể bạn đã quen thuộc với kiểu phổ biến nhất, song song dữ liệu. Cốt lõi của tính song song dữ liệu hoạt động như thế này: bạn thêm một nút bổ sung vào cụm của mình, chẳng hạn như đi từ một đến hai phiên bản ml.EC2 trong công cụ ước tính SageMaker của bạn. Sau đó, bạn sử dụng khung dữ liệu song song như Horovod, PyTorch Distributed Data Parallel hoặc SageMaker Distributed. Điều này tạo ra các bản sao mô hình của bạn, một bản sao cho mỗi máy gia tốc và xử lý việc phân tích dữ liệu đến từng nút, cùng với việc tập hợp tất cả các kết quả lại với nhau trong bước truyền ngược của mạng nơ-ron của bạn. Hãy suy nghĩ về sự giảm dần gradient phân tán. Song song dữ liệu cũng phổ biến trong các máy chủ; bạn đang phân tích dữ liệu vào tất cả các GPU và đôi khi là cả CPU trên tất cả các nút của mình. Sơ đồ sau minh họa tính song song của dữ liệu.
Mô hình song song hơi khác. Thay vì tạo bản sao của cùng một mô hình, chúng tôi chia mô hình của bạn thành nhiều phần. Sau đó, chúng tôi quản lý việc chạy nó, vì vậy dữ liệu của bạn vẫn đang truyền qua mạng nơ-ron của bạn theo cách toán học chính xác, nhưng các phần khác nhau của mô hình của bạn đang nằm trên các GPU khác nhau. Nếu bạn đang sử dụng ml.p3.8xlarge, bạn có bốn NVIDIA V100, vì vậy bạn có thể muốn chia mô hình của mình thành 4 phần, mỗi phần một GPU. Nếu bạn nhảy lên đến hai ml.p4d.24xlarge, đó là tổng số 16 A100 trong cụm của bạn, vì vậy bạn có thể chia mô hình của mình thành 16 mảnh. Điều này đôi khi cũng được gọi là sự song song của đường ống. Đó là bởi vì tập hợp các lớp trong mạng được phân vùng trên các GPU và chạy theo phương thức xoay vòng để tối đa hóa việc sử dụng GPU. Sơ đồ sau đây minh họa sự song song của mô hình.
Để làm cho mô hình song song xảy ra trên quy mô lớn, chúng ta cần loại phân phối thứ ba: tính song song tensor. Tính song song căng thẳng áp dụng các khái niệm tương tự ở một bước xa hơn — chúng tôi chia nhỏ các lớp lớn nhất trong mạng nơ-ron của bạn và đặt các phần của chính các lớp trên các thiết bị khác nhau. Điều này có liên quan khi bạn đang làm việc với 175 tỷ thông số trở lên và cố gắng đưa thậm chí một vài bản ghi vào RAM, cùng với các phần của mô hình của bạn, để huấn luyện máy biến áp đó. Sơ đồ sau minh họa sự song song của tensor.
Để kích hoạt song song tensor, đặt nó trong các tùy chọn smp bạn chuyển cho công cụ ước tính của bạn.
Trong mã trước, pipeline_parallel_degree
mô tả thành bao nhiêu phân đoạn mà mô hình của bạn nên được chia nhỏ, dựa trên tính song song của đường ống mà chúng ta đã thảo luận ở trên. Một từ khác cho điều này là điểm số.
Để bật tính năng song song tensor, hãy đặt tensor_parallel_degree
đến mức bạn mong muốn. Đảm bảo rằng bạn đang chọn một số bằng hoặc nhỏ hơn số GPU cho mỗi phiên bản, vì vậy không lớn hơn 8 đối với các máy ml.p4d.24xlarge. Để biết các thay đổi tập lệnh bổ sung, hãy tham khảo Chạy công việc đào tạo song song theo mô hình phân tán của SageMaker với Tensor Parallelism.
Tham số ddp đề cập đến dữ liệu được phân phối song song. Bạn thường bật điều này nếu bạn đang sử dụng song song dữ liệu hoặc song song tensor, bởi vì thư viện song song mô hình dựa vào DDP cho các tính năng này.
Trình tối ưu hóa trạng thái sharding, giảm tải kích hoạt và các điểm kiểm tra
Nếu bạn có một mô hình cực kỳ lớn, bạn cũng cần một trạng thái trình tối ưu hóa cực kỳ lớn. Chuẩn bị trình tối ưu hóa của bạn cho SMP rất đơn giản: chỉ cần lấy nó từ đĩa trong tập lệnh của bạn và tải nó vào smp.DistributedOptimizer()
vật.
Đảm bảo rằng bạn bật tính năng này tại công cụ ước tính bằng cách cài đặt shard_optimizer_state
thành True trong smp_options
bạn sử dụng để định cấu hình SMP:
Tương tự như tính song song tensor và đường ống, SMP cấu hình mô hình của bạn và quy mô thế giới của bạn (tổng số GPU trong tất cả các nút đào tạo của bạn), để tìm ra các chiến lược vị trí tốt nhất.
Trong học sâu, các kết quả đầu ra của lớp trung gian còn được gọi là kích hoạt, và những kết quả này cần được lưu trữ trong quá trình chuyển tiếp. Điều này là do chúng cần được sử dụng để tính toán gradient trong đường chuyền ngược. Trong một mô hình lớn, việc lưu trữ đồng thời tất cả các kích hoạt này trong bộ nhớ có thể tạo ra tắc nghẽn bộ nhớ đáng kể. Để giải quyết nút thắt cổ chai này, bạn có thể sử dụng kiểm tra kích hoạt, tính năng mới thứ ba trong thư viện song song mô hình SageMaker. Kiểm tra kích hoạt, hoặc điểm kiểm tra độ dốc, là một kỹ thuật để giảm mức sử dụng bộ nhớ bằng cách xóa các kích hoạt của một số lớp nhất định và tính toán lại chúng trong quá trình chuyển ngược. Điều này giúp đánh đổi hiệu quả thời gian tính toán bổ sung để giảm mức sử dụng bộ nhớ.
Cuối cùng, kích hoạt giảm tải trực tiếp sử dụng điểm kiểm tra kích hoạt. Đó là một chiến lược để chỉ giữ một vài kích hoạt tensor trên RAM GPU trong quá trình đào tạo mô hình. Cụ thể, chúng tôi di chuyển các kích hoạt đã được kiểm tra vào bộ nhớ CPU trong quá trình chuyển tiếp và tải chúng trở lại GPU để chuyển ngược lại một loạt vi mô cụ thể.
Chiến lược vị trí và lô vi mô
Các chủ đề khác đôi khi khiến khách hàng nhầm lẫn là chiến lược vị trí và lô vi mô. Cả hai đều là siêu tham số mà bạn có thể cung cấp cho thư viện song song mô hình SageMaker. Cụ thể, các lô vi mô có liên quan khi triển khai các mô hình dựa trên tính song song của đường ống, chẳng hạn như các mô hình có kích thước ít nhất 30 tỷ thông số trở lên.
Các lô nhỏ là tập hợp con của các lô nhỏ. Khi mô hình của bạn ở trong vòng lặp đào tạo của nó, bạn xác định một số bản ghi nhất định để nhận và chuyển tới và lùi qua các lớp – điều này được gọi là lô nhỏ, hoặc đôi khi chỉ là một hàng loạt. Toàn bộ thông qua tập dữ liệu của bạn được gọi là kỷ nguyên. Để chạy chuyển tiếp và chuyển tiếp với song song đường ống, thư viện song song của mô hình SageMaker chia nhỏ các lô thành các tập con nhỏ hơn được gọi là các lô vi mô, được chạy lần lượt để tối đa hóa việc sử dụng GPU. Kết quả, tập hợp các ví dụ nhỏ hơn nhiều cho mỗi GPU, được gọi là một loạt vi mô. Trong ví dụ GPT-2 của chúng tôi, chúng tôi đã thêm mặc định 1 microbatch trực tiếp vào tập lệnh đào tạo.
Khi bạn mở rộng cấu hình đào tạo của mình, bạn thực sự nên thay đổi kích thước lô và kích thước lô vi mô của mình cho phù hợp. Đây là cách duy nhất để đảm bảo hiệu suất tốt: bạn phải coi kích thước lô và kích thước lô vi mô như một chức năng của quy mô thế giới tổng thể của bạn khi dựa vào tính song song của đường ống.
Chiến lược vị trí là cách thông báo cho SageMaker về vị trí vật lý để đặt các phân vùng mô hình của bạn. Nếu bạn đang sử dụng cả mô hình song song và song song dữ liệu, thiết lập placement_strategy
đến “cluster”
đặt các bản sao mô hình vào ID thiết bị (GPU) gần nhau về mặt vật lý. Tuy nhiên, nếu bạn thực sự muốn rõ ràng hơn về chiến lược song song của mình, bạn có thể chia nó thành một chuỗi đơn với các kết hợp khác nhau của ba chữ cái: D cho song song dữ liệu, P
cho biết sự song song của đường ống và T
đối với song song tensor. Chúng tôi thường khuyên bạn nên giữ vị trí mặc định của "cluster"
, bởi vì điều này là thích hợp nhất cho việc đào tạo mô hình quy mô lớn. Vị trí "cụm" tương ứng với "DPT
".
Để biết thêm thông tin về các chiến lược vị trí, hãy xem Chiến lược vị trí với Tensor Parallelism.
Trường hợp sử dụng ví dụ
Hãy tưởng tượng bạn có một ml.p3.16 lần phóng to trong công việc đào tạo của bạn. Điều đó mang lại cho bạn 8 NVIDIA V100 trên mỗi nút. Hãy nhớ rằng, mỗi khi bạn thêm một phiên bản bổ sung, bạn sẽ gặp phải chi phí băng thông bổ sung, vì vậy, luôn tốt hơn nếu bạn có nhiều GP'U hơn trên một nút duy nhất. Trong trường hợp này, bạn nên phóng to hơn một ml.p3.16 lần hơn là phóng to hai ml.p3.8. Mặc dù số lượng GPU giống nhau, nhưng chi phí băng thông tăng thêm của nút phụ sẽ làm chậm thông lượng của bạn.
Sơ đồ sau minh họa song song mô hình bốn chiều, kết hợp với song song dữ liệu hai chiều. Điều này có nghĩa là bạn thực sự có hai bản sao mô hình của mình (nghĩ dữ liệu song song), với mỗi bản sao được phân vùng trên bốn GPU (mô hình song song).
Nếu bất kỳ phân vùng mô hình nào trong số đó quá lớn để vừa với một GPU, bạn có thể thêm một loại phân phối-tensor song song bổ sung – để loại bỏ nó và sử dụng cả hai thiết bị.
Kết luận
Trong bài đăng trên blog này, chúng tôi đã thảo luận về các thư viện đào tạo phân tán của SageMaker, đặc biệt là tập trung vào tính song song của mô hình. Chúng tôi đã chia sẻ các điểm chuẩn hiệu suất từ thử nghiệm mới nhất của mình, đạt được 32 mẫu mỗi giây trên các phiên bản lớn 120 ml.p4d.24 và thông số 175B trên Amazon SageMaker. Chúng tôi dự đoán rằng nếu chúng tôi tăng mức này lên 240 phiên bản p4, chúng tôi có thể đào tạo mô hình tham số 175B trong 25 ngày.
Chúng tôi cũng đã thảo luận về các tính năng mới nhất cho phép đào tạo quy mô lớn, cụ thể là tính song song tensor, phân bổ trạng thái tối ưu hóa, điểm kiểm tra kích hoạt và giảm tải kích hoạt. Chúng tôi đã chia sẻ một số mẹo và thủ thuật để kích hoạt điều này thông qua đào tạo trên Amazon SageMaker.
Hãy tự mình thử sử dụng cùng một sổ ghi chép đã tạo ra các số của chúng tôi, hiện có trên GitHub tại đây. Bạn cũng có thể yêu cầu thêm GPU cho tài khoản AWS của mình thông qua yêu cầu phê duyệt giới hạn dịch vụ ngay tại đây.
Về các tác giả
Emily Webber đã tham gia AWS ngay sau khi SageMaker ra mắt và kể từ đó đã cố gắng nói cho cả thế giới biết về điều đó! Ngoài việc xây dựng trải nghiệm ML mới cho khách hàng, Emily thích thiền định và nghiên cứu Phật giáo Tây Tạng.
Aditya Bindal là Giám đốc sản phẩm cấp cao của AWS Deep Learning. Anh ấy nghiên cứu các sản phẩm giúp khách hàng dễ dàng đào tạo các mô hình học sâu trên AWS. Khi rảnh rỗi, anh ấy thích dành thời gian cho con gái, chơi tennis, đọc tiểu thuyết lịch sử và đi du lịch.
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.
- Coinsmart. Sàn giao dịch Bitcoin và tiền điện tử tốt nhất Châu Âu.
- Platoblockchain. Web3 Metaverse Intelligence. Khuếch đại kiến thức. TRUY CẬP MIỄN PHÍ.
- CryptoHawk. Radar Altcoin. Dùng thử miễn phí.
- Nguồn: https://aws.amazon.com/blogs/machine-learning/train-175-billion-parameter-nlp-models-with-model-parallel-additions-and-hugging-face-on-amazon-sagemaker/
- "
- 000
- 100
- 2020
- 39
- Giới thiệu
- gia tốc
- Tài khoản
- đạt được
- ngang qua
- thêm vào
- địa chỉ
- tiên tiến
- Tất cả
- Đã
- đàn bà gan dạ
- Một
- các ứng dụng
- KHU VỰC
- có sẵn
- AWS
- vịnh
- BEST
- lớn nhất
- Tỷ
- Blog
- Xây dựng
- Nguyên nhân
- thay đổi
- đám mây
- mã
- kết hợp
- Chung
- Giao tiếp
- Cấu hình
- nhầm lẫn
- Container
- Trung tâm
- có thể
- khách hàng
- dữ liệu
- phát triển
- Nhà phát triển
- Phát triển
- thiết bị
- Thiết bị (Devices)
- khác nhau
- phân phối
- phân phối
- xuống
- điều khiển
- cho phép
- đặc biệt
- ví dụ
- kinh nghiệm
- Kinh nghiệm
- cực
- Đối mặt
- nhanh hơn
- Đặc tính
- Tính năng
- Tiểu thuyết
- phù hợp với
- tiếp theo
- Forward
- tìm thấy
- Khung
- Full
- chức năng
- Tổng Quát
- tạo ra
- GitHub
- đi
- tốt
- Tìm kiếm Google
- GPU
- phần cứng
- hữu ích
- Đánh dấu
- lịch sử
- Độ đáng tin của
- Hướng dẫn
- HTTPS
- Hàng trăm
- tăng
- thông tin
- lấy cảm hứng từ
- tích hợp
- các vấn đề
- IT
- Việc làm
- gia nhập
- nhảy
- giữ
- Ngôn ngữ
- lớn
- mới nhất
- phóng
- LEARN
- học tập
- Cấp
- Thư viện
- tải
- máy
- học máy
- Máy móc
- Làm
- giám đốc
- Bộ nhớ
- ML
- kiểu mẫu
- mô hình
- mô-đun
- hầu hết
- di chuyển
- cụ thể là
- Tự nhiên
- mạng
- Các tính năng mới
- các nút
- máy tính xách tay
- số
- Nền tảng khác
- Giấy
- hợp tác
- hiệu suất
- mảnh
- nền tảng
- Phổ biến
- có thể
- chính
- Sản phẩm
- Sản phẩm
- Profiles
- cho
- RAM
- RE
- Reading
- giới thiệu
- hồ sơ
- giảm
- Kết quả
- chạy
- chạy
- Nói
- khả năng mở rộng
- Quy mô
- mở rộng quy mô
- sdk
- Tìm kiếm
- dịch vụ
- định
- thiết lập
- sharding
- chia sẻ
- có ý nghĩa
- Kích thước máy
- So
- Phần mềm
- đặc biệt
- tốc độ
- Chi
- chia
- Tiểu bang
- chiến lược
- Chiến lược
- cung cấp
- chiến thuật
- kỹ thuật
- thử nghiệm
- thế giới
- hàng ngàn
- Thông qua
- thời gian
- lời khuyên
- lời khuyên và thủ thuật
- bên nhau
- Chủ đề
- ngành nghề
- Hội thảo
- hiểu
- sử dụng
- sử dụng
- tầm nhìn
- ở trong
- đang làm việc
- công trinh
- thế giới
- năm