---
arxiv_id: 2403.13372
title: "LlamaFactory: 100種類以上の言語モデルを効率的に微調整するための統合プラットフォーム"
authors:
  - Yaowei Zheng
  - Richong Zhang
  - Junhao Zhang
  - Yanhan Ye
  - Zheyan Luo
  - Zhangchi Feng
  - Yongqiang Ma
difficulty: Intermediate
tags:
  - LLM
  - Benchmark
published_at: 2026-04-05
flecto_url: https://flecto.zer0ai.dev/ja/papers/2403.13372/
lang: ja
---

> 最先端の効率的な学習方法を統合した、統一的なフレームワーク。これにより、コーディングなしで、100種類以上のLLM（大規模言語モデル）のファインチューニングを柔軟にカスタマイズできます。

**著者**: Yaowei Zheng、Richong Zhang、Junhao Zhang、Yanhan Ye、Zheyan Luo、Zhangchi Feng、Yongqiang Ma &mdash; Beihang University & Peking University

## Abstract

大規模言語モデル（LLM）を、様々な下流タスクに適応させるためには、効率的なファインチューニングが不可欠です。しかし、これらの手法を異なるモデルに適用するには、かなりの労力が必要です。 LlamaFactory は、最先端の効率的なトレーニング手法を統合した、統一的なフレームワークです。このフレームワークは、組み込みのWeb UIである LlamaBoard を通じて、コーディングなしで 100種類以上のLLM のファインチューニングを柔軟にカスタマイズするためのソリューションを提供します。このフレームワークは、言語モデリングおよびテキスト生成タスクにおいて、実験的に検証されており、 25,000以上のGitHubスター と 3,000以上のフォーク を獲得しています。

## Introduction

### はじめに

大規模言語モデル（LLMs）は、驚くべき推論能力を示し、質問応答、機械翻訳、情報抽出など、幅広いアプリケーションを支えています。Hugging FaceのオープンLLMランキングには5,000以上のモデルが登録されており、このエコシステムは急速に成長しています。しかし、これらのモデルを特定のタスクに適用することは、大きな課題を伴います。

### LLM ファインチューニングにおける主要な課題

### リソースの制約: 制限されたGPUメモリで数十億のパラメータをファインチューニングすることは、多くの研究者にとって主要なボトルネックとなっています。

### 実装の複雑さ: 各効率的なファインチューニング手法は、異なるモデルアーキテクチャごとにカスタム実装が必要です。

### 断片化されたエコシステム： 既存のフレームワークは、利用可能なメソッドやモデルのほんの一部しかカバーしておらず、統一されたソリューションが不足しています。

これらの問題に対処するため、 LlamaFactory は、特定のモデルやデータセットへの依存性を最小限に抑える、3つの主要モジュール（Model Loader、Data Worker、Trainer）を備えたモジュール式のフレームワークを提供します。これにより、事前学習、教師ありファインチューニング (SFT)、RLHF、および DPO を含む、数百のモデルやトレーニング手法への柔軟な拡張が可能になります。

## Techniques

### 効率的なファインチューニング技術.

LlamaFactoryの効率的なファインチューニング技術は、大きく2つのカテゴリに分けられます。 効率的な最適化 （どのパラメータを更新する必要があるかを削減する）と、 効率的な計算 （各計算ステップのコストを削減する）です。これらを組み合わせることで、メモリ使用量をパラメータあたり18バイトからわずか0.6バイトまで削減できます。

### 効率的な最適化手法.

### Freeze-tuning: ほとんどのパラメータを固定し、デコーダ層の小さなサブセットのみを微調整します。

### LoRA: 低ランク適応 (Low-rank adaptation) &mdash; 学習可能な低ランク行列を、固定された重みに追加します。

### QLoRA: 4ビット量子化モデルに対するLoRAの適用により、極めて少ないメモリで動作させることができます。

### DoRA: 重み分解されたLoRAによる、トレーニングの安定性向上。

### LoRA+: AとBの行列に対して異なる学習率を適用することで、より高速な収束を実現します。

### PiSSA: 主成分を取り込み、より良い初期状態を得るためにアダプターを初期化します。

### GaLore: 勾配ベースの低ランク射影法による、メモリ使用量を削減した全パラメータ学習。

### BAdam: Adamを用いたブロック座標最適化法。トレーニングパラメータを順番に更新します。

### 効率的な計算方法

### 混合精度： fp16/bf16で学習を行うことで、メモリ使用量を半分に抑えながら、わずかな品質低下で済ませることができます。

### アクティベーション・チェックポイント: 逆伝播時にアクティベーションを再計算することで、計算リソースをメモリに置き換えます。

### Flash Attention: I/Oを意識したアテンション計算であり、高速かつメモリ効率が良い。

### S 2 注意: 長いコンテキスト長を処理するためのシフト付きスパースアテンション。

