Các doanh nghiệp công nghệ thông tin và các nhà khoa học/kỹ sư thuộc lĩnh vực tính toán vừa có một tin vui về nghiên cứu trong lĩnh vực khoa học máy tính và tính toán. Mới đây, một nhóm các nhà khoa học tại Select Lab, đại học Carnegie Mellon, vừa xây dựng thành công một phần mềm mới có tên GraphChi cho phép thực hiện các tính toán liên quan đến những khối lượng dữ liệu cực lớn (ví dụ như phân tích của công cụ tìm kiếm hay mạng xã hội) ngay trên một chiếc máy tính cá nhân hay laptop thông thường. Được biết trước kia để xử lý các công việc dạng này người ta cần phải dùng đến các cluster máy tính/siêu máy tính rất lớn, như dịch vụ đám mây EC-2 của Amazon chẳng hạn.
Graph Computation và GraphChi
Trước tiên, cần phải nói rõ rằng GraphChi không phải là một giải pháp toàn mỹ cho mọi công việc tính toán nặng nề. Thực tế, phần mềm được thiết kế để sử dụng cho các tính toán liên quan đến Graph Computation. Tuy nhiên, đừng vội coi thường nó, Graph Computation đã và đang không ngừng tăng lên về số lượng và đóng vai trò cực kỳ quan trọng trong thời đại hiện nay.
Vậy Graph Computation là gì và tại sao lại bảo nó quan trọng? Hiểu qua ví dụ có lẽ là phương tiện nhanh và dễ hình dung nhất trong trường hợp này. Ta hãy bắt đầu với một chức năng của Facebook, Top Post. Bạn có biết để đưa ra được post nào là top đối với bạn, Facebook đã phải phân tích đống dữ liệu khổng lồ và phức tạp liên quan đến mối liên hệ giữa các tài khoản/status/comment... khác nhau? Vâng, đó chính là Graph Computation - các tính toán liên quan đến khối lượng lớn dữ liệu và mối liên hệ qua lại giữa chúng. Vậy chúng có quan trọng không? Câu trả lời chắc phần lớn anh em đây đều đồng ý với mình là "Có".
Không chỉ có vậy, GraphChi còn có khả năng xử lý các “streaming graph”, một loại Graph Computation liên quan đến việc mô hình hóa các mạng lưới thông tin lớn một cách chính xác bằng cách chỉ ra sự thay đổi mối liên hệ giữa các dữ liệu theo thời gian. Thông tin không chỉ được xét trong sự tương tác qua lại tại thời điểm hiện tại mà cả với những gì trong quá khứ. Quả là một khối lượng công việc khổng lồ mà ai cũng nghĩ chỉ dành cho siêu máy tính/cluster mà nay lại có thể thực hiện trên chiếc PC của bạn, thật tuyệt vời.
Nguyên tắc làm việc của GraphChi
Để tính toán nhanh, các máy tính trong các hệ thống thông thường đều phải lưu chúng lại trong RAM. Với Graph Computation, rõ ràng RAM của một PC không đủ để lưu lại toàn bộ thông tin cần thiết. Ổ cứng thì khác, với sự phát triển của công nghệ lưu trữ thì dung lượng của thành phần này trên PC hiện nay đủ khả năng để làm điều đó. Tuy nhiên nhược điểm của ổ cứng là tốc độ đọc và ghi dữ liệu của chúng chậm hơn RAM nhiều do đó ảnh hưởng đến việc xử lý các Graph Computation và người dùng buộc phải đưa chúng lên các hệ cluster/siêu máy tính. Để giải quyết vấn đề này, Aapo Kyrola, một thành viên trong nhóm nghiên cứu, đã xây dựng một thuật toán truy xuất ổ cứng “ít” ngẫu nhiên hơn*, nhanh hơn và tối ưu cho Graph Computation để khắc phục nhược điểm của ổ cứng trong các tính toán liên quan. Giải thuật này chính là linh hồn trong phần mềm mới GraphChi.
Và tính hiệu quả của GraphChi...
Carlos Guestrin, đồng điều hành của Select Lab, cho biết sử dụng một chiếc Mac Mini chạy GraphChi, họ có thể phân tích các social graph (graph computation liên quan đến mạng xã hội) của Twitter từ năm 2010 với khoảng 40 triệu người dùng và 1,2 tỉ kết nối liên quan trong 59 phút. Một kết quả đã được xuất bản trước đó cho biết để xử lý lượng tính toán này cần phải mất 400 phút với hệ thống cluster gồm 1.000 máy tính kết nối với nhau, tức tương đương khoảng 400.000 phút = 6.666 giờ = 278 ngày tính cho một máy tính nếu làm việc một mình.
GraphChi và một số lĩnh vực ứng dụng
Rõ ràng với sự tiến bộ trong các phân tích liên quan đến Graph Computation, các sản phẩm mới liên quan đến web sẽ phát triển hơn, tỉ như tìm kiếm tài liệu, quảng cáo trên mạng, công cụ dẫn đường... thậm chí cả an ninh mạng (phân tích mối quan hệ và tìm kiếm tội phạm/tổ chức tội phạm...). Với GraphChi, các lập trình viên/chuyên viên chỉ cần sử dụng máy tính cá nhân để xử lý dữ liệu thay vì phải viết chương trình chuyên dụng cho các hệ máy tính rồi tốn công chờ đợi đến lượt của mình.
Một lĩnh vực khác liên quan đến nhiều tính toán Graph Computation đó là y sinh học, sinh học tính toán hay khoa học vật liệu. Trong y sinh học, cách thức bộ não làm việc hay liên kết các bản ghi thông tin bệnh nhân để xác định chính xác bệnh đều liên quan đến graph computation. Trong sinh học tính toán, hay khoa học vật liệu việc mô phỏng các DNA, protein, hệ tế bào, các quá trình chuyển pha của vật liệu... đều phải viện đến các tính toán phức tạp với lượng lớn dữ liệu trong quá trình xử lý cũng như kết quả cuối cùng.
Thay cho lời kết
“Lớn” chỉ là một khái niệm tương đối khi có một vật mốc làm chuẩn. Tuy không thể phủ nhận tính cần thiết của các cluster máy tính/siêu máy tính nhưng trong thực tế nhiều dữ liệu “không quá lớn” như những gì người ta hình dung. Những công cụ như GraphChi sẽ cho phép các công ty/cá nhân linh hoạt hơn, tiết kiệm hơn, nhanh chóng hơn và tiện lợi hơn trong các vấn đề liên quan đến tính toán Graph Computation. Hy vọng tương lai chúng ta sẽ còn thấy nhiều nghiên cứu hữu ích như thế này hơn nữa.
Các bạn quan tâm có thể vào trang web của dự án và của Select Lab để tìm hiểu thêm.
Quảng cáo