Hướng dẫn bắt đầu dự án mới

Phần này giải thích cách chọn những nội dung sau đây khi bắt đầu một 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 đã tạo ra vấn đề và chuẩn bị dữ liệu huấn luyện của mình trong một phần 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 nhất có thể cho những gì bạn định đo lường trong môi trường được triển khai.

Giả sử bạn đã đáp ứng mọi điều kiện tiên quyết trước đó, thì giờ đây, 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 để đưa ra dự đoán. Cấu trúc mô hình chứa khung để chuyển đổi dữ liệu đầu vào thành thông tin dự đoán, nhưng không chứa giá trị tham số. Ví dụ: một mạng nơron có 3 lớp ẩn gồm 10 nút, 5 nút và 3 nút tương ứng là một cấu trúc mô hình.
  • model là một cấu trúc mô hình cộng với các giá trị cụ thể cho tất cả các tham số. Ví dụ: một mô hình bao gồm mạng nơron được mô tả trong phần định nghĩa về cấu trúc mô hình, cùng với các giá trị cụ thể cho các trọng số và độ chệch của từng nút.
  • Nhóm mô hình là một mẫu để xây dựng cấu trúc mô hình dựa trên một tập hợp siêu tham số.

Việc chọn cấu trúc mô hình thực ra có nghĩa là chọn một tập hợp các mô hình khác nhau (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 nhận trong tài liệu giải quyết vấn đề nào đó gần nhất có thể với vấn đề hiện tại. Sau đó, hãy tái tạo mô hình đó làm điểm xuất phát.

Chọn trình tối ưu hoá

Không có trình tối ưu hoá nào là "tốt nhất" trong mọi loại vấn đề về học máy và cấu trúc mô hình. Thậm chí, việc chỉ so sánh hiệu suất của các trình tối ưu hoá cũng rất khó khăn. 🤖Bạn nên sử dụng các trình tối ưu hoá phổ biến, có kinh nghiệm, đặc biệt 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 vấn đề bạn đang giải quyết. Chúng tôi khuyên bạn nên sử dụng các trình tối ưu hóa hoạt động tốt sau đây:

Chú ý đến tất cả đối số của trình tối ưu hóa đã chọn. Trình tối ưu hoá có nhiều siêu thông 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ó chịu trong các 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 (ví dụ: tốc độ học) trong khi vẫn xem các đối số của trình tối ưu hoá là vấn đề gây phiền toái. Do đó, bạn nên áp dụng phương pháp sau:

  1. Khi bắt đầu dự án, hãy chọn một trình tối ưu hoá không có nhiều tham số có thể điều chỉnh. Dưới đây là hai ví dụ:
    • SGD với động lượng cố định.
    • Adam với Epsilon, Beta1 và Beta2 cố định.
  2. Trong các giai đoạn sau của dự án, hãy chuyển sang một trình tối ưu hoá tổng quát hơn để điều chỉnh nhiều siêu tham số hơn thay vì 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 dùng kích thước lô để điều chỉnh trực tiếp hiệu suất của nhóm xác thực.

Kích thước lô xác định rất nhiều thời gian huấn luyện và mức sử dụng tài nguyên điện toán. Việc tăng kích thước lô thường làm giảm thời gian huấn luyện, điều này:

  • Cho phép bạn điều chỉnh siêu tham số kỹ hơn trong một khoảng thời gian cố định, 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 thử nghiệm các ý tưởng mới 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 tiêu thụ tài nguyên hoặc không thay đổi mức tiêu thụ tài nguyên.

Đừng coi kích thước lô là siêu tham số có thể điều chỉnh đối với hiệu suất của nhóm xác thực. Nếu bạn đáp ứng tất cả các điều kiện sau đây, thì hiệu suất của mô hình sẽ không phụ thuộc vào kích thước lô:

  • Tất cả các siêu thông số của trình tối ưu hoá đều được tinh chỉnh tốt.
  • Việc chuẩn hoá là đủ và được điều chỉnh đúng cách.
  • Bạn chỉ cần cung cấp đủ số bước huấn luyện.

Hiệu suất cuối cùng phải đạt được bằng cách sử dụng bất kỳ kích thước lô nào (Xem Shallue và cộng sự 2018Tại sao không nên điều chỉnh kích thước lô để trực tiếp cải thiện hiệu suất của bộ 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ể rất khó để tính toán kích thước lô nào 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 toàn bộ chương trình huấn luyện. Giải pháp dễ nhất thường là chạy các công việc huấn luyện ở nhiều kích thước lô (ví dụ: tăng luỹ thừa của 2) trong một số ít bước cho đến khi một trong các công việc vượt quá bộ nhớ hiện có. Đối với mỗi kích thước lô, hãy huấn luyện đủ thời gian để có được số liệu ước tính đáng tin cậy về thông lượng 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 là thời gian trên mỗi bước:

thời gian mỗi bước = kích thước lô / công suất 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ì thông 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, thời gian cho mỗi bước phải không đổi (hoặc ít nhất là gần như 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 sẽ có điểm tắc nghẽn, chẳng hạn như I/O hoặc quá trình đồng bộ hoá giữa các nút điện toán. Hãy cân nhắc việc chẩn đoán và khắc phục nút thắt cổ chai trước khi tiếp tục.

Nếu công suất huấn luyện chỉ tăng lên tới kích thước lô tối đa, thì chỉ xem xét kích thước lô lên tới 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 quy mô lô nhỏ hơn.

Tính năng tích luỹ chuyển màu mô phỏng một kích thước lô lớn hơn mà phần cứng có thể hỗ trợ, do đó, không mang lại bất kỳ lợi ích nào về công suất. Nhìn chung, bạn nên tránh tích luỹ chuyển màu trong công việc đượ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 huấn luyện

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 của mỗi bước là gần như không đổi cho tất cả các kích thước lô khả thi. Điều này đúng khi:

  • Không phát sinh thêm chi phí khi tính toán song song.
  • Tất cả các nút thắt cổ chai trong chương trình đào tạo đều đã được chẩn đoán và khắc phục. (Xem phần trước để biết cách xác định nút thắt cổ chai của chương trình đào tạo. Trong thực tế, thường có ít nhất một số hao tổn từ việc 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 được mục tiêu hiệu suất cố định thường sẽ 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 et al. 2018.) Ví dụ: việc tăng gấp đôi kích thước lô có thể làm giảm một nửa tổng số bước cần thực hiện. Mối quan hệ này được gọi là tỷ lệ hoàn hảo và sẽ duy trì cho tất cả các kích thước lô lên đến kích thước lô quan trọng.

Ngoài kích thước lô quan trọng, việc tăng kích thước lô sẽ tạo ra kết quả trả về giảm. Điều này nghĩa là việc tăng kích thước lô cuối cùng không còn làm giảm số bước huấn luyện nhưng không bao giờ tăng kích thước đó nữa. Do đó, kích thước lô giúp giảm thiểu thời gian huấn luyện 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 cần thiết. 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à đó là một vấn đề chưa giải quyết xong về cách tính toán kích thước lô này ngoài việc tìm kiếm bằng thử nghiệm cho mọi vấn đề mới. 🤖

Khi so sánh kích thước lô, hãy lưu ý đến sự khác biệt giữa những kích thước sau:

  • Ngân sách mẫu hoặc ngân sách epoch – chạy tất cả thử nghiệm đồng thời chỉnh sửa số lượng bản trình bày mẫu huấn luyện.
  • Ngân sách theo bước – chạy tất cả thử nghiệm với số bước huấn luyện cố định.

Việc so sánh kích thước lô với ngân sách thời gian bắt đầu của hệ thống chỉ thăm dò chế độ điều chỉnh theo tỷ lệ hoàn hảo, ngay cả khi kích thước lô lớn hơn vẫn có thể giú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 mà phần cứng có sẵn hỗ trợ sẽ nhỏ hơn kích thước lô quan trọng. Do đó, nguyên tắc chung (mà không cần chạy bất kỳ thử nghiệm nào) là sử dụng kích thước lô lớn nhất có thể.Không cần thiết phải sử dụng kích thước lô lớn hơn nếu việc này cuối cùng sẽ tăng thời gian huấn luyện.

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 việc huấn luyện nhiều GPU / nhiều TPU.
  • Chi phí sử dụng. Ví dụ: thanh toán cho ngân sách tài nguyên của nhóm, thanh toán của 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ô, bạn nên trì hoãn việc tăng kích thước lô cho đến khi dự án hoàn thiện và bạn sẽ dễ dàng đánh giá sự đánh đổi chi phí-lợi ích. Việc triển khai các chương trình đào tạo song song nhiều máy chủ có thể gây ra bugscác vấn đề nhỏ, vì vậy, tốt hơn là bạn nên bắt đầu với một quy trình đơn giản hơn. Mặt khác, việc tăng nhanh thời gian huấn luyện có thể sẽ rất có lợi trong quá trình này khi cần nhiều thử nghiệm điều chỉnh.

Chúng tôi gọi tổng chi phí sử dụng (có thể bao gồm nhiều loại chi phí khác nhau) 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 trê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 còn tuỳ thuộc vào cách mức tiêu thụ trên mỗi bước thay đổi, đ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 tiêu thụ 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 một phần cứng với kích thước lô nhỏ hơn (chỉ với sự gia tăng nhỏ về thời gian mỗi bước), thì mức tăng mức sử dụng tài nguyên trên mỗi bước có thể lớn hơn mức giảm về số bước.
  • Việc tăng kích thước lô có thể không làm thay đổi mức tiêu thụ tài nguyên. Ví dụ: nếu việc tăng gấp đôi kích thước lô sẽ làm giảm một nửa số bước cần thực hiện và tăng gấp đôi số GPU được sử dụng, thì tổng mức tiêu thụ (tính theo giờ GPU) sẽ không thay đổi.
  • Việc tăng kích thước lô có thể làm tăng mức tiêu thụ 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 được nâng cấp, thì mức tiêu thụ trên mỗi bước tăng có thể nhiều hơn việc giảm số bước.

Việc thay đổi kích thước lô yêu cầu điều chỉnh lại hầu hết các 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 yêu cầu bắt đầu lại quá trình điều chỉnh. Sau đây là các siêu tham số tương tác mạnh nhất với kích thước lô, do đó, quan trọng nhất là cần điều chỉnh riêng cho từng kích thước lô như sau:

  • Siêu thông số của trình tối ưu hoá (ví dụ: tốc độ học và động lượng)
  • Siêu tham số chính quy

Hãy lưu ý điều này khi chọn kích thước lô ở phần bắt đầu dự án. Nếu sau này bạn cần chuyển sang một kích thước lô khác, việc tinh chỉnh các siêu tham số khác cho kích thước lô mới có thể khó khăn, tốn thời gian và tốn kém.

Cách tiêu chuẩn lô tương tác với kích thước lô

Định mức lô rất phức tạp và nhìn chung, phải sử dụng kích thước lô khác với tính toán chuyển màu để tính toán số liệu thống kê. Xem Thông tin chi tiết về quá trình chuẩn hoá theo lô để nắm được nội dung thảo luận chi tiết.

Chọn cấu hình ban đầu

Giai đoạn đầu tiên trong quá trình điều chỉnh siêu tham số là xác định điểm bắt đầu cho những yếu tố sau:

  • cấu hình mô hình (ví dụ: số 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 cần phải thực hiện một số lần chạy huấn luyện được định cấu hình theo cách thủ công cũng như phương thức thử và sai.

Nguyên tắc hướng dẫn của chúng tôi như sau:

Tìm một cấu hình đơn giản, tương đối nhanh, có mức tiêu thụ tài nguyên tương đối thấp và có được hiệu suất hợp lý.

trong đó:

  • Đơn giản có 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ư các quy chuẩn đặc biệt hoặc thủ thuật kiến trúc. Ví dụ: một quy trình không có quy trình bỏ chính quy (hoặc đã tắt quy trình bỏ chính quy) sẽ đơn giản hơn quy trình có chính quy bỏ qua.
  • Hiệu suất hợp lý phụ thuộc vào vấn đề, nhưng ít nhất, một mô hình được huấn luyện hợp lý sẽ 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.

Việc chọn một cấu hình ban đầu có tốc độ nhanh và tiêu thụ ít tài nguyên nhất sẽ giúp việc điều chỉnh siêu tham số trở nên hiệu quả hơn nhiều. Ví dụ: bắt đầu bằng một mô hình nhỏ hơn.

Việc chọn số lượng bước huấn luyện liên quan đến việc cân bằng sự căng thẳng sau đây:

  • 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á việc điều chỉnh siêu tham số. (Để biết thêm chi tiết, hãy xem Shallue và cộng sự 2018).
  • Ngược lại, việc huấn luyện cho ít bước hơn đồng nghĩa với việc mỗi lần huấn luyện chạy nhanh hơn và sử dụng ít tài nguyên hơn, tăng hiệu quả điều chỉnh bằng cách giảm 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 một mức ngân sách bước lớn một cách không cần thiết khi bắt đầu dự án, thì sau này bạn có thể sẽ khó thay đổi ngân sách đó trong dự án; ví dụ: sau khi bạn đã điều chỉnh lịch biểu tốc độ học cho số bước đó.