Hugging Face で共有されているAIモデルには、ユーザー登録しないとダウンロードやアクセスできないものもあります。今回はそのための準備方法を説明します。

Hugging Face のモデルを利用するには、ckptファイルをダウンロードして利用する方法Diffusersライブラリを用いてアクセスする方法の2通りがあります。ユーザー登録が必要なモデルをそれぞれの方法で利用するためには以下の準備が必要です。

各方法に必要な事前準備

以下に1〜3の準備方法を説明します。

Hugging Face で公開されているStable Diffusion のモデルを利用するには、当初は今回説明する事前準備が必要でしたが、2022年11月末にユーザー登録しなくても利用できるようになりました

1. Hugging Face のユーザー登録

Hugging Faceにユーザー登録するには、まず以下のHugging Faceのサイトにアクセスします。

Hugging Face – The AI community building the future.

以下のようなページが表示されるので、右上の[Sign Up]をクリックします。

Hugging Face Sign In

以下のような画面が表示されたら、「Email Address」と「Password」を入力して、[Next]をクリックします。

Join Hugging Face

ユーザー情報を入力する以下の画面が表示されるので、入力したら「Terms of Service」と「Code of Conduct」を確認し同意したうえで、チェックボックスをチェックし、[Create Account]をクリックします。

Complete Profile

以下のようにかわいいメールが届くので、リンクをクリックし、サイトにアクセスすれば登録は完了です。

Confirm Mail

2. モデルのライセンス条項等への同意

モデルを利用するのにライセンス条項等への同意が求められている場合は、以下の手順で同意しておく必要があります。ライセンス条項等の内容は、モデルカードのページに記載されています。

例えば、以前のStable Diffusion v1-4のモデルカード では、以下のように確認のための画面が表示されていました(現在は表示されていません)。ここで、ライセンスに関する事項を確認し「I have read ~」にチェックを入れて、[Access repository]をクリックするとモデルにアクセスできるようになります。

Model Cart Acccept

3. アクセストークンの取得

Diffusersライブラリからモデルにアクセスするには「アクセストークン(Access Token)」が必要です。このトークンを取得するには、まずHugging Face にログインします。

ログインすると右上にアイコンが表示されるので、そこをクリックしてメニューから[Settings]を選択します。

Hugging Face menu

以下のような画面が表示されるので、左のメニューの[Access Token]をクリックして、「New token」ボタンをクリックします。

Hugging Face Profile Menu

すると以下のようなダイアログが表示されるので、[Name]に適当な名前(例えば「Stable Diffusion」)を入力して、「Generate a token」ボタンをクリックします。[Role]は「read」のままにしておきます。

Create Access Token

以下のように取得したトークンが表示されるので、右側にあるコピーアイコンをクリックしてクリップボードにコピーし、コードなどにペーストします。

Hugging Face Access Token

アクセストークンの利用方法

ここで取得したアクセストークンは、パイプラインを作成するときに指定するとモデルにアクセスできるようになります。例えば、Stable Diffusion でプロンプトから画像を作成するText-to-Imageでは、以下のように指定します。

import torch
from torch import autocast
from diffusers import StableDiffusionPipeline

YOUR_TOKEN = "取得したアクセストークンをここに入力"
model_id = "CompVis/stable-diffusion-v1-4"
device = "cuda"

# プロンプト
prompt = "Mt. Fuji in the style of Gauguin"

# パイプラインの作成
pipe = StableDiffusionPipeline.from_pretrained(model_id, use_auth_token=YOUR_TOKEN)
pipe = pipe.to(device)

# パイプラインの実行
...
HTTPError: 403 Client Errorのエラーになる場合

ライセンス規約等に同意が必要なモデルは同意しないとアクセスできません。同意しないでアクセスしようとすると権限がないためエラーになり、以下のように「HTTPError: 403 Client Error: Forbidden for url: ~」が表示されます。