Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

大規模言語モデルを作る、拡張する

 大規模言語モデルを作る、拡張する

大規模言語モデルの作りかたを

1. 事前学習 (Pre-Training)
2. 事後学習 (Post-Training)
3. モデル選定・評価 (Model Selection / Evaluation)

に分けてご紹介します。

https://dbsj.org/dbsj_lecture/ でのトーク内容です。

Masafumi Oyamada

February 21, 2024
Tweet

More Decks by Masafumi Oyamada

Other Decks in Technology

Transcript

  1. 小山田 昌史 Feb 22, 2024 大規模言語モデルを作る、拡張する ー LLM, RAG, Agents

    ※本資料で述べられている見解は個人的なものであり、所属組織とは関係ありません
  2. 小山田 昌史 Feb 22, 2024 大規模言語モデルを作る、拡張する ー LLM, RAG, Agents

    ※本資料で述べられている見解は個人的なものであり、所属組織とは関係ありません ※ボリュームが増えすぎたため、「作る」にフォーカスします🙏
  3. 3 cotomi-1 13B のフルスクラッチ LLM cotomi-core コンパクト 〜 高性能なフルスクラッチ LLM

    群 独自 LLM RAG 技術 LLM Agents 速くて、正しい RAG を実現 n 高性能 Reranker n ロバストな読解技術 n RAG に強い高性能 LLM EMNLP など難関会議で発表多数 クイズ AI コンペ「AI王」2連覇 LLM で組織を作れば もっと力を引き出せるのでは? 業務で使える LLM を作る 自己紹介: NEC でLLM系の研究開発グループを主宰しています n 高い性能とポータビリティを両立 n 長文 (100K+) サポート n 本気の Chat-Tuning (SFT, RLHF) 官僚型組織? フラット組織? 本日のお話は、この周辺 (cotomi 自体の話はほぼせず、一般論) https://mooz.github.io
  4. 5 LLM の製造工程: 巨大なモデルを大規模・高品質な種々のテキストデータで逐次的に学習 事前学習 指示学習 事前学習モデル (学習済み) アラインメント (PPO,

    DPO, …) 指示学習 モデル (アライン済み) 😃😔 指示データ 対話データ 指示学習 モデル フィードバックデータ (Preference) 事前学習 コーパスデータ 事前学習モデル (初期値) GPT-3 LLaMA2 Mistral ChatGPT LLaMA2-Chat Mistral-Instruct 🤖
  5. 6 本講義: LLMの製造工程を3つのフェーズに分け、順に解説 事前学習 指示学習 事前学習モデル (学習済み) アラインメント (PPO, DPO,

    …) 指示学習 モデル (アライン済み) 😃😔 指示データ 対話データ 指示学習 モデル フィードバックデータ (Preference) 事前学習 コーパスデータ 事前学習モデル (初期値) フェーズ① 事前学習 (Pre-Training) フェーズ② 事後学習 (Post-Training) フェーズ③ モデル選定・評価 (Model Selection / Evaluation) 🤖
  6. 7 本講義: LLMの製造工程を3つ4つのフェーズに分け、順に解説 事前学習 指示学習 事前学習モデル (学習済み) ア ( 😃

    指示データ 対話データ 指示学習 モデル フィー (P 事前学習 コーパスデータ 事前学習モデル (初期値) フェーズ① 事前学習 (Pre-Training) フェーズ② 事後学習 (Post-Training フェーズ③ モデル選定・評価 (Model Sele フェーズ⓪ 覚悟 を 決める
  7. 8 フェーズ⓪: 覚悟 (= 費やせるお金と時間) を決める u GPU費 (何枚のGPUを何時間つかえるか?) n

    GPT-4 (数百億), LLaMA-2 (数十億) u データ準備費 n 高品質なデータはタダでは手に入らない u 人件費 (何人のエンジニアが働けるか?) n GPT-4 の開発チームは 280+ 名 LLMの品質 ∝ log(ノウハウ * 投下したリソース量) リソースを投下すればするほど品質は向上する (が、投入すればするほど、投資効率は下がる) ノウハウの多寡により、リソースの投資効率は左右される (ノウハウが少ないと、大枚をはたいて微妙モデルに) LLM Performance Model (※講演者の感覚モデル) 投下したリソース量 品 質 数多のLLM (ノウハウ少なく リソースも限定的) トップランナー数社 (ノウハウ & 潤沢リソース) 実用の壁
  8. 10 フェーズ①: 事前学習 (Pre-Training) 事前学習 事前学習モデル (学習済み) 例) GPT-3 事前学習

    コーパスデータ 事前学習モデル (初期値) ✅ 前のフェーズで得たもの n モデル開発で使う予算 (GPU時間) 🎯 このフェーズでやること n モデルを決める n モデル規模とデータ量を決める n データを準備する n 準備したデータをモデルに学習させる ⏰ 数ヶ月 💰 数億円〜数百億円
  9. 11 事前学習の目的: モデルに “知識” と “推論能力” を持たせる 事前学習モデル (学習済み) 吾輩は猫である。名前は

    吾輩は猫である。名前はまだない。 日本語: おはようございます。 English: Good morning. 日本語: ありがとう。 English: Thank you. 日本語: さようなら。 English: 日本語: おはようございます。 English: Good morning. 日本語: ありがとう。 English: Thank you. 日本語: さようなら。 English: Goodbye. 事前学習モデル (初期パラメータ) 吾輩は猫である。名前は 吾輩は猫である。名前はabほm$;iz ランダムにしか推定できない 知識にもとづき文章の続きをうまく推定 (Zero-shot 推論) 文脈内の事例からその場で「翻訳タスク」を学び、推論 (Few-shot 推論) 事前学習 モデルのかなりの能力は事前学習で定まり、後段フェーズでの “劇的な改善” は困難 [Gudibande+23] [Gudibande+23] The False Promise of Imitating Proprietary LLMs ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  10. 12 LLM と一口にいっても、いろいろなモデルがある & 選べる 吾輩は猫である。名前は<?><?><?> 末尾が空欄のテキスト 吾輩は猫である。名前はまだないかも。 LLM の推定結果

    (末尾の空欄を埋める) 吾輩は猫である。名前はまだない。 正解のテキスト 次からは正しく生成できるよう パラメータを更新 (学習) 誤差/勾配 算出 計算量、学習の並列可能性などの特徴が異なる Transformer Decoder が未だデファクトだが 推論の計算量が 𝑂(𝑁!) のため長文が苦手 近年は推論 𝑂(𝑁) となる状態空間モデルが注目 Retentive Network: A Successor to Transformer for Large Language Models Mamba: Linear-Time Sequence Modeling with Selective State Spaces u LLM は「学習可能なパラメータ」を持つ「テキスト変換器」であれば何でも良い u 具体的には “Text-to-Text モデル” の中から要件に応じて選ぶ n Transformer の Decoder (GPT, LLaMA) n Transformer の Encoder-Decoder (T5, Aya) n RNN (RWKV) n 状態空間モデル (Mamba) n ハイブリッド (UL2) ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  11. 13 モデルには規模があり、自由に決められる どんなサイズのモデルを どれだけの量のデータで学習すると良い? u モデルサイズ: 学習可能なパラメータの数 n ネットワークの深さ (レイヤ数)

    と幅 (内部表現の次元数) で定まる u モデルサイズが大きいほど 😄 表現力 (= 推論能力) は高まる 😔 推論時 (利用時) のメモリ消費量が増える • 大きいモデルは1枚のGPUに載らない 😔 推論速度が遅くなる 30B 4B 4B LLaMA 7B LLaMA 70B ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  12. 14 モデル規模を決めると、最適なデータ量が定まる (vice versa) u どんな大きさのモデルに、どれだけのデータ量を学習させるか、は自由 n 原理的には、自分の実力 (= 使えるGPU時間)

    の範囲で、任意に決めて良い u ただし、適当に決めると損をする u Scaling-Law: 「使えるGPU時間」から最適なデータ量・モデル規模は定まる n 様々なデータ量・モデル規模での実験結果から、経験的な最適値の算出モデルを推定 [Kaplan+20] n データ量:パラメータ数 = 20:1 にすると良い (Chinchilla 最適) [Hoffmann+22] [Kaplan+20] Scaling Laws for Neural Language Models [Hoffmann+22] Training Compute-Optimal Large Language Models モデルサイズ 140B モデルサイズ 70B データ量 1.4T データ量 0.7T 「学習時間は同じ」 だが 「性能は 70B-1.4T の方が (経験的に) 良い」 ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  13. 15 近年のトレンド: モデルサイズは抑え、データを過剰に データ不足 データ過剰 〜 2022年 (Chinchilla 以前) Scaling-Law

    にもとづき デカいモデルを作ろう データは二の次! ↓ 多くのモデルが データ不足 学習不足の状態 (モデルサイズのわりに 性能が低い) 2022年 〜 (Chinchilla〜LLaMA 以後) 元々の Scaling-Law だと データ少なすぎでは? (Chinchilla) ↓ あれ Chinchilla 以上に データ入れてもまだまだ性能 伸びるじゃん! (LLaMA) ↓ 大量のデータを学習し モデルの規模を抑えつつ 高い性能を狙うトレンド LLaMA2 Mistral QWen Phi-2 ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  14. 16 (発展) Chinchilla を超えて Chinchilla は (1) データは無限に存在 (2) モデルは任意に大きくできる想定

    → これらは、現実には成立しないため、発展的な議論が必要に u (1) データは、実際には有限 (特に、省リソース言語) n データは4倍ぐらいまでは水増しできるが、それ以降はモデルサイズを増やすべき [Muennighoff+23] • (データセット中、同じデータを4つ混ぜてもスケール則が成立、それ以降は破綻) u (2) モデルは、実際には一定のサイズに抑えたい n Chinchilla 最適にもとづく「最適モデルサイズ」が現実には許容できないこともある • → 1.4T のデータにもとづくと 70B が最適だが、実際には 70B のモデルを作ってもデカすぎて取り回しづらい n → LLaMA のように、モデルサイズは推論環境・推論速度の要件に伴って定め、持てる限りのデー タを Chinchilla 最適以上に突っ込むトレンドに (前ページの議論) • ただし、限界は明らかにある。小さいモデルは、特に記憶できる知識量 (QA能力)、多言語能力に限り [Muennighoff+23] Scaling Data-Constrained Language Models ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  15. 17 目標のデータ量が決まったら、準備する u データには、極めて高い品質が求められる n LLM の性能は「ほぼデータで定まる」というのが近年のコンセンサス n 一部のトップランナー機関は “魔法”

    を知っている (OpenAI, DeepMind, Mistral, Reka) u 「LLMの性能向上につながるデータをどう見極めるか?」を皆が模索中 n “綺麗” なデータがあると良いのでは? → 様々なやり方で “綺麗” / “汚い” を定義する n 情報の冗長性が少ない方が良いのでは? → 繰り返される表現を排除する [服部24] n 様々なドメイン (or 狙ったドメイン) の情報が十分 & バランス良く含まれると良いのでは? • → 人手で吟味して良いデータセット作るよ派 [Gao+20] • → Webのデータ (Common Crawl) は様々なドメインを含むから、それだけで十分だよ派 [Penedo+23] • → 統計的な手法でうまくデータセットを構築する派 [Xie+23][Fan+23] [Xie+23a] DoReMi: Optimizing Data Mixtures Speeds Up Language Model Pretraining [Fan+23] DoGE: Domain Reweighting with Generalization Estimation [Gao+20] The Pile: An 800GB Dataset of Diverse Text for Language Modeling (外に出せないノウハウも多い。軽めで、すみません……) [Penedo+23] The RefinedWeb Dataset for Falcon LLM: Outperforming Curated Corpora with Web Data, and Web Data Only ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる [服部24] 東工大Swallowプロジェクトにおける大規模日本語Webコーパスの構築 (← データセット構築のいろはがまとまった神資料。必見)
  16. 18 データが準備できたら、いよいよ「事前学習」のはじまり u 事前学習タスク↓を準備したデータ(数 TB 〜 数百 TB のテキスト)に対し、ひたすら繰り返す u

    モデルもデータも大規模なのでマルチ GPU での分散並列処理のお化けに n 多くの並列化機会: データ並列 (DP), テンソル並列 (TP), パイプライン並列 (PP), シーケンス並列 (SP) • DeepSpeed, Megatron-LM など、優れた分散並列学習のフレームワークが利用可能 u 一発で安定した学習ができると思ってはいけない (綿密な実験計画が求められる) n 損失スパイクからの発散 (行かないで) , 勾配爆発, ノード故障 → 学習再起動 → 状態ぶっこわれ, … n Layer Normalization など、学習を安定化させるための様々なノウハウ [Takase+23] 他 吾輩は猫である。名前は<?><?><?> 末尾が空欄のテキスト 吾輩は猫である。名前はまだないかも。 LLM の推定結果 (末尾の空欄を埋める) 吾輩は猫である。名前はまだない。 正解のテキスト 次からは正しく生成できるよう パラメータを更新 (学習) 誤差/勾配 算出 [Takase+23] Spike No More: Stabilizing the Pre-training of Large Language Models ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  17. 19 (幕間) トラウマ Tensorboard おや!? 勾配 & 損失のようすが……! おや!? validation

    loss のようすが……! (望み薄? それとも double descent? はっきりして!) ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  18. 20 ーー Nヶ月後 ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める

    / データを準備する / 準備したデータをモデルに学習させる
  19. 21 やっと、事前学習モデルが手に入る 事前学習モデル (学習済み) 吾輩は猫である。名前は 吾輩は猫である。名前はまだない。 日本語: おはようございます。 English: Good

    morning. 日本語: ありがとう。 English: Thank you. 日本語: さようなら。 English: 日本語: おはようございます。 English: Good morning. 日本語: ありがとう。 English: Thank you. 日本語: さようなら。 English: Goodbye. なんかちょっと、期待と違う…。 「100文字以内で」みたいな指示したいんだけど ChatGPT みたいに対話したいんだけど 😣 from openai import OpenAI client = OpenAI() response = client.completions.create( model="text-davinci-001", prompt="吾輩は猫である。名前は" ) 事前学習モデルの段階であっても 低レイヤ NLP API として使う人はいる 🧙 そうそう、これが欲しかったんじゃ フェーズ② 事後学習 (Post-Training) ChatGPT がやりたければ、後半戦へ Guru 一般人 ① 事前学習 (Pre-Training) / モデルを決める / モデル規模とデータ量を決める / データを準備する / 準備したデータをモデルに学習させる
  20. 22 フェーズ②: 事後学習 (Post-Training) ✅ 前のフェーズで得たもの n 事前学習モデル 🎯 このフェーズでやること

    n モデルの “機能” を定める (要件決め) n 機能を表す指示データを用意し学習 n 学習したモデルへのフィードバックを得る n フィードバックを反映 (アラインメント) ⏰ 数週間〜無限 💰 数十万〜無限 指示学習 事前学習モデル (学習済み) アラインメント (PPO, DPO, …) 指示学習 モデル (アライン済み) 😃😔 指示データ 対話データ 指示学習 モデル フィードバックデータ (Preference) 🤖
  21. 23 事後学習の目的: モデルに “機能” を持たせる 指示学習モデル マルチターンの対話能力 <|im_start|>user 吾輩は猫であるの作者は? 英語で答えて。

    <|im_end|> <|im_start|>assistant Sōseki Natsume です。 <|im_end|> <|im_start|>user 他の代表作を3つ教えて。 <|im_end|> <|im_start|>assistant <|im_start|>user 吾輩は猫であるの作者は? 英語で答えて。 <|im_end|> <|im_start|>assistant Sōseki Natsume です。 <|im_end|> <|im_start|>user 他の代表作を3つ教えて。 <|im_end|> <|im_start|>assistant 1. Sanshirō 2. The Gate 3. Sorekara # 指示 短歌を詠んで。 # 制約 「あぶらだこ」という単語を使うこと。 # 出力 ② 事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント) # 指示 短歌を詠んで。 # 制約 「あぶらだこ」という単語を使うこと。 # 出力 あぶらだこの 音色に揺れる 秋の夜長 心に響く 月明かりの下 制約遵守能力 要約, RAG (機械読解) function calling, math, coding, …
  22. 24 “ChatGPT 開発” = 事後学習 (Post-Training) https://twitter.com/shanegJP/status/1641679780205723649 n 対話能力 n

    プラグイン呼び出し能力 n 関数呼び出し能力 n ウェブ検索能力 n コーディング能力 n 数学能力 事前学習モデル (学習済み) 元 OpenAI / 現 DeepMind n (潜在的)知識 n (潜在的)推論能力 n (潜在的)演算能力 n (潜在的)コード生成能力 n … GPT-3.5-turbo, GPT-4 GPT-3 事前学習で備わった 潜在的に持っている能力を 事後学習によって “発現させる” という感覚 ② 事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント)
  23. 25 <|im_start|>user 吾輩は猫であるの作者は? 英語で答えて。 <|im_end|> <|im_start|>assistant Sōseki Natsume です。 <|im_end|>

    <|im_start|>user 他の代表作を3つ教えて。 <|im_end|> <|im_start|>assistant 1. Sanshirō 2. The Gate 3. Sorekara <|im_start|>user 吾輩は猫であるの作者は? 英語で答えて。 <|im_end|> <|im_start|>assistant Sōseki Natsume です。 <|im_end|> <|im_start|>user 他の代表作を3つ教えて。 <|im_end|> <|im_start|>assistant 1. Sanshirō 2. The Gate 3. Sorekara 事後学習とは、ドメイン DSL の設計 & その (データによる) 実装 (1/2) ② 事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント) u 例) ChatML (OpenAI): “マルチターン対話” を構造を持ったテキストに整形し学習 <|im_start|>user 吾輩は猫であるの作者は? 英語で答えて。 <|im_end|> <|im_start|>assistant Sōseki Natsume です。 <|im_end|> <|im_start|>user 他の代表作を3つ教えて。 <|im_end|> <|im_start|>assistant 1. Sanshirō 2. The Gate 3. Sorekara 吾輩は猫であるの作者は? 英語で答えて。 Sōseki Natsume です。 他の代表作を3つ教えて。 1. Sanshirō 2. The Gate 3. Sorekara 🤖 🤖 🧑💻 🧑💻 ChatML データを多量に学習すると 質問⇔対話履歴にアテンションが張られ 文脈を考慮した対話が可能に https://github.com/MicrosoftDocs/azure-docs/blob/main/articles/ai-services/openai/includes/chat-markup-language.md ChatML (ドメイン特化言語, DSL) マルチターン対話 (ドメインデータ) ChatGPT (ドメイン特化モデル)
  24. 26 事後学習とは、ドメイン DSL の設計 & その (データによる) 実装 (2/2) ②

    事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント) u 例) WebGPT (OpenAI): ブラウザ操作をコマンド化、自律的な RAG を可能に WebGPT [Nakano+23] の DSL (ブラウザ操作コマンド) Question How can I train the crows in my neighborhood to bring me gifts? Quotes From Gifts From Crows | Outside My Window (www.birdsoutsidemywindow.org) > Many animals give gifts to members of their own species but crows and other corvids are the only ones known to give gifts to humans. Past actions Search how to train crows to bring you gifts Click Gifts From Crows | Outside My Window www.birdsoutsidemywindow.org Quote Back Title Search results for: how to train crows to bring you gifts Scrollbar: 0 - 11 Text 0How to Make Friends With Crows - PetHelpfulpethelpful.com If you did this a few times, your crows would learn your new place, but as I said, I’m not sure if they will follow or visit you there since it’s probably not in their territory. The other option is simply to make new crow friends with the crows that live in your new neighborhood. [Nakano+23] WebGPT: Browser-assisted question-answering with human feedback [Schulman23] Reinforcement Learning from Human Feedback: Progress and Challenges 実際の WebGPT モデルからの出力 「近所にいるカラスを調教し、私に贈り物を持ってくるようにするには?」 という(ナンセンスな)質問に対して 「カラスに贈り物をさせる方法」 でWeb検索、結果から回答に必要な情報を引用しようと頑張っている LLMが出力した文字列をコマンド列へとパースし、ブラウザが順に実行 ChatGPT の Web Browsing 機能でも同様の DSL を利用 [Shulman23]
  25. 27 機能を定義し、データを作り、学習する (指示学習) u こういうプロンプト 𝑥 を入れたら、こういう出力 𝑦 をしてほしい、を作り、学習 u

    考えなければならないことは様々 n そもそも、どうやって高品質な入出力のペアを (大量に) 用意するのか? • 人力、気合いだけでは限界。LLMを使った半自動生成の仕組みも無数。”GPT-4蒸留” と呼ばれる禁止行為は避ける。 n 複数のタスクを混在させて良い? その割合は? • 混ぜることで、タスク間で転移が起き互恵 [Wei+21]。ただし、割合次第で “破壊的忘却” が発生するため注意。 u 良いデータは、タダでは手に入らない (講演者の感覚) n 一見それらしい入出力は HuggingFace で公開されていたり、擬似生成できたり、する • が、安易に使うと、「それっぽくは動くが使ってみると微妙」なモデルが出来上がる n 担保された品質のデータを多量に確保するための気合い / 資金力 / 賢さが key driver <|im_start|>user 吾輩は猫であるの作者は? <|im_end|> <|im_start|>assistant 夏目漱石です (“吾輩は猫であるの作者は?”, “夏目漱石です”) { 𝑥! , 𝑦! } [Wei+21] Finetuned Language Models Are Zero-Shot Learners ② 事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント) 事前学習と同じ「次単語予測タスク」で学習 (機能次第で、構造 aware な工夫をしても良い)
  26. 28 “学習” は2種類: (1) 指示学習 (2) アラインメント 指示学習 (Instruction-Tuning) 事前学習モデル

    (学習済み) アラインメント (Preference-Tuning) 指示学習 モデル (アライン済み) 😃😔 指示データ 対話データ 指示学習 モデル フィードバックデータ (Preference) データ あるプロンプトに対する「望ましい出力」 “こういうときは、こんな出力をしてほしい” 𝑥! , 𝑦! あるプロンプトへのLLMの出力2つに関する優劣 “この出力よりは、こういう出力が好ましい” 𝑥! , (𝑦!" < 𝑦!# ) 学習方法 Causal LM タスクで SFT (Supervised fine-tuning) 強化学習 (PPO) 特殊な損失のSFT (DPO, IPO, KTO, SteerLM) 目的 LLM にタスク処理能力を具備させる 「できる」を増やす 出力結果をよりフレンドリーにする 知らない情報を知らないと言うようにする 非倫理的な内容を出力しないようにする 「できるけど、あえてしない」を増やす DPO: Direct Preference Optimization: Your Language Model is Secretly a Reward Model IPO: A General Theoretical Paradigm to Understand Learning from Human Preferences KTO: KTO: Model Alignment as Prospect Theoretic Optimization SteerLM: SteerLM: Attribute Conditioned SFT as an (User-Steerable) Alternative to RLHF 🤖 ② 事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント)
  27. 29 事後学習は 「機能とその要件を決める」 が5割 (講演者の意見) u 「モデルはどう振る舞うべきか」という「機能定義」がなければ事後学習はできない n まずは「機能」を定義し、要件に落としてみる •

    入力プロンプト X について LLM の出力 Y は何を満たすべきか n 落とした要件から、数件、データを作ってみる n うまくいきそうなら、データをスケールさせる方法を考える (全件、人手では、キツい) • データをスケールさせるには色々なやり方がある (Self-Instruct, Instruction Mining, …) u 機能定義をサボった「とりあえずChatGPTみたいなヤツが欲しい」は悪夢の始まり n ChatGPT は偶然の産物ではなく、恐ろしく良くデザインされたサブプロダクト(機能)の集合体 u LLM で本当に実用を目指すのならば、地道な機能の列挙・設計・開発が必須 n 仕様書からのコードの生成 n 長い議事録の要約 n ウェブからの情報抽出 n … ② 事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント) 大規模なコーパスでの事前学習 & オープンな指示データでの指示学習が “自然発生的” に 60 点ぐらいを叩き出してしまうことがある 実用を目指す場合は60点に惑わされず、意図して95点を狙う必要
  28. 30 ”The model is the product” (Joanne Jang, OpenAI) OpenAI

    において (タイムスケールの違う) 研究・プロダクトチームが どう協力し合い、数々のイノベーティブなプロダクトを生み出してきたのか https://www.youtube.com/watch?v=YXiRbRacTF0 研究者、開発者、どちらも必見 ② 事後学習 (Post-Training) / モデルの “機能” を定める (要件決め) / 機能を表す指示データを用意し学習 / 学習したモデルへのフィードバックを得る / フィードバックを反映 (アラインメント)
  29. 31 フェーズ③:モデル選定・評価 (Model Selection / Evaluation) ✅ 前のフェーズで得たもの n 「機能」を具備した指示学習モデル

    🎯 このフェーズでやること n 要件を鑑み「機能」をテスト化する n テストする (人力 / 機械) n テスト結果に応じ、リリースモデル決定 ⏰ 数週間〜無限 💰 数十万〜無限 🤖 🤖 🤖 🤖 🤖 🧮 📚 92点 50点 88点 86点 22点 64点 40点 70点
  30. 32 なぜ、モデルを評価するのか? u ゴールとのギャップを認識し、施策の効果を見極め、正しい方向に進むため n LLM = プロダクトなら、「実際のユーザが満足する可能性」を可能な限りで高めておきたい n LLM

    = 原理研究の場所だとしても、最終的にはその原理の効用を仮設検証したい u 陥りがちなパターン n 手段と目的が逆転 (Leaderboard で1位!) n そもそも、ゴールが定義されていない n 評価している観点(指標)がゴールと乖離 u 気を付けるべきこと (技術的に) n インドメイン評価、アウトドメイン評価を分別 n データセットの contamination を避ける • ベンチマークデータを学習するの = NG、とは限らない (それで顧客の課題が解決できるのならば、OKという立場もある) 🤖 理想のモデル (North Star) モデルA (今ココ) モデルB モデルC モデルCに加えた 工夫のほうが ゴールに近づきそう ベンチマークメトリック A ベンチマークメトリック B ③ モデル選定・評価 (Model Selection / Evaluation)
  31. 33 Karpathy 先生、曰く 元OpenAI インフルエンサー LLM の評価として、今は (1) Chatbot Arena

    (同じ質問を複数のLLMにして、回答を大衆がランキングづけ) (2) Reddit の r/LocalLlama のコメント (実際にLLMをハードに試している人々の感想) の2つしか信頼してないよ。 ③ モデル選定・評価 (Model Selection / Evaluation)
  32. 34 Rogue Scores [Grusky+ACL23] 様々な論文が、一見すると同じ ROGUE スコアを評価しているよう に見えて • パラメータが公開されてないから

    再現できない • 公開されてても、後処理 etc. が違 うから、比較できない • … などから 「論文をまたいで ROGUE スコアを 比較できるケース」 はほとんどなかった → 本当に信頼できるのは、手元での 再現結果である
  33. 35 その他の話題: LLM の Serving (推論API) u LLMは身近な存在だが、冷静に考えれば「めちゃ重たい機械学習モデル」 n 数GB

    〜 数百GB規模のモデルを, 数十百 〜 数万人が (カジュアルに) 同時に叩く • → ひと昔なら Big Tech しか取り扱わなかったレベルの重たいワークロードなのでは? u レイテンシを下げ、スループットを上げるための高速化の工夫が沢山ある n モデルの演算精度を落とすことで、推論の計算量を減らす (量子化) n モデルのアーキテクチャレベルで工夫し、推論の計算量を減らす • Sparse Mixture of Experts • Multi-Query Attention / Grouped-Query Attention n 推論アルゴリズムを工夫し、レイテンシを減らす (投機実行) n 複数リクエスト間で内部状態を共有することで、スループットを高める u 運用費・電気代は LLM の今後の普及の上で重要 n Groq など、プロセッサのレベルで最適化を試みる流れも システム屋さん データベース屋さん ご活躍中
  34. 36 その他の話題: LLM の長文対応 u 省リソースで長文を処理するのも一苦労 n Claude-100K (パイオニア) →

    NEC-128K 🎉 → GPT-4-128K😮 → Gemini 10M😨 u ナイーブな Transformer の推論の(時間/空間)計算量: 𝑂 𝑛' n Self-Attention で文中の全単語の関係を計算 u Transformer の計算量を(準)線形にするアルゴリズム多数 n Sliding Window Attention [Child+19][Beltagy+20] u (冒頭で述べた) Transformer 代替アーキテクチャも研究活発 n RNN, State-Space Model https://learnopencv.com/attention-mechanism-in-transformer-neural-networks/ [Beltagy+20] Longformer: The Long-Document Transformer [Child+19] Generating Long Sequences with Sparse Transformers
  35. 37 その他の話題: LLM (ゼロショット) の功罪 u LLM によって「きちんと、自分のやりたいことを要件定義できる人」が減る恐れ u LLM

    はある程度の「雰囲気を伝えるだけで」、事例なく無茶振りに答えうる u その答えが本当は潜在的な要件を満たしていないのに、受け取ってしまう人がいる u かならず↓をやるようにすべきではないか? n 受け入れテストの定義 n Few-shot examples n Full-shot fine-tuning u LLM はどんな使い方をされるか、分からない (コントロールできない)
  36. 38 まとめ: LLMは巨大なモデルを大規模・高品質な種々のテキストデータで逐次的に学習するとできる 事前学習 指示学習 事前学習モデル (学習済み) アラインメント (PPO, DPO,

    …) 指示学習 モデル (アライン済み) 😃😔 指示データ 対話データ 指示学習 モデル フィードバックデータ (Preference) 事前学習 コーパスデータ 事前学習モデル (初期値) GPT-3 LLaMA2 Mistral ChatGPT LLaMA2-Chat Mistral-Instruct 🤖 コンピュータサイエンスの多くのエッセンスが詰まった、ロマン溢れる技術、楽しい