Skip to content

Migration: dsv4pocket / PocketLLM

This project was formerly named dsv4, after the first model it ran (DeepSeek-V4). It now supports several unrelated model families, so the project name no longer belongs in the namespace, the build targets, the executable, or the environment variables.

This is a breaking change with no compatibility shim. Old names are gone rather than aliased: a silently-ignored DSV4_* variable would look like a tuning flag that stopped working, which is worse than an obviously-absent one. Translate your commands using the tables below.

What is not renamed

DeepSeek-V4 is a model name, not a project name. It is unchanged everywhere it refers to an actual upstream model, checkpoint, architecture, or tensor layout — including the deepseek-v4-flash OpenAI model id, docs/models/deepseek-v4.md, and the historical docs/reports/dsv4_2080ti_report.pdf artifact.

The working directory /mnt/data1/dsv4_inference is also untouched. Renaming a checkout directory is a local decision, and several scripts hardcode that absolute path.

C++ namespace, macros, and build targets

Kind Old New
Namespace dsv4:: pocket::
Test namespace dsv4_test pocket_test
Static library dsv4_cpp_core pocket_cpp_core
Executable dsv4_cpp_engine pocketllm_engine
Build macros DSV4_HAVE_TP_COMM, DSV4_REQUIRE_NCCL, DSV4_LAUNCH_*, DSV4_QWEN_MMA_AVAILABLE same names with a POCKET_ prefix

The existing CMake convention is followed: POCKET_* for build-time variables, options, and C++ identifiers; POCKETLLM_* for runtime environment variables. The Python extension module was already pocketllm_cpp and does not change.

pocket_cpp_core is a static archive with no install() rule and no SOVERSION, so there is no ABI or soname consequence for the rename.

Files renamed

Old New
cpp_engine/engine/dsv4_engine.cpp cpp_engine/engine/deepseek_v4_engine.cpp
cpp_engine/include/dsv4_engine.hpp cpp_engine/include/deepseek_v4_engine.hpp
src/encoding/dsv4.py src/encoding/deepseek_v4.py
tests/test_encoding_dsv4.py tests/test_encoding_deepseek_v4.py

These four keep the model name because that is what they implement; only the abbreviation is expanded. The C++ class Dsv4Engine is now DeepSeekV4Engine, and the Python import src.encoding.dsv4 is now src.encoding.deepseek_v4.

Runtime and wire identifiers

Kind Old New
Shared-memory segment dsv4_cpu_moe_server pocketllm_cpu_moe_server
In-process shm prefix dsv4_cpu_moe_inproc_ pocketllm_cpu_moe_inproc_
MoE weight shm prefix dsv4_moe_ pocketllm_moe_
MoE shm header magic DSV4MOE1 PKTLMOE1
GGUF capture tag dsv4_runtime_capture pocketllm_runtime_capture
Attention kind label dsv4_mla_compressed_sparse deepseek_v4_mla_compressed_sparse
CUDA device function dsv4_dp4a_i8 pocket_dp4a_i8

The shared-memory names are still overridable through DEEPSEEK_CPU_MOE_SERVER_SHM, which is unchanged. The header magic is the same width (8 bytes), so a stale segment left by an old process is rejected rather than misread. The GGUF capture tag is only ever written into metadata, and the attention-kind label is only ever printed — neither is matched anywhere, so neither affects dispatch or the ability to read existing files.

Scratch paths, lock files, log names, and NCCL rendezvous files under /tmp moved from dsv4_* to pocketllm_*. These are per-run temporaries; nothing persists across the rename.

Environment variables

Every DSV4_* variable is now POCKETLLM_* with the rest of the name unchanged, so the mechanical translation is a prefix substitution:

# before
DSV4_QWEN_GQA_OPTIMIZED=1 DSV4_CPP_PREFILL_BATCHED_ATTN=1 ./dsv4_cpp_engine ...
# after
POCKETLLM_QWEN_GQA_OPTIMIZED=1 POCKETLLM_CPP_PREFILL_BATCHED_ATTN=1 ./pocketllm_engine ...

QWEN_*, GLM_*, DEEPSEEK_*, and TP_* variables are not affected.

To rewrite a saved script in place:

sed -i 's/\bDSV4_/POCKETLLM_/g' your_script.sh

