AI trong phòng máy: mở cái hộp đen ra xem
Ngày trước, kỹ sư hạ tầng chúng tôi sống với Syslog, SNMP, CLI, Wireshark, bảng định tuyến và mấy cái đèn LED trên mặt server. Giờ thì công cụ nào cũng gắn thêm chữ AI: dự đoán hỏng hóc, phát hiện bất thường, đọc log, gợi ý cấu hình, viết luôn báo cáo nguyên nhân.
10/11/202610 phút đọc
Khi sếp hỏi: "Sao AI lại báo vậy?"
Hãy tưởng tượng bạn vừa xử lý xong một sự cố lớn. Sáng mai họp postmortem với ban lãnh đạo. Trong báo cáo, bạn không chỉ phải kể chuyện gì đã xảy ra, mà còn phải trả lời: vì sao hệ thống AI giám sát lại cảnh báo sớm, hoặc tệ hơn, vì sao nó im lặng?
Ngày trước, kỹ sư hạ tầng chúng tôi sống với Syslog, SNMP, CLI, Wireshark, bảng định tuyến và mấy cái đèn LED trên mặt server. Giờ thì công cụ nào cũng gắn thêm chữ AI: dự đoán hỏng hóc, phát hiện bất thường, đọc log, gợi ý cấu hình, viết luôn báo cáo nguyên nhân.
Vấn đề là phần lớn chúng ta dùng AI như một cái hộp đen. Thấy dữ liệu đi vào, thấy kết quả đi ra, còn ở giữa thì mù mờ. Khi AI chỉ gợi ý tên file thì không sao. Khi nó ảnh hưởng tới quyết định trên hệ thống production, thì mình cần hiểu nó đang làm gì.
Bài này Rino viết dài hơn thường lệ, và kỹ thuật hơn thường lệ. Mình sẽ mở bốn cái hộp: Neural Network, GPT, GAN và VAE. Không cần thành nhà khoa học dữ liệu, chỉ cần đủ hiểu để biết khi nào nên tin, khi nào nên nghi.
Neural Network: cái móng của mọi thứ
Gần như mọi hệ thống AI hiện đại đều xây trên mạng nơ-ron nhân tạo (Artificial Neural Network). Ý tưởng lấy cảm hứng từ não người: rất nhiều "nơ-ron" nhỏ nối với nhau, xếp thành từng lớp.
Lớp đầu vào nhận dữ liệu thô.
Các lớp ẩn biến đổi dữ liệu qua từng bước tính toán.
Lớp đầu ra trả về kết quả: một con số, một nhãn, một xác suất.
Mỗi kết nối giữa hai nơ-ron có một trọng số. Mỗi nơ-ron cộng các tín hiệu đi vào theo trọng số, đưa qua một hàm kích hoạt, rồi chuyển tiếp. "Huấn luyện" thực chất là chỉnh hàng triệu trọng số đó, từng chút một, sao cho đầu ra khớp với thực tế. Mạng càng nhiều lớp ẩn thì càng học được những quy luật phức tạp. Đó là lý do người ta gọi nó là Deep Learning.
Ví dụ trong phòng máy. Với dân phần cứng, bài toán quen nhất là đoán trước thiết bị sắp hỏng. Đầu vào có thể là các chỉ số SMART của ổ cứng, nhiệt độ, tốc độ quạt, số lỗi trên cổng mạng, mức dùng CPU và RAM, độ trễ, tỉ lệ mất gói. Đầu ra là một xác suất, kiểu như: "Ổ đĩa ở khe số 4 có khả năng cao sẽ hỏng trong vài ngày tới."
Điều cần nhớ: con số xác suất đó không phải lời tiên tri. Nó chỉ phản ánh những gì mô hình đã thấy trong dữ liệu huấn luyện. Nếu dữ liệu chỉ toàn ổ của một hãng, mô hình có thể đoán rất sai với ổ của hãng khác.
GPT và Transformer: vì sao chatbot giờ "hiểu" mình nói gì
GPT là viết tắt của Generative Pre-trained Transformer. Ba chữ, ba ý.
Generative: mô hình tạo ra nội dung mới. Một đoạn cấu hình switch, một script Python, một playbook Ansible, một bản tóm tắt log, một bản nháp báo cáo nguyên nhân sự cố.
Pre-trained: mô hình được huấn luyện trước trên một kho văn bản khổng lồ gồm sách, tài liệu kỹ thuật, trang web, mã nguồn. Sau đó có thể tinh chỉnh thêm cho một lĩnh vực hẹp như mạng, bảo mật, lưu trữ.
Transformer: kiến trúc được một nhóm nghiên cứu ở Google giới thiệu năm 2017, trong bài báo nổi tiếng "Attention Is All You Need". Trái tim của nó là cơ chế attention: với mỗi từ, mô hình tự cân xem những từ nào khác trong câu đáng để ý nhất.
Ví dụ bạn gõ: "OSPF neighbor không lên sau khi đổi Area ID." Một chatbot đời cũ dò từ khóa, thấy chữ "OSPF" là trả về bài viết chung chung về OSPF. Mô hình dùng attention thì nối được "neighbor", "không lên" và "đổi Area ID" với nhau. Nó hiểu đây là chuyện hai router lệch area, và gợi ý kiểm tra đúng chỗ.
Trong vận hành. Khi được nối với log, ticket và lịch sử thay đổi cấu hình, một trợ lý kiểu GPT có thể trả lời câu như "Vì sao chi nhánh A mất VPN từ 21:42?". Nó gom Syslog, SNMP trap, ticket liên quan, các thay đổi gần đó, rồi dựng thành một dòng thời gian. Việc mất hàng giờ có thể rút còn vài phút.
Nhưng hãy nhớ bản chất: GPT dự đoán chữ tiếp theo hợp lý nhất, chứ không "biết" sự thật. Nó có thể viết ra một lệnh trông rất thuyết phục mà thiết bị của bạn không hề hỗ trợ. Hiện tượng đó gọi là hallucination, và nó là lý do số một để không bao giờ dán thẳng cấu hình AI viết vào production.
GAN: hai mạng nơ-ron đấu trí với nhau
GAN (Generative Adversarial Network) được Ian Goodfellow và cộng sự giới thiệu năm 2014. Ý tưởng rất "đời": cho hai mô hình đấu với nhau.
Generator là kẻ làm giả. Nó tạo ra dữ liệu giả.
Discriminator là người soát vé. Nó đoán xem dữ liệu nào là thật, dữ liệu nào là giả.
Kẻ làm giả cố qua mặt người soát vé. Người soát vé cố bắt cho được hàng giả. Hai bên luyện nhau qua rất nhiều vòng, cho tới khi đồ giả gần như không phân biệt được với đồ thật. Cũng giống thợ làm tiền giả và cảnh sát: bên này giỏi lên thì bên kia buộc phải giỏi lên.
GAN nổi tiếng nhất với ảnh, nhưng trong hạ tầng nó có hai ứng dụng rất thực tế.
Tạo dữ liệu huấn luyện mà không lộ dữ liệu thật. Log thật của doanh nghiệp chứa IP nội bộ, tên người dùng, thông tin khách hàng. Nhiều nơi không muốn, hoặc không được phép, đem nó đi huấn luyện mô hình. GAN có thể sinh ra Syslog, NetFlow, packet trace "tổng hợp", giữ được các đặc điểm thống kê của dữ liệu gốc nhưng không chứa thông tin thật.
Thử sức hệ thống phòng thủ. GAN có thể sinh lưu lượng bất thường, mô phỏng hành vi tấn công, để kiểm tra xem IDS, IPS, NDR hay SIEM của mình có bắt được không. Một kiểu diễn tập phòng cháy, nhưng cho hệ thống mạng.
Cái khó của GAN là huấn luyện rất "khó tính": dễ mất cân bằng, dễ rơi vào cảnh chỉ đẻ ra vài kiểu dữ liệu na ná nhau. Dữ liệu tổng hợp tốt tới đâu thì vẫn phải đối chiếu lại với dữ liệu thật trước khi tin.
VAE: bắt bất thường bằng cách "vẽ lại không giống"
VAE (Variational Autoencoder) được Kingma và Welling đề xuất năm 2013. Nó thuộc nhóm học biểu diễn (representation learning), gồm hai nửa:
Encoder nén dữ liệu xuống một không gian rất nhỏ, chỉ giữ lại những đặc trưng quan trọng nhất.
Decoder từ bản nén đó, dựng lại dữ liệu gốc.
Nghe giống nén và giải nén file. Khác ở chỗ VAE không nhớ từng byte, mà học "hình dáng" chung của dữ liệu. Giống như một kỹ sư trực lâu năm, nhìn biểu đồ lưu lượng là biết hôm nay có gì đó "không giống mọi ngày".
Phát hiện bất thường. Đây là ứng dụng phổ biến nhất trong vận hành. Mình huấn luyện VAE chỉ bằng dữ liệu bình thường: NetFlow, Syslog, telemetry của những ngày yên ổn. Mô hình trở nên rất giỏi vẽ lại "một ngày bình thường".


