
문장 대신 확률을 내놓는 AI, 맥 오프라인 판단 구조 해설
• 핵심: 문장 생성 없이 선택지별 확률을 한 번에 계산하는 Laya 구조를 정리
• 맥락: 맥에서 내려받아 오프라인으로 판단하는 Core ML 이식이라는 위치
• 관점: 49~50회와 5ms 같은 숫자는 조건과 함께 읽을 때만 기록이 됩니다
왜 답을 쓰지 않는 AI를 들여다볼까
AI에게 물으면 문장으로 답이 돌아오는 게 당연해 보이죠. 그런데 고르는 일이 쓰는 일보다 먼저인 장면이 있습니다.
Laya는 현재 상태와 질문을 받아 어떤 선택이 적절한지 확률로 돌려주는 모델입니다[1]. Jev의 오픈소스 대안을 표방하는 프로젝트를 애플 실리콘에서 돌리도록 옮긴 Core ML 이식이며, 모델을 한 번 내려받으면 네트워크 없이 판단을 수행합니다[1][2]. 문장을 한 토큰씩 생성하는 대신 선택지별 확률과 순서형 점수, 참일 확률을 반환하므로 긴 답변보다 빠른 선택이 필요한 작업에 어울립니다[1].
저도 처음엔 초당 49~50회라는 숫자부터 눈에 들어왔습니다. 그런데 이 글에서 숫자는 단독으로 서 있지 않습니다. 조건과 함께 읽을 때만 기록이 됩니다.
핵심 논점 세 가지를 표로 정리합니다
| 논점 | 기존 문장형 | Laya 선택형 | 남는 생각 |
|---|---|---|---|
| 답변 형태 | 단어를 하나씩 이어 붙인 문장 | 선택지마다 확률 하나를 한 번에 반환 | 묻는 법이 바뀌면 답의 모양도 바뀝니다 |
| 실행 환경 | 서버나 클라우드에 기대어 동작 | 맥에 내려받아 오프라인으로 판단 | 손안의 기기가 판단의 자리가 됩니다 |
| 검증 태도 | 점수만 내놓고 조건은 생략 | 측정 조건과 미달성까지 함께 공개 | 조건을 붙일 때만 숫자가 자료가 됩니다 |