The complete list of the 161 renamed variables follows.

Old New
DSV4_BENCH_MODE POCKETLLM_BENCH_MODE
DSV4_CKPT_DIR POCKETLLM_CKPT_DIR
DSV4_CPP_BATCHED_VERIFY POCKETLLM_CPP_BATCHED_VERIFY
DSV4_CPP_DEBUG_FORWARD POCKETLLM_CPP_DEBUG_FORWARD
DSV4_CPP_DECODE_PROFILE POCKETLLM_CPP_DECODE_PROFILE
DSV4_CPP_DECODE_SPARSE_ARENA POCKETLLM_CPP_DECODE_SPARSE_ARENA
DSV4_CPP_DECODE_WO_A_INT8 POCKETLLM_CPP_DECODE_WO_A_INT8
DSV4_CPP_DENSE_ARENA_MAX_LAYERS POCKETLLM_CPP_DENSE_ARENA_MAX_LAYERS
DSV4_CPP_EOS_TOKEN_ID POCKETLLM_CPP_EOS_TOKEN_ID
DSV4_CPP_GPU_COMPRESSOR POCKETLLM_CPP_GPU_COMPRESSOR
DSV4_CPP_MOE_DETERMINISTIC_REDUCE POCKETLLM_CPP_MOE_DETERMINISTIC_REDUCE
DSV4_CPP_MOE_FORCE_PADDED POCKETLLM_CPP_MOE_FORCE_PADDED
DSV4_CPP_MOE_NSPLIT POCKETLLM_CPP_MOE_NSPLIT
DSV4_CPP_MOE_WMMA_WARPS POCKETLLM_CPP_MOE_WMMA_WARPS
DSV4_CPP_NCCL_ID_WAIT_ATTEMPTS POCKETLLM_CPP_NCCL_ID_WAIT_ATTEMPTS
DSV4_CPP_PREFILL_BATCHED_ATTN POCKETLLM_CPP_PREFILL_BATCHED_ATTN
DSV4_CPP_PREFILL_CHUNK POCKETLLM_CPP_PREFILL_CHUNK
DSV4_CPP_PREFILL_CHUNK_TOKENS POCKETLLM_CPP_PREFILL_CHUNK_TOKENS
DSV4_CPP_PREFILL_GPU_HASH_GATE POCKETLLM_CPP_PREFILL_GPU_HASH_GATE
DSV4_CPP_PREFILL_MOE_COPY_STREAM POCKETLLM_CPP_PREFILL_MOE_COPY_STREAM
DSV4_CPP_PREFILL_MOE_PREFETCH POCKETLLM_CPP_PREFILL_MOE_PREFETCH
DSV4_CPP_PREFILL_PRESTAGE_EXPERTS POCKETLLM_CPP_PREFILL_PRESTAGE_EXPERTS
DSV4_CPP_PREFILL_ROUTE_STATS POCKETLLM_CPP_PREFILL_ROUTE_STATS
DSV4_CPP_PREFILL_SHARED_OVERLAP POCKETLLM_CPP_PREFILL_SHARED_OVERLAP
DSV4_CPP_PREFILL_WARMUP_PASSES POCKETLLM_CPP_PREFILL_WARMUP_PASSES
DSV4_CPP_PREPARE_FP4_HOST POCKETLLM_CPP_PREPARE_FP4_HOST
DSV4_CPP_PREPARE_PROGRESS POCKETLLM_CPP_PREPARE_PROGRESS
DSV4_CPP_PROFILE_ATTN POCKETLLM_CPP_PROFILE_ATTN
DSV4_CPP_PROFILE_FORWARD POCKETLLM_CPP_PROFILE_FORWARD
DSV4_CPP_PROFILE_MOE_HOST POCKETLLM_CPP_PROFILE_MOE_HOST
DSV4_CPP_PROFILE_MOE_PREFILL POCKETLLM_CPP_PROFILE_MOE_PREFILL
DSV4_CPP_PROFILE_MOE_STAGE POCKETLLM_CPP_PROFILE_MOE_STAGE
DSV4_CPP_PROFILE_REDUCE_DETAIL POCKETLLM_CPP_PROFILE_REDUCE_DETAIL
DSV4_CPP_TOPK_DIAG POCKETLLM_CPP_TOPK_DIAG
DSV4_DFLASH2_ADAPTIVE_WIDTH POCKETLLM_DFLASH2_ADAPTIVE_WIDTH
DSV4_DFLASH2_CUBLAS_FP32 POCKETLLM_DFLASH2_CUBLAS_FP32
DSV4_DFLASH2_DOWNLOAD_CANDIDATES POCKETLLM_DFLASH2_DOWNLOAD_CANDIDATES
DSV4_DFLASH2_DRAFT_WIDTH POCKETLLM_DFLASH2_DRAFT_WIDTH
DSV4_DFLASH2_FUSED_SWIGLU POCKETLLM_DFLASH2_FUSED_SWIGLU
DSV4_DFLASH2_GROUPED_ATTN POCKETLLM_DFLASH2_GROUPED_ATTN
DSV4_DFLASH2_PROFILE POCKETLLM_DFLASH2_PROFILE
DSV4_DFLASH2_REFINE_PASSES POCKETLLM_DFLASH2_REFINE_PASSES
DSV4_DFLASH2_SHARD POCKETLLM_DFLASH2_SHARD
DSV4_DFLASH2_SMALL_BATCH_GEMM POCKETLLM_DFLASH2_SMALL_BATCH_GEMM
DSV4_DFLASH2_SPLIT_TOPK POCKETLLM_DFLASH2_SPLIT_TOPK
DSV4_DFLASH2_VITERBI_SELECTOR POCKETLLM_DFLASH2_VITERBI_SELECTOR
DSV4_DSPARK_LM_HEAD_CUBLAS POCKETLLM_DSPARK_LM_HEAD_CUBLAS
DSV4_GGUF_CHUNKED_PREFILL POCKETLLM_GGUF_CHUNKED_PREFILL
DSV4_GGUF_DEBUG_LOGIT_TOKENS POCKETLLM_GGUF_DEBUG_LOGIT_TOKENS
DSV4_GGUF_DECODE_ONLY_ATTENTION_ONLY POCKETLLM_GGUF_DECODE_ONLY_ATTENTION_ONLY
DSV4_GGUF_DECODE_ONLY_CONTEXT POCKETLLM_GGUF_DECODE_ONLY_CONTEXT
DSV4_GGUF_DECODE_ONLY_WARMUP POCKETLLM_GGUF_DECODE_ONLY_WARMUP
DSV4_GGUF_DEVICE_ROUTE_SLOTS POCKETLLM_GGUF_DEVICE_ROUTE_SLOTS
DSV4_GGUF_FLASHMEMORY_CKPT POCKETLLM_GGUF_FLASHMEMORY_CKPT
DSV4_GGUF_FLASHMEMORY_ENSEMBLE POCKETLLM_GGUF_FLASHMEMORY_ENSEMBLE
DSV4_GGUF_FLASHMEMORY_LOAD_DEVICE POCKETLLM_GGUF_FLASHMEMORY_LOAD_DEVICE
DSV4_GGUF_FLASHMEMORY_METADATA_ONLY POCKETLLM_GGUF_FLASHMEMORY_METADATA_ONLY
DSV4_GGUF_FLASHMEMORY_MOCK_SCORER_SMOKE POCKETLLM_GGUF_FLASHMEMORY_MOCK_SCORER_SMOKE
DSV4_GGUF_FLASHMEMORY_PLUGIN POCKETLLM_GGUF_FLASHMEMORY_PLUGIN
DSV4_GGUF_FLASHMEMORY_RUNTIME_SCORING POCKETLLM_GGUF_FLASHMEMORY_RUNTIME_SCORING
DSV4_GGUF_FLASHMEMORY_SRC_LAYER POCKETLLM_GGUF_FLASHMEMORY_SRC_LAYER
DSV4_GGUF_HASH_TABLE_RESIDENT POCKETLLM_GGUF_HASH_TABLE_RESIDENT
DSV4_GGUF_HOST_LOGITS POCKETLLM_GGUF_HOST_LOGITS
DSV4_GGUF_INDEXED_ATTN POCKETLLM_GGUF_INDEXED_ATTN
DSV4_GGUF_INDEXED_ATTN_AUTO_THRESHOLD POCKETLLM_GGUF_INDEXED_ATTN_AUTO_THRESHOLD
DSV4_GGUF_INDEXED_ATTN_WINDOW POCKETLLM_GGUF_INDEXED_ATTN_WINDOW
DSV4_GGUF_IQ1_FUSED_W13_SWIGLU POCKETLLM_GGUF_IQ1_FUSED_W13_SWIGLU
DSV4_GGUF_IQ1_W2_REDUCE POCKETLLM_GGUF_IQ1_W2_REDUCE
DSV4_GGUF_KV_SWAP POCKETLLM_GGUF_KV_SWAP
DSV4_GGUF_KV_SWAP_GPU_CHUNKS POCKETLLM_GGUF_KV_SWAP_GPU_CHUNKS
DSV4_GGUF_KV_SWAP_PINNED_MIB POCKETLLM_GGUF_KV_SWAP_PINNED_MIB
DSV4_GGUF_KV_SWAP_SYNC POCKETLLM_GGUF_KV_SWAP_SYNC
DSV4_GGUF_KV_SWAP_TEST_ALLOW_TOPK_REDUCTION POCKETLLM_GGUF_KV_SWAP_TEST_ALLOW_TOPK_REDUCTION
DSV4_GGUF_KV_SWAP_VALIDATE POCKETLLM_GGUF_KV_SWAP_VALIDATE
DSV4_GGUF_LOAD_ONLY POCKETLLM_GGUF_LOAD_ONLY
DSV4_GGUF_MEM_PROFILE POCKETLLM_GGUF_MEM_PROFILE
DSV4_GGUF_MIN_FREE_MIB POCKETLLM_GGUF_MIN_FREE_MIB
DSV4_GGUF_MOE_COPY_STREAM POCKETLLM_GGUF_MOE_COPY_STREAM
DSV4_GGUF_PINNED_STAGE POCKETLLM_GGUF_PINNED_STAGE
DSV4_GGUF_PINNED_STAGE_CAP_MIB POCKETLLM_GGUF_PINNED_STAGE_CAP_MIB
DSV4_GGUF_PINNED_STAGE_SLOTS POCKETLLM_GGUF_PINNED_STAGE_SLOTS
DSV4_GGUF_PREFILL_ATTN_MAX_INDEX_ELEMS POCKETLLM_GGUF_PREFILL_ATTN_MAX_INDEX_ELEMS
DSV4_GGUF_PREFILL_ATTN_WINDOW POCKETLLM_GGUF_PREFILL_ATTN_WINDOW
DSV4_GGUF_PREFILL_CHUNK_TOKENS POCKETLLM_GGUF_PREFILL_CHUNK_TOKENS
DSV4_GGUF_PREFILL_HEADPAIR_ATTN POCKETLLM_GGUF_PREFILL_HEADPAIR_ATTN
DSV4_GGUF_PREFILL_HEADPAIR_SERIAL_ATTN POCKETLLM_GGUF_PREFILL_HEADPAIR_SERIAL_ATTN
DSV4_GGUF_PREFILL_INDEXED_ATTN POCKETLLM_GGUF_PREFILL_INDEXED_ATTN
DSV4_GGUF_PREFILL_INDEXED_ATTN_MAX_TOPK POCKETLLM_GGUF_PREFILL_INDEXED_ATTN_MAX_TOPK
DSV4_GGUF_PREFILL_REFINE_LAST POCKETLLM_GGUF_PREFILL_REFINE_LAST
DSV4_GGUF_PREFILL_REFINE_LAST_TOKENS POCKETLLM_GGUF_PREFILL_REFINE_LAST_TOKENS
DSV4_GGUF_PREFILL_SHARED_OVERLAP POCKETLLM_GGUF_PREFILL_SHARED_OVERLAP
DSV4_GGUF_PROFILE POCKETLLM_GGUF_PROFILE
DSV4_GGUF_REDUCE_FP32 POCKETLLM_GGUF_REDUCE_FP32
DSV4_GGUF_RESIDENT_ROUTED_EXPERTS POCKETLLM_GGUF_RESIDENT_ROUTED_EXPERTS
DSV4_GGUF_RESIDENT_ROUTED_LAYERS POCKETLLM_GGUF_RESIDENT_ROUTED_LAYERS
DSV4_GGUF_SPARSE_ATTN_THRESHOLD POCKETLLM_GGUF_SPARSE_ATTN_THRESHOLD
DSV4_GGUF_SPARSE_COMPRESSOR POCKETLLM_GGUF_SPARSE_COMPRESSOR
DSV4_GGUF_SPARSE_INDEXER POCKETLLM_GGUF_SPARSE_INDEXER
DSV4_GGUF_SPARSE_WINDOW POCKETLLM_GGUF_SPARSE_WINDOW
DSV4_GGUF_VERBOSE POCKETLLM_GGUF_VERBOSE
DSV4_IQ1_GROUPED_GEMM POCKETLLM_IQ1_GROUPED_GEMM
DSV4_IQ1_GROUPED_GEMM_NSPLIT POCKETLLM_IQ1_GROUPED_GEMM_NSPLIT
DSV4_IQ1_GROUPED_GEMM_W13 POCKETLLM_IQ1_GROUPED_GEMM_W13
DSV4_IQ1_GROUPED_GEMM_W2 POCKETLLM_IQ1_GROUPED_GEMM_W2
DSV4_IQ1_GROUPED_PROFILE POCKETLLM_IQ1_GROUPED_PROFILE
DSV4_IQ1_GROUPED_ROUTE_MAJOR POCKETLLM_IQ1_GROUPED_ROUTE_MAJOR
DSV4_IQ1_GROUPED_ROUTE_TILE4 POCKETLLM_IQ1_GROUPED_ROUTE_TILE4
DSV4_IQ1_GROUPED_W2_Q8 POCKETLLM_IQ1_GROUPED_W2_Q8
DSV4_Q2_PREFILL_W13_EXPERT_TILE POCKETLLM_Q2_PREFILL_W13_EXPERT_TILE
DSV4_Q2_PREFILL_W2_EXPERT_TILE POCKETLLM_Q2_PREFILL_W2_EXPERT_TILE
DSV4_Q2_PREFILL_W2_ROUTE_TILE POCKETLLM_Q2_PREFILL_W2_ROUTE_TILE
DSV4_Q8_ROWS_BATCH4 POCKETLLM_Q8_ROWS_BATCH4
DSV4_QWEN4_ATTN_PHASE_PROFILE POCKETLLM_QWEN4_ATTN_PHASE_PROFILE
DSV4_QWEN4_CPU_AFFINITY POCKETLLM_QWEN4_CPU_AFFINITY
DSV4_QWEN4_DENSE_FP16 POCKETLLM_QWEN4_DENSE_FP16
DSV4_QWEN4_DENSE_FP16_FP32_OUTPUT POCKETLLM_QWEN4_DENSE_FP16_FP32_OUTPUT
DSV4_QWEN4_DENSE_FP16_MIN_ROWS POCKETLLM_QWEN4_DENSE_FP16_MIN_ROWS
DSV4_QWEN4_GDN_CUDA POCKETLLM_QWEN4_GDN_CUDA
DSV4_QWEN4_GDN_GROUPS_PER_CTA POCKETLLM_QWEN4_GDN_GROUPS_PER_CTA
DSV4_QWEN4_HC_CUDA POCKETLLM_QWEN4_HC_CUDA
DSV4_QWEN4_HC_CUDA_MIN_ROWS POCKETLLM_QWEN4_HC_CUDA_MIN_ROWS
DSV4_QWEN4_HC_FP16 POCKETLLM_QWEN4_HC_FP16
DSV4_QWEN4_HC_FP16_FP32_OUTPUT POCKETLLM_QWEN4_HC_FP16_FP32_OUTPUT
DSV4_QWEN4_HC_FP16_INJECT POCKETLLM_QWEN4_HC_FP16_INJECT
DSV4_QWEN4_HC_FP16_MIN_ROWS POCKETLLM_QWEN4_HC_FP16_MIN_ROWS
DSV4_QWEN4_HC_FP16_MIX_DOWN POCKETLLM_QWEN4_HC_FP16_MIX_DOWN
DSV4_QWEN4_HC_FP16_MIX_UP POCKETLLM_QWEN4_HC_FP16_MIX_UP
DSV4_QWEN4_MOE_FP16_COMPUTE POCKETLLM_QWEN4_MOE_FP16_COMPUTE
DSV4_QWEN4_MOE_FP16_MIN_TOKENS POCKETLLM_QWEN4_MOE_FP16_MIN_TOKENS
DSV4_QWEN4_MOE_GROUPED POCKETLLM_QWEN4_MOE_GROUPED
DSV4_QWEN4_MOE_GROUPED_MAX_PADDING POCKETLLM_QWEN4_MOE_GROUPED_MAX_PADDING
DSV4_QWEN4_MOE_GROUPED_MIN_FREE_GIB POCKETLLM_QWEN4_MOE_GROUPED_MIN_FREE_GIB
DSV4_QWEN4_MOE_GROUPED_MIN_TOKENS POCKETLLM_QWEN4_MOE_GROUPED_MIN_TOKENS
DSV4_QWEN4_MOE_PHASE_PROFILE POCKETLLM_QWEN4_MOE_PHASE_PROFILE
DSV4_QWEN4_MOE_PREFETCH POCKETLLM_QWEN4_MOE_PREFETCH
DSV4_QWEN4_PROFILE_TREE POCKETLLM_QWEN4_PROFILE_TREE
DSV4_QWEN4_QSA_CUDA POCKETLLM_QWEN4_QSA_CUDA
DSV4_QWEN4_QSA_FALLBACK_ROWS POCKETLLM_QWEN4_QSA_FALLBACK_ROWS
DSV4_QWEN4_QSA_MMA POCKETLLM_QWEN4_QSA_MMA
DSV4_QWEN_DECODE_GROUP_HEADS POCKETLLM_QWEN_DECODE_GROUP_HEADS
DSV4_QWEN_DECODE_MAX_SPLITS POCKETLLM_QWEN_DECODE_MAX_SPLITS
DSV4_QWEN_DECODE_MMA POCKETLLM_QWEN_DECODE_MMA
DSV4_QWEN_DECODE_MMA_TARGET_SPLITS POCKETLLM_QWEN_DECODE_MMA_TARGET_SPLITS
DSV4_QWEN_DECODE_SPLIT_POSITIONS POCKETLLM_QWEN_DECODE_SPLIT_POSITIONS
DSV4_QWEN_DECODE_TARGET_SPLITS POCKETLLM_QWEN_DECODE_TARGET_SPLITS
DSV4_QWEN_GQA_FLASH_TILE POCKETLLM_QWEN_GQA_FLASH_TILE
DSV4_QWEN_GQA_HEADS_PER_GROUP POCKETLLM_QWEN_GQA_HEADS_PER_GROUP
DSV4_QWEN_GQA_LONG_TILE POCKETLLM_QWEN_GQA_LONG_TILE
DSV4_QWEN_GQA_MMA_OCC POCKETLLM_QWEN_GQA_MMA_OCC
DSV4_QWEN_GQA_MMA_TILE POCKETLLM_QWEN_GQA_MMA_TILE
DSV4_QWEN_GQA_OPTIMIZED POCKETLLM_QWEN_GQA_OPTIMIZED
DSV4_QWEN_GQA_POS_TILE POCKETLLM_QWEN_GQA_POS_TILE
DSV4_QWEN_GQA_QUERY_ROWS POCKETLLM_QWEN_GQA_QUERY_ROWS
DSV4_QWEN_GQA_WARP_COMBO POCKETLLM_QWEN_GQA_WARP_COMBO
DSV4_QWEN_KV_CACHE_DTYPE POCKETLLM_QWEN_KV_CACHE_DTYPE
DSV4_QWEN_NVFP4 POCKETLLM_QWEN_NVFP4
DSV4_QWEN_NVFP4_FUSED_SWIGLU POCKETLLM_QWEN_NVFP4_FUSED_SWIGLU
DSV4_QWEN_NVFP4_SHARED_Q8_SWIGLU POCKETLLM_QWEN_NVFP4_SHARED_Q8_SWIGLU
DSV4_QWEN_NVFP4_WIDE_N64 POCKETLLM_QWEN_NVFP4_WIDE_N64
DSV4_QWEN_NVFP4_WIDE_N64_MIN_ROWS POCKETLLM_QWEN_NVFP4_WIDE_N64_MIN_ROWS
DSV4_TMP_DIR POCKETLLM_TMP_DIR