😊

【AI_3日目_2回目】Google ColaboratoryでFlan-T5を使ってみる

2024/09/04に公開

こんにちは投資ロウトです。

背景

Google Colaboratoryの使用ができるようにしたい背景があります。
※先輩にこれやったら?というハンズオン的なものを教えて頂いたので、それに倣ってやってみるところから始めていきます。

https://note.com/npaka/n/n62c38906c3e4

Colab有料プランに加入

Colab proは月に1179円でした。

加入していきます。

GPUの確認

/bin/bash: line 1: nvidia-smi: command not found

確認できませんでした。ランタイムから設定を変更する必要があるとのこと。

A100-GPUにします。

接続するのに多少時間はかかりました。

また設定したいやつが使えませんでした。そういうこともあるらしいですね。

今度は先ほどと表示が変わりました。

https://qiita.com/miyamotok0105/items/1b34e548f96ef7d40370

パッケージをインポートします。

!pip install transformers
!pip install sentencepiece
!pip install accelerate

・transformers・・・感情分析から文章生成まで多岐にわたるタスクが手軽に実行できる

https://qiita.com/ski2_1116/items/f74e7b97008663d0702d

・sentencepiece・・・テキストを「サブワード」に分割するツール

https://note.com/npaka/n/n90f97543ec4b

・1台のマシンに複数のGPUがあっても、複数のマシンにまたがる複数のGPUがあっても、あらゆるタイプの分散処理セットアップ上でユーザーが簡単にTransformersモデルを訓練できるようにするもの

https://huggingface.co/docs/transformers/ja/accelerate

自然言語処理タスクにおいて用いるための事前学習済みモデルと、トークナイザーを用意します。

from transformers import T5Tokenizer, T5ForConditionalGeneration

# 事前に学習されたflan-t5-xxlモデル用のトークナイザーを読み込む
tokenizer = T5Tokenizer.from_pretrained("google/flan-t5-xxl")
# 使用可能なハードウェア(CPUやGPU)にモデルの各部分を自動的に割り当てる
model = T5ForConditionalGeneration.from_pretrained("google/flan-t5-xxl", device_map="auto")

ダウンロードに17:42秒かかりました。

それでは質問してみます。

# 入力テキスト(日本で有名な論破王といえば誰ですか?)
input_text = "Who is the famous master debater in Japan?"

# トークナイズをテンソルに変換。
# tokenizer(input_text, return_tensors="pt")は質問テキストをトークナイズ変換を行い、PyTorchのテンソル形式で返す
# input_idsはトークナイズされたテキストIDを取得
# to("cuda")は生成されたテンソルをCUDA対応のGPUに移動
input_ids = tokenizer(input_text, return_tensors="pt").input_ids.to("cuda")

# モデルを使ってテキストを生成
# max_length=200は生成されるテキストの最大長を200トークンに制限
outputs = model.generate(input_ids, max_length=200, bos_token_id=0)

#  生成されたトークンIDのシーケンスを人が読めるテキストに変換
result = tokenizer.decode(outputs[0], skip_special_tokens=True)
print(result)

生成結果

yoshiaki kobayashi

ひろゆきさんかと思ったら、そうでもないんですね。。。こばやしよしあきさんって・・・誰?笑

と一旦以上で、学習を区切りたいと思います。ご精読ありがとうございました。焦らずコツコツ進めていきたいと思います。

Discussion