본문으로 건너뛰기
피드

antirez가 만든 DeepSeek V4 Flash 전용 로컬 추론 엔진 ds4

open-source 약 9분

Redis 창시자 antirez가 DeepSeek V4 Flash를 로컬에서 돌리기 위한 전용 추론 엔진 ds4를 공개했다. 범용 GGUF 러너가 아니라 Metal·CUDA 경로, 압축 KV 캐시, OpenAI·Anthropic 호환 서버, 도구 호출 재현까지 DeepSeek V4 Flash 하나에 맞춰 끝까지 다듬는 접근이다.

  • 1

    ds4는 DeepSeek V4 Flash 전용 로컬 추론 엔진으로, 범용 런타임이나 프레임워크가 아님

  • 2

    2비트 양자화와 압축 KV 캐시를 활용해 96GB 또는 128GB 메모리급 맥에서도 장문 컨텍스트 실행을 노림

  • 3

    OpenAI·Anthropic 호환 API, 도구 호출 재현, 디스크 KV 캐시까지 로컬 코딩 에이전트 사용을 염두에 둠

  • Redis 만든 antirez가 DeepSeek V4 Flash 전용 로컬 추론 엔진 ds4를 공개함

    • 프로젝트 이름은 DrawfStar 4이고, 코드는 GitHub에 올라와 있음
    • 범용 GGUF 러너도 아니고, 다른 런타임 래퍼도 아니고, 프레임워크도 아님
    • 목표는 딱 하나임. DeepSeek V4 Flash를 로컬 고사양 머신에서 “그럭저럭 실행”이 아니라 “에이전트까지 붙여 쓸 만하게” 만드는 것
  • 왜 굳이 DeepSeek V4 Flash 하나에 꽂혔냐면, 작성자는 이 모델이 로컬 추론용으로 특이하게 좋다고 봄

    • 활성 파라미터가 적어서 더 빠르다고 설명함
    • thinking mode에서도 생각 구간이 다른 모델보다 훨씬 짧고, 많은 경우 1/5 수준이라고 주장함
    • 컨텍스트 윈도는 100만 토큰
    • 284B 파라미터급이라 27B·35B급 dense 모델보다 지식 범위가 넓고, 영어와 이탈리아어 품질도 “준 프론티어 모델”처럼 느껴진다고 평가함

중요

> ds4의 핵심 베팅은 “범용 엔진”이 아니라 “한 모델을 공식 logits 검증, 장문 컨텍스트, 에이전트 호환까지 끝까지 맞춘다”는 쪽임. 로컬 LLM이 단순 데모를 넘어 실사용 도구가 되려면 이 차이가 꽤 큼.

  • 하드웨어 타깃도 명확함. 96GB·128GB 메모리급 맥북이나 Mac Studio, 또는 로컬 CUDA 머신임

    • 2비트 양자화 모델은 128GB RAM 맥북에서 돌릴 수 있고, 사용자 제보로는 96GB에서도 25만 토큰 컨텍스트까지 돌아간 사례가 있다고 함
    • 4비트 양자화는 256GB 이상 메모리급 머신을 권장함
    • 전체 100만 토큰 컨텍스트는 압축 인덱서만 약 22GB, 전체로는 약 26GB 메모리를 더 먹는다고 설명함
  • 2비트 양자화가 꽤 공격적인데, 무작정 다 줄이는 방식은 아님

    • routed MoE 전문가 부분만 양자화함
    • up/gate는 IQ2_XXS, down은 Q2_K를 쓰고, shared experts·projection·routing 같은 부분은 품질 보존을 위해 그대로 둠
    • 작성자는 이 2비트 quant가 농담 수준이 아니라 코딩 에이전트에서 도구 호출도 안정적으로 된다고 주장함
  • KV cache를 디스크에 올리는 관점이 이 프로젝트의 큰 포인트임

    • 보통 긴 컨텍스트 LLM에서 KV cache는 RAM을 잡아먹는 골칫거리인데, ds4는 DeepSeek V4의 압축 KV와 최신 SSD를 전제로 “KV cache는 디스크의 1급 시민”이라고 봄
    • 서버 실행 예시는 --kv-disk-dir /tmp/ds4-kv --kv-disk-space-mb 8192처럼 디스크 캐시를 켜는 흐름을 기본 사용법처럼 제시함
    • 캐시 파일은 렌더링된 프롬프트 prefix의 SHA1을 키로 쓰고, 토큰 ID와 그래프 상태까지 함께 저장함
