# Tại sao việc đào tạo MoEs lại khó khăn đến vậy Gần đây, tôi đã thấy mình muốn một kho đào tạo nhỏ, tập trung vào nghiên cứu để tôi có thể thực hiện các thí nghiệm nhỏ một cách nhanh chóng và dễ dàng. Những thí nghiệm này dao động từ việc thử nghiệm các kiến trúc attention mới (MLA, SWA, NSA, KDA - tất cả đều có thể cắm vào) đến đào tạo đa độ chính xác đến gần đây nhất là các thiết lập đa bộ tối ưu với các bộ tối ưu 'mới'. Tôi đã thử 3 ứng cử viên chính (Nemo, Megatron và Torchtitan) nhưng vì nhiều lý do khác nhau, chúng không phù hợp với mục đích của tôi và đều khá đau đớn để thiết lập, sử dụng và chạy ổn định. Tôi lại một lần nữa nhớ đến công cụ của mình từ Google và việc viết lại ngăn xếp đào tạo sản xuất của tôi cho mục đích này (được thiết kế riêng cho việc giám sát hạ tầng lớn và độ ổn định) cũng cảm thấy như một cách sử dụng thời gian kém và sẽ làm cho cả kho cũ và mới trở nên tồi tệ hơn. Điều này đã khiến tôi suy nghĩ, tại sao việc đào tạo các MoEs chất lượng 'tiên tiến' nhỏ (nói dưới 20B tham số tổng cộng) lại khó khăn đến vậy? Tại sao kho / thư viện mà tôi muốn lại không tồn tại? Sau khi suy nghĩ một thời gian, hầu hết các thách thức mà tôi có thể nghĩ ra đều liên quan đến 3 điều khác nhau: - flops / hiệu quả flop - cân bằng tải / độ ổn định của router - chất lượng và số lượng dữ liệu Flops Việc đào tạo các mô hình dày đặc hiện nay khá đơn giản. Các động lực đào tạo chủ yếu được kết hợp, và nếu bạn có đủ tham số trong kiến trúc, mô hình sẽ học được mặc dù bạn có nhiều sai lầm (điều này đã khiến tôi gặp rắc rối nhiều hơn một lần). [DeepSeek-style ultra-sparse]( MoEs thì khác vì động lực đào tạo của bạn có phần tách rời. Chỉ một phần của các MLP của bạn hoạt động cho một token nhất định, và khi việc đào tạo diễn ra, các chuyên gia hoạt động thay đổi và phát triển theo thời gian. Đây là điều làm cho việc đào tạo nhiều epoch và việc diễn đạt lại dữ liệu trở nên hiệu quả cho các MoEs (đặc biệt là những cái lớn hơn). Bạn có được những lợi ích lớn về hiệu suất suy diễn và những lợi ích nhỏ về hiệu suất đào tạo nhưng với chi phí của động lực đào tạo tách rời (khiến việc đào tạo trở nên khó dự đoán và ổn định) và bạn phải đổ vào nhiều flops hơn để đảm bảo bạn học được một chính sách định tuyến tối ưu và rằng các chuyên gia liên quan đến các chính sách khác nhau được đào tạo đầy đủ. Vậy đây là nơi mà thách thức flops / hiệu quả flop xuất hiện. Thách thức đầu tiên là, theo bản chất, các MoEs ultra-sparse tiêu tốn một lượng lớn HBM để tải các chuyên gia nhưng có nghĩa là bạn cần nhiều GPU và do đó có nhiều GPU nhàn rỗi trong hệ thống của bạn. FSDP (và các topo sharding khác nhau) chủ yếu là di sản của việc đào tạo dày đặc, và không làm tốt việc tận dụng tất cả...