이번에는 많은 곳에서 언급하곤 하는 좀 큰 모델에 대한 기록을 남겨봅니다. qwen3-coder의 480b 모델이구요.. 여러 블로그나 유튭 영상등에서 제 맥스튜디오와 동일사양에서 이 모델을 올려 쓴다느니 하는 글을 봐서 받아본 모델입니다.
일단 모델 파일 용량만 290GB 정도라 다운로드받는데 2시간 가까이 걸리는 관계로 .. ollama pull 걸어두고 자고 일어났네요.
우선 제가 뭘 잘못 한건지 ollama 문제인지 mlx 모델이 아닌 gguf 모델을 써서 그런지는 모르겠습니다만.. 좀 뭔가 이상해요..
https://ollama.com/library/qwen3-coder
위 링크의 480b 모델입니다.
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder:480b 72b144baf727 627 GB 18%/82% CPU/GPU 262144 ForeverM3 Ultral 512gb 에 한번에 올라 간다는 글을 이곳저곳에서 본 것 같습니다만. mlx나 lm studio 의 mlx 모델을 쓴건진 몰라도 480gb 까지 vram 에 사용가능하게 설정한 제 맥 스튜디오에서는 18%는 CPU 에 할당이 되었다는거 같네요??

메모리는 400기가 좀 안되게 차지합니다.
How can I help you today?
total duration: 2m51.259054583s
load duration: 1m25.283110542s
prompt eval count: 9 token(s)
prompt eval duration: 49.878171334s
prompt eval rate: 0.18 tokens/s
eval count: 10 token(s)
eval duration: 36.076332792s
eval rate: 0.28 tokens/s
pirogom@pirogom-Mac-Studio Desktop % ollama run qwen3-coder:480b hi --verbose
Hello! How can I help you today?
total duration: 14.886783833s
load duration: 58.95375ms
prompt eval count: 9 token(s)
prompt eval duration: 8.354506458s
prompt eval rate: 1.08 tokens/s
eval count: 10 token(s)
eval duration: 6.464218168s
eval rate: 1.55 tokens/s위에 결과는 실행후 첫 hi 에 대한 응답이고 두번째가 로드된 후의 결과입니다. 메모리에 로드되는데만 1분이 넘게 걸리네요. 1.55 토큰이라 ㅎㅎ .. 이거 누가 쓸만하다 한걸까요..
“간단한 숫자야구 게임을 go언어로 작성해줘” 라는 프롬프트에 대한 결과입니다. 이정도 단순한 요청에 메모리는 500GB를 왔다갔다 거리네요 ..

