아래 뜨는 Download 나 PC App Store는 모두의 프린터와 상관없는 광고입니다!!
특히 PC App Store는 악성 소프트웨어이니 절대 클릭하지 마세요!!
모두의 프린터는 어떠한 경우에도 본인인증, 회원가입, 카드결제를 요구하지 않습니다.
다운로드를 유도하는 애드센스 광고를 피로곰이 배포하는 프로그램들의 다운로드 링크로 착각하지 않도록 주의하시기 바랍니다. 피로곰이 배포하는 모든 프로그램은 본인인증, 회원가입, 이용료 결제 없이 무료로 사용가능합니다.
많이 찾는 글들...
  1. MS윈도 디펜더(바이러스 백신) 예외설정 방법
  2. ghostscript 실행파일 경로가 지정되어 있지 않아서 변환할 수 없습니다.
  3. PC App Store 제거 방법
  4. Ghostscript/GhostPCL 설치 안내
  5. 파일 다운로드가 차단되는 경우
  6. 내 컴퓨터의 32비트,64비트 여부 아는법
  7. 'Windows의 PC 보호' 문제
  8. 모두의 프린터 실행후 환경설정창 뜨지 않고 무반응
  9. Ghostscript PDF변환 불가. Can't load Ghostscript DLL
  10. 대법원 인터넷 등기소, 전자소송, 경매,전자공탁등 대법원계열 사이트관련
  11. 모두의 프린터 사용후 네트워크 장애가 발생하는경우. (대법원 인터넷등기소 등)
  12. 출력시 모두의 프린터가 강제종료 되는 경우.'지원하지 않는 PDF또는 가상 프린터입니다.'
  13. 오픽(OPic), 연결상태 확인 불가 프린터, 등록되지 않은 프린터(MarkAny e-PageSAFER)
  14. YBM 토익성적표 관련(정상적인 프린터로 출력을 진행하시기 바랍니다)
  15. 리포트뷰어(ReportViewer) 관련(특수목적프린터, 문서변환 프로그램을 제거해주세요)
  16. 인터넷증명발급센터 서트피아(Certpia) 관련 안내
  17. 인강사이트 관련 - 출력에 매우 오래 걸림, PDF파일 버벅거림, PDF여는데 오래걸림 등등
  18. '잘못된 프린터 데이터를 수신하였습니다.' 문제
  19. MS서피스, 삼성 갤럭시북 등 ARM기반 랩탑, '잘못된 프린터 데이터를 수신하였습니다.' 문제

DWARFSTAR(ds4.c) 최근 사용기..

Redis 개발자로 유명한 Antirez의 ds4.c 가 정말 하루가 다르게 엄청나게 발전을 하고 하나둘씩 다양한 모델을 지원하기 시작하면서 ..

최근에는

Deepseek-v4-flash, pro 뿐 아니라 glm 5.2, glm 5.3 flash, Deepseek-v4-vision, Deepseek-v4.1-flash 까지 지원하기 시작을 했습니다만 .. glm 과 deepseek 가 아키텍처가 같은 원류라 둘은 그렇다 치는데 .. 뜬금없이 Qwen 3.8 flash next 를 지원하네요? ㅎㅎㅎ

저는 사실 ds4.c 에 Deepseek-v4-flash 를 엄청 잘 쓰고 있었습니다. 비록 디코딩 기준 10~20tps의 매우 느린 속도를 보여주더라도 캐시가 어느정도 쌓이고 캐시가 돌아가기 시작하면 전체 작업 시간은 그냥저냥 감내할 수준이어서 정말 잘 사용해 왔습니다.

그러다 deepseek-v4-flash 0731이 나오고 DSpark 업데이트가 진행된 이후에는 DSpark를 활성화 하면 거의 4~50% 정도 속도가 빨라져서 MTP 적중만 하면 디코딩 기준 30~40tps 정도를 보여주곤 했습니다.

이 정도만 해도 정말 만족하며 사용해 왔는데요, 딱~한가지 아쉬웠던게 Deepseek v4 가 멀티모달 모델이 아니라서 vision 처리를 못한다는게 가장 안타까웠습니다…만!

맥스튜디오 M3 Ultra 512g 모델을 사용하고 vram으로 460gb 를 할당해둔 상황에서 deepseek v4 flash를 ds4.c 로 구동시켜도 vram은 200gb 근처를 차지하기 때문에 (1M 컨텍스트 기준) ..

llama.cpp 로 조금 가벼운 파라미터의 gguf 모델을 구동시켜서 opencode 등에서 서브에이전트로 vision 처리는 따로 일임하는 방식으로 사용해 왔습니다. 최근에는 Qwen 3.8 27b 을 사용하다 Qwen 3.8 flash next가 나온뒤로는 Unsloth 의 Qwen 3.8 flash next UD_Q4_KM 모델을 사용해 왔습니다.

그래도 vram은 넉넉한 상황이었구요.

그러다 현재는 llamap.cpp 도 삭제하고 ds4.c 하나만 사용중입니다.

우선 glm 5.2의 경우 너무 덩치가 큰 모델인데다 디코딩 10tps 도 기대하기 힘든 상황이라 쳐다도 보지 않고 있구요.

glm 5.3 flash 의 경우

Bash
pirogom@pirogom-Mac-Studio gguf % ls -alh
total 375005496
drwxr-xr-x@   5 pirogom  staff   160B Sep  3 21:14 .
drwxr-xr-x@ 116 pirogom  staff   3.6K Sep 15 03:04 ..
drwxr-xr-x@   3 pirogom  staff    96B Sep  3 21:13 .cache
-rw-r--r--@   1 pirogom  staff   178G Sep  3 21:12 GLM-5.3-Flash-Q4_K.gguf
-rw-r--r--@   1 pirogom  staff   1.0G Sep  3 21:11 GLM-5.3-Flash-Vision-Encoder.gguf
pirogom@pirogom-Mac-Studio gguf %

