4.

Hugging Face Transformers とは?OSS LLM 利用の標準ライブラリ

編集

本稿は Hugging Face Transformers に関する記事です。

この記事の要点
  • Transformers は OSS LLM・モデルを扱うときの事実上の標準ライブラリ
  • Hugging Face Hub には50万モデル以上が公開されており、数行のコードで読み込んで実行できる
  • NLP・画像・音声・マルチモーダルを統一 API で扱える
  • PyTorch 中心 (TensorFlow/JAX バックエンドもあり)
  • pipeline を使えば最短 3 行で推論可能。本格運用には AutoModel + AutoTokenizer

Hugging Face と Transformers の関係

名前指すもの
Hugging Face米国/フランス発の AI 企業&コミュニティ。本拠はモデル・データセットのHub
Hugging Face Hubモデル/データセット/Space (デモ) を公開・配布するプラットフォーム
TransformersHub のモデルをロード・推論・学習するためのPython ライブラリ
Diffusers同社の画像生成 (Stable Diffusion 等) 向けライブラリ
Datasetsデータセットの統一ロード/前処理ライブラリ
Tokenizers高速なトークナイザライブラリ (Rust 実装)
Accelerate分散学習・量子化等の共通化ライブラリ
PEFTLoRA など軽量ファインチューニング
TRLRLHF / DPO 等の嗜好学習

主な特徴

  • 統一 API — どんなモデルでも AutoModel.from_pretrained(name) でロード
  • マルチタスク対応 — テキスト分類・生成・QA・翻訳・要約・画像分類・物体検出・音声認識・TTS まで一つの API
  • マルチフレームワーク — PyTorch を中核に、TensorFlow / JAX バックエンドもサポート
  • 事前学習モデルの巨大エコシステム — Llama / Mistral / Qwen / Phi / Gemma / BERT / GPT-2 / Whisper 等が公開
  • pipeline ヘルパ — ロード・トークナイズ・推論を 1 行で
  • Trainer — 学習ループを自前で書かずに済む高レベル API
  • safetensors 対応 — 安全な重みフォーマット
  • 量子化対応 — bitsandbytes / GPTQ / AWQ / 4-bit 等で省 VRAM 推論

最小サンプル: pipeline で 3 行推論

from transformers import pipeline

# 感情分析
cls = pipeline("sentiment-analysis")
print(cls("I love this library!"))
# [{"label": "POSITIVE", "score": 0.999...}]

# テキスト生成 (小型モデル例)
gen = pipeline("text-generation", model="gpt2")
print(gen("Hello,", max_new_tokens=20))

# 音声認識 (Whisper)
asr = pipeline("automatic-speech-recognition", model="openai/whisper-base")
print(asr("audio.wav")["text"])

低レベル API: AutoModel + AutoTokenizer

from transformers import AutoTokenizer, AutoModelForCausalLM
import torch

name = "meta-llama/Llama-3.2-1B-Instruct"
tok = AutoTokenizer.from_pretrained(name)
model = AutoModelForCausalLM.from_pretrained(name, torch_dtype=torch.bfloat16, device_map="auto")

messages = [{"role": "user", "content": "1+1は?"}]
inputs = tok.apply_chat_template(messages, return_tensors="pt").to(model.device)
out = model.generate(inputs, max_new_tokens=64)
print(tok.decode(out[0], skip_special_tokens=True))

対応タスクの代表例

タスクpipeline 名代表モデル
テキスト分類text-classificationBERT、DistilBERT
テキスト生成text-generationLlama、Mistral、Qwen、GPT-2、Phi
翻訳translationNLLB、M2M、MarianMT
要約summarizationBART、Pegasus、T5
質問応答 (抽出)question-answeringBERT、RoBERTa
固有表現抽出 (NER)token-classificationBERT 系
埋め込み (Embedding)feature-extractionBGE、e5、Sentence Transformers
画像分類image-classificationViT、ResNet、ConvNeXt
物体検出object-detectionDETR、YOLOS
セグメンテーションimage-segmentationSegFormer、SAM
音声認識 (STT)automatic-speech-recognitionWhisper、Wav2Vec2
音声合成 (TTS)text-to-speechSpeechT5、Bark
マルチモーダル (画像+テキスト)image-to-text / visual-question-answeringBLIP、LLaVA、Qwen-VL

関連ライブラリの組合せ

用途使うライブラリ
モデル読込・推論transformers
データセットdatasetsload_dataset
分散・量子化補助accelerate
軽量ファインチューニングpeft (LoRA / QLoRA)
嗜好学習 / RLHFtrl (DPO / SFT / PPO)
高速トークナイズtokenizers
画像生成 (Diffusion)diffusers
評価evaluate
推論サーバtext-generation-inference (TGI)、vLLM
UI / デモgradio、Spaces で 1 クリックホスティング

Hugging Face Hub の構成

  • Models: 50 万件以上の事前学習モデル(テキスト・画像・音声・マルチモーダル)
  • Datasets: 学習・評価用のオープンデータセット
  • Spaces: Gradio / Streamlit でホスティングされた AI デモ
  • Papers: 論文と関連実装の連携
  • Discussions / PR: モデルカード上で議論・変更提案
  • Inference Endpoints: 任意のモデルをマネージドでデプロイ

インストール

# 基本セット
pip install transformers accelerate

# データセットも使うなら
pip install datasets evaluate

# 画像生成
pip install diffusers transformers accelerate

# LoRA / QLoRA
pip install peft bitsandbytes

# 高速推論サーバ
pip install vllm

運用上のヒント

Tips
  • 大型モデルは device_map="auto" で複数 GPU に自動配置
  • VRAM が足りないなら load_in_4bit=True (bitsandbytes) で 4-bit 量子化
  • サーバ推論は pipeline ではなく vLLM / TGI でスループット数倍
  • 初回ダウンロードはキャッシュされる (~/.cache/huggingface)。CI ではキャッシュ共有を検討
  • ライセンス制限のあるモデル (Llama 等) は事前にアクセス申請+トークン設定が必要
  • 本番推論は safetensors 形式のみを許可するのが安全

注意点

よくある落とし穴
  • モデルライセンスはモデルごとに違う (Llama Community License、Apache 2.0、GPL、商用不可など)。読まずに採用しない
  • 古い .bin (pickle) は任意コード実行のリスク。safetensors を使う
  • 大型モデル (7B / 13B / 70B) のフル精度はVRAM が一桁足りないことが多い。量子化・分散で対応
  • pipeline はバッチ性能が低い。本番は vLLMTGI
  • API バージョンアップで引数名や挙動が変わることがある。requirements.txt で固定
  • Hub から落としたモデルは大容量 (数 GB〜数百 GB)。ストレージ計画が必要
  • 機密データでファインチューニングしたモデルを誤って Public で pushしない

関連

編集
Post Share
子ページ

子ページはありません

同階層のページ
  1. PyTorch
  2. TensorFlow(テンソルフロー)
  3. scikit-learn
  4. Hugging Face Transformers
  5. LangChain
  6. LlamaIndex
  7. JAX
  8. ONNX Runtime

最近更新/作成されたページ