Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Lets Finetune LLM

payanotty
July 27, 2023
1.2k

Lets Finetune LLM

payanotty

July 27, 2023
Tweet

Transcript

  1. 自己紹介
 • 名前
 ◦ 早野 康太
 • お仕事
 ◦ 自然言語モデルの改善


    • 今期おすすめ
 ◦ ゾン100
 ◦ 無職転生
 ◦ 呪術廻戦
 ◦ BLEACH
 ◦ ライザ
 ◦ 好きな子がめがねを忘れた

  2. LLMをローカルで動かす
 GPUメモリ
 LLM
 推論には少なくとも
 これだけのメモリが必要
 • LLMのサイズ
 ≒モデルのパラメータ数 × バイト数


    ◦ OpenCALM (68億パラメータ) 
 ▪ float32
 → 68×10^9×4bytes = 28 GB
 ▪ (参考) 勾配計算
 fine-tuneで追加で必要

  3. LLMをローカルで動かす
 GPUメモリ
 LLM
 推論には少なくとも
 これだけのメモリが必要
 • LLMのサイズ
 ≒モデルのパラメータ数 × バイト数


    ◦ OpenCALM (68億パラメータ) 
 ▪ float32
 → 68×10^9×4bytes = 28 GB
 ▪ (参考) 勾配計算
 fine-tuneで追加で必要

  4. メモリ消費を削減する方向性
 • モデル自体のサイズを減らす
 ◦ 量子化 (quantization)
 ▪ モデルのパラメータ計算に
 使うビット数を減らす
 •

    学習するパラメータ数を減らす
 ◦ LoRA (Low-Rank Adaptation)
 ▪ モデル本体のパラメータを凍結して
 新たに学習するパラメータを挿入する

  5. 量子化 (quantization)
 • データタイプを変換すれば
 パラメータの保持に必要なメモリ使用量を削減できる
 ◦ 4 byte FP32 →

    2 byte FP16なら半分になる
 ◦ ただし、値を丸めることで
 モデルの性能が低下する可能性はある
 • transformersのライブラリでサポートされている

  6. 量子化 (quantization)
 • LLM.int8(): 8-bit Matrix Multiplication for Transformers at

    Scale 
 ◦ GPUメモリにロードできるモデルサイズの違い

  7. 量子化 (quantization)
 • The case for 4-bit precision: k-bit Inference

    Scaling Laws
 ◦ n-bitで量子化した際の総モデルビット数とaccuracyの関係
 ◦ パラメータ数を固定したとき4-bitと8-bitで総モデルビット数が
 2倍違うことに注意
 
 だいたい同じパラメータ 数

  8. LoRA (Low-Rank Adaptation)
 • LoRA: Low-Rank Adaptation of Large Language

    Models
 ◦ 元々のモデルのパラメータを更新せず
 追加のパラメータの値を導入して学習する
 • Huggingfaceのpeftライブラリでサポートされている

  9. LoRA (Low-Rank Adaptation)
 • LoRA: Low-Rank Adaptation of Large Language

    Models
 ◦ 元々のモデルのパラメータを更新せず
 追加のパラメータの値を導入して学習する
 
 
 • パラメータA, Bを学習する
 • 元々のモデルより
 はるかにパラメータ数が少ない
  10. LoRA (Low-Rank Adaptation)
 • GitHub - huggingface/peft: 🤗 PEFT: State-of-the-art

    Parameter-Efficient Fine-Tuning.
 ◦ LoRAの有無によるメモリ消費の違い

  11. LoRA試してみた
 • コード
 ◦ tloen/alpaca-lora: Instruct-tune LLaMA on consumer hardware


    ▪ ほとんどそのままの形でスクリプト実行可能
 • base model 
 ◦ OpenCALM (CyberAgent社, 68億パラメータ)
 • ハイパラ
 ◦ epochs: 3
 ◦ lr: 0.0003
 ◦ batch size: 32
 ◦ lora_r: 8
 ◦ lora_alpha: 16
 フルfine-tuningなら28 GB以上かかるところを
 10数 GB程度のメモリ消費で実行できた
  12. LoRA試してみた
 • データセット
 ◦ kunishou/databricks-dolly-15k-ja · Datasets at Hugging Face


    ▪ instruction-tuning用のデータセットを日本語に翻訳したもの
 ▪ “指示: {instruction} 入力: {input}”のように
 テンプレートにinput, instructionを当てはめた文を入力として
 学習させる
 
 input
 instruction
 output
 ヴァージン・オーストラリア 航空(Virgin Australia Airlines Pty Ltd)は...
 ヴァージン・オーストラリア 航空はいつから運航を開始 したのですか?
 ヴァージン・オーストラリア 航空は、2000年8月31日に ヴァージン・ブルー航空とし て、2機の航空機で単一路 線の運航を開始しました。
  13. まとめ
 • LLMのメモリ効率化技術
 ◦ 量子化
 ▪ パラメータのビット数を減らすことで
 メモリ上のLLMのサイズを減らす
 ◦ LoRA


    ▪ 学習するパラメータ数を減らすことで
 fine-tuning時のメモリ消費を減らす
 • 量子化やLoRAを使えば
 fine-tuningのメモリ消費を数分の一に抑えられる
 • OpenCALMはfine-tuningでだいぶいい感じになる