MarkTechPost
85

Thủ thuật

Tăng tốc huấn luyện Transformer với NVIDIA Transformer Engine: Hướng dẫn thực chiến về Fused Kernels, BF16 và FP8

(giờ Việt Nam)

Tóm tắt AI

Bài viết hướng dẫn cách NVIDIA Transformer Engine tối ưu hóa huấn luyện mô hình Transformer thông qua việc kết hợp các nhân GPU, tính toán BF16 và định dạng FP8.

Bản dịch AI

Accelerating Transformer Training with NVIDIA Transformer Engine, Fused Kernels, BF16, FP8, and GPU Benchmarking

Trong bài hướng dẫn này, chúng ta sẽ khám phá cách NVIDIA Transformer Engine tăng tốc các khối lượng công việc transformer bằng cách kết hợp các fused GPU kernel, tính toán BF16 và thực thi FP8 nhận diện phần cứng. Chúng ta bắt đầu bằng việc cài đặt Transformer Engine và phát hiện kiến trúc GPU đang hoạt động để xác định xem runtime có hỗ trợ các TE kernel, FP8 tensor core hay chỉ hỗ trợ đường dẫn dự phòng (fallback) thuần PyTorch. Sau đó, chúng ta sẽ xem xét các thành phần fused cốt lõi như te.Linear, te.LayerNorm, te.LayerNormLinear, te.LayerNormMLP và te.TransformerLayer, đồng thời cấu hình công thức FP8 delayed-scaling để quản lý việc chia tỷ lệ tensor, lịch sử amax và các định dạng lai E4M3/E5M2. Sử dụng các thành phần này, chúng ta xây dựng một mô hình ngôn ngữ nhân quả (causal language model) kiểu GPT nhỏ gọn, huấn luyện nó trên các chuỗi tổng hợp có tính tất định, so sánh việc thực thi ở độ chính xác cao hơn và FP8, đo lường thời gian chạy và bộ nhớ GPU đỉnh, kiểm tra siêu dữ liệu FP8 và xác thực mô hình đã huấn luyện thông qua quá trình tạo tự hồi quy (autoregressive generation).

Chúng ta cài đặt NVIDIA Transformer Engine và khởi tạo môi trường PyTorch cần thiết cho việc thực thi tăng tốc bằng GPU. Chúng ta kiểm tra GPU đang hoạt động, khả năng tính toán và dung lượng bộ nhớ để xác định xem các fused TE kernel và FP8 tensor core có khả dụng hay không. Chúng ta cũng xác thực các mô-đun fused cốt lõi và cấu hình công thức FP8 delayed-scaling, đồng thời duy trì cơ chế dự phòng PyTorch tự động cho các phần cứng không được hỗ trợ.

Chúng ta định nghĩa một mô hình ngôn ngữ nhân quả nhỏ gọn sử dụng các khối te.TransformerLayer đã được fused để thực thi trên Transformer Engine. Chúng ta cũng triển khai một kiến trúc transformer thuần PyTorch tương đương với multi-head attention, layer normalization, residual connections và feed-forward networks. Chúng ta chọn mô hình phù hợp một cách linh hoạt dựa trên khả năng hỗ trợ của GPU và báo cáo tổng số tham số cũng như các chiều kiến trúc cuối cùng.

Chúng ta tạo ra các chuỗi mẫu số học có tính tất định cho phép mô hình học các chuyển đổi token có thể dự đoán được trên toàn bộ từ vựng. Chúng ta cấu hình trình tối ưu hóa AdamW và triển khai một bước huấn luyện có điều kiện bao bọc forward pass trong te.fp8_autocast khi việc thực thi FP8 được hỗ trợ. Chúng ta huấn luyện mô hình qua nhiều vòng lặp, theo dõi loss và độ trễ của từng bước, đồng thời so sánh loss cuối cùng với kết quả dự đoán ngẫu nhiên làm cơ sở.