표의 뼈대는 공개된 실행 기록에서 직접 확인한 값으로 채웁니다. 저장소의 게임 루프 측정에서는 완전한 뱀 게임 한 판이 아니라 속도 상한을 풀고 잰 600스텝 에피소드 세 번에서 초당 49.1~50.0회 판단을 유지했고, 사망 0회와 안전장치 개입 2회를 함께 적었습니다[2]. 짧은 다국어 질문 하나는 M3 Max에서 중앙값 4.98ms, 상위 5% 5.31ms였으며, 같은 실험의 컴파일된 MLX 구현보다 판단당 시스템 에너지가 2.78배 개선됐습니다[2]. 숫자 뒤에 조건이 붙어 있다는 뜻이며, 어느 시험에서 몇 점을 받았는지 묻는 습관이 남습니다.
한 번에 고르는 구조가 빠른 이유
확률을 돌려주는 대목
선택형 AI는 메뉴판 각 항목에 번호표를 붙여 정리하는 일과 같습니다. Laya는 상태 정보와 질문을 받아 각 선택지의 적합도를 합이 1인 확률 목록으로 돌려줍니다[1]. Python API와 실행 예제가 함께 제공되고, 추론에는 PyTorch나 MLX가 필요 없습니다[1][2]. 무거운 생성을 건너뛰고 판단만 떼어낸다는 뜻이며, 이 덜어냄이 속도의 원천입니다.
문장 생성과 갈라지는 지점
자기회귀 디코딩은 다음 단어를 하나씩 고르는 반복 작업이라는 뜻이며, 받아쓰기를 한 글자씩 확인하며 적는 일과 같습니다. Laya에는 이런 반복이 없습니다. 생성된 JSON을 파싱할 필요도 없습니다[2]. 판단의 단위를 문장에서 선택으로 바꾼 설계라는 뜻이며, 작은 판단을 나누는 설계가 늘어나는 흐름과 맞닿아 있습니다.
고르는 일과 써내는 일은 다른 재능이며, 이 프로젝트는 전자를 따로 떼어 연습합니다[1].
이 문장이 남는 이유는 겸손함 때문입니다. 잘하는 일을 넓히기 전에 좁혀서 증명하겠다는 태도이며, 작은 주장부터 검증받는 순서가 신뢰를 만듭니다.
조건과 한계까지 함께 읽기
핵심어 토론에서 128GB 통합 메모리 중 실제 사용량은 560.4M, 최대 778.0M으로 보고됐습니다[3]. 모델 규모가 약 3억 매개변수라 많이 쓰지 않을 거라는 관측과 들어맞습니다[3]. 작은 기기에서 오프라인으로 기록을 남기는 흐름은 소상공인 배달 자전거 7시간 오프라인 기록하는 전자잉크 활용법 글의 관점과 겹칩니다. 가벼움이 현장에서 통한다는 같은 이야기입니다.
반면 Hacker News 제목에 적힌 초당 45회라는 수치는 스크립트 본문에 측정 코드나 측정 조건이 없습니다[3]. 저장소가 밝힌 49.1~50.0회는 게임 루프 전체 타이밍이 아니라 상한을 푼 에피소드 측정이며, 터미널 렌더링 직렬화는 포함하고 화면 그리기는 제외합니다[2]. 4.98ms 역시 토큰 91개 질문을 96으로 패딩한 단일 질문 결과이지 뱀 게임 한 프레임 전체 시간이 아닙니다[2]. 빠른 숫자는 조건을 붙일 때만 기록이 됩니다. 조건을 떼면 구호가 되고, 조건을 붙이면 자료가 된다는 구분이 남습니다.
정직한 대목은 미달성 고백입니다. 당초 목표로 한 10배 개선에는 도달하지 못했고, W8 팔레트 변형은 4.88ms와 3.19배라는 별도 검증 수치로 나란히 공개됐습니다[2]. 189개 검증 질문에서 상위 답안 일치 189/189, 600스텝 뱀 게임 대조에서 600/600 행동 일치가 이식 충실도의 근거입니다[2]. 낮은 숫자까지 공개하는 이유는 투명함이 실력의 일부이기 때문이며, 이 솔직함이 저장소의 가장 큰 자산입니다.
보정은 예측 확률이 실제 정확도와 얼마나 일치하는지 재는 일이라는 뜻이며, 단골 예측과 실제 방문이 맞는지 장부로 대조하는 일과 같습니다.
토론에서 나온 관측은 분명합니다. Laya는 학습 데이터가 있고 훨씬 결정적인 작업에 적합해 보이며, 제로샷에서는 Jev만큼 잘하지 못할 듯하다는 것입니다[3]. 대안으로 제시된 순서는 Jev로 데이터셋을 만든 뒤 Laya를 학습시키고 나머지 작업을 Laya로 처리해 비용을 아끼는 방식입니다[3]. 큰 모델로 가르치고 작은 모델로 돌리는 분업이라는 뜻이며, 어느 쪽 손을 들어줄지는 독자 몫으로 남겨둡니다.
로컬 실행 절차는 셸 명령 여섯 개로 정리돼 있습니다[1]. 프로젝트 생성과 의존성 추가를 마친 뒤 모델을 로컬 경로 models/snake에 내려받고 같은 경로를 지정해 데모를 실행합니다[1]. Core ML은 애플 기기에서 AI를 직접 돌리는 틀이라는 뜻이며, 게임기를 빌리지 않고 집 거실 기기로 바로 즐기는 일과 같습니다[4]. 내려받기 이후에는 오프라인으로 돌아간다는 뜻이며, 허브 모델은 초기화 전에 내려받고 이후 예측은 로컬에 머뭅니다[2][5]. 데모에는 경로 계획 정보와 충돌 방지 안전장치가 들어 있어 게임 성능은 모델 단독이 아니라 결합의 결과입니다[1].
왜 알아두면 좋은가
이 글이 주는 것은 도입법이 아니라 판단의 단위입니다. 문장을 통째로 맡기기 전에 고르는 일부터 맡겨보는 순서입니다.
원문엔 없지만 배경 이해를 위해 추가로 확인한 자료로, 애플의 Core ML 문서는 기기 내 추론과 Neural Engine 활용의 공식 기준을 제시합니다[4]. 확률을 돌려주는 모델을 쓸 때 무엇을 믿을지의 근거가 된다는 뜻이며, 보정과 대조군 같은 검증 습관이 그 근거를 만듭니다.
작은 판단을 나누는 설계가 늘어나는 흐름 자체가 수확입니다. 큰 모델을 기다리기 전에 작은 선택부터 실험해보는 눈이 생기며, 그 눈은 다음 도구를 고를 때도 그대로 쓰입니다.
결론과 한 줄 정리
- 핵심 1: Laya 이식은 문장 생성 없이 선택지별 확률을 한 번에 계산하는 구조로, 내려받기 1회 이후 오프라인 판단이 가능합니다
- 핵심 2: 49.1~50.0회와 4.98ms, 2.78배 같은 숫자는 측정 조건과 함께 읽을 때만 기록이 되며, 45회 표기는 본문에 근거가 없습니다
- 핵심 3: 제로샷 한계를 인정하고 Jev로 가르쳐 쓰는 분업, 조건까지 공개하는 검증 습관이 이 글의 수확입니다
- 한 줄 정리: 답을 쓰기 전에 고르는 일부터 맡겨보는 것이 이 글이 남기는 순서입니다
자주 묻는 질문
[핵심] Laya는 Jev와 무엇이 다릅니까?
Laya는 Jev의 오픈소스 대안을 표방하는 프로젝트로, 이번 기록은 그것을 애플 실리콘용 Core ML로 옮긴 이식입니다. 문장 생성이 아니라 선택지별 확률을 돌려준다는 점이 겹치지만, 품질 동등성은 입증되지 않았습니다. 출발점이 다르다는 사실을 먼저 확인하는 것이 혼선을 막습니다.
[핵심] 문장을 만들지 않고 확률만 내놓는 방식이 왜 빠릅니까?
단어를 하나씩 고르는 반복 과정이 통째로 빠지기 때문입니다. 각 선택지의 적합도를 한 번의 처리로 계산하므로, 생성과 파싱에 드는 시간이 사라집니다. 빠름의 대가로 표현의 자유를 내놓는 교환이라고 이해하시면 됩니다.
[수치] 초당 49~50회 판단과 5ms 처리는 어느 환경에서 나온 수치입니까?
전자는 uncapped 600스텝 뱀 게임 에피소드 세 번의 게임 루프 측정이며, 후자는 M3 Max에서 토큰 91개 질문을 96으로 패딩한 단일 질문 결과입니다. 두 수치 모두 전체 화면 처리나 긴 맥락 성능을 뜻하지 않습니다. 조건을 함께 옮겨 적을 때만 인용이 성립합니다.
[반론] 제로샷이 약하다면 굳이 로컬 AI를 쓸 이유가 있습니까?
그렇게 읽으면 곤란합니다. 처음 보는 일을 잘하는 것과, 정해진 일을 빠르고 싸게 반복하는 것은 다른 재능이기 때문입니다. 학습 데이터가 있는 결정적 작업에서는 로컬 실행의 속도와 비용이 의미를 가집니다. 약점을 인정한 뒤 쓸 자리를 고르는 것이 이 글의 결론입니다.
[확인점] 오프라인 실행 전에 무엇을 내려받고 확인해야 합니까?
우선 모델 묶음을 로컬 경로에 내려받아야 하며, 이후 예측은 네트워크 없이 수행됩니다. 터미널 크기 같은 실행 조건과 초기화 대기 시간도 미리 확인하시는 게 좋습니다. 내려받기 1회가 오프라인의 입장권이라는 점을 기억하시면 됩니다.
함께 보면 좋은 글

