WebLLM: Sử dụng LLM trực tiếp ngay trên trình duyệt

Việc trải nghiệm mô hình ngôn ngữ lớn (LLM) trực tiếp trên trình duyệt mà không cần phải sử dụng LLM server đã trở nên khả thi với WebLLM nhờ vào sự hỗ trợ mạnh mẽ của các trình duyệt hiện nay.

Upload image

Với các tính năng tuyệt vời như tra cứu, tóm tắt hay sáng tạo nội dung, LLM (Large Language Model) đang dần trở thành một phần không thể thiếu trong cuộc sống của chúng ta. Tuy nhiên, việc vận hành LLM tiêu tốn rất nhiều tài nguyên của máy, khiến chi phí cho việc sử dụng thông qua API trở nên đắt đỏ. Bên cạnh đó, việc sử dụng LLM API đem lại sự lo ngại về tính bảo mật cho người dùng khi xử lý các thông tin quan trọng. Việc tự host và sử dụng LLM trên máy cá nhân cũng tương đối phức tạp với người dùng không làm trong lĩnh vực phần mềm.

WebLLM là một công cụ tiềm năng để giải quyết các vấn đề trên khi có thể đẩy tải về phía người dùng, đồng thời đảm bảo tính bảo mật khi việc xử lý tài liệu diễn ra hoàn toàn trên trình duyệt. Việc phát triển ứng dụng web cũng khá đơn giản khi WebLLM có cách hiện thực đơn giản, hỗ trợ sẵn nhiều loại LLMs và cho phép ta sử dụng custom model.

Trong bài viết này, chúng ta sẽ cùng tìm hiểu về cách thức vận hành, ưu điểm, hạn chế và các lưu ý khi sử dụng WebLLM.

Các thuộc tính của WebLLM

Chạy hoàn toàn trên trình duyệt

Đúng với tên gọi của nó, WebLLM được thực thi hoàn toàn bằng trên trình duyệt mà không cần sự hỗ trợ của server. Để có thể chạy hoàn toàn trên trình duyệt mà vẫn đảm bảo được vấn đề hiệu suất, WebLLM đã khai thác sức mạnh của WebAssembly cho việc thực thi LLM trong ứng dụng web. Bên cạnh đó, phần engine để thực thi LLM được chạy hoàn toàn trên WebGPU - một API cho phép ta sử dụng GPU của máy để tính toán, giúp hiệu năng thực thi LLM trên môi trường trình duyệt không khác gì thực thi trực tiếp trên local.

Chúng ta có thể trải nghiệm WebLLM thông qua chat demo trong trang chủ WebLLM.

Upload image

Tương thích hoàn toàn với OpenAI

WebLLM được thiết kế để tương thích hoàn hoàn với API của OpenAI, giúp chúng ta có thể sử dụng nhiều loại model và tận dụng được hầu hết các tính năng như streaming, json-mode, function-calling hay seeding. WebLLM cũng dựng sẵn nhiều project mẫu để chúng ta có thể tham khảo, từ các tác vụ đơn giản cho tới phức tạp như phần chat demo ở trang chính. Hỗ trợ sẵn nhiều loại model

WebLLM đã xây dựng sẵn các bộ thư viện để sử dụng nhiều loại open-source model như Llama, Gemma, Mistral hay Phi, với nhiều lượng tham số khác nhau để chúng ta có thể sử dụng ngay mà không cần phải xây dựng từ đầu.

Sau đây là một số model được tích hợp sẵn, model với hậu tố ‘1k’ ở cuối sẽ giới hạn tối đa 1024 tokens, giúp giảm lượng VRAM cần thiết để thực thi model.

ModelParametersVRAM Required
Llama-3-70B70B~31GB
Llama-3-8B8B~6.1GB
Llama-3-8B -1k8B~5.2GB
Llama-2-7B7B~6.7GB
Llama-2-7B-1k7B~4.6GB
Mistral-7B7B~6GB
RedPajama-3B3B~2.9GB
Gemma-2B2B~1.5GB
Phi22.7B~11GB
Phi1.51.3B~5.8GB

Nguồn: Github

Cho phép sử dụng custom model

Ngoài số lượng lớn model đã được WebLLM tích hợp sẵn, WebLLM cũng hỗ trợ cho chúng ta xây dựng và sử dụng custom model để có thể tối ưu model theo tính năng cần thiết.

