はじめに
このコードは、Google Colab(無料版でOK)上でQLoRA (Quantized Low-Rank Adaptation)を使用して大規模言語モデルを訓練し、その後GGUF形式に変換するためのものです。それぞれの部分について詳しく解説していきます。
QLoRAをGUIで作成したい人はこちらがおすすめ
セットアップとライブラリのインストール
PyTorchライブラリのインポート
import torch
PyTorchライブラリをインポートします。これは深層学習のための主要なライブラリです。
CUDAデバイスのバージョン確認
major_version, minor_version = torch.cuda.get_device_capability()
CUDAデバイス(GPU)のメジャーおよびマイナーバージョンを取得します。これは、使用するGPUの能力を確認するために必要です。
Unslothライブラリのインストール
if major_version >= 8:
!pip install "unsloth[colab_ampere] @ git+https://github.com/unslothai/unsloth.git"
else:
!pip install "unsloth[colab] @ git+https://github.com/unslothai/unsloth.git"
使用しているGPUのアーキテクチャに応じて、適切なバージョンのUnslothライブラリをGitHubからインストールします。
Transformersライブラリのインストール
!pip install "git+https://github.com/huggingface/transformers.git"
Hugging FaceのTransformersライブラリをGitHubからインストールします。これは、多くの事前訓練済みモデルを提供するライブラリです。
モデルとトークナイザーの設定
FastLanguageModelのインポート
from unsloth import FastLanguageModel
UnslothライブラリからFastLanguageModelクラスをインポートします。
モデルとトークナイザーのロード
model, tokenizer = FastLanguageModel.from_pretrained(...)
FastLanguageModelを使用して、特定のモデルとトークナイザーをプリトレーニングからロードします。
LoRAアダプタの追加
model = FastLanguageModel.get_peft_model(model, ...)
LoRA(Low-Rank Adaptation)アダプタをモデルに追加して、訓練効率を向上させます。これにより、モデルの特定のパラメーターのみが更新されるようになります。
データ準備
データセットのロード
from datasets import load_dataset
dataset = load_dataset("yahma/alpaca-cleaned", split = "train")
Hugging Faceのdatasetsライブラリを使用して、アルパカデータセットをロードします。
データセットのフォーマット
dataset = dataset.map(formatting_prompts_func, batched = True,)
特定の関数を使用してデータセットをバッチでフォーマットします。
モデルの訓練
SFTTrainerの設定
from trl import SFTTrainer
trainer = SFTTrainer(...)
TRLライブラリからSFTTrainerを使用して、モデルの訓練を行います。
訓練の実行
trainer_stats = trainer.train()
訓練を開始し、訓練統計を取得します。
GGUFへの変換
変換関数の定義
def colab_quantize_to_gguf(...):
...
モデルをGGUF形式に変換する関数を定義します。
モデルの保存と変換の実行
unsloth_save_model(model, tokenizer, "output_model", ...)
colab_quantize_to_gguf("output_model", ...)
成果物
GGUF変換が完了するとこんな画面になります。
生成されるファイルはこんな感じです。
ノートブック
参考サイト
モデルとトークナイザーを保存し、その後GGUF形式に変換します。
コメント