KoBART

한국어 BART 모델 (Korean BART)

    KoBART는 한국어 텍스트 생성 및 요약에 특화된 BART(Bidirectional and Auto-Regressive Transformers) 모델입니다. Encoder-Decoder 구조를 활용하여 다양한 자연어 생성 태스크에서 우수한 성능을 발휘합니다.

    KoBART

    프로젝트 정보

    주요 특징

    1. Encoder-Decoder 아키텍처

    • 양방향 인코더와 자동회귀 디코더
    • 텍스트 생성 및 변환 작업에 최적화
    • 문맥 이해와 생성의 균형

    2. 주요 활용 분야

    • 텍스트 요약: 긴 문서를 짧게 요약
    • 문장 생성: 자연스러운 한국어 문장 생성
    • 번역: 문장 변환 및 paraphrasing
    • 대화 생성: 질문-응답 시스템

    3. 한국어 최적화

    • 한국어 코퍼스로 사전학습
    • 한국어 문법 및 어순 고려
    • 다양한 한국어 도메인 지원

    설치 및 사용법

    설치

    pip install transformers torch
    

    기본 텍스트 요약

    from transformers import PreTrainedTokenizerFast, BartForConditionalGeneration
    
    # 모델 및 토크나이저 로드
    tokenizer = PreTrainedTokenizerFast.from_pretrained('gogamza/kobart-base-v2')
    model = BartForConditionalGeneration.from_pretrained('gogamza/kobart-base-v2')
    
    # 긴 텍스트 요약
    text = """
    SK텔레콤은 한국 최대의 이동통신사로, AI, 5G, 클라우드 등 
    다양한 ICT 기술을 보유하고 있습니다. 최근에는 한국어 
    대규모 언어 모델 A.X를 개발하여 오픈소스로 공개했으며,
    이를 통해 국내 AI 생태계 발전에 기여하고 있습니다.
    """
    
    # 인코딩 및 요약 생성
    inputs = tokenizer(text, return_tensors='pt', max_length=1024, truncation=True)
    summary_ids = model.generate(
        inputs['input_ids'],
        max_length=150,
        num_beams=5,
        early_stopping=True
    )
    
    # 디코딩
    summary = tokenizer.decode(summary_ids[0], skip_special_tokens=True)
    print(summary)
    

    문장 생성 예제

    # Prompt 기반 텍스트 생성
    prompt = "인공지능 기술의 발전으로"
    
    inputs = tokenizer(prompt, return_tensors='pt')
    outputs = model.generate(
        inputs['input_ids'],
        max_length=100,
        temperature=0.8,
        do_sample=True,
        top_k=50
    )
    
    generated_text = tokenizer.decode(outputs[0], skip_special_tokens=True)
    print(generated_text)
    

    모델 스펙

    • Architecture: BART
    • Parameters: 123M
    • Vocabulary Size: 30,000
    • Max Sequence Length: 1,024
    • Encoder Layers: 6
    • Decoder Layers: 6

    Fine-tuning 가이드

    from transformers import Trainer, TrainingArguments
    
    # Fine-tuning 설정
    training_args = TrainingArguments(
        output_dir='./kobart-finetuned',
        num_train_epochs=3,
        per_device_train_batch_size=8,
        per_device_eval_batch_size=8,
        warmup_steps=500,
        weight_decay=0.01,
        logging_dir='./logs',
        evaluation_strategy="epoch"
    )
    
    # Trainer 생성
    trainer = Trainer(
        model=model,
        args=training_args,
        train_dataset=train_dataset,
        eval_dataset=eval_dataset
    )
    
    # 학습 실행
    trainer.train()
    

    리소스