로컬 LLM 얘기를 보다 보면 “이 장비에서 70B가 돌아간다”, “100B도 실행 가능하다” 같은 말을 자주 본다.
나도 처음에는 모델이 메모리에 들어가고 답변만 나오면 그냥 되는 건 줄 알았다.
근데 생각해보니 게임도 실행은 되는데 5프레임이면 하기 싫다.
LLM도 비슷한 거 아닐까 싶었다.
그래서 이번에는 돌아가느냐보다 답이 얼마나 빨리 나오느냐를 찾아봤다.
일단 속도를 뭘로 보는지부터 찾아봤다
로컬에서 모델을 돌릴 때 많이 쓰는 llama.cpp에는 아예 llama-bench라는 벤치마크 도구가 있다.
llama.cpp의 llama-bench 설명을 보니 크게 두 가지 속도를 따로 본다.
- 내가 넣은 질문을 읽고 처리하는 속도
- 그 다음 답변을 한 토큰씩 만들어내는 속도
여기서 토큰은 글자 수나 단어 수와 정확히 같은 건 아니다. 그냥 AI가 글을 처리할 때 쓰는 단위라서, 여기서는 속도 비교용 숫자 정도로만 보기로 했다.
내가 궁금했던 건 두 번째였다.
질문을 읽는 게 아무리 빨라도 답을 한 글자씩 아주 천천히 뱉으면 결국 답답할 테니까.
초당 1개랑 20개는 체감이 얼마나 다른 걸까
llama-bench는 답변 생성 속도를 t/s, 그러니까 초당 몇 토큰을 만드는지로 보여준다.
예를 들어 답변이 128토큰 나온다고 아주 단순하게 잡아봤다.
물론 실제 채팅에서는 질문을 읽는 시간도 있고 첫 글자가 나오기까지 기다리는 시간도 있어서 저 숫자가 그대로 전체 대기시간은 아니다.
그래도 감은 확 왔다.
1~2 token/s로도 모델은 분명히 ‘돌아간다’. 근데 긴 답변 하나 받으려면 한참 기다려야 한다.
반대로 20~50 token/s쯤 되면 같은 길이의 답을 몇 초 안에 만들 수 있다.
여기서부터는 ‘실행 가능’이라는 말만 보고 장비를 판단하면 안 되겠다는 생각이 들었다.
마침 DGX Spark에 실제 숫자가 있었다
전에 Nemotron 글을 쓰면서 봤던 DGX Spark가 생각나서 NVIDIA 자료를 다시 찾아봤다.
NVIDIA DGX Spark 하드웨어 문서를 보면 메모리는 128GB, 메모리 대역폭은 273GB/s, 그리고 NVIDIA는 한 대에서 최대 200B급 모델 추론을 지원한다고 적어놨다.
여기까지만 보면 “오 200B도 된다”가 제일 먼저 눈에 들어온다.
근데 이번에는 그래서 몇 token/s인데?를 찾아봤다.
NVIDIA가 공개한 DGX Spark 실제 추론 테스트에는 답변 생성 속도가 같이 적혀 있었다.
이 테스트는 입력 2048토큰, 출력 128토큰, 한 번에 요청 하나를 처리하는 조건이었다.
128토큰만 단순 계산해보면 55.37 tokens/s는 생성 부분이 약 2.3초, 11.73 tokens/s는 약 10.9초다.
둘 다 분명히 돌아간다.
근데 같은 ‘대형 모델을 로컬에서 돌렸다’라는 문장만 보고 있으면 이 차이는 안 보인다.
위 세 모델은 모델 구조도 다르고, 모델을 줄여 저장한 방식도 다르고, 실행 프로그램도 완전히 같지 않다. 그래서 “120B가 무조건 20B보다 이만큼 느리다” 같은 비교용 표는 아니다. 여기서는 실행 가능 여부만으로 실제 체감을 알 수 없다는 예시로 봤다.
오히려 이 표를 보면서 파라미터 숫자 하나만으로 속도를 예상하는 것도 위험하구나 싶었다.
20B라고 무조건 빠른 것도 아니고, 120B라고 무조건 못 쓸 정도로 느린 것도 아니었다.
메모리가 많으면 큰 모델은 들어가는데, 그게 끝은 아니었다
DGX Spark가 재밌는 이유는 128GB 메모리 덕분에 보통 그래픽카드 한 장에는 안 들어가는 큰 모델도 올릴 수 있다는 점이다.
여기서 그냥 창고라고 생각하니까 좀 이해가 쉬웠다.
128GB라는 메모리 용량은 창고 크기고, 273GB/s라는 메모리 대역폭은 그 창고에서 물건을 꺼내는 문 크기에 가깝다.
창고가 아무리 커도 문이 좁으면 물건을 한꺼번에 빨리 빼기 어렵다.
반대로 문이 넓어도 애초에 창고가 작아서 모델이 안 들어가면 시작도 못 한다.
메모리 용량은 “이 모델을 창고 안에 넣을 수 있나?”에 가깝고, 메모리 대역폭은 “넣어둔 걸 얼마나 넓은 문으로 오갈 수 있나?”에 가깝다. 물론 실제 LLM 속도는 이 문 크기 하나로만 결정되지는 않는다.
그래서 NVIDIA가 DGX Spark 사양에 메모리 용량뿐 아니라 273GB/s라는 메모리 대역폭도 따로 적어놓은 이유가 조금 이해됐다.
모델이 메모리에 들어가는지는 일단 첫 번째 관문이고, 실제 답변 속도는 하드웨어와 모델, 실행 방식에 따라 또 달라진다.
llama.cpp 쪽 자료를 더 보니 같은 모델도 하드웨어나 설정에 따라 토큰 생성 속도가 꽤 달라진다.
예를 들어 llama.cpp에 올라온 M3 Max 128GB 테스트에서는 약 73B짜리 Qwen 모델을 4비트로 줄인 파일이 실제로 실행됐지만, 당시 테스트의 답변 생성 속도는 대략 8.6 tokens/s였다.
128토큰이면 생성 부분만 단순 계산해서 약 15초다.
다만 이건 제품 공식 벤치마크가 아니라 한 사용자가 특정 버전의 llama.cpp에서 올린 테스트이고, 그 이슈 자체도 속도가 떨어지는 문제를 다루고 있었다.
그래서 “M3 Max는 원래 8.6 tokens/s다”라고 보면 안 된다.
대신 128GB니까 큰 모델이 들어간다 → 그렇다고 속도까지 자동으로 빠른 건 아니다라는 예시는 됐다.
그러면 ‘쓸 만하다’는 몇 token/s일까
이건 찾아봐도 정답 하나가 있는 문제는 아니었다.
코딩하면서 짧게 질문하는 건 조금 느려도 기다릴 수 있고, 긴 문서를 계속 요약시키는 작업이면 속도가 더 중요하다.
그래서 일단 내 기준을 숫자로 고정하기보다 기다리는 시간으로 보기로 했다.
- 답 하나에 1~2분 걸리면 돌아가기는 해도 자주 쓰기는 힘들 것 같다.
- 20~30초면 작업에 따라 참고 쓸 수 있을 것 같다.
- 5~10초 안쪽이면 채팅하는 느낌이 꽤 살아날 것 같다.
- 더 빨라지면 모델 크기보다 답변 품질이나 전력, 가격 쪽이 더 궁금해질 것 같다.
이건 벤치마크 표준이 아니라 그냥 내가 장비를 볼 때 쓸 임시 기준이다.
실제로 장비를 사거나 테스트하게 되면 이 기준도 다시 바뀔 수 있다.
이제 장비 스펙에서 볼 게 조금 달라졌다
전에는 로컬 LLM 장비를 보면 거의 메모리만 봤다.
“128GB니까 몇 B까지 들어가나?”가 제일 궁금했다.
근데 이번에 찾아보고 나니 최소한 네 가지를 같이 봐야 할 것 같다.
- 모델이 메모리에 들어가는가
- 답변 생성 속도가 몇 tokens/s인가
- 질문을 넣고 첫 답이 나오기까지 얼마나 기다리는가
- 모델을 작게 줄였을 때 내가 원하는 수준의 답이 나오는가
첫 번째만 통과하면 ‘돌아간다’고 말할 수는 있다.
근데 나머지까지 봐야 ‘쓸 만하다’에 가까워지는 것 같다.
찾아보고 나서 보니까 ‘100B 실행 가능’이라는 문장이 다르게 보인다
예전에는 100B, 200B 같은 숫자가 크게 적혀 있으면 그냥 성능이 엄청난 장비라고 생각했다.
지금은 그 문장 바로 다음에 이걸 보고 싶다.
그래서 실제 답변은 초당 몇 토큰 나오는데?
그 숫자가 없으면 아직 절반만 본 느낌이다.
다음에는 실제로 로컬 LLM 장비를 비교할 일이 생기면 메모리 용량 + 실제 생성 속도를 같이 표로 만들어봐야겠다.
그리고 내 장비에서도 같은 모델을 직접 돌려볼 수 있게 되면, 그때는 진짜로 ‘내 기준에서 몇 token/s부터 쓸 만한지’도 재볼 수 있을 것 같다.
찾아본 순서
- llama.cpp — llama-bench 설명
- NVIDIA Docs — DGX Spark 하드웨어 개요
- NVIDIA Technical Blog — DGX Spark 실제 AI 작업 성능
- NVIDIA — DGX Spark 제품 페이지
- llama.cpp Issue — M3 Max 128GB에서 72B급 모델 생성 속도 사례
처음에는 그냥 “큰 모델도 켜지면 좋은 거 아닌가?” 정도였는데, 찾아보고 나니 켜지는 건 시작일 뿐이었다.