💁‍♂️

【初心者でもできる】HuggingFaceにGradioで作成したアプリをデプロイする方法

2022/10/02に公開約2,900字1件のコメント

はじめに

以前、機械学習アプリを超爆速で実装できるフレームワークgradioをご紹介しました。
https://zenn.dev/robes/articles/fcbda5d2dc1362
gradioはGoogleColaboratory上でも作成できて、かつ公開もできるなど、超便利なのですが、いかんせん、公開期間は72時間限定だったりして、当然、不便なところもあります。
そんなgradioで作ったwebアプリを永続的に公開するための最適なプラットフォームとして、HuggingFaceのSpacesがあります。
今回、いろいろ調べながら、何とかHuggingFaceSpacesへのデプロイに成功しましたので、そのデプロイ方法について残していきたいと思います。
 

 

準備

HuggingFaceにデプロイするためには、まず、HuggingFaceのアカウントを作成する必要があります。
こちらでアカウントの作成を行なってください。
https://huggingface.co/

アカウントを作成し、サインアップした後、ナビゲーションメニューからspacesを選択し、create new spaceをクリックします。


create new spaceを押した後
赤く囲ったところを記入したり、選択します。

 

最も簡単なデプロイ方法

Files and versions を選択すると、なにやらgithubのレポジトリのような画面が現れます。ここにアプリに必要なファイルをあげればいいわけです。
ファイルをあげるのに最も簡単な方法は、右にあるAddfileから、ファイルを新規作成するか、ファイルをアップロードするになります。
モデルを記述したapp.pyrequirements.txtを、ここで作成すればデプロイ完了となります。

デプロイに成功すると、以下のようにRunningとでます。失敗するとerrorとなりますのでView logsで原因を調べます。

 

gitでデプロイする方法

ローカルレポジトリから、このspacesにgitでデプロイする方法もあります。
Appというメニューをクリックするとやり方の全てが書かれています。

1.ローカルレポジトリにgit cloneする

git clone https://huggingface.co/spaces/aino813/chABSA

2.app.pyファイルを作成する

あくまで簡単な例ですが、ローカルレポジトリにapp.pyファイルを作成し、以下を記述します。
gradioだけであればrequirements.txtは必要ありませんが、モデルによっては、requirements.txtファイルを作成しましょう。

import gradio as gr

def greet(name):
    return "Hello " + name + "!!"

iface = gr.Interface(fn=greet, inputs="text", outputs="text")
iface.launch()

3.git pushする

git add app.py
git commit -m "Add application file"
git push

レポジトリにファイルが上がっているか確認します。
 

ファインチューニングしたモデルを使用する場合

私が苦労したのは、ファインチューニングしたモデルをあげることでした。
ここでは私のデプロイ方法を備忘もかねてご紹介します。スマートなやり方ではありません。

1.gitでディレクトリとjsonファイルをデプロイする

ディレクトリは、HuggingFaceのレポジトリで作成することができません(私は作成方法を見つけられませんでした)。したがって、ローカルレポジトリで作成してデプロイする必要があります。ここで、厄介なのが、モデルのサイズが大きいと、gitではあげられないことです。
そこで、gitを使って、ディレクトリとjsonファイルだけをデプロイします。

2.モデルはHuggingFaceのレポジトリに直接アップロードする

gitであげられない場合でも、Addfileから直接アップロードすることは可能です。ディレクトリをデプロイした後、そのディレクトリ内に、モデルをアップロードさせます。
 

デプロイしたアプリ

BERTを用いてビジネス文書をネガポジ判定するアプリを実装しました。

 

さいごに

いかがでしょうか。
gradioについて日本語で解説されたサイトはまだまだ少ないと思います。
この記事が、初心者の方のお役に少しでも立てれば幸甚です。

Discussion

ログインするとコメントできます