10분이 넘어가는데 ..
pirogom@pirogom-Mac-Studio Desktop % ollama run qwen3-coder:480b "간단한 숫자야구 게임을 go언어로 작성해줘." --verbose
물론입니다! 아래는 Go 언어로 구현한 간단한 **숫자야구 게임**입니다.
---
### 🎯 게임 규칙
- 컴퓨터는 3자리의 서로 다른 숫자를 무작위로 생성합니다. (예: 123)
- 사용자는 3자리 숫자를 입력합니다.
- 컴퓨터는 입력받은 숫자에 대해 **스트라이크**(S)와 **볼**(B)을 알려줍니다.
- **스트라이크**: 숫자와 위치가 모두 일치
- **볼**: 숫자는 일치하지만 위치가 다름
- 사용자가 정답을 맞출 때까지 반복합니다.
---
### ✅ 예시 실행 화면
```
컴퓨터가 숫자를 생성하였습니다.
숫자를 입력하세요: 123
0 스트라이크, 1 볼
숫자를 입력이러네요 .. 1초에 한글자도 안나오는 것 같네요. 뭔가 잘못된 것 같습니다.
아무래도 ollama 가 Context 를 위한 메모리 공간까지 확보를 하고 동작하려고 하는 것 때문인것 같아서 408b를 256k 컨텍스트로 로드하려니 문제인듯 하여 ..
FROM qwen3-coder:480b
PARAMETER num_ctx 16384위와 같은 모델 파일을 만들어서 16K의 컨텍스트 크기로 ollama create [모델명] -f 모델파일(위의 내용) 으로 새로 모델을 하나 팠습니다.
pirogom@pirogom-Mac-Studio Modelfiles % ollama ps
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder-480-16k:latest b8b307b7de2a 311 GB 100% GPU 16384 Forever
컨텍스트 크기를 줄이고 나니 뭔가 조금 메모리 사용량이 현실적이 되었네요. ollama ps 에서 100% GPU로 넘어갔고 전체 크기도 311GB 이고 ..
pirogom@pirogom-Mac-Studio Desktop % ollama run qwen3-coder-480-16k "hi" --verbose
Hello! How can I help you today?
total duration: 47.171817625s
load duration: 43.612066084s
prompt eval count: 9 token(s)
prompt eval duration: 3.171380375s
prompt eval rate: 2.84 tokens/s
eval count: 10 token(s)
eval duration: 374.807668ms
eval rate: 26.68 tokens/s구동후 첫 요청의 처리시간도 나름 현실적이 된 느낌입니다.
pirogom@pirogom-Mac-Studio Desktop % ollama run qwen3-coder-480-16k "간단한 숫자야구 게임을 go언어로 작성해줘." --verbose
물론입니다! 아래는 Go 언어로 작성된 간단한 **숫자야구 게임**입니다.
컴퓨터가 3자리의 중복되지 않는 숫자를 생성하고, 사용자가 그 숫자를 맞추는 게임입니다.
---
### ✅ 게임 규칙
- 컴퓨터는 0~9 중 중복되지 않는 3자리 숫자를 생성합니다. (예: 123)
- 사용자는 추측한 3자리 숫자를 입력합니다.
- 결과는 다음과 같이 반환됩니다:
- **스트라이크(S)**: 숫자와 위치가 모두 맞음
- **볼(B)**: 숫자는 맞지만 위치가 다름
- 예: 정답이 `123`이고 입력이 `132`이면 → 1S 2B
---
### ✅ Go 코드
```go
package main
import (
"fmt"
"math/rand"
"strconv"
"strings"
"time"
)
func main() {
rand.Seed(time.Now().UnixNano())
// 1. 정답 숫자 생성 (중복 없는 3자리 숫자)
answer := generateAnswer()
fmt.Println("숫자야구 게임 시작! (3자리 숫자를 맞춰보세요)")
// 2. 게임 루프
for {
fmt.Print("입력: ")
var input string
fmt.Scanln(&input)
// 입력 검증
if !isValidInput(input) {
fmt.Println("잘못된 입력입니다. 3자리 숫자를 입력해주세요.")
continue
}
// 결과 계산
strikes, balls := calculateResult(answer, input)
// 결과 출력
if strikes == 3 {
fmt.Println("정답입니다! 축하합니다 🎉")
break
} else {
fmt.Printf("%d 스트라이크, %d 볼\n", strikes, balls)
}
}
}
// 중복 없는 3자리 숫자 생성
func generateAnswer() string {
numbers := []rune("0123456789")
rand.Shuffle(len(numbers), func(i, j int) {
numbers[i], numbers[j] = numbers[j], numbers[i]
})
return string(numbers[:3])
}
// 입력 유효성 검사
func isValidInput(input string) bool {
if len(input) != 3 {
return false
}
// 숫자인지 확인
if _, err := strconv.Atoi(input); err != nil {
return false
}
// 중복 숫자 확인
seen := make(map[rune]bool)
for _, r := range input {
if seen[r] {
return false
}
seen[r] = true
}
return true
}
// 스트라이크와 볼 계산
func calculateResult(answer, input string) (int, int) {
strikes, balls := 0, 0
for i, r := range input {
if rune(answer[i]) == r {
strikes++
} else if strings.ContainsRune(answer, r) {
balls++
}
}
return strikes, balls
}
```
---
### ✅ 실행 방법
터미널에서 아래 명령어로 실행하세요:
```bash
go run main.go
```
---
### ✅ 예시 실행 화면
```
숫자야구 게임 시작! (3자리 숫자를 맞춰보세요)
입력: 123
1 스트라이크, 1 볼
입력: 321
0 스트라이크, 3 볼
입력: 213
3 스트라이크, 0 볼
정답입니다! 축하합니다 🎉
```
---
필요하면 난이도 조절이나 확장 기능(예: 기록 저장, 재시작 등)도 추가해드릴 수 있어요!
total duration: 40.320319792s
load duration: 57.315459ms
prompt eval count: 26 token(s)
prompt eval duration: 3.340224542s
prompt eval rate: 7.78 tokens/s
eval count: 880 token(s)
eval duration: 36.765000656s
eval rate: 23.94 tokens/s480b 파라미터의 모델을 16k 컨텍스트 크기로 물고 돌린 결과입니다. 23.94 tps 면 .. 느리긴 해도 아에 못쓸 정도의 속도는 아니긴 합니다만 .. 이정도 속도면 걸어두고 딴일하거나 자야하는 정도이긴 하네요 ..
qwen3-coder 모델이 모델의 컨텍스트 크기는 256k 인데 256k를 그대로 다 쓰려하면 일단 512gb 메모리로는 택도 없고 CPU도 같이 쓰게되면 1tps 도 안되는 어마무시한 속도를 마주하시게 될겁니다. 못쓴다고 봐야죠 ..
이 모델을 컨텍스트 크기를 조정해서 로드 시키면 어느정도 차이가 나는지를 좀 확인해 봤습니다.
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder-480-64k:latest 17720bfbf547 374 GB 100% GPU 65536 Forever
64k 의 경우 374gb 정도 차지하네요.
total duration: 1m20.967892083s
load duration: 43.604601375s
prompt eval count: 26 token(s)
prompt eval duration: 4.264055292s
prompt eval rate: 6.10 tokens/s
eval count: 791 token(s)
eval duration: 32.95535786s
eval rate: 24.00 tokens/s컨텍스트 크기는 어차피 속도에 영향을 주진 않는거라 ㅎㅎ.. 결과는 거의 같습니다. 이제 128k로 물려보겠습니다.
NAME ID SIZE PROCESSOR CONTEXT UNTIL
qwen3-coder-480-128k:latest f4b52554814f 458 GB 100% GPU 131072 Forever
total duration: 1m46.071286375s
load duration: 58.942124958s
prompt eval count: 26 token(s)
prompt eval duration: 6.206579959s
prompt eval rate: 4.19 tokens/s
eval count: 961 token(s)
eval duration: 40.705611176s
eval rate: 23.61 tokens/s
일단 이 모델은 128k가 실사용에선 한계겠습니다. 이것도 만약 다른 모델을 같이 물려 쓴다거나, 저같이 llm 용도로만 맥스튜디오를 쓰는게 아니라 실제 개발에도 사용을 하신다거나 하더라도 자동완성용으로 20b 정도 되는 모델 하나 정도 더 물리고 ide 한두개 정도 띄워 쓰는데는 큰 무리 없을것 같네요..
20 초반대의 tps 가 쓸만 하냐 않하냐 .. 문제는 개인의 선택인걸로 ..
이상입니다.
댓글을 달려면 로그인해야 합니다.