Rồi một hôm có DDoS, có mã độc liên tục gọi về máy chủ điều khiển, hay có ai đó đang lặng lẽ kéo dữ liệu ra ngoài. VAE chưa từng thấy những thứ này, nên dựng lại rất tệ. Khoảng cách giữa dữ liệu gốc và bản dựng lại, gọi là sai số tái tạo (reconstruction error), tăng vọt. Vượt ngưỡng là hệ thống gắn cờ. Nhiều giải pháp NDR và AIOps đang dùng cách tiếp cận tương tự.
Nhưng cũng chính vì vậy, VAE không phân biệt được "lạ vì bị tấn công" với "lạ vì vừa nâng cấp firmware" hay "lạ vì cuối tháng chạy báo cáo". Nó chỉ biết là lạ. Việc trả lời "lạ vì sao" vẫn là việc của kỹ sư.
Đọc kết quả AI như một kỹ sư
Hiểu bốn khái niệm trên để làm gì? Để mỗi khi AI đưa ra một cảnh báo hay một gợi ý, mình biết đặt đúng câu hỏi.


Và một vài thói quen tôi giữ cho mình:
Luôn đòi bằng chứng. Một cảnh báo tốt phải chỉ ra được log, chỉ số hay sự kiện nào làm nó kêu.
Thử trên lab hoặc môi trường staging trước. Không có ngoại lệ cho cấu hình do AI viết.
Theo dõi tỉ lệ báo nhầm. Một hệ thống kêu mười lần sai một lần đúng sẽ khiến cả đội quen tắt chuông.
Cảnh giác với dữ liệu lệch. Mô hình học từ giờ thấp điểm sẽ thấy giờ cao điểm là "bất thường".
Ghi lại AI đã gợi ý gì và mình đã quyết định gì. Postmortem sau này sẽ cần đến.
Từ "dùng AI" sang "làm chủ AI"
Tôi không nghĩ kỹ sư hạ tầng nào cũng phải thành nhà khoa học dữ liệu. Nhưng tôi tin một điều: ai hiểu công cụ của mình đang làm gì bên trong, người đó sẽ không bị công cụ dắt mũi.
Ngày xưa, mình học TCP/IP để hiểu vì sao mạng chậm, học RAID để hiểu vì sao mất dữ liệu. Giờ mình học thêm Neural Network, GPT, GAN, VAE để hiểu vì sao AI cảnh báo, và vì sao đôi khi nó sai. Cái gốc vẫn vậy: hiểu bản chất trước, dùng công cụ sau.
AI sẽ ngày càng giỏi hơn. Việc của mình là giỏi lên cùng nó, chứ không phải giao hết đầu óc cho nó.
Do what you love, and love what you do. Và hiểu luôn cái mình đang dùng.
Bạn đang dùng AI ở đâu trong công việc vận hành? Nó đã từng báo đúng, hay báo nhầm, một lần nào đáng nhớ chưa? Nói cho tôi biết nhé.
Bài viết tham khảo và phát triển thêm từ một bài chia sẻ của VnPro về các khái niệm AI dành cho kỹ sư mạng.
