Chiếc laptop 2,5 năm tuổi của tôi giờ có thể viết Space Invaders bằng JavaScript (GLM-4.5 Air)
(simonwillison.net)- Trên MacBook Pro M2 đã 2,5 năm tuổi, tác giả dùng mô hình GLM-4.5 Air 3bit để tạo mã game Space Invaders chỉ trong một lần
- Đây là mô hình open weight mới nhất do Z.ai của Trung Quốc công bố theo giấy phép MIT, cho thấy hiệu năng ấn tượng trên các benchmark lập trình
- Nhờ phiên bản quantized 3bit dung lượng 44GB, mô hình có thể chạy cả trên PC có RAM 64GB
- Tác giả chạy mô hình cục bộ bằng thư viện ml-explore/mlx-lm ở commit mới nhất và ghi nhận tốc độ khá nhanh cùng khả năng hoạt động ổn định
- Các mô hình ngôn ngữ lớn tối ưu cho lập trình chạy cục bộ ra mắt gần đây đang cho thấy năng lực sinh mã rất cao và phát triển rất nhanh
Trải nghiệm tạo JavaScript Space Invaders bằng GLM-4.5 Air và MLX
29 tháng 7, 2025
Họ mô hình GLM-4.5 được giới thiệu hôm qua là mô hình open weight hiệu năng cao mới nhất do Z.ai của Trung Quốc công bố theo giấy phép MIT
Mô hình này được đánh giá là thể hiện hiệu năng cao trên các benchmark lập trình, đủ sức so sánh với những mô hình hiện có như Claude Sonnet 4
Ngay cả mẫu nhỏ nhất là GLM-4.5 Air cũng có tổng cộng 106 tỷ tham số, kích thước khoảng 206GB
Ivan Fioravanti đã phát hành một bản lượng tử hóa 3bit xuống còn 44GB để có thể chạy trong MLX trên laptop 64GB bộ nhớ
Khi tự mình thử nghiệm, tác giả nhận thấy ngay cả mô hình nhỏ này cũng cho thấy hiệu năng cực kỳ mạnh mẽ
Prompt đầu vào:
Nhập một prompt yêu cầu viết trang triển khai Space Invaders bằng HTML và JavaScript
Mô hình mất một chút thời gian để tạo phản hồi, và kết quả này đã được xuất ra thành công
Dù chỉ là một ví dụ cơ bản, việc nó có thể trực tiếp tạo ra mã hoàn chỉnh, chạy được ngay ở lần thử đầu tiên trên một chiếc laptop 2,5 năm tuổi (MacBook Pro M2 64GB) vẫn rất ấn tượng
Cách chạy mô hình
- Cần dùng thư viện mlx-lm ở nhánh
mainmới nhất cùng commit hỗ trợ glm4_moe cụ thể này - Sau khi tạo môi trường Python bằng uv, có thể tải mô hình bằng đoạn mã sau
from mlx_lm import load, generate
model, tokenizer = load("mlx-community/GLM-4.5-Air-3bit")
-
Trọng số mô hình dung lượng 44GB sẽ được lưu trong thư mục
~/.cache/huggingface/hub/models--mlx-community--GLM-4.5-Air-3bit -
Nhập prompt như sau để chạy tác vụ sinh mã
prompt = "Write an HTML and JavaScript page implementing space invaders"
messages = [{"role": "user", "content": prompt}]
prompt = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True
)
response = generate(
model, tokenizer,
prompt=prompt,
verbose=True,
max_tokens=8192
)
- Trong quá trình sinh, mô hình trước tiên sắp xếp và in ra các yêu cầu của bài toán cùng thông tin thiết kế game
- Sau đó, nó tạo mã HTML, CSS và JavaScript thực sự chạy được với tốc độ nhanh
Thống kê sinh mã
-
Prompt: 14 token, tốc độ sinh 14.095 token/giây
-
Phần thân: 4193 token, tốc độ sinh 25.564 token/giây
-
Mức sử dụng bộ nhớ tối đa: 47.687GB
-
Toàn bộ lịch sử hội thoại có tại gist link
-
Mã nguồn đầu ra có thể xem tại ví dụ trên GitHub
-
Cũng có thể chạy thử trực tiếp trên trình duyệt
Thử nghiệm benchmark pelican
- Tác giả cũng đánh giá khả năng tạo ảnh SVG của cùng mô hình này bằng benchmark pelican riding a bicycle
- Với prompt
Generate an SVG of a pelican riding a bicycle, mô hình đã tạo thành công mã ảnh SVG đầy sáng tạo - Mô hình tiêu thụ tối đa khoảng 48GB RAM để trả kết quả
- Trên laptop, cần tắt bớt một số ứng dụng để giải phóng đủ bộ nhớ
- Tốc độ cũng ở mức đáng hài lòng
Sự phát triển của các mô hình lập trình chạy cục bộ
- Trong năm 2025, phần lớn các mô hình ngôn ngữ lớn đều tập trung tăng cường hiệu năng sinh mã
- Kết quả là chúng cho thấy năng lực tạo mã cao đủ để sử dụng thực tế ngay trên phần cứng cục bộ
- Mức độ này đã tiến gần tới điều khó có thể tưởng tượng được vào thời điểm thử nghiệm LLaMA đầu tiên cách đây 2 năm
- Ngay trên chiếc laptop đang dùng hiện tại, tác giả đã có thể hưởng lợi từ hàng loạt mô hình mã nguồn mở hiệu năng cao liên tiếp xuất hiện như GLM-4.5 Air, Mistral 3.2 Small, Gemma 3, Qwen 3
- Trong 6 tháng gần đây, môi trường phát triển đang được cải thiện nhờ sự ra mắt của nhiều mô hình ngôn ngữ chất lượng cao tối ưu cho lập trình chạy cục bộ
1 bình luận
Ý kiến Hacker News
Khi lần đầu tiếp xúc với LLaMA vào 2 năm trước, tôi hoàn toàn không thể tưởng tượng nổi rằng trên chiếc laptop mình dùng khi đó lại có thể chạy được các model như GLM 4.5 Air hiện nay (Gemma 3, Qwen 3, Mistral 3.2 Small, v.v.). Cả chất lượng lẫn tốc độ phát hành của các model mở đều vượt xa dự đoán của tôi. Để tham khảo, khi ChatGPT ra mắt vào tháng 12/2022, model mở tốt nhất lúc đó là GPT-J (khoảng 6~7B) và GPT-neoX (cỡ 22B?). Tôi thực sự đã vận hành dịch vụ cho người dùng gần một tháng bằng gpt-j, nhưng chất lượng thì rất tệ và nó hoàn toàn không làm theo chỉ thị, nên phải viết prompt như kể chuyện hoặc nhét nhiều ví dụ vào thì mới tạm hoạt động. Sau đó, khi model LLama bị “rò rỉ” (tôi nghĩ có lẽ là rò rỉ có chủ đích), lịch sử đã thay đổi. Thời L1 chứng kiến đủ loại tối ưu như lượng tử hóa, fine-tuning, v.v.; đến L2 thì fine-tuning thật sự được thương mại hóa (đa số bản fine-tune còn tốt hơn bản gốc của Meta), rồi sau màn trình diễn LoRA của Alpaca là hàng loạt model cực mạnh như Mistral, Mixtral, L3, Gemma, Qwen, DeepSeek, glm, Granite... lần lượt xuất hiện. Theo một số phân tích, các model mở chỉ chậm hơn khoảng 6 tháng so với những model do các phòng thí nghiệm SotA phát hành (mà lưu ý là các lab này có lẽ còn không công khai model tốt nhất của họ, thay vào đó giữ lại để dùng nội bộ như tuyển chọn dữ liệu cho lần huấn luyện kế tiếp). Khoảng cách 6 tháng thực sự là điên rồ. Tôi từng nghĩ phải mất cỡ 2 năm mới chạm tới mức GPT-3.5, nhưng chưa bao giờ tưởng tượng sẽ có ngày mình có thể chạy những model này cục bộ và tự fine-tune chúng
Tôi đã hỏi suốt một thời gian dài về việc làm thế nào để tạo hoặc sử dụng LLM fine-tuning hay LoRA (parameter-efficient fine-tuning). Thực sự không nhận được câu trả lời hữu ích nào, còn tìm trên web thì toàn bài SEO/quảng cáo. Tôi đã biết cách tạo và dùng SD LoRA từ 2 năm trước và dùng khá thành thạo. Thế mà riêng LLM LoRA thì mọi thứ cứ như một bí mật bị giấu kín
Không thể nào Zuck (Mark Zuckerberg) tự mình đi rò rỉ lên nơi như 4chan được
Tôi tò mò liệu GLM 4.5 có tốt hơn Qwen3 coder không
Tôi vẫn thấy kinh ngạc khi một chiếc MacBook Pro M2 64GB mua từ 2,5 năm trước lại có thể sinh ra kiểu mã như thế này. Đặc biệt là nó tạo ra mã chạy được ngay từ lần đầu mà không cần chỉnh sửa. Có vẻ chúng ta đang đánh giá quá thấp tiềm năng đáng kinh ngạc của phần cứng hiện tại. Tôi lo rằng cách nghĩ kiểu ‘Bitter lesson’ (phép màu phụ thuộc vào tài nguyên tính toán) hay tư duy về ‘ranh giới tính toán hiệu quả’ lại đang khiến những người tài giỏi muốn khám phá các hướng tiếp cận đột phá bị đẩy ra xa. Trên thực tế, nhìn vào việc các model hiện nay vẫn giữ được hiệu năng dù giảm cực mạnh độ chính xác của trọng số sau huấn luyện, tôi lại thấy có khi chính hướng hiện tại mới là kém hiệu quả hơn
Tôi thắc mắc liệu họ có hiểu kết quả triển khai đó không, hay chỉ thấy là nó chạy được. Có lẽ LLM cũng có thể đưa ra câu trả lời nghe tạm đúng cho những câu hỏi phỏng vấn phổ biến. Khi đồng nghiệp của tôi trình bày thay đổi dữ liệu, họ đã dùng LLM để làm một ứng dụng trực quan hóa JSON, trong khi vốn đã có sẵn các JSON viewer hoạt động tốt, nên tôi không hiểu tại sao còn phải làm mới. Có cảm giác trong công việc thực tế, mọi người chủ yếu dùng LLM để làm đẹp phần trình bày chứ gần như không dùng nó để làm công cụ phục vụ sử dụng thực tế. Một đồng nghiệp khác cần macro để sửa hàng loạt nội dung giáo trình, nhưng để làm nó, người đó lại bắt đầu từ việc tạo rubric cho prompt LLM, rồi sau đó còn gom yêu cầu của macro thành slide thuyết trình để ném lại cho LLM. Vì hệ thống trở nên quá phức tạp, tôi không nghĩ là thực sự tiết kiệm được thời gian. Kết quả thì đúng là thú vị, nhưng rốt cuộc lại thường chẳng có ích gì cho người khác
Tôi có lướt qua mã để nắm được nó làm gì, nhưng nếu chỉ xác nhận là nó chạy được thì tôi thường không đào sâu thêm. Khi dùng LLM để viết mã cho production, tôi kiểm tra từng dòng một. Chỉ khi hiểu hoàn toàn đến mức có thể giải thích lại cho người khác, tôi mới commit đoạn mã đó. Có một bài viết trình bày khá chi tiết cách sử dụng LLM cho việc viết mã thực chiến
https://simonwillison.net/2025/Mar/11/using-llms-for-code/
Bản thân LLM chính là giải pháp đó
Thực ra mã dùng một lần (disposable code) mới là lĩnh vực AI thật sự phát huy giá trị. Nếu nó có thể tự sinh ra đống boilerplate vô lý cho hệ thống build, hay mã animation, thì quá tuyệt (nghĩ đến lượng công sức 3Blue1Brown bỏ vào animation, nếu AI có thể giúp việc đó thì tôi hoàn toàn ủng hộ). Việc người không biết lập trình vẫn có thể làm ra prototype rồi chuyển cho lập trình viên chuyên nghiệp đã là một giá trị cực lớn. Không cần hiểu chi tiết mã kết quả, chỉ cần đánh giá pass/fail là đủ nên tính hữu dụng thực tế rất cao. Tuy nhiên, những vấn đề “trị giá hàng trăm triệu” lại là kiểu sửa bug dịch vụ thực tế hay thêm tính năng vào sản phẩm, và ở những chỗ đó AI đụng trần rất nhanh. Mặt khác, mã dùng một lần vốn từng là công cụ giúp junior developer trưởng thành, mà giờ AI lấy mất phần đó thì cũng là điều đáng suy nghĩ
Tôi đoán trong dữ liệu huấn luyện của model này hẳn có cực nhiều bản Space Invaders được viết bằng đủ thứ ngôn ngữ khác nhau
Bài test thực sự là xem model có xử lý được các yêu cầu triển khai chi tiết như “hãy sửa hàm này, cho tàu bắn xuống dưới, cho nó xuất hiện từ trái/phải, thêm chế độ 2 người chơi” hay không
Có lẽ một phần dữ liệu cũng là do model sao chép các game vốn đã có trong dataset rồi tạo thành dữ liệu tổng hợp. Nhìn mã frontend React do LLM sinh ra, tôi cứ thấy cái nào cũng na ná nhau
Cuộc tranh luận này thật ra đã kết thúc từ 3 năm trước rồi. Từ sau gpt3, mọi đoạn mã có thể dùng được đều đã nằm trong dữ liệu huấn luyện, và chỉ trong 2 năm, chúng ta đi từ trạng thái “mã trông có vẻ đúng nhưng thực ra sai hết” đến “ứng dụng full-stack chạy đúng ngay từ 0-shot”. Chìa khóa của bước nhảy vọt không chỉ là dataset mà là post-training, reinforcement learning (RL), ngữ cảnh dài, hành vi tác tử, v.v.. Các model đời đầu bị giới hạn 2/4k token, còn bây giờ cục diện đã hoàn toàn khác. Nói về dữ liệu một cách đơn giản mà không nhìn theo hướng này là lạc hẳn khỏi trọng tâm vấn đề
Sự tương đồng về mặt hình ảnh với game breakout khá thú vị
Ngay cả những bình luận kiểu này rốt cuộc cũng rất có thể là các nhận xét tổng hợp giống nhau, không có phân tích thật sự, và đã xuất hiện vô số trong dữ liệu huấn luyện
Tôi có một máy Mac M4 với RAM 128GB và đang tải GLM-4.5-Air-q5-hi-mlx (80GB) bằng LM Studio. Sẽ sớm chia sẻ kết quả
Tôi nghĩ việc trình diễn rằng LLM có thể chạy cục bộ trên laptop có ý nghĩa rất lớn. Trước đây với các model nhỏ thì chuyện này gần như bất khả thi, nên đây là một cột mốc thực sự quan trọng. Tuy nhiên, nếu là một miền đặc thù/hẹp như Space Invaders, có lẽ hiệu quả hơn là cứ tìm một bản triển khai sẵn trên GitHub rồi tải về. Trong kiểu trường hợp này, bản thân tập huấn luyện đã cực nhỏ, còn không gian vector của model cũng khó tránh khỏi bị giới hạn phạm vi, nên khả năng cao mã kết quả sẽ gần giống nguyên bản hoặc gần như copy-paste. Chưa kể còn phải ngồi chờ model gõ từng chữ, nên giá trị gia tăng rất thấp. Tôi thấy khôn ngoan hơn nếu bảo LLM rằng “hãy tìm cho tôi mã nguồn Space Invaders có sẵn trên GitHub viết bằng ngôn ngữ X”. Buồn cười là khi giao cho ChatGPT xử lý mấy chuyện sắp xếp mã kiểu này, LLM lại bị dẫn theo hướng cứ lặp đi lặp lại luận điểm rằng “hầu như không có overfitting và model cũng không ghi nhớ gì cả” (cá nhân tôi thì chẳng tin lắm cả hai ý đó)
Tôi đã thử với Claude Sonnet 4 nhưng nó không hoạt động đúng. Vậy là GLM-4.5 Air lượng tử hóa 3bit đã vượt lên. Đây là lịch sử chat liên quan: https://claude.ai/share/dc9eccbf-b34a-4e2b-af86-ec2dd83687ea Claude Opus 4 cũng chạy được, nhưng vẫn kém khá xa so với GLM-4.5 mà Simon đã đăng: https://claude.ai/share/5ddc0e94-3429-4c35-ad3f-2c9a2499fb5d
Ban đầu tôi đã đọc nhầm tiêu đề thành “Đứa con 2,5 tuổi của tôi giờ có thể làm Space Invaders bằng JavaScript (GLM-4.5 Air)”. Nhưng biết đâu vài năm nữa chuyện đó lại thành thật
Cuộc thảo luận này gợi ra một câu hỏi đậm chất khoa học viễn tưởng rất thú vị. Nếu một binary của trí tuệ nhân tạo tương lai rơi qua lỗ sâu xuống phần cứng tiêu dùng ngày nay, liệu nó có thể chạy được một siêu trí tuệ, hay ít nhất là một tác tử yếu (hoặc tự bootstrap sang phần cứng khác bằng mạng lưới/năng lực thuyết phục) không?
Đó chính là tiền đề nền tảng của toàn bộ nghiên cứu ML của tôi từ trước đến nay. Chỉ cần thay “lỗ sâu” bằng “lập trình di truyền/neuroevolution, v.v.” là y hệt. Phần mềm tối ưu hóa cực hạn của demoscene đã dẫn tôi đến con đường này. Câu hỏi tôi liên tục tự hỏi gần đây là: “Độ phức tạp Kolmogorov của một binary cung cấp đầy đủ mọi khả năng của LLM thế hệ hiện tại sẽ là bao nhiêu?” Nếu kích thước (độ phức tạp) đó thực sự có thể chạy được trên desktop hiện tại của tôi, thì bức tranh sẽ ra sao? PC của tôi có thể đẩy game AAA lên 400fps, nên tôi không tin là khoảng cách giữa điều đó và việc LLM chỉ nhả utf-8 text ở tốc độ 100b/s lại có thể lớn đến thế
Đây mới là phần khiến tôi thực sự hứng thú. Còn bao nhiêu năng lực ẩn nữa, và làm sao có thể khai thác chúng đến cực hạn hơn? Thậm chí nếu là phần cứng mới lạ, khác thường thì sao? Chúng ta chủ yếu làm việc bằng cách đưa vào các tầng trừu tượng do giới hạn của bộ não con người. Vì thế ta chỉ tập trung vào những miền hẹp, nhưng trừu tượng hóa có chi phí rất lớn, và tôi tò mò tiềm năng sẽ ra sao nếu loại bỏ được các giới hạn đó
Tôi muốn biết có trang nào tổng hợp phần cứng tối thiểu/khuyến nghị để chạy LLM cục bộ không (kiểu tài liệu “cấu hình yêu cầu” như game)
LM Studio (ngoài ra còn nhiều công cụ khác) giúp chọn model phù hợp với hiệu năng phần cứng rất dễ
Ngoài các câu trả lời khác, một quy tắc kinh nghiệm hữu ích là phần lớn model cục bộ cho hiệu năng tối ưu ở mức lượng tử hóa q4 (cần bộ nhớ nhỉnh hơn một nửa số tham số của model một chút). Ví dụ, model 14B sẽ cần khoảng 8GB, cộng thêm dung lượng cho context thì cỡ 10GB VRAM là hợp lý cho model 14B. Nếu còn dư tài nguyên ở q4 thì tăng lên model nhiều tham số hơn, còn nếu thiếu thì giảm xuống mức lượng tử hóa thấp hơn là cách tiếp cận ổn
Ở đây cũng có tài liệu tham khảo
https://www.reddit.com/r/LocalLLaMA/
Tôi thấy trang này rất hữu ích
https://apxml.com/tools/vram-calculator
Nếu bạn có tài khoản HuggingFace, bạn có thể đăng ký thông tin phần cứng mình đang có và kiểm tra ngay với từng model xem có chạy được hay không