DBRX, databricks가 공개한 새로운 Open LLM

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

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

:gift: 아래:arrow_lower_right:쪽에 좋아요:heart:를 눌러주시면 힘이 됩니다~ :star_struck:

2개의 좋아요

좋은 정보 감사합니다!

1개의 좋아요

:star_struck: 까리하네요, 한번 사용해 봐야겠네요!