> For the complete documentation index, see [llms.txt](https://stablebuild.gitbook.io/stablebuild-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stablebuild.gitbook.io/stablebuild-docs/docs/ja/mirrors-and-caches/huggingface-mirror.md).

# HuggingFace ミラー

機械学習のコードの多くは、ビルド時や起動時に HuggingFace からモデルをダウンロードします。例：

```python
from transformers import AutoModel

model = AutoModel.from_pretrained("openai-community/gpt2")
```

信頼性の高い安定したビルドを目指す場合、これは問題になります。この行は、その時点でリポジトリの `main` ブランチにあるものをダウンロードします。作者が新しい重みやトークナイザー、変更した設定をプッシュすると、次のビルドは何の前触れもなくそれを取り込みます。

StableBuild の HuggingFace ミラーは、HuggingFace のモデルリポジトリへのイミュータブルなミラーを運営することでこの問題を解決します。StableBuild 経由でダウンロードするには、`HF_ENDPOINT` にミラーのドメインを設定するだけです。例：

```
export HF_ENDPOINT=https://your-domain.hfmirror.stablebuild.com
```

[`huggingface_hub`](https://pypi.org/project/huggingface-hub/) と、その上に作られたライブラリ（[`transformers`](https://pypi.org/project/transformers/) や [`diffusers`](https://pypi.org/project/diffusers/) など）はすべて `HF_ENDPOINT` を読み取ります。そのため、上記のコードは一切変更せずに StableBuild 経由でダウンロードするようになります。

使うモデルは、リビジョン（コミットハッシュ、タグ、ブランチなど）を指定してピン留めすることをおすすめします。`main` は Docker イメージの `latest` のようなもので、指す中身が変わっていくためです：

```python
model = AutoModel.from_pretrained("openai-community/gpt2", revision="607a30d")
```

コマンドラインからダウンロードする場合は `--revision` を付けます：

```
hf download sentence-transformers/all-MiniLM-L6-v2 model.safetensors --revision 1110a24
```

curl だけでファイルを 1 つ取得することもできます。ミラーのドメインより後ろのパスは、huggingface.co とまったく同じです：

```
curl -O https://your-domain.hfmirror.stablebuild.com/sentence-transformers/all-MiniLM-L6-v2/resolve/1110a24/model.safetensors
```

もう一度実行すると、今度はキャッシュからすぐに返ってきます。ダウンロードしたリビジョンは、**ダッシュボード > HuggingFace ミラー** の「キャッシュ済みモデル」に表示されます。

リビジョンを指定しなかった場合は、モデルを初めてダウンロードした時点で `main` が指しているコミットを調べて保存します。同じモデルを再度ダウンロードすると、リポジトリが更新されたあとでも同じコミットを返します。ダウンロードしたファイルはすべてキャッシュに保存されるため、常にまったく同じモデルが返ります。

以上です。モデルが安定した信頼性の高いものになりました。🎉

### ヒントとコツ

#### モデルを更新する

新しいバージョンに移るときは、**ほしいリビジョンを指定して取り直してください**。これが一番安全です。

固定を先に削除するのは勧めません。削除すると、そのモデルは次のダウンロードで最新のコミットを調べ直すため、その時点で HuggingFace からリポジトリが消えていると、前のコミットに戻れなくなります。

`main` を追いかけていて最新に移りたい場合だけ、**ダッシュボード > HuggingFace ミラー** の「キャッシュ済みモデル」からそのモデルを削除してください。次回ダウンロードするときに、最新のコミットを調べ直します。

#### ミラーの対象

* 公開されているモデルリポジトリが対象です。データセットと Spaces は対象外です。
* 許可制（gated）や非公開のリポジトリはミラーしません。作者が設けた利用条件を通さずにモデルを配ることになるためです。

#### 5GB を超えるファイル

5GB を超えるファイルはダウンロード中にはキャッシュされず、非同期でキャッシュされます。StableBuild に保存されるまで数分（またはそれ以上）かかる場合があります。ファイルをダウンロードする際に返される `x-in-sb-cache` ヘッダーで状況を確認できます。

#### ストレージ

ダウンロードしたファイルは、組織のストレージ使用量に加算されます。コミュニティプランでストレージの上限を超えると、まだキャッシュされていないファイルはダウンロードできなくなります。キャッシュ済みのファイルは引き続き利用できます。
