Apache Spark, Delta Lake, MLflow 등의 개발사이자 MosaicML을 인수한 databricks에서 새로운 대규모 언어 모델 DBRX를 공개했습니다. DBRX는 기존의 공개 LLM(OpenLLM)들에 비해 더 나은 성능을 보이며, 특히 코드 작성 분야에서의 성능도 눈여겨볼만 합니다.
DBRX 소개
DBRX는 Databricks가 개발한 최신의 개방형 대규모 언어 모델(OpenLLM)로, 전문가들 혼합(MoE, Mixture-of-Experts) 아키텍처를 사용합니다. 이 모델은 프로그래밍 및 일반 언어 태스크에서 뛰어난 성능을 보이며, 132B의 전체 파라미터 중 36B가 활성화된 상태로 동작합니다.
모델 성능
Databricks가 공개한 DBRX 모델은 기존 GPT-3.5를 넘어서며, Gemini 1.0 Pro와 비교해도 경쟁력 있는 성능을 보입니다. 특히 프로그래밍 분야에서의 성능이 돋보이며, 이는 개발자 및 기술 관련 종사자들에게 도움이 될 것입니다. 또한, 이 모델은 효율적인 학습과 추론 성능을 자랑합니다.
DBRX 모델
공개된 모델들은 다음과 같습니다:
모델 저장소
DBRX Base, 기본 모델:
DBRX Instruct, 파인튜닝된 모델:
이 외에도 DBRX는 Databricks의 API를 통해 사용할 수 있으며, 사용자는 자체 DBRX급 모델을 처음부터 학습하거나 기존 체크포인트 위에 추가 학습을 진행할 수 있습니다.
또한, Hugging Face에서 DBRX Instruct 모델을 직접 사용해볼 수도 있습니다:
모델 사용법
CPU에서 실행하기
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("databricks/dbrx-instruct", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-instruct", device_map="cpu", torch_dtype=torch.bfloat16, trust_remote_code=True)
input_text = "What does it take to build a great LLM?"
messages = [{"role": "user", "content": input_text}]
input_ids = tokenizer.apply_chat_template(messages, return_dict=True, tokenize=True, add_generation_prompt=True, return_tensors="pt")
outputs = model.generate(**input_ids, max_new_tokens=200)
print(tokenizer.decode(outputs[0]))
여러 GPU에서 실행하기
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("databricks/dbrx-instruct", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-instruct", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
input_text = "What does it take to build a great LLM?"
messages = [{"role": "user", "content": input_text}]
input_ids = tokenizer.apply_chat_template(messages, return_dict=True, tokenize=True, add_generation_prompt=True, return_tensors="pt").to("cuda")
outputs = model.generate(**input_ids, max_new_tokens=200)
print(tokenizer.decode(outputs[0]))
FlashAttention2를 지원하는 경우, 모델 호출 시 attn_implementation=”flash_attention_2”
을 추가합니다.
예.
#model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-instruct", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("databricks/dbrx-instruct", device_map="cpu", torch_dtype=torch.bfloat16, trust_remote_code=True, attn_implementation=”flash_attention_2”)
더 읽어보기
https://www.databricks.com/blog/introducing-dbrx-new-state-art-open-llm
이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있으니 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다.
파이토치 한국 사용자 모임이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일로 보내드립니다! (기본은 Weekly지만 Daily로 변경도 가능합니다.)
아래쪽에 좋아요를 눌러주시면 힘이 됩니다~