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

LLM Supervised Fine-tuningの理論と実践

LLM Supervised Fine-tuningの理論と実践

「LLM Supervised Fine-tuningの理論と実践」のイベント資料になります。
https://connpass.com/event/337694/

実装編のPythonコードは、以下からご覧ください。
https://colab.research.google.com/drive/18P8VQ1JvN-feObNG1W2I89fozwUtFMLJ

Other Decks in Programming

Transcript

  1. 3 自己紹介 力岡 友和 Tomokazu Rikioka データアナリティクスラボ株式会社 / データソリューション事業部 ⚫

    2022年2月 データアナリティクスラボ株式会社に入社 ⚫ 2022年4月~ 金融に関するデータ分析に従事 ⚫ 2023年2月~ 時系列予測モデルの構築に従事 ⚫ 2023年6月~ 生成AIアプリ開発に従事 Rick@データサイエンティスト @datascienceRick X(旧Twitter) 経歴
  2. 4 自己紹介 宮澤 朋也 Tomoya Miyazawa データアナリティクスラボ株式会社 / データソリューション事業部 ⚫

    2021年10月 データアナリティクスラボ株式会社に入社 ⚫ 2022年1月~7月 スマホアプリのユーザー分析に従事 ⚫ 2022年8月~ 広告に関わるマーケティング分析・モデル構築に従事 ⚫ 2024年3月~6月 GENIAC 松尾研LLM開発PJ 開発メンバーとして参加 ⚫ 2024年6月~ LLMのモデルマージに関する研究に従事 Tomoya Miyazawa @miya_99999_ X(旧Twitter) 経歴
  3. 5 会社概要 データアナリティクスラボ株式会社 データアナリティクスラボ株式会社 / Data Analytics Labo Co. 社名

    設立年月日 2019年4月26日 代表者 近藤 雅彦 資本金 20百万円 従業員数 約140名(グループ全体 約160名) 事業内容 所在地 東京都中央区築地5-4-18 汐留イーストサイドビル6階 お客様のデータ利活用のステージや必要とされるスキルニーズに合わせて、 当社データサイエンティストが企業の様々なデータ利活用ニーズに対応する ことでより多くの地域や企業への貢献を目指します データ分析受託事業 データ分析コンサルティング事業
  4. 6 目次 1. 大規模言語モデル(LLM) 1-1. 概要 1-2. LLMの学習の流れ 1-3. 代表的なオープンソースLLMの紹介

    1-4. モデルのライセンス 2. ファインチューニング 2-1. 概要 2-2. LLMのファインチューニング 2-3. 他手法との違い 2-4. 学習方法と学習の効率化 3. Instruction Tuning 3-1. 概要 3-2. データについて 3-3. 評価について 4. 量子化 4-1. 概要 4-2. LLMの動作に必要な計算リソース 4-3. ビットの表現形式 4-4. 代表的な量子化手法 4-5. 量子化による性能変化 5. PEFT 5-1. 概要 5-2. PEFTの型 5-3. 代表的な手法 5-4. 実装上のTips 6. Pythonによる実装 6-1. 使用するライブラリ 6-2. 実装コード
  5. 8 1. 大規模言語モデル(LLM) 大規模言語モデル(LLM: Large Language Model)とは 大規模なテキストデータを使って訓練され、大規模なパラメータで構成された言語モデル。 従来の言語モデルに比べ、「計算量」「データ量」「パラメータ数」が大幅に増加している。 1-1.

    概要 スケーリング則(引用: Scaling Laws for Neural Language Models) 言語モデルの性能は、「計算量」「データ量」「パラメータ数」の3つを増 やすことで、べき乗的に向上するという経験則 2020年のスケーリング則の発 見により、言語モデルの大規模 化が急速に進んだ。 これに伴い、データ処理能力や 精度が飛躍的に向上し、より複 雑なタスクや文脈の理解、自然 な文章生成が可能となった。
  6. 9 1. 大規模言語モデル(LLM) 1-1. 概要 モデルサイズの推移 ELMo(94M) BERT-L(340M) GPT-2(1.5B) GPT-3(175B)

    悟道2.0(1750B) PaLM(540B) GPT-4(不明) 5000B~10000B程と予測されている パラメータ数は年々増加している。 但し、最近はパラメータのスケーリングから 推論のスケーリング(OpenAI o1)にシフト する傾向もみられる。 ※ 推論のスケーリングとは、モデルの推論に投入される計算量が大きけ れば大きいほど、より難しい問題が解けるようになるという法則のこと
  7. 10 1. 大規模言語モデル(LLM) 1-1. 概要 10Bサイズ以上の大規模言語モデルの年表(引用: A Survey of Large

    Language Models) 様々な企業から多くのLLMが登場し、 急速に技術革新が進んでいる。
  8. 11 1-2. LLMの学習の流れ Supervised Fine-Tuning(SFT) 教師あり ファインチューニング Reinforcement Learning from

    Human Feedback(RLHF) 人間のフィードバックによる 強化学習 Pre-Training 事前学習 大量のテキストデータを使った自己教師あり学習により、モデルに基本的な語 彙・文法・一般知識を習得させるプロセス。広範なデータから汎用的な言語理解 を獲得し、特定のタスクに依存しない基礎的な言語能力の向上を目指す。 ラベル付きデータを使った教師あり学習により、事前学習済みのモデルを特定の タスクやドメインに適応させ、性能を向上させるプロセス。質問応答や翻訳など、 特定の目的に応じた精度の向上を図る。 人間からのフィードバックを基にした強化学習により、モデルの出力を人間の価 値観に沿わせ、より有益で倫理的な結果を得るためのプロセス。実際の使用環境 での信頼性と品質を向上させる。最近では、強化学習を利用しないDPOなどの手 法で代替されることもある。 1. 大規模言語モデル(LLM) 一般的なLLMの学習プロセスは次の通りである。 本資料の説明範囲
  9. 12 1-2. LLMの学習の流れ 1. 大規模言語モデル(LLM) 事前学習(Pre-Training)とは 大量のテキストデータを使った自己教師あり学習により、モデルに基本的な語彙・文法・一般 知識を習得させるプロセス。 事前学習では、インターネット上のテキストや書籍、記 事など、様々なソースから大量のデータが利用される。

    これらのデータは、モデルの性能に大きく影響するため、 データの質と多様性が重要である。 ◆ 主要なデータソース CommonCrawl, C4, Wikipedia, 書籍, 論文 等 ◆ 質を高めるための前処理例 • ノイズ除去(誤字脱字、不適切な文法や特殊記号 等) • 信頼性の低いデータの除去(広告やボット生成記事 等) • 重複データの排除 • 効率的なトークナイザーの学習 LLM りんご は 赤い 。 です は 赤い です <EOS> 。 自己教師あり学習では、入力されたトークン列から、次の トークンの生成確率を予測し、予測と正解の誤差が小さく なるように学習を繰り返す。 例えば、「りんごは赤いです。」という文章があった場合、 「りんごは」というトークンをLLMに与えて、「赤い」と いうトークンを返す確率が高くなるように学習する。
  10. 13 1-2. LLMの学習の流れ 1. 大規模言語モデル(LLM) 教師ありファインチューニング(SFT)とは ラベル付きデータを使った教師あり学習により、事前学習済みのLLMを特定のタスクやドメイ ンに適応させ、性能を向上させるプロセス。 このLLMの性能が めちゃくちゃいい!

    ポジティブ 感情分析タスクの例 口調を変えたい時の例 ◆ 教師ありデータセット 一般的には、指示応答(質問回答)の形式で教師あり データセットを準備する。SFTでは、質問からより回答 に近い出力を導けるように、モデルを微調整する。 入 力 出 力 リンゴは 何色ですか? 赤色だにゃん! 入 力 出 力 ◆ 学習手順 Step1 教師ありデータセットを準備 Step2 事前学習済みモデルの初期化(読み込み) Step3 教師あり学習により、モデルを微調整 • モデルの出力を特定のタスクに特化させる。 • 基盤モデルが持つ一般的な言語能力を微調整し、より 正確で信頼性の高い結果を出力する。 • 特定の業界や分野に関する専門的な知識や用語を理解 し、適切に使えるようにする。 ◆ 目的
  11. 14 1-2. LLMの学習の流れ 1. 大規模言語モデル(LLM) 人間のフィードバックによる強化学習(RLHF)とは 人間からのフィードバックを基にした強化学習により、モデルの出力を人間の価値観に沿わせ、 より有益で倫理的な結果を得るためのプロセス。 6歳児に月面着陸 を説明する

    A 重力とは... B 水とは... C 月は... D 人類は月へ... D>C>A=B D>C>A=B 報酬モデル Step1 カエルについての 物語を書く 強化学習モデル 昔々、… 報酬モデル 報酬 𝑟𝑘 Step2 報酬の最大化 ◆ 学習手順 Step1 プロンプトと回答群を人間によってランク付けを 行い、報酬モデルを訓練 Step2 出力結果について報酬モデルが計算する報酬が最 大化するように強化学習を利用して、モデルのパ ラメータを微調整 • 不足情報があれば、適切な質問を投げかけて引き出す。 • 虚偽の情報を含まず、正確な文章を出力する。 • 攻撃的・差別的な発言を避ける。 • 同じ内容の繰り返しや、一貫性や論理性に欠ける文章 を出力しない。 ◆ 目的
  12. 15 1. 大規模言語モデル(LLM) 1-3. 代表的なオープンソースLLMの紹介 開発企業・団体 モデル名 ライセンス 説明・特徴 Meta

    Llama 2(7B, 13B, 70B) Llama 2 月間AU数が7億人を超える場合を除き、研究用と商用利用のた めに無料で利用できる。様々なLLMの基礎モデルとして活用さ れており、1B,3Bといった軽量モデルやマルチモーダルモデルな どの様々なモデルが提供されている。 Llama 3(8B, 70B) Llama 3 Llama 3.1(8B, 70B, 405B) Llama 3.1 Llama 3.2(1B, 3B, 11B, 90B) Llama 3.2 Mistral AI Mistral 7B Apache 2.0 Mistral 7Bは、SWAやGQAといった革新的な注意メカニズムを 導入しており、同時期に開発されたLlama 2を上回る性能を持つ。 Mixtralは、スパース混合エキスパートモデル(SMoE)を採用し ており、特化した8のエキスパートがタスクを実行する。 Mixtral(8x7B, 8x22B) Mistral Nemo(12B) Microsoft Phi-2(2.7B) MIT 小型でありながら高性能を発揮することが特徴。数学やコー ディング性能が非常に高い。混合エキスパートモデル(MoE)や マルチモーダルモデルなども提供されている。 Phi-3(mini, small, medium) Phi-3.5(mini, MoE, Vision) Google Gemma(2B, 7B) Gemma Geminiを基に構築されたモデルで、言語理解や推論で高いパ フォーマンスを示す。商用利用が可能だが、禁止事項が多いた め、ライセンス内容は要確認。 Gemma 2(9B, 27B) ※ 混合エキスパートモデルとは、複数の異なるエキスパートと呼ばれるサブモデルを組み合わせ、 特定のタスクやデータに応じて最適なエキスパートを選択し、予測や推論を行うモデルの構造のこと
  13. 16 1. 大規模言語モデル(LLM) 1-3. 代表的なオープンソースLLMの紹介(日本語) 開発企業・団体 モデル名 ライセンス 説明・特徴 東工大・産総研

    Swallow(7B, 13B, 70B) Llama 2 Llama 2,3,3.1/Mistralに対して、大規模な日本語ウェブコー パスで継続事前学習したモデル。Swallow-MXは、日本語特化 LLMとして初めてのMoEを採用したモデルとなる。 Llama-3-Swallow(8B, 70B) Llama 3 Llama-3.1-Swallow(8B, 70B) Llama 3.1 Swallow-MS 7B Swallow-MX 8x7B Apache 2.0 国立情報学研究所 LLM-jp-13B Apache 2.0 日本語と英語のデータを中心に事前学習されたモデル。モデル やデータ、ツールなどが全てオープンにされている。 LLM-jp-3(1.8B, 3.7B, 13B) ELYZA ELYZA-jananese-Llama-2(7B, 13B, 70B) Llama 2 Llama-2,3に対して、大規模な日本語データによる継続事前学 習と事後学習を行ったモデル。Llama-3ベースモデルに関して は、一部のベンチマークではGPT-4を超える日本語性能だと 評価されている。 Llama-3-ELYZA-JP-8B Llama 3 CyberAgent CALM2-7B Apache 2.0 一から独自に構築されており、日本語・英語データで事前学習 が行われている。 CALM3-22B
  14. 17 Chatbot Arena LLM Leaderboard モデルの性能をユーザーの対話体験を通じて比較し、ランキング形式で評価するプラットフォーム。ユーザーは複数の LLMと対話を行い、優れた応答を選択することで、各モデルの評価が決定される。 1. 大規模言語モデル(LLM) 1-3.

    代表的なオープンソースLLMの紹介 LLMの選定に迷う場合には、以下のサイトを参考に目的に即したモデルを選択するとよい。但し、 目的のタスク性能はランキング順位や評価指標に必ずしも相関するとは限らないので、複数のモ デルを比較評価することが重要である。 Open LLM Leaderboard2 LLMの性能を既定の評価指標で評価し、ランキング形式で比較するプラットフォーム。様々なLLMを一般知識や数学性 能などの異なるタスクでテストし、その結果に基づいて評価が決定される。 Nejumi LLMリーダーボード3 LLMの日本語能力を言語理解、応用、アライメントなどの広い観点で評価し、ランキング形式で評価するプラット フォーム。日本語能力を重視したい場合は、本サイトを参考にするとよい。
  15. 18 1. 大規模言語モデル(LLM) 1-4. モデルのライセンス ライセンス名 商用利用 改変の可否 再配布の可否 原著作者の表示義務

    備考 ライセンス 情報の原文 Apache 2.0 可能 可能 可能 必須 ⚫ 商標の使用制限 ⚫ 保証の否認 URL MIT 可能 可能 可能 必須 ⚫ 保証の否認 URL CC (Creative Commons) NCを含む場合は 不可、それ以外 は可 NDを含む場合 は不可、それ 以外は可 可能 必須 CCライセンスの種類によって異なる。 URL Llama 2 / Llama 3 / Llama 3.1 / Llama 3.2 月間アクティブ ユーザーが7億人 以上の場合は Metaから別途ラ イセンスを取得 可能 可能 必須 ⚫ 保証の否認 URL Gemma 可能 可能 可能 必須 ⚫ 保証の否認 ⚫ ソースコードはApache 2.0に基づく ⚫ 遺伝子発現データはCC-BYに基づく ⚫ アノテーションデータや分析結果は CC-BY-NCに基づく URL 参考:【連載①】大規模言語モデル(LLM)のビジネス利用に関して注意すべき点-LLMの使用許諾条件- OSSのLLMでよく利用されているライセンスを以下にまとめる。LLMには独自のライセンスを持 つものもあるため、利用の際にはライセンス内容を確認することを推奨する。
  16. 20 2-1. 概要 ファインチューニング(Fine-tuning)とは 2. ファインチューニング 大規模データで事前訓練された機械学習モデルを、別のデータセットで再学習することで、特 定のタスクやドメインに最適化する手法。 ファインチューニングは、LLMが注目される以前から、 自然言語処理や画像認識などの分野で広く活用されてき

    た。例えば、ベースの言語モデルを映画や製品のレ ビューデータで追加学習し感情分析に特化させたり、画 像モデルを医療画像で追加学習し医療画像診断のための モデルを作成する、といった事例が挙げられる。 ファインチューニングでは、特定のデータを追加して学 習させることで、少ないリソースで特定のドメインやタ スクへの適応が可能となる。但し、ベースモデルの知識 の偏りや過剰適合のリスクがあるため、データ選定とモ デル評価が重要となる。 BERTの学習手順(引用: BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding) ※ ベースモデルとは、大量のテキストコーパスで事前学習のみが行われたモデルのこと
  17. 21 2. ファインチューニング ファインチューニングと転移学習の違い 2-1. 概要 事前学習済みモデル ファインチューニング (狭義の)転移学習 ファインチューニングと類似した概念に転移学習がある。一般的に、転移学習はより広範な概念を指し、

    ファインチューニングはその一手法と見なされることが多い。但し、転移学習が以下のような狭義の概念 として認識されている場合もあるので、区別には注意が必要である。 元のモデルの一部または全ての重 みを、新たなデータで微調整する。 学習済みのモデルの重みを固定し、 新たな層を追加して、新たなデー タで再学習させる。
  18. 22 2-2. LLMのファインチューニング 2. ファインチューニング 教師ありファインチューニング(SFT)とは ラベル付きデータを使った教師あり学習により、事前学習済みのLLMを特定のタスクやドメイ ンに適応させ、性能を向上させるプロセス。 このLLMの性能が めちゃくちゃいい!

    ポジティブ 感情分析タスクの例 口調を変えたい時の例 ◆ 教師ありデータセット 一般的には、指示応答(質問回答)の形式で教師あり データセットを準備する。SFTでは、質問からより回答 に近い出力を導けるように、モデルを微調整する。 入 力 出 力 リンゴは 何色ですか? 赤色だにゃん! 入 力 出 力 ◆ 学習手順 Step1 教師ありデータセットを準備 Step2 事前学習済みモデルの初期化(読み込み) Step3 教師あり学習により、モデルを微調整 • モデルの出力を特定のタスクに特化させる。 • 基盤モデルが持つ一般的な言語能力を微調整し、より 正確で信頼性の高い結果を出力する。 • 特定の業界や分野に関する専門的な知識や用語を理解 し、適切に使えるようにする。 ◆ 目的 再掲
  19. 23 活用場面 2-2. LLMのファインチューニング 会話品質の向上 模範となる会話データセットを学習することで、より自然で人間らしい会話となるように調整する。 指示への従いやすさの改善 特定の指示形式(#Instruction: #Input: #Response:

    など)のデータセットを学習することで、特定の用途における 指示プロンプトに従いやすくする。 モデル出力の口調や文体の調整 方言や敬語などを含むデータセットを学習することで、用途に合わせた口調や文体の回答を得られるように調整する。 ドメイン知識や最新知識の獲得 モデルがまだ学習していないドメイン知識や最新情報を学習することで、モデルに新たな知識を獲得させる。 但し、モデルの本体性能が悪化する「忘却」が起きたり、うまく知識を獲得できなかったりと、現時点で最適な方法 は確立されていない。 2. ファインチューニング
  20. 24 2. ファインチューニング 特徴 プロンプトエンジニアリング RAG ファインチューニング 目的 モデルの出力の制御・最適化 リアルタイムに情報を出力に反映

    特定のタスクにモデルを最適化 基本的なアプローチ 適切な質問や命令(プロンプト)を 与えることで、出力を最適化 外部の知識ベースから情報を検索し て、その情報を用いて出力を生成 モデルの重みを再学習して最適化 データの必要性 不要 外部の大規模な知識ベースや情報源 が必要 特定のドメインやタスクに関連した、 入力と出力の組み合わせのデータ 準備コスト 低:プロンプトを調整するだけであ るため、比較的容易に行える 中:外部データベースの構築や、検 索システムと生成モデルを統合する ためのインフラ整備が必要 高:モデル学習のために膨大な計算 リソースや時間が必要 実装難度 低:既存のツールやインターフェイ スを使用して簡単に実装可能 高:情報検索アルゴリズムや生成モ デルの調整、外部データとの連携が 必要 高:モデルの選定や学習プロセスの 理解などの専門的な知識が必要 メンテナンスコスト 低:プロンプトの調整のみ 中:外部データの更新が必要 高:モデルの再学習が必要 実用シナリオ コストや手間を掛けずに出力を調整 する モデルに新たな知識や特定の情報を 付与する 特定の業界や業務に特化させたモデ ルを構築する 2-3. 他手法との違い 回答精度を向上させる手法として、プロンプトエンジニアリングやRAGが挙げられるが、これらはそれぞれ目 的や効果が異なるため、自身の目的に応じた手法の選定が必要である。
  21. 25 2. ファインチューニング 2-3. 他手法との違い OpenAIの技術資料では、コンテキスト最適化 とLLM最適化という二軸で適用する手法を検 討することが提案されている。 コンテキストの最適化 1)

    訓練データに含まれていない情報を補完する 必要があるとき 2) 知識が古くなっているとき 3) 独自の情報や特定の知識が必要なとき LLM最適化 1) 不適切なフォーマットで一貫性のない結果を 生成しているとき 2) 話し方のトーンやスタイルが正しくないとき 3) 推論が一貫して実行されていないとき LLM最適化マトリクス (引用: Optimizing LLMs for accuracy) 典型的な最適化フローの例 プロンプトエンジニアリングから 始まり、RAG、Fine-tuningへと 進んでいく。
  22. 26 2. ファインチューニング 2-3. 他手法との違い (意訳:LLMの知識強化手法:ファインチューニング vs RAG) 結論 ✓

    知識付与に関しては、一貫してRAGの方がより効果的であった。 ✓ ファインチューニングでは、LLMに新しい事実を習得させることが困難であった。 実験 方法 ✓ LLMモデル:Mistral / Llama2 / Orca2 の7B ✓ 評価ツール:LM-Evaluation-Harness ✓ ベンチマーク:MMLUや最新の出来事に関する情報取り込み能力をテスト ✓ 各モデルに対して、ファインチューニングとRAGを実施評価 実験 結果 ✓ RAGは一貫してより優れたパフォーマンスを示した。 ✓ RAGは新情報と既存知識の活用に効果的だった。 ✓ ファインチューニングは特定の目的のみでは有効だった。 ✓ 5shot vs 0shotでは、わずかに5shotの性能が高かった。 ✓ 最新の出来事を取り込むタスクでは、ファインチューニン グは効果を発揮せず、特にLlama2では性能が低下した。 Fine-Tuning or Retrieval? Comparing Knowledge Injection in LLMs(Microsoft 2024.1.30) MMLUスコアの一部
  23. 27 2-4. 学習方法と学習の効率化 タスクベース学習 Instruction Tuning 下流タスクへの特化や適応を実現するために、特定のタス ク専用のデータを用いて学習する手法 様々なタスクを指示と回答という形式に統一したデータ セットを用いて学習させることで望ましい出力を得る手法

    2. ファインチューニング 入力:この製品は非常に使いやすいです。 正解ラベル:ポジティブ 入力:This is a pen. 正解ラベル:これはペンです。 指示:次の文を感情分類してください。 入力:この製品は非常に使いやすいです。 応答:ポジティブ 指示:次の英文を日本語に翻訳してください。 入力:This is a pen. 出力:これはペンです。 文章分類 LLMのファインチューニングにおいては、従来のタスクベース学習ではなく、Instruction Tuningが一般的に 用いられている。LLMのSFTといえば、基本的にInstruction Tuningのことだと考えて差し支えない。本手法の 詳細は第3章で解説する。 機械翻訳 特定のタスクに特化したデータが必要で、別のタスクにそ のまま転用できない。(例: 日英翻訳で学習すると、英日 翻訳できない、文章分類も行えない) 特徴 指示を変えれば複数のタスクを同一の訓練プロセスで学習 できる。(例: 単一モデルで文章分類、日英翻訳、英日翻 訳が行える) 特徴
  24. 28 2. ファインチューニング 2-4. 学習方法と学習の効率化 PEFT(Parameter-Efficient Fine-Tuning) LLMのフルファインチューニング(モデルの全パラメータを更新する)は、非常に大きな計 算リソースと長い時間を必要とする。この問題を軽減するため、モデル全体ではなく、一部 のパラメータのみを更新して効率的にファインチューニングを行う手法として、PEFTという

    手法が提案されている。代表的な手法に、モデルの重み行列に低ランク行列を導入し、元の モデルパラメータは固定したまま、追加された行列のみを学習するLoRAなどがある。 LoRA 量子化(Quantization) LLMの学習や推論では、全てのパラメータをメモリ上に配置する必要があり、大量のGPUメモリが求められる。しかし、 GPUメモリの容量はマシンスペックに依存しており、増設も難しいため、使用しているGPUのスペック次第では、対象 のLLMを動作させることが困難になる。この課題を解決する方法の一つが量子化である。量子化は、モデルの重みを高 精度なデータ型から低精度なデータ型に変換し、メモリ使用量や計算コストを削減する技術で、少ないGPUメモリで大 きなモデルを動作させることが可能になる。 LLMは膨大なパラメータを持つため、モデルの学習や推論には多大な計算リソースと時間が必要となり、これ が大きな課題となっている。これらの課題を解決するために、いくつかの手法が提案されており、潤沢なリソー スが利用できる場合を除き、これらの手法を活用しながら、極力精度を損なわずにファインチューニングを行う ことが一般的である。詳細は第4章~第5章で解説する。
  25. 30 3. Instruction Tuning 3-1. 概要 Instruction Tuning とは 様々なタスクを指示と回答という形式に統一したデータセットを用いて学習させることで望ま

    しい出力を得る手法。これによって汎用的なタスクにおけるゼロショットでの性能を向上させ ることができる。 Finetuned Language Models Are Zero-Shot Learners(2021)で提案された本手法は、137Bの モデル(FLAN)に対して適用した結果、 21のタ スクでゼロショット性能が向上し、175Bのパラ メータを持つGPT-3と比較して、25のタスク中20 タスクでより高いゼロショット性能を示したこと が報告されている。 現在は本手法が主流となっており、SFTと言えば Instruction Tuningであると言える。 引用: Finetuned Language Models Are Zero-Shot Learners(2021) Instruction Tuningしたモデル
  26. 32 3. Instruction Tuning 3-2. データについて データ準備 実際にInstruction Tuningをする際に検討する必要があるのが、どのようにデータを準備する かという点である。この理由は、Instruction

    Tuningによって目的に合った出力をするように モデルを学習するには、データセットの量と質が重要であり、準備する手段によって大きく工 数が変化するためである。また、既存の保有データや公開データを利用するかゼロからデータ を作成するかも大きな検討ポイントとなる。 工数は大きいが質は高い。企業にて利用したいデータが得られている場合は、それに対 して人手でアノテーションすることがある。アノテーション業者に外注することもある が、質を担保するためにアノテーターの適切な監督が求められる。 人手 LLM 工数は小さいが質は低い(可能性がある)。半自動的にデータを生成するため、工数は かなり抑えられるが、生成したデータが意図した通り適切なものであるか、多様性はあ るかといった確認は必要である。既存のテキストデータをQA形式にするといったように、 ゼロからではないデータ作成手段として使われることも多い。
  27. 33 3. Instruction Tuning 3-2. データについて LLMによるデータ生成手法①:Self-Instruct Self-Instructは、ブートストラップサンプリングを 用いてLLMに多様なデータを生成させる手法である。 Step1.

    初期シードからのサンプリング まず、初期シードからサンプリングを行い、これをもとに LLMに新しい指示データを生成させる。 Step2~3. タスク判定とデータ生成 次に、生成された指示データが分類タスクか生成タスクかを 判定し、それぞれのタスクに合った入力と出力データを生成 する。 Step4. フィルタリングとタスクプールへの格納 似たデータが繰り返し生成されることを防ぐため、フィルタ リングを行い、選別したデータをタスクプールに格納する。 引用: Self-Instruct: Aligning Language Models with Self- Generated Instructions (2023)
  28. 34 3. Instruction Tuning 3-2. データについて LLMによるデータ生成手法②:Evol-Instruct Evol-Instructは、ある指示タスクを段階的に複雑化 させることで多様なデータを生成する手法である。 ⚫

    In-Depth Evolving タスクの要件や制約を増やすことで複雑なタスクを生 成する。 ⚫ In-Breadth Evolving 同じような目的のタスクでありながら新しい内容のタ スクを生成する。 また、元の指示と変わらないような失敗した進化を除 去する工程であるElimination Evolvingもある。 引用: WizardLM: Empowering Large Language Models to Follow Complex Instructions (2023)
  29. 35 3. Instruction Tuning 3-2. データについて LLMによるデータ生成の注意点 LLMを用いてデータを生成する際には、ライセンスや利用規約に注意が必要である。例えば、高精度な OpenAIの生成AIモデルを使用するために、OpenAI APIを使ってデータを生成する際は、OpenAIの利用規

    約に従う必要がある。利用規約には以下の記載がある。 このように、各モデルのライセンスや規約の範囲内で必ず利用する必要がある。 禁止事項 お客様は、違法行為、有害行為、又は悪用する行為のために当社の本サービス を使用してはなりません。例えば、以下の事項は禁止されます。 • アウトプットを使用して、OpenAIと競合するモデルを開発すること。 (e) use Output (as defined below) to develop any artificial intelligence models that compete with our products and services. However, you can use Output to (i) develop artificial intelligence models primarily intended to categorize, classify, or organize data (e.g., embeddings or classifiers), as long as such models are not distributed or made commercially available to third parties and (ii) fine tune models provided as part of our Services; OpenAI 利用規約 (日本語版) OpenAI Business terms (英語版)
  30. 36 3. Instruction Tuning 3-2. データについて 日本語のInstruction Tuning オープンデータセット例 データセット名

    件数 概要 ライセンス llm-jp/databricks-dolly-15k-ja 15k DataBricks社の従業員によって作られた指示 形式の様々なタスクデータセットである databricks-dolly-15kを日本語訳したもの。 CC-BY-SA 3.0 llm-jp/oasst1-21k-ja 21.2k クラウドソーシングの取り組みとして人手で 作られたOASST1というデータセットを日本 語訳したもの。 Apache-2.0 llm-jp/oasst2-33k-ja 32.7k クラウドソーシングの取り組みとして人間に よって作られたOASST2というデータセット を日本語訳したもの。 Apache-2.0 ichikara-instruction 4.8k 理化学研究所で人手によって作られた高品質 なインストラクションデータセット。 (有料版もある。) CC-BY-NC-SA 人手で作られた日本語データセットとしては以下のようなものがある。
  31. 37 3. Instruction Tuning 3-2. データについて データ形式 Instruction Tuningでは 指示+応答

    という形式でデータを用意する。代表例として「Alpaca形式」があり、 これは2023年3月にスタンフォード大学から公開された「Alpaca 7B」に由来する。 「Alpaca 7B」 は 「LLaMA」をInstruction Tuningしたもので、この指示形式は現在も広く利用されている。右は日本語版 で、LLM-jp-13Bのv1.0のファインチューニングにも使用されている。 Below is an instruction that describes a task, paired with an input that provides further context. Write a response that appropriately completes the request. ### Instruction: {instruction} ### Input: {input} ### Response: {output} 以下は、タスクを説明する指示と、文脈のある入力の組み合わせで す。要求を適切に満たす応答を書きなさい。 ### 指示: {instruction} ### 入力: {input} ### 応答: {output} 参考: Stanford Alpaca: An Instruction-following LLaMA Model 参考: v1.1 チューニング済みモデル・データ公開
  32. 38 3. Instruction Tuning 3-2. データについて プロンプトフォーマット Instruction Tuningの指示形式やトークンはモデルごとに異なる。実際にチューニング済みのモデルを利 用したり、さらにチューニングを行う際には、この点に注意する必要がある。例えば、Llama-2とLlama-

    3のテンプレートは以下の通りであり、推論時や追加のチューニング時にはこれに従うことが推薦される。 Llama-2-Instruct <s>[INST] <<SYS>> ここにシステムプロンプトが入る <</SYS>> ここに指示文が入る [/INST] Llama-3-Instruct <|begin_of_text|><|start_header_id|>system<|end _header_id|> ここにシステムプロンプトが入る <|eot_id|><|start_header_id|>user<|end_header_id| > ここに指示文が入る <|eot_id|><|start_header_id|>assistant<|end_head er_id|>
  33. 39 3. Instruction Tuning 3-3. 評価について 評価方法 前提として、評価データと評価指標はファインチューニング前に事前に設計しておく必要があ る。特にモデルを実務に活用する際は、ビジネスサイドとのすり合わせの上、どのような評価 指標とデータで測定し、どの程度の精度であれば活用できると判断するかを決めておくことが

    望ましい。 評価方法を大別すると、①機械的な評価 ②人間による評価 ③LLMによる評価 がある。 ①→分類タスクに対する正解率、生成タスクに対する文字一致率など、完全なルールベースで 評価スコアを測定する方法。 ②→評価ルールを定めた上で人間が生成結果を目視で確認してスコア付する方法。 ③→評価ルールを定めた上で、それをプロンプトとしてLLMに投入してスコア付けさせる方法。
  34. 40 3. Instruction Tuning 3-3. 評価について 日本語の評価ベンチマーク例 ベンチマーク名 概要 ライセンス

    参照 llm-jp-eval 8カテゴリ、計12個の自然言語処理の公開 評価データを用いたベンチマーク。回答 として生成された文字列と正解の文字列 を比較することで機械的な評価を行う。 Apache 2.0 https://github. com/llm- jp/llm-jp-eval Japanese Vicuna QA Benchmark 決まった回答が存在しない非定型的なタ スクにおけるLLMの性能評価を目的とし た8カテゴリの問題を持つベンチマーク。 生成された回答をGPT-3.5の回答と比較し、 優れている割合をGPT-4で判定して評価 スコアとする。 Apache 2.0 https://github. com/ku-nlp/ja- vicuna-qa- benchmark Japanese MT-Bench 数学やコーディングなど8カテゴリをマル チターンを含む対話形式の問題で構成し たベンチマーク。生成された回答をGPT- 4でスコア付けする。日本語版を Stability-AI社が提供している。 Apache 2.0 https://github. com/Stability- AI/FastChat
  35. 42 4. 量子化 量子化とは データの表現に必要なビット数を低減させる技術。LLMを低精度に量子化することで、モデル の軽量化や高速化を実現することができる。 4-1. 概要 32 bit

    2 bit データ(パラメータ) LLMの多くは数十億から数百億以上のパラ メータを持ち、学習や推論には十分な計算リ ソースが必要となる。 限られた計算リソースでモデルを動作させる 場合、量子化によりパラメータをより少ない ビット数で表現することで、多少の精度低下 を伴うものの、モデルの軽量化や高速化が実 現できる。 量子化のイメージ min max 浮動小数点数を整数表現に変換することを量子化、低精度な 浮動小数点表現に変換することを低精度化と呼ぶこともある。
  36. 43 4. 量子化 4-2. LLMの動作に必要な計算リソース 基本的なLLMは、16~32ビットなどの高精度なパラメータで表現されるため、パラメータ数の多 いLLMを利用する際には、大量のGPUメモリ(VRAM)が必要となる。GPUリソースが十分に確 保できない場合には、量子化技術を利用することで大規模なモデルを動かすことが可能となる。 GPU Llama2

    7B Llama2 13B Llama2 70B 16bit 8bit 4bit 16bit 8bit 4bit 16bit 8bit 4bit 利用メモリ量 13.4GB 7.3GB 4.8GB 20.5GB 13.8GB 8.7GB 検証不可 推定 140GB 検証不可 推定 70GB 検証不可 推定 40GB T4 VRAM 15.0GB 〇 〇 〇 × × 〇 × × × L4 VRAM 22.5GB 〇 〇 〇 〇 〇 〇 × × × A100 VRAM 40.0GB 〇 〇 〇 〇 〇 〇 × × × Google Colaboratoryで利用できるGPUとLLMの推論に必要なメモリ一覧 ※ 検証条件:モデルの読み込みと1つのプロンプトを推論するのに利用したメモリ量を計測。LLMの量子化には bitsandbytes ライブラリを利用。 (補足)利用メモリ量がVRAM内に収まっている場合でも、残余が不足しているためか、モデルの読み込みができないケースも存在。
  37. 44 4. 量子化 𝑀 = 𝑃 × 4𝐵 32/𝑄 ×

    1.2 記号 説明 M GPUメモリ(単位:GB) P モデルのパラメータ数(単位:Billion) 4B 各パラメータに使用される4バイト 32 4バイトには32ビットが含まれる Q モデルのロードに使用されるビット数 1.2 GPUメモリにロードする際の20%のオーバーヘッド 4-2. LLMの動作に必要な計算リソース LLMのサイズから必要なVRAMを計算したい場合には、以下の公式を利用すると良い。 参考:Calculating GPU memory for serving LLMs 例)Llama 70Bに必要なVRAMを計算したい場合 𝑀 = 70 × 4𝑏𝑦𝑡𝑒𝑠 32/16 × 1.2 = 168𝐺𝐵 この計算式から、70B級のモデルを量子化せずに推論するためには、 A100 80GBが2~3枚 or H100が2枚程度必要なことがわかる。
  38. 45 4. 量子化 4-3. ビットの表現形式 符号 指数部 仮数部 IEEE 754規格の浮動小数点表記

    符号ビット(S) 指数部(E) 仮数部(M) 浮動小数点数における数値のスケール(桁数)。 指数部に使うビット数が多いと、扱える実数の絶対値範囲が大きくなる。 実際の数値の有効桁数を示す部分。 仮数部に使うビット数が多いと、より精度の高い値が表現できる。 数値が正の値か負の値かを示すビット。 正の場合は「0」、負の場合は「1」。 −1 s × 1 + M × 2E−127 1 bit 7 bit 24 bit (32bit表現の場合) 32ビットのデータ量で −2127~2128の数値を表記可能 (但し、一定の誤差は生じる) 量子化では、ビットの表現形式を様々なデータ型から指定できる。簡単にデータ型の紹介を行う。
  39. 46 4. 量子化 4-3. ビットの表現形式 様々なデータ型 fp32 S E M

    E E E E E E E M M M M M M M M M M M M M M M M M M M M M M fp16 S E E E E E M M M M M M M M M M 指数部: 8bit 仮数部: 23bit 指数部: 5bit 仮数部: 10bit bfloat16 S E E E E E M M M M M M M 指数部: 8bit 仮数部: 7bit E E E Range: ~1.18e−38 to ~3.39e38 Range: ~5.96e−8 to 65504 Range: ~1.18e−38 to ~3.39e38 int8 符号: 1bit 数値: 7bit Range: −128 to 127 int4 符号: 1bit 数値: 3bit Range: −8 to 7 uint4 数値: 4bit Range: 0 to 15 fp16とbfloat16は、同一ビットでも表現形式が異なる。bfloat16はfp16に比べて、表現精度 は落ちてしまうものの、より広い範囲の数値を扱えるため、機械学習の分野ではよく利用される。
  40. 47 4. 量子化 4-3. ビットの表現形式 様々なデータ型 2023年に発表されたQLoRAの論文では、NF4(4-bit NormalFloat)という新しいデータ型が提案され た。LLMの重みが正規分布に従う特性を利用した量子化データ型で、通常の4ビット整数や浮動小数点数 と比較して、正規分布に対してより高精度な量子化を実現できる。

    1. 標準正規分布に基づいた量子化 標準正規分布(平均0、標準偏差1)に基づいて、理論的に最適な量子化区間(ビン)を計算する。各量子化区間 に等しいデータ点が割り当てられ、データの大部分が区間内に収まるように設計されている。 2. データの正規化 モデルの重みを、標準正規分布に一致するようにスケーリングし、[-1, 1]の範囲に収まるように正規化する。 3. 量子化 正規化されたデータを、計算された4ビットの量子化区間に割り当てる。この結果、32ビットのデータが4ビッ トに圧縮されるが、データの分布を最適に反映しているため、精度の低下を最小限に抑えられる。 量子化手順
  41. 48 4. 量子化 4-4. 代表的な量子化手法 基本的な量子化 ➢ スケーリングやシフト、ラウンドオフを行って、特定のデータ型のビット数で表現するように変換する。 GPTQ ➢

    元のモデルと量子化後のモデルの性能差を最小限に抑えるように最適化しながら量子化する。 ➢ 調整用のキャリブレーションデータが必要で、基本的な量子化よりも性能劣化が少ない。 AWQ ➢ 重要な部分は高精度に、その他の部分は低精度というように適応的に量子化する。 ➢ GPTQと同様にキャリブレーションデータが必要で、GPTQよりも性能劣化が少ない(但し、高度な調整が必要)。 量子化手法 キャリブレーション データ ライブラリ 論文 基本的な量子化 不要 bitsandbytes Quantization and Training of Neural Networks for Efficient Integer-Arithmetic-Only Inference GPTQ 必要 AutoGPTQ GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers AWQ 必要 AutoAWQ AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration
  42. 49 4. 量子化 4-4. 代表的な量子化手法 先程の量子化手法に加えて、GGUFやAutoRoundなど、様々な量子化が提案されている。これらを実装して評価 するには、多大な工数や計算リソースが必要となるため、量子化手法の選択には以下の量子化専用のLBを参考 にするとよい。 量子化専用のLLM Leaderboard:

    Low-bit Quantized Open LLM Leaderboard 例えば、「Llama-3-8B」などのモデル名で絞り込み、各量子化手法のベンチマークスコアを比較したり、8Bモデルの 量子化なしと70Bモデルの4ビット量子化の性能の違いなどを確認できる。
  43. 50 4. 量子化 4-5. 量子化による性能変化 量子化によるLLMの性能変化は、LLMのパラメータ数や評価タスク、量子化手法、実行条件などに よって異なるため、厳密に定義することはできない。ただし、一般的には以下のような傾向が見られ るとされている。また、次ページ以降にて、量子化の影響について調査した研究をいくつか紹介する。 推論速度 必要メモリ

    推論精度 バイアス 量子化により数値演算が簡素化されるため、推論の処理速度が上昇する。 基本的には処理を並列化させることで速度を向上させる。 上昇 減少 減少 増加 量子化したビット数に応じて、必要なメモリ量が減少される。量子化手法に よって異なるが、顕著に必要メモリ量は減少していく。 表現精度が低下するため、推論精度も減少する。評価タスクによって異なる が、4bitまで量子化すると1~5%程度の低下が見られることが多い。 モデルの出力にバイアスが発生し、出力が特定の値や範囲に偏る可能性があ る。これにより、モデルの公平性や多様性が失われるリスクがある。
  44. 51 4. 量子化 4-5. 量子化による性能変化 An Empirical Study of LLaMA3

    Quantization: From LLMs to MLLMs(2024.4.22) Llama3-8Bの学習後量子化(PTQ)の評価結果(引用: 論文 Table2) Llama3-8BのLoRA, QLoRAの評価結果(引用: 論文 Table6) Metaが発表したLlama3モデルの低ビット量子化の 性能を評価した論文。学習後量子化(PTQ)や QLoRAなどの量子化を交えた学習による性能変化を 様々な量子化手法で評価している。 タスク別影響調査 CommonSenseQAと呼ばれる常識推論能力を評価す るタスクによる評価結果では、低ビットで量子化す るにつれて性能が劣化することがわかった。特に、 2~3ビットにおける性能劣化は著しく、実用レベル では扱うことは難しい。 その他にも、量子化手法ごとに低ビットでの性能劣 化の程度が異なること、Llama3-70Bなどの大きな モデルでは2~3ビットを除いて、量子化による性能 劣化の影響を受けづらいことがわかった。
  45. 52 4. 量子化 数学的推論 機械翻訳 知識 多言語混同 4-5. 量子化による性能変化 How

    Does Quantization Affect Multilingual LLMs? (Cohere 2024.7.3) 量子化手法ごとのタスク別の相対的性能変化(引用: 論文 Table1) 量子化手法ごとの言語別の相対的性能変化(引用: 論文 Table3) タスク別影響調査 多言語LLMを対象に、様々な量子化手法を適用して 影響を調査した論文。 難易度の高いタスクほど量子化による性能劣化が大 きく、数学的推論においては、4ビット量子化で約 10%の性能劣化が起きている。稀に、35BのW8A8 量子化のように、平均性能が向上するケースもある ため、一概に性能劣化するとは言い切れない。 言語別影響調査 非ラテン語はラテン語に比べて性能劣化が大きいこ とがわかった。日本語も性能劣化が比較的大きい言 語であるので、量子化する際には注意が必要である。 その他にも、量子化の影響はLLMによる自動評価で 過小評価されるため、人間による評価の重要性が指 摘されていた。
  46. 53 4. 量子化 4-5. 量子化による性能変化 1. パラメータの冗長性 LLMなどの巨大なニューラルネットワークでは、量子化により各パラメータの精度が低下しても、多数の パラメータが全体を平滑化し、性能への影響を最小限に抑えることができる。これは、LLMが学習データ をそのまま記憶しているわけではなく、言語の普遍的なパターンや法則を学習しているためである。その

    結果、モデルは必要な情報を効率的に表現できるため、パラメータの圧縮や精度の低下に対して一定の耐 性がある。つまり、実際に必要なパラメータ容量はそれほど大きくなく、一定の範囲内での圧縮が可能で あると考えられている。 2. 活性化関数の非線形性 LLMでは、ReLUやGELUなどの非線形活性化関数が使用されている。これにより、数値のスケールが適応 的に圧縮され、量子化による小さな誤差が累積しにくくなっている。例えば、小数点以下の情報が一部失 われた場合でも、非線形な活性化関数を通過することで、その誤差が入力の大きさに応じて自然に抑制さ れるため、全体の計算結果に与える影響が小さくなる。 TIPS:LLMはなぜ量子化による性能低下の影響を受けにくいのか? A. 深層学習モデルはノイズに強く、ロバスト性が高いため。
  47. 55 5. PEFT PEFT(Parameter Efficient Fine-Tuning)とは 追加で設定したパラメータや一部のパラメータのみを訓練することで、効率的にファインチュー ニングを行う方法。 5-1. 概要

    LLMのファインチューニングにおける課題 LLMはそのパラメータの多さから、すべてのパラメータをチューニングするためには膨大な計算コストが かかる。そのため、少ないリソースでもファインチューニングを行う手法が求められる。 PEFT手法を利用することで、少ないリソースでフルパラメータチューニングと同等の性能を達成すること ができると報告されている。また、フルパラメータチューニングは壊滅的忘却の発生や過学習のリスクが 高く、PEFTはこれらを軽減する効果があると言われている。
  48. 56 5. PEFT 5-2. PFETの型 1. Adapters型 Transformerブロックの中に学習可 能な層(Adapter layer)を設定し

    てファインチューニングする手法。 Adapter layerはMLP(Multi Layer Perceptron)構造を持つ。 2. Soft Prompt型 各タスクに対応したベクトルを入力 系列(Soft Prompt)を追加するこ とで、大部分のパラメータは固定し て埋め込み部分の一部のみを微調整 する手法。 引用: Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning (2023) PEFTの種類
  49. 57 5. PEFT 5-2. PFETの型 引用: Scaling Down to Scale

    Up: A Guide to Parameter-Efficient Fine-Tuning (2023) PEFTの種類 3. Selective型 モデル内の特定の層のみ・バイアス 項のみといったように、パラメータ の大部分を固定して一部だけを選択 的に微調整する手法。 4. Reparametrization型 事前学習済みのモデルの重み行列を 直接更新するのではなく、低ランク 行列の変換を用いることで効率的に 微調整する手法。 主流
  50. 58 5. PEFT 5-3. 代表的な手法 Reparametrization型に該当する、PEFTの手法のなかでも現在最もよく使われている手法。 元のモデルと微調整後の重みの差分行列を低ランク近似することでパラメータを削減し、計算コストを効 率化する。 LoRA(Low-Rank Adaptation)

    出力をℎとして元のモデルの重みを𝑊0 とし微調整される重みを ∆Wとすると、ℎ = 𝑊0 𝑥 + ∆𝑊𝑥と表される。このとき、行列サ イズは𝑑 ∗ 𝑑であるとする。 この差分行列∆Wを2つの行列A, Bを使って∆𝑊 = 𝐵𝐴とすると、 ℎ = 𝑊0 𝑥 + ∆𝑊𝑥 = 𝑊0 𝑥 + 𝐵𝐴𝑥と表される。 𝑟を任意のランクとすると、行列Bのサイズは𝑑 ∗ 𝑟であり、Aの サイズは𝑟 ∗ 𝑑である。 したがって、元の差分行列のパラメータ数は𝑑2であったが、 低ランク行列への変換によって2𝑑𝑟に削減することができる。 引用: LoRA: Low-Rank Adaptation of Large Language Models (2021)
  51. 59 5. PEFT 5-3. 代表的な手法 LoRA(Low-Rank Adaptation) 引用: LoRA: Low-Rank

    Adaptation of Large Language Models (2021) LoRAを提案した論文ではBERT系 のモデルを使って他手法との精度 比較を実験している。 右の表はGLUEという言語理解の ベンチマークでの結果である。 LoRAはフルパラメータや他の手 法と同じかそれよりも高いスコア となっており、平均で見ると最も 高いスコアとなったことが報告さ れている。
  52. 60 5. PEFT 5-3. 代表的な手法 LoRAと同じく効率的なファインチューニングの手法。4bitに量子化した事前学習モデルとLoRA手法を適 用することで、メモリ使用量を大幅に削減してモデルを訓練する。 QLoRA(Quantized Low-Rank Adaptation)

    1. 4-bit NormalFloat 正規分布に基づくデータに適した量子化データ型 を使用。 2. Double Quantization 量子化する際の量子化定数に対してもさらに量子 化を行う。(二重量子化) 3. Paged Optimization CPUとGPU間のページ転送を行い、計算時のメモ リを有効活用。 引用: QLORA: Efficient Finetuning of Quantized LLMs (2023) より引用 ℎ = 𝑊0 𝑥 + 𝐵𝐴𝑥 4bitに量子化 16bit
  53. 61 5. PEFT 5-3. 代表的な手法 QLoRAを提案した論文ではRoBERTa とT5を使用し、BF16でのフルパラ メータチューニングおよびBF16での LoRAとの比較実験を行っている。 結果として、QLoRAを用いた場合で

    の性能劣化はほとんどないことが確 認された。 QLoRA(Quantized Low-Rank Adaptation) 引用: QLORA: Efficient Finetuning of Quantized LLMs (2023)
  54. 62 5. PEFT 5-4. 実装上のTips LoRA, QLoRAはアダプターとして公開 LLMを利用する際はHuggingFaceからモデル データを取得することが多い。 事前学習済みのモデルやフルパラメータ

    チューニングされたモデルは、すべてのパラ メータの重みをダウンロードして使うが、 LoRAやQLoRAは事前学習後の重みからの低ラ ンクの差分行列があれば適用することができ るため、アダプターのみが公開されているこ とが一般的である。 これによって、ベースのモデルの重みを一度 ダウンロードしておけば、容量の軽いアダプ ターは付け替えるだけで様々な微調整モデル を使うことができる。 モデルページの右側にある Adapter から models をクリック そのモデルに結合可能な 様々なアダプターを確認できる
  55. 64 6. Pythonによる実装 class transformers.BitsAndBytesConfig: 量子化の設定を行うためのクラス 4ビット量子化を適用したい場合は load_in_4bit をTrueに、8ビット量子化を適用したい場合は load_in_8bit

    をTrueに設定する。 6-1. 使用するライブラリ bitsandbytes LLMの量子化に利用されるライブラリ。4bit/8bit量子化をモデルに適用することができる。 peft LLMのファインチューニングで、PEFTを適用するためのライブラリ。 class peft.LoraConfig: LoRAの設定を行うためのクラス 使用メモリ量を削減したい場合は、 r や lora_alpha の値を下げたり、 target_modules でLoRAを適用す る層を限定するとよい。ただし、モデルの表現力が低下するため、メモリ使用量と性能のバランスを見なが ら調整することが必要。
  56. 65 6. Pythonによる実装 6-1. 使用するライブラリ class transformers.TrainingArguments:モデルのトレーニングに関する設定を管理するクラス • 学習データの利用回数 num_train_epochs

    を設定。値を増やしすぎると過学習につながるため注意。 • 使用メモリ量を削減したい場合(学習時間は増加) per_device_train_batch_size や per_device_eval_batch_size を小さい値に設定する。 • 学習を調整したい場合 learning_rate の最適化や、 lr_scheduler_type を固定から線形、コサイン関数などに変更して学習率の 立ち上がりを調整する。 • 評価タイミングの設定 eval_steps を調整。評価頻度を増やすと学習状況が詳細に把握できるが、学習時間が増加する。 transformers LLMやNLPモデルの実装・応用に利用されるライブラリ。Transformerのアーキテクチャを利用する様々な モデルのロードや学習ができる。
  57. 66 6. Pythonによる実装 class trl.DataCollatorForCompletionOnlyLM:損失対象を指定するcollatorクラス 生成されたプロンプトのみでモデルの損失計算を行うことができる。 response_template には計算対象の境 界となるtokenを設定する。これは packing=False

    の場合のみ機能することに注意。 trl LLMの微調整に利用されるライブラリ。SFTからDPOなどの様々なアルゴリズムをモデルに適用できる。 6-1. 使用するライブラリ class trl.SFTTrainer:教師あり微調整(Supervised Fine-Tuning)のためのTrainerクラス 学習に使用するモデルやデータ、collator、PEFT設定、学習パラメータを定義する。 max_seq_length は、 シーケンスの長さで、この値を大きくするとメモリ使用量が増加するため、データのtoken数を計算し、適 切な長さに設定することが望ましい。
  58. 67 6. Pythonによる実装 6-2. 実装コード 実際にファインチューニングを行ったサンプルコードを共有する。 Google Colaboratory https://colab.research.google.com/drive/18P8VQ1JvN-feObNG1W2I89fozwUtFMLJ 今回使用するLlama3は、学習データの95%が英語データで構成されているため、日本語の出力があまり得意で

    はない。また、一問一答形式での学習がされていないため、以下のように対話形式で出力されてしまう。これを 日本語で、 一問一答形式で回答できるようにファインチューニングを実施した。 質問:建物を建てる際に行う、その土地の神様を祭って工事の無事を祈願する祭礼を何というでしょう? 想定出力:地鎮祭 学習前の出力: You're referring to a traditional ceremony performed before constructing a building to appease the local deity and ensure ... 利用モデル:meta-llama/Meta-Llama-3-8B-Instruct Instruction Dataset:izumi-lab/llm-japanese-dataset
  59. 68 6. Pythonによる実装 6-2. 実装コード 質問:建物を建てる際に行う、その土地の神様を祭って工事の無事を祈願する祭礼を何というでしょう? 正解:地鎮祭 学習後の出力:地鎮祭 質問:英語で「過失」という意味がある、テニスでサーブがサービスコートに正しく入らないで失敗することを何というでしょう? 正解:フォ(ー)ルト

    学習後の出力:フォア 学習結果 ファインチューニングを行った結果、以下のように日本語で、一問一答形式で回答できるようになったこ とが確認された。 質問:もともとはカトリック教徒が使っていた、大小の玉を連ねて十字架をつけたネックレス状のアクセサリーといえば何でしょう? 正解:ロザリオ 学習後の出力:ロザリオ
  60. 70 6. Pythonによる実装 learning_rate(学習率) 6-2. 実装コード 質問:建物を建てる際に行う、その土地の神様を祭って工事の無事を祈願する祭礼を何というでしょう? 正解:地鎮祭 モデル出力: [1𝑒−4]

    地鎮祭 [1𝑒−6] 神明祭 [1𝑒−3] 建物祭 質問:もともとはカトリック教徒が使っていた、大小の玉を連ねて十字架をつけたネックレス状のアクセサリーといえば何でしょう? 正解:ロザリオ モデル出力: [1𝑒−4] ロザリオ [1𝑒−6] ロザリオ [1𝑒−3] パイプスクロス 先程の図では、学習率1𝑒−4が検証データに対するLossが最も低く、実際の出力においても正答率が高いこ とが伺える。但し、今回はモデルに知識を付与することではなく、回答形式を整えることが目的であるた め、モデルが持っていない知識については正しく回答できないことに注意。 質問:昨年のベルリン国際映画祭でアニメとして初めて金熊賞を獲得した、宮崎駿監督の映画は何でしょう? 正解:千と千尋の神隠し モデル出力: [1𝑒−4] となりのトトロ [1𝑒−6] スプーン詰め [1𝑒−3] 千と千ちゃん
  61. 71 参考資料一覧 • 大規模言語モデル入門(山田 育矢, 鈴木 正敏, 山田 康輔, 李

    凌寒) • 大規模言語モデル入門Ⅱ〜生成型LLMの実装と評価(山田 育矢, 鈴木 正敏, 西川 荘介, 藤井 一喜, 山田 康輔, 李 凌寒) • 深層ニューラルネットワークの高速化(佐藤 竜馬) 参考資料 • Scaling Laws for Neural Language Models • A Survey of Large Language Models • 【連載①】大規模言語モデル(LLM)のビジネス利用に関して注意すべ き点-LLMの使用許諾条件- • BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding • Optimizing LLMs for accuracy • Finetuned Language Models Are Zero-Shot Learners • Self-Instruct: Aligning Language Models with Self-Generated Instructions • WizardLM: Empowering Large Language Models to Follow Complex Instructions • OpenAI 利用規約(日本語版) • OpenAI Business terms(英語版) • llm-jp/databricks-dolly-15k-ja • llm-jp/oasst1-21k-ja • llm-jp/oasst2-33k-ja • ichikara-instruction 引用資料 • Stanford Alpaca: An Instruction-following LLaMA Model • v1.1 チューニング済みモデル・データ公開 • https://github.com/llm-jp/llm-jp-eval • https://github.com/ku-nlp/ja-vicuna-qa-benchmark • https://github.com/Stability-AI/FastChat • Calculating GPU memory for serving LLMs • Quantization and Training of Neural Networks for Efficient Integer- Arithmetic-Only Inference • GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers • AWQ: Activation-aware Weight Quantization for LLM Compression and Acceleration • An Empirical Study of LLaMA3 Quantization: From LLMs to MLLMs • How Does Quantization Affect Multilingual LLMs? • Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning • LoRA: Low-Rank Adaptation of Large Language Models • QLORA: Efficient Finetuning of Quantized LLMs
  62. 72 会社概要 データアナリティクスラボ株式会社 データアナリティクスラボ株式会社 / Data Analytics Labo Co. 社名

    設立年月日 2019年4月26日 代表者 近藤 雅彦 資本金 20百万円 従業員数 約140名(グループ全体 約160名) 事業内容 所在地 東京都中央区築地5-4-18 汐留イーストサイドビル6階 お客様のデータ利活用のステージや必要とされるスキルニーズに合わせて、 当社データサイエンティストが企業の様々なデータ利活用ニーズに対応する ことでより多くの地域や企業への貢献を目指します データ分析受託事業 データ分析コンサルティング事業
  63. 74 データ分析支援 ➢ 各種データの集計、集計結果の可視化作業 (SQL、pythonやR、BIツールなどを使った集計・可視化) ➢ データ選定整備 (データの収集や、前処理、アノテーション作業) ➢ 分析モデルの構築

    (統計や機械学習、数理モデルなどを用いた予測、判別、分類モデルの構築) ➢ レポーティング (PowerPointやExcelを用いた、表やグラフなどの作成支援業務) ➢ 先端技術のリサーチ・実装 (LLMや画像解析、量子コンピュータなどの最新技術に関する論文リサーチから実装) データ分析業務 Data Analytics Outsourcing データサイエンス人材をお探しの企業様へ 当社の業界別専門知識と先進データ分析技術で貴社のデータ活用戦略を最適化します! ご相談はこちらから LLMのファインチューニングに 関するご相談や実装支援などの ご依頼もお待ちしております!
  64. 75 企画情報 技術記事 LLMのファインチューニングに関する実装を行った技術記事もありますので、是非ご一読ください。 • LLMのファインチューニングでドメイン知識の獲得は可能か。知識付与の限界と可能性 • ファインチューニングで、汎用的な要約モデルを作るためのデータセット設定 • ネガポジ分析の最適解:LlamaとBERTのモデル比較と学習件数の影響

    • ファインチューニングによる文書分類性能と文書生成タスク性能の向上 企画メンバー 本資料は、社内勉強会企画の一環として作成されました。企画に携わったメンバーは以下の通りです。 データアナリティクスラボ株式会社 データソリューション事業部 力岡 友和 / 宮澤 朋也 / 池田 翔平 / 沖田 彩伽 / 本多 來瑠美 / 渡邉 亮 勉強会企画の詳細については、以下の記事をご参照ください。 • LLMファインチューニング勉強企画の紹介