0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BERTの実装を試す

Last updated at Posted at 2025-03-12

BERTの実装を試す。

BERTもLLMだが、ChatGPTと違うのは、双方向(bidirectional)でマスクトランゲージモデル(単語の一部を隠して学習)を採用している点だ。今回はCPUのみで行う。

Jupyter Notebookで作成したので、こちらを参照。

ライブラリをインストール

Hugging Faceのtransoformersをインストールする。

pip install transformers datasets torch scikit-learn

映画レビューDBを使ってファイン・チューニング

データセットのロードとトークン化

from datasets import load_dataset

# IMDb映画レビューのデータセット
dataset = load_dataset("imdb")

from transformers import BertTokenizer

tokenizer = BertTokenizer.from_pretrained("bert-base-uncased")

# データの前処理関数
def encode(examples):
    return tokenizer(examples["text"], truncation=True, padding="max_length", max_length=512)

# データセットをトークナイズ
dataset = dataset.map(encode, batched=True)

モデルロードとパラメータ設定

from transformers import BertForSequenceClassification

# 感情分析用に2クラスの出力を持つBERT
model = BertForSequenceClassification.from_pretrained("bert-base-uncased", num_labels=2)

from transformers import TrainingArguments

training_args = TrainingArguments(
    output_dir="./results",       # 学習後のモデルの保存場所
    per_device_train_batch_size=4, # バッチサイズ
    per_device_eval_batch_size=4,
    num_train_epochs=3,           # 学習エポック数
    logging_dir="./logs",         # ログの保存場所
)

学習

メモリを消費しすぎるので、バッチサイズ4にした。

from transformers import Trainer

trainer = Trainer(
    model=model,
    args=training_args,
    train_dataset=dataset["train"],
    eval_dataset=dataset["test"],
)

# 学習の開始
trainer.train()

それでもCPUだけだと、学習に時間かかりすぎなので、次はONNXに変換してやってみたい。

ググったら、もっと簡単に一行でできるみたい。本当に現代はスキルがすぐに陳腐化する時代なあ。
HuggingFaceのTransformerライブラリを使ってみよう

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?