sequenceDiagram
    participant 클라이언트
    participant 서버
    participant 렌더러
    participant 캐시
    participant 모델
    클라이언트->>서버: 대화 기록과 도구 결과 전송
    서버->>렌더러: OpenAI/Anthropic 형식 렌더링 요청
    렌더러->>캐시: 저장된 prefix와 도구 ID 조회
    캐시-->>렌더러: KV 체크포인트와 DSML 원문 반환
    렌더러->>모델: byte-for-byte로 맞춘 프롬프트 전달
    모델-->>서버: 이어서 생성 또는 도구 호출 반환
  • ds4-server는 로컬 에이전트 붙이는 걸 꽤 진지하게 다룸

    • OpenAI 호환 엔드포인트로 /v1/chat/completions, /v1/completions, /v1/models를 제공함
    • Anthropic 호환 /v1/messages도 제공해서 Claude Code류 클라이언트 연결을 염두에 둠
    • SSE streaming, thinking stream, tool call streaming까지 지원한다고 되어 있음
  • 도구 호출 처리에서 가장 집요한 부분은 “정확한 재현”임

    • DeepSeek V4 Flash는 도구 호출을 DSML 텍스트로 내보냄
    • 그런데 에이전트 클라이언트는 다음 요청에서 그 텍스트를 그대로 돌려주는 게 아니라 OpenAI·Anthropic JSON 객체로 정규화해서 보냄
    • 서버가 이 JSON을 조금이라도 다르게 렌더링하면 기존 KV checkpoint의 byte prefix와 어긋나고, 결국 긴 prefix를 처음부터 다시 prefill해야 함
  • 그래서 ds4-server는 tool id -> 모델이 실제 샘플링한 DSML block을 기억함

    • 도구 호출마다 추측 불가능한 API tool ID를 붙임
    • 다음 요청에서 같은 ID가 오면 JSON을 새로 포맷하지 않고, 예전에 모델이 뱉은 DSML 바이트를 그대로 재사용함
    • 이 맵은 메모리에만 있는 게 아니라 KV cache 파일에도 저장될 수 있어서 서버 재시작 뒤에도 재현 가능성을 높임

💡

> 로컬 코딩 에이전트에 붙일 거면 --kv-disk-dir를 켜는 게 사실상 필수에 가까움. Claude Code 같은 도구가 초기 프롬프트로 2만5000 토큰 안팎을 보내면, 첫 prefill 비용을 디스크 KV cache로 재사용하는 차이가 크게 남.

  • 빌드 경로는 macOS Metal과 Linux CUDA가 메인이고, CPU는 디버그·정확성 확인용임

    • macOS는 make로 Metal 빌드
    • Linux CUDA는 make cuda-spark 또는 make cuda-generic
    • CPU-only는 make cpu지만, macOS CPU 경로는 현재 가상 메모리 버그로 커널 크래시가 날 수 있다고 경고함. 표현이 꽤 antirez답게 거칠다
  • 테스트와 검증도 “공식 구현과 맞는가” 쪽에 초점을 둠

    • 공식 DeepSeek V4 Flash API에서 얻은 continuation vector와 로컬 결과를 비교함
    • greedy decoding, thinking disabled, top logprobs를 이용해 토큰 바이트 단위 회귀를 잡음
    • make test, ./ds4_test --logprob-vectors, ./ds4_test --server 같은 C runner 기반 테스트가 있음
  • 이 프로젝트는 alpha 품질이라고 분명히 선을 긋고 있음

    • 공개된 지 며칠 안 된 코드이고, 안정화까지는 몇 달 걸릴 수 있다고 말함
    • 문제가 생기면 --trace로 세션 로그를 남겨 이슈에 포함하라고 안내함
    • 그래도 방향은 선명함. “새 모델이 나올 때마다 따라가는 로컬 추론”이 아니라, “한 모델을 로컬에서 완성된 제품처럼 쓰게 만들기”임