비전 인코더와 Q4_K 양자화 gguf 합쳐도 179GB 정도의 크기고.

간단한 이미지 분석 요청에 대해서 18~19tps 정도 디코딩 속도를 보여줍니다. 약간 초기 ds4.c 의 deepseek-v4-flash 모델 사용할때 느낌과 비슷하네요.

Bash
pirogom@pirogom-Mac-Studio ds4c_glm5.3f % cat run-server.sh
#!/bin/sh
./ds4-server \
--metal \
--warm-weights \
--host 0.0.0.0 \
--port 8001 \
--ctx 1000000 \
--kv-disk-dir /Users/pirogom/ds4c_glm5.3f/kv_cache \
--kv-disk-space-mb 65536 \
--mtp \
--vision gguf/GLM-5.3-Flash-Vision-Encoder.gguf

저는 사용하는 모델별로 ds4.c 코드를 클론 받아두고 개별 폴더에서 실행해서 쓰는 방식으로 사용중입니다. 경우에 따라서는 별도의 브랜치를 사용해야 하는 경우도 종종 있어서. ( 정식 적용 전에 먼저 써보려 한다거나.. )

Qwen-3.8-flash-next의 경우

Bash
pirogom@pirogom-Mac-Studio gguf % ls -alh
total 347455064
drwxr-xr-x@   5 pirogom  staff   160B Sep 15 03:55 .
drwxr-xr-x@ 115 pirogom  staff   3.6K Sep 15 03:57 ..
drwxr-xr-x@   3 pirogom  staff    96B Sep 15 03:07 .cache
-rw-r--r--@   1 pirogom  staff   165G Sep 15 03:55 Qwen3.8-Flash-Next-Q4.gguf
-rw-r--r--@   1 pirogom  staff   588M Sep 15 03:09 mmproj-Qwen3.8-Flash-Next-Q8_0.gguf

4비트 양자화 모델과 vision 처리를 위한 mmproj 파일 까지 해서 파일 크기는 glm 5.3 flash 와 비슷합니다.

다만 llama.cpp 에서 Unsloth 의 UD_Q4_K_M gguf 파일을 사용했을때 30tps 정도 나왔었는데 5~60tps 정도 속도가 나와주네요.

하루 종일 ds4.c 로 Vision이 필요한 상황에선 Qwen 3.8 flash next 를 사용하고 그 외에는 Deepseek-v4-flash 0731을 사용해본 결과 이제 굳이 llama.cpp 를 쓸 필요 없겠다 라는 결론을 내렸습니다.

아 혹시 Deepseek-v4-vision 모델에 대해서 궁금해 하시는 분도 계실것 같은데요. 최근 추가된 Deepseek-v4.1-flash 의 경우 파라미터가 두배이상 증가한 관계로 Q4 양자화는 480GB정도 차지합니다. 512gb 단일 맥 스튜디오로도 컨텍스트까지 생각하면 좀 버거운 상황이죠. Q2 의 경우 380GB인가? 그 즈음 크기이라서 단일로 돌린다면 vision 포함해서 어쩔지 모르겠습니다만. 아무래도 Q2와 Q4의 차이가 없을 수 없고 속도가 어느정도 나와 주느냐의 문제도 있어서. ( 아직 모델 다운로드 중이라 정확히 테스트를 해보진 못했습니다.)

여튼 ds4.1f가 크기가 워낙 커져서 중간에 나온 deepseek v4 vision 에 관심을 가지시는 분이 계실것 같습니다만. 제가 사용해본걸론 v4 flash 0731 과 다른 경로로 학습을 한건지 몰라도 동일한 요청을 해도 결과가 좀 많이 아쉽더군요. vision 용도로만 쓸꺼 아니면 굳이? 싶었습니다. 전 이미 Qwen 3.8 flash next의 50tps 이상 나오는 vision 처리를 봐 버렸는걸요 ㅎㅎ

이제 마지막 남은 고민은 ..

맥 스튜디오의 vram 상으로는 Deepseek-v4-flash0731 Q4와 Qwen-3.8-flash-next Q4를 둘다 동시에 사용이 가능한 vram 크기이긴 합니다만 ds4.c 가 /tmp/ds4c.lock 파일을 통해 동시에 동작하지 못하도록 기본적으로 구성되어 있는 놈이라서 ..

lock 파일을 별도로 쓸 수 있도록 패치를 해서 써야하나? ..

아니면 그냥 vision 이 필요할떄만 따로 교체해서 동작 시킬까 정도를 고민을 하고 있습니다. 워낙 업데이트가 잦은 프로젝트라서 개별적으로 패치를 하면 매번 패치 적용을 해야하니 조금 귀찮을 것 같긴합니다만..

생각해보니 /tmp 에 저장되는 거면 /tmp 경로를 환경변수서 얻어서 동작한다면 환경변수 조정으로 다른 경로에 저장되게 가능할것 같긴 하네요.

제가 ds4.c 에 대해 언급 할때마다 vLLM 이나 oMLX 나 mlx-ml 같은 것들 두고 왜 ds4.c를 선호하냐고 묻는 분들이 계십니다.

우선 vLLM은 metal 플러그인이 있긴 해도 어쨋든 친 NVIDIA향의 프로젝트이고 다중 서빙시 빨라 보이는 것 같아도 저같이 혼자서 집중적으로 사용하는 경우에 컨텍스트가 어느정도 쌓이고 나면 생각 보다 llama.cpp 보다 전체 작업속도는 크게 빠르진 않습니다.

