MoMoE: a fork of Strata for more MoE models, on one GPU + system RAM (Linux/NVIDIA, Apple Silicon)
MoMoE: GPU와 시스템 RAM으로 더 많은 MoE 모델을 실행하는 Strata 포크
MoMoE는 Strata 기반 엔진과 자체 CUDA·Metal 엔진을 묶어 GPU 메모리에 다 담기 어려운 여러 MoE 모델을 실행하는 오픈소스 프로젝트입니다. 일부 모델은 llama.cpp보다 빠르지만, GPU에 모델이 들어가는 경우에는 성능이 비슷하거나 llama.cpp가 앞서기도 합니다.
- 주제
에디터 노트
MoMoE의 성능 이점은 GPU에 모델 전문가가 다 들어가지 않는 환경에서 두드러집니다. RTX 4070 Ti의 Ornith-122B와 Flash-Next 비교는 그 조건에서 큰 차이를 보이지만, Flint와 LFM2.5처럼 llama.cpp가 앞서는 결과도 함께 공개했습니다. MTP 적용 여부와 컨텍스트 크기에 따라 수치가 달라지므로 표의 최고 속도만으로 일반적인 우위를 말하기는 어렵습니다. 댓글에서는 기능 중복과 포크 난립을 걱정하는 의견이 나왔고, Strata의 많은 이슈와 풀 리퀘스트가 협업을 어렵게 만든다는 반론도 있었습니다. 개발자는 다른 포크를 뒤늦게 알았다고 밝혔습니다. 이 프로젝트는 지원 기기와 모델을 넓히는 실험으로는 구체적인 측정 자료를 제공하지만, 한 사람이 제한된 장비에서 개발하는 초기 단계입니다. Strata의 기반 코드와 자체 엔진을 구분하고 지원 범위를 확인하는 것이 실사용 판단에 직접 관련됩니다.
AI 요약
MoMoE는 Strata를 포크해 Linux/NVIDIA와 Apple Silicon에서 다양한 Mixture-of-Experts(MoE) 모델을 실행하는 프로젝트입니다. Strata 엔진을 확장하고 ggml 기반 CUDA·Metal 엔진을 추가했으며, 모델 전문가를 GPU 메모리와 시스템 RAM, SSD에 배치합니다. RTX 4070 Ti에서 Ornith-1.5-122B-A10B는 19.2 tok/s로 llama.cpp의 4.62 tok/s보다 빨랐고, Qwen3.8-Flash-Next도 65.5~76.7 tok/s로 23.1 tok/s를 기록했습니다. 다만 모델이 메모리에 들어가면 두 구현은 대체로 비슷하고, 일부 구성에서는 llama.cpp가 앞섭니다. 프로젝트는 초기 단계이며 개발자 한 명이 관리하고, 측정은 작성자가 보유한 기기에서 이뤄졌습니다.
구성과 실행 방식
MoMoE는 Strata 엔진과 자체 CUDA·Metal 엔진을 함께 제공합니다. Strata 엔진은 Linux/NVIDIA에서 Qwen3.8-Flash-Next와 Qwen3.6 계열을 실행하고, 자체 엔진은 Linux/NVIDIA와 Apple Silicon에서 더 다양한 모델을 지원합니다. 모델 전문가를 VRAM, 시스템 RAM, SSD에 나눠 두며, 기기와 모델에 따라 SSD에서 읽거나 RAM에서 복사하거나 GPU 작업과 함께 CPU로 계산합니다. 설정 명령은 기기에 맞는 모델 크기를 고르고 엔진을 컴파일한 뒤 모델을 내려받아 서버를 시작합니다. 서버 주소는 기본적으로 http://127.0.0.1:8080/v1이며 OpenAI 또는 Anthropic 호환 앱에서 사용할 수 있습니다. Claude Code, Codex, OpenCode, Unsloth Studio, LM Studio를 연결하는 명령도 제공합니다.
자체 엔진은 GGUF 모델을 읽고 GPU에 들어가는 전문가를 풀(pool)에 올립니다. NVIDIA에서는 CUDA graphs로 계산 그래프를 재사용하고, 두 장의 GPU를 레이어 분할이나 보조 전문가 캐시로 함께 쓸 수 있습니다. 예를 들어 RTX 4070 Ti와 RTX 3060을 보조 캐시 구성으로 묶으면 Flash-Next 실행 시 시스템 메모리 여유가 2.1GB에서 11.8GB로 늘었고, 짧은 대화 생성 속도는 58.2~55.9 tok/s에서 59.7 tok/s로 측정됐습니다. 긴 프롬프트 읽기는 2,130에서 1,813 tok/s로 느려졌습니다. Qwen3.6 계열도 두 GPU를 지원하도록 추가했지만, 한 장에 전문가 대부분이 들어가는 구성에서는 이득이 제한적일 수 있습니다.
성능과 측정 조건
작성자는 Debian 12의 RTX 4070 Ti 12GB와 RAM 63GB, DGX Spark의 공유 메모리 128GB, Jetson Orin Nano, M1 Ultra, M4 Air, 8GB M1 Mac mini에서 시험했습니다. 모델별 설정으로 짧은 프롬프트를 사용한 생성 속도 표에는 Qwen3.6-35B-A3B가 RTX 4070 Ti에서 158.7 tok/s, Ornith-1.5-35B-A3B가 128.8 tok/s로 나옵니다. 긴 대화에서는 컨텍스트가 커질수록 속도가 떨어집니다. 예를 들어 PC에서 Ornith-1.5-35B는 32K 설정에서 128.8 tok/s, 256K 설정에서 99.0 tok/s였습니다. 256K 설정으로 Claude Code를 사용할 때는 대화 길이 40K 토큰에서 약 85 tok/s, 100K 토큰에서 55~60 tok/s를 기록했습니다.
llama.cpp와 비교한 수치는 모델이 GPU에 다 들어가지 않는 경우 MoMoE가 앞서는 사례를 보여줍니다. RTX 4070 Ti에서 Qwen3.8-Flash-Next IQ3_XXS는 MoMoE 65.5~76.7 tok/s, llama.cpp 23.1 tok/s였고, Ornith-1.5-35B-A3B는 131.6~153.5 대 77.8 tok/s였습니다. Ornith-1.5-122B-A10B는 19.2 대 4.62 tok/s였습니다. 일부 MoMoE 수치에는 모델의 multi-token prediction(MTP) 초안 생성이 포함되며, 비교 시 양쪽에 같은 MTP를 적용한 경우도 별도로 표시합니다. 반면 Flint IQ3_XXS와 LFM2.5-24B-A2B는 RTX 4070 Ti에서 llama.cpp가 더 빨랐고, LFM2.5-8B-A1B는 거의 같았습니다. 모델이 메모리에 들어가는 환경에서도 대체로 두 구현이 비슷했습니다.
원문은 속도 개선의 원인으로 CPU가 GPU와 동시에 누락된 전문가를 계산하는 방식, 그래프 재사용, Mac에서 GPU 작업이 낮은 클럭으로 멈추지 않게 하는 대기 스레드 등을 듭니다. PC의 Ornith-122B에서는 CPU 계산 방식이 전문가를 PCIe로 복사하는 방식보다 11.4에서 19.2 tok/s로 빨랐다고 보고합니다. 결과는 짧은 테스트와 작성자가 보유한 기기에서 얻은 값이며, 긴 컨텍스트에서는 메모리 여유와 주의(attention) 계산 비용이 성능에 영향을 줍니다. Windows와 AMD·Intel GPU 지원을 목표로 하지 않으며, 해당 환경에는 더 넓게 시험된 Strata를 권합니다.
Reddit 반응
- @Mahakali923 — 다들 더 많은 기능을 지원하는 큰 저장소 하나를 만들고 협력해야 합니다. 별 수를 얻으려고 계속 포크를 만드는 대신에요.
- @Alternative-Pea-2204 — 전적으로 동의합니다. Strata에 보낸 풀 리퀘스트가 받아들여지지 않으면서 시작했습니다. 받아들이지 않았다고 탓하는 건 아닙니다. Strata에는 하루에도 풀 리퀘스트가 수백 개씩 올라옵니다. 저는 제 방식대로 하고 싶었고, Strata 엔진은 훌륭합니다. 웹 채팅 대신 제가 쓰던 Claude Code와 Unsloth Studio를 연결하고 싶었고 더 많은 모델도 시험하고 싶었습니다.
- @fintip — 읽어도 이게 뭔지 모르겠습니다. Strata를 수정해서 기존에 지원하지 않던 모델을 실행하는 건가요?
- @Alternative-Pea-2204 — 맞기도 하고 아니기도 합니다. Strata 엔진은 Qwen3.5 지원을 확장했고, 다른 모델과 Metal 지원을 위해 엔진 두 개를 추가했습니다. 요점은 더 많은 MoE 모델을 지원한다는 것입니다.
- @sapphicsandwich — 왜 GPU 한 장으로 제한하나요?
- @Alternative-Pea-2204 — 특정 모델 계열 하나를 제외하면 제한이 없었고, 그 문제도 이제 수정했습니다. Qwen3.6 계열도 두 장의 GPU에서 실행할 수 있습니다. 다만 한 장의 12GB 카드에 전문가 대부분이 들어가므로 보조 캐시를 써도 시스템 RAM을 아끼는 대신 프롬프트 처리가 느려질 수 있습니다.
- @Alternative-Pea-2204 — GPU 메모리가 전문가와 컨텍스트를 담을 만큼은 되지만 모델 전체를 담지는 못하는 환경이 적합합니다. VRAM이 충분하면 llama.cpp를 쓰는 편이 좋습니다. 그렇지 않으면 MoMoE가 도움이 될 수 있습니다.
- @bitzap_sr — 또 포크라니 답답합니다. 왜 upstream에 기여하지 않고 계속 포크하나요?
- @lukyjay — Strata가 얼마나 많은 풀 리퀘스트를 받는지 봤나요? 최근 30일 활동을 기준으로 연간 약 5천 개의 풀 리퀘스트와 1만8천 개의 이슈가 올라옵니다. 그런 프로젝트에 기여하기는 어렵습니다. Strata 자체도 llama.cpp에 올린 풀 리퀘스트에서 시작했습니다.
- @reyzafany — VRAM 6GB와 DDR4 시스템 메모리 16GB로 어떤 MoE 모델을 실행할 수 있나요?
- @Alternative-Pea-2204 — LFM2.5-8B-A1B는 IQ3_XXS가 3.3GB, Q4_K_XL이 5.4GB라 6GB 안에 들어갑니다. LFM2.5-24B-A2B IQ3_XXS는 약 7.5GB라 조금 무리한 선택일 수 있지만 쓸 만할 수도 있습니다.
- @pmttyji — PolyStrata를 정기적으로 쓰는 사람이 많습니다. 이 저장소가 Strata의 최신 기능을 따라가나요?
- @Alternative-Pea-2204 — PolyStrata를 미처 몰랐습니다. 살펴봐야겠습니다.
원문: GitHub / 번역·요약: Trawling