Tăng tốc đào tạo mô hình deep learning lên tới 35% với tính năng sàng lọc thông minh của Amazon SageMaker | Dịch vụ web của Amazon

Tăng tốc đào tạo mô hình deep learning lên tới 35% với tính năng sàng lọc thông minh của Amazon SageMaker | Dịch vụ web của Amazon

Trong bối cảnh trí tuệ nhân tạo phát triển nhanh chóng ngày nay, các mô hình học sâu đã đi đầu trong đổi mới, với các ứng dụng bao gồm thị giác máy tính (CV), xử lý ngôn ngữ tự nhiên (NLP) và hệ thống đề xuất. Tuy nhiên, chi phí ngày càng tăng liên quan đến việc đào tạo và tinh chỉnh các mô hình này đặt ra thách thức cho doanh nghiệp. Chi phí này chủ yếu được thúc đẩy bởi khối lượng dữ liệu khổng lồ được sử dụng để đào tạo các mô hình học sâu. Ngày nay, các mô hình lớn thường được đào tạo trên hàng terabyte dữ liệu và có thể mất hàng tuần để đào tạo, ngay cả với GPU mạnh mẽ hoặc Đào tạo AWS- dựa trên phần cứng. Thông thường, khách hàng dựa vào các kỹ thuật và tối ưu hóa để cải thiện hiệu quả của vòng đào tạo của mô hình, chẳng hạn như các lớp hoặc hạt nhân được tối ưu hóa, đào tạo độ chính xác hỗn hợp hoặc các tính năng như Amazon SageMaker thư viện đào tạo phân tán. Tuy nhiên, ngày nay người ta ít tập trung hơn vào hiệu quả của chính dữ liệu huấn luyện. Không phải tất cả dữ liệu đều đóng góp như nhau cho quá trình học tập trong quá trình đào tạo mô hình: một tỷ lệ đáng kể tài nguyên tính toán có thể được sử dụng để xử lý các ví dụ đơn giản không đóng góp đáng kể vào độ chính xác tổng thể của mô hình.

Theo truyền thống, khách hàng thường dựa vào các kỹ thuật tiền xử lý như lấy mẫu lên hoặc lấy mẫu xuống và loại bỏ trùng lặp để tinh chỉnh và cải thiện chất lượng thông tin của dữ liệu của họ. Những kỹ thuật này có thể hữu ích nhưng thường tốn thời gian, đòi hỏi kinh nghiệm chuyên môn về khoa học dữ liệu và đôi khi có thể mang tính nghệ thuật hơn là khoa học. Khách hàng cũng thường dựa vào các tập dữ liệu được quản lý, chẳng hạn như Web tinh tế, để cải thiện hiệu suất của các mô hình của họ; tuy nhiên, những bộ dữ liệu này không phải lúc nào cũng là nguồn mở hoàn toàn và thường có mục đích chung hơn và không liên quan đến trường hợp sử dụng cụ thể của bạn.

Bạn có thể khắc phục sự kém hiệu quả này bằng cách nào khác liên quan đến các mẫu dữ liệu có ít thông tin trong quá trình đào tạo mô hình?

Chúng tôi rất vui mừng được công bố bản xem trước công khai của tính năng sàng lọc thông minh, một khả năng mới của SageMaker có thể giảm chi phí đào tạo các mô hình deep learning tới 35%. Lọc thông minh là một kỹ thuật hiệu quả dữ liệu mới giúp tích cực phân tích các mẫu dữ liệu của bạn trong quá trình đào tạo và lọc ra các mẫu ít thông tin hơn cho mô hình. Bằng cách đào tạo trên một tập hợp con dữ liệu nhỏ hơn chỉ với các mẫu đóng góp nhiều nhất cho sự hội tụ của mô hình, tổng chi phí đào tạo và chi phí sẽ giảm mà không ảnh hưởng nhiều đến độ chính xác. Ngoài ra, do tính năng này hoạt động trực tuyến trong quá trình đào tạo mô hình nên tính năng sàng lọc thông minh không yêu cầu thay đổi dữ liệu ngược dòng hoặc quy trình đào tạo xuôi dòng của bạn.

Trong bài đăng này, chúng tôi thảo luận về các chủ đề sau:

  • Khả năng sàng lọc thông minh mới trong SageMaker và cách thức hoạt động
  • Cách sử dụng tính năng sàng lọc thông minh với khối lượng công việc đào tạo PyTorch

