Phần này giải thích cách chọn những mục sau ở đầu dự án học máy:
- cấu trúc mô hình
- trình tối ưu hoá
- kích thước lô
- cấu hình ban đầu
Các giả định
Lời khuyên trong phần này giả định những điều sau:
- Bạn đã xác định được vấn đề, và chuẩn bị dữ liệu huấn luyện trong phạm vi nào đó.
- Bạn đã thiết lập một quy trình huấn luyện và kiểm thử.
- Bạn đã chọn và triển khai các chỉ số mang tính đại diện nhiều nhất có thể với những gì bạn dự định đo lường trong môi trường được triển khai.
Giả sử bạn đã đáp ứng tất cả các điều kiện tiên quyết trước đó, bây giờ bạn đã sẵn sàng dành thời gian cho cấu trúc mô hình và cấu hình huấn luyện.
Chọn cấu trúc mô hình
Hãy bắt đầu với các định nghĩa sau:
- Cấu trúc mô hình là một hệ thống dùng để đưa ra thông tin dự đoán. Cấu trúc mô hình chứa khung chuyển đổi dữ liệu đầu vào vào các gợi ý, nhưng không chứa tham số. Ví dụ: Một mạng nơron gồm 3 lớp ẩn gồm 10 nút, 5 nút và 3 nút, là một kiến trúc mô hình.
- Mô hình là một cấu trúc mô hình cùng với các giá trị cụ thể cho tất cả tham số. Ví dụ: một mô hình bao gồm mạng nơron được mô tả trong định nghĩa cấu trúc mô hình, cùng với các giá trị cụ thể cho thuộc tính trọng số và độ chệch của mỗi nút.
- Nhóm mô hình là một mẫu để xây dựng cấu trúc mô hình cho một tập hợp siêu tham số.
Chọn cấu trúc mô hình thực sự có nghĩa là chọn một tập hợp các mô hình (một mô hình cho mỗi chế độ cài đặt siêu tham số của mô hình).
Khi có thể, hãy cố gắng tìm một cơ sở mã được ghi chép lại để giải quyết vấn đề nào đó càng gần với vấn đề hiện tại càng tốt. Sau đó, tái tạo mô hình đó dưới dạng một điểm bắt đầu.
Chọn trình tối ưu hoá
Không có trình tối ưu hoá nào là "tốt nhất" giải quyết mọi loại bài tập liên quan đến công nghệ học máy và cấu trúc mô hình. Ngay cả khi chỉ so sánh hiệu suất của trình tối ưu hoá thật khó khăn. 🤖Bạn nên dùng các trình tối ưu hoá phổ biến và có danh tiếng, đặc biệt là khi bắt đầu một dự án mới.
Chúng tôi khuyên bạn nên chọn trình tối ưu hoá phổ biến nhất cho loại sự cố mà bạn đang thực hiện. Bạn nên sử dụng các trình tối ưu hoá được thiết lập tốt sau đây:
- SGD tác động lên đà. Bạn nên dùng biến thể Nesterov.
- Adam và NAdam, vốn khái quát hơn SGD với động lượng. Lưu ý rằng Adam có 4 đối số có thể điều chỉnh và tất cả đều có thể quan trọng! Xem phần Siêu tham số của Adam nên như thế nào đã điều chỉnh chưa?.
Chú ý đến tất cả đối số của trình tối ưu hoá đã chọn. Trình tối ưu hoá có nhiều siêu tham số hơn thường đòi hỏi nhiều nỗ lực điều chỉnh hơn. Điều này đặc biệt khó khăn trong giai đoạn đầu của một dự án khi bạn đang cố gắng tìm giá trị tốt nhất của nhiều siêu tham số khác nhau (ví dụ: tốc độ học) trong khi xử lý các đối số trình tối ưu hoá là những điều phiền toái. Do đó, bạn nên áp dụng phương pháp sau:
- Khi bắt đầu dự án, hãy chọn một trình tối ưu hoá không có nhiều
siêu tham số. Sau đây là hai ví dụ:
- SGD có động lượng cố định.
- Adam với Epsilon, Beta1 và Beta2 cố định.
- Trong các giai đoạn sau của dự án, hãy chuyển sang một trình tối ưu hoá chung hơn điều chỉnh nhiều siêu tham số hơn thay vì chỉ sửa chúng thành giá trị mặc định.
Chọn kích thước lô
Tóm tắt: Kích thước lô chi phối tốc độ huấn luyện; không sử dụng kích thước lô để trực tiếp điều chỉnh hiệu suất của nhóm xác thực.
Kích thước lô xác định nhiều thời gian đào tạo và tài nguyên điện toán người dùng. Việc tăng kích thước lô thường giúp giảm thời gian đào tạo, trong đó:
- Cho phép bạn điều chỉnh các siêu tham số kỹ lưỡng hơn trong một khoảng thời gian cố định để có thể tạo ra mô hình cuối cùng tốt hơn.
- Giảm độ trễ của chu kỳ phát triển, cho phép các ý tưởng mới được thử nghiệm thường xuyên hơn.
Việc tăng kích thước lô có thể làm giảm hoặc tăng mức sử dụng tài nguyên, hoặc giữ nguyên mức sử dụng tài nguyên.
Không coi kích thước lô là siêu tham số có thể điều chỉnh để xác thực hiệu suất. Nếu tất cả các điều kiện sau đây được đáp ứng, thì hiệu suất của mô hình không nên phụ thuộc vào kích thước lô:
- Tất cả các siêu tham số của trình tối ưu hoá đều được tinh chỉnh tốt.
- Mức độ đều đặn là vừa đủ và được điều chỉnh hợp lý.
- Chỉ cần đủ số bước huấn luyện.
Hiệu suất cuối cùng tương tự phải có thể đạt được khi sử dụng bất kỳ kích thước lô nào (Xem Shallue và cộng sự năm 2018 và Tại sao không nên điều chỉnh kích thước lô để cải thiện trực tiếp hiệu suất của nhóm xác thực?)
Xác định kích thước lô khả thi và ước tính thông lượng huấn luyện
Đối với một mô hình và trình tối ưu hoá nhất định, phần cứng có sẵn thường hỗ trợ nhiều kích thước lô. Yếu tố giới hạn thường là bộ nhớ tăng tốc. Thật không may, có thể khó khăn khi tính toán kích thước lô sẽ vừa với bộ nhớ mà không cần chạy, hoặc ít nhất là quá trình biên dịch, chương trình đào tạo đầy đủ. Giải pháp đơn giản nhất thường là chạy các công việc huấn luyện ở các kích thước lô khác nhau (ví dụ: tăng luỹ thừa của 2) cho một số bước cho đến khi một trong các công việc vượt quá bộ nhớ hiện có. Cho cho mỗi kích thước lô, hãy huấn luyện đủ lâu để có được số liệu ước tính đáng tin cậy về tốc độ huấn luyện:
thông lượng huấn luyện = số lượng ví dụ được xử lý mỗi giây
hoặc tương đương thời gian mỗi bước:
thời gian mỗi bước = kích thước lô / thông lượng huấn luyện
Khi trình tăng tốc chưa bão hoà, nếu kích thước lô tăng gấp đôi, thời lượng huấn luyện cũng sẽ tăng gấp đôi (hoặc ít nhất là gần gấp đôi). Tương đương như vậy, thời gian mỗi bước phải không đổi (hoặc ít nhất là gần không đổi) khi kích thước lô tăng lên. Nếu không phải như vậy, thì quy trình huấn luyện có điểm tắc nghẽn, chẳng hạn như I/O hoặc đồng bộ hoá giữa các nút điện toán. Cân nhắc chẩn đoán và khắc phục điểm tắc nghẽn trước khi tiếp tục.
Nếu thông lượng huấn luyện chỉ tăng lên đến kích thước lô tối đa nào đó, thì chỉ xem xét kích thước lô lên đến kích thước lô tối đa đó, ngay cả khi phần cứng hỗ trợ kích thước lô lớn hơn. Tất cả lợi ích của việc sử dụng kích thước lô lớn hơn đều giả định thông lượng huấn luyện tăng lên. Nếu không, hãy khắc phục nút thắt cổ chai hoặc sử dụng kích thước lô nhỏ hơn.
Tính năng tích luỹ chuyển màu mô phỏng một lô có kích thước lớn hơn so với phần cứng và do đó không mang lại bất kỳ lợi ích nào về thông lượng. Bạn nên thường tránh tích luỹ độ dốc trong công việc áp dụng.
Bạn có thể cần phải lặp lại các bước này mỗi khi thay đổi mô hình hoặc trình tối ưu hoá. Ví dụ: một cấu trúc mô hình khác có thể cho phép kích thước lô lớn hơn để vừa với bộ nhớ.
Chọn kích thước lô để giảm thiểu thời gian đào tạo
Dưới đây là định nghĩa của chúng tôi về thời gian đào tạo:
- thời gian huấn luyện = (thời gian mỗi bước) x (tổng số bước)
Thông thường, bạn có thể coi thời gian trên mỗi bước là gần như không đổi cho mọi kích thước lô khả thi. Điều này đúng khi:
- Không có mức hao tổn từ các phép tính song song.
- Chúng tôi đã chẩn đoán và khắc phục tất cả nút thắt cổ chai trong quá trình huấn luyện. (Xem phần trước để biết cách xác định nút thắt cổ chai trong huấn luyện. Trong thực tế, thường có ít nhất một vài khi tăng kích thước lô.
Khi kích thước lô tăng lên, tổng số bước cần thiết để đạt mục tiêu hiệu suất cố định thường giảm, miễn là bạn điều chỉnh lại tất cả các siêu tham số có liên quan khi thay đổi kích thước lô. (Xem Shallue và cộng sự. năm 2018.) Ví dụ: việc tăng gấp đôi kích thước lô có thể giảm một nửa tổng số lượng các bước cần thiết. Mối quan hệ này được gọi là tỷ lệ hoàn hảo và phải giữ cho tất cả các kích thước lô lên đến kích thước lô quan trọng.
Vượt quá kích thước lô quan trọng, việc tăng kích thước lô sẽ tạo ra lợi nhuận giảm. Điều đó nghĩa là, cuối cùng sẽ tăng kích thước lô sẽ không giảm số bước huấn luyện nữa, nhưng không bao giờ tăng. Do đó, kích thước lô giúp giảm thiểu thời gian đào tạo thường là kích thước lô lớn nhất mà vẫn giúp giảm số bước huấn luyện là bắt buộc. Kích thước lô này phụ thuộc vào tập dữ liệu, mô hình và trình tối ưu hoá, và đây là một vấn đề chưa được giải quyết, đó là cách tính toán tìm công cụ đó trong thử nghiệm cho mọi bài toán mới. 🤖
Khi so sánh kích thước lô, hãy lưu ý sự khác biệt giữa các yếu tố sau:
- Ngân sách mẫu hoặc ngân sách bắt đầu của hệ thống – chạy tất cả thử nghiệm trong khi sửa số lượng bản trình bày mẫu huấn luyện.
- Ngân sách bước—chạy tất cả thử nghiệm với số lần thử nghiệm cố định các bước huấn luyện.
Việc so sánh kích thước lô với ngân sách bắt đầu của hệ thống chỉ thăm dò biến thể hoàn hảo chế độ điều chỉnh tỷ lệ, ngay cả khi kích thước lô lớn hơn vẫn có thể cung cấp tăng tốc đáng kể bằng cách giảm số bước huấn luyện cần thiết. Thông thường, kích thước lô lớn nhất được phần cứng hiện có hỗ trợ nhỏ hơn kích thước lô quan trọng. Do đó, một quy tắc tốt thích (mà không chạy bất kỳ thử nghiệm nào) là sử dụng lô lớn nhất có thể sử dụng kích thước lô lớn hơn nếu kích thước lô này kết thúc tăng thời gian đào tạo.
Chọn kích thước lô để giảm thiểu mức tiêu thụ tài nguyên
Có hai loại chi phí tài nguyên liên quan đến việc tăng kích thước lô:
- Chi phí trả trước. Ví dụ: mua phần cứng mới hoặc viết lại quy trình huấn luyện để triển khai quy trình huấn luyện đa GPU / đa TPU.
- Chi phí sử dụng. Ví dụ: thanh toán dựa trên ngân sách tài nguyên của nhóm, thanh toán từ nhà cung cấp dịch vụ đám mây, chi phí điện / bảo trì.
Nếu có chi phí trả trước đáng kể để tăng kích thước lô, tốt hơn là hoãn việc tăng kích thước lô cho đến khi dự án đã phát triển và dễ dàng hơn trong việc đánh giá sự cân bằng giữa chi phí và lợi ích. Việc triển khai các chương trình đào tạo song song nhiều máy chủ lưu trữ có thể giới thiệu lỗi và các vấn đề nhỏ vì vậy, tốt hơn là bạn nên bắt đầu bằng một quy trình này. Mặt khác, việc đẩy nhanh thời gian đào tạo có thể rất có lợi ở giai đoạn đầu khi điều chỉnh nhiều thử nghiệm là cần thiết.
Chúng tôi đề cập đến tổng chi phí sử dụng (có thể bao gồm nhiều mức phí các loại chi phí) làm mức tiêu thụ tài nguyên, được tính như sau:
mức tiêu thụ tài nguyên = mức tiêu thụ tài nguyên mỗi bước x tổng số bước
Việc tăng kích thước lô thường làm giảm tổng số bước. Việc mức tiêu thụ tài nguyên tăng hay giảm phụ thuộc vào mức tiêu thụ mỗi bước thay đổi như thế nào. Điều này phụ thuộc vào kích thước lô như sau:
- Việc tăng kích thước lô có thể giảm mức sử dụng tài nguyên. Ví dụ: nếu mỗi bước có kích thước lô lớn hơn có thể chạy trên cùng phần cứng như kích thước lô nhỏ hơn (chỉ thời gian mỗi bước tăng), thì mức tăng tài nguyên mức tiêu thụ trên mỗi bước có thể lớn hơn mức giảm số bước.
- Việc tăng kích thước lô có thể không làm thay đổi mức sử dụng tài nguyên. Ví dụ: nếu kích thước lô tăng gấp đôi sẽ giảm một nửa số bước và tăng gấp đôi số lượng GPU được sử dụng, tổng mức tiêu thụ (về giờ GPU) không thay đổi.
- Việc tăng kích thước lô có thể làm tăng mức sử dụng tài nguyên. Ví dụ: nếu việc tăng kích thước lô yêu cầu phần cứng đã nâng cấp, mức tăng về mức tiêu thụ mỗi bước có thể lớn hơn mức giảm số bước.
Để thay đổi kích thước lô, bạn phải điều chỉnh lại hầu hết các tham số siêu tham số
Giá trị tối ưu của hầu hết các siêu tham số đều nhạy cảm với kích thước lô. Do đó, việc thay đổi kích thước lô thường đòi hỏi phải bắt đầu điều chỉnh toàn bộ quy trình. Các siêu tham số tương tác mạnh mẽ nhất với kích thước lô, do đó, điều quan trọng nhất là điều chỉnh riêng từng lô cho từng kích thước lô, như sau:
- Siêu tham số của trình tối ưu hoá (ví dụ: tốc độ học và động lượng)
- Siêu tham số điều chỉnh
Lưu ý điều này khi chọn kích thước lô ở đầu dự án. Nếu sau này bạn cần chuyển sang một kích thước lô khác, thì có thể khó khăn, tốn thời gian và tốn kém để tinh chỉnh các siêu tham số khác cho kích thước lô mới.
Cách chuẩn lô tương tác với kích thước lô
Tiêu chuẩn lô rất phức tạp và thường phải sử dụng một lô khác lớn hơn phép tính độ dốc để tính toán số liệu thống kê. Xem Triển khai chuẩn hoá theo lô chi tiết để thảo luận chi tiết.
Chọn cấu hình ban đầu
Giai đoạn đầu tiên trong việc điều chỉnh siêu tham số là xác định điểm khởi đầu cho các nội dung sau:
- cấu hình mô hình (ví dụ: số lượng lớp)
- siêu thông số của trình tối ưu hoá (ví dụ: tốc độ học)
- số bước huấn luyện
Việc xác định cấu hình ban đầu này yêu cầu một số đã định cấu hình quy trình chạy huấn luyện cũng như phương pháp thử và lỗi.
Sau đây là nguyên tắc định hướng của chúng tôi:
Tìm một phương án đơn giản, tương đối nhanh và tiêu thụ ít tài nguyên tương đối thấp để có được hiệu suất hợp lý.
trong đó:
- Đơn giản nghĩa là tránh các tính năng quy trình không cần thiết, chẳng hạn như quy tắc hoặc thủ thuật kiến trúc. Ví dụ: một quy trình không có bỏ ngang điều chỉnh độ ẩm (hoặc khi điều chỉnh tỷ lệ thoát bị tắt) đơn giản hơn so với quy trình có điều chỉnh tỷ lệ bỏ ngang.
- Hiệu suất hợp lý phụ thuộc vào vấn đề, nhưng ít nhất, mô hình được huấn luyện hợp lý hoạt động tốt hơn nhiều so với cơ hội ngẫu nhiên trên tập hợp xác thực.
Chọn một cấu hình ban đầu có tốc độ nhanh và tiêu thụ rất ít giúp việc điều chỉnh siêu tham số trở nên hiệu quả hơn nhiều. Ví dụ: hãy bắt đầu với một mô hình nhỏ hơn.
Việc chọn số bước tập luyện cần cân bằng những yếu tố sau:
- Việc huấn luyện thêm các bước có thể cải thiện hiệu suất và đơn giản hoá siêu tham số chỉnh. (Để biết thêm chi tiết, hãy xem Shallue và cộng sự. năm 2018).
- Ngược lại, huấn luyện cho ít bước hơn có nghĩa là mỗi lần chạy huấn luyện cần nhanh hơn và sử dụng ít tài nguyên hơn, nhờ đó tăng hiệu quả điều chỉnh bằng cách giảm khoảng thời gian giữa các chu kỳ và cho phép bạn chạy song song nhiều thử nghiệm hơn. Hơn nữa, nếu bạn đã chọn ngân sách bước lớn không cần thiết khi bắt đầu dự án, có thể khó thay đổi sau này trong dự án; ví dụ: sau khi bạn đã điều chỉnh lịch biểu tốc độ học tập cho số bước đó.