콘텐츠로 이동

모델 API 개요

Optimum RBLN 라이브러리는 HuggingFace 모델을 RBLN NPU 하드웨어에서 사용하기 위한 API를 제공합니다. 이 개요에서는 API 설계와 사용 패턴에 초점을 맞춥니다.

API 설계

명명 규칙

Optimum RBLN은 다음과 같은 간단한 명명 패턴을 따릅니다:

  • 모델 클래스: 원래 HuggingFace 클래스 이름 앞에 "RBLN" 접두사 추가

    1
    2
    3
    4
    5
    # 원래 HuggingFace
    from transformers import LlamaForCausalLM
    
    # Optimum RBLN 동등 클래스
    from optimum.rbln import RBLNLlamaForCausalLM
    

  • 구성 클래스: RBLN 모델 클래스에 "Config" 접미사 추가

    # RBLN 모델 구성
    from optimum.rbln import RBLNLlamaForCausalLMConfig
    

정적 그래프 컴파일

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 개요를 참조하세요.