Shikata Ga Nai

Private? There is no such things.

第12回:Hugging Faceを使って簡単なテキスト生成をしてみよう

Hello there, ('ω')ノ

🎯 はじめに:Hugging Faceとは?

Hugging Face(ハギングフェイス) は、自然言語処理(NLP)、画像認識、音声処理などの分野で、
事前学習済みモデル を簡単に利用できるオープンソースのプラットフォームです。

主なプロダクト:

  • Transformers: 大規模言語モデル(LLM)のAPIとライブラリ
  • Datasets: 高品質なNLPデータセットの提供
  • Tokenizers: 高速トークナイザーでテキスト前処理

対応する主要なモデル:

  • BERT、GPT-2、GPT-3、GPT-4 などのNLPモデル
  • DALL-E、Stable Diffusion などの画像生成モデル
  • Whisper などの音声モデル

📝 1. Hugging Faceの準備とインストール


⚡️ ① Python環境の準備

Hugging FaceはPythonベースなので、以下のコマンドでライブラリをインストールします。

# ライブラリのインストール
pip install transformers
pip install torch
pip install datasets

transformers モデルのロードとテキスト生成
torch PyTorchを使用したモデル推論
datasets NLPタスク用のデータセット


🔐 ② APIトークンの取得(任意)

Hugging Face HubのAPIトークンを取得すると、
制限なく大規模モデルを利用できます。

  1. Hugging Faceのアカウント作成
  2. プロフィールから API Token を取得
  3. コマンドラインでログイン
huggingface-cli login

🤖 2. Hugging FaceでGPT-2を使ったテキスト生成


🔥 ① モデルのロード

まずは、GPT-2の事前学習済みモデルをロードします。

from transformers import pipeline

# GPT-2 モデルのロード
generator = pipeline('text-generation', model='gpt2')

pipeline('text-generation'): テキスト生成パイプライン
model='gpt2': GPT-2ベースモデルの指定


✍️ ② 簡単なテキスト生成

GPT-2を使って 「AIが未来の仕事をどう変えるのか?」 について文章生成してみましょう。

# テキスト生成
prompt = "AIが未来の仕事をどう変えるのか?"
result = generator(prompt, max_length=50, num_return_sequences=1)
print(result[0]['generated_text'])

prompt: 入力文(プロンプト)
max_length: 最大出力トークン数
num_return_sequences: 生成するシーケンス数


🎉 ③ 生成結果の例

AIが未来の仕事をどう変えるのか?
AIは、単純作業の自動化だけでなく、創造的な業務や高度な意思決定にも関与するようになっています。
今後、AIは医療、教育、金融分野に革命をもたらすでしょう。

📚 3. テキスト生成モデルの選択とカスタマイズ


📖 ① さまざまなモデルの選択

Hugging Faceでは、GPT-2以外にも多くのモデルを利用できます。

GPT-3(OpenAI API経由)
GPT-Neo(EleutherAI) → GPT-3相当のオープンモデル
BLOOM(BigScience) → 多言語対応の大規模言語モデル
T5(Text-to-Text Transfer Transformer) → 翻訳、要約、分類


📊 ② GPT-Neoでのテキスト生成

GPT-Neoは EleutherAI が開発したオープンソースの言語モデルで、GPT-3と同様の性能を持っています。

# GPT-Neo モデルのロード
generator_neo = pipeline('text-generation', model='EleutherAI/gpt-neo-1.3B')

# プロンプトの指定
prompt = "未来の教育はAIによってどのように変わるのか?"
result_neo = generator_neo(prompt, max_length=50, num_return_sequences=1)
print(result_neo[0]['generated_text'])

EleutherAI/gpt-neo-1.3B 1.3B(13億パラメータ)のGPT-Neoモデル
max_length: 出力最大トークン数を50に設定


🔄 ③ モデルのカスタマイズ

生成の精度や多様性を調整するために、以下のパラメータが使用できます。

