danielhanchen's picture
Upload folder using huggingface_hub
fa50b55 verified
|
Raw
History Blame Contribute Delete
1.87 kB

Minimal inference

This directory contains a readable reference implementation rather than a production serving engine. The model code includes Vision + Aligner, DFlash, MoE, Hyper-Connections, and Transformer.forward_spec() for the DSpark forward path. The generation loop remains straightforward autoregressive sampling.

Install

python -m pip install -r requirements.txt

Convert Hugging Face weights

The reference runtime uses one converted checkpoint file per tensor-parallel rank. From this directory:

export HF_CKPT_PATH=/path/to/DeepSeek-V4-Flash-Vision-Exp-HF
export SAVE_PATH=/path/to/DeepSeek-V4-Flash-Vision-Exp-TP4
export MP=4

python convert.py \
  --hf-ckpt-path "${HF_CKPT_PATH}" \
  --save-path "${SAVE_PATH}" \
  --n-experts 256 \
  --model-parallel "${MP}" \
  --expert-dtype fp4

convert.py also copies tokenizer.json and tokenizer_config.json into the converted checkpoint directory. --tokenizer-path can be used when tokenizer files live outside the weight directory.

Run the equivalent TXT and JSON examples

export CKPT_PATH=/path/to/DeepSeek-V4-Flash-Vision-Exp-TP4
export MP=4

INPUT_FILE=examples/example_vl.txt ./run.sh
INPUT_FILE=examples/example_vl_harmony.json ./run.sh

The two files express the same interleaved two-image prompt and therefore produce identical encoded prompts and input token IDs.

For interactive chat:

torchrun --nproc-per-node "${MP}" generate.py \
  --ckpt-path "${CKPT_PATH}" \
  --config config.json \
  --interactive \
  --temperature 1.0

For multi-node execution, pass the usual torchrun --nnodes, --node-rank, --master-addr, and --master-port arguments before generate.py.

Preprocessing tests

From the repository root:

python -m pytest -q \
  encoding/test_encoding_dsv4.py \
  inference/test_image_processor.py