GPU cho nghiên cứu ML · Thanh toán crypto không KYC
IteraGPU
Sử dụng / Huấn luyện

Một bước hoàn chỉnh trước ngàn lần thử.

Trước một đợt huấn luyện, hãy cho một vòng lặp hoàn chỉnh chạy được: đọc dữ liệu, lan truyền xuôi, loss, lan truyền ngược, cập nhật, đánh giá và khôi phục. Chọn GPU theo đỉnh của các pha hữu ích, rồi chọn thời lượng theo chương trình thử nghiệm. Một lần tải thành công hay một loss đang giảm không chứng minh được khả năng của toàn bộ tải cũng như chất lượng của mô hình trên các ví dụ mới.

01 /

Kiểm tra các ví dụ và ý nghĩa của loss

Bắt đầu bằng việc hiển thị một vài mẫu đã được biến đổi và nhãn đích của chúng. Kiểm tra việc cắt đoạn, padding, mặt nạ và nhãn thực sự được truyền vào hàm mất mát. Trong bài toán sinh, một chỉ dẫn có thể xuất hiện trong đầu vào mà không cần phải đóng góp vào cùng mục tiêu như câu trả lời. Với bài toán phân loại, một lỗi ánh xạ giữa số và lớp có thể vẫn cho ra một mất mát tính được nhưng lại dẫn đến sai nhiệm vụ.

Cô lập một tập con rất nhỏ để kiểm soát cơ chế, không phải để tuyên bố khả năng tổng quát hóa. Một vòng lặp có thể học được các mẫu này, tạo ra các giá trị hữu hạn và khôi phục đúng các định danh không? Nếu thất bại, thuê dài hạn cũng không giải quyết được chẩn đoán. Sau đó giữ tập huấn luyện, kiểm định và kiểm tra tách biệt theo đơn vị tránh rò rỉ: hội thoại, bệnh nhân, tài liệu nguồn hoặc khoảng thời gian tùy theo dự án của bạn.

02 /

Vượt qua cổng kiểm soát ở mỗi giai đoạn

Bản chạy thử phải đi qua toàn bộ các thao tác của chiến dịch. Bước đầu tiên cấp phát trạng thái bộ tối ưu có thể khác với các bước sau. Một đánh giá trên các chuỗi dài hơn có thể tạo ra đỉnh cao nhất. Một thao tác lưu hoặc xuất cũng có thể cần bộ nhớ và thời gian. Vì vậy đừng kết luận chỉ từ việc nạp trọng số.

Giữ một dòng cho mỗi giai đoạn với tham số đầu vào, bộ đếm bộ nhớ, thời lượng đo được và kết luận. Trong PyTorch, bộ đếm tensor được cấp phát và bộ nhớ được allocator giữ riêng là khác nhau; chúng không cộng lại với nhau. Ghi nhận từng GPU với cùng các giới hạn đo lường. Hồ sơ bộ nhớ cung cấp chi tiết về các đường cơ sở, việc đồng bộ và các đỉnh tuyệt đối.

Bản chạy thử huấn luyện — các kiểm tra cần thực hiện, không có số đo điền sẵn
Giai đoạnKiểm traNếu kiểm tra thất bại
Dữ liệuĐịnh danh, nhãn đích, độ dài và mặt nạSửa tập dữ liệu hoặc phép biến đổi
Lượt truyền xuôi và mất mátKích thước mong đợi, mất mát hữu hạnXem xét lô rút gọn và các giá trị
Lượt truyền ngượcGradient mong đợi, giá trị hữu hạnKiểm tra đồ thị, độ chính xác và chuẩn hóa
Cập nhậtTham số mục tiêu đã thay đổi, bước đã được đếmXem xét bộ tối ưu và tích lũy
ValidationChế độ đánh giá, đầu ra đầy đủTách các thiết lập của nó khỏi các thiết lập huấn luyện
Khôi phụcTiến trình và trạng thái được khôi phụcSửa checkpoint trước chuỗi chạy

Nguồn kỹ thuật: PyTorch — bộ đếm và quản lý bộ nhớ

03 /

Đếm số mẫu cho mỗi lần cập nhật

Microbatch được xử lý trong một lượt truyền. Tích lũy kết hợp nhiều lượt truyền trước một lần cập nhật. Trong ví dụ một GPU, hai mẫu cho mỗi microbatch và tám lần tích lũy cho ra mười sáu mẫu cho mỗi lần cập nhật đầy đủ. Với 3.200 mẫu đi qua một lần và không có lô không đầy đủ, điều đó tương ứng với 200 lần cập nhật. Các tính toán này không dự đoán thời lượng hay chất lượng.

Cố định số lần cập nhật và thay đổi batch có thể thay đổi số mẫu đã xem. Cố định số epoch có thể thay đổi số lần cập nhật. Hãy chọn điều mà so sánh của bạn cần giữ và ghi lại đại lượng còn lại. Trên nhiều bản sao dữ liệu, việc đếm bao gồm số lượng của chúng; song song hóa mô hình không tự động nhân batch hiệu dụng. Các lô cuối cùng và các chuỗi có độ dài khác nhau đòi hỏi chuẩn hóa nhất quán.

Nguồn kỹ thuật: PyTorch — tích lũy và độ chính xác hỗn hợp

04 /

Thay đổi bộ nhớ mà không đánh mất câu hỏi thí nghiệm