Bạn cũng có thể kiểm tra tài liệu hướng dẫnsổ tay mẫu để có thêm tài nguyên về cách bắt đầu với tính năng sàng lọc thông minh.

Cách hoạt động của tính năng sàng lọc thông minh của SageMaker

Chúng tôi bắt đầu bài đăng này bằng thông tin tổng quan về cách khả năng sàng lọc thông minh có thể đẩy nhanh quá trình đào tạo mô hình của bạn trên SageMaker.

Nhiệm vụ của sàng lọc thông minh là sàng lọc dữ liệu đào tạo của bạn trong quá trình đào tạo và chỉ cung cấp các mẫu có nhiều thông tin hơn cho mô hình. Trong quá trình đào tạo thông thường với PyTorch, dữ liệu được gửi lặp lại theo đợt đến vòng đào tạo và tới các thiết bị tăng tốc (ví dụ: GPU hoặc chip Trainium) bởi Trình tải dữ liệu PyTorch. Tính năng sàng lọc thông minh được triển khai ở giai đoạn tải dữ liệu này và do đó độc lập với mọi quá trình xử lý trước dữ liệu ngược dòng trong quy trình đào tạo của bạn.

Tính năng sàng lọc thông minh sử dụng mô hình của bạn và hàm mất mát do người dùng chỉ định để thực hiện chuyển tiếp đánh giá từng mẫu dữ liệu khi được tải. Các mẫu có độ tổn hao cao sẽ ảnh hưởng nghiêm trọng đến việc đào tạo mô hình và do đó được sử dụng trong đào tạo; các mẫu dữ liệu có độ tổn thất tương đối thấp sẽ được đặt sang một bên và loại khỏi quá trình đào tạo.

Đầu vào quan trọng của tính năng sàng lọc thông minh là tỷ lệ dữ liệu cần loại trừ: ví dụ: bằng cách đặt tỷ lệ thành 33% (beta_value=0.5), các mẫu nằm trong khoảng một phần ba phần dưới cùng của tổn thất của mỗi lô sẽ bị loại khỏi quá trình đào tạo. Khi đã xác định đủ số lượng mẫu có tổn thất cao để hoàn thành một lô, dữ liệu sẽ được gửi qua vòng huấn luyện đầy đủ và mô hình sẽ học và huấn luyện bình thường. Bạn không cần thực hiện bất kỳ thay đổi nào đối với vòng đào tạo của mình khi bật tính năng sàng lọc thông minh.

Sơ đồ sau minh họa quy trình làm việc này.

Tăng tốc đào tạo mô hình deep learning lên tới 35% với tính năng sàng lọc thông minh của Amazon SageMaker | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Bằng cách chỉ bao gồm một tập hợp con dữ liệu huấn luyện của bạn, tính năng sàng lọc thông minh giúp giảm thời gian và tính toán cần thiết để huấn luyện mô hình. Trong các thử nghiệm của mình, chúng tôi đã giảm tới gần 40% tổng thời gian và chi phí đào tạo. Với tính năng sàng lọc dữ liệu thông minh, có thể có tác động tối thiểu hoặc không ảnh hưởng đến độ chính xác của mô hình vì các mẫu bị loại trừ có mức tổn thất tương đối thấp đối với mô hình. Trong bảng sau, chúng tôi đưa vào một tập hợp các kết quả thử nghiệm chứng minh khả năng cải thiện hiệu suất nhờ tính năng sàng lọc thông minh của SageMaker.

Tăng tốc đào tạo mô hình deep learning lên tới 35% với tính năng sàng lọc thông minh của Amazon SageMaker | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.

Trong bảng, cột % được chấp nhận cho biết tỷ lệ dữ liệu được đưa vào và sử dụng trong vòng đào tạo. Việc tăng thông số có thể điều chỉnh này sẽ làm giảm chi phí (như được minh họa trong cột % tiết kiệm IMR), nhưng cũng có thể ảnh hưởng đến độ chính xác. Cài đặt thích hợp cho % được chấp nhận là một chức năng của tập dữ liệu và mô hình của bạn; bạn nên thử nghiệm và điều chỉnh thông số này để đạt được sự cân bằng tốt nhất giữa chi phí giảm và tác động đến độ chính xác.