oMLX, mlx-ml 의 경우도 여전히 mlx 가 성숙단계까지 멀었다고 보구요. AI 진영에서 아웃사이더이다 보니 더더욱이 ..

다양한 짓을 해본 결과 .. 단순 밴치마크를 위한게 아닌 실 사용 용도에선 mlx 보단 차라리 llama.cpp 로 gguf 를 사용하는게 오히려 안정성 측면에선 나았구요.

단지 ds4.c 를 선호하는건 이 추론엔진의 목적이 어쨋든 개발용에 맞춰져 있다고 느껴지기 때문입니다. 보통 다른 추론엔진들은 개발자들만을 위한게 아니라 다양한 범용 용도에 맞춰서 gguf 든 mlx 든 사용해서 동작을 하게 됩니다만, 저같이 개발을 위해 주로 LocalLLM을 사용하는 입장에선 툴 호출을 비롯해서 에이전트를 통한 개발 프로세스를 진행함에 있어서 큰 오류없이 무난하게 작업이 완료되는게 가장 중요한 점입니다.

이 점에서 현재까진 오직 ds4.c 만 만족스럽게 동작중입니다.

그래서 계속 발전중이고 다양한 모델을 지원하게 되서 너무 좋네요.

한동안 맥스튜디오에는 ds4.c 원툴로 밀어 붙이렵니다.

— Deepseek v4.1 flash 관련 추가

Bash
pirogom@pirogom-Mac-Studio gguf % ls -alh
total 716180168
drwxr-xr-x@   5 pirogom  staff   160B Sep 15 13:41 .
drwxr-xr-x@ 115 pirogom  staff   3.6K Sep 16 00:39 ..
drwxr-xr-x@   3 pirogom  staff    96B Sep 15 11:54 .cache
-rw-r--r--@   1 pirogom  staff   341G Sep 15 13:41 DeepSeek-V4.1-Flash-Q2.gguf
-rw-r--r--@   1 pirogom  staff   926M Sep 15 11:55 DeepSeek-V4.1-Flash-Vision.gguf

Q2양자화 모델만 해도 350GB 가량 되고 Q4는 400GB가 넘어가기 때문에 우선 Q2를 받아서 동작 시켜 봤습니다.

