Phần này trình bày chi tiết quy trình huấn luyện.
Tối ưu hoá quy trình đầu vào
Tóm tắt: Nguyên nhân và biện pháp can thiệp của các quy trình bị ràng buộc đầu vào phụ thuộc rất nhiều vào nhiệm vụ. Sử dụng một trình phân tích tài nguyên và lưu ý đến các vấn đề thường gặp.
Sử dụng một trình phân tích tài nguyên phù hợp (chẳng hạn như một trong những trình phân tích tài nguyên sau) để chẩn đoán các quy trình bị ràng buộc bởi dữ liệu đầu vào:
- Perfetto cho JAX
- Trình phân tích tài nguyên TensorFlow cho TensorFlow.
Cuối cùng, các nguyên nhân và biện pháp can thiệp cụ thể phụ thuộc rất nhiều vào nhiệm vụ. Các yếu tố kỹ thuật rộng hơn (ví dụ: giảm thiểu dung lượng ổ đĩa) có thể làm giảm hiệu suất của quy trình đầu vào.
Sau đây là các nguyên nhân phổ biến khiến các quy trình bị ràng buộc bởi dữ liệu đầu vào:
- Dữ liệu không được đặt cùng với quy trình huấn luyện, gây ra độ trễ I/O. Ví dụ: việc đọc dữ liệu huấn luyện qua mạng có thể gây ra độ trễ I/O.
- Xử lý trước dữ liệu trực tuyến tốn kém. Cân nhắc việc xử lý trước một lần khi ngoại tuyến và lưu kết quả.
- Các rào cản đồng bộ hoá không chủ ý gây trở ngại cho việc tìm nạp trước quy trình dữ liệu. Ví dụ: khi đồng bộ hoá các chỉ số giữa thiết bị và máy chủ trong CommonLoopUtils.
Chúng tôi đề xuất các biện pháp can thiệp sau đây cho các quy trình bị ràng buộc về đầu vào:
- Đường dẫn đầu vào của công cụ để tìm nạp trước các ví dụ (ví dụ: tf.data.Dataset.prefetch).
- Xoá các tính năng và siêu dữ liệu không dùng đến khỏi từng tính năng càng sớm càng tốt trong quy trình.
- Tăng số lượng công việc tạo ví dụ cho quy trình đầu vào, chẳng hạn như bằng cách sử dụng dịch vụ tf.data.
Đánh giá hiệu suất của mô hình
Tóm tắt: Chạy quy trình đánh giá ở kích thước lô lớn hơn so với quy trình huấn luyện. Chạy các quy trình đánh giá theo khoảng thời gian định kỳ, chứ không phải theo khoảng thời gian đều đặn.
Chế độ cài đặt đánh giá
Bạn có thể sử dụng các chế độ cài đặt sau để đánh giá hiệu suất của các mô hình:
- Đánh giá trực tuyến: Thu thập các chỉ số khi mô hình đang phân phát các dự đoán trong môi trường sản xuất. Đánh giá trực tuyến thường cung cấp thông tin đánh giá thực tế nhất về chất lượng mô hình vì phương pháp này phù hợp với cách mô hình sẽ được sử dụng.
- Đánh giá ngoại tuyến: Thu thập các chỉ số khi mô hình chạy trên các tập hợp huấn luyện, xác thực hoặc kiểm thử ngoại tuyến đại diện cho môi trường sản xuất. Tuỳ thuộc vào vấn đề, việc đánh giá ngoại tuyến có thể khá phức tạp và tốn kém về mặt tính toán.
- Đánh giá định kỳ: Thu thập các chỉ số trong quá trình huấn luyện mô hình có thể là chỉ số đại diện cho hoạt động đánh giá ngoại tuyến và/hoặc trên một tập hợp con của dữ liệu được dùng trong hoạt động đánh giá ngoại tuyến. Đánh giá định kỳ là lựa chọn thiết thực và tiết kiệm nhất nhưng có thể không thể hiện đầy đủ môi trường sản xuất. Mục tiêu là sử dụng một proxy phù hợp cho quá trình đánh giá ngoại tuyến mà không làm giảm độ tin cậy của tín hiệu nhận được trong quá trình huấn luyện.
Thiết lập quy trình đánh giá định kỳ
Bạn nên chạy các quy trình đánh giá định kỳ trong quá trình huấn luyện vì những lý do sau:
- Để giám sát tiến trình huấn luyện theo thời gian thực.
- Để tạo điều kiện thuận lợi cho việc lựa chọn điểm kiểm tra mô hình hồi tố.
- Để kiểm tra các đường cong huấn luyện ở cuối quá trình huấn luyện.
Cấu hình đơn giản nhất là thực hiện cả quá trình huấn luyện và đánh giá định kỳ trong cùng một phiên bản điện toán, định kỳ luân phiên giữa huấn luyện và đánh giá. Trong trường hợp này, kích thước lô dùng để thực hiện các hoạt động đánh giá phải ít nhất bằng kích thước lô dùng để huấn luyện. Lý do là bạn không cần duy trì các lượt kích hoạt mô hình trong quá trình đánh giá, điều này giúp giảm yêu cầu về điện toán cho mỗi ví dụ.
Thực hiện đánh giá định kỳ theo các khoảng bước đều đặn, chứ không phải khoảng thời gian. Việc đánh giá dựa trên khoảng thời gian có thể khiến bạn khó diễn giải các đường cong huấn luyện, đặc biệt là khi quá trình huấn luyện có thể bị ảnh hưởng bởi việc ưu tiên các công việc huấn luyện, các vấn đề về độ trễ mạng, v.v.
Tính định kỳ trong các chỉ số xác thực và kiểm thử (khi sử dụng một tập huấn luyện, tập xác thực, tập kiểm thử được phân chia ngẫu nhiên) có thể cho biết các lỗi triển khai, chẳng hạn như:
- Dữ liệu kiểm thử trùng lặp với dữ liệu huấn luyện.
- Dữ liệu huấn luyện không được xáo trộn đúng cách.
Việc đánh giá theo các khoảng thời gian đều đặn có thể giúp bạn dễ dàng phát hiện những vấn đề này.
Các lô một phần có thể xảy ra khi các tập hợp đánh giá không chia hết cho kích thước lô. Đảm bảo rằng các ví dụ được thêm vào có trọng số chính xác (như trong giá trị trung bình có trọng số trên các ví dụ tính toán tổn thất trung bình trên lô) để ngăn hàm tổn thất bị ảnh hưởng bởi các ví dụ này. Thông thường, bạn có thể đặt trọng số bằng 0 cho những ví dụ được thêm khoảng đệm này.
Lưu đủ thông tin cho mỗi lượt đánh giá để hỗ trợ việc phân tích khi không có mạng. Tốt nhất là bạn nên lưu các dự đoán trên một số ví dụ riêng lẻ vì chúng có thể rất hữu ích cho việc gỡ lỗi. Việc tạo các cấu phần phần mềm như SavedModels giúp đơn giản hoá việc kiểm tra mô hình đặc biệt sau khi các công việc đánh giá hoàn tất.
Chọn mẫu để đánh giá định kỳ
Công việc đánh giá định kỳ có thể không chạy đủ nhanh để tính toán các chỉ số trên toàn bộ tập hợp đánh giá ngoại tuyến trong một khoảng thời gian hợp lý. Vấn đề này thường đòi hỏi phải lấy mẫu dữ liệu để đánh giá định kỳ. Khi tạo một tập dữ liệu được lấy mẫu, hãy cân nhắc các vấn đề về kích thước mẫu và những mối lo ngại đặc biệt trong các tập dữ liệu không cân bằng.
Cỡ mẫu
Kiểm tra để đảm bảo hiệu suất được tính toán trên tập dữ liệu mẫu mà công việc định kỳ sử dụng khớp với hiệu suất trên toàn bộ tập hợp đánh giá ngoại tuyến; tức là đảm bảo không có độ lệch giữa tập dữ liệu mẫu và tập dữ liệu đầy đủ.
Tập dữ liệu bạn dùng để đánh giá định kỳ phải đáp ứng cả hai điều kiện sau:
- Đủ nhỏ để dễ dàng tạo thông tin dự đoán về mô hình trên toàn bộ dữ liệu.
- Đủ lớn để thực hiện cả hai việc sau:
- Đo lường chính xác những điểm cải tiến của mô hình; tức là các phép đo không được bị ảnh hưởng quá nhiều bởi nhiễu nhãn.
- Điều chỉnh nhiều đánh giá như vậy trong các thử nghiệm theo trình tự và vẫn đưa ra được các thông tin ước tính chính xác. Tức là đủ lớn để tránh việc "điều chỉnh" một cách thích ứng cho phù hợp với tập hợp xác thực theo thời gian theo cách không khái quát hoá cho một tập hợp kiểm thử được giữ lại. Tuy nhiên, hiếm khi có vấn đề thực tế nào liên quan đến việc cân nhắc này.
Tập dữ liệu không cân bằng
Đối với các tập dữ liệu không cân bằng, hiệu suất trên các lớp thiểu số hiếm gặp thường không ổn định. Đối với các tập dữ liệu chỉ có một số ít ví dụ về nhóm thiểu số, hãy ghi lại số lượng ví dụ được dự đoán chính xác để hiểu rõ hơn về những điểm cải thiện độ chính xác. Ví dụ: mức cải thiện độ nhạy là 0,05 nghe có vẻ thú vị, nhưng liệu mức cải thiện đó chỉ là do có thêm một ví dụ chính xác?
Lưu điểm đánh dấu và chọn điểm đánh dấu phù hợp nhất sau khi đã lưu
Tóm tắt: Chạy quy trình huấn luyện trong một số bước cố định và chọn điểm kiểm tra tốt nhất từ quy trình đó.
Hầu hết các khung học sâu đều hỗ trợ kiểm tra điểm mô hình. Tức là trạng thái hiện tại của mô hình sẽ được lưu định kỳ vào ổ đĩa. Tính năng tạo điểm kiểm tra giúp lệnh huấn luyện có khả năng phục hồi trước các gián đoạn phiên bản tính toán. Điểm kiểm tra tốt nhất thường không phải là điểm kiểm tra cuối cùng, đặc biệt là khi hiệu suất của tập hợp xác thực không tiếp tục tăng theo thời gian mà dao động quanh một giá trị cụ thể.
Thiết lập quy trình để theo dõi N điểm kiểm tra tốt nhất đã thấy cho đến nay trong quá trình huấn luyện. Vào cuối quá trình huấn luyện, việc chọn mô hình chỉ đơn giản là chọn điểm kiểm tra tốt nhất. Chúng tôi gọi phương pháp này là lựa chọn điểm kiểm tra tối ưu hồi tố. Việc hỗ trợ dừng sớm dự kiến thường không cần thiết, vì bạn đang chỉ định trước ngân sách dùng thử và đang giữ lại N điểm kiểm tra tốt nhất đã thấy cho đến nay.
Thiết lập tính năng theo dõi thử nghiệm
Tóm tắt: Khi theo dõi các thử nghiệm khác nhau, hãy theo dõi một số thông tin cần thiết, chẳng hạn như hiệu suất tốt nhất của một điểm kiểm tra trong nghiên cứu và nội dung mô tả ngắn về nghiên cứu.
Bạn nên theo dõi kết quả thử nghiệm trong một bảng tính. Bảng tính của chúng tôi thường chứa các cột sau:
- Tên nghiên cứu
- Đường liên kết đến nơi lưu trữ cấu hình cho nghiên cứu.
- Ghi chú hoặc nội dung mô tả ngắn về nghiên cứu.
- Số lần chạy thử
- Hiệu suất trên tập hợp xác thực của điểm kiểm tra tốt nhất trong nghiên cứu.
- Các lệnh tái tạo cụ thể hoặc ghi chú về những thay đổi chưa được gửi cần thiết để bắt đầu quá trình huấn luyện.
Tìm một hệ thống theo dõi thuận tiện, có thể ghi lại ít nhất những thông tin nêu trên. Những thử nghiệm không được theo dõi cũng như không tồn tại.
Thông tin chi tiết về việc triển khai chuẩn hoá theo lô
Tóm tắt: Ngày nay, bạn thường có thể thay thế chuẩn hoá theo lô bằng LayerNorm, nhưng trong trường hợp không thể thay thế, sẽ có những chi tiết phức tạp khi thay đổi kích thước lô hoặc số lượng máy chủ lưu trữ.
Chuẩn hoá theo lô sẽ chuẩn hoá các lượt kích hoạt bằng cách sử dụng giá trị trung bình và phương sai của các lượt kích hoạt đó trên lô hiện tại. Tuy nhiên, trong chế độ cài đặt nhiều thiết bị, các số liệu thống kê này sẽ khác nhau trên mỗi thiết bị, trừ phi được đồng bộ hoá một cách rõ ràng. Các báo cáo giai thoại (chủ yếu trên ImageNet) cho thấy việc tính toán các số liệu thống kê chuẩn hoá này chỉ bằng khoảng 64 ví dụ thực sự hoạt động hiệu quả hơn trong thực tế. (Xem phần mô tả về Ghost Batch Normalization trong bài viết Train longer, generalize better: closing the generalization gap in large batch training of neural networks (Huấn luyện lâu hơn, khái quát hoá tốt hơn: thu hẹp khoảng cách khái quát hoá trong quá trình huấn luyện theo lô lớn của mạng nơ-ron)). Việc tách tổng kích thước lô và số lượng ví dụ được dùng để tính toán số liệu thống kê chuẩn hoá theo lô đặc biệt hữu ích cho việc so sánh kích thước lô.
Các quy trình triển khai chuẩn hoá theo lô ảo không phải lúc nào cũng xử lý đúng trường hợp kích thước lô trên mỗi thiết bị lớn hơn kích thước lô ảo. Trong trường hợp này, bạn cần lấy mẫu phụ lô trên mỗi thiết bị để có được số lượng mẫu thống kê chuẩn hoá lô phù hợp.
Trung bình động hàm mũ (EMA) được dùng trong chuẩn hoá theo lô ở chế độ kiểm thử chỉ là một tổ hợp tuyến tính của số liệu thống kê huấn luyện. Do đó, bạn chỉ cần đồng bộ hoá các EMA này trước khi lưu chúng vào các điểm kiểm tra. Tuy nhiên, một số cách triển khai phổ biến của chuẩn hoá theo lô không đồng bộ hoá các EMA này và chỉ lưu EMA từ thiết bị đầu tiên.
Những điểm cần cân nhắc đối với quy trình có nhiều máy chủ lưu trữ
Tóm tắt: đối với việc ghi nhật ký, đánh giá, RNG, điểm kiểm tra và phân chia dữ liệu, việc huấn luyện trên nhiều máy chủ có thể khiến bạn rất dễ gặp phải lỗi!
Đối với quy trình gồm nhiều máy chủ, hãy làm như sau:
- Đảm bảo rằng quy trình chỉ ghi nhật ký và đánh dấu điểm kiểm tra trên một máy chủ.
- Đồng bộ hoá số liệu thống kê chuẩn hoá theo lô trên các máy chủ trước khi đánh giá hoặc kiểm tra.
- Phân mảnh tệp dữ liệu trên nhiều máy chủ vì điều đó thường giúp cải thiện hiệu suất.
Quan trọng: Đảm bảo rằng bạn có các giá trị ban đầu của RNG giống nhau trên các máy chủ (để khởi tạo mô hình) và các giá trị ban đầu khác nhau trên các máy chủ (để xáo trộn/tiền xử lý dữ liệu). Do đó, hãy nhớ đánh dấu chúng một cách thích hợp.