paint-brush
Tổng quan về bối cảnh trình tải dữ liệu: Tóm tắt và giới thiệutừ tác giả@serialization

Tổng quan về bối cảnh trình tải dữ liệu: Tóm tắt và giới thiệu

từ tác giả The Serialization Publication5m2024/06/04
Read on Terminal Reader

dài quá đọc không nổi

Trong bài viết này, các nhà nghiên cứu nhấn mạnh trình tải dữ liệu là chìa khóa để cải thiện hoạt động đào tạo ML, so sánh các thư viện về chức năng, khả năng sử dụng và hiệu suất.
featured image - Tổng quan về bối cảnh trình tải dữ liệu: Tóm tắt và giới thiệu
The Serialization Publication HackerNoon profile picture
0-item

tác giả:

(1) Iason Ofeidis, Khoa Kỹ thuật Điện và Viện Khoa học Mạng Yale, Đại học Yale, New Haven {Đóng góp ngang bằng};

(2) Diego Kiedanski, Khoa Kỹ thuật Điện và Viện Khoa học Mạng Yale, Đại học Yale, New Haven {Đóng góp ngang bằng};

(3) Leandros TassiulasLevon Ghukasyan, Activeloop, Mountain View, CA, USA, Khoa Kỹ thuật Điện và Viện Khoa học Mạng Yale, Đại học Yale, New Haven.

Bảng liên kết

TRỪU TƯỢNG

Trình tải dữ liệu, chịu trách nhiệm di chuyển dữ liệu từ bộ lưu trữ vào GPU trong khi đào tạo các mô hình học máy, có thể nắm giữ chìa khóa để cải thiện đáng kể hiệu suất của các công việc đào tạo. Những tiến bộ gần đây đã cho thấy nhiều hứa hẹn không chỉ nhờ giảm đáng kể thời gian đào tạo mà còn bằng cách cung cấp các tính năng mới như tải dữ liệu từ bộ lưu trữ từ xa như S3. Trong bài viết này, chúng tôi là người đầu tiên phân biệt trình tải dữ liệu như một thành phần riêng biệt trong quy trình Deep Learning (DL) và phác thảo cấu trúc cũng như tính năng của nó. Cuối cùng, chúng tôi đưa ra so sánh toàn diện về các thư viện tải dữ liệu khác nhau hiện có, sự cân bằng giữa chúng về mặt chức năng, khả năng sử dụng và hiệu suất cũng như những hiểu biết sâu sắc thu được từ chúng.

1. GIỚI THIỆU

Việc đào tạo một mô hình học máy (sâu) yêu cầu một tập dữ liệu, một mô hình và phần cứng, đối với các vấn đề thực tế cần có một hoặc nhiều GPU.


Chúng tôi luôn quan tâm đến việc giảm tổng thời gian tính toán cần thiết để đào tạo một mô hình. Điều này là mong muốn vì một số lý do: chi phí thấp hơn, dễ lặp lại hơn và dễ tiếp cận hơn đối với các nhóm nhỏ hơn, cùng nhiều lý do khác.


Mối quan hệ giữa các thành phần chính của quy trình ML và thời gian chạy thường rất rõ ràng: tập dữ liệu lớn hơn mất nhiều thời gian hơn, mô hình lớn hơn mất nhiều thời gian hơn và GPU nhanh hơn giúp giảm tổng thời gian chạy. Một phần quan trọng trong câu đố thường bị bỏ qua là chất kết dính giữa tất cả các bộ phận này: bộ nạp dữ liệu. Trình tải dữ liệu chịu trách nhiệm tải dữ liệu từ bộ lưu trữ cố định (RAM, đĩa hoặc mạng), áp dụng các phép biến đổi cần thiết và gửi dữ liệu đã chuyển đổi đến thiết bị thích hợp để mô hình có thể nhập dữ liệu đó.


Hầu hết các nhà phát triển đều cho rằng trình tải dữ liệu mặc định trong khung học máy tương ứng của họ (Pytorch, Tensorflow, Jax) đã được tối ưu hóa cho ứng dụng của họ và thường không dựa vào trình tải dữ liệu của bên thứ ba. Điều thú vị là gần đây người ta đã chứng minh rằng trình tải dữ liệu có thể là một trong những điểm nghẽn đáng kể hơn của quy trình ML (Mohan và cộng sự, 2020). Kết quả là chúng tôi đã thấy nhiều thư viện và dự án nghiên cứu mới dành riêng cho việc tối ưu hóa và cải thiện hiệu suất của trình tải dữ liệu.


Ví dụ: FFCV (Leclerc và cộng sự, 2022), một thư viện mã nguồn mở mới được phát triển bởi nhóm nghiên cứu tại MIT, đã quản lý để đào tạo ImageNet trong một khoảng thời gian ngắn bằng cách sử dụng trình tải dữ liệu PyTorch mặc định. Những lợi ích như vậy có thể giảm đáng kể chi phí hoạt động của các công ty và nhóm nghiên cứu phụ thuộc vào cơ sở hạ tầng dưới dạng dịch vụ (IaaS), chẳng hạn như Amazon Web Services (AWS) và Google Cloud Platform (GPC).


