Phần này trình bày chi tiết quy trình đào tạo.
Tối ưu hoá quy trình nhập
Tóm tắt: Nguyên nhân và sự can thiệp của các quy trình liên kết đầu vào phụ thuộc rất nhiều vào nhiệm vụ. Sử dụng trình phân tích tài nguyên và chú ý đến các vấn đề thường gặp.
Sử dụng trình phân tích tài nguyên thích hợp, chẳng hạn như một trong các trình phân tích sau để chẩn đoán quy trình liên kết đầu vào:
- Perfetto cho JAX
- Trình phân tích tài nguyên SensorFlow cho TensorFlow.
Cuối cùng, những nguyên nhân cụ thể và sự can thiệp phụ thuộc nhiều vào nhiệm vụ. Cân nhắc về kỹ thuật rộng hơn (ví dụ: giảm thiểu dung lượng ổ đĩa) có thể ảnh hưởng đến hiệu suất của đường dẫn đầu vào.
Sau đây là những nguyên nhân phổ biến của quy trình liên kết đầu vào:
- Dữ liệu không được điều chỉnh trong quá trình đào tạo, dẫn đến độ trễ I/O. Ví dụ: việc đọc dữ liệu đào tạo qua mạng có thể gây ra thời gian chờ I/O.
- Xử lý dữ liệu trực tuyến đắt đỏ. 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ộ hóa ngoài ý muốn gây cản trở việc tìm nạp trước đường dẫn dữ liệu. Ví dụ: khi đồng bộ hoá 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 đối với quy trình liên kết đầu vào:
- Quy trình nhập công cụ để tìm nạp trước các ví dụ (ví dụ: tf.data.Dataset.fetch).
- Xoá các tính năng và siêu dữ liệu không dùng đến khỏi mỗi tính năng càng sớm càng tốt trong quy trình.
- Ví dụ: tăng cường việc nhân bản số lượng công việc tạo ví dụ cho quy trình nhập 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 đánh giá ở quy mô lô lớn hơn so với đào tạo. Hãy đánh giá trong các khoảng thời gian thông thường, thay vì các khoảng thời gian thông thường.
Chế độ cài đặt đánh giá
Bạn có thể sử dụng các cài đặt sau để đánh giá hiệu suất của mô hình của mình:
- Đánh giá trực tuyến: Thu thập các chỉ số khi mô hình phân phát dự đoán trong môi trường sản xuất. Phương pháp đánh giá trực tuyến thường cung cấp kết quả đá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 chạy mô hình trên chương trình đào tạo, xác thực hoặc bộ thử nghiệm ngoại tuyến đại diện cho môi trường thực tế. Tuỳ thuộc vào vấn đề, quá trình đá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à proxy để đánh giá ngoại tuyến và/hoặc một số dữ liệu dù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. Nhằm sử dụng một proxy thích hợp của quá trình đánh giá ngoại tuyến mà không hy sinh độ tin cậy của tín hiệu nhận được trong quá trình huấn luyện.
Thiết lập hoạt động đánh giá định kỳ
Bạn nên chạy đánh giá định kỳ trong quá trình đào tạo vì những lý do sau:
- Để theo dõi tiến trình đào tạo trong thời gian thực.
- Để hỗ trợ việc lựa chọn điểm kiểm tra mô hình hồi cứu.
- Để kiểm tra các đường cong đào tạo khi kết thúc quá trình đào tạo.
Cấu hình đơn giản nhất là thực hiện cả hoạt động huấn luyện và đánh giá định kỳ trong cùng một thực thể điện toán, định kỳ xen kẽ giữa hoạt động huấn luyện và đánh giá. Trong trường hợp này, kích thước lô được sử dụng để thực hiện đánh giá ít nhất phải lớn bằng kích thước lô được sử dụng để huấn luyện. Lý do là bạn không cần duy trì việc kích hoạt mô hình trong quá trình đánh giá. Việc này sẽ làm giảm các yêu cầu về tính toán cho mỗi ví dụ.
Đánh giá định kỳ vào các khoảng thời gian thông thường, không phải khoảng thời gian. Việc đánh giá dựa trên các khoảng thời gian có thể khiến việc diễn giải các lộ trình huấn luyện trở nên khó khăn hơn, đặc biệt là khi quá trình huấn luyện có thể gặp khó khăn do các nhiệm vụ đào tạo, vấn đề về độ trễ mạng, v.v.
Tính định kỳ trong các chỉ số kiểm thử và kiểm thử (khi sử dụng một tập huấn luyện ngẫu nhiên, tập xác thực, phân tách tập kiểm thử) có thể cho biết các lỗi triển khai như:
- Dữ liệu thử nghiệm chồng chéo với dữ liệu đào tạo.
- Dữ liệu đào tạo không được xáo trộn đúng cách.
Việc đánh giá theo các bước định kỳ có thể giúp bạn dễ dàng phát hiện các vấn đề này.
Các lô một phần có thể xảy ra khi 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ụ đệm có trọng số chính xác (như trong giá trị trung bình có trọng số so với số ví dụ được tính toán mức suy hao trung bình trong lô) để ngăn hàm suy hao bị sai lệch. Thông thường, bạn có thể đặt các ví dụ về khoảng đệm này bằng 0.
Lưu đủ thông tin cho mỗi đánh giá để hỗ trợ phân tích ngoại tuyến. Lý tưởng nhất là lưu các dự đoán về một số ví dụ riêng lẻ vì chúng có thể vô giá cho việc gỡ lỗi. Việc tạo các cấu phần phần mềm như SavedModels sẽ giúp đơn giản hoá việc kiểm tra mô hình đặc biệt sau khi hoàn tất công việc đánh giá.
Chọn một 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ộ quá trình đánh giá ngoại tuyến được thiết lập 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 xây dựng tập dữ liệu được lấy mẫu, hãy xem xét các vấn đề về kích thước mẫu và các mối quan tâm đặc biệt trong tập dữ liệu không cân bằng.
Kích thước mẫu
Kiểm tra để đảm bảo rằng hiệu suất được tính toán trên tập dữ liệu mẫu được sử dụng bởi công việc định kỳ khớp với hiệu suất trên toàn bộ tập hợp đánh giá ngoại tuyến; nghĩa là đảm bảo rằng không có sự sai lệch giữa tập dữ liệu được lấy mẫu và tập dữ liệu đầy đủ.
Tập dữ liệu bạn dùng để đánh giá định kỳ phải là:
- Đủ nhỏ để dễ dàng tạo dự đoán mô hình tổng thể.
- Đủ lớn để thực hiện cả hai việc sau:
- Đo lường chính xác các cải tiến cho mô hình; nghĩa là, các phép đo sẽ không bị nhiễu nhãn.
- Thực hiện nhiều đánh giá như vậy theo nhiều cách thử nghiệm liên tục và vẫn đưa ra ước tính chính xác. Điều đó có nghĩa là kích thước đủ lớn để tránh "phù hợp" với bộ xác thực theo thời gian một cách thích hợp và không tổng quát hoá thành bộ thử nghiệm được tổ chức. Tuy nhiên, việc xem xét này hiếm khi là mối quan tâm thực tế.
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 nhỏ hiếm gặp thường gây nhiễu. Đối với những tập dữ liệu chỉ có một số ít ví dụ là thiểu số, hãy ghi lại số lượng ví dụ dự đoán chính xác để thu thập thêm thông tin chi tiết về mức độ chính xác. Ví dụ: việc cải thiện độ nhạy .05 nghe có vẻ thú vị, nhưng sự cải thiện chỉ vì có thêm một ví dụ đúng hay không?
Lưu điểm kiểm tra và nhìn lại điểm kiểm tra tốt nhất
Tóm tắt: Chạy chương trình đào tạo cho một số bước cố định và xem xét lại điểm kiểm tra tốt nhất trong quá trình chạy.
Hầu hết các khung học sâu đều hỗ trợ mô hình điểm kiểm tra. Tức là trạng thái hiện tại của mô hình được lưu vào ổ đĩa theo định kỳ. Điểm kiểm tra giúp công việc huấn luyện có khả năng phục hồi khi tính toán các gián đoạn của thực thể. Đ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 bộ xác thực không tiếp tục tăng theo thời gian mà còn dao động về 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 cho đến thời điểm hiện tại trong quá trình huấn luyện. Khi kết thúc khoá đào tạo, việc lựa chọn mô hình chỉ đơn giản có nghĩa là chọn ra điểm kiểm tra tốt nhất. Chúng tôi gọi đây là phương pháp chọn điểm kiểm tra tối ưu hoá theo quy trình. Việc hỗ trợ việc dừng sớm có triển khai 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 bảo toàn N điểm kiểm tra tốt nhất tính đến thời điểm hiện tại.
Thiết lập 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ố yếu tố 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à một đoạn mô tả ngắn về nghiên cứu.
Chúng tôi khuyên bạn nên theo dõi kết quả thử nghiệm trong 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 bất kỳ nơi nào cấu hình cho nghiên cứu được lưu trữ.
- Ghi chú hoặc 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 nhận của điểm kiểm tra tốt nhất trong nghiên cứu.
- Các lệnh tái tạo hoặc ghi chú cụ thể về những thay đổi chưa được gửi cần thiết để chạy chương trình đào tạo.
Tìm một hệ thống theo dõi thuận tiện nắm bắt ít nhất thông tin được liệt kê ở trên. Các thử nghiệm không được theo dõi cũng có thể không tồn tại.
Chi tiết triển khai chuẩn hóa hàng loạt
Tóm tắt: Ngày nay, bạn thường có thể thay thế quá trình chuẩn hoá hàng loạt bằng LayerNorm. Tuy nhiên, trong trường hợp bạn không thể thay thế, có nhiều chi tiết phức tạp khi thay đổi kích thước lô hoặc số lượng máy chủ.
Quá trình chuẩn hoá theo lô sẽ chuẩn hoá quá trình kích hoạt bằng cách sử dụng giá trị trung bình và phương sai trong 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 tuỳ theo thiết bị trừ khi được đồng bộ hoá một cách rõ ràng. Báo cáo giai đoạn (chủ yếu trên ImageNet) cho biết rằng việc tính toán các số liệu chuẩn hóa này chỉ bằng cách sử dụng khoảng 64 ví dụ thực sự hiệu quả hơn trong thực tế. (Xem nội dung mô tả về Quá trình chuẩn hoá lô ma trong Đào tạo lâu hơn, tổng quát hơn: thu hẹp khoảng cách tổng quát trong quá trình đào tạo theo lô lớn về mạng nơron.) Việc phân tách tổng kích thước lô và số lượng ví dụ dùng để tính toán số liệu thống kê về định mức lô đặc biệt hữu ích cho việc so sánh kích thước lô.
Việc triển khai chuẩn hoá lô ma không phải lúc nào cũng xử lý chính xác trường hợp kích thước lô cho 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 con lô trên mỗi thiết bị để có được số lượng ví dụ thống kê định mức lô thích hợp.
Đường trung bình động mũ (EMA) dùng trong quá trình chuẩn hoá hàng loạt của chế độ thử nghiệm chỉ là sự kết hợp tuyến tính của số liệu thống kê đào tạo. Do đó, bạn chỉ cần đồng bộ hoá các EMA này trước khi lưu vào các điểm kiểm tra. Tuy nhiên, một số phương thức triển khai phổ biến của quá trình chuẩn hoá hàng loạt không đồng bộ hoá những EMA này và chỉ lưu EMA trên thiết bị đầu tiên.
Lưu ý đối với quy trình nhiều máy chủ
Tóm tắt: ghi nhật ký, lưu trữ, RNG, điểm kiểm tra và phân đoạn dữ liệu, đào tạo trên nhiều máy chủ có thể giúp bạn dễ dàng giới thiệu lỗi!
Hãy làm như sau đối với quy trình nhiều máy chủ:
- Đảm bảo quy trình chỉ ghi nhật ký và kiểm tra trên một máy chủ lưu trữ.
- Đồng bộ hoá số liệu thống kê về quá trình chuẩn hoá hàng loạt trên các máy chủ trước khi đánh giá hoặc kiểm tra.
- Phân đoạn tệp dữ liệu trên các máy chủ vì thường sẽ cải thiện hiệu suất.
Quan trọng: Đảm bảo rằng bạn có các hạt RNG giống nhau giữa các máy chủ (để khởi chạy mô hình) và các hạt giống khác nhau trên máy chủ lưu trữ (để xáo trộn/xử lý trước dữ liệu). Do đó, hãy nhớ đánh dấu chúng phù hợp.