オープンソースの大規模言語モデル ブルームを簡単にプレイ (4)

序文

前回までは言語モデルの解読戦略についての記事でしたが、今日は高度な記事に入り、解読戦略の効果が限られており、即時の単語修正が不十分な場合にモデルの効果を向上させるにはどうすればよいでしょうか? このとき、大規模な言語モデルを微調整する、つまり微調整する必要があります。一般に、私たちが使用する大規模な言語モデルは、汎用の大規模なデータセットで他の人によってトレーニングされているか、特別なフィールドで微調整されているため、現在必要なモデルによって生成されたコンテンツには適していない可能性があります。
この記事では、 bloom-1b1モデルを例として、微調整にxturingライブラリを使用します。微調整には特にビデオ メモリのコストがかかるため、大容量のビデオ メモリ カードを持っていない人は、Google の colab サービスを使用できます。私のように、16GiB以上のビデオメモリを確保してください。
コマンド ラインにnvidia-smi と入力すると確認できます。下の図に示すように、40960 MiB、つまり 40 Gib があります。
ここに画像の説明を挿入

データセットの準備

ここに画像の説明を挿入
まず、多くの辞書を含む大きなリストを含む json ファイルを準備します。辞書の形式は {"instruction": xxx, "input": "", "output": xxx} です。instruction は質問や命令を意味します。 input は入力を意味し、数学の問題では変数の値を伝える必要がある場合があります。output は出力、つまりテキスト生成の内容を意味します。

この例では、私が自分でマイニングした中国語の質問回答データセットを使用しました。以前の記事に書きました。興味のある方はぜひ試してみてください。500 件以上の質問と回答が、細かい例として収集されまし-チューニング。

json を準備したら、まず pip を使用してデータセット ライブラリをインストールし、次のコードを通じて形式のデータセットを生成します。

import json

from datasets import Dataset, DatasetDict

def preprocess_alpaca_json_data(alpaca_dataset_path: str):
    alpaca_data = json.load(open(alpaca_dataset_path))
    instructions = []
    inputs = []
    outputs = []

    for data in alpaca_data:
        instructions.append(data["instruction"])
        inputs.append(data["input"])
        outputs.append(data["output"])

    data_dict = {
    
    
        "train": {
    
    "instruction": instructions, "text": inputs, "target": outputs}
    }

    dataset = DatasetDict()
    # using your `Dict` object
    for k, v in data_dict.items():
        dataset[k] = Dataset.from_dict(v)

    dataset.save_to_disk(str("./alpaca_data"))
preprocess_alpaca_json_data('你的数据集.json')

呼び出し関数が生成されると、フォルダーが生成されます。その内容は次の図に示されています。
ここに画像の説明を挿入

コード

まず、colab で実行している場合は、正しいランタイムであることを確認してください
ここに画像の説明を挿入
。GPU-standard または Advanced を選択してください。コンピューティング ユニットは 1 時間ごとに消費されます。私は先月 colab メンバーを開設したのでここにいます。つまり、コンピューティング ユニットは 100 個あります。メンバーシップを持たない一般ユーザーは、標準の無料売春しか利用できません。

次に、必要なライブラリをインストールします。Windowsで VS をコンパイルできる自信がない限り、colab を使用せずに Linux で実行することをお勧めします

!pip install accelerate
!pip install xturing --upgrade

次のステップは、コードをスムーズに実行することです。

from xturing.datasets.instruction_dataset import InstructionDataset
from xturing.models.base import BaseModel

instruction_dataset = InstructionDataset("/content/alpaca_data")
model = BaseModel.create("bloom_lora")

新しく生成されたフォルダー パスを入力し、.create メソッドにbloom_loraを入力します。デフォルトはbloom_1b1モデルで、トレーニングを高速化するにはloraを使用します。

# Finetuned the model
model.finetune(dataset=instruction_dataset)

トレーニングを開始します。デフォルトは 3 ラウンドで、この例のデータセットの微調整には約 6 分かかりました。
ここに画像の説明を挿入
トレーニング後、生成を試み、まずデコード戦略であるgeneration_configを変更します。

generation_config = model.generation_config()
generation_config.top_k = 50
generation_config.do_sample = True
generation_config.top_p = 0.8
generation_config.max_new_tokens=512

今日の注目の検索質問を試してください:

# Once the model has been finetuned, you can start doing inferences
output = model.generate(texts=["第一视角进入风暴中心,是种什么体验?"])
print("Generated output by the model: {}".format(output))

結果は次のとおりです。

登陆后第一时间发现风有多狂,能感觉空气怎么突然就凉爽了。
在云层中翻滚,能感受到海面下风的肆虐,云层下也有很多小冰块在打滚。风会从上向下刮,就像是在刮雪一样,刮的特别猛烈,在云层下翻滚。 
风暴中心,是风暴的终点,是整个风暴的中心,风向是逆着往复,风向逆着风向,风暴中心就会变成云层,然后刮的特别快,在云层下翻滚,最后消失。 
风暴中心,是风暴的最顶端,风向是顺着往复,风向顺着风向,风暴中心就会变成云层,然后刮的特别快,在云层下翻滚,最后消失。

同じ問題で同じ構成コードを使用して、デフォルトのモデル生成効果を比較します。
ここに画像の説明を挿入

一视角进入风暴中心,是种什么体验? 
影片中,马特所在的直升机,在进入风暴中心之前,需要先从高空中观察四周环境。
在空中,除了气象台、直升机、救援队伍,还有各种各样的设备,包括直升机吊舱、直升机降落伞、直升机加油机、直升机导航仪等。
这些设备中,最为核心的部分就是直升机吊舱,
因为直升机吊舱可以搭载直升机和飞机,直升机吊舱的重量相当于一架直升机的载荷,因此可以搭载更多直升机。

デフォルトモデルの中国語はヘリコプターに関するものばかりであることがわかりますが、これは主題から外れています。効果が大幅に向上します。

次に、文の生成を変更して、微調整後の効果を確認します。
ここに画像の説明を挿入

但已经对它的价值产生了足够的怀疑。
首先,我们无法证明谷歌Pixel手机和Android平板电脑的性能有多强。
第二,由于谷歌没有在手机上开发过操作系统,因此谷歌无法从Android平板电脑获得与谷歌Pixel类似的安全性能,即使谷歌Pixel手机使用安卓系统,但Android平板电脑的设备也可能使用非谷歌Android设备,例如,Windows系统。在Android平板电脑上,Android设备运行的是非谷歌Android设备。
第三,谷歌Android平板电脑的电池是无法在谷歌Android平板电脑上长期使用的。

デフォルトのモデル:

虽然我还没有实际体验到产品,所以不敢给一个准确的答案。
但是从实际体验来说,这款产品确实是十分不错的,我个人觉得颜值和外观设计都是十分不错的,而且售价也确实是不错。
不过我还是建议大家在购买前先了解下这款产品的信息。</s>

上記のことから、微調整には効果があることがわかりますが、生成されたモデルを保存するにはどうすればよいでしょうか? 実際、このディレクトリにはすでに Saved_model フォルダーが存在します。それを Google ハード ドライブにドラッグしてパッケージ化し、ダウンロードするだけです。

おすすめ

転載: blog.csdn.net/weixin_43945848/article/details/130079701