Một tính năng đầy hứa hẹn khác được cung cấp bởi trình tải dữ liệu là khả năng tải dữ liệu được lưu trữ từ xa; ví dụ: từ nhóm S3. Điều này có nhiều lợi ích thực tế: tránh được thời gian thiết lập tập dữ liệu cục bộ, giảm dung lượng đĩa cần thiết trên máy tính và giảm nguy cơ các thành viên trong nhóm sử dụng các phiên bản khác nhau của cùng một tập dữ liệu. Hạn chế tự nhiên của việc phải truyền dữ liệu trong khi đào tạo là tốc độ truyền mạng thường chậm hơn I/O trên đĩa và do đó, mô hình sẽ mất nhiều thời gian hơn để đào tạo. Điều thú vị là chúng tôi đã quan sát thấy rằng một số thư viện như Hub (Team, 2022a) và Deep Lake (Hambardzumyan và cộng sự, 2022), đạt được hiệu suất qua mạng tốt hơn so với trình tải dữ liệu Pytorch mặc định đọc dữ liệu cục bộ trong một số trường hợp. Điều này có thể thực hiện được vì trình tải dữ liệu quản lý việc tìm nạp trước dữ liệu cần thiết trước khi GPU cần. Chúng tôi sẽ đưa ra một cuộc thảo luận sâu rộng hơn trong Phần 5.


Không phải tất cả các thư viện đều hỗ trợ tải từ xa và những thư viện hỗ trợ tải từ xa không nhất thiết phải tích hợp với cùng các dịch vụ lưu trữ từ xa. Vì số lượng thư viện có sẵn triển khai trình tải dữ liệu ngày càng tăng nên chúng tôi bắt đầu xây dựng một tiêu chuẩn toàn diện để làm sáng tỏ công nghệ tiên tiến hiện tại, những vấn đề nào dường như đã được giải quyết và khám phá các lĩnh vực hứa hẹn nhất để cải thiện trong tương lai nghiên cứu.


Tại thời điểm này, cần đề cập rằng một điểm khác biệt cụ thể so với thử nghiệm của chúng tôi so với các công việc khác như (Kumar & Sivathanu, 2020), (Mohan và cộng sự, 2020) là chúng tôi tập trung vào các công việc chạy trên các máy trạm vừa và nhỏ với dung lượng hạn chế (GPU, RAM, SSD). Những điều này có nhiều khả năng phản ánh phần cứng có sẵn cho hầu hết các cá nhân và nhóm nhỏ trong ngành, những người mà ngân sách không cho phép sử dụng các cụm quy mô lớn.

1.1 Đóng góp

Chúng tôi có thể tóm tắt những đóng góp của chúng tôi như sau:


• Mã nguồn mở: Chúng tôi đã xây dựng một chuẩn mực nguồn mở để so sánh các thư viện tải dữ liệu phổ biến nhất trong Pytorch[1]. Dự án sẽ vẫn có sẵn cho cộng đồng để các thư viện và bộ dữ liệu mới có thể được thêm vào khi sự quan tâm đến chúng tăng lên. Chúng tôi cũng dự kiến sẽ cập nhật các kết quả bằng số thu được trong các điểm chuẩn này sau bất kỳ cập nhật quan trọng nào đối với bất kỳ thư viện nào được đo điểm chuẩn trong bài viết này.


• Tính khả thi của đào tạo từ xa: Chúng tôi chứng minh rằng có thể đào tạo mô hình học máy bằng cách sử dụng luồng dữ liệu qua kết nối Internet công cộng trong các trường hợp hợp lý. Đặc biệt, chúng tôi chỉ ra tác động của việc tính toán phục vụ dữ liệu. Kết quả của chúng tôi khác với kết quả của (Mohan và cộng sự, 2020) vì chúng tôi không cho rằng tập dữ liệu được lưu vào bộ nhớ đệm cục bộ sau khi tải xuống.


• Tối ưu hóa siêu tham số cho tốc độ: Các phương pháp siêu tham số truyền thống nhằm mục đích tăng độ chính xác tổng thể của mô hình đang được đào tạo. Trong bài viết này, chúng tôi trình bày cách chúng tôi cũng có thể tối ưu hóa tốc độ (các mẫu được xử lý theo thời gian) dưới dạng proxy của tổng thời gian chạy. Việc tối ưu hóa này phụ thuộc vào phần cứng, do đó, việc thực hiện nó trước các công việc chạy dài là điều hợp lý. Quá trình này ít nhất phải nhanh hơn gấp nhiều lần so với các số liệu về thời gian đạt độ chính xác tương đương.


Bài viết này có sẵn trên arxiv theo giấy phép CC 4.0.


[1] Kho lưu trữ Github: https://github.com/smartnets/dataloaderbenchmarks