참고 자료
- [1] Laya on Mac m4 CoreML Offline (laya.sh), https://gist.github.com/fordnox/e592d0f68b543fd044be8e6d040863a0
- [2] laya-coreml, https://github.com/mizorewww/laya-coreml
- [3] Hacker News discussion, https://news.ycombinator.com/item?id=49777106
- [4] Apple Core ML documentation, https://developer.apple.com/documentation/coreml
- [5] laya-multilingual-coreml-ane, https://huggingface.co/aac6fef/laya-multilingual-coreml-ane
PalanK 서비스와 함께 더 빠르게
소상공인 AI 자동화 전체 보기 — PalanK AI 솔루션
관련 글
650억 매출과 400줄 스크립트, AI 멸종 경고 이면을 해설하다
AI 멸종 경고를 앞세운 규제 요구의 이면을 정리했습니다. 4개월 열린 시험 환경과 400줄 스크립트, 650억 달러 매출과 오픈 웨이트 경쟁 구도를 배경 이해 중심으로 차분히 풀었습니다.
100만 번·150ms·100분의 1 비용, 빠른 AI 판단 구조를 해설하다
코드 흐름은 그대로 두고 판단만 떼어내는 Jev 활용 지도를 정리했습니다. 100만 번 실행과 150ms 판단, 10가지 작업 모양과 확인 흐름까지 배경 이해 중심으로 차분히 함께 풀었습니다.
8~29MB 초소형 AI가 말을 명령으로 바꾸는 구조
8~29MB 초소형 모델이 말 한마디를 함수 호출과 JSON 항목으로 바꾸는 과정을 정리했습니다. 2~20층 선택과 신뢰도 설계, 댓글 실패 사례까지 배경 이해 중심으로 차분히 풀었습니다. 작은 기기 선택 기준도 함께 담았습니다.