Hugging Face와 KerasHub 통합

허깅 페이스와 KerasHub는 KerasHub 사용자가 Hugging Face Hub에서 Transformers 라이브러리로 만든 모델을 직접 로드할 수 있는 공유 모델 저장 형식을 도입했습니다. 이 통합은 KerasHub 사용자가 KerasHub용으로 특별히 빌드된 모델만 접근할 수 있었던 이전 제한을 제거하여, 30만 개 이상의 사전 훈련된 모델 라이브러리에 접근할 수 있게 합니다.

Direct Access to Transformers Models

KerasHub는 이제 from_preset 메서드를 사용하여 Transformers 라이브러리 체크포인트를 직접 로드할 수 있습니다. 이를 통해 사용자는 Keras로 처음부터 만들어지지 않은 다양한 파인튜닝된 모델을 활용할 수 있습니다.

처음에, 이 통합은 다음 아키텍처를 지원합니다:

  • Gemma (버전 1과 2)
  • Llama 3
  • PaliGemma

Multi-Framework Deployment

KerasHub 모델은 TensorFlow, JAX, 또는 PyTorch 백엔드를 사용하여 작동할 수 있기 때문에, 이 통합은 사용자가 단 한 줄의 코드로 이러한 프레임워크 중 어떤 것이든 Hugging Face 체크포인트를 로드할 수 있게 합니다. 이 기능은 TFLite로 배포하여 서빙하거나 JAX를 연구 목적으로 사용하는 등 특정 요구에 맞게 모델을 포팅하는 과정을 간소화합니다.

Technical Implementation

이 통합은 두 라이브러리 간의 구성 변수, 가중치 이름, 토크너 어휘를 매핑하여 작동합니다. Transformers 모델은 JSON 구성 파일, 토크너 파일, safetensors 가중치로 저장되므로, 두 라이브러리가 관련 아키텍처에 대한 모델링 코드를 가지고 있다면 KerasHub는 호환 가능한 체크포인트를 생성할 수 있습니다. 이 변환 과정은 라이브러리 내부에서 처리되므로 사용자가 수동으로 변환할 필요가 없습니다.

Usage and Configuration

이 통합을 사용하려면 사용자는 keras-hubkeras>=3.3.3로 업데이트해야 합니다.

Text Generation

사용자는 .generate 메서드를 사용하여 Transformers 모델을 로드하고 텍스트를 생성할 수 있습니다. 예를 들어, Hub에서 Llama 3 모델을 로드하는 방법은 다음과 같습니다:

from keras_hub.models import Llama3CausalLM

causal_lm = Llama3CausalLM.from_preset(
    "hf://NousResearch/Hermes-2-Pro-Llama-3-8B"
)

prompts = ["Your prompt here" ]
causal_lm.generate(prompts, max_length=200)

Precision and Backend Control

KerasHub는 모델 정밀도와 기본 컴퓨팅 백엔드를 쉽게 조정할 수 있습니다:

  • 정밀도 변경: 모델을 로드하기 전에 keras.config.set_dtype_policy("bfloat16\))를 통해 정밀도를 설정할 수 있습니다.
  • 백엔드 전환: 환경 변수 os.environ["KERAS_BACKEND\) = "jax\)를 설정하면 사용자는 JAX 백엔드를 사용하여 로드된 Transformers 체크포인트를 실행할 수 있습니다.

Supported Models

Llama 3를 넘어, 이 통합은 다음과 같이 명시적으로 지원합니다:

  • Gemma 2: 사용자는 google/gemma-2-9b(예)와 같은 Gemma 2 모델을 직접 로드할 수 있습니다.
  • PaliGemma: 파인튜닝된 버전을 포함한 모든 PaliGemma safetensor 체크포인트는 KerasHub 파이프라인에 통합할 수 있습니다.

Sources