### Unsloth: 加速LoRAトレーニングのためのカスタムCUDAカーネル。

### 量子化: bitsandbytes, GPTQ, AWQ、または AQLM を使用した 4 ビット/8 ビット量子化により、モデルを圧縮できます。

### 表2: LlamaFactoryにおいて、どのファインチューニング手法を組み合わせて使用できるかを示す互換性マトリックス。

## Framework

### フレームワークのアーキテクチャ

LlamaFactoryは、主に以下の3つのモジュールで構成されています。 Model Loader （LLMとVLMの両方のモデルアーキテクチャを処理します）、 Data Worker （シングルターンおよびマルチターンの対話に対応した統合パイプラインを通じてデータを処理します）、そして Trainer （事前学習、SFT、RLHF、およびDPOにわたって効率的なファインチューニング技術を適用します）。さらに、コードを書かずにファインチューニングを実行できるWeb UIである LlamaBoard が上に配置されています。

### ` 図1: LlamaFactoryのアーキテクチャを示しており、主要な3つのモジュールとLlamaBoardインターフェースが描かれています。`

### モデルローダー

### 様々なアーキテクチャに対応し、モデルの初期化、パッチ適用、量子化、アダプターの接続、および精度調整を処理します。

` モデルの初期化: TransformersのAutoクラスを使用して、事前学習済みのモデル（AutoModelForCausalLM、AutoModelForVision2Seq）をロードします。`

### モデルのパッチ適用: S 2 アテンションに対するモンキーパッチ; Transformers 4.34.0 以降、ネイティブの Flash Attention をサポート。

### モデル量子化： bitsandbytes、GPTQ、AWQ、AQLMによる動的な4/8ビット量子化。

### アダプターの接続： PEFTライブラリを通じて、LoRA、rsLoRA、DoRA、PiSSAのレイヤーを自動的に識別します。

### 精密な適応： GPUの計算能力に基づいて、自動的にfp16/bf16を選択します。

### データワーカー

### 異なる形式のデータセットを、柔軟な微調整を可能にする統一された構造に標準化します。

### ` データセットの読み込み: Hugging Face Hubまたはローカルファイルから、Datasetsライブラリを使用して読み込みます。Arrowによる効率的なメモリ使用が可能です。`

### データセットのアライメント： データ記述仕様は、多様な形式（Alpaca, ShareGPT, プレーンテキスト、好みのデータなど）を、標準化された構造に変換します。

### データセットのマージ： ストリーミングではないデータセットの場合は連結を使用し、ストリーミングモードの場合はインターリーブ読み込みを使用します。

### 前処理： モデルの種類ごとに自動的にチャットテンプレートを選択します。オプションで、より高速なトレーニングのためにシーケンスを結合することも可能です。

### トレーナー

### 最先端のトレーニング手法と、分散トレーニングのサポートを統合しています。

### 効率的な学習： LoRA+, GaLore, BAdam を、デフォルトの最適化コンポーネントの代替として、そのまま利用できるように統合しました。

### モデル共有によるRLHF: アダプター分離によって、アクターモデルとクリティックモデル間で重みを共有することで、単一のGPUで完全なRLHFトレーニングを可能にします。

### 分散学習： DeepSpeed ZeROのStage 1～3を利用したデータ並列によるマルチGPUトレーニング; パーティショニングとオフロードによるメモリ削減。

## Experiments Downstream

### 下流タスクのパフォーマンス

性能は、以下の3つのテキスト生成タスクで評価されました。 CNN/DailyMail および XSum （英語の要約）、および AdGen （中国語の広告生成）。8つのInstruction-tunedモデルを、フルファインチューニング、GaLore、LoRA、およびQLoRAを用いてテストし、平均ROUGE-1、ROUGE-2、およびROUGE-Lスコアを測定しました。

### 表5： CNN/DailyMail、XSum、およびAdGenタスクにおける、異なるモデルとファインチューニング手法によるROUGEスコアの比較。

重要な発見として、 LoRAとQLoRAは、ほとんどの場合において最高のパフォーマンスを発揮する ことが示されており、多くの場合、フルファインチューニングと同等またはそれ以上の性能を発揮します。これは、効率的な手法が品質を犠牲にしないことを示しており、むしろ正則化効果によって品質を向上させることができ、かつメモリ使用量をわずかなものに抑えることができることを意味します。

## Experiments Efficiency

### トレーニング効率の結果

トレーニング効率は、 PubMed データセット（3600万件以上の生物医学記録）を用いて、 Gemma-2B 、 Llama2-7B 、および Llama2-13B モデルで評価しました。比較された手法には、フルファインチューニング、GaLore、LoRA、およびQLoRAが含まれており、ピークメモリ使用量、トレーニングのスループット（トークン/秒）、およびパープレキシティ（PPL）を測定しました。