Bash
ds4: Metal device Apple M3 Ultra, 512.00 GiB RAM
ds4: Metal 4 tensor API disabled for pre-M5/pre-A19 devices
ds4: drift-patch flags hc_stable=on norm_unify=on kv_raw_f32=off rope_exp2_log2=off math_safe=off tensor_matmul=off
ds4: warming mapped tensor pages: 151.76 GiB
ds4: warmed tensor pages in 10.652s (checksum=1217859606)
ds4: requesting Metal residency (may take tens of seconds)... done
ds4: warming Metal model views... done
ds4: Metal model views created in 2.994 ms, residency requested in 1146.534 ms, warmup 7.435 ms (mapped 155401.05 MiB from offset 5.56 MiB)
ds4: Metal mapped mmaped model as 1 overlapping shared buffers
ds4: requesting Metal residency (may take tens of seconds)... done
ds4: warming Metal model views... done
ds4: Metal model views created in 0.041 ms, residency requested in 1050.366 ms, warmup 1.061 ms (mapped 925.59 MiB from offset 0.02 MiB)
ds4: Metal mapped mmaped model as 2 overlapping shared buffers
ds4: metal backend initialized for graph diagnostics
ds4: memory: KV 5.97 GiB (raw 0.01 + compressed 5.96) + buffers 12.41 GiB + resident model 151.76 GiB = 170.14 GiB planned
ds4: memory detail: ctx=1000000 prefill_cap=8192 raw_kv_rows=128 compressed_kv_rows=1000001 backend=metal
0916 00:39:21 ds4-server: context buffers 18819.00 MiB (ctx=1000000, backend=metal, prefill_chunk=8192, raw_kv_rows=128, compressed_kv_rows=1000001)
ds4: V4.1 static context buffers 18819.00 MiB (ctx=1000000), Engram disk-only
0916 00:39:21 ds4-server: KV disk cache /Users/pirogom/ds4c_ds41f/kv_cache (budget=65536 MiB, cross-quant=accept, min=512, cold_max=30000, continued=10000, trim=32, align=2048, hit_half_life=21600s)
0916 00:39:21 ds4-server: listening on http://0.0.0.0:8001
0916 00:39:23 ds4-server: chat ctx=0..7562:7562 TOOLS prompt start
0916 00:39:42 ds4-server: chat ctx=0..7562:7562 TOOLS prefill chunk 6144/7562 (81.2%) chunk=0.00 t/s avg=328.54 t/s 18.701s
0916 00:39:47 ds4-server: chat ctx=0..7562:7562 TOOLS prefill chunk 7558/7562 (99.9%) chunk=310.43 t/s avg=324.99 t/s 23.256s
0916 00:39:47 ds4-server: kv cache stored tokens=7558 trimmed=4 reason=cold key=token-text size=56.68 MiB save=7.7 ms
0916 00:39:47 ds4-server: chat ctx=0..7562:7562 TOOLS prefill chunk 7559/7562 (100.0%) chunk=9.59 t/s avg=323.59 t/s 23.360s
0916 00:39:47 ds4-server: chat ctx=0..7562:7562 TOOLS prefill chunk 7560/7562 (100.0%) chunk=20.32 t/s avg=322.95 t/s 23.409s
0916 00:39:47 ds4-server: chat ctx=0..7562:7562 TOOLS prefill chunk 7561/7562 (100.0%) chunk=20.61 t/s avg=322.32 t/s 23.458s
0916 00:39:47 ds4-server: chat ctx=0..7562:7562 TOOLS prefill chunk 7562/7562 (100.0%) chunk=20.38 t/s avg=321.69 t/s 23.507s
0916 00:39:47 ds4-server: chat ctx=0..7562:7562 TOOLS prompt done 23.508s
0916 00:39:48 ds4-server: chat ctx=7562..7590:28 gen=28 TOOLS decoding chunk=20.12 t/s avg=20.12 t/s 1.392s
0916 00:39:48 ds4-server: chat ctx=0..7562:7562 gen=28 TOOLS finish=stop 24.900s
0916 00:40:03 ds4-server: vision embedding encoded; cache=13028716 bytes
0916 00:40:03 ds4-server: multimodal live kv hit images=1 cached=7590 prompt=8267 identity=fingerprint-match
0916 00:40:03 ds4-server: chat ctx=7590..8267:677 TOOLS prompt start
0916 00:40:06 ds4-server: chat ctx=7590..8267:677 TOOLS prefill chunk 677/677 (100.0%) chunk=0.00 t/s avg=253.92 t/s 2.666s
0916 00:40:06 ds4-server: chat ctx=7590..8267:677 TOOLS prompt done 2.667s
0916 00:40:09 ds4-server: chat ctx=8267..8317:50 gen=50 TOOLS THINKING decoding chunk=19.75 t/s avg=19.75 t/s 2.532s
0916 00:40:11 ds4-server: chat ctx=8317..8367:50 gen=100 TOOLS THINKING decoding chunk=19.93 t/s avg=19.84 t/s 5.041s
0916 00:40:14 ds4-server: chat ctx=8367..8417:50 gen=150 TOOLS THINKING decoding chunk=19.98 t/s avg=19.88 t/s 7.544s
0916 00:40:16 ds4-server: chat ctx=8417..8467:50 gen=200 TOOLS decoding chunk=19.91 t/s avg=19.89 t/s 10.055s
0916 00:40:19 ds4-server: chat ctx=8467..8517:50 gen=250 TOOLS decoding chunk=19.90 t/s avg=19.89 t/s 12.568s
0916 00:40:21 ds4-server: chat ctx=8517..8567:50 gen=300 TOOLS decoding chunk=19.97 t/s avg=19.90 t/s 15.072s
0916 00:40:24 ds4-server: chat ctx=8567..8617:50 gen=350 TOOLS decoding chunk=19.92 t/s avg=19.91 t/s 17.582s
0916 00:40:25 ds4-server: chat ctx=8617..8638:21 gen=371 TOOLS decoding chunk=19.93 t/s avg=19.91 t/s 18.636s
0916 00:40:25 ds4-server: chat ctx=7590..8267:677 gen=371 TOOLS finish=stop 21.304s
0916 00:41:34 ds4-server: live kv cache miss live=8638 prompt=21568 common=7174 vision=mismatch reason=token-mismatch
0916 00:41:34 ds4-server: chat ctx=0..21568:21568 TOOLS prompt start
0916 00:42:02 ds4-server: chat ctx=0..21568:21568 TOOLS prefill chunk 20480/21568 (95.0%) chunk=0.00 t/s avg=720.01 t/s 28.444s
0916 00:42:02 ds4-server: kv cache skipped tokens=20480 reason=continued because KV payload staging failed: session has no valid checkpoint to stage
0916 00:42:06 ds4-server: chat ctx=0..21568:21568 TOOLS prefill chunk 21552/21568 (99.9%) chunk=271.93 t/s avg=665.47 t/s 32.386s
0916 00:42:06 ds4-server: kv cache stored tokens=21552 trimmed=16 reason=cold key=token-text size=142.19 MiB save=24.1 ms
0916 00:42:06 ds4-server: chat ctx=0..21568:21568 TOOLS prefill chunk 21568/21568 (100.0%) chunk=47.19 t/s avg=659.06 t/s 32.725s
0916 00:42:06 ds4-server: chat ctx=0..21568:21568 TOOLS prompt done 32.726s
0916 00:42:09 ds4-server: chat ctx=21568..21618:50 gen=50 TOOLS THINKING decoding chunk=19.69 t/s avg=19.69 t/s 2.539s
0916 00:42:11 ds4-server: chat ctx=21618..21668:50 gen=100 TOOLS DSML_START decoding chunk=19.63 t/s avg=19.66 t/s 5.086s
0916 00:42:14 ds4-server: chat ctx=21668..21718:50 gen=150 TOOLS DSML_START decoding chunk=19.61 t/s avg=19.64 t/s 7.636s
0916 00:42:16 ds4-server: chat ctx=21718..21753:35 gen=185 TOOLS DSML_START DSML_END decoding chunk=19.67 t/s avg=19.65 t/s 9.415s
0916 00:42:16 ds4-server: tool calls ctx=0..21568:21568 n=2 raw_tool_text=1 ids=[call_9dd504f427525db7cdbcdad15c30f703,call_eda26c58799672e612644b5ea3d93fa1] names=[bash,bash]
0916 00:42:16 ds4-server: chat ctx=0..21568:21568 gen=185 TOOLS DSML_START DSML_END finish=tool_calls 42.142s
0916 00:42:18 ds4-server: chat ctx=21753..22319:566 TOOLS prompt start
0916 00:42:20 ds4-server: chat ctx=21753..22319:566 TOOLS prefill chunk 566/566 (100.0%) chunk=0.00 t/s avg=224.93 t/s 2.516s
0916 00:42:20 ds4-server: chat ctx=21753..22319:566 TOOLS prompt done 2.518s
0916 00:42:23 ds4-server: chat ctx=22319..22369:50 gen=50 TOOLS THINKING decoding chunk=19.48 t/s avg=19.48 t/s 2.567s
0916 00:42:26 ds4-server: chat ctx=22369..22419:50 gen=100 TOOLS THINKING decoding chunk=19.62 t/s avg=19.55 t/s 5.115s
0916 00:42:28 ds4-server: chat ctx=22419..22469:50 gen=150 TOOLS decoding chunk=19.58 t/s avg=19.56 t/s 7.669s
0916 00:42:31 ds4-server: chat ctx=22469..22519:50 gen=200 TOOLS DSML_START decoding chunk=19.59 t/s avg=19.57 t/s 10.222s
0916 00:42:33 ds4-server: chat ctx=22519..22569:50 gen=250 TOOLS DSML_START decoding chunk=19.59 t/s avg=19.57 t/s 12.773s
0916 00:42:35 ds4-server: chat ctx=22569..22614:45 gen=295 TOOLS DSML_START DSML_END decoding chunk=19.62 t/s avg=19.58 t/s 15.067s
0916 00:42:35 ds4-server: tool calls ctx=21753..22319:566 n=2 raw_tool_text=1 ids=[call_416e869ca29c377a692eff91a50357f5,call_52ad2fe2cd0e7f1bcde42122cbd0884a] names=[bash,bash]
0916 00:42:35 ds4-server: chat ctx=21753..22319:566 gen=295 TOOLS DSML_START DSML_END finish=tool_calls 17.585s
0916 00:42:37 ds4-server: chat ctx=22614..23884:1270 TOOLS prompt start
0916 00:42:41 ds4-server: chat ctx=22614..23884:1270 TOOLS prefill chunk 1270/1270 (100.0%) chunk=0.00 t/s avg=285.86 t/s 4.443s
0916 00:42:41 ds4-server: chat ctx=22614..23884:1270 TOOLS prompt done 4.444s
0916 00:42:44 ds4-server: chat ctx=23884..23934:50 gen=50 TOOLS THINKING decoding chunk=19.48 t/s avg=19.48 t/s 2.566s
0916 00:42:46 ds4-server: chat ctx=23934..23984:50 gen=100 TOOLS DSML_START decoding chunk=19.61 t/s avg=19.55 t/s 5.115s
0916 00:42:49 ds4-server: chat ctx=23984..24034:50 gen=150 TOOLS DSML_START decoding chunk=19.56 t/s avg=19.55 t/s 7.671s
0916 00:42:51 ds4-server: chat ctx=24034..24084:50 gen=200 TOOLS DSML_START decoding chunk=19.66 t/s avg=19.58 t/s 10.215s
0916 00:42:53 ds4-server: chat ctx=24084..24127:43 gen=243 TOOLS DSML_START DSML_END decoding chunk=19.61 t/s avg=19.58 t/s 12.408s
0916 00:42:53 ds4-server: tool calls ctx=22614..23884:1270 n=2 raw_tool_text=1 ids=[call_da5b2b186bb04b4bf78e9a4065f2a312,call_44de4ba749628d1cf1bf98b2439f7d6f] names=[bash,bash]
0916 00:42:53 ds4-server: chat ctx=22614..23884:1270 gen=243 TOOLS DSML_START DSML_END finish=tool_calls 16.852s
0916 00:42:54 ds4-server: chat ctx=24127..33180:9053 TOOLS prompt start
0916 00:43:08 ds4-server: chat ctx=24127..33180:9053 TOOLS prefill chunk 8192/9053 (90.5%) chunk=0.00 t/s avg=588.13 t/s 13.929s
0916 00:43:12 ds4-server: chat ctx=24127..33180:9053 TOOLS prefill chunk 9053/9053 (100.0%) chunk=249.67 t/s avg=520.96 t/s 17.378s
0916 00:43:12 ds4-server: chat ctx=24127..33180:9053 TOOLS prompt done 17.379s
0916 00:43:14 ds4-server: chat ctx=33180..33230:50 gen=50 TOOLS THINKING decoding chunk=19.13 t/s avg=19.13 t/s 2.614s
0916 00:43:17 ds4-server: chat ctx=33230..33280:50 gen=100 TOOLS THINKING decoding chunk=19.41 t/s avg=19.27 t/s 5.190s
0916 00:43:20 ds4-server: chat ctx=33280..33330:50 gen=150 TOOLS DSML_START decoding chunk=19.40 t/s avg=19.31 t/s 7.768s
0916 00:43:22 ds4-server: chat ctx=33330..33380:50 gen=200 TOOLS DSML_START decoding chunk=19.36 t/s avg=19.32 t/s 10.350s
0916 00:43:25 ds4-server: chat ctx=33380..33430:50 gen=250 TOOLS DSML_START decoding chunk=19.37 t/s avg=19.33 t/s 12.932s
0916 00:43:26 ds4-server: chat ctx=33430..33453:23 gen=273 TOOLS DSML_START DSML_END decoding chunk=19.37 t/s avg=19.33 t/s 14.120s
0916 00:43:26 ds4-server: tool calls ctx=24127..33180:9053 n=2 raw_tool_text=1 ids=[call_5e496bab471d7d4020c4d31b65b9084f,call_3d976c01026b21254e74f830ce8001d2] names=[read,bash]
0916 00:43:26 ds4-server: chat ctx=24127..33180:9053 gen=273 TOOLS DSML_START DSML_END finish=tool_calls 31.499s
0916 00:43:27 ds4-server: chat ctx=33453..36366:2913 TOOLS prompt start
0916 00:43:34 ds4-server: chat ctx=33453..36366:2913 TOOLS prefill chunk 2048/2913 (70.3%) chunk=0.00 t/s avg=301.25 t/s 6.798s
0916 00:43:37 ds4-server: chat ctx=33453..36366:2913 TOOLS prefill chunk 2913/2913 (100.0%) chunk=242.24 t/s avg=280.93 t/s 10.369s
0916 00:43:37 ds4-server: chat ctx=33453..36366:2913 TOOLS prompt done 10.371s
0916 00:43:40 ds4-server: chat ctx=36366..36416:50 gen=50 TOOLS THINKING decoding chunk=19.23 t/s avg=19.23 t/s 2.600s
0916 00:43:43 ds4-server: chat ctx=36416..36466:50 gen=100 TOOLS THINKING decoding chunk=19.33 t/s avg=19.28 t/s 5.187s
0916 00:43:45 ds4-server: chat ctx=36466..36516:50 gen=150 TOOLS DSML_START decoding chunk=19.37 t/s avg=19.31 t/s 7.769s
0916 00:43:48 ds4-server: chat ctx=36516..36566:50 gen=200 TOOLS DSML_START decoding chunk=19.30 t/s avg=19.30 t/s 10.360s
0916 00:43:50 ds4-server: chat ctx=36566..36616:50 gen=250 TOOLS DSML_START decoding chunk=19.37 t/s avg=19.32 t/s 12.941s
0916 00:43:52 ds4-server: chat ctx=36616..36657:41 gen=291 TOOLS DSML_START DSML_END decoding chunk=19.34 t/s avg=19.32 t/s 15.061s
0916 00:43:52 ds4-server: tool calls ctx=33453..36366:2913 n=2 raw_tool_text=1 ids=[call_785e4db3f5e579c63da6d6c341580a35,call_fdde5f70510b1b79bb07abdf01a4c6d7] names=[bash,bash]
0916 00:43:52 ds4-server: chat ctx=33453..36366:2913 gen=291 TOOLS DSML_START DSML_END finish=tool_calls 25.432s
0916 00:43:53 ds4-server: chat ctx=36657..38203:1546 TOOLS prompt start
0916 00:43:59 ds4-server: chat ctx=36657..38203:1546 TOOLS prefill chunk 1546/1546 (100.0%) chunk=0.00 t/s avg=285.53 t/s 5.414s
0916 00:43:59 ds4-server: chat ctx=36657..38203:1546 TOOLS prompt done 5.416s
0916 00:44:01 ds4-server: chat ctx=38203..38253:50 gen=50 TOOLS DSML_START decoding chunk=19.31 t/s avg=19.31 t/s 2.589s
0916 00:44:04 ds4-server: chat ctx=38253..38303:50 gen=100 TOOLS DSML_START decoding chunk=19.37 t/s avg=19.34 t/s 5.170s
0916 00:44:07 ds4-server: chat ctx=38303..38353:50 gen=150 TOOLS DSML_START decoding chunk=19.35 t/s avg=19.34 t/s 7.755s
0916 00:44:09 ds4-server: chat ctx=38353..38403:50 gen=200 TOOLS DSML_START decoding chunk=19.33 t/s avg=19.34 t/s 10.342s
0916 00:44:10 ds4-server: chat ctx=38403..38414:11 gen=211 TOOLS DSML_START DSML_END decoding chunk=19.34 t/s avg=19.34 t/s 10.911s
0916 00:44:10 ds4-server: tool calls ctx=36657..38203:1546 n=2 raw_tool_text=1 ids=[call_8ad30c18c4ed051083d7fd4d43941951,call_8e05fd7094b7007c12c6a2f5d35aec23] names=[read,read]
0916 00:44:10 ds4-server: chat ctx=36657..38203:1546 gen=211 TOOLS DSML_START DSML_END finish=tool_calls 16.327s
0916 00:44:11 ds4-server: chat ctx=38414..44855:6441 TOOLS prompt start
0916 00:44:32 ds4-server: chat ctx=38414..44855:6441 TOOLS prefill chunk 6144/6441 (95.4%) chunk=0.00 t/s avg=288.18 t/s 21.320s
0916 00:44:34 ds4-server: chat ctx=38414..44855:6441 TOOLS prefill chunk 6441/6441 (100.0%) chunk=178.04 t/s avg=280.19 t/s 22.988s
0916 00:44:34 ds4-server: chat ctx=38414..44855:6441 TOOLS prompt done 22.990s
0916 00:44:36 ds4-server: chat ctx=44855..44905:50 gen=50 TOOLS DSML_START decoding chunk=19.24 t/s avg=19.24 t/s 2.599s
0916 00:44:39 ds4-server: chat ctx=44905..44955:50 gen=100 TOOLS DSML_START decoding chunk=19.30 t/s avg=19.27 t/s 5.189s
0916 00:44:42 ds4-server: chat ctx=44955..45005:50 gen=150 TOOLS DSML_START decoding chunk=19.27 t/s avg=19.27 t/s 7.784s
0916 00:44:44 ds4-server: chat ctx=45005..45055:50 gen=200 TOOLS DSML_START decoding chunk=19.25 t/s avg=19.27 t/s 10.381s
0916 00:44:45 ds4-server: chat ctx=45055..45065:10 gen=210 TOOLS DSML_START DSML_END decoding chunk=19.33 t/s avg=19.27 t/s 10.898s
0916 00:44:45 ds4-server: tool calls ctx=38414..44855:6441 n=2 raw_tool_text=1 ids=[call_121d71f08642ffd6f712300af4f42e59,call_b84450efe650931fa7c2a9a65218473b] names=[read,read]
0916 00:44:45 ds4-server: chat ctx=38414..44855:6441 gen=210 TOOLS DSML_START DSML_END finish=tool_calls 33.888s
0916 00:44:46 ds4-server: chat ctx=45065..49895:4830 TOOLS prompt start
0916 00:45:00 ds4-server: chat ctx=45065..49895:4830 TOOLS prefill chunk 4096/4830 (84.8%) chunk=0.00 t/s avg=280.97 t/s 14.578s
0916 00:45:04 ds4-server: chat ctx=45065..49895:4830 TOOLS prefill chunk 4830/4830 (100.0%) chunk=228.34 t/s avg=271.46 t/s 17.793s
0916 00:45:04 ds4-server: chat ctx=45065..49895:4830 TOOLS prompt done 17.794s
0916 00:45:06 ds4-server: chat ctx=49895..49945:50 gen=50 TOOLS THINKING decoding chunk=19.24 t/s avg=19.24 t/s 2.599s
0916 00:45:09 ds4-server: chat ctx=49945..49995:50 gen=100 TOOLS THINKING decoding chunk=19.42 t/s avg=19.33 t/s 5.174s
0916 00:45:11 ds4-server: chat ctx=49995..50045:50 gen=150 TOOLS THINKING decoding chunk=19.39 t/s avg=19.35 t/s 7.753s
0916 00:45:14 ds4-server: chat ctx=50045..50095:50 gen=200 TOOLS THINKING decoding chunk=19.39 t/s avg=19.36 t/s 10.332s
0916 00:45:16 ds4-server: chat ctx=50095..50145:50 gen=250 TOOLS THINKING decoding chunk=19.37 t/s avg=19.36 t/s 12.914s
0916 00:45:19 ds4-server: chat ctx=50145..50195:50 gen=300 TOOLS THINKING decoding chunk=19.36 t/s avg=19.36 t/s 15.497s
0916 00:45:22 ds4-server: chat ctx=50195..50245:50 gen=350 TOOLS THINKING decoding chunk=19.38 t/s avg=19.36 t/s 18.077s
0916 00:45:24 ds4-server: chat ctx=50245..50295:50 gen=400 TOOLS THINKING decoding chunk=19.40 t/s avg=19.37 t/s 20.654s
0916 00:45:27 ds4-server: chat ctx=50295..50345:50 gen=450 TOOLS THINKING decoding chunk=19.32 t/s avg=19.36 t/s 23.242s
0916 00:45:29 ds4-server: chat ctx=50345..50395:50 gen=500 TOOLS DSML_START decoding chunk=19.33 t/s avg=19.36 t/s 25.829s

