모델 API 개요
Optimum RBLN 라이브러리는 HuggingFace 모델을 RBLN NPU 하드웨어에서 사용하기 위한 API를 제공합니다. 이 개요에서는 API 설계와 사용 패턴에 초점을 맞춥니다.
API 설계
명명 규칙
Optimum RBLN은 다음과 같은 간단한 명명 패턴을 따릅니다:
정적 그래프 컴파일
RBLN SDK는 정적 계산 그래프로 작동하므로 특정 매개변수를 컴파일 시간에 지정해야 합니다. 여기에는 다음이 포함됩니다:
- 배치 크기
- 시퀀스 길이(언어 모델용)
- 텐서 병렬 크기(분산 실행용)
- 기타 모델별 매개변수
구성 클래스(RBLNModelNameConfig
)를 통해 이러한 정적 값을 지정할 수 있습니다.
지원되는 메소드
Optimum RBLN은 원래 HuggingFace 모델과 동일한 API 인터페이스를 유지합니다:
- 언어 모델은
.generate()
메소드 지원
- 비전 및 기타 모델은 직접 호출 구문(
model(inputs)
)과 .forward()
메소드 모두 지원
- Diffusers 파이프라인은
__call__()
메소드 지원(직접 호출 구문 사용)
사용 패턴
RBLN 모델을 설정하고 사용하는 여러 방법이 있습니다:
방법 1: rbln_* 매개변수 사용
| from optimum.rbln import RBLNLlamaForCausalLM
from transformers import AutoTokenizer
# 인라인 매개변수를 사용하여 모델 로드 및 컴파일
model = RBLNLlamaForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-chat-hf",
export=True, # 컴파일을 위해 True로 설정
rbln_batch_size=1,
rbln_max_seq_len=512, # 선택적, 지정하지 않으면 모델 구성에서 추론됨
rbln_tensor_parallel_size=4 # 다중 장치 실행용
)
# 토크나이저 로드 및 입력 준비
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-chat-hf")
inputs = tokenizer("Hello, I'm a language model", return_tensors="pt")
# 모델로 텍스트 생성
outputs = model.generate(**inputs, max_new_tokens=64)
|
방법 2: RBLNConfig 객체 사용 (권장)
| from optimum.rbln import RBLNLlamaForCausalLM, RBLNLlamaForCausalLMConfig
from transformers import AutoTokenizer
# RBLNConfig 객체를 통한 구성 정의
config = RBLNLlamaForCausalLMConfig(
batch_size=1,
max_seq_len=4096,
tensor_parallel_size=4
)
# 구성 객체로 모델 로드 및 컴파일
model = RBLNLlamaForCausalLM.from_pretrained(
"meta-llama/Llama-2-7b-chat-hf",
export=True,
rbln_config=config
)
# 토크나이저 로드 및 입력 준비
tokenizer = AutoTokenizer.from_pretrained("meta-llama/Llama-2-7b-chat-hf")
inputs = tokenizer("Hello, I'm a language model", return_tensors="pt")
# 모델로 텍스트 생성
outputs = model.generate(**inputs, max_new_tokens=64)
|
이점
- 손쉬운 대체: 원래 HuggingFace 임포트를 RBLN 동등 클래스로 교체
- 동일한 친숙한 API: 이미 익숙한 것과 동일한 메소드 사용
- 세밀한 제어: 최대 성능을 위한 정적 매개변수 구성
지원되는 모델 정보와 하드웨어 호환성에 대한 자세한 내용은 Optimum RBLN 개요를 참조하세요.