result = generator(
    prompt,
    max_length=100,            # 生成する最大トークン数
    num_return_sequences=3,    # 生成する文章の数
    temperature=0.7,           # 創造性のレベル(0.5〜1.0で調整)
    top_k=50,                  # 最上位のK個の単語からサンプリング
    top_p=0.9,                 # トークンの確率マスキング
    do_sample=True             # サンプリングを有効化
)

temperature 高いほど創造性が増す(0.7〜1.0)
top_k 上位k個の単語のみから選択(多様性制御)
top_p 確率マスキング(nucleus sampling)


🧩 4. 日本語モデルでのテキスト生成


🌸 ① 日本語モデルの選択

日本語対応の事前学習モデルとして、以下が利用できます。

rinna/japanese-gpt-1b: GPT-2相当の日本語モデル
Tohoku-NLP/bert-base-japanese: 日本語BERTモデル


📝 ② 日本語GPTモデルでテキスト生成

# 日本語GPTモデルのロード
generator_jp = pipeline('text-generation', model='rinna/japanese-gpt-1b')

# 日本語プロンプトで生成
prompt_jp = "AIが日本のビジネスに与える影響は?"
result_jp = generator_jp(prompt_jp, max_length=50, num_return_sequences=1)
print(result_jp[0]['generated_text'])

rinna/japanese-gpt-1b 日本語特化のGPT-2モデル
prompt_jp 日本語プロンプトを設定


🎉 ③ 生成結果の例(日本語)

AIが日本のビジネスに与える影響は?
AIは日本の製造業、サービス業、教育分野での効率化を促進し、
新しいビジネスモデルを生み出す可能性があります。

📚 5. Hugging Faceモデルの保存と再利用


💾 ① モデルの保存

生成したモデルは、ローカルファイルとして保存して再利用できます。

from transformers import AutoModelForCausalLM, AutoTokenizer

# モデルとトークナイザーの保存
model_name = "gpt2"
model = AutoModelForCausalLM.from_pretrained(model_name)
tokenizer = AutoTokenizer.from_pretrained(model_name)

# モデルの保存
model.save_pretrained("./my_gpt_model")
tokenizer.save_pretrained("./my_gpt_model")

save_pretrained() ローカルにモデルを保存
保存先: ./my_gpt_model ディレクトリ


📥 ② 保存したモデルの再ロード

# モデルの再ロード
from transformers import AutoModelForCausalLM, AutoTokenizer

model_path = "./my_gpt_model"
model = AutoModelForCausalLM.from_pretrained(model_path)
tokenizer = AutoTokenizer.from_pretrained(model_path)

from_pretrained() 保存済みモデルの再利用
model_path モデルの保存場所


🚀 6. Hugging Face APIでオンライン推論


🌐 ① Hugging Face Inference APIの活用

Hugging Face Hubに公開されているモデルは、API経由で推論が可能です。

from transformers import pipeline

# Hugging Face API からモデルの利用
generator_api = pipeline('text-generation', model='EleutherAI/gpt-neo-1.3B')

# APIを利用したテキスト生成
prompt_api = "未来のテクノロジーはどのように変わるのか?"
result_api = generator_api(prompt_api, max_length=50, num_return_sequences=1)
print(result_api[0]['generated_text'])

pipeline() API経由でモデル利用
APIの利用制限: 無料枠あり(Hugging Faceアカウントでのログイン推奨)


🎁 まとめ:Hugging Faceで簡単なテキスト生成をマスターしよう!

Hugging Faceは、大規模言語モデル(LLM)を簡単に利用できる強力なプラットフォーム。
GPT-2、GPT-3、GPT-Neo、BLOOM など、さまざまなモデルでテキスト生成が可能。
日本語対応モデルやマルチモーダルモデルも活用して、さらに高度なAIアプリケーションを構築できる。
Hugging Face APIとモデル保存機能を使えば、オンライン推論や自動化も簡単に実現可能。

Hello there, (^^ゞ