# 2.5년 된 내 노트북이 이제 Space Invaders를 JavaScript로 작성함 (GLM-4.5 Air)

> Clean Markdown view of GeekNews topic #22241. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=22241](https://news.hada.io/topic?id=22241)
- GeekNews Markdown: [https://news.hada.io/topic/22241.md](https://news.hada.io/topic/22241.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-07-30T09:43:59+09:00
- Updated: 2025-07-30T09:43:59+09:00
- Original source: [simonwillison.net](https://simonwillison.net/2025/Jul/29/space-invaders/)
- Points: 3
- Comments: 1

## Topic Body

- 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](https://simonwillison.net/2025/Jul/28/glm-45/) 모델 패밀리는 **중국 Z.ai가 MIT 라이선스로 공개**한 **최신 고성능 open weight 모델**임  
코딩 벤치마크에서 Claude Sonnet 4와 같은 기존 모델들과 견주어도 **높은 성능**을 나타내는 것으로 평가받음

가장 작은 GLM-4.5 Air 모델도 **총 1060억 파라미터, 약 206GB 크기**를 가짐  
Ivan Fioravanti가 MLX에서 실행할 수 있도록 **3bit로 44GB로 양자화**한 버전을 공개해 **64GB 메모리 노트북**에서도 구동할 수 있음  
직접 시도해본 결과, 이 작은 모델조차 **매우 강력한 성능**을 보여줌

입력 프롬프트:
> HTML과 JavaScript로 Space Invaders를 구현한 페이지를 작성하라는 요청 프롬프트를 입력함

모델이 응답을 생성하는 데 시간이 조금 걸렸으며, [이 결과물](https://tools.simonwillison.net/space-invaders-GLM-4.5-Air-3bit)이 성공적으로 출력됨  
비록 초보적인 예제지만, 2.5년 된 랩톱(64GB MacBook Pro M2)에서 **첫 시도에만에 동작하는 완성도 높은 코드**를 직접 생성함은 인상적임

### 모델 실행 방법

- 최신 [mlx-lm](https://github.com/ml-explore/mlx-lm) 라이브러리의 `main` 브랜치와 [특정 glm4_moe 지원 커밋](https://github.com/ml-explore/mlx-lm/commit/489e63376b963ac02b3b7223f778dbecc164716b)를 사용해야 함
- [uv](https://github.com/astral-sh/uv)로 파이썬 환경을 띄운 후, 다음 코드로 모델을 로드함

```python
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` 폴더에 저장됨

- 프롬프트를 다음과 같이 입력하여 생성 작업을 실행함

```python
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 링크](https://gist.github.com/simonw/9f515c8e32fb791549aeb88304550893#file-space_invaders-txt-L61)
- 출력 소스는 [GitHub 예제](https://github.com/simonw/tools/blob/9e04fd9895fae1aa9ac78b8e62d2833831fe0544/space-invaders-GLM-4.5-Air-3bit.html)에서 확인 가능  
- 직접 브라우저에서 [실행 테스트](https://tools.simonwillison.net/space-invaders-GLM-4.5-Air-3bit)도 가능

### 펠리컨 벤치마크 테스트

- [pelican riding a bicycle](https://simonwillison.net/tags/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개월 사이에 로컬에서 구동되는 다양한 **고품질 코딩 특화 언어 모델** 출시에 따라 개발 환경이 개선되고 있음

## Comments



### Comment 41948

- Author: neo
- Created: 2025-07-30T09:43:59+09:00
- Points: 1

###### [Hacker News 의견](https://news.ycombinator.com/item?id=44723316) 
- 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/](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](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](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://www.reddit.com/r/LocalLLaMA/)

  - 이 사이트가 매우 유용하다고 생각함  
[https://apxml.com/tools/vram-calculator](https://apxml.com/tools/vram-calculator)

  - HuggingFace 계정이 있다면, 보유한 하드웨어 정보를 등록하면 각 모델 별로 돌릴 수 있는지 바로 확인 가능함
