DeepSeek-V2: 강력하고 경제적이며 효율적인 전문가 혼합(MoE) 언어모델

DeepSeek-V2: 강력하고 경제적이며 효율적인 전문가 혼합(MoE) 언어모델

소개

DeepSeek-V2는 전문가 혼합(MoE, Mixture-of-Experts)을 기반으로 한 언어 모델로, 경제적인 훈련 비용과 효율적인 추론 성능을 자랑합니다. 이전 모델인 DeepSeek 67B와 비교하여 더 강력한 성능을 보이면서 훈련 비용은 42.5% 절감하고, KV 캐시도 93.3% 줄였습니다. 다양한 벤치마크에서 뛰어난 결과를 보여주는 이 모델의 세부 사항을 함께 알아보도록 하겠습니다.

DeepSeek-V2는 총 236B의 파라미터를 가지고 있으며, 토큰당 21B가 활성화되어 있습니다. 8.1조 토큰의 다양하고 고품질의 코퍼스에서 사전 훈련을 거쳤으며, 감독 학습(SFT)과 강화 학습(RL)을 통해 모델의 능력을 최대한 발휘할 수 있도록 했습니다. DeepSeek-V2의 이러한 구조는 모델의 훈련과 추론을 경제적으로 만들어주며, 동시에 성능을 크게 향상시킵니다.

활성화된 파라매터 대비 성능 비교: MMLU 벤치마크 기준
기존 DeepSeek 모델 대비 성능 비교

DeepSeek-V2는 이전 모델인 DeepSeek 67B와 비교할 때 더 높은 성능을 제공하며, 기존 모델 대비 훈련 비용과 메모리 사용량을 크게 줄였습니다. 또한, 다른 대형 모델들과의 비교에서도 높은 경쟁력을 보이는데, 특히 개방형 텍스트 생성과 코드 생성에서 우수한 결과를 나타냈습니다.

주요 특징

  • 경제적인 훈련: 모델의 경제적인 훈련은 연구자 및 개발자들이 비용 부담 없이 더 크고 강력한 모델을 훈련할 수 있게 해 줍니다.

  • 효율적인 추론: 낮은 KV 캐시 사용과 빠른 생성 처리량으로, 실시간 애플리케이션에서의 사용이 용이합니다.

  • 범용성: 다양한 언어 및 도메인에 걸쳐 우수한 성능을 발휘하며, 특히 코드 생성과 자연어 처리에서 뛰어납니다.

사용 방법

DeepSeek-V2는 Multi-head Latent Attention(MLA)과 DeepSeekMoE 아키텍처를 사용하여 주목할만한 성능 향상을 이루었습니다. MLA는 낮은 랭크의 키-값 유니언 압축을 활용하여 추론 시간의 키-값 캐시 병목 현상을 제거합니다. 이 모델은 Huggingface의 Transformers 라이브러리를 사용하여 쉽게 구현할 수 있으며, 아래는 Chat 모델을 로컬에서 실행하는 방법에 대한 예제 코드입니다:

import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, GenerationConfig

model_name = "deepseek-ai/DeepSeek-V2-Chat"
tokenizer = AutoTokenizer.from_pretrained(model_name, trust_remote_code=True)

# 설정에 따라 메모리를 조정
max_memory = {i: "75GB" for i in range(8)}

# 디바이스 맵 설정은 'auto'로 설정할 수 없음
model = AutoModelForCausalLM.from_pretrained(model_name, trust_remote_code=True, device_map="sequential", torch_dtype=torch.bfloat16, max_memory=max_memory, attn_implementation="eager")
model.generation_config = GenerationConfig.from_pretrained(model_name)
model.generation_config.pad_token_id = model.generation_config.eos_token_id

# 대화를 위한 메시지 작성 및 추론
messages = [
    {"role": "user", "content": "Write a piece of quicksort code in C++"}
]
input_tensor = tokenizer.apply_chat_template(messages, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(input_tensor.to(model.device), max_new_tokens=100)

result = tokenizer.decode(outputs[0][input_tensor.shape[1]:], skip_special_tokens=True)
print(result)

모델 다운로드

Model Context Length Download
DeepSeek-V2 128k :hugs: HuggingFace
DeepSeek-V2-Chat (RL) 128k :hugs: HuggingFace

라이선스

이 프로젝트는 MIT License로 공개 및 배포 되고 있습니다. 또한, DeepSeek-V2 모델의 사용은 Model License에 따라 상업적 사용이 가능합니다.

더 읽어보기

DeekSeek-v2 데모

DeepSeek-v2 논문

GItHub 저장소




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:kr:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: