<p align="center">
<a href="https://xyntetik.com">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="site/assets/readme-header-dark.svg">
<img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/readme-header-light.svg" alt="Xyntetik Runner" width="328">
</picture>
</a>
</p>
<p align="center">
<b>Lifecycle engine with inference you can prove.</b>
</p>
<p align="center">
<a href="https://xyntetik.com">xyntetik.com</a> ·
<a href="https://xyntetik.com/evidence/">Evidence</a> ·
<a href="https://huggingface.co/Joakimpalm-Zen">Model files</a> ·
<a href="MANUAL.md">Manual</a>
</p>
모델을 직접 실행하는 것은 대부분 추측에 의존합니다. 적합할까요? 축소했더니 작동하지 않게 된 걸까요? 아무것도 실행하고 있지 않은데 왜 노트북 메모리가 부족할까요? Runner는 이러한 추측들을 확인할 수 있는 답변으로 대체하기 위해 존재합니다.
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="site/assets/readme-fit-dark.svg">
<img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/readme-fit-light.svg" alt="runner --fit reading the first 16 MB of Granite 4.2 8B on an RTX 3070: FITS, 35 of 40 layers on the GPU" width="560">
</picture>
</p>
<p align="center"><sub class="Real output:">실제 출력: Runner가 RTX 3070에서 Granite 4.2 8B에 대해 문의했으며, 적합하게 축소되었습니다. <a href="docs/compat-reports/fit-capture-1.0.2-2026-10-06-rtx3070.md">전체 캡처</a></sub></p>
- 다운로드하기 전에 확인하세요. Runner는 모델의 처음 몇 메가바이트를 읽어 기기에 적합한지, 그리고 어떻게 적합한지 알려줍니다. 72개 테스트 중 70개에서 실제 분할(real split)을 성공했으며, 지나치게 낙관적이었던 적이 없습니다.
- 모델 크기를 줄이고 비용을 확인하세요. 단 하나의 명령어로 Qwen3-30B를 만들었고, 이 모델은 공식 4비트 파일보다 작으면서도 원본에 더 가깝습니다.
- 동일한 메모리에서 더 긴 문서를 읽으세요. 컨텍스트 캐시(context cache)는 일반적인 공간의 약 41%만 차지하며, 4B부터 30B까지의 모델 모두에서 완벽하게 작동합니다.
- 계속 실행 상태를 유지하세요. 유휴 상태인 63 GB 모델은 메모리의 35 MB만을 차지합니다. 같은 Mac에서도 llama-server는 60.8 GB를 차지합니다.
- 결과를 신뢰하세요. 도구 호출(tool call)은 모델이 단어 고갈 상태가 되어도 여전히 구문 분석을 수행하며, 파인튜닝(fine-tune) 결과는 바이트 단위로 항상 동일하게 나오고, 모든 실행 기록은 누군가에 의해 서명되고 재생될 수 있습니다.
사용해 보는 것은 약 1분이면 충분합니다: quick start.
무엇인가요?
- 단일 파일. 순수 C 언어로 처음부터 작성된 단일 프로그램입니다. Python도 없고, 설치 프로그램도 없으며, 그 아래에 다른 것도 없습니다. 다운로드해서 실행하기만 하면 됩니다.
- 사용 가능한 환경에서 작동합니다. 일반 프로세서, NVIDIA 그래픽 카드, Apple Silicon 등 Linux, macOS 및 Windows에서 작동합니다.
- 도구가 말하는 것을 합니다. 표준 GGUF 모델 파일과 OpenAI 및 Anthropic API를 지원하므로, 앱이나 코딩 에이전트가 변경 없이 연결됩니다.
- 추측이 아닌 측정입니다. 12개의 모델 패밀리가 출판사 자체 구현체와 비교 평가되었으며, Runner는 22개 항목 중 21개에서 llama.cpp보다 참조(reference)에 더 가깝습니다. 알지 못하는 모델은 이름으로 거부하며, 절대로 추측하지 않습니다.
- 당신의 것입니다. Apache 2.0 라이선스 하에 영구적으로 무료이며, 스웨덴에서 제작되었고, 사용자의 프롬프트는 절대 기기를 벗어나지 않습니다.
<p align="center">
<a href="https://buy.stripe.com/9B69AUddpdx9auHgP27N600"><img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/support-button.svg" alt="이 작업 지원하기" height="44"></a>
</p>
<p align="center">
여기서 파일 하나가 당신의 메모리나 시간을 절약했다면, 기여는 다음 작업을 위한 하드웨어 시간으로 쓰입니다.<br>
<a href="https://github.com/Joakimpalm-Zen/xyntetik-runner/issues/new?template=model_request.yml">모델 요청하기</a> ·
<a href="https://github.com/Joakimpalm-Zen/xyntetik-runner/issues/new?template=result_report.yml">결과 보고하기</a> ·
<a href="https://github.com/Joakimpalm-Zen/xyntetik-runner/issues/new?template=bug_report.yml">버그 보고하기</a> ·
<a href="docs/community-results.md">커뮤니티 결과</a>
</p>
버전 1.4.2. 명령줄, HTTP API, 기록 형식 및 로드되는 모델 파일은 1.x 전반에 걸쳐 호환됩니다 (versioning policy). 이 페이지는 간략한 버전이며, 모든 플래그, 엔드포인트, 제한 사항 및 측정 항목은 매뉴얼에 있습니다.
이 페이지에서: 빠른 시작 · The Xyntetik-Lab ·
적합성 확인 · 자신만의 파일 만들기 ·
더 많은 컨텍스트, 적은 메모리 · 유휴 메모리 ·
도구 호출 · 학습시키기 ·
상자 안의 내용물도 확인하기 · 모든 명령어 ·
모델이 무엇을 했는지 증명하기
<a id="quick-start"></a>
<a id="sixty-seconds-to-a-served-model"></a>
<img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/readme-section.svg" width="8" height="24" alt=""> 빠른 시작
1. Runner 다운로드하기 (Apple Silicon용 macOS 표시; Linux, Windows 및 체크섬 단계):
curl -LO https://github.com/Joakimpalm-Zen/xyntetik-runner/releases/latest/download/runner-macos-arm64
chmod +x runner-macos-arm64 && mv runner-macos-arm64 runner
2. 모델 시작하기. Runner가 모델을 다운로드하고, Hub의 SHA-256 기록과 비교한 후 http://127.0.0.1:8080에서 서비스합니다:**
./runner -hf Joakimpalm-Zen/Qwen3-30B-A3B-selective-attnQ8_0-expQ4_0-GGUF --serve
./runner -hf ibm-granite/granite-4.1-3b-GGUF:Q8_0 --serve
3. 요청 보내기:
curl http://127.0.0.1:8080/v1/chat/completions \
-H 'Content-Type: application/json' \
-d '{"messages":[{"role":"user","content":"Say hello in one sentence."}]}'
터미널에서 채팅하는 것을 선호하시나요? ./runner -m model.gguf -i.
<a id="files"></a>
<a id="published-artifacts"></a>
<img src="https://huggingface.co/front/assets/huggingface_logo-noborder.svg" width="30" height="28" alt="Hugging Face"> Hugging Face의 Xyntetik-Lab
이 연구소는 제작하는 모든 것을 측정값과 실패 사례와 함께 공개합니다.
**연구소 내부로 이동**하여 Xyntetik-Runner 릴리즈를 확인하거나, 다음 중 하나를 따라가세요.
<a id=
RTX 3070에서 --fit을 사용하면 GPU와 CPU를 동일하게 지정하여 로더가 총 72개 중 70개의 케이스에서 작동했으며 나머지 두 케이스에서는 한 레이어에 주의를 기울였고, 결코 낙관적이지 않았습니다 (총 6개 모델, 2개 컨텍스트 크기, 4개 캐시 포맷).
이유. 모델이 로드되지 않는다는 것을 알게 되면 보통 20GB 파일을 다운로드하고 충돌하는 것을 지켜봐야 합니다. 해결책은 파일의 처음 몇 메가바이트에 이미 적혀 있습니다. Runner는 그 부분만 읽어서 산술적인 계산으로 알려줍니다.
방법.
curl -r 0-16777215 -L -o head.gguf \
https://huggingface.co/ORG/REPO/resolve/main/MODEL.gguf
...
gpu NVIDIA GeForce RTX 3070, offload budget 6.95 GiB 현재
split f16: GPU에 40개 중 35개 레이어, RAM에 1.22 GiB | --kv q8: GPU에 40개 중 39개 레이어, RAM에 0.47 GiB | ...
verdict FITS — GPU에 40개 중 35개 레이어, 컨텍스트 크기 16384에서 남은 RAM 6.53 GiB
./runner --caps는 이 시스템과 빌드가 무엇을 실행할 수 있는지 알려주며, ./runner -m model.gguf --doctor는 모델을 로드하고 프로브(probe)하여 보고합니다.
판단 결과가 계산되는 방식
<a id="models-and-conversion"></a>
<img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/readme-section.svg" width="8" height="24" alt=""> 자신만의 모델 파일 만들기
17.99 GB의 Qwen3-30B 파일은 하나의 명령어와 한 줄짜리 계획에서 나왔습니다. 이는 공식 4비트 파일보다 작고 원본에 더 가깝습니다: 해당 파일이 94.75%의 일치도를 보이는 곳에서 99.50%의 일치도를 보입니다.
이유. 모델 파일은 거대한 숫자표이며, 일반적으로 크기를 줄이는 방식은 가장 중요한 부분까지 포함하여 모든 부분을 같은 양만큼 압축합니다. Runner는 어떤 부분을 압축할지, 어떤 부분을 선명하게 유지할지 선택할 수 있게 해주며, 그 후 결과가 원본에서 얼마나 벗어났는지 알려줍니다.
방법. 해당 파일을 구축한 계획과 명령어들:
{"default": "keep", "rules": [{"match": "_exps.weight", "type": "q4_0"}]}
./runner -m model-Q8_0.gguf --quantize out.gguf --type-plan plan.json
...
Plan 형식 및 제한 사항
<a id="long-contexts"></a>
<img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/readme-section.svg" width="8" height="24" alt=""> 동일 메모리에서 더 많은 컨텍스트 처리하기
--kv k8v4는 컨텍스트 캐시를 일반적인 바이트의 약 41%에 저장합니다. 4B부터 30B까지의 세 모델에서 각각 500개 위치에 대해 전체 크기 캐시와 100% 일치하는 결과를 보였습니다.
이유. 모델이 긴 문서를 읽을 때 지금까지의 모든 단어에 대한 메모를 유지하며, 컨텍스트가 길수록 이 메모가 사용 가능한 메모리보다 더 많이 차지할 수 있습니다. Runner는 이 메모를 더 작게 작성할 수 있습니다. 어느 부분을 볼지 결정하는 절반에는 8비트를 유지하고, 어떤 측정값이 중요한지를 보여주는 부분은 그대로 두고 나머지 절반을 4비트로 줄입니다.
방법.
./runner -m model.gguf --serve -c 32768 --kv k8v4
./runner -m model.gguf --serve -c 32768 --kv q8
--fit은 아무것도 로드하기 전에 각 설정이 사용자의 장치에서 무엇을 제공하는지 보여줍니다.
캐시 형식 및 측정 비용
<a id="designed-to-stay-on"></a>
<img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/readme-section.svg" width="8" height="24" alt=""> 메모를 되돌려주는 서버
128 GB Apple Silicon Mac에서 로드되어 유휴 상태인 63 GB 모델은 Runner 사용 시 35 MB의 전용 메모리를, llama-server 사용 시 60.8 GB를 차지합니다. 8 GB M1에서는 각각 8 MB와 3,819 MB입니다.
<p align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="site/assets/readme-idle-dark.svg">
<img src="https://raw.githubusercontent.com/Joakimpalm-Zen/xyntetik-runner/HEAD/site/assets/readme-idle-light.svg" alt="63 GB 모델 로드 및 유휴 상태의 연결된 메모리: Runner 0~40 MB 스케일에서 35 MB, llama-server는 스케일을 벗어난 60.8 GB" width="440">
</picture>
</p>