メインコンテンツへスキップ
見出し画像

Hugging Face について

    最近のニュースで目にする Hugging Face とはどんな企業なのかあまり気にしていませんでした。

    しかし、NVIDIA がとんでもない額で買収するというニュースを知り、ようやく Hugging Face について調べました。
    その結果、AI モデルに関わる大変有用なサイトだということが判ったので、早速、アカウントを作成しました。

    マイクロソフトが GitHub を買収したときのことを思い出しました。

    備忘録として、Hugging Face について調べたことをまとめました。

    Hugging Face は、AI モデル・データセット・AI アプリ・推論サービス・開発ツールをまとめた、AI 開発のための巨大なオープンプラットフォーム です。

    Hugging Face とは?

    Hugging Face は、もともとは自然言語処理 (NLP) のための企業・コミュニティとして始まりました。特に有名なのが Transformers という Python ライブラリです。

    現在は、

    • 大規模言語モデル (LLM)

    • 画像生成・画像認識

    • 音声認識

    • 音声生成

    • マルチモーダル AI

    • データセット

    • 強化学習

    • AI エージェント

    • AI アプリケーション

    など、かなり広い範囲を扱っています。

    Hugging Face は現在の Hub を、モデル、データセット、AI アプリを共有する AI プラットフォーム と位置付けています。公式ドキュメントでは、Hub には 200万以上 のモデル、150万以上 のデータセット、150万以上 の AI アプリ (Spaces) があるとされています。

    つまり、

    GitHub がソースコードの巨大な共有基盤だとすれば、Hugging Face Hub は AI のモデルやデータを中心とした巨大な共有基盤

    と考えると理解しやすいです。


    Hugging Face の中心は Hub

    Hugging Face Hub は、大きく分けて、

    Hugging Face Hub
    │
    ├── Models
    │     └── AIモデル
    │
    ├── Datasets
    │     └── 学習・評価用データ
    │
    ├── Spaces
    │     └── AIアプリ・デモ
    │
    ├── Papers
    │     └── 論文
    │
    └── その他
          ├── Collections
          ├── Storage
          └── Jobs

    という構成になっています。

    そして、モデル・データセット・Spaces は Git ベースのリポジトリとして管理できます。バージョン管理、コミット、ブランチ、差分など、GitHub に近い考え方になっています。


    Models ― AI モデルのマーケットプレイス

    例えば、

    • Llama 系

    • Qwen 系

    • Gemma 系

    • Mistral 系

    • DeepSeek 系

    • Whisper 系

    • Stable Diffusion 系

    • BERT 系

    など、非常に多くのモデルが公開されています。

    モデルページには単なる「重みファイル」だけではなく、

    • モデルカード

    • ライセンス

    • 対応言語

    • 学習方法

    • 評価結果

    • 使用方法

    • 必要なライブラリ

    • 推論例

    • ファイル構成

    などが掲載されています。

    公式ドキュメントでは、モデルリポジトリにはモデルカードや評価結果、ライセンスなどのメタデータを持たせる仕組みが用意されています。


    モデルをダウンロード

    例えばモデルページに、

    Qwen/...

    のようなモデルIDがあったとします。

    Python から、

    from transformers import AutoTokenizer, AutoModelForCausalLM
    
    tokenizer = AutoTokenizer.from_pretrained(
        "モデルID"
    )
    
    model = AutoModelForCausalLM.from_pretrained(
        "モデルID"
    )

    のように指定すると、Hugging Face Hub から必要なファイルを取得して利用できます。

    Transformers では、

    from transformers import pipeline
    
    pipe = pipeline(
        "text-generation",
        model="モデルID"
    )

    という高レベルな使い方もできます。


    Transformers とは?

    Hugging Face = Transformers ではありません。

    関係としては、

    Hugging Face
         │
         ├── Hugging Face Hub
         │       ├── Models
         │       ├── Datasets
         │       └── Spaces
         │
         ├── Transformers
         │
         ├── Datasets
         │
         ├── Tokenizers
         │
         └── huggingface_hub

    という感じです。

    Transformers は、Hugging Face が中心となって開発している機械学習モデルの実装・利用フレームワークです。

    現在ではテキストだけではなく、

    • Text

    • Vision

    • Audio

    • Video

    • Multimodal

    まで扱います。

    そして、Transformers が単なる「推論ライブラリ」ではなく、現在の AI エコシステムにおけるモデル定義の共通基盤に近い役割を果たしています。


    Datasets ― データセットも Hub にある

    例えば、

    文章
    画像
    音声
    動画
    会話データ
    分類データ
    評価データ

    などのデータセットが公開されています。

    Python では、

    from datasets import load_dataset
    
    dataset = load_dataset("...")

    のように扱えます。

    さらに、大規模データセットの場合はストリーミングによって、全部をローカルにダウンロードせずに利用することもできます。


    Spaces ― 「AIアプリを公開する場所」

    例えば、

    AI画像生成
    画像認識
    チャットボット
    音声認識
    LLMデモ
    機械学習モデルの比較

    などをブラウザから操作できる Web アプリとして公開できます。

    代表的なのが Gradio です。
    イメージとしては、

    Pythonプログラム
          ↓
        Gradio
          ↓
    Hugging Face Spaces
          ↓
     ブラウザから操作

    です。

    Spaces は Git リポジトリとして管理され、コードを push するとアプリが再構築されます。Gradio、Docker、静的 HTML などを利用できます。

    つまり、

    AI 版の GitHub + Streamlit/Gradio ホスティング

    のような側面があります。


    Inference

    Hugging Face では「モデルを持ってくる」だけではありません。

    モデルを Hugging Face 側の計算環境で実行することもできます。

    これが Inference です。

    例えば自分の PC に巨大な LLM をインストールしなくても、

    自分のPythonプログラム
        ↓
    Hugging Face Inference
        ↓
    AIモデル
        ↓
      結果

    という形で利用できます。

    現在の Hugging Face では、複数の Inference Provider を統一的なインターフェースから利用できるようになっています。

    例えば Python では、

    from huggingface_hub import InferenceClient
    
    client = InferenceClient(
        api_key="..."
    )
    
    response = client.chat.completions.create(
        model="モデルID",
        messages=[
            {"role": "user", "content": "Hello"}
        ]
    )

    という使い方ができます。


    ローカル AI と クラウド AI

    Hugging Faceは、

    ローカル

    Hugging Face Hub
        ↓
    モデルをダウンロード
        ↓
    自分のLinux PC
        ↓
    PyTorch / Transformers
        ↓
    GPU / CPU

    もできます。

    一方で、

    クラウド

    自分のPython
        ↓
    Hugging Face Inference
        ↓
    クラウドGPU
        ↓
    モデル

    もできます。

    さらに、

    アプリ公開

    Python + Gradio
        ↓
    Spaces
        ↓
    Webブラウザ

    もできます。

    この3つを一つのエコシステムで扱えるのが強みです。


    huggingface_hub(Python ライブラリ)

    Hub を Python から操作するためのライブラリが、huggingface_hub です。

    例えば、

    pip install huggingface_hub

    でインストールできます。

    また現在は、

    hf

    という CLI も提供されています。

    例えば、

    hf models ls

    や

    hf datasets ls

    のように Hub をターミナルから操作できます。


    GitHub との違い

    非常に大雑把に比較すると、

    GitHubHugging FaceメインソースコードAIモデル・データRepository○○Git○○Issues/Discussion○○Model△◎Dataset△◎AI Demo△◎AI推論△◎Model Card―◎MLライブラリ―◎\begin{array}{l|c|c} \hline \scriptsize{\textbf{}} & \scriptsize{\textbf{GitHub}} & \scriptsize{\textbf{Hugging Face}} \\ \hline \scriptsize{\texttt{メイン}} & \scriptsize{\texttt{ソースコード}} & \scriptsize{\texttt{AIモデル・データ}} \\ \hline \scriptsize{\texttt{Repository}} & \scriptsize{\texttt{○}} & \scriptsize{\texttt{○}} \\ \hline \scriptsize{\texttt{Git}} & \scriptsize{\texttt{○}} & \scriptsize{\texttt{○}} \\ \hline \scriptsize{\texttt{Issues/Discussion}} & \scriptsize{\texttt{○}} & \scriptsize{\texttt{○}} \\ \hline \scriptsize{\texttt{Model}} & \scriptsize{\texttt{△}} & \scriptsize{\texttt{◎}} \\ \hline \scriptsize{\texttt{Dataset}} & \scriptsize{\texttt{△}} & \scriptsize{\texttt{◎}} \\ \hline \scriptsize{\texttt{AI Demo}} & \scriptsize{\texttt{△}} & \scriptsize{\texttt{◎}} \\ \hline \scriptsize{\texttt{AI推論}} & \scriptsize{\texttt{△}} & \scriptsize{\texttt{◎}} \\ \hline \scriptsize{\texttt{Model Card}} & \scriptsize{\texttt{―}} & \scriptsize{\texttt{◎}} \\ \hline \scriptsize{\texttt{MLライブラリ}} & \scriptsize{\texttt{―}} & \scriptsize{\texttt{◎}} \\ \hline \end{array}

    という感じです。

    ただし、GitHub と競合する存在というより補完関係と考えたほうが正確です。

    例えば、

    GitHub
       ↓
    アプリケーションのソースコード
    
    Hugging Face
       ↓
    AIモデル
       ↓
    データセット
       ↓
    AIデモ

    という分担ができます。


    「AI モデルの GitHub」だけではない

    Hugging Face は現在、

    AI モデルを Git で配布する場所

    から、

    AI モデルを発見し、評価し、取得し、実行し、学習し、公開し、アプリケーションとして提供するためのプラットフォーム

    へと拡張されています。

    公式ドキュメントを見ると、現在は

    • Models

    • Datasets

    • Spaces

    • Inference Providers

    • Inference Endpoints

    • Jobs

    • Agents

    • Storage Buckets

    • MCP

    などまで広がっています。


    AI では重要な情報源

    例えば最近のオープンウェイト LLM を見ると、

    研究者
       ↓
    モデルを開発
       ↓
    Hugging Face Hubに公開
       ↓
    世界中の開発者が利用
       ↓
    派生モデルを作る
       ↓
    さらにHubへ公開

    という循環が成立しています。
    そのため、

    「最新のオープンモデルを調べたい」

    となった場合、Hugging Face は重要な情報源になります。

    モデルのダウンロード数や評価結果、Model Card などから、

    誰が作った?
    何Bパラメータ?
    どんなデータ?
    どのライセンス?
    どの量子化版?
    どの用途向け?
    どんな制約がある?

    といった情報を確認できます。


    オープンソースだけではない

    Hugging Face には、

    • オープンソース

    • オープンウェイト

    • 商用利用可能

    • 非商用のみ

    • gated model

    • 独自ライセンス

    など、様々なモデルがあります。

    したがって、

    「Hugging Faceにあるから自由に使える」

    とは限りません。

    特にLLMの場合、

    モデルそのもののライセンス
    と
    学習データのライセンス
    と
    商用利用条件

    を分けて確認する必要があります。

    Model Card が用意されていることは、この問題をある程度整理するためです。


    まとめ

                         Hugging Face
                               │
                  ┌────────────┼────────────┐
                  │            │            │
               Models       Datasets      Spaces
                  │            │            │
              AIモデル       学習データ     AIアプリ
                  │            │            │
                  └────────────┼────────────┘
                               │
                        Hugging Face Hub
                               │
              ┌────────────────┼────────────────┐
              │                │                │
         Transformers    huggingface_hub     Datasets
              │                │
              │                └── CLI / Python API
              │
           PyTorch
           TensorFlow
           JAX
              │
              ↓
         ローカル推論
              │
              └──────────────→ Inference
                                  │
                             クラウド推論

    この全体像から、Hugging Face が単なる「AIモデル置き場」ではないことが分かります。


     
     
    プログラミングと Linux そしてトレーディングの話題、 ときどき脱線。

    あなたへのおすすめ