커뮤니티 기반 추론 엔진 "Strata"를 GPUSOROBAN 추론 어플라이언스로 변환하기
요약
Qwen3.8-Flash-Next와 같은 대규모 모델은 높은 리소스를 요구하여 구동이 어려웠습니다. 본문은 llama.cpp 기반의 추론 엔진 'Strata'를 소개하며, 이를 GPUSOROBAN 추론 어플라이언스에 적용하는 방법을 다룹니다. Strata는 다양한 최적화 트릭을 통해 저사양 환경에서도 대형 모델을 효율적으로 구동할 수 있게 돕습니다.
핵심 포인트
- Qwen3.8-Flash-Next는 파라미터 규모가 매우 큰 대규모 언어 모델입니다.
- Strata는 llama.cpp를 기반으로 구축된 추론 엔진입니다.
- 이 엔진은 저사양 환경에서도 대형 모델 구동을 가능하게 하는 최적화 기술을 담고 있습니다.
- 구동을 위한 최소 요구 사양이 메인 메모리 48GB, VRAM 12GB 등으로 제시되었습니다.
서론
저는 이전 글에서 Qwen3.8-Flash-Next라는 모델을 소개한 적이 있습니다.Hands-On: Qwen3.8-Flash-Next and a Glimpse into Qwen4's Design Philosophy — llama.cpp Support Status and A100 Benchmarks 이 모델은 응답 품질이 매우 뛰어나서, 제가 거의 차세대 모델에 도달했다고 말할 수 있을 정도입니다. 그 때문에 많은 사람들이 이 모델을 사용하고 싶어 합니다. 워낙 인기가 많아서 일부 사람들은 이 모델을 구하기 위해 중고 NVIDIA Tesla V100 32GB 카드를 여러 장 사 모으기도 했습니다.1

