2.5년 된 내 노트북이 이제 Space Invaders를 JavaScript로 작성함 (GLM-4.5 Air)
(simonwillison.net)- 2.5년 된 MacBook Pro M2에서 GLM-4.5 Air 3bit 모델을 활용해 Space Invaders 게임 코드를 한 번에 생성함
- 이 모델은 중국 Z.ai가 MIT 라이선스로 공개한 최신 open weight 모델로, 코딩 벤치마크에서 우수한 성능을 보임
- 44GB 3bit quantized 버전 덕분에 64GB 램 PC에서도 실행 가능함
- ml-explore/mlx-lm 라이브러리를 최신 커밋으로 사용해 로컬에서 모델을 구동하고, 비교적 빠른 속도와 안정적 동작을 경험함
- 최근 출시된 로컬 코딩 특화 대형 언어 모델들이 매우 높은 코드 생성 능력을 보이며 빠르게 발전 중임
GLM-4.5 Air 및 MLX로 JavaScript Space Invaders를 생성한 경험
2025년 7월 29일
어제 소개한 GLM-4.5 모델 패밀리는 중국 Z.ai가 MIT 라이선스로 공개한 최신 고성능 open weight 모델임
코딩 벤치마크에서 Claude Sonnet 4와 같은 기존 모델들과 견주어도 높은 성능을 나타내는 것으로 평가받음
가장 작은 GLM-4.5 Air 모델도 총 1060억 파라미터, 약 206GB 크기를 가짐
Ivan Fioravanti가 MLX에서 실행할 수 있도록 3bit로 44GB로 양자화한 버전을 공개해 64GB 메모리 노트북에서도 구동할 수 있음
직접 시도해본 결과, 이 작은 모델조차 매우 강력한 성능을 보여줌
입력 프롬프트:
HTML과 JavaScript로 Space Invaders를 구현한 페이지를 작성하라는 요청 프롬프트를 입력함
모델이 응답을 생성하는 데 시간이 조금 걸렸으며, 이 결과물이 성공적으로 출력됨
비록 초보적인 예제지만, 2.5년 된 랩톱(64GB MacBook Pro M2)에서 첫 시도에만에 동작하는 완성도 높은 코드를 직접 생성함은 인상적임
모델 실행 방법
- 최신 mlx-lm 라이브러리의
main
브랜치와 특정 glm4_moe 지원 커밋를 사용해야 함 - uv로 파이썬 환경을 띄운 후, 다음 코드로 모델을 로드함
from mlx_lm import load, generate
model, tokenizer = load("mlx-community/GLM-4.5-Air-3bit")
-
44GB 용량의 모델 가중치가
~/.cache/huggingface/hub/models--mlx-community--GLM-4.5-Air-3bit
폴더에 저장됨 -
프롬프트를 다음과 같이 입력하여 생성 작업을 실행함
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
)
- 생성 과정에서는 먼저 문제 요구사항 및 게임 설계 정보를 정리해 출력함
- 이어서 실제로 동작하는 HTML, CSS, JavaScript 코드를 빠른 속도로 생성함
생성 통계
-
프롬프트: 14 토큰, 초당 14.095 토큰 생성
-
본문 생성: 4193 토큰, 초당 25.564 토큰 생성
-
최대 메모리 사용치: 47.687GB
-
전체 대화 내역은 gist 링크
-
출력 소스는 GitHub 예제에서 확인 가능
-
직접 브라우저에서 실행 테스트도 가능
펠리컨 벤치마크 테스트
- pelican riding a bicycle 벤치마크로 동일 모델의 SVG 이미지 생성 능력도 평가함
-
Generate an SVG of a pelican riding a bicycle
라는 프롬프트에 창의적 SVG 이미지 코드 생성 성공 - 모델은 최대 약 48GB의 RAM을 소모하며 결과를 반환함
- 노트북에서 일부 앱을 종료해야 충분한 메모리 확보 가능
- 속도 역시 만족스러운 수준임
로컬 코딩 모델의 발전
- 2025년 들어 대부분의 대형 언어 모델들이 코드 생성 성능 강화에 집중함
- 그 결과, 로컬 하드웨어에서도 실제 활용이 가능한 높은 코드 생성력을 보여줌
- 2년 전 LLaMA 첫 시도 당시에는 상상하기 힘들던 수준에 근접함
- 현재 사용 중인 동일 랩톱에서 GLM-4.5 Air, Mistral 3.2 Small, Gemma 3, Qwen 3 등 연이어 등장하는 고성능 오픈 소스 모델들의 혜택을 받을 수 있음
- 최근 6개월 사이에 로컬에서 구동되는 다양한 고품질 코딩 특화 언어 모델 출시에 따라 개발 환경이 개선되고 있음
Hacker News 의견
-
2년 전 LLaMA를 처음 접했을 때는, 그 당시 사용하던 노트북에서 지금 보는 GLM 4.5 Air 같은 모델들(Gemma 3, Qwen 3, Mistral 3.2 Small 등)이 돌아가는 모습을 상상도 못했음. 오픈 모델들의 품질과 출시 속도 모두 내 예상을 훨씬 뛰어넘음. 참고로 ChatGPT가 22년 12월에 나왔을 땐, 그때 존재하던 최고의 오픈 모델이 GPT-J(약 6~7B)와 GPT-neoX(22B 정도?)였음. 실제로 한 달 가까이 gpt-j로 사용자 서비스를 운영했었는데, 퀄리티가 엉망이고 명령을 전혀 따르지 않아 프롬프트에 스토리처럼 던져주거나 예시를 여러 개 써야 겨우 동작했음. 그 후 LLama 모델이 "유출"되고(아마 의도된 유출이라고 생각함) 역사가 달라짐. L1 시절에는 양자화, 파인튜닝 등 다양한 최적화가 나왔고, L2에서는 파인튜닝이 본격적으로 상용화됨(대부분의 파인튠이 Meta의 원본보다 더 좋았음), Alpaca의 LoRA 시연 이후 미스트랄, 믹스트랄, L3, 제마, 퀀, 딥시크, glm, 그래나이트 등 엄청 강력한 모델들이 쏟아져 나옴. 어떤 분석에 따르면, 오픈 모델은 SotA 연구소가 릴리스한 모델에 약 6개월 정도 뒤처짐(참고로 연구소에서는 최고의 모델은 공개하지 않고, 내부적으로 다음 학습용 데이터 큐레이션 등에 쓰는 걸로 추정함). 6개월 차이라는 건 정말 미친 수준임. gpt-3.5 급이 되려면 2년 정도 걸릴 줄 알았는데, 이렇게 로컬에서 이 모델을 돌리고 파인튠까지 직접 해보는 세상이 올 줄 상상도 못했음
-
LLM 파인튜닝이나 LoRA(파라미터 효율 미세조정)는 어떻게 만드는지, 혹은 어떻게 사용하는지에 대해 한동안 질문을 계속했음. 실제로 유용한 답을 듣지 못했고 웹검색은 온통 SEO용/광고성 글뿐임. SD LoRA를 만드는 방법과 사용 방식은 2년 전부터 알고 있고 잘 다룸. 그런데 LLM LoRA에 대해서만 모든 게 감춰진 비밀처럼 느껴짐
-
Zuck(마크 저커버그)이 직접 4chan 같은 곳에 유출했을 리는 없음
-
GLM 4.5가 Qwen3 coder보다 더 나은지 궁금함
-
-
2.5년 전 산 64GB MacBook Pro M2에서 이런 코드 생성이 가능하다는 사실이 여전히 놀라움. 특히 수정 없이 한 번에 동작하는 코드가 나왔음. 현 하드웨어가 얼마나 대단한 잠재력을 가지고 있는지 우리가 너무 과소평가하는 것 같음. ‘Bitter lesson’(마법은 계산 자원에 달림)이니 ‘효율적 연산 경계’ 사고방식이 혁신적인 접근을 탐구하려는 똑똑한 인재들을 오히려 멀어지게 한다는 게 걱정임. 실제론 지금 모델들이 훈련 이후 가중치 정밀도를 엄청 줄여도 성능이 남아 있는 걸 보면, 오히려 더 비효율적인 쪽이 아닐까 싶음
- bitter lesson의 핵심은 데이터 양이 많아야 한다는 점 아니었는지 물음. 예시로 든 모델도 실제로는 22조 토큰 같은 엄청난 대규모 코퍼스에서 훈련된 것임
-
해당 구현 결과를 이해한 것인지, 단순히 실행이 됐다는 점만 본 것인지 궁금함. LLM도 흔한 면접 질문엔 대충 맞는 정답을 내놓을 수는 있을 것 같음. 동료들이 데이터 변경 내용을 프레젠테이션할 때 JSON 시각화 앱을 LLM으로 만들었는데, 이미 잘 돌아가는 JSON 뷰어가 있는데 굳이 새로 만든 데 의문이 듬. 현업에서 사람들이 LLM을 주로 프레젠테이션 강화용으로 쓰지 실사용을 위한 도구로는 거의 안 쓰는 것 같음. 또 다른 동료는 대량 교재 콘텐츠 수정 매크로가 필요했는데, 그걸 만드는 데 LLM 프롬프트용 루브릭부터 만들고, 그 후에는 프레젠테이션 슬라이드로 매크로 요건을 정리해서 LLM에 다시 던졌음. 시스템이 너무 복잡하다 보니, 실제로 시간을 아낄 수 있었다고는 생각하지 않음. 결과물이 신기하긴 했지만, 정작 다른 사람한테 아무 쓸모 없는 경우가 많았음
-
나는 코드를 훑어보고 어떤 동작인지 파악했지만, 실제로 동작만 확인하면 더 들여다보진 않았음. LLM으로 프로덕션용 코드를 쓸 땐 한 줄 한 줄 모두 확인하는 편임. 다른 사람에게 설명할 수 있을 만큼 완벽히 이해했을 때만 코드를 commit함. LLM을 실전 코드 작성에 어떻게 활용했는지 자세히 정리한 글이 있음
https://simonwillison.net/2025/Mar/11/using-llms-for-code/ -
LLM 자체가 바로 그 솔루션임
-
사실 일회용 코드(Disposable code)가 AI가 진가를 발휘하는 분야임. 말도 안 되는 빌드 시스템용 보일러플레이트, 애니메이션 코드 등을 알아서 만들어주면 대환영임(3Blue1Brown이 애니메이션 작업에 들인 노력을 생각하면 AI가 그 일에 도움을 줄 수 있으면 적극 추천). 프로그래밍 모르는 사람이 프로토타입이라도 만들어 프로 개발자에게 넘기는 게 가능해진 건 진짜 큰 가치임. 결과 코드의 세부를 이해하지 않아도 되고, 합격/불합격만 판단하면 끝이라 실질적 유용성이 너무 큼. 다만 '억 단위 가치'를 가지는 문제는 이와 달리, 실제 서비스 버그 수정이나 기능 추가 같은 곳인데, 이런 데선 AI가 한계에 부딪힘. 또 한편으론, 일회용 코드는 원래 주니어 개발자의 성장 도구였는데 그걸 AI가 가져가 버린 건 고민되는 지점임
-
-
해당 모델의 트레이닝 데이터에는 아마도 다양한 언어로 작성된 Space Invaders가 엄청나게 많았을 것이라고 추정함
-
진짜 테스트는 ‘함수 수정해줘, 우주선이 아래로 쏘도록 해줘, 왼쪽/오른쪽에서 등장하게 해줘, 2인 모드 넣어줘’ 등 세부 구현 요청에도 모델이 대응하는지 보는 거임
-
아마도 일부 데이터는 이미 데이터셋에 있는 게임들을 모델이 복사해서 합성 데이터로 만든 경우도 많을 것 같음. LLM이 생성하는 리액트 프론트엔드 코드를 보면 죄다 비슷하게 나오는 느낌임
-
이 논의는 이미 3년 전부터 끝난 얘기임. gpt3 이후로는 사용 가능한 모든 코드가 다 훈련 데이터에 들어가 있는 상황이고, “이제 코드는 맞는 것처럼 보이지만, 실제로는 다 틀린 상태”에서 “0-shot으로 제대로 돌아가는 풀스택 앱이 뚝딱 생성”까지 단 2년만에 도달함. 비약적 발전의 관건은 단순히 데이터셋이 아니라 사후 훈련(post-training), 강화학습(RL), 긴 컨텍스트, 에이전트적 행위 등임. 초창기 모델은 2/4k 토큰 한계가 있었지만 지금은 아예 판도가 달라짐. 이런 관점 없이 단순 데이터 운운하는 건 아예 논점을 놓치고 있는 이야기임
-
breakout 게임과의 비주얼 유사성이 흥미로움
-
이런 댓글도 결국 유사한 진짜 분석 없는 합성 코멘트가 트레이닝 데이터에 수도 없이 들어가 있을 확률이 큼
-
-
M4 Mac에 128GB 램 장착했고, 지금 GLM-4.5-Air-q5-hi-mlx(80GB)를 LM Studio로 다운로드 중임. 곧 결과를 공유할 예정임
-
LLM이 노트북에서 로컬로 돌아간다는 걸 쇼케이스하는 건 큰 의미가 있다고 생각함. 과거에는 작은 모델로 이런 게 거의 불가능했으니까 진짜 중요한 이정표임. 다만 Space Invaders 같은 특수/좁은 도메인이라면, 차라리 GitHub 등에서 기존 구현을 찾아 내려받는 쪽이 더 효율적일 것 같음. 이런 케이스에선 트레이닝셋 자체가 극히 작고, 모델의 벡터 공간도 범위가 제한적일 수밖에 없어서 결과 코드가 거의 원본과 비슷하거나 복붙 수준일 확률이 높음. 게다가 모델이 타이핑하는 속도도 기다려야 해 부가가치가 매우 낮음. 차라리 LLM에게 "언어 X로 작성된 기존 Space Invaders 소스를 GitHub에서 찾아달라"고 요청하는 게 현명하다고 느껴짐. ChatGPT에 이런 코드 정리를 맡기면 LLM은 ‘과적합은 거의 없고, 모델이 암기하지도 않는다’는 주장을 반복하라는 쪽으로 유도하는 게 웃김(나로선 둘 다 별로 믿지 않음)
- ChatGPT에서 그 경고 메시지를 재현하지 못했음. 사실 이런 방식의 경고 삽입엔 정치적 힘이 큰데(직접적 혹은 살짝 재구성하는 식으로), 그게 무척 흥미로움
-
Claude Sonnet 4로 시도해봤는데 제대로 동작하지 않음. 3bit 양자화한 GLM-4.5 Air가 앞선 셈임. 관련 채팅 내역: https://claude.ai/share/dc9eccbf-b34a-4e2b-af86-ec2dd83687ea Claude Opus 4 역시 동작하긴 하지만, Simon이 올린 GLM-4.5에 비하면 한참 뒤처짐: https://claude.ai/share/5ddc0e94-3429-4c35-ad3f-2c9a2499fb5d
-
처음엔 제목을 “2.5살 된 우리 아이가 이제 자바스크립트로 Space Invaders 만든다(GLM-4.5 Air)”로 잘못 읽었었음. 하지만 몇 년 뒤에는 진짜로 가능할지도 모름
-
이 논의는 흥미로운 SF적 물음을 떠올리게 함. 오늘날의 소비자 하드웨어에 미래 인공지능의 바이너리가 웜홀에서 떨어진다면, 그 슈퍼지능이나 최소한 약한 에이전트라도 실행 가능할까(혹은 네트워크·설득력으로 다른 하드웨어에서 스스로 부트스트랩 가능할까)
-
이게 바로 지금까지 내 ML 연구의 기본 전제임. '웜홀'만 '유전 프로그래밍/뉴로에볼루션 등'으로 바꾸면 똑같음. 데모씬(demoscene)의 극한 최적화 소프트웨어가 이 길로 나를 이끌었음. 요즘 내가 계속 묻는 질문은 "현재 세대 LLM의 모든 기능을 동일하게 제공하는 바이너리의 콜모고로프 복잡도는 어떻게 될까?"임. 만약에 그 크기(복잡도)가 지금 내 데스크톱에서 실행 가능하다면 어떤 그림일까? 내 PC가 AAA 게임 프레임을 400fps로 찍어주는데, LLM이 utf-8 텍스트를 100b/s로 뱉어내는 것과 차이가 이토록 클리가 없다고 믿고 있음
-
내가 진짜 흥미롭게 느끼는 부분임. 숨은 능력들이 얼마나 있고, 이걸 더 극한까지 어떻게 활용할 수 있을까? 심지어 이국적·새로운 하드웨어라면 어떨까? 우리는 주로 인간 뇌의 한계 때문에 추상화를 도입하여 일함. 그 추상화로 인해 좁은 영역에 집중하는 식인데, 추상화에는 비용이 크고 그 한계를 없앨 때의 잠재력이 궁금함
-
-
로컬 LLM 구동용 최소/권장 하드웨어를 정리한 사이트가 있는지 궁금함(게임처럼 '시스템 요구사항' 문서가 있는지)
-
LM Studio (외에도 여러 도구가 있지만)에서 하드웨어 성능에 맞는 모델을 고르는 게 매우 쉬움
-
다른 답변 외에도, 좋은 경험칙은 대부분의 로컬 모델이 q4 양자화에서 최적의 퍼포먼스를 보인다는 것임(모델 파라미터 수의 절반 조금 넘는 용량이 메모리로 필요함). 예를 들어 14B 모델이면 약 8GB, 여기에 context 용량을 추가하면 14B 모델엔 10GB VRAM 정도가 적정선임. q4에서 자원이 남으면 더 큰 파라미터 모델을 쓰고, 안 남으면 더 작은 양자화로 가는 방식이 적당임
-
여기도 참고 자료가 있음
https://www.reddit.com/r/LocalLLaMA/ -
이 사이트가 매우 유용하다고 생각함
https://apxml.com/tools/vram-calculator -
HuggingFace 계정이 있다면, 보유한 하드웨어 정보를 등록하면 각 모델 별로 돌릴 수 있는지 바로 확인 가능함
-