Vai al contenuto

DeepInfer di DeepSeek ora è open source: inferenza offline per V4.1 Flash

Logo di DeepInfer
Logo: DeepSeek

DeepSeek ha pubblicato DeepInfer, il framework con cui, secondo l’azienda, serve i propri modelli in produzione su larga scala. Come si legge nella pagina ufficiale del progetto su GitHub, il codice è ora pubblico con licenza Apache 2.0, ma in una versione limitata all’inferenza offline e a un solo modello, DeepSeek-V4.1-Flash. Funziona su GPU NVIDIA e NPU Huawei; secondo DeepSeek, per un servizio completo mancano ancora alcuni componenti.

Cosa sa fare DeepInfer

Secondo DeepSeek, la release open source offre inferenza offline con le funzioni di base necessarie a servire modelli su larga scala. Tra quelle documentate:

  • scheduling asincrono, con un batch scheduler a overhead zero: la CPU prepara i batch mentre il dispositivo sta già eseguendo; è attivo di default;
  • DSpark e verifica schedulata per confidenza: la decodifica viene accelerata con token di bozza (cioè proposti in anticipo) e le stime di confidenza decidono quando programmare la verifica. Si abilita con DEEPINFER_ENABLE_MTP_VARLEN=1, mentre DEEPINFER_USE_NEXTN_DECODE regola la lunghezza massima della bozza (il valore predefinito è 5);
  • SWA bounded replay nel decoder: il lavoro di prefill, la fase in cui il modello legge il prompt, si riduce rigiocando solo un suffisso limitato dei token.

Il progetto supporta inoltre il parallelismo Attention DP / balanced CP e MoE EP + EPLB.

Risultati ripetibili e output vincolati

Due funzioni riguardano la riproducibilità, ed entrambe sono indicate come disponibili solo su NVIDIA. L’inferenza batch-invariant fa sì che i risultati restino identici al variare della composizione del batch, e si attiva con DEEPINFER_BATCH_INVARIANT=1.

Il campionamento deterministico garantisce lo stesso output a parità di token in ingresso e di parametri. Per ottenerlo servono DEEPINFER_BATCH_INVARIANT=1, DEEPINFER_ENABLE_MTP_VARLEN=0 e un valore fisso di seq_seed in SamplingParams. Gli output strutturati, vincolati a una regex, a uno schema JSON o a una grammatica EBNF, si ottengono passando ai parametri di campionamento so_args={"schema_type": ..., "schema": ...}; il repository include degli esempi.

Cosa manca per un servizio completo

DeepSeek elenca ciò che non è incluso e serve per un servizio completo:

  • un sistema di cache KV;
  • la disaggregazione VE/Prefill/Decode, per la quale la maggior parte delle funzioni di motore richieste è però già implementata;
  • il bilanciamento del carico tra repliche data-parallel, sia per il prefill sia per il decode.

Hardware e requisiti

L’hardware supportato è composto da GPU NVIDIA SM100 e NPU Huawei Ascend 950. Requisiti:

  • Linux;
  • GCC 13.0 o successivo;
  • Python 3.12;
  • CUDA 13, solo per NVIDIA;
  • CANN 9.2, solo per Ascend.

I benchmark di prefill e decode sono stati misurati su 4 GPU SM100 per il prefill e 64 per il decode, ciascuno all’interno di un singolo scale-up domain. Per riprodurli c’è lo script run_sweep.sh, mentre i risultati di valutazione si trovano in eval/README.md.

Come provarlo

Si parte da un ambiente Python 3.12 vuoto, si esporta DEEPINFER_ACCELERATOR=nvidia (oppure ascend per la piattaforma Ascend) e si lancia ./build.sh. DeepSeek precisa che la variabile va tenuta esportata nell’ambiente in cui si userà DeepInfer.

Per l’inferenza si esegue python examples/offline_inference.py. Il checkpoint predefinito, deepseek-ai/DeepSeek-V4.1-Flash-1017, viene scaricato nella cache di Hugging Face al primo avvio; per usare una copia locale si imposta DEEPINFER_HF_MODEL_DIR con il percorso della cartella.

Leggi anche