Hugging Face Transformers

Hugging Face Transformersとは

Transformers は、公開された事前学習モデルを共通のAPIで扱う Python ライブラリです。モデルごとに違う実装を覚えなくても、同じ書き方で読み込み・推論ができます。

from transformers import pipeline

summarizer = pipeline("summarization")
print(summarizer("長い文章…")[0]["summary_text"])

pipeline は「タスク名を指定すると、モデル・トークナイザ・前後処理をまとめて用意する」入口です。要約・分類・翻訳・質問応答などのタスクが揃っており、[[Python]] を書ければ数行で試せます。

モデル・トークナイザ・Hub

ライブラリと同じくらい重要なのが Hugging Face Hub です。モデルの重みが名前付きで公開されており、コードから名前を指定して取得します。

from transformers import AutoTokenizer, AutoModelForCausalLM

name = "組織名/モデル名"
tokenizer = AutoTokenizer.from_pretrained(name)
model = AutoModelForCausalLM.from_pretrained(name)

Auto で始まるクラスは、モデルの種類に応じた実装を自動で選ぶ仕組みです。使う側はモデル名を差し替えるだけで比較検討できます。

トークナイザはモデルと必ず対で使います。[[トークンとトークナイザ]] の分割規則はモデルごとに違うため、片方だけ差し替えると入力が壊れます。

構成要素役割
トークナイザ文章をモデルが扱う数値列へ変換する
モデル数値列を受け取り、次のトークンの確率などを返す
Hub重み・設定・トークナイザをまとめて配布する場所

どこで使うか

[[Transformer]] 系のモデルを細かく制御したいときに選びます。

  • 出力の途中経過や確率を取り出す、独自の後処理を挟む
  • [[ファインチューニング]] で自前データに合わせて追加学習する
  • 文章生成だけでなく、分類・埋め込み生成などLLM以外のモデルも同じAPIで扱う

裏側の計算は PyTorch(あるいは他のフレームワーク)が担うため、GPU の有無で実行速度が大きく変わります。

「対話用のLLMを動かして応答をもらえればよい」だけなら [[Ollama(ローカルLLM実行)]] のほうが手軽です。手軽さのOllama、細かい制御のTransformersと考えると選びやすくなります。

初学者向けポイント

  • まず pipeline で動かし、制御が足りなくなってから AutoTokenizer / AutoModel へ降りるのが遠回りしない順序です
  • 初回実行時にモデルがダウンロードされます。サイズが大きいものはディスクとメモリを確認してから試します
  • モデルごとにライセンスと利用条件が異なります。商用利用の可否は Hub のモデルページで必ず確認します

関連技術とのつながり

  • [[Transformer]] — ライブラリ名の由来であり、扱うモデルの中心的な構造
  • [[生成AI・LLM]] — 文章生成モデルをこのライブラリ経由で動かせる
  • [[Python]] — 実装言語。周辺の数値計算ライブラリと組み合わせて使う
  • [[ファインチューニング]] — 自前データでの追加学習を行うときの標準的な入口
  • [[Ollama(ローカルLLM実行)]] — 手軽さを取るならこちら。細かい制御が要るならTransformers
Q: Transformersライブラリの `pipeline` の役割はどれ?
- [x] タスクを指定するとモデル・トークナイザ・前後処理をまとめて用意する
- [ ] 学習データを自動で収集する
- [ ] GPUを仮想化する
解説: `pipeline` は要約や分類といったタスク名を指定するだけで、必要な部品を揃えて推論できる入口です。

Q: トークナイザとモデルの扱いとして正しいものはどれ?
- [ ] どのモデルにも同じトークナイザが使える
- [x] モデルと対応するトークナイザを対で使う必要がある
- [ ] トークナイザは学習時のみ必要で推論では不要
解説: 分割規則はモデルごとに異なります。片方だけ差し替えると入力が壊れて正しく動きません。

Q: Ollama と Hugging Face Transformers の使い分けとして適切なものはどれ?
- [ ] Ollamaは学習専用、Transformersは推論専用
- [x] 手軽に動かすならOllama、出力の細かい制御や追加学習が要るならTransformers
- [ ] どちらも同じ機能で違いはない
解説: Ollama は起動から API 提供までを簡単にする実行環境、Transformers はモデルを細かく制御するためのライブラリです。