ねらい
「ChatGPTみたいなことをローカルでやりたい」「BERTで感情分析したい」「Whisperで音声認識したい」——そう思ったとき、最初に出会うのがHugging Faceのtransformersライブラリだろう。
100万以上のモデルへのゲートウェイとなるこのライブラリ、一体何者なのか。
対象
- 機械学習モデルを動かしてみたい人
- 「Hugging Face」という名前は聞いたことあるけど何かよくわからない人
- BERT、GPT、Whisperなどを使いたいけど、どこから始めれば良いかわからない人
ゴール
- transformersライブラリの位置づけを理解する
- Pipeline APIで簡単にモデルを動かせるようになる
- 自分のユースケースに合ったモデルを探せるようになる
TL;DR
transformersはHugging Faceが開発したPythonライブラリで、最先端のAIモデル(テキスト、画像、音声、マルチモーダル)を数行のコードで使えるようにする。100万以上の事前学習済みモデルがHugging Face Hubで公開されており、推論も学習も簡単にできる。
transformersとは
公式ドキュメントより:
transformers is the pivot across frameworks: if a model definition is supported, it will be compatible with the majority of training frameworks (Axolotl, Unsloth, DeepSpeed, FSDP, PyTorch-Lightning, …), inference engines (vLLM, SGLang, TGI, …), and adjacent modeling libraries (llama.cpp, mlx, …) which leverage the model definition from transformers.
(transformersはフレームワーク間の軸となります:モデル定義がサポートされていれば、大半の訓練フレームワーク(Axolotl、Unsloth、DeepSpeed、FSDP、PyTorch-Lightningなど)、推論エンジン(vLLM、SGLang、TGIなど)、そしてtransformersのモデル定義を活用する隣接モデリングライブラリ(llama.cpp、mlxなど)と互換性があります。)
引用元: https://huggingface.co/docs/transformers/index
つまり、transformersは現代AI/MLエコシステムの共通言語のような存在だ。
Hugging Faceとは
transformersを理解するには、まずHugging Faceという会社を知る必要がある。
Hugging Faceは2016年に設立されたAIスタートアップで、当初はチャットボットを作っていた。その後、NLP(自然言語処理)のツールを開発する方向にピボットし、今では「AIのGitHub」とも呼ばれる存在になった。
提供しているものは:
- Model Hub: 100万以上の事前学習済みモデルが公開されているプラットフォーム
- Datasets: 機械学習用データセットのリポジトリ
- Spaces: デモアプリを簡単に公開できるホスティング
- 各種ライブラリ: transformers、datasets、diffusers、accelerateなど
インストール
# 基本インストール
pip install transformers
# PyTorchと一緒にインストール(推奨)
pip install "transformers[torch]"
# TensorFlowと一緒に
pip install "transformers[tf]"
Python 3.9以上、PyTorch 2.1以上またはTensorFlow 2.0以上が必要。
Pipeline API:最も簡単な使い方
transformersの最大の魅力は、数行で最先端モデルを動かせること。
感情分析
from transformers import pipeline
classifier = pipeline("sentiment-analysis")
result = classifier("I love this product!")
print(result)
# [{'label': 'POSITIVE', 'score': 0.9998}]
テキスト生成
generator = pipeline("text-generation", model="gpt2")
result = generator("Once upon a time", max_length=50)
print(result[0]['generated_text'])
質問応答
qa = pipeline("question-answering")
result = qa(
question="What is the capital of France?",
context="France is a country in Europe. Paris is the capital of France."
)
print(result)
# {'answer': 'Paris', 'score': 0.98, ...}
音声認識
transcriber = pipeline("automatic-speech-recognition", model="openai/whisper-base")
result = transcriber("audio.wav")
print(result['text'])
サポートするタスク
公式によると、以下のようなタスクをサポート:
テキスト
- テキスト分類(感情分析、トピック分類など)
- テキスト生成(GPT系)
- 質問応答
- 要約
- 翻訳
- 固有表現抽出(NER)
- 穴埋め(Masked LM)
画像
- 画像分類
- 物体検出
- セグメンテーション
- 画像キャプション生成
音声
- 音声認識(ASR)
- 音声分類
- テキスト読み上げ(TTS)
マルチモーダル
- 画像+テキストの質問応答
- ビジュアルQA
- ドキュメント理解
モデルカードの読み方
Hugging Face Hubには100万以上のモデルがあるが、どれを選べばいいのか。
各モデルにはモデルカードという説明ページがある。確認すべきポイント:
1. タスク
何に使えるモデルか(text-generation、image-classification など)
2. ライセンス
商用利用可能か、クレジット表示が必要かなど
3. 言語
対応している言語(日本語対応が必要なら要チェック)
4. ダウンロード数・いいね数
人気度の指標。多いほど安定している傾向
5. Model size
モデルの大きさ。GPUメモリに収まるか確認
もう少し詳しく使う
Pipeline APIは便利だが、細かい制御が必要な場合は低レベルAPIを使う。
モデルとトークナイザーを個別にロード
from transformers import AutoTokenizer, AutoModelForSequenceClassification
# トークナイザー:テキストをモデルが理解できる形式に変換
tokenizer = AutoTokenizer.from_pretrained("bert-base-uncased")
# モデル:実際の推論を行う
model = AutoModelForSequenceClassification.from_pretrained("bert-base-uncased")
# 入力の準備
inputs = tokenizer("Hello, how are you?", return_tensors="pt")
# 推論
outputs = model(**inputs)
Fine-tuning(ファインチューニング)
自分のデータでモデルを追加学習させることもできる。
from transformers import Trainer, TrainingArguments
training_args = TrainingArguments(
output_dir="./results",
num_train_epochs=3,
per_device_train_batch_size=16,
per_device_eval_batch_size=64,
warmup_steps=500,
weight_decay=0.01,
)
trainer = Trainer(
model=model,
args=training_args,
train_dataset=train_dataset,
eval_dataset=eval_dataset,
)
trainer.train()
主要なモデルファミリー
transformersでサポートされている代表的なモデル:
テキスト系
- BERT: Googleの双方向エンコーダ。分類・質問応答に強い
- GPT-2/GPT-Neo/GPT-J: テキスト生成モデル
- T5: Text-to-Text変換。翻訳・要約に使える
- LLaMA/Mistral/Qwen: 最新のオープンLLM
- mBART/mT5: 多言語対応モデル
画像系
- ViT: Vision Transformer。画像分類の定番
- DETR: 物体検出
- Swin Transformer: 階層的Vision Transformer
音声系
- Whisper: OpenAIの音声認識モデル
- Wav2Vec2: 音声の自己教師あり学習
- SpeechT5: 音声合成・認識の統合モデル
マルチモーダル
- CLIP: 画像とテキストの関連付け
- BLIP: 画像キャプション生成
- LLaVA: 視覚言語モデル
設計思想
公式ドキュメントより:
Fast and easy to use: Every model is implemented from only three main classes (configuration, model, and preprocessor) and can be quickly used for inference or training with Pipeline or Trainer.
(高速で使いやすい:すべてのモデルは3つの主要クラス(設定、モデル、前処理)のみで実装されており、PipelineやTrainerを使って素早く推論や学習に使えます。)
引用元: https://huggingface.co/docs/transformers/index
Configuration
モデルの構造を定義(レイヤー数、隠れ層の次元など)
Model
実際のニューラルネットワーク
Preprocessor(Tokenizer/Feature Extractor)
入力データをモデルが処理できる形式に変換
この3つが揃えば、どんなモデルも同じインターフェースで扱える。
キャッシュと保存先
モデルを初めてロードすると自動的にダウンロードされ、キャッシュされる。
デフォルトの保存先:
~/.cache/huggingface/hub/
環境変数で変更可能:
export TRANSFORMERS_CACHE=/path/to/cache
オフラインで使う
一度ダウンロードしたモデルはオフラインでも使える。
# 環境変数を設定
export TRANSFORMERS_OFFLINE=1
export HF_DATASETS_OFFLINE=1
# 通常通りスクリプトを実行
python my_script.py
まとめ
transformersは「AIモデルの民主化」を体現するライブラリだ。
主な特徴:
- 100万以上の事前学習済みモデルにアクセス可能
- Pipeline APIで数行のコードで推論
- PyTorch、TensorFlow、JAXをサポート
- 推論から学習まで一貫したインターフェース
- テキスト・画像・音声・マルチモーダルに対応
最先端のAIを試したいなら、まずtransformersを触ってみるのが一番の近道だ。
参考リンク
- 公式ドキュメント: https://huggingface.co/docs/transformers/index
- GitHub: https://github.com/huggingface/transformers
- Model Hub: https://huggingface.co/models
- インストールガイド: https://huggingface.co/docs/transformers/en/installation
- LLMコース(無料): https://huggingface.co/learn/llm-course