이 모델은
kakaobank/kf-deberta-base를 기반으로
Discrete Diffusion 방식으로 chat fine-tuning을 수행한
실험적(PoC) 생성 모델입니다.
기존 MLM: 15% 고정 마스킹 → 빈칸 채우기만 가능
Diffusion: 0~100% 연속 마스킹 → 전체 시퀀스 생성 가능
1from transformers import AutoTokenizer, AutoModelForMaskedLM
2
3tokenizer = AutoTokenizer.from_pretrained("solonsophy/kf-deberta-gen")
4model = AutoModelForMaskedLM.from_pretrained("solonsophy/kf-deberta-gen")
1import torch
2import torch.nn.functional as F
3
4def generate_diffusion(model, tokenizer, question, num_steps=15, max_answer_len=80):
5 model.eval()
6 device = next(model.parameters()).device
7
8 MASK_ID = tokenizer.mask_token_id
9 CLS_ID = tokenizer.cls_token_id
10 SEP_ID = tokenizer.sep_token_id
11
12 # 질문 토큰화
13 q_tokens = tokenizer.encode(question, add_special_tokens=False)[:100]
14
15 # 초기: [CLS] Q [SEP] [MASK]*N
16 input_ids = [CLS_ID] + q_tokens + [SEP_ID] + [MASK_ID] * max_answer_len
17 input_ids = torch.tensor([input_ids[:256]], device=device)
18 answer_start = len(q_tokens) + 2
19
20 # Iterative denoising
21 for step in range(num_steps):
22 with torch.no_grad():
23 logits = model(input_ids).logits
24
25 mask_pos = (input_ids[0, answer_start:] == MASK_ID).nonzero().squeeze(-1) + answer_start
26 if len(mask_pos) == 0:
27 break
28
29 # Confidence 기반 unmask
30 mask_logits = logits[0, mask_pos] / 0.8 # temperature
31 probs = F.softmax(mask_logits, dim=-1)
32 tokens = torch.multinomial(probs, 1).squeeze(-1)
33 conf = probs.gather(1, tokens.unsqueeze(-1)).squeeze(-1)
34
35 k = max(1, len(mask_pos) // (num_steps - step))
36 top_idx = conf.topk(k).indices
37 input_ids[0, mask_pos[top_idx]] = tokens[top_idx]
38
39 # 결과 추출
40 answer = input_ids[0, answer_start:]
41 answer = answer[(answer != MASK_ID) & (answer != tokenizer.pad_token_id)]
42 return tokenizer.decode(answer, skip_special_tokens=True)
43
44# 사용 예시
45answer = generate_diffusion(model, tokenizer, "인공지능이란 무엇인가요?")
46print(answer)
본 모델은
DDOK.AI로부터 제공받은 컴퓨팅 리소스를 활용하여 학습되었습니다.
1@misc{kf-deberta-gen,
2 author = {Hong Seongmin},
3 title = {Generative Diffusion BERT: Korean Discrete Diffusion Language Model},
4 year = {2025},
5 publisher = {Hugging Face},
6 url = {https://huggingface.co/solonsophy/kf-deberta-gen}
7}