JetAstra/SDAR

SDAR (Synergy of Diffusion and AutoRegression), a large diffusion language model(1.7B, 4B, 8B, 30B)

🚀 SDAR 는 무엇인가요?

SDAR(Diffusion과 AutoRegression의 융합)는 두 가지 다른 생성 패러다임을 결합한 대규모 언어 모델 패밀리입니다.

  • 자기회귀(AR) – 전통적인 왼쪽에서 오른쪽으로 토큰 단위로 디코딩하는 방식으로 학습 비용이 낮습니다.
  • 이산 확산(Discrete diffusion) – 병렬 디코딩 기술로 한 번에 여러 토큰을 생성할 수 있습니다.

AR 모델의 학습 효율성과 확산 모델의 고처리량 디코딩을 결합함으로써, SDAR는 2~4배 빠른 추론 을 달성하면서도 최신 오픈소스 AR 모델과 동등한 정확도를 유지합니다. 이 프로젝트는 일반적인 LLM으로서의 위치를 지키면서도 과학적 추론 작업(예: GPQA, ChemBench)에서 뛰어난 전문 능력을 보여줍니다.


📦 사용 가능한 모델 (README 기준)

모델 크기 유형 Hugging Face 링크
SDAR‑1.7B‑Chat 1.7 B https://huggingface.co/JetLM/SDAR-1.7B-Chat
SDAR‑4B‑Chat 4 B https://huggingface.co/JetLM/SDAR-4B-Chat
SDAR‑8B‑Chat 8 B https://huggingface.co/JetLM/SDAR-8B-Chat
SDAR‑30B‑A3B‑Chat 30 B (MoE) https://huggingface.co/JetLM/SDAR-30B-A3B-Chat
SDAR‑30B‑A3B‑Sci 30 B (MoE) 과학적 추론 중심 https://huggingface.co/JetLM/SDAR-30B-A3B-Sci

모든 모델은 블록 크기 4, 8, 16, 32, 64를 지원합니다 (블록 크기는 확산 단계당 생성되는 토큰 수를 제어합니다).


⚙️ SDAR 사용 방법

1. 빠른 시작 추론 (내장 스크립트)

python generate.py \
  --model_dir=JetLM/SDAR-1.7B-Chat \
  --trust_remote_code

스크립트는 Hugging Face에서 모델을 다운로드하고, 🤗 Transformers (>= 4.52.4)로 로드한 후 그리디 생성을 수행합니다.

2. 고성능 배치 추론을 위한 JetEngine 사용

JetEnginenano‑vllm 기반의 가벼운 엔진으로, 밀집형 및 MoE형 SDAR 모델, 텐서 병렬, FlashAttention‑2를 지원합니다. 예시 (Python):

from jetengine import LLM, SamplingParams
from transformers import AutoTokenizer

model_path = "/path/to/model"
tokenizer = AutoTokenizer.from_pretrained(model_path, trust_remote_code=True)

llm = LLM(
    model_path,
    enforce_eager=True,
    tensor_parallel_size=1,
    mask_token_id=151669,
    block_length=4,
)

params = SamplingParams(
    temperature=1.0,
    topk=0,
    topp=1.0,
    max_tokens=256,
    remasking_strategy="low_confidence_dynamic",
    block_length=4,
    denoising_steps=4,
    dynamic_threshold=0.9,
)

prompt = tokenizer.apply_chat_template(
    [{"role": "user", "content": "강화학습을 간단한 말로 설명해 주세요."}],
    tokenize=False,
    add_generation_prompt=True,
)

for out in llm.generate_streaming([prompt], params):
    print(out)

벤치마크 (SDAR‑4B, 블록 크기 4, 배치 128):

  • NVIDIA A800 – 1800 토큰/초 이상
  • NVIDIA H200 – 3700 토큰/초 이상 (FlashAttention‑2 + Triton)

3. 프로덕션 수준 서빙을 위한 LMDeploy 사용

LMDeploy (InternLM)은 텐서 병렬 추론을 위한 완전한 파이프라인을 제공합니다. README에는 dllm_block_length, dllm_denoising_steps, 사용자 정의 언마스킹 전략 설정 예시가 포함되어 있습니다.


📊 보고된 성능

벤치마크 모델 (크기) 디코딩 방식 점수 (높을수록 좋음)
GPQA (과학 QA) SDAR‑30B‑A3B‑Sci 그리디 (블록 4, 4단계) AR‑30B‑A3B‑Sci를 초과
ChemBench SDAR‑30B‑A3B‑Sci 그리디 AR 대응 모델을 초과
일반 언어 작업 (예: MMLU, HELM) SDAR‑1.7B‑Chat 그리디 Qwen3‑1.7B‑AR‑SFT와 동등
4B / 8B / 30B에 대해 동일 SDAR‑4B‑Chat, SDAR‑8B‑Chat, SDAR‑30B‑A3B‑Chat 그리디 Qwen3‑AR 베이스라인과 유사

속도동적 디코딩 (신뢰도가 임계값을 초과하면 블록 생성을 조기에 종료)을 사용하면 정적 블록 디코딩 대비 2배 이상의 속도 향상 을 달성하며, 정확도 손실은 거의 없습니다. 모델 크기가 클수록 속도 우위가 커집니다.


🛠️ 개발 및 생태계

  • 학습 프레임워크 – 파인튜닝 스크립트는 training/ 디렉터리에 있으며, LLaMA‑Factory 코드베이스에 의존합니다.
  • 추론 엔진 – 두 가지 공식 옵션:
    • JetEngine (nano‑vllm 기반, GitHub에서 오픈소스)
    • LMDeploy (InternLM의 프로덕션 서버)
  • 로드맵 – 기술 보고서 이미 공개됨; 다음 단계는 추가 기능(미지정) 추가 및 모델 저널 확장 예정.

📜 라이선스 및 연락처

  • 라이선스: MIT (see LICENSE).
  • 연락처: Shuang Cheng (상하이 AI 랩) – chengshuang@pjlab.org.cn; Biqing Qi (교신 저자) – qibiqing@pjlab.org.cn.
  • 커뮤니티: 비공식 논의를 위한 WeChat 그룹이 홍보되고 있습니다.

TL;DR

SDAR는 전통적인 자기회귀 LLM의 저비용 학습을 유지하면서도 병렬 확산 디코딩을 통해 2~4배 빠른 생성 을 제공하는 오픈소스 확산 증강 언어 모델 패밀리입니다. 1.7 B ~ 30 B의 사전 학습된 가중치, 간단한 generate.py 스크립트, 두 가지 고성능 추론 백엔드(JetEngine 및 LMDeploy)를 제공합니다. 현재도 적극적으로 유지보수 중이며, 특히 과학적 추론 작업에 특화되어 있습니다.

관련

  • Dispatch
  • Dispatch
  • Dispatch
  • 프로젝트
  • Dispatch