Chúng ta đánh giá hiệu năng (benchmark) quá trình lan truyền tiến (forward propagation), lan truyền ngược (backpropagation) và cập nhật trình tối ưu hóa bằng cách sử dụng các chế độ thực thi độ chính xác cao hơn và FP8. Chúng ta đo lường độ trễ trung bình của bước huấn luyện và bộ nhớ GPU đỉnh được cấp phát để định lượng hiệu suất và tác động đến bộ nhớ của việc tính toán giảm độ chính xác. Chúng ta cũng kiểm tra các hệ số tỷ lệ và lịch sử amax được duy trì bởi Transformer Engine để hiểu cách delayed scaling ổn định các tensor FP8.

Chúng ta triển khai quá trình tạo tự hồi quy greedy bằng cách liên tục đưa ngữ cảnh mới nhất vào mô hình ngôn ngữ nhân quả đã được huấn luyện. Chúng ta so sánh các token được tạo ra liên tiếp để xác minh xem mô hình có duy trì được bước nhảy số học không đổi có trong dữ liệu huấn luyện tổng hợp hay không. Chúng ta kết luận bằng cách xác định các phần mở rộng thực tế, bao gồm kích thước mô hình lớn hơn, các định dạng FP8 thay thế, lịch sử amax dài hơn, các mô-đun fused và khởi tạo trọng số FP8.

Tóm lại, chúng ta đã chứng minh cách tích hợp NVIDIA Transformer Engine vào quy trình huấn luyện transformer từ đầu đến cuối trong khi vẫn duy trì khả năng tương thích trên các môi trường GPU Colab khác nhau. Chúng ta đã sử dụng các mô-đun transformer fused để giảm chi phí khởi chạy kernel và lưu lượng bộ nhớ, áp dụng FP8 autocasting với delayed scaling khi được hỗ trợ, và giữ lại việc thực thi BF16 hoặc FP32 thông qua cơ chế dự phòng PyTorch tự động. Bằng cách huấn luyện và đánh giá mô hình ngôn ngữ nhân quả mini tương tự, chúng ta đã quan sát thấy khả năng phần cứng, định dạng số, thực thi fused và quy mô mô hình ảnh hưởng như thế nào đến tốc độ huấn luyện và mức tiêu thụ bộ nhớ. Chúng ta cũng đã kiểm tra các hệ số tỷ lệ nội bộ và lịch sử amax hỗ trợ tính toán FP8 ổn định, giúp chúng ta hiểu rõ hơn về cách Transformer Engine quản lý số học giảm độ chính xác.

Hãy xem Full Codes. Ngoài ra, đừng ngần ngại theo dõi chúng tôi trên Twitter và đừng quên tham gia SubReddit 150k+ ML của chúng tôi và Đăng ký Bản tin của chúng tôi. Khoan đã! Bạn có dùng telegram không? Bây giờ bạn cũng có thể tham gia cùng chúng tôi trên telegram.

Cần hợp tác với chúng tôi để quảng bá GitHub Repo, Hugging Face Page, Product Release hoặc Webinar của bạn, v.v.? Hãy kết nối với chúng tôi.

Sana Hassan, một thực tập sinh tư vấn tại Marktechpost và là sinh viên bằng kép tại IIT Madras, rất đam mê việc ứng dụng công nghệ và AI để giải quyết các thách thức trong thế giới thực. Với sự quan tâm sâu sắc đến việc giải quyết các vấn đề thực tiễn, anh mang đến một góc nhìn mới mẻ cho sự giao thoa giữa AI và các giải pháp đời sống.

NVIDIATransformerDeep LearningTối ưu hóaPyTorch
Đọc bài gốc

Bài viết được AI dịch và tổng hợp tự động từ MarkTechPost. Liên kết bài gốc ở phía trên. Dữ liệu đồng bộ qua API công khai được ghi nguồn tại AI HOT (canonical) ↗. AIHOT.vn luôn dẫn nguồn đầy đủ — nếu bạn thấy điểm cần chỉnh sửa, hãy gửi ý kiến tại trang phản hồi.