그림 1: Qwen3.8-Flash-Next의 아키텍처 다이어그램
이 모델의 파라미터 수는 125B + 51B (n-gram) + 4B (MTP) - A6B로, 상당히 큰 규모입니다. (이 중 51B n-gram 부분은 대략 27GB를 차지하며 메인 메모리가 부족합니다.) 제가 직접 평가했을 때 제 환경으로는 전혀 처리할 수 없었기 때문에, 저는 Highreso에서 NVIDIA A100을 장착한 컴퓨터를 빌려 평가를 진행했습니다. 그러던 중, 지난 10월 초쯤에 이 모델을 훨씬 적은 리소스로도 빠르고 구동할 수 있다는 소식을 들었습니다.
제 첫 반응은 "말도 안 돼, 이건 속도를 과장하는 트릭일 거야"였지만...
제가 이번에 소개하려는 것은 실제로 이를 구현해내는 추론 엔진인 Strata입니다.
이 글 읽는 방법
이 글은 크게 두 부분으로 나뉩니다. 첫째, Strata가 어떻게 작동하는지에 대한 설명과 GPUSOROBAN에 설정하는 단계, 둘째, KV/Expert 캐시 동작을 다룬 측정 결과입니다. 순서대로 읽고 싶다면 계속 진행하시면 됩니다. 단순히 수치만 알고 싶다면 "실제로 사용하는 것은 어떤지?" 부분으로 건너뛰셔도 좋습니다.
Strata 소개
Strata는 llama.cpp를 기반으로 구축된 추론 엔진이며, Qwen3.8-Flash-Next의 양자화된 버전을 저사양 환경(low-resource environments)에서 실행할 수 있도록 다양한 트릭이 담겨 있습니다. 이 엔진은 기본적으로 llama.cpp와 동일한 인터페이스를 노출할 수 있으며 GGUF 파일로부터 모델을 구동합니다. 최소한의 설정 요구 사항은 다음과 같습니다:
-
최소 48GB의 여유 메인 메모리(main memory)
-
최소 12GB의 여유 VRAM
-
최소 100GB의 SSD 공간
— 이 정도만 갖추면 놀랍게도 Qwen3.8-Flash-Next를 구동할 수 있습니다.
이 엔진은 Niko Veit (https://x.com/coldniko)에 의해 개발되었으며, 자원봉사자 그룹과 함께 구축되었습니다. 현재 작성 시점 기준으로 최신 버전은 v0.2.2입니다.
이 엔진에 내장된 각 아이디어들을 설명해 드리겠습니다.
3단계 리소스 구조 (The 3-Tier Resource Structure)
Strata는 모든 것을 GPU에 배치하는 대신, Qwen3.8-Flash-Next의 MoE(Mixture of Experts) 아키텍처와 n-gram 임베딩(Embedding)을 최대한 활용하도록 설계된 3단계 구조로 리소스를 분산합니다.

그림 2: 3단계 리소스 계층 구조
절대적으로 필요한 부분만 GPU에 고정시키고, 나머지 공유되지 않는 모든 Expert는 메인 메모리에 배치됩니다. 자주 사용되는 Expert는 필요에 따라 'Expert Cache'로 끌어와지므로, 가장 빈번하게 사용되는 Expert들만이 빠른 단계(fast tier)를 차지하게 됩니다.
KV 캐시(Cache) 역시 마찬가지로 두 단계에 걸쳐 분할됩니다.
컨텍스트 길이를 더욱 효율적으로 활용하기 위해 Strata는 v0.1.40부터 Elastic KV 접근 방식(--kv-grow)을 채택했습니다. 이전에는 KV 캐시가 고정 크기였으며, 필요할 때 오버플로우되면 고정된 호스트 메모리(pinned host memory)로 대체되었습니다. Elastic KV를 사용하면서 메커니즘이 변경되어, 필요한 경우 콜드 Expert Cache에서 KV 캐시로 메모리를 먼저 전달할 수 있게 되었고, 이를 통해 더 긴 컨텍스트 크기가 요청되더라도 빠르게 응답을 유지할 수 있습니다.
Qwen3.8-Flash-Next가 원래 주 메모리(main memory)에 보관하던 n-gram Retriever는 대신 SSD로 이동합니다. 이는 일종의 측면에서 PLE의 원래 의도된 사용 사례와 더 가깝습니다. 또한 해당 데이터가 GGUF 파일에서 직접 읽기 때문에, 자원 제약 환경에서 진정으로 유용한 개선점인 SSD 오버헤드를 추가하는 것을 방지하도록 설계되었습니다.
llama.cpp 래퍼를 넘어선 엔진
Strata가 구동되는 엔진은 ggml-org/llama.cpp를 기반으로 구축되었지만, 실제로는 MoE 오프로딩(MoE offloading), 추측 디코딩(speculative decoding), 사용자 정의 커널(custom kernels)과 같은 기능을 위해 상당한 맞춤형 구현을 추가하는 하이브리드 엔진이자 파생 엔진입니다.
자동 튜닝
설치 과정이 끝날 때, Strata는 자동 튜닝을 실행하여 사용자의 환경에 대해 합리적으로 최적화된 매개변수(parameter)를 설정합니다. 이는 설치 후 수동으로 매개변수를 미세 조정할 필요 없이 안정적인 성능을 얻을 수 있음을 의미하며, 설정부터 운영까지 걸리는 시간을 단축시켜 줍니다.
MTP가 기본 활성화됨
생성 속도를 높이는 방법 중 하나로, MTP(추측 토큰 예측, speculative token prediction) 기능이 기본적으로 활성화되어 있습니다. 이는 특히 다중 턴 시나리오에서 매우 빠른 토큰 생성을 가능하게 하여, 제한된 시간 안에 더 많은 추론 작업을 처리할 수 있게 합니다.
SSD에 걸리는 부하는 거의 전적으로 읽기 부하입니다.
스트라타(Strata) 역시 SSD를 사용하기 때문에, SSD 캐시 같은 것이 과도한 재기록으로 인해 NAND를 마모시킬까 봐 처음에 걱정했습니다. 하지만 실제로는 그 공간 대부분을 차지하는 것은 n-gram 임베딩(n-gram Embedding)입니다. n-gram 임베딩을 구성하는 데이터는 정적인 지식 데이터이므로 재기록되지 않고 필요할 때 읽히기만 합니다.
따라서 스트라타로 인해 SSD가 급격하게 성능 저하되어 사용할 수 없게 될 위험은 매우 낮을 것으로 예상됩니다.
GPUSOROBAN이 완벽하게 적합하다
GPUSOROBAN은 일본에 기반을 둔 GPU 클라우드로, 개인도 접근 가능한 가격대의 GPU 리소스를 제공합니다. 여기서 제가 살펴보고 있는 사용하기 쉬운 리소스는 NVIDIA RTX A4000이 장착된 인스턴스입니다.
이 리소스는 시간당 50엔(약 $0.32/시간)의 컨테이너 기반 인스턴스로 운영되며, 저는 이 환경에서 격리된 테스트를 수행하거나, 나중에 Intel ARC Pro B70을 직접 구매하기 전까지 RTX 3060으로는 처리할 수 없는 모델들을 평가하는 용도로 자주 사용했습니다.
| 항목 | 사양 |
|---|---|
| 사용된 인스턴스 유형 | s16-1-a-standard-ubs24-v |
| ... | |
| 표 1: GPUSOROBAN NVIDIA RTX A4000 인스턴스 사양 |
스트라타를 평가하려던 참에 이 머신의 사양을 보았고, 그것이 스트라타가 필요로 하는 것과 거의 완벽하게 일치한다는 것을 발견했습니다. 그래서 이 GPUSOROBAN RTX A4000 인스턴스를 Qwen3.8-Flash-Next를 실행하는 적절한 어플라이언스로 만들 수 있을지 확인해 보기로 했습니다.
GPUSOROBAN 인스턴스에 스트라타 설정하기
본 글은 전체적으로 리눅스(Linux) 환경을 가정합니다.
GPUSOROBAN 사용하기
GPUSOROBAN 계정을 등록하려면 아래 링크를 참조하십시오.
https://soroban.highreso.jp/article/article-001
대략적인 흐름은 다음과 같습니다. 각 단계는 자세히 설명되어 있으니, 가입할 때 따라 해 보는 것이 좋습니다.
- 멤버 등록(Member registration)
- 전화번호 인증(Phone number verification)
- 신용카드 등록(Credit card registration)
- 인스턴스 연결까지의 흐름(The flow up to connecting to an instance)
- 인스턴스 생성(Creating an instance)
- 개인 키 설정(Setting up your private key)
- 액세스 서버용 개인 키 설정(Setting up the private key for the access server)
- 웹 콘솔에서 인스턴스 연결(Connecting to the instance from the web console)
- 터미널에서 인스턴스 연결(Connecting to the instance from a terminal)
터미널에서 연결할 때는 다음과 같은 설정을 가진 config 파일을 .ssh 디렉터리에 생성하는 것이 편리합니다.
Host a4000-instance
Hostname <제공받은 IP 주소>
Port 22
...
이렇게 설정해 두면, 한 번 세팅한 후에는 로그인하는 것이 다음과 같이 간단합니다:
ssh a4000-instance
— 또한 유휴 시간 초과(idle timeouts) 문제도 해결됩니다. 나중에 유용하게 사용될 수 있도록 Strata 서비스를 SSH를 통해 포워딩하도록 자동으로 구성됩니다.
Strata 확보 및 설치 (Obtaining and Installing Strata)
이제 Strata를 설치할 시간입니다.
다음 명령어를 사용하여 설치 스크립트를 실행하는 것부터 시작합니다.
curl -fsSL https://github.com/Niko1221/Strata/releases/latest/download/install.sh | sh
이렇게 하면 다음 내용이 출력되며, 설정 준비가 완료됩니다.
https://github.com/Niko1221/Strata/releases/latest/download/install.sh | sh
Strata Terminal installer
This computer: Linux x86_64 (linux-x86_64), graphics: NVIDIA NVIDIA RTX A4000
...
안내에 따라 다음 명령어를 실행하여 Strata TUI 화면을 시작합니다.
$ /home/user/.local/bin/strata launch
이것은 Strata TUI를 실행하며, 새롭게 설정할지 아니면 기존 모델에서 시작할지 묻습니다. 여기서는 "Set up from the beginning"을 선택합니다.
다음으로 모델을 선택합니다.
다운로드(Download) 열은 모델 파일의 크기를 보여주고, Needs는 메인 메모리(main memory)와 VRAM이 결합된 요구 사항을 나타냅니다. 이를 통해 오른쪽의 "이 컴퓨터에서(On this computer)" 열을 보고 해당 모델이 이 장치에 적합한지 알 수 있습니다.
저는 Qwen3.8-Flash-Next IQ3_XXS 모델을 선택했습니다. Unsloth와 Gyro 모델도 선택할 수 있습니다.
Qwen3.8-Flash-Next로 배포된 모델 중, IQ2_XS, IQ3_XXS, 그리고 IQ3_S 변형 모델들은 ISTA가 개발한 Qwen3.8-Flash-Next-RCO-GSQ라는 양자화 형식(quantization format)을 사용하는데, 이는 양자화 수준에 비해 매우 높은 품질을 유지합니다. 이 모델들은 실제 환경에서 충분히 잘 작동해야 하므로, 여유 리소스 헤드룸이 많지 않다면 더 나은 선택일 수 있습니다.
다음으로, 모델 데이터와 임시 캐시된 Expert 데이터를 위한 저장 경로를 지정합니다. 기본적으로 홈 디렉토리 바로 아래에 Strata-data라는 디렉토리가 생성되어 사용됩니다.
다음으로, 모델의 최대 컨텍스트 크기(maximum context size)를 지정합니다. 저는 이를 128k로 설정했습니다. 256k는 메모리 사용량을 너무 많이 증가시킬 것 같아 선택하지 않았지만, 선택은 가능합니다.
이보다 더 큰 컨텍스트 크기를 사용하려면 현재 별도의 RoPE(Rotary Position Embedding) 튜닝이 필요하며 실험적인 기능으로 간주됩니다.
이미지 인코더(image encoder) 활성화 여부를 선택합니다. 저는 이번에 '예(Yes)'를 선택했기 때문에 이미지 인코더가 실행됩니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기