기술 맥락

  • ds4가 범용 GGUF 러너를 포기한 이유는 검증 범위를 좁히기 위해서예요. 아무 모델이나 읽게 만들면 기능은 넓어지지만, long context와 tool calling, logits 검증까지 끝까지 맞추기가 훨씬 어려워지거든요.

  • KV cache를 디스크에 저장하는 선택은 RAM이 병목이라는 현실에서 나온 거예요. DeepSeek V4 Flash 자체도 크고 2비트 quant만 해도 81GB급이라, 100만 토큰 컨텍스트까지 RAM에 밀어 넣는 건 개인 장비에선 꽤 빡세요.

  • 도구 호출을 byte-for-byte로 재현하려는 것도 에이전트 워크플로 때문에 중요해요. 클라이언트는 매 요청마다 전체 대화 기록을 다시 보내는데, 서버가 이전 도구 호출을 다르게 렌더링하면 저장해 둔 KV prefix를 못 쓰고 긴 프롬프트를 다시 계산해야 하거든요.

  • Metal과 CUDA를 메인 경로로 둔 건 “로컬에서 실제로 쓸 수 있는 속도”를 맞추려는 선택이에요. CPU 경로는 모델·토크나이저·정확성 진단에는 쓸 수 있지만, 284B급 MoE 모델을 실사용 속도로 굴리는 경로는 아니에요.

재밌는 건 “모델 하나만 제대로 로컬에서 끝까지 굴리자”는 방향이다. 요즘 로컬 LLM 생태계가 새 모델 따라가기 바쁜데, ds4는 모델·양자화·서버·캐시·에이전트 호환성을 한 세트로 묶어 완성도를 밀어붙이는 쪽에 가깝다.

댓글

댓글

댓글을 불러오는 중...

open-source

뱀부랩, 오픈소스 슬라이서 개발자에게 법적 압박 걸었다가 역풍 맞음

3D 프린터 제조사 뱀부랩이 OrcaSlicer-BambuLab 개발자에게 중단 요구서를 보내면서 오픈소스와 수리권 커뮤니티의 반발을 샀다. GamersNexus와 Louis Rossmann은 개발자의 허락을 받아 소프트웨어를 다시 호스팅하고, 소송이 걸리면 각각 1만 달러씩 법률 지원을 하겠다고 나섰다.

open-source

OrcaSlicer 포크, Bambu Lab 프린터의 인터넷 연결 기능 되살림

FULU Foundation의 OrcaSlicer-bambulab 포크가 Bambu Lab 프린터에서 LAN 전용 제한 없이 BambuNetwork 기반 인터넷 연결을 다시 지원한다고 밝힘. Windows에서는 WSL 2 설정이 필요하고, Linux에서는 일반 설치만으로 충분하다고 안내함.

open-source

코넬대가 공개한 정확히 2,000줄짜리 교육용 운영체제

코넬대 기반 프로젝트인 egos-2000은 학생이 교육용 운영체제 전체 코드를 직접 읽을 수 있게 만드는 걸 목표로 한다. C, 헤더, 어셈블리, make 파일을 합쳐 정확히 2,000줄이며, QEMU와 RISC-V 보드에서 동작하고 9개 코스 프로젝트가 붙어 있다. 운영체제 수업에서 ‘작지만 전체 구조가 보이는 코드베이스’가 필요했던 사람에게 꽤 반가운 자료다.

open-source

이맥스가 Git 대신 Bazaar를 붙잡았던 6년짜리 오픈소스 드라마

이맥스는 2008년 CVS에서 벗어나면서 Git 대신 GNU 프로젝트인 Bazaar를 선택했고, 이 결정은 성능 벤치마크와 개발자 반발을 압도한 정치적 판단에 가까웠다. Bazaar는 느리고 유지보수도 흔들렸지만, GNU 패키지는 GNU 도구를 써야 한다는 원칙 때문에 전환은 2014년까지 미뤄졌다. 결국 ELPA 브랜치 문제와 Bazaar 개발 중단, 변환 스크립트 준비 끝에 이맥스는 Git으로 옮겨갔다.

open-source

현대차·기아, 오픈소스 특허 방어망 넓혀 소프트웨어 중심 차량 전환 준비

현대차·기아가 오픈소스 소프트웨어 특허 분쟁을 줄이기 위해 글로벌 특허 네트워크 OIN 2.0에 가입했다. 소프트웨어 중심 차량, 클라우드, 커넥티드 서비스처럼 오픈소스 의존도가 큰 영역에서 법적 리스크를 미리 관리하려는 움직임이다.