🌎

ファインチューニング用の訓練データの作成方法

2023/09/04に公開

概要

機械学習モデルのファインチューニングは、特定のタスクに対してモデルを最適化する一般的な手法です。しかし、ファインチューニングを行う前に、適切なデータセットを用意する必要があります。

この記事では、Pythonを使用して簡単にファインチューニング用のデータセットを作成する方法を紹介します。

内容

事前準備:ライブラリのインストールとトークナイザーの準備

datasetstransformersを使えば簡単にファインチューニングができます。

https://huggingface.co/docs/datasets/index

https://huggingface.co/docs/transformers/index

まずdatasetsをinstallします。

(仮想環境)% pip install datasets

ファインチューニングしたいtokenizerはあらかじめ準備しておきます。

以下に一例を示します。

(仮想環境)% pip install transformers
from transformers import AutoTokenizer
model_name = "elyza/ELYZA-japanese-Llama-2-7b-instruct"
tokenizer = AutoTokenizer.from_pretrained(model_name)

プログラム:ファインチューニング用のデータセット作成

ファインチューニングさせたい文章をファイルで用意するか、変数に入れておきます。
今回は簡単のために後者のプログラムを示します。

from datasets import Dataset

# textにはファインチューニングさせたい文章を改行区切りで格納
text = """文1
文2
文3
...
文N"""

text_data = text.split("\n")
# あらかじめ準備したトークナイザーでトークン化
tokenized_text = tokenizer(text_data, padding=True, truncation=True)
dataset = Dataset.from_dict(tokenized_text)
train_dataset = dataset.with_format("torch")

これでファインチューニング用のデータセットは完成です!!

あとはお好みのモデルでファインチューニングを行ってみてください!!

以下に一例を示します。

(仮想環境)% pip install transformers
trainer = transformers.Trainer(
    model=model,
    train_dataset=train_dataset ,
    data_collator=transformers.DataCollatorForLanguageModeling(tokenizer, mlm=False)
)
trainer.train()

まとめ

この記事では、Pythonを使用して簡単にファインチューニング用のデータセットを作成する方法を紹介しました。ファインチューニング以外にも転移学習、LoRAでも同様の手順でデータセットを準備できます。

データセットの準備は非常に簡単なので、皆さんもお手元で試してみてください。

Discussion