Tổng quan về giải pháp

Trong các phần sau, chúng ta sẽ xem xét một ví dụ thực tế về cách kích hoạt tính năng sàng lọc thông minh bằng công việc đào tạo PyTorch trên SageMaker. Nếu bạn muốn bắt đầu nhanh chóng, bạn có thể chuyển sang Ví dụ về PyTorch hoặc PyTorch Lightning.

Điều kiện tiên quyết

Chúng tôi giả định rằng bạn đã biết cách đào tạo một mô hình bằng PyTorch hoặc PyTorch Lightning bằng SageMaker Python SDK và lớp Ước tính bằng cách sử dụng Bộ chứa học tập sâu của SageMaker để đào tạo. Nếu không, hãy tham khảo Sử dụng SageMaker Python SDK trước khi tiếp tục.

Bắt đầu với tính năng sàng lọc thông minh của SageMaker

Trong công việc đào tạo PyTorch điển hình, bạn khởi tạo quá trình đào tạo PyTorch Trình tải dữ liệu với tập dữ liệu của bạn và các tham số bắt buộc khác, cung cấp các lô đầu vào khi quá trình đào tạo diễn ra. Để kích hoạt tính năng sàng lọc thông minh dữ liệu đào tạo của bạn, bạn sẽ sử dụng một DataLoader lớp học: smart_sifting.dataloader.sift_dataloader.SiftingDataloader. Lớp này được sử dụng làm lớp bao bọc bên trên PyTorch hiện có của bạn DataLoader và thay vào đó quá trình đào tạo sẽ sử dụng SiftingDataloader để lấy lô đầu vào. Các SiftingDataLoader lấy lô đầu vào từ PyTorch ban đầu của bạn DataLoader, đánh giá tầm quan trọng của các mẫu trong lô và xây dựng một lô đã sàng lọc với các mẫu có độ thất thoát cao, sau đó được chuyển sang bước huấn luyện. Trình bao bọc trông giống như đoạn mã sau:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=BertLoss(), model=self.model
)

Sản phẩm SiftingDataloader yêu cầu một số tham số bổ sung để phân tích dữ liệu đào tạo của bạn mà bạn có thể chỉ định thông qua sift_config tham số. Đầu tiên, tạo một smart_sifting.sift_config.sift_configs.RelativeProbabilisticSiftConfig sự vật. Đối tượng này chứa cấu hình và yêu cầu beta_valueloss_history_length, tương ứng xác định tỷ lệ mẫu cần giữ và khoảng mẫu cần đưa vào khi đánh giá tổn thất tương đối. Lưu ý rằng, vì tính năng sàng lọc thông minh sử dụng mô hình của bạn để xác định tầm quan trọng của mẫu, nên có thể có những tác động tiêu cực nếu chúng tôi sử dụng mô hình có trọng số hoàn toàn ngẫu nhiên. Thay vào đó, bạn có thể sử dụng loss_based_sift_configsift_delay để trì hoãn quá trình sàng lọc cho đến khi các trọng số tham số trong mô hình được cập nhật vượt quá các giá trị ngẫu nhiên. (Để biết thêm chi tiết, tham khảo Áp dụng tính năng sàng lọc thông minh cho tập lệnh đào tạo của bạn.) Trong đoạn mã sau, chúng tôi xác định sift_config và chỉ định beta_valueloss_history_length, cũng như trì hoãn việc bắt đầu sàng lọc bằng cách sử dụng loss_based_sift_config:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
)

Tiếp theo, bạn cũng phải bao gồm một loss_impl tham số trong SiftingDataloader sự vật. Tính năng sàng lọc thông minh hoạt động ở cấp độ mẫu riêng lẻ và điều quan trọng là phải có quyền truy cập vào phương pháp tính toán tổn thất để xác định tầm quan trọng của mẫu. Bạn phải triển khai phương pháp mất mát sàng lọc trả về một tenxơ nx1, chứa các giá trị mất mát của n mẫu. Thông thường, bạn chỉ định cùng một phương pháp mất mát được sử dụng bởi model Trong quá trình huấn luyện. Cuối cùng, đưa con trỏ tới mô hình của bạn trong SiftingDataloader đối tượng, được sử dụng để đánh giá các mẫu trước khi chúng được đưa vào đào tạo. Xem đoạn mã sau:

