LoginSignup
4
2

LLMファインチューニング🤗ことはじめ (2024/3)

Last updated at Posted at 2024-03-14

HuggingFaceが提供しているライブラリ等を用いてLLMのファインチューニングや推論をしたいとき、手始めに参考になるかもしれない事柄や文書などをまとめた。

公開されている代表的なLLM

Model Hub ID コメント
facebook/opt-125m とても軽量なLLM
microsoft/phi-2 軽量かつ高性能なLLM
meta-llama/Llama-2-7b-hf 有名なオープンソースLLM
lmsys/vicuna-7b-v1.5 Llama 2にInstruction tuningを施したLLM
mistralai/Mistral-7B-v0.1 高性能なLLM
llava-hf/llava-1.5-7b-hf VicunaとCLIPをベースに画像を入力できるようにしたMLLM

HuggingFaceが提供するライブラリ

ライブラリ名 コメント
Transformers Model、TokenizerやTrainerなど、LLMを使うためのクラスが揃っている
Datasets データセットを簡単にロードして使うためのライブラリ
PEFT 効率的なファインチューニング手法を実装したライブラリ
Accelerate 分散学習手法を実装したライブラリ
TRL Instruction tuningをするのに便利なクラスを提供する
TGI LLMの推論サーバ

ファインチューニングの大まかな流れ

  1. ベースとなるモデルをAutoModelForCausalLM.from_pretrained()などでロードする
  2. トークナイザもAutoTokenizer.from_pretrained()などでロードする
  3. データセットをDatasetsのload_dataset()でロードする
    3.1. 必要に応じてmap()メソッドでトークナイズなどデータの準備をする
  4. Trainerにモデルやデータセット等を渡して学習を走らせる
    4.1. Instruction tuningの場合は、かわりにTRLのSFTTrainerDataCollatorForCompletionOnlyLMを使うと手軽に学習できる

References

1つのGPUでLLMを効率的に扱う

量子化(Quantization)と呼ばれる手法を用いることで、モデルの重みを8bitや4bitで表現することができ、限られたGPUメモリでもより大きなモデルを動かすことができる。bitsandbytesはモデルに即座に適用できるのに対し、AWQやGPTQは素のモデルに適用する場合にはキャリブレーションが必要。これらはTransformersに統合されている。

量子化手法 コメント
bitsandbytes 8bit量子化およびQLoRAの4bit量子化(NF4)を実装したライブラリ
AWQ 4bit量子化(INT4)。要キャリブレーション
GPTQ AWQの前身といえる量子化手法。要キャリブレーション

訓練ではLoRAなどを用いることで、重みをすべて学習するよりも効率化できる。また、Gradient accumulationなどの手法を用いることでも、メモリ使用量を抑えることができる。

References

実験の管理

TrainerにはW&Bへの連携が統合されており、Webでの実験のトラッキングやチェックポイントの保存が簡単にできる。

References

推論サーバ

LLMの推論サーバを用いることで、複数の推論を効率的に実行することができる。

vLLMは多くのLLMに対応し、LoRAのAdapterを適用することもできる。Attentionの実装にPagedAttentionを用いることで高いスループットを実現している。OpenAI API互換なので、OpenAI APIを用いているアプリケーションからdrop-in replacementとして使える。

SGLangRadixAttentionを用いてvLLM以上に高いスループットを達成する。また、複雑なプロンプトのフローを効率的に記述するための言語も提供する。

デプロイ

SkyPilotを用いることで、最も安価にGPUインスタンスを使用可能なクラウドプロバイダを自動的に選択して推論サーバをデプロイできる。

References

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2