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

Lets Finetune LLM

Sponsored · Your Podcast. Everywhere. Effortlessly. Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
Avatar for payanotty payanotty
July 27, 2023
1.4k

Lets Finetune LLM

Avatar for payanotty

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でだいぶいい感じになる