Các hệ thống điều khiển bằng giọng nói trên tai nghe và loa thông minh thưng tuân theo kiến trúc đám mây: thu âm được gửi lên máy chủ, nhận dạng và trả kết quả về thiết bị. Kiểu thiết kế này dễ gặp độ trễ cao, gián đoạn khi mạng kém, đồng thời tiềm ẩn rủi ro riêng tư khi dữ liệu âm thanh phải rời khỏi thiết bị. Cleer Arc5 chọn hướng tiếp cận khác: thực hiện toàn bộ xử lý ngữ nghĩa ngay trên tai nghe, nhờ nén mô hình NLP xuống chỉ vài trăm KB và chạy trên vi xử lý nhúng với độ trễ dưới 200 ms.
Tại sao phải xử lý ngữ nghĩa ngay tại biên?
Khi người dùng ra lệnh bằng giọng nói, một chui hành động cần diễn ra gần như tức thì: phát hiện giọng nói, chuyển đổi âm thanh thành văn bản, phân tích ý đ và thực thi lệnh. Nếu một trong các bước này phải chờ phản hồi từ xa, trải nghiệm sẽ bị gián đoạn. Bằng cách đưa mô hình NLP lên thiết bị, Cleer Arc5 loại bỏ phụ thuộc vào mạng, giảm độ trễ và giữ dữ liệu âm thanh ở lại cục bộ.
Bốn trụ cột của quá trình nén mô hình
1. Cắt tỉa mô hình
Cắt tỉa là kỹ thuật loại bỏ các trọng số hoặc kết nối có đóng góp thấp trong mạng nơ-ron. Với các kiến trúc như BERT-base, việc loại bỏ 60% tham số thường ch làm giảm độ chính xác khoảng 1–2% nếu thực hiện đúng cách.
- Sử dụng cắt tỉa lặp lại: vừa cắt bỏ, vừa tinh chỉnh để mô hình phục hồi khả năng dự đoán.
- Cần phân biệt cắt tỉa có cấu trúc và không có cấu trúc; phần cứng DSP hiện đại đã hỗ tr tính toán thưa, giúp tận dụng lợi ích từ cắt tỉa.
2. Lượng tử hóa trọng số
Thay vì lưu trữ trọng số dưới dạng số thực 32 bit, lượng tử hóa chuyển đổi sang định dạng INT8 hoặc thậm chí INT4. Điều này giúp giảm kích thước mô hình và tăng tốc độ tính toán trên phần cứng nhúng.
- Chuyển từ FP32 sang INT8 có thể giảm 4 lần dung lượng lưu trữ.
- Kết hợp với cắt tỉa, mô hình có thể thu nhỏ từ hàng trăm MB xuống dưới 1 MB.
- Để giảm thiểu suy giảm độ chính xác, người ta áp dụng lượng tử hóa có nhận thức trong quá trình huấn luyện (QAT), giúp mô hình thích nghi với sai số lượng tử hóa ngay từ giai đoạn học.
3. Chưng cất tri thức
Thay vì huấn luyện một mô hình nhỏ từ đầu, phương pháp này sử dụng mô hình lớn làm "giáo viên" để hướng dẫn mô hình nhỏ hơn là "học sinh". Mô hình học sinh không chỉ học nhãn đúng mà còn học cả phân phối xác suất mềm từ giáo viên, từ đó cải thiện khả năng khái quát.
import torch.nn as nn
import torch.nn.functional as F
class MatDistillation(nn.Module):
def __init__(self, nhiet_do=4.0, he_so_mem=0.7):
super().__init__()
self.nhiet_do = nhiet_do
self.he_so_mem = he_so_mem
self.mat_cung = nn.CrossEntropyLoss()
def forward(self, diem_hs, diem_gv, nhan):
phan_phoi_mem_gv = F.softmax(diem_gv / self.nhiet_do, dim=-1)
log_phan_phoi_mem_hs = F.log_softmax(diem_hs / self.nhiet_do, dim=-1)
mat_mem = F.kl_div(
log_phan_phoi_mem_hs,
phan_phoi_mem_gv,
reduction='batchmean'
) * (self.nhiet_do ** 2)
mat_cung = self.mat_cung(diem_hs, nhan)
return self.he_so_mem * mat_mem + (1.0 - self.he_so_mem) * mat_cung
Biểu thức trên kết hợp mất mát mềm dựa trên KL-divergence và mất mát cứng từ nhãn thực, giúp mô hình nhúng vẫn giữ được khả năng phân biệt ngữ nghĩa ở quy mô nhỏ.
4. Kiến trúc siêu nhẹ và tìm kiếm kiến trúc nơ-ron
Ngoài việc nén, kiến trúc ban đầu cũng cần được thiết kế lại cho phù hợp phần cứng. Kỹ thuật Neural Architecture Search (NAS) được dùng để tìm cấu trúc mạng tối ưu cho vi xử lý nhúng, tương tự cách MobileBERT hay TinyBERT được xây dựng.
- Thay vì cơ chế tự chú ý toàn cục với độ phức tạp O(n²), các biến thể siêu nhẹ chỉ sử dụng tầm nhìn cục bộ hoặc cửa sổ ngữ cảnh ngắn.
- Với lệnh thoại như "tăng âm lượng" hoặc "bài tiếp theo", ngữ cảnh ngắn là đủ, giúp giảm đáng kể số phép tính.
Hiệu năng trước và sau khi nén
| Chỉ tiêu | BERT-base gốc | Mô hình sau nén (ước tính) |
|---|---|---|
| Số tham số | Khoảng 110 triệu | Dưới 2 triệu |
| Kích thước | Khoảng 440 MB (FP32) | Khoảng 800 KB (INT8) |
| Độ tr suy luận | Trên 100 ms (CPU) | Dưới 20 ms (DSP nhúng) |
| Bộ nhớ sử dụng | Trên 500 MB | Dưới 1 MB |
| Mức tiêu thụ điện năng thêm | Cao | Trung bình dưới 1 mW |
Qua bảng trên, mô hình thu nhỏ hàng trăm lần về kích thước, giảm đáng kể nhu cầu bộ nhớ, trong khi vn duy trì độ trễ ở mức phù hợp cho thiết bị đeo tai.
Luồng xử lý một lệnh thoại trên thiết bị
Ví dụ với câu lệnh "gọi cho mẹ":
- Hai micro thu âm và dùng beamforming để tập trung vào giọng người dùng.
- Mô đun VAD phát hiện có giọng nói, kích hoạt ASR cục bộ.
- ASR chuyển âm thanh thành văn bản: "gọi cho mẹ".
- Hệ thống chuẩn hóa văn bản, ví dụ chuyển "má", "mẹ" về dạng thống nhất.
- Mô hình NLP nhúng suy luận ý định và thực thể.
- Tai nghe gửi lệnh qua Bluetooth đến điện thoại để thực hiện cuộc gọi.
{
"intent": "call_contact",
"target": "mom"
}
Quá trình này hoàn toàn không cần kết nối mạng, hoạt động được trong điều kiện không có sóng di động.
Các tối ưu kỹ thuật khác
- Giới hạn tập ý định: chỉ hỗ trợ các lệnh thường gặp như phát/dừng/nhạc tiếp theo/tăng giảm âm lượng/gọi điện, giúp mô hình tập trung và nhẹ.
- Cập nhật qua OTA: cho phép tải các mô hình mới hoặc thêm lệnh qua firmware.
- Mô hình riêng theo ngôn ngữ: mỗi ngôn ngữ sử dụng một mô hình nén riêng, tránh lãng phí tài nguyên.
- Kích hoạt theo sự kiện: mô đun NLP chỉ hoạt động khi VAD phát hiện giọng nói, giúp tiết kiệm pin và giảm kích hoạt nhầm.
- Tăng cường độ bền: huấn luyện với dữ liệu nhiều giọng vùng miền, tiếng ồn và tốc độ nói khác nhau.
Bảo mật và độ tin cậy
- Lưu trữ mã hóa tệp mô hình, ngăn chặn trích xuất hoặc sao chép trái phép.
- Lọc đầu vào văn bản để tránh lệnh độc hại hoặc khai thác ẩn.
- Thiết lập ngưng độ tin cậy: nếu mô hình không chắc chắn, hệ thống yêu cầu người dùng nhắc lại thay vì thực hiện sai.
Hướng phát triển
Khi nén mô hình NLP tiếp tục tiến bộ, các thiết bị đeo tai có thể hỗ tr ngữ cảnh dài hơn như nhớ lại bài hát vừa phát để hiểu lệnh "bài tiếp theo" đúng ngữ cảnh, đưa ra gợi ý cá nhân hóa, hoặc thậm chí nhận biết cảm xúc qua giọng nói để điều chỉnh trải nghiệm âm thanh. Tất cả những khả năng này đều dựa trên nền tảng là những mô hình nhẹ, hiệu quả và đáng tin cậy chạy ngay trên thiết bị.