Kaggle 및 Hugging Face에 Keras 모델 게시

5월 02, 2024
Martin Görner Product Manager Keras

Kaggle의 업데이트

1년 전에 오픈한 Kaggle Models는 이미 다양한 조직에서 사전 학습된 약 4,000개의 모델을 갖추고 있습니다. Keras 모델 업로드와 함께 이제 Kaggle Models는 사용자도 참여할 수 있게 개방되었습니다. 전 세계와 공유하고 싶은 모델을 미세 조정한 경우, 작동 방식은 다음과 같습니다.

import keras
import keras_nlp
 
# 모델 로드
gemma = keras_nlp.models.CausalLM.from_preset("gemma_1.1_instruct_7b_en")
 
# 여기에서 모델을 미세 조정합니다. 예: Gemma는 해적처럼
# 말하도록 미세 조정되었습니다. bit.ly/gemma-pirate-demo를 참조하세요
# ...
 
# 미세 조정된 모델을 KerasNLP 사전 설정으로 저장합니다.
gemma.save_to_preset("./gemma-pirate-instruct-7b")
 
# Kaggle에 사전 설정을 새 모델 변형으로 업로드합니다.
kaggle_uri = "kaggle://my_kaggle_username/gemma-pirate/keras/gemma-pirate-instruct-7b"
keras_nlp.upload_preset(kaggle_uri, "./gemma-pirate-instruct-7b")

사용자가 맞춤형 미세 조정 버전에서 URL을 가리키는 한, 원본 Gemma를 로드하는 것처럼 정확하게 동일한 .from_preset(url) 호출을 사용하여 모델을 로드할 수 있습니다.

gemma = keras_nlp.models.CausalLM.from_preset("kaggle://my_kaggle_username/gemma-pirate/keras/gemma-pirate-instruct-7b")

Kaggle은 사용자가 업로드한 모델을 더 쉽게 검색할 수 있도록 모델 페이지를 제공합니다. 이 페이지에서 설명, 세부 조정에 사용되는 데이터 세트에 대한 세부 정보 등을 추가할 수 있습니다. 또한 이 페이지에서 업로드한 모델을 공개로 설정할 수도 있습니다(아래 스크린샷의 '설정' 탭).

Kaggle-Keras

Kaggle 팀이 아주 즐겁게 작업한 분야는 바로 사용성 평가입니다. 이를 통해 커뮤니티에서 모델을 확인하고 평가할 수 있도록 누락된 모델 세부 정보를 볼 수 있습니다.


Keras를 사용하는 이유는?

편리하게 업로드할 수 있도록 model.save_to_preset() 및 keras_nlp.upload_preset() 호출이 Keras에 바로 내장되어 있습니다. 어떤 형식으로든 모델을 업로드할 수 있지만, 모델 로드 지침을 게시하는 경우 Kaggle은 미리 학습된 모델에 대해 Keras가 제공하는 일관된 사용자 경험 때문에 Keras를 기본 설정된 모델 형식으로 선택했습니다.

그러나 가정을 확인하는 작업은 언제나 중요합니다. Google의 최신 공개 대규모 언어 모델(LLM)인 Gemma 모델의 출시는 훌륭한 테스트였습니다. Gemma 모델은 9가지 이상(!)의 형식으로 출시되었으며 Kaggle 다운로드 데이터를 포함합니다. Keras에 다른 모든 형식을 합친 것보다 2배 이상 많은 다운로드 데이터가 있습니다.

Gemma downloads on Kaggle since launch
Kaggle을 통해 이루어진 프레임워크별 Gemma 다운로드 수. 참고 1: Keras 버전은 JAX, PyTorch, Tensorflow에서 실행됩니다. 'pytorch' 다운로드 수는 순수한 pytorch 버전에 대한 것입니다. 참고 2: 'transformers' 다운로드 수는 Hugging Face가 아닌 Kaggle에서 Gemma의 HF transformers 버전을 다운로드한 횟수를 나타냅니다.

Kaggle은 Gemma 대회를 두 차례 진행했으며 이러한 대회를 위한 KerasNLP 스타터 노트북은 대회 간에 950회 이상 복사되었습니다(내부 벤치마크: 복사 500개 초과 = "와, Kaggle 참가자들이 유용하다고 판단했습니다", 복사 1,000개 초과 = "놀랍군요").

그리고 Kaggler 참가자들은 이러한 모델로 꽤 놀라운 일들을 하고 있는데, 아래와 같이 몇 가지를 소개합니다.

노트북 제공은 Kaggle에서 수정된 모델을 커뮤니티와 공유하는 유일한 방법이었습니다. 그러나 미세 조정에 몇 시간씩 걸리므로 Kaggle 모델로서는 최종 결과를 직접 공유할 수 있는 것이 훨씬 좋습니다.


여기서 끝이 아닙니다. Hugging Face가 있습니다!

이번 릴리스를 통해 KerasNLP는 Hugging Face에서 가장 중요한 일원이 되었습니다. Keras 모델은 Transformer 또는 Diffuser와 동일한 방식으로, Hugging Face에서 지원되는 사전 학습된 모델 라이브러리 중 하나인 KerasNLP를 사용해 Hugging Face에서 직접 로드할 수 있습니다. 예를 들어 Hugging Face의 Gemma Keras 페이지가 있다면, 다음을 사용하여 모델을 로드할 수 있습니다.

# 모델 로드
gemma = keras_nlp.models.CausalLM.from_preset("hf://google/gemma-7b-instruct-keras")

Hugging Face에 모델을 업로드하는 방법은 다음과 같습니다. Kaggle 업로드와 비교해 유일하게 다른 점은 URL에 'kaggle://' 대신 'hf://'를 사용한다는 것입니다.

# 모델을 미세 조정한 다음
# ...
# KerasNLP 사전 설정으로 저장합니다.
gemma.save_to_preset('./gemma-pirate-instruct-7b)
 
 
# 사전 설정을 Hugging Face Hub에 업로드합니다.
hf_uri = "hf://my_hf_username/gemma-pirate-instruct-7b"
keras_nlp.upload_preset(hf_uri, './gemma-pirate-instruct-7b)

그 결과, Hugging Face에 자동 입력된 모델 카드가 생깁니다. 그 카드에 더 많은 정보를 추가하고 'settings' 탭을 통해 모델을 공개할 수 있습니다.

Hugging-Face-Keras

Hugging Face에서 모델이 자동으로 인식되고 'KerasNLP' 및 'Text Generation'으로 태그가 자동으로 지정되는 방식에 주목하세요.


Kaggle 또는 Hugging Face에서 직접 해 볼 차례

이제 여러분이 직접 시험해 볼 차례입니다. 마음껏 모델을 업로드해 보세요!

모델 업로드 코드를 직접 사용해 보려면 Kaggle 및 Hugging Face에 Gemma 7B 비공식 업로드를 시도해 보세요.

이 기능에 대한 공식 문서는 여기에서 확인하세요.