from fastai.vision.all import *
Gradio로 모델 대시보드 구성
load_learner
는 저장한 모델을 불러오는 함수입니다.
= load_learner('export.pkl') learn
모델을 UI 상에서 사용하기 위해서 predict
라는 함수를 정의합니다.
= learn.dls.vocab labels
def predict(img):
= PILImage.create(img)
img = learn.predict(img)
pred, pred_idx, probs
return {labels[i]: float(probs[i]) for i in range(len(labels))}
'단감.jpg') predict(
{'단감': 0.9999984502792358, '대봉감': 1.5846303540456574e-06}
%pip install gradio altair -Uqq
import gradio as gr
gradio의 대표적인 파라미터는 fn
, inputs
, outputs
가 있습니다.
fn
은 예측을 수행하는 함수입니다. 위에서 만든 predict
가 label별 예측값을 산출합니다. Gradio에서 산출(Return)의 형태는 딕셔너리로 주어져야 합니다.
inputs
은 입력의 형태입니다.
outputs
는 출력의 형태입니다.
= ['단감.jpg', '대봉감.jpg'] examples
gr.Interface(fn=predict,
inputs=gr.inputs.Image(shape=(512,512)),
outputs=gr.outputs.Label(),
examples=examples
).launch(share=True)
위 코드를 실행하면 노트북에서 Gradio 앱을 확인할 수 있습니다. 글 마지막에 Gradio 앱을 참고하여 주십시오.
동일한 결과를 fastgradio
를 통해서 얻을 수 있습니다. 이 패키지를 활용하면 더 적은 코드로 위와 동일한 결과를 얻을 수 있습니다.
%pip install fastgradio -Uqq
from fastgradio import Demo
Demo(learn).launch(share=True)
위에서 gr.Interface
로 Gradio 앱을 실행한 것과 동일한 결과를 얻게 됩니다.
HuggingFace로 Gradio 배포
배포를 위해 필요하는 것은 우선 노트북을 파이썬 스크립트 형태로 추출하는 것입니다.
가장 맨 위 셀에 #|default_exp app
을 작성하고, nbdev.export
의 nb_export
을 사용합니다. #|default_exp app
으로 지정하면 nb_export
에서 따로 스크립트 파일명을 저장하지 않아도 됩니다.
nbdev
는 노트북 파일에서 패키지 개발이 가능하도록 만드는 패키지로, 추후에 공유하겠습니다.
%pip install nbdev -Uqq
from nbdev.export import nb_export
'app.ipynb', '.') nb_export(
이후 HuggingFace에 가서 New Space를 만듭니다.
만들어진 Space 를 git clone 하고 app 구동에 필요한 콘텐츠들을 git push 합니다.
해당 예제에서는 모델, 앱, requirements.txt, 및 예제 이미지를 업로드했습니다.
아래와 같이 HuggingFace로 모델을 배포했습니다.
URL을 공유해서 다른 사람도 사용할 수 있는 AI가 완성되었습니다!!