17 ポイント 投稿者 GN⁺ 2024-03-08 | 1件のコメント | WhatsAppで共有
  • FSDP(Fully Sharded Data Parallel) と QLoRA(Quantization + Low-Rank Adaptation")を組み合わせたオープンソース
  • 一般的なデスクトップPCと標準的なゲーミングGPU 2枚で、70b規模の言語モデルを効率的にファインチューニング可能

背景

  • データセンター級ハードウェアとデスクトップPCに搭載されたゲーミングGPUの間には、性能差がそれほど大きくないにもかかわらず、価格差は非常に大きい
  • ゲーミングGPUはメモリが少ないため、大規模言語モデルの学習が難しい
  • Answer.AI はこの問題を解決するため、安価なゲーミングGPUを使って最高クラスのオープンソースモデルを学習する方法を見つけようとした

QLoRA: 単一GPUでより大きなモデルを学習する

  • QLoRA は量子化と LoRA の組み合わせで、モデルの重みを4ビットに縮小して GPU メモリ使用量を減らす。
  • LoRA は大規模言語モデル全体を学習する代わりに、小さなアダプタ行列を追加して学習することで、メモリ制約を回避する。
  • QLoRA は 65b モデルを 48GB カードで学習可能にするが、70b モデルを 24GB のゲーミングGPUで学習するには依然として不十分。

FSDP: 複数GPUで学習規模を拡張する

  • FSDP(Fully Sharded Data Parallel) はモデルのパラメータを複数のGPUに分散し、同時に利用できるようにする。
  • FSDP は DDP(Distributed Data Parallel) の利点を、単一GPUでは収まりきらない大規模モデルにも適用できるようにする。
  • たとえば 70b(700億パラメータ) の非量子化モデルは 140GB のRAMを使用するが(各パラメータが16ビット、つまり2バイトで保存されるため)、NVIDIA の H100 カード(1枚あたり約 $40,000!) でも不足し、80GB RAM が必要
    • しかし FSDP を使えば、4枚の H100 GPU を組み合わせて合計 320GB RAM を作ることができ、さらに $150000 を節約できる

FSDP と QLoRA を組み合わせる

  • Answer.AI は QLoRA でモデルサイズを縮小し、FSDP でそれを複数の24GBゲーミングカードに分散して、効率的な学習を可能にした。
  • これにより 70b モデルを一般的なゲーミングGPU 2枚で学習できるようになった。
  • 2023年末に FSDP と QLoRA を組み合わせるアイデアを議論した後、必要な課題を解決した。
  • この過程ではさまざまな技術とライブラリが組み合わせて使われた
    • 量子化されたパラメータを、モデルの "Computation Type" と同じデータ型で保存
    • モデル全体の複数の「チェックポイント」に活性化を保存し、必要に応じて順伝播計算ステップを再実行して勾配を再計算するグラディエントチェックポイントにより、完全な勾配を保存しない
    • CPU を使っていないとき、重みをGPUではなくCPU RAMに保存して必要なGPUメモリを大幅に減らす CPU オフローディング
    • Flash Attention 2: メモリ最適化された Cuda カーネルを使って Attention を効率的に計算
    • HQQ(Half-Quadratic Quantization) を発見し、FSDP と連携(GPTQ と比べて50倍高速かつ高精度)

FSDP/QLoRA の使い方

  • FSDP を使うには 2枚以上のGPUが必要。 (Runpod では時間あたり $0.6 でデュアル 3090 ボックスを利用可能)
  • 最新版の Transformers、PEFT、Bitsandbytes(および使用する場合は HQQ) をインストールし、Answer.AI のリポジトリをクローンして README に従って実行する。
  • 24GB カード2枚で Alpaca を学習するには
    python train.py --train_type qlora --dataset alpaca --batch_size 8 --gradient_accumulation_steps 2 --output_dir qlora_output --log_to wandb
  • まだ初期段階(アルファ/プレビュー)
  • 数週間以内にベンチマーク結果も公開予定

GN⁺の意見

  • この記事は AI と機械学習分野に携わる人にとって非常に興味深い。特に、大規模言語モデルを効率よく学習できる新しい方法を提示しているため注目に値する。
  • この技術が成功裏に広く使われるようになれば、AI の研究開発におけるコスト障壁を大きく下げられる可能性がある。これは小規模な研究室や個人開発者にとっても大きな機会になり得る。
  • ただし、このアプローチが実際に広く採用されるには、安定性と使いやすさが重要な要素になる。現在はまだ初期段階なので、コミュニティのテストとフィードバックを通じてシステムを改善していく必要がある。
  • 新しい技術を導入する際には、常に既存システムとの互換性、性能、コストなどを考慮する必要がある。この技術を選ぶことで得られる利点は大規模モデル学習のアクセス性向上だが、まだ初期段階であるため、安定性やサポートの面では欠点がある可能性もある。

1件のコメント

 
GN⁺ 2024-03-08
Hacker Newsの意見
  • この記事は素晴らしいが、nibble という単語を使う機会がたくさんあったのに、すべて逃していたのが惜しい。

    • 記事は興味深いが、nibble という単語を活用しなかった点が惜しいという感想。
  • 4ビット重みを使うシステムで70bモデルをファインチューニングするのにどれくらい時間がかかるのか、たとえばモデルサイズ、学習規模、学習コスト、この技術で予想される品質低下を示す表があれば、消費者として関心を持てそうだ。

    • ファインチューニングの最終コストに関心を示し、モデルサイズ、学習コストなどを含む詳細情報を求めている。
  • (-1,0,1) エンコーディングを適用できるのか気になる。そのモデルが出たら、answer.ai が同じ技術を使って2枚の小型GPUで大きなモデルをファインチューニングできるのか、そして費用対効果の分析も知りたい。

    • 新しいエンコーディング手法の技術的な適用可能性と、コスト対効果の分析について質問している。
  • こうした研究は、個人ユーザーが LLM 市場で競争できるようにするうえで非常に有用だ。『ゼロ・トゥ・ワン』の内容にも通じる素晴らしい仕事だ。

    • この研究が個人ユーザーに有用で、特定の問題の解決に貢献している点を前向きに評価している。
  • NeurIPS 効率性チャレンジで上位入賞作品がすべて QLoRA を使っていた点に触れていないが、これは QLoRA の重要性と有用性を示す良い例だ。

    • QLoRA 技術の重要性と有用性を強調し、この技術が大会で認められていたことに言及している。
  • 「オープンソース」LLM で見た中でも、最も興味深く建設的なアプローチだ。学界でもこれを標準にしてほしい。

    • オープンソース LLM へのこのアプローチを高く評価し、学界でも標準として採用されることを望んでいる。
  • Metal での高速学習がもっと早く登場してほしい。現時点では Mac Studio は大規模モデル推論にははるかに安価で十分に高速だが、学習ソリューションはほとんど存在しない。

    • Metal プラットフォームでの高速学習への期待と、現在の Mac Studio の効率性について意見を述べている。
  • 技術的な文章の質と明快さが素晴らしい。

    • 技術文書の品質と明快さを称賛している。
  • LLM (70B) の重みを自分のデータで再学習できるのか気になる。

    • 個人データで LLM を再学習できる可能性について質問している。
  • 限られたハードウェア予算で LLM をファインチューニングする人にとって、これは画期的な突破口だ。

    • 限られたハードウェア予算のユーザーにとって、この技術が大きな前進になると評価している。
  • FSDP ではなく DeepSpeed を選んだ理由が気になる。

    • FSDP と DeepSpeed のどちらを選んだのか、その理由への関心を示している。
  • モデルをファインチューニングできるようになったとき、性能チューニングのために使ったツールがあるのか気になる。

    • 性能チューニングに使われたツールについて質問している。
  • スパース化を試したことがあるのか気になる。これによってより少ない RAM でファインチューニングできそうに思える。

    • スパース化技術の利用と、それによる RAM 削減の可能性について意見を述べている。