見出し画像

Huggingface Transformers 入門 (20) - 英語の要約の学習

「Huggingface Transformers」による英語の要約の学習手順をまとめました。

・Huggingface Transformers 4.4.2
・Huggingface Datasets 1.2.1

前回

1. 英語の要約の学習

CNN / Daily Mail summarization dataset」を使って英語の要約を学習します。

(1) データの永続化

# データの永続化
from google.colab import drive 
drive.mount('/content/drive')
!mkdir -p '/content/drive/My Drive/work/'
%cd '/content/drive/My Drive/work/'

(2) ソースからの「Huggingface Transformers」のインストール

# ソースからのHuggingface Transformersのインストール
!git clone https://github.com/huggingface/transformers -b v4.4.2
!pip install -e transformers

(3) 「Huggingface Datasets」のインストール

# Huggingface Datasetsのインストール
!pip install datasets==1.2.1

(4) メニュー「ランタイム → ランタイムを再起動」で「Google Colab」を再起動し、作業フォルダに戻る

# メニュー「ランタイム → ランタイムを再起動」で「Google Colab」を再起動

# 作業フォルダに戻る
%cd '/content/drive/My Drive/work/'

(5) 「rouge_score」のインストール。

!pip install rouge_score

(6) ファインチューニングの実行

%%time

# ファインチューニングの実行
!python ./transformers/examples/seq2seq/run_summarization.py \
    --model_name_or_path=t5-small \
    --do_train \
    --do_eval \
    --dataset_name=cnn_dailymail \
    --dataset_config="3.0.0" \
    --source_prefix="summarize: " \
    --per_device_train_batch_size=4 \
    --per_device_eval_batch_size=4 \
    --output_dir=output/ \
    --overwrite_output_dir \
    --predict_with_generate

(7) 8時間学習して、エポック指定なく終わらなそうなので、124000ステップでひとまず停止。

​2. 英語の要約の推論

import torch
from transformers import pipeline, AutoTokenizer, AutoModelForSeq2SeqLM

# モデルとトークナイザーの準備
model = AutoModelForSeq2SeqLM.from_pretrained('output/checkpoint-124000/')    
tokenizer = AutoTokenizer.from_pretrained('t5-small') 

# テキスト
text = r"""
One day, Son Goku, a boy with a tail who lives in the remote mountains of the earth, meets a girl, Bloomers, who came from the western capital. Then, if you collect seven, Shenron will appear, and one of them is the ball that carefully held the existence of the dragon ball that only one wish will come true as a keepsake of the parent, Son Gohan. Knowing that it is a "Susinchu", he embarks on a journey to find the remaining Dragon Ball with Bloomers. After searching for a ball involving oolong and thief Yamcha, the ball is stolen by Pilaf gang who plans to conquer the world and Shinryu is called, but oolong's ambition is fulfilled by having him fulfill his unyielding wish. To prevent.
"""

# テキストをテンソルに変換
inputs = tokenizer.encode(text, return_tensors="pt", max_length=512, truncation=True)

# 推論
model.eval()
with torch.no_grad():
    summary_ids = model.generate(inputs)
    summary = tokenizer.decode(summary_ids[0])
    print(summary)
<pad> Son Goku meets a girl, Bloomers, who came from the western capital.
ある日、地球の辺鄙な山に住む尻尾のある少年孫悟空が、西部の首都からやってきた少女ブルマと出会う。 そして、7つ集めると神龍が登場し、そのうちの1つは親の孫悟飯の記念品として1つだけの願いが叶うドラゴンボールの存在を大切にしたボールです。 それが四星球であることを知って、彼はブルマと一緒に残っているドラゴンボールを見つけるために旅に出ます。 ウーロンと泥棒のヤムチャを巻き込んだボールを探した後、世界征服を計画しているピラフ一味にボールを盗まれ、神龍が呼ばれるが、ウーロンの野心は彼にゆるぎない願いを叶えてもらうことで実現する。 

孫悟空は西部の首都からやってきた女の子、ブルマと出会う。

次回



この記事が気に入ったらサポートをしてみませんか?