[릴리스] Drex Max v1: Open-weight 27B 멀티모달 의사결정 모델, 262K 컨텍스트, Apple Silicon 로컬 추론
요약
Nace.AI가 오픈 소스 27B 멀티모달 의사결정 모델인 Drex-Max v1을 공개했습니다. 이 모델은 토큰 생성 대신 단일 순방향 패스를 통해 여러 후보 옵션에 대한 확률 분포를 반환하는 것이 특징입니다. 최대 262K 컨텍스트와 고해상도 비전 입력을 지원하며, Apple Silicon(Metal) 및 NVIDIA GPU 환경에서 구동 가능합니다.
핵심 포인트
- 생성 대신 확률 분포 출력: 토큰 생성 없이 단일 순방향 패스로 옵션별 확률 반환.
- 대용량 컨텍스트/비전 지원: 최대 262K 토큰 및 고해상도 이미지 처리가 가능함.
- 하이브리드 아키텍처: 48개 Gated DeltaNet과 전체 어텐션 레이어가 결합된 구조를 가짐.
- 다양한 환경 구동: Apple Silicon(Metal) 및 CUDA/NVIDIA GPU에서 실행 가능하며 성능이 개선됨.
안녕하세요, llama 사용자 여러분. 저희가 Nace.AI에서 Drex-Max v1을 오픈 소스화했습니다. 이것은 Open RAIL-M 하에 공개된 밀집(dense) 27B 멀티모달 의사결정 모델입니다.
일반적인 LLM과 가장 큰 차이점은 무언가를 생성하지 않는다는 것입니다. 토큰도 없고 파싱할 JSON도 없습니다. 사용자에게 컨텍스트 상태(텍스트, JSON, 고해상도 이미지)와 하나 이상의 명명된 질문을 제공하면, 255가지 옵션의 readout head가 단일 순방향 패스(single forward pass)에서 모든 후보 답변에 대한 확률을 반환합니다.
이 모델은 Python을 통해 NVIDIA GPU에서 실행되며, 저희의 llama.cpp와 Ollama 포크를 통해 Apple Silicon (Metal) 및 CPU에서도 실행됩니다. 지연 시간(latency)은 약 400ms입니다.
아키텍처 참고 사항: 디코드 루프가 없습니다. 단일 순방향 패스만으로 마지막 은닉 상태(last hidden state)가 최대 255개 옵션에 대한 확률로 직접 매핑됩니다 (readout.safetensors를 통해). 64 레이어 하이브리드 백본 구조입니다. 48개의 Gated DeltaNet 선형 어텐션 레이어(인과적, 왼쪽에서 오른쪽)와 16개의 전체 어텐션 레이어가 있으며, 이는 4번째 레이어마다 하나씩 배치됩니다. 전체 어텐션 레이어는 양방향(bidirectional)이므로 모든 토큰이 전체 컨텍스트를 볼 수 있습니다.
컨텍스트는 기본값으로 16,384 토큰입니다. DREX_MAX_CONTEXT=N 또는 --max-length N을 사용하여 이를 262,144까지 확장할 수 있습니다. 비전(Vision)은 이미지당 최대 4,194,304 픽셀을 지원합니다. 각 이미지는 한 번 인코딩되며 배치 내 모든 질문에서 공유됩니다.
구조화된 의사결정 작업에 대한 벤치마크 결과는 이전의 더 크고 큰 Drex v2.0 (35B)보다 우수합니다:
| Model Params | Public Decision Index | Raw Tools Retrieval | Language Knowledge & Reasoning | |
|---|---|---|---|---|
| Drex-Max v1 | 27B | 67.52 | 75.4 | 81.9 |
| Drex v2.0 | 35B | 61.25 | 70.5 | 76.5 |
| Jev | 1.13.0 | — | 57.96 | 68.5 |
Decision Bench v4: 94.30% (1,010/1,071)
JevBench: 92.2% (213/231)
Public Vision Index는 73.92점이며, 전체 점수는 다음과 같습니다: InfographicVQA 97.3, KIE (CORD+FUNSD) 92.4, Winoground 85.0, Mind2Web 84.2, CharXiv 80.5, CV-Bench 77.4, RealWorldQA 72.3.
하드웨어: Apple Silicon (Metal / GGUF): Q8_0 GGUF는 약 27.25 GB입니다. 48 GB 통합 메모리를 가진 M5 Pro에서 결정당 약 400ms가 소요되며, 확률은 H100의 양자화되지 않은 bf16 값과 0.02 이내로 유지됩니다.
CUDA, bf16: 약 48.6 GiB VRAM (H100 80GB에서 테스트).
CUDA의 경우, 8비트 (--8bit) 모드를 사용하면 약 25.9 GiB의 VRAM이 필요합니다 (L40S 48GB에서 테스트됨). 이는 bf16 대비 오차 범위가 0.03 이내임을 의미합니다.
1. Python SDK (CUDA, Vision 포함)
hf download nace-ai/drex-max-v1 --local-dir weights/drex-max-v1를 실행한 후, pip install -r models/drex-max-v1/requirements.txt로 라이브러리를 설치합니다.
from drex_max.model import DecisionModel, answer
model = DecisionModel("weights/drex-max-v1") # 약 26GB VRAM 모드에 --8bit 추가
question = { "type": "choice", "instructions": "Which team should handle this ticket?", "criteria": { "billing": "Payments, charges, and refunds", "technical": "Bugs and outages", "other": "Anything else" } }
row = { "state": {"ticket": "I was charged twice for the same order. Please refund the extra payment."}, "question": question, # "images": ["receipt.jpg"] # 최대 4.2M 픽셀 지원 }
print(answer(question, model.predict([row])[0]))
출력 결과는 다음과 같은 형태를 보입니다:
{ "answers": { "team": { "type": "choice", "choice": "billing", "confidence": 0.9982, "probabilities": { "billing": 0.9988, "technical": 0.0003, "other": 0.0009 } } }
2. llama.cpp 포크 (Apple Silicon / Metal)
텍스트 백본은 Metal을 기반으로 하며 /v1/systemone 엔드포인트를 제공합니다:
git clone --branch drex-max-v1 --single-branch https://github.com/nace-ai/llama.cpp.git
cmake -S llama.cpp -B llama.cpp/build
cmake --build llama.cpp/build -j --target llama-server
사전 양자화된 GGUF 또는 변환된 Q8_0 파일을 사용하여 서버를 구동합니다:
llama.cpp/build/bin/llama-server -m weights/drex-max-v1-Q8_0.gguf \ -np 1 -c 16384 -b 16384 -ub 16384 --no-warmup --port 8000
주의: Drex는 전체 프롬프트를 단일 비인과적 상태(non-causal state)로 처리하므로, -b와 -ub 값은 반드시 -c 값과 일치해야 합니다.
3. Ollama 포크
FROM ./drex-max-v1-Q8_0.gguf
CAPABILITY decision
PARAMETER num_ctx 16384
PARAMETER num_gpu 40
drex-max-v1 Ollama 브랜치에서 데몬을 시작하고 /v1/systemone으로 POST 요청을 보냅니다.
가중치 및 readout safetensors 링크: nace-ai/drex-max-v1 GGUF (Q8_0): nace-ai/drex-max-v1-Q8_0 llama.cpp / Ollama 포크(forks): Nace.AI 레포지토리의 drex-max-v1 브랜치 라이선스: Nace.AI Open RAIL-M
저희는 이를 저지연(low-latency) 라우팅, 에이전트형 도구 선택(agentic tool selection), 그리고 멀티모달 UI 자동화(Mind2Web 스타일 작업)를 위해 구축했습니다. 생성 단계가 없기 때문에, 일반적으로 발생하는 비결정적(non-deterministic) 출력이나 수정해야 하는 깨진 JSON을 얻지 못합니다. 질문에 기꺼이 답변드리겠습니다 :) 제출자: /u/m4rkGS [링크] [댓글]
AI 자동 생성 콘텐츠
본 콘텐츠는 Reddit AI Engineering의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기