LongQLoRA: 単一GPUでもできる？LLMの文脈長を拡張する革新技術

※ このページは「LONGQLORA: EFFICIENT AND EFFECTIVE METHOD TO EXTEND CONTEXT LENGTH OF LARGE LANGUAGE MODELS」の要約になります。

## このページでわかること
- LongQLoRAは、QLoRA、Position Interpolation、Shift Short Attentionを組み合わせて、LLaMA2モデルの文脈長を効率的に拡張する方法
- LongQLoRAは、従来の方法よりも少ない計算リソースで高い効率と効果を示す
- 単一のV100 GPUで文脈長を4096から8192、さらに12kまで拡張し、PG19およびProof-pileデータセットで競争力のあるパフォーマンスを達成した


## 対象読者
- 大規模言語モデル（LLM）の文脈長を拡張する方法を探しているNLP研究者やエンジニア
- 計算リソースが限られている環境で高性能なモデルを開発したい人

## LLMの文脈長を拡張する際の問題点
1. **文脈長の限界**：
   - LLaMA2などの大規模言語モデルは、通常、事前定義された文脈長（例えば4096トークン）を持っています。この制限を超えるとモデルの性能が大幅に低下する

2. **リソースの消費**：
   - 文脈長を拡張するために従来の方法（例えばMPT-7B-8Kのような追加の事前学習）は、多大な計算リソースを必要とし、特にGPUの消費が大きくなる

3. **効率的な方法の欠如**：
   - 限られた計算リソースで効率的に文脈長を拡張する方法が不足しているため、リソースの少ない研究者や開発者にとっては負担が大きくなる


## LongQLoRA 
### LongQLoRA とは？

LongQLoRAは、大規模言語モデル（LLMs）の文脈長を効率的に拡張する方法です。具体的には、Position Interpolation（PI）、QLoRA、Shift Short Attention（SSA）を組み合わせて、LLaMA2モデルの文脈長を4096から8192、さらには12kまで拡張することを可能にします。この方法は、単一の32GB V100 GPUを使用して、限られた計算リソースで高いパフォーマンスを実現します。

### LongQLoRA のメリット

1. **効率的なリソース使用**：
   - LongQLoRAは単一のV100 GPUでファインチューニングが可能であり、従来の方法に比べて大幅に少ない計算リソースで実行できる
  
2. **高いパフォーマンス**：
   - 文脈長の拡張において、PG19およびProof-pileデータセットで優れたパフォーマンスを示し、他の先進的なモデルと比較しても競争力がある

3. **柔軟な適用**：
   - LongQLoRAはPosition Interpolation、QLoRA、およびShift Short Attentionを組み合わせることで、効率的かつ柔軟に文脈長を拡張する

### LongQLoRA の手順

1. **Position Interpolation（PI）**:
   - LLaMA2の文脈長を事前定義された長さ（例えば4096）から目標長（例えば8192）に拡張する

2. **QLoRAの適用**:
   - ベースモデルの重みを4ビットに量子化し、低ランクアダプタ（LoRA）を追加する

3. **Shift Short Attention（SSA）**:
   - グループサイズを目標文脈長の1/4に設定し、ファインチューニング時にシフトショートアテンションを使用します。推論時には標準のグローバルアテンションを使用する

4. **ファインチューニング**:
   - 単一のV100 GPUを使用し、適切な学習率、バッチサイズ、およびDeepspeed Zero2戦略を用いて、モデルをファインチューニングする

#### Position Interpolation
Position Interpolation（位置補間）は、RoPE（Rotary Position Embedding）ベースの大規模言語モデル（LLMs）の文脈長を効率的に拡張する技術です。従来の事前定義された文脈長（例えば2048や4096）を超える文脈長を実現するために開発されました。

手順：
1. **目標位置インデックスの整合**：
   - 事前定義された最大位置インデックスと目標の最大位置インデックスを整合させます。これにより、文脈長の拡張が容易になる

2. **位置エンコーディングの補間**：
   - 事前定義された位置空間内で位置エンコーディングを補間します。これにより、長い文脈長に対する位置エンコーディングが効果的に行われる

メリット：
- 短時間でのファインチューニング（1000ステップ以内）で良好な性能を実現
- 大規模な計算リソースを必要とせず、効率的に文脈長を拡張可能

#### QLoRA
QLoRAは、大規模言語モデルの効率的なファインチューニング方法であり、モデルのメモリ消費量を削減しながら高い性能を維持する技術です。QLoRAは、4ビットの量子化と低ランクアダプタ（LoRA）を組み合わせて使用します。

手順：
1. **4ビット量子化**：
   - 事前学習済みの大規模言語モデルの重みを4ビットに量子化し、メモリ使用量を削減する

2. **Low-rank Adapterの追加**：
   - LoRAアダプタを全レイヤーに追加し、学習可能な低ランク重みを導入します。これにより、少ないパラメータでモデルの性能を向上させる

3. **モデルの凍結**：
   - 事前学習済みのモデルは凍結し、LoRAアダプタのみをファインチューニングする

メリット：
- 単一の48GB GPUで大規模言語モデル（例えばLLaMA 65B）のファインチューニングが可能
- フル16ビットファインチューニングに近い性能を維持しながら、リソース効率が高い

#### Shift Short Attention
Shift Short Attention（SSA）は、標準の自己注意（Self-Attention）に代わるスパースローカルアテンションメカニズムであり、計算コストとメモリ使用量を削減しつつ効果的な情報伝達を実現する技術です。

手順：
1. **トークンのグループ化**：
   - 入力トークンをグループに分割し、各グループ内でのみアテンションを計算します。これにより、計算コストが削減される

2. **隣接グループ間のアテンション**：
   - 隣接するグループ間でもアテンションを計算し、グループ間の情報伝達を強化する

メリット：
- 計算複雑度がO(n^2)からO((n/g)^2)に削減され、メモリ使用量も大幅に減少する
- 長い文脈長のファインチューニングにおいて効率的でありながら、高い性能を維持する

### LongQLoRA の性能

- **文脈長8192での評価**：
  - LongQLoRAは、PG19およびProof-pileデータセットにおいて、LongLoRAを上回るパフォーマンスを示し、MPT-7B-8Kに非常に近い性能を発揮する

- **パープレキシティ評価**：
  - 長文脈の評価文脈長（1024から8192）において、LongQLoRAはLongLoRAよりも優れたパフォーマンスを示した

- **リソース効率**：
  - LongQLoRAは、単一のV100 GPUでファインチューニングを行い、従来の方法と比較してはるかに効率的にリソースを使用しながら高いパフォーマンスを実現する


## まとめ
以上がLongQLoRAの要約でした。イメージ通りLongLoRAとQLoRAを組み合わせたものですが、LongLoRAと比べてそこまで性能が落ちないのであれば、こちらの方が優先度は高くなりそうですね。（実際どうなのかは要検証ですが）

おわり。