Hugging Faceでモデルをデプロイする方法:ステップバイステップ
私は2年以上にわたりHugging Faceで機械学習モデルをデプロイしてきましたが、モデルを本番環境に導入するための最も効率的なプラットフォームの一つだと自信を持って言えます。感情分析用のファインチューニング済みBERTをデプロイする場合でも、音声認識用のカスタムWhisperモデルをデプロイする場合でも、Hugging FaceのInference EndpointsとSpacesを使えばプロセスは驚くほどスムーズです。このチュートリアルでは、環境設定から本番トラフィックの処理まで、モデルをデプロイするために私が実際に行っている正確な手順を説明します。
前提条件
始める前に、以下のものを用意してください:
- Hugging Faceアカウント(無料プランでもテスト可能)
- Python 3.8以上がインストールされていること
huggingface_hubとtransformersライブラリがインストールされていること(pip install huggingface_hub transformers)- 訓練済みまたはファインチューニング済みのモデル(例としてDistilBERT感情分析モデルを使用します)
ステップ1:デプロイ用にモデルを準備する
最初のステップは、モデルがHugging Faceのデプロイインフラストラクチャと互換性があることを確認することです。私は常にtransformers形式でモデルを保存することから始めます——これにより、Inference Endpointsとのシームレスな連携が保証されます。
from transformers import AutoModelForSequenceClassification, AutoTokenizer
# ファインチューニング済みモデルをロード(ご自身のモデルに置き換えてください)
model = AutoModelForSequenceClassification.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")
tokenizer = AutoTokenizer.from_pretrained("distilbert-base-uncased-finetuned-sst-2-english")
# ローカルに保存
model.save_pretrained("./my-sentiment-model")
tokenizer.save_pretrained("./my-sentiment-model")
プロのヒント: アップロードする前に必ずローカルでモデルをテストしてください。デプロイの問題をデバッグするのに何時間も費やした結果、実際はモデルの読み込みエラーだったという経験があります。簡単な推論を実行してみましょう:
inputs = tokenizer("この映画は素晴らしい!", return_tensors="pt")
outputs = model(**inputs)
print(outputs.logits.argmax().item()) # 1(ポジティブ)が出力されるはず
ステップ2:モデルをHugging Face Hubにアップロードする
次に、モデルをHugging Face Hubにプッシュします。ここで魔法が起こります——Hubはレジストリとしても配布チャネルとしても機能します。
from huggingface_hub import HfApi
api = HfApi()
api.create_repo(repo_id="your-username/my-sentiment-model", exist_ok=True)
api.upload_folder(
folder_path="./my-sentiment-model",
repo_id="your-username/my-sentiment-model",
repo_type="model"
)
よくある落とし穴: 401エラーが発生した場合、ログインしていません。huggingface-cli loginを実行し、huggingface.co/settings/tokensからアクセストークンを貼り付けてください。

ステップ3:モデルカードを作成する(任意ですが推奨)
優れたモデルカードは、他の人(そして将来の自分)がモデルの機能を理解するのに役立ちます。私は常に以下を含めています:
- モデルの説明
- 使用目的
- トレーニングデータの概要
- 評価指標
これはHub UIで直接作成するか、プログラムで作成できます:
from huggingface_hub import ModelCard
card = ModelCard.from_template(
card_data={
"license": "mit",
"language": "en",
"tags": ["sentiment-analysis", "distilbert"]
},
template_path="path/to/custom_template.md" # 任意
)
card.push_to_hub("your-username/my-sentiment-model")