Nếu bản chạy thử vượt bộ nhớ, hãy xác định giai đoạn và đầu vào gây ra. Một microbatch giảm có thể làm giảm các activation; một độ dài tối đa nhỏ hơn có thể loại bỏ một phần thiết yếu của nhiệm vụ. Tích lũy tự nó không giải phóng trọng số hay trạng thái bộ tối ưu. Đừng trình bày một trường hợp vừa đủ sau khi cắt ngắn như cùng một thí nghiệm nếu đầu ra mong đợi đã thay đổi.

Checkpointing activation giữ ít giá trị trung gian hơn và tính lại chúng trong lượt truyền ngược. Hãy so sánh bộ nhớ và thời lượng trong vòng lặp của bạn. Độ chính xác hỗn hợp chọn định dạng cho một số phép toán; các thiết lập tỷ lệ gradient và thời điểm cập nhật chúng phải khớp với batch hiệu dụng. Ghi lại những thay đổi này như các biến thể và kiểm tra rằng chúng giữ nguyên mục tiêu chất lượng.

Nguồn kỹ thuật: PyTorch — checkpointing activation · PyTorch — các quy tắc AMP

05 /

Ví dụ: so sánh ba tốc độ học

Hãy chuẩn bị một đối chứng ở 0,0001 và hai biến thể minh họa ở 0,00005 và 0,0002. Những giá trị này không phải là khuyến nghị cho mô hình của bạn: chúng dùng để viết một kế hoạch. Giữ nguyên kiến trúc, dữ liệu, batch hiệu dụng và ngân sách 200 lần cập nhật trong trường hợp đơn giản hóa này. Hãy xác định trước thử nghiệm tần suất kiểm định và các nguyên nhân dừng.

Hãy giữ lại đường cong mất mát, các điểm kiểm định và các dự đoán cần thiết cho phân tích. Nếu một biến thể phân kỳ, dòng của nó vẫn nằm trong bảng tổng kết. Một lần chạy lại với batch khác nhận một mã định danh mới và không thay thế âm thầm thất bại đó. Nếu chênh lệch chất lượng nhỏ, phương pháp trên các seed giải thích cách so sánh nhiều thử nghiệm mà không chỉ giữ lại kết quả tốt nhất.

06 /

Tiếp tục huấn luyện, rồi đọc lại đầu ra

Một bản lưu trọng số cho phép một số cách dùng suy luận; một lần tiếp tục huấn luyện cũng phải khôi phục được các trạng thái liên quan và tiến độ. Hướng dẫn PyTorch phân biệt cụ thể mô hình và bộ tối ưu. Hãy thử nghiệm việc tiếp tục sớm trong một tiến trình mới, với những thành phần cần thiết cho vòng lặp của bạn, rồi kiểm tra bước, tốc độ học và tính liên tục của dữ liệu.

Khi kết thúc, hãy nạp lại artifact dành cho đánh giá và chạy lại các đầu vào kiểm soát. Lưu trữ mô hình hoặc adapter, cấu hình, các bản sửa đổi, chỉ số thô và hướng dẫn. Đừng nạp một tệp có nguồn gốc không rõ chỉ để kiểm tra nội dung của nó: hãy dùng những artifact mà bạn biết rõ nguồn gốc và các quy tắc giải tuần tự hóa của môi trường mình.

Nguồn kỹ thuật: PyTorch — trọng số và checkpoint tiếp tục huấn luyện

07 /

Từ thử nghiệm sang một thuê phù hợp

Bảng lựa chọn của bạn tập hợp bộ nhớ mỗi GPU, kích thước tối đa, độ chính xác, microbatch, tích lũy, chiến lược phân bổ và kết quả mong đợi. Một cấu hình có đủ bộ nhớ chỉ được chọn sau khi kiểm tra ngăn xếp phần mềm. Một tùy chọn PyTorch khi đặt hàng mô tả sự chuẩn bị mong muốn; nó không bảo đảm mô hình của bạn hay mọi tiện ích mở rộng của nó.

Sau đó hãy sắp xếp các biến thể ưu tiên vào một gói 3, 7 hoặc 30 ngày, giữ lại thời gian cho đánh giá và xuất. Không có khoảng thời gian nào áp đặt một kiểu huấn luyện. Sổ tay có thể lưu quyết định và các quan sát đã nhập, trong khi bản lưu của bạn giữ các tệp. Một chiến dịch thành công tạo ra một kết luận có thể đọc lại, kể cả khi đối chứng vẫn là lựa chọn tốt nhất.

Câu hỏi thực tế

Tôi có thể ước lượng chỉ với lượt truyền xuôi không?

Không: một chiến dịch huấn luyện cũng phải bao gồm lượt truyền ngược, cập nhật, kiểm định và lưu. Đỉnh có thể xuất hiện ở một giai đoạn khác hoặc trên một đầu vào dài hơn.

Một batch hiệu dụng giống nhau có bảo đảm cùng kết quả không?

Không. Số đếm giống nhau không bảo đảm cùng các phép toán số, thống kê batch hay quỹ đạo huấn luyện. Hãy kiểm tra cách triển khai, chuẩn hóa và chất lượng bằng giao thức đã chọn.

Vì sao giữ lại một lần huấn luyện phân kỳ?

Nó cho thấy một giới hạn của cấu hình và đã tiêu tốn tài nguyên. Mã định danh, nguyên nhân dừng và các tham số của nó ngăn việc lặp lại đúng thử nghiệm đó hoặc chỉ trình bày các kết quả thuận lợi.