일단 Deepseek v4.1 flash의 경우에는 아직 ds4.c 에 dspark 관련 업데이트 전이라 dspark 는 아직 적용 전입니다.

gguf 파일 크기가 350GB 정도 되는것에 비하면 메모리 사용량은 190Gb 정도로 구조적인 특성인지 몰라도 확실히 메모리 사용량은 많이 절제된 상태인것 같습니다.

우선 속도는 둘째치고 Q4 양자화도 다운받아서 실제 메모리 사용량을 좀 확인해 봐야 겐네요 Q4도 300gb 는 안넘어 갈것 같은데 말이죠. 문제는 Q2가 19tps 면 Q4는 10tps 언저리 나올거란 소리라, mtp 관련이 어떻게 될지 모르겠습니다.

아무래도 moe 구조라 해도 파라미터수가 꽤 큰폭으로 증가했으니 상대적인 속도 저하는 어쩔 수 없을 것 같긴 합니다만.

우선 Deepseek v4.1 flash의 경우 mtp 쪽이 어떻게 진행되는질 좀 지켜봐야 겠습니다.

현재로썬 Deepseek v4 flash 0731 을 주력으로 사용하고 Vision 까지 필요할떈 glm 5.3 flash 나 Qwen 3.8 flash next를 사용하는 정도로 계속 사용해 보겠습니다.