from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) ....
.... train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
)

Đoạn mã sau đây hiển thị ví dụ hoàn chỉnh về cách bật tính năng sàng lọc thông minh với công việc đào tạo BERT hiện có:

from smart_sifting.dataloader.sift_dataloader import SiftingDataloader
from smart_sifting.loss.abstract_sift_loss_module import Loss
from smart_sifting.sift_config.sift_configs import RelativeProbabilisticSiftConfig, LossConfig, SiftingBaseConfig
...
...
... ## Defining Sift loss
class SiftBertLoss(Loss): # You should add the following initializaztion function # to calculate loss per sample, not per batch. def __init__(self): self.celoss = torch.nn.CrossEntropyLoss(reduction='none') def loss( self, model: torch.nn.Module, transformed_batch: SiftingBatch, original_batch: Any = None, ) -> torch.Tensor: device = next(model.parameters()).device batch = [t.to(device) for t in original_batch] # compute loss outputs = model(batch) return self.celoss(outputs.logits, batch[2]) .... .... .... sift_config = RelativeProbabilisticSiftConfig( beta_value=3, loss_history_length=500, loss_based_sift_config=LossConfig( sift_config=SiftingBaseConfig(sift_delay=10) )
) train_dataloader = SiftingDataloader( sift_config = sift_config, orig_dataloader=DataLoader(self.train, self.batch_size, shuffle=True), loss_impl=SiftBertLoss(), model=self.model
) ...... # use train_dataloader in the rest of the training logic.

Kết luận

Trong bài đăng này, chúng tôi đã khám phá bản xem trước công khai của tính năng sàng lọc thông minh, một khả năng mới của SageMaker có thể giảm tới 35% chi phí đào tạo mô hình deep learning. Tính năng này cải thiện hiệu quả dữ liệu trong quá trình đào tạo bằng cách lọc ra các mẫu dữ liệu ít thông tin hơn. Bằng cách chỉ bao gồm dữ liệu có tác động mạnh nhất để hội tụ mô hình, bạn có thể giảm đáng kể thời gian và chi phí đào tạo, trong khi vẫn duy trì độ chính xác. Hơn nữa, nó tích hợp liền mạch vào các quy trình hiện có của bạn mà không yêu cầu thay đổi dữ liệu hoặc quy trình đào tạo của bạn.

Để tìm hiểu sâu hơn về tính năng sàng lọc thông minh của SageMaker, khám phá cách thức hoạt động và triển khai nó với khối lượng công việc đào tạo của PyTorch, hãy xem tài liệu hướng dẫnsổ tay mẫu và bắt đầu với khả năng mới này.


Giới thiệu về tác giả

Tăng tốc đào tạo mô hình deep learning lên tới 35% với tính năng sàng lọc thông minh của Amazon SageMaker | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.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.

Tăng tốc đào tạo mô hình deep learning lên tới 35% với tính năng sàng lọc thông minh của Amazon SageMaker | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.K Lokesh Kumar Reddy là kỹ sư cấp cao trong nhóm AI ứng dụng của Amazon. Anh tập trung vào các kỹ thuật đào tạo ML hiệu quả và xây dựng các công cụ để cải thiện hệ thống AI đàm thoại. Trong thời gian rảnh rỗi, anh thích tìm kiếm những nền văn hóa mới, trải nghiệm mới và cập nhật những xu hướng công nghệ mới nhất.

Tăng tốc đào tạo mô hình deep learning lên tới 35% với tính năng sàng lọc thông minh của Amazon SageMaker | Dịch vụ web của Amazon PlatoThông minh dữ liệu Blockchain. Tìm kiếm dọc. Ái.Abhishek Dan là Giám đốc phát triển cấp cao trong nhóm AI ứng dụng của Amazon và làm việc trên các hệ thống AI đàm thoại và học máy. Anh đam mê công nghệ AI và làm việc trong lĩnh vực Khoa học và Kỹ thuật nhằm nâng cao khả năng của hệ thống AI nhằm tạo ra các tương tác giữa người và máy tính trực quan và liền mạch hơn. Anh hiện đang xây dựng các ứng dụng trên các mô hình ngôn ngữ lớn để nâng cao hiệu quả và cải tiến CX cho Amazon.

Dấu thời gian:

Thêm từ Học máy AWS