「.NET 開発基盤部会 Wiki」は、「Open棟梁Project」,「OSSコンソーシアム .NET開発基盤部会」によって運営されています。
LLMのファイン・チューニング(FT)は既存LLMを特定の用途や業界向けに最適化するための手法
FTは、以下のような場面で活用される。
場面 | 使途 |
カスタマーサポート | 自社独自のFAQや業界特有の表現に適応させる。 |
医療や法律分野 | 専門用語や規制対応の正確な知識を学習させる。 |
文書生成や翻訳 | 高精度な自然言語処理を必要とする場面。 |
主に以下の手法がある。
分類 | 種類 | 解説 |
フル・ファインチューニング | 全体調整型 | LLM全体を再学習させる方法。高いカスタマイズ性があるが、学習に大量のデータと計算リソースが必要。 |
軽量ファイン・チューニング | 表現調整型・パラメタ効率型 | 一部のパラメタや特定の層に限定して調整を加える方法。計算コストを抑えつつ高いカスタマイズ性を維持。 |
分類 | 手法 |
全体調整型 | Full Fine-Tuning |
部分調整型 | ReFT (Representation Fine-Tuning), Reward Fine-Tuning |
パラメタ効率型(PEFT: Parameter-Efficient Fine-Tuning) | LoRA, QLoRA, Adapter, Prefix Tuning, BitFit |
指示・強化学習型 | Instruction Tuning, RLHF(Reinforcement Learning from Human Feedback) |
モデルの全パラメタを特定のタスクやドメインに合わせて調整するプロセス
PEFT:Parameter-Efficient Fine-Tuning
モデルの内部(≒埋め込み層、隠れ層、アテンション機構)を報酬を使って微調整する。
LoRA:Low-Rank Adaptation(低ランク適応)
JSON: {"input": "ユーザーの質問", "output": "AIの回答"}
QLoRA:Quantized Low-Rank Adaptation
※ 余談だが、
LoRA:Low-Rank Adaptationの「スキップ接続された線形結合層」(Adapter)を追加(Adaptation)するような方法、全般。
BitFit?:Bias-only fine-tuning
指示に基づいてモデルを調整する教師あり学習(Supervised Fine-Tuning, SFT)
RLHF:Reinforcement Learning from Human Feedback
Get-AzComputeResourceSku | Where-Object { $_.Name -eq "Standard_NV36ads_A10_v5" } | Select-Object Locations
vmSize=Standard_NV36ads_A10_v5 vmOS=Canonical:0001-com-ubuntu-pro-focal:pro-20_04-lts-gen2:latest vmName=GPU-VM2 vmUser=XXXX vmPassword=XXXX※ Ubuntu2004なのは「NVIDIA GPU Driver Extension」の前提条件のため。
az vm image terms accept \ --publisher canonical \ --offer 0001-com-ubuntu-pro-focal \ --plan pro-20_04-lts-gen2※ 作成後はセキュア ブートと vTPM を無効化する必要がある。
VMを起動した状態で、VMの「拡張機能とアプリケーション」から、
拡張機能 > NVIDIA GPU Driver Extensionをインストールする。
sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/7fa2af80.pub sudo apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub・nvcc -Vで実際に入ったバージョンを確認すると、11.3ではなく最新バージョン(12.9)が入っていることが確認できる。
nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2025 NVIDIA Corporation Built on Tue_May_27_02:21:03_PDT_2025 Cuda compilation tools, release 12.9, V12.9.86 Build cuda_12.9.r12.9/compiler.36037853_0
sudo apt update sudo apt install -y build-essential zlib1g-dev libncurses5-dev libgdbm-dev \ libnss3-dev libssl-dev libreadline-dev libffi-dev curl libsqlite3-dev wget \ libbz2-dev・Python 3.12.3 のソースコードをダウンロード
cd /usr/src sudo wget https://www.python.org/ftp/python/3.12.3/Python-3.12.3.tgz sudo tar xzf Python-3.12.3.tgz cd Python-3.12.3・コンパイルしてインストール
sudo ./configure --enable-optimizations sudo make -j$(nproc) sudo make altinstall※ --enable-optimizations は高速化オプション
/usr/local/bin/python3.12 --version /usr/local/bin/python3.12 >>>・実行とバージョン確認
python3.12 --version python3.12 >>>
python3.12 -m venv .python312_venv・activate
source .python312_venv/bin/activate・deactivate
deactivate
sudo python3.12 -m ensurepip --upgrade sudo python3.12 -m pip install --upgrade pip・/usr/local/bin/pip3.12 が使って仮想環境外でパッケージをインストール
/usr/local/bin/pip3.12 install --user numpy※ --user をつけることで、~/.local/ 以下にインストールされ、他環境には影響を与えない。
pip install --upgrade pip・仮想環境内でパッケージをインストール
pip install numpy
以下のような問題があり、先ずは上手く動作しなかった。
(暫くは実績のある環境&コードで実行、環境を合わせるのに苦労する)。
from peft import PeftModel base_model = AutoModelForCausalLM.from_pretrained("meta-llama/Llama-2-7b-hf", device_map="auto") model = PeftModel.from_pretrained(base_model, "path/to/lora_adapter") merged_model = model.merge_and_unload() merged_model.save_pretrained("merged_model") tokenizer.save_pretrained("merged_model")
FROM llama2 # ファインチューニング済み GGUF を追加 PARAMETER_FILE ./llama-2-7b-q4.gguf
ollama create my-llama2-qa -f Modelfile
ollama run my-llama2-qa