— Deepseek v4.1 flash Q4 테스트 후기

Bash
pirogom@pirogom-Mac-Studio ds4c_ds41f % ./run-server.sh
ds4: Metal device Apple M3 Ultra, 512.00 GiB RAM
ds4: Metal 4 tensor API disabled for pre-M5/pre-A19 devices
ds4: drift-patch flags hc_stable=on norm_unify=on kv_raw_f32=off rope_exp2_log2=off math_safe=off tensor_matmul=off
ds4: warming mapped tensor pages: 294.14 GiB
ds4: warmed tensor pages in 58.260s (checksum=2250200447)
ds4: requesting Metal residency (may take tens of seconds)... done
ds4: warming Metal model views... done
ds4: Metal model views created in 7.633 ms, residency requested in 2190.363 ms, warmup 7.730 ms (mapped 301201.05 MiB from offset 5.56 MiB)
ds4: Metal mapped mmaped model as 1 overlapping shared buffers
ds4: requesting Metal residency (may take tens of seconds)... done
ds4: warming Metal model views... done
ds4: Metal model views created in 0.055 ms, residency requested in 2327.728 ms, warmup 1.121 ms (mapped 925.59 MiB from offset 0.02 MiB)
ds4: Metal mapped mmaped model as 2 overlapping shared buffers
ds4: metal backend initialized for graph diagnostics
ds4: memory: KV 5.97 GiB (raw 0.01 + compressed 5.96) + buffers 12.41 GiB + resident model 294.14 GiB = 312.52 GiB planned
ds4: memory detail: ctx=1000000 prefill_cap=8192 raw_kv_rows=128 compressed_kv_rows=1000001 backend=metal
0916 03:39:17 ds4-server: context buffers 18819.00 MiB (ctx=1000000, backend=metal, prefill_chunk=8192, raw_kv_rows=128, compressed_kv_rows=1000001)
ds4: V4.1 static context buffers 18819.00 MiB (ctx=1000000), Engram disk-only
0916 03:39:17 ds4-server: KV disk cache /Users/pirogom/ds4c_ds41f/kv_cache (budget=65536 MiB, cross-quant=accept, min=512, cold_max=30000, continued=10000, trim=32, align=2048, hit_half_life=21600s)
0916 03:39:17 ds4-server: listening on http://0.0.0.0:8001
0916 03:39:27 ds4-server: kv cache hit text tokens=7558 text=33107 quant=2 key=token-text load=26.2 ms file=/Users/pirogom/ds4c_ds41f/kv_cache/64f34800521eb01eed59097397e525eb2248f27b.kv
0916 03:39:27 ds4-server: chat ctx=7558..7562:4 TOOLS prompt start
0916 03:39:27 ds4-server: chat ctx=7558..7562:4 TOOLS prefill chunk 1/4 (25.0%) chunk=0.00 t/s avg=4.24 t/s 0.236s
0916 03:39:27 ds4-server: chat ctx=7558..7562:4 TOOLS prefill chunk 2/4 (50.0%) chunk=18.77 t/s avg=6.92 t/s 0.289s
0916 03:39:27 ds4-server: chat ctx=7558..7562:4 TOOLS prefill chunk 3/4 (75.0%) chunk=18.53 t/s avg=8.74 t/s 0.343s
0916 03:39:27 ds4-server: chat ctx=7558..7562:4 TOOLS prefill chunk 4/4 (100.0%) chunk=18.01 t/s avg=10.03 t/s 0.399s
0916 03:39:27 ds4-server: chat ctx=7558..7562:4 TOOLS prompt done 0.400s
0916 03:39:29 ds4-server: chat ctx=7562..7591:29 gen=29 TOOLS decoding chunk=19.63 t/s avg=19.63 t/s 1.478s
0916 03:39:29 ds4-server: chat ctx=7558..7562:4 gen=29 TOOLS finish=stop 1.878s
0916 03:39:43 ds4-server: vision embedding encoded; cache=3940157 bytes
0916 03:39:43 ds4-server: multimodal live kv hit images=1 cached=7591 prompt=7857 identity=fingerprint-match
0916 03:39:43 ds4-server: chat ctx=7591..7857:266 TOOLS prompt start
0916 03:39:44 ds4-server: chat ctx=7591..7857:266 TOOLS prefill chunk 266/266 (100.0%) chunk=0.00 t/s avg=158.54 t/s 1.678s
0916 03:39:44 ds4-server: chat ctx=7591..7857:266 TOOLS prompt done 1.679s
0916 03:39:47 ds4-server: chat ctx=7857..7907:50 gen=50 TOOLS THINKING decoding chunk=18.93 t/s avg=18.93 t/s 2.641s
0916 03:39:49 ds4-server: chat ctx=7907..7957:50 gen=100 TOOLS THINKING decoding chunk=19.26 t/s avg=19.10 t/s 5.237s
0916 03:39:52 ds4-server: chat ctx=7957..8007:50 gen=150 TOOLS decoding chunk=19.42 t/s avg=19.20 t/s 7.811s
0916 03:39:55 ds4-server: chat ctx=8007..8057:50 gen=200 TOOLS decoding chunk=19.63 t/s avg=19.31 t/s 10.359s
0916 03:39:57 ds4-server: chat ctx=8057..8097:40 gen=240 TOOLS decoding chunk=19.38 t/s avg=19.32 t/s 12.423s
0916 03:39:57 ds4-server: chat ctx=7591..7857:266 gen=240 TOOLS finish=stop 14.103s

