【大規模言語モデル入門Ⅱ】11章

>100 Views

December 19, 24

スライド概要

profile-image

AI・機械学習を勉強したい学生たちが集まる、京都大学の自主ゼミサークルです。私たちのサークルに興味のある方はX(Twitter)をご覧ください!

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

2024年度後期輪読会#10(2024/12/19) 大規模言語モデル入門Ⅱ 第11章指示チューニング 理学部3回生 山下 素数 0

2.

アジェンダ ◼ 指示チューニング ◼ 量子化とLoRA ◼ LLMによる評価 1

3.

指示チューニングとは 指示チューニングとは、事前学習後のLLMに、人間の指示に従った応答をするような振る舞 いをさせるために行うファインチューニング 事前学習と同様に次トークン予測を行う データはユーザーの発話部分とLLMの応答部分でできているが、ユーザーの発話部分に関し ては損失を計算しない 今回はQLoRAと8 bit AdamWを用いたBertのファインチューニングを実装する 2

4.

チャットテンプレート作成 ユーザーの発話部分のテキストとLLMの応答部分のテキストを一つのテキストにまとめる処 理が必要 Jinja2というテンプレートを使用 • {% %}の中では条件分岐などが使える • {{ }}の中に変数を埋め込める • {%- %}と書いてあれば前の無視して{% %}と同じ役割 3

5.

チャットテンプレートから文章をトークンID化 pad_tokenはunk_tokenに設定 4

6.

16bit浮動小数と量子化 16bit浮動小数にはFP16とBF16の種類がある BF16は2018年にGoogle Brainが提案した数値表現でより広い範囲の値を表現できてオー バーフロー・アンダーフローが生じにくいが数値表現の精度が落ちる さらに、メモリ使用量を減らすための工夫として量子化を用いる 16bit->4bitへの量子化 パラメーターのそれぞれを24 = 16通りに振り分ける 次のような手法がある • 等間隔量子化 • 等間隔に分ける • NormalFloat4(NF4)<-QLoRAで使用 • データが正規分布に従うと思って分ける • 平均付近のビンの数が多い • ブロックごとの量子化<-QLoRAで使用 • パラメーターをブロックごとに分けて、ブロックごとに最大値と最小値を計算して 量子化 • 一つのブロックは外れ値を含んで量子化精度が落ちるが他のブロックの精度は上が る 5

7.

量子化の設定 モジュール単位で量子化される ブロック数はデフォルトでは64 6

8.

LoRA 学習パラメーターを固定し、差分の部分を小さな2つの行列の積にして学習する 7

9.

訓練の実行 いつもどおりTrainerの設定をして訓練を実行 optimizerのパラメーターがモデルのパラ メーター数の2倍になるため、optimizer のパラメーターの重みも量子化するような AdamWアルゴリズムを使用する 8

10.

LLMによるモデルの評価(有用性や関連性) FlexEvalを用いる Japanese Vicuna QA Benchmarkを用いる 評価者LLMで有用性や関連性などに基づいて評価させる 単一採点とペア評価を行う スコアはjsonファイルから読み込む 9

11.

LLMによるモデルの評価(安全性) FlexEvalを用いる Do-Not-Answer-Ja-120を用いる LLMが非倫理的な指示に従ってしまわないかを評価する 10

12.

LLMによるモデルの評価(GPT4による評価) 評価をするようなプロンプトを書く 11

13.

LLMによるモデルの評価(GPT4による評価) 設定ファイルを保存し、 flexeval_fileで評価を実行 12