### QLoRAによるGemma-2Bのメモリ使用量（フルファインチューニングの場合17.06 GB）。

### Gemma-2B の LoRA スループット（トークン/秒）。

### QLoRAによるLlama2-13Bのメモリ使用量（フルファインチューニングは不可能）。

### 表4: Gemma-2B、Llama2-7B、およびLlama2-13Bにおける学習効率の比較。学習可能なパラメータ数、メモリ使用量、スループット、およびパープレキシティを示します。

QLoRAは、事前学習済みの重みが低い精度で保存されるため、常に最も低いメモリ使用量を実現します。LoRAは、ほとんどの場合で最高の処理速度を提供します。注目すべき点として、 Llama2-13Bのフルファインチューニングを行うと、単一のA100 40GB GPUでメモリ不足が発生しますが、QLoRAではわずか12.61GBで処理できます。

## Conclusion

### 結論と今後の展望

LlamaFactoryは、統一されたモジュール式フレームワークが、LLM（大規模言語モデル）のファインチューニングをより身近なものにできることを示しています。モデル、データセット、およびトレーニング方法間の依存関係を最小限に抑えることで、多様な効率的な手法を用いた100種類以上のLLMのファインチューニングを可能にします。さらに、LlamaBoardは、コーディング不要のWebインターフェースを提供することで、設定、トレーニング、および評価のプロセスを簡素化します。

### 今後のロードマップ

### マルチモーダルファインチューニング： テキストと画像に加えて、音声と動画のモダリティへの対応を拡張します。

### 高度な並列化： シーケンス並列化とテンソル並列化を統合し、さらに大規模な学習を実現します。

### 対話型ファインチューニング： 自己対戦やその他の高度な手法を用いた、対話モデルの品質向上に関する研究。

## Broader Impact

### より広範な影響と責任ある利用について

LlamaFactoryは、大規模言語モデル(LLM)の実践者からなる大きなコミュニティを引きつけ、オープンソースの発展に大きく貢献しています。Hugging Faceの「Awesome Transformers」リストに掲載されており、効率的なファインチューニングフレームワークの代表的なものとして知られています。著者は、このフレームワークを基に開発を行う際には、責任ある利用とモデルのライセンス遵守を重視しています。

## References

### 参考文献

### 参考文献（17件の主要な引用文献）を表示します。

## Supported Models

### サポートされているモデル：

### サポートされている50種類以上のモデルファミリーを表示します。

### 表6： サポートされているモデルの完全リスト（Llama、Gemma、Qwen、Mistral、Phi、DeepSeekなど多数）。

## Feature Comparison

### 既存のフレームワークとの機能比較

### LlamaFactoryは、最適化手法、計算効率化技術、および学習パラダイムにおいて、包括的なサポートを提供することで際立っており、その範囲は、他のどの競合フレームワークも匹敵しません。

### 表1: LlamaFactoryと、FastChat、LitGPT、LMFlow、およびOpen-Instructとの機能比較。最適化手法、計算技術、およびトレーニングパラダイムについて。

## Llamaboard

### LlamaBoard: コード不要のファインチューニングインターフェース

LlamaBoardは、GradioをベースにしたWebインターフェースであり、ユーザーはコードを一切書かずに、LLM（大規模言語モデル）のファインチューニングをカスタマイズできます。設定から評価まで、シームレスな体験を提供します。

### 簡単な設定

ウェブインターフェースを通じて、ほとんどのパラメータに対して適切なデフォルト値が設定された状態で、ファインチューニングの引数をカスタマイズできます。トレーニング前に、データセットをUI上で直接プレビューして検証することができます。

### 監視可能なトレーニング

### トレーニングログと損失曲線は、リアルタイムで可視化および更新され、ユーザーはトレーニングの進捗状況を監視し、ファインチューニングのプロセスに関する洞察を得ることができます。

### 柔軟な評価

### テキストの類似度スコア（BLEU-4、ROUGE）を自動的に計算することも、ファインチューニングされたモデルと直接チャットすることで、人間による評価を行うことも可能です。

### 多言語サポート

英語、ロシア語、中国語に対応したインターフェースのローカライゼーションにより、より幅広いユーザーがLlamaBoardを利用して、ファインチューニングのワークフローを行うことができるようになりました。

## Data Formats

### サポートされているデータ形式：

LlamaFactoryは、Data Workerパイプラインを通じて、以下の5種類のデータセット構造をサポートしています。プレーンテキスト、Alpacaに似たデータ、ShareGPTに似たデータ、評価データ、そして、これら全てを統合する標準化されたフォーマットです。この柔軟性により、ユーザーはあらゆる一般的な形式で独自のデータを持ち込むことができます。

### 表3： LlamaFactoryがサポートするデータセット構造。各タイプについて、JSON形式のサンプルを示します。