Nhà phát triển có thể chuyển đổi một model sang hỗ trợ WebLLM tận dụng các thư viện đã được dựng sẵn của WebLLM. Trong trường hợp model không tương thích, WebLLM cũng hỗ trợ viết bộ thư viện riêng cho custom model. Để tìm hiểu sâu hơn, ta có thể xem tại đây.

Dễ dàng tiếp cận và sử dụng

Với việc xây dựng sẵn bộ engine để thực thi LLM hỗ trợ chạy trực tiếp hay trên web worker, việc tích hợp và sử dụng model trở nên cực kì đơn giản khi ta chỉ cần truyền thông số về model và bộ thư viện thực thi tương ứng với nó.

Ngoài ra, từ phiên bản 124 của Chrome, service worker đã hỗ trợ WebGPU, giúp việc chạy và sử dụng LLM trên Chrome extension trở nên khả thi.

Hạn chế và lưu ý khi sử dụng WebLLM

Yêu cầu cấu hình máy tốt

Việc chạy model trên máy cá nhân cần một lượng lớn tài nguyên của máy để vận hành. Nếu chạy một model đòi hỏi cấu hình máy quá lớn sẽ gây ra tình trạng trả kết quả chậm, giật lag và thậm chí treo máy. Sau đây là bảng so sánh khi sử dụng các loại model khác nhau trong cùng một máy, ta có thể thấy số lượng token mỗi giây giảm mạnh khi sử dụng model quá lớn.

Một lưu ý khác là WebGPU sẽ sử dụng GPU mặc định của trình duyệt, nên đối với máy có nhiều GPU, ta phải lựa chọn chính xác GPU mạnh mẽ hơn để thực thi. Như ta thấy trong hình dưới thì WebGPU mặc định sử dụng GPU có sẵn của máy thay vì GPU rời với cấu hình cao hơn, dẫn đến độ trễ không đáng có.

Upload image

Chrome đang sử dụng GPU mặc định thay vì GPU cấu hình cao hơn

Chọn model phù hợp với cấu hình

Do ta chỉ có thể đo đạc thông số của GPU process trên trình duyệt mà không thể nắm được cấu hình GPU của máy, việc lựa chọn model phù hợp với cấu hình là vấn đề rất khó khăn khi phải lựa chọn độ trễ cho phép và độ chính xác của model. Việc tải hết các model để đo lượng token là một vấn đề bất khả thi và đem lại trải nghiệm rất tệ đối với người dùng.

Một trong những cách để kiểm tra performance của WebGPU là sử dụng phương pháp render nhiều lần thẻ canvas bằng WebGPU để có được thông số FPS, từ đó tiến hành thử nghiệm và lựa chọn model phù hợp với cấu hình. Đọc thêm về cách đo hiệu năng cho WebGPU.

Ngoài ra, để có thể tối ưu độ chính xác mà không làm tăng độ trễ, chúng ta có thể tạo ra các model gọn nhẹ và được train cho mục đích chuyên biệt thay vì dùng các model lớn.

ModelParametersPrefill (tokens/sec)Decoding (tokens/sec)
Llama-3-8B-1k8B17.30797.5919
Llama-3-8B8B15.07070.8259
Llama-2-7b-1k7B13.58348.606
Llama-2-7b7B12.0850.4528
Mistral-7b7B10.738612.4129
RedPajama-INCITE-Chat-3B3B26.800720.9872

Trong trường hợp này, GPU được sử dụng là NVIDIA GeForce 1660 Ti – 6GB VRAM

Yêu cầu các phiên bản mới của trình duyệt

WebGPU mới được phát hành trong bản 113 của Chrome và Edge, vẫn còn đang trong giai đoạn thử nghiệm ở Safari và FireFox, WebLLM hiện vẫn đang khá kén người dùng, đội ngũ phát triển cần phải cân nhắc khi triển khai cho tập khách hàng của mình.

Upload image

Nguồn: Caniuse

Kết luận

WebLLM ra đời đã đem lại lợi ích rất lớn khi giải quyết được vấn đề scaling và tăng độ an toàn tin cậy khi sử dụng LLM ở phía người dùng. Mặc dù vẫn còn một vài hạn chế như thời gian chạy lần đầu khá lâu tùy thuộc tốc độ mạng (model được lưu offline trên lưu trữ của trình duyệt) và yêu cầu cấu hình máy cao để có trải nghiệm tốt nhất, WebLLM vẫn là một hướng đi tiềm năng khi mà phần cứng ngày càng phát triển.

Atekco - Home for Authentic Technical Consultants