SwiGLU
Khám phá SwiGLU, hàm kích hoạt tiên tiến được sử dụng trong LLM và Ultralytics YOLO26. Tìm hiểu cách cơ chế cổng (gated mechanism) cải thiện quá trình đào tạo và hiệu quả của mạng thần kinh.
SwiGLU (Swish Gated Linear Unit) là một hàm kích hoạt và khối kiến trúc mạng thần kinh tiên tiến giúp cải thiện Mạng truyền thẳng (FFN) truyền thống được sử dụng trong học máy sâu. Bằng cách kết hợp các đặc tính trơn, không đơn điệu của hàm kích hoạt Swish với cơ chế Gated Linear Unit (GLU), SwiGLU cung cấp khả năng định tuyến tính năng động, phụ thuộc vào dữ liệu. Bằng cách áp dụng phép chiếu tuyến tính vào đầu vào, truyền một nhánh qua hàm kích hoạt Swish và nhân theo phần tử với một nhánh tuyến tính khác, mạng lưới đạt được sức mạnh biểu đạt vượt trội. Điều này cho phép các kiến trúc AI hiện đại nắm bắt được các phụ thuộc phi tuyến tính phức tạp hiệu quả hơn nhiều so với các lớp tĩnh tiêu chuẩn được sử dụng trong các mô hình học sâu cũ hơn.
Link to this sectionCách thức hoạt động của SwiGLU#
Không giống như các mạng truyền thẳng truyền thống chỉ đơn giản là ánh xạ đầu vào sang một chiều cao hơn, áp dụng một hàm phi tuyến cơ bản và chiếu ngược lại, SwiGLU giới thiệu cơ chế cổng nhân. Đầu vào được chia thành hai phép chiếu được tham số hóa: một "cổng" (gate) và một "giá trị" (value). Nhánh cổng được kích hoạt bằng hàm SiLU / Swish, giúp bảo toàn các giá trị âm nhỏ và đảm bảo các đạo hàm trơn, khác không ở hầu hết mọi nơi. Cổng đã kích hoạt này sau đó được nhân theo phần tử với nhánh giá trị. Khả năng lọc động này cho phép mạng thần kinh kiểm soát luồng thông tin một cách thông minh, tránh các vấn đề "nơ-ron chết" phổ biến trong các kiến trúc cũ đồng thời ổn định tín hiệu gradient trong quá trình huấn luyện mô hình, một khái niệm được nghiên cứu rộng rãi trong các cơ chế chú ý.
Link to this sectionPhân biệt SwiGLU với các hàm kích hoạt khác#
Trong khi các Hàm kích hoạt tiêu chuẩn như ReLU sử dụng ngưỡng cố định để cắt các giá trị âm về không, SwiGLU điều chỉnh các kích hoạt một cách động dựa trên chính dữ liệu đầu vào. So với GELU, vốn tính trọng số cho các đầu vào theo xác suất của chúng dưới phân phối Gaussian, SwiGLU tận dụng các lớp tuyến tính được tham số hóa để học cách điều tiết thông tin. Về bản chất, SwiGLU không chỉ là một phép tính toán học theo phần tử; nó hoạt động như một thành phần cấu trúc toàn diện, thường thay thế toàn bộ cơ chế lớp ẩn bên trong một khối Transformer. Để so sánh rộng rãi về các thuộc tính toán học, các nhà nghiên cứu thường tham khảo các hướng dẫn về hàm kích hoạt toàn diện.
Link to this sectionCác ứng dụng trong thực tế#
Do hiệu quả tính toán và những cải tiến hiệu suất đáng kể, SwiGLU đã trở thành một thành phần nền tảng trong các hệ thống AI hiện đại.
- Các mô hình ngôn ngữ lớn (LLMs): Các ứng dụng AI tạo sinh hàng đầu phụ thuộc rất nhiều vào SwiGLU. Ví dụ, Meta tích hợp SwiGLU vào kiến trúc Llama 3 của mình để thay thế các lớp truyền thẳng dựa trên GeLU truyền thống, cho phép ổn định huấn luyện tốt hơn và xử lý các cửa sổ ngữ cảnh khổng lồ. Các kiến trúc tương tự được triển khai trong mô hình ngôn ngữ pathways của Google (PaLM) và được phân tích rộng rãi trên các thảo luận về học sâu trên Kaggle.
- Thị giác máy tính nâng cao: Các mô hình đa phương thức và hệ thống thị giác máy tính tiên tiến sử dụng SwiGLU bên trong các khối transformer của chúng để xử lý hiệu quả các mối quan hệ hình ảnh-văn bản phức tạp. Các framework thị giác sáng tạo, bao gồm Ultralytics YOLO26 với khả năng end-to-end tự nhiên, liên tục khám phá các khối kiến trúc được tối ưu hóa và tinh chỉnh siêu tham số để tối đa hóa hiệu suất tham số cho các tác vụ như Phát hiện đối tượng.
Link to this sectionTriển khai SwiGLU trong PyTorch#
Đối với các nhà phát triển đang xây dựng các mạng tùy chỉnh hoặc điều chỉnh các mô hình thị giác cho thiết bị biên sử dụng Nền tảng Ultralytics, việc triển khai SwiGLU thông qua tài liệu PyTorch rất đơn giản. (Ngoài ra, các nhà phát triển trong các hệ sinh thái khác có thể sử dụng các triển khai TensorFlow). Đoạn mã Python ngắn gọn sau đây minh họa một module SwiGLU cơ bản sử dụng hàm F.silu tích hợp sẵn của PyTorch:
import torch
import torch.nn as nn
import torch.nn.functional as F
class SwiGLU(nn.Module):
def __init__(self, in_features, hidden_features):
super().__init__()
# SwiGLU requires two projections: one for the gate, one for the value
self.gate_proj = nn.Linear(in_features, hidden_features)
self.value_proj = nn.Linear(in_features, hidden_features)
self.out_proj = nn.Linear(hidden_features, in_features)
def forward(self, x):
# Element-wise multiplication of the SiLU-activated gate and the linear value
hidden = F.silu(self.gate_proj(x)) * self.value_proj(x)
return self.out_proj(hidden)
# Example usage with a dummy input tensor
module = SwiGLU(in_features=512, hidden_features=1365)
output = module(torch.randn(1, 512))Cách tiếp cận cấu trúc này đối với các khối kích hoạt đảm bảo rằng các kiến trúc thần kinh tiên tiến trích xuất được các biểu diễn phong phú hơn từ dữ liệu huấn luyện phức tạp, dù được áp dụng cho Xử lý ngôn ngữ tự nhiên (NLP) hay phân tích không gian thời gian thực. Để hiểu sâu hơn về việc xây dựng và tăng tốc các mô hình hiệu quả, các nhà phát triển thường tham khảo các nghiên cứu nền tảng về các biến thể GLU gốc trên arXiv, các kho mã nguồn mở của Meta, và tài liệu tối ưu hóa của PyTorch để tối đa hóa lưu lượng phần cứng.