5시간 넘게 걸려서 480G 정도 되는 모델 파일을 다운받아서 간단히 테스트 해봤습니다. 메모리 사용량은 330GB 정도 512GB인 제 맥 스튜디오 기준으로 1M 컨텍스트를 사용해도 충분히 구동은 가능한 수준이네요.

Q2와 Q4가 실제 디코딩 TPS가 큰 차이가 없는게 희한하긴 합니다만.

DSpark 적용이 되면 경험상 50% 정도는 올라갈듯 하니 잘 나오면 30 tps 정도 기대 가능할 것 같네요.

이정도 수준이면 DSpark 적용만 된다면 가벼운 작업에선 Qwen-3.8-flash-next 를 사용하고 좀더 지능이 필요하면 Deepseek v4.1 flash를 사용하면 될 것 같습니다.

많이 찾는 글들...
  1. MS윈도 디펜더(바이러스 백신) 예외설정 방법
  2. ghostscript 실행파일 경로가 지정되어 있지 않아서 변환할 수 없습니다.
  3. PC App Store 제거 방법
  4. Ghostscript/GhostPCL 설치 안내
  5. 파일 다운로드가 차단되는 경우
  6. 내 컴퓨터의 32비트,64비트 여부 아는법
  7. 'Windows의 PC 보호' 문제
  8. 모두의 프린터 실행후 환경설정창 뜨지 않고 무반응
  9. Ghostscript PDF변환 불가. Can't load Ghostscript DLL
  10. 대법원 인터넷 등기소, 전자소송, 경매,전자공탁등 대법원계열 사이트관련
  11. 모두의 프린터 사용후 네트워크 장애가 발생하는경우. (대법원 인터넷등기소 등)
  12. 출력시 모두의 프린터가 강제종료 되는 경우.'지원하지 않는 PDF또는 가상 프린터입니다.'
  13. 오픽(OPic), 연결상태 확인 불가 프린터, 등록되지 않은 프린터(MarkAny e-PageSAFER)
  14. YBM 토익성적표 관련(정상적인 프린터로 출력을 진행하시기 바랍니다)
  15. 리포트뷰어(ReportViewer) 관련(특수목적프린터, 문서변환 프로그램을 제거해주세요)
  16. 인터넷증명발급센터 서트피아(Certpia) 관련 안내
  17. 인강사이트 관련 - 출력에 매우 오래 걸림, PDF파일 버벅거림, PDF여는데 오래걸림 등등
  18. '잘못된 프린터 데이터를 수신하였습니다.' 문제
  19. MS서피스, 삼성 갤럭시북 등 ARM기반 랩탑, '잘못된 프린터 데이터를 수신하였습니다.' 문제