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 사용
JetEngine 은 nano‑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