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?

生成 AI モデルの最適化:ファインチューニングと量子化

Posted at

作者:Farruh

1.jpeg

人工知能は、流行語からビジネスアプリケーションとパーソナルアプリケーションの両方で重要なツールに飛躍を遂げました。 AI 分野が拡大するにつれて、より効率的でタスク固有のモデルが必要になります。 そこで、ファインチューニングと量子化を行い、事前に構築されたモデルを改善することによって、ニーズに合わせ、より効率的に行うことができます。 以下に、Python と Hugging Face Transformers ライブラリを使用して、言語モデルのファインチューニングと量子化のプロセスをご案内します。

AI におけるファインチューニングと量子化の重要性

ファインチューニングは、幅広いスキルセットを特殊なスキルに磨くことに似ています。 事前学習済み言語モデルは、多くのトピックについて多くのことを知っているかもしれませんが、ファインチューニングによって、法律用語や医学用語などの特定の分野の専門家になることができます。

量子化は、これらの大規模モデルのリソースを効率化し、メモリ使用量を削減し、計算を高速化することによってこれを補完します。エッジデバイス上または計算能力が限られた環境でモデルを展開する場合に特に有益です。

2.jpeg

企業と個人に対する価値

企業は、ファインチューニングされ量子化されたモデルを活用して、リソースの制約のために実現不可能と思われる高度な AI アプリケーションを作成できます。 個人にとっては、これらの手法により、標準のハードウェアで高度な AI を実行できるようになり、個人のプロジェクトや研究をより利用しやすくすることができます。

3.jpeg

Hugging Face Account の設定

コードに取り組む前に、AI モデルとデータセットにアクセスする必要があります。 Hugging Face で始めます

  1. Hugging Face にアクセスします。

  2. [Sign Up] をクリックして、新しいアカウントを作成します。

  3. 登録プロセスを完了します。

  4. 電子メールを確認して、準備完了です。

4.png

環境の準備

まず、必要なライブラリがインポートされます。 PyTorch 機能用の torch ライブラリと、モデルアーキテクチャと事前学習済みの重み用に Hugging Face のtransformer ライブラリが必要です。 その他のインポートには、データセットの読み込みと処理のための datasets、効率的なトレーニングルーチンと量子化サポートのための pift および trl があります。

import torch
from datasets import load_dataset
from transformers import (
    AutoModelForCausalLM,
    AutoTokenizer,
    BitsAndBytesConfig,
    TrainingArguments,
    pipeline,
    logging,
)
from peft import LoraConfig, PeftModel
from trl import SFTTrainer

モデルとデータセットの選択

次に、ファインチューニングに重要なモデルとデータセットをコードで指定します。 model_name 変数には、ファインチューニングする事前学習済みモデルの識別子が格納され、dataset_name はトレーニングに使用するデータセットの識別子です。

model_name = "Qwen/Qwen-7B-Chat"
dataset_name = "mlabonne/guanaco-llama2-1k"
new_model = "Qwen-7B-Chat-SFT"

ファインチューニングパラメーター

ファインチューニングのパラメーターは、TrainingArguments を使用して設定されます。 パラメーターには、エポック数、バッチサイズ、学習速度などが含まれます。ファインチューニングプロセス中のモデルによる学習方法を決定します。

training_arguments = TrainingArguments(
    output_dir="./results",
    num_train_epochs=1,
    per_device_train_batch_size=1,
    gradient_accumulation_steps=1,
    learning_rate=2e-4,
    weight_decay=0.001,
    # ... other arguments
)

BitsAndBytes による量子化

BitsAndBytesConfig で、量子化のモデルを設定します。 load_in_4bitTrue に設定すると、モデルが 4 ビット量子化バージョンを使用できるようになり、サイズが縮小され、速度が向上する可能性があります。

bnb_config = BitsAndBytesConfig(
    load_in_4bit=use_4bit,
    bnb_4bit_quant_type=bnb_4bit_quant_type,
    bnb_4bit_compute_dtype=compute_dtype,
    bnb_4bit_use_double_quant=use_nested_quant,
)

モデルのファインチューニングとトレーニング

モデルは指定された設定で読み込まれ、トークナイザが準備されます。 次に、SFTTrainer を使用して、読み込まれたデータセットのモデルのファインチューニングを行います。 学習後、モデルは将来の使用のために保存されます。

model = AutoModelForCausalLM.from_pretrained(
    model_name,
    quantization_config=bnb_config,
    # ... other configurations
)

trainer = SFTTrainer(
    model=model,
    train_dataset=dataset,
    # ... other configurations
)

trainer.train()
trainer.model.save_pretrained(new_model)

モデルの評価

モデルをファインチューニングして量子化することで、プロンプトに基づいてテキストを生成し、パフォーマンスを確認できるようになります。 これは、transformers からの pipeline 機能を使用して行われます。

pipe = pipeline(task="text-generation", model=model, tokenizer=tokenizer, max_length=200)
result = pipe(f"<s>[INST] {prompt} [/INST]")
print(result[0]['generated_text'])

チュートリアルの読者を惹きつける

このガイドでは、環境の設定から、最初のファインチューニングと量子化モデルの実行まで、段階的に説明します。 各ステップでは、コードのスニペットを用いて説明し、その目的を説明し、必要に応じて変更する方法を読者に説明します。

結論

このチュートリアルを終了することにより、読者は事前学習済みの言語モデルをファインチューニングおよび量子化する方法をしっかりと理解できるでしょう。 この知識により、AI アプリケーションの新しい可能性の世界を開き、モデルの専門性をと効率を高めることができます。

AI の分野は絶えず進化しており、最新の技術を最新の状態に保つことがその可能性を最大限に引き出すための鍵となることを忘れないでください。 積極的に取り組み、実験し、そして成果と学びをコミュニティと共有してください。

AI の専門性を高める準備を始めましょう。


この記事は英語から翻訳されました。 元の記事はこちらからアクセスできます。

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?