내 모델과 데모를 HuggingFace에 올려보자!

안녕하세요.

HuggingFace 10기 파트너 정정민입니다.


이전 포스팅의 내용으로


이제는 이 결과물들을 HuggingFace에 올려보려고 합니다!



모델 레포지토리 생성하기

먼저 허깅페이스(HuggingFace, 이하 HF)에서 내 모델을 올릴 공간을 생성합니다.

이를 레포지토리 (repository, 이하 레포)라고 해요.


HF 페이지에서 우측 상단 개인 프로필을 눌러

New Model을 클릭합니다.


레포의 이름 License를 적어주면 됩니다.

이름은 모델을 설명할 수 있는 적당한 이름을 넣어주고,

License는 선택을 하면 됩니다.

Claude는 이에 대해 아래와 같이 말합니다.

  1. MIT 라이선스: 매우 허용적인 라이선스로, 상업적 이용을 포함한 거의 모든 용도로 모델을 사용할 수 있습니다. 다만 라이선스 고지 사항을 포함해야 합니다.

  2. Apache 2.0 라이선스: MIT와 유사하지만 특허권 관련 조항이 포함되어 있습니다. 상업적 이용이 가능하고 라이선스 고지 사항 포함이 필요합니다.

  3. Creative Commons 라이선스: 연구 목적 등 비상업적 이용만 허용하는 라이선스입니다. CC-BY-NC나 CC-BY-NC-SA 등의 옵션이 있습니다.


애매하면 보통 데이터의 라이센스를 따라가면 됩니다.

제가 사용한 인도 음식 데이터는 공유 데이터니 적당히 MIT 라이센스로 픽 해줍니다!


그러면 아래와 같이 모델 레포가 생성됩니다!



모델 올리기

모델을 올리는 방법은 2가지가 있습니다.

  1. 코드를 통해

  2. HuggingFace web 상에서


둘 다 어렵지는 않습니다.

하지만 Web에서 올리는건 특히 쉽습니다.

바로 Drag & Drop이면 끝나거든요 ㅎㅎ..

위치만 찍어드리고 이번 실습에서는 코드 작업으로 해보겠습니다.


아래처럼 1, 2, 3을 따라 들어가시고

목적 파일을 올리시면 됩니다!



코드 상에서 업로드 하려면

코드 작업을 위한 로그인이 필요합니다.


이를 위해 필요한 패키지를 설치합니다.

pip install huggingface_hub

이후 코드 내부에서 로그인을 진행합니다.

from huggingface_hub import notebook_login

notebook_login()


그러면 뭔가를 입력하는 text 입력 칸이 생성됩니다.

이곳에 개인 Access Token을 넣어주면 됩니다.

Token의 위치는 여기를 참조해주시고

편하게 만들고 지우시면 됩니다 ^^


여기서 중요한 점은 Type을 write로 해주셔야 합니다!

복사 후 붙여넣기를 진행합니다.


나의 HF 모델 레포에 올릴 수 있는 객체는 다양합니다.

대표적으로 모델 그 자체, 전처리기, 학습 세팅입니다!

저희는 학습이 다 이루어진 상태이니

모델과 전처리기를 올려보죠.

올릴때 사용하는 함수는 “push_to_hub” 입니다.


from transformers import AutoImageProcessor, ResNetForImageClassification

target_folder = "results"
model = ResNetForImageClassification.from_pretrained(target_folder)
image_processor = AutoImageProcessor.from_pretrained(target_folder)

model.push_to_hub("JungminChung/India_ResNet")


이러면 모델의 weight가 업로드 됩니다.


굳굳!

이제는 전처리기도 업로드 합니다.


잘 올라갔네요 ^^



Gradio 올리기


바로 이어 이전에 만든 Gradio를 Space로 만들어보죠.


앞서 만든 Model repo처럼 Space repo도 만들어줍니다.

우리는 Gradio를 사용하므로 Gradio를 체크해줍니다.


아래 space hardware는 free 버전의 cpu를 사용합니다.

모델이 그렇게 무겁지 않으니 cpu로도 충분할겁니다!


스페이스는 깃헙을 통해 컨트롤 됩니다.

나와있는 가이드처럼 git clone을 진행합니다.

Clone해서 생성된 폴더 안에 app.py 파일을 생성합니다.

그 안에 이전에 작업한 Gradio 코드를 넣고 push 해 줍니다.

그리고 모델을 불러오는 위치는 제가 올린 모델의 repo 위치로 잡아줍니다!

과정에서 Access Token을 사용하시면 됩니다 ^^


다음으로,

Space의 모델을 실행하기 위해 필요한 패키지를 requirements.txt에 적어줘야 합니다.

제 코드의 경우는 이와 같은 package를 사용하므로

import torch
import requests
import gradio as gr
from PIL import Image

from transformers import AutoImageProcessor, ResNetForImageClassification

필요한 패키지를 requirements.txt에 적어줍니다.

torch
transformers
Pillow

이 파일도 git으로 push 해주면 Space 사이트에서 자동으로 빌드가 진행됩니다!!



약간의 시간이 지나고 Space가 활성화 됩니다 ^^


정상적으로 Space가 살아났네요 ㅎㅎ

아래 링크를 걸어둘테니 사용해보세요~!!!

https://huggingface.co/spaces/JungminChung/India_ResNet


재밌게 사용하던 Space를 직접 만들어보기까지 했네요.

신기하면서도 재밌습니다 ^^

여러분들도 각자만의 모델을 만들고

이를 공유해보는 시간을 갖어보면 어떨까요?!!!


감사합니다 ^^

#10기HuggingFace #10기 #HuggingFace



작성자 : 정정민

블로그 : 링크

5
2개의 답글

👉 이 게시글도 읽어보세요

모집 중인 AI 스터디