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

LLMの開発は難しい?簡単?Stability AIの現場から (2023/10/11, W&B Fully Connected)

LLMの開発は難しい?簡単?Stability AIの現場から (2023/10/11, W&B Fully Connected)

Takuya Akiba

October 11, 2023
Tweet

More Decks by Takuya Akiba

Other Decks in Programming

Transcript

  1. 自己紹介: 秋葉 拓哉 • ~2015 東京大学 コンピュータ科学専攻 博士 • ~2023

    Preferred Networks リサーチャー → ML基盤担当VP • 2023~ Stability AI シニアリサーチサイエンティスト https://takiba.net https://x.com/iwiwi https://prtimes.jp/main/html/rd/p/000000006.000119963.html
  2. 20 Apr 2023 22 Aug 2022 24 Nov 2022 Jan

    2023 28 July 2023 10 Aug 2023 17 Aug 2023 Stable Diffusion テキストから画像を生成する Text-to-imageモデル。 Japan office設立 日本のクリエイター・会社・組織の想像 力・創造力を拡張。 StableLM Stability AIから初となる言語モデ ルをリリース。 Stable Diffusion XL これまでのStable Diffusionの中で 最も高性能なモデル。 Stable Diffusion V2.1 V1リリースモデルからさらなる改善がされたモデル。 基盤のText-to-imageモデルを拡張したモデルも公 開。 • Super-Resolution Upscaler Diffusion Models • Depth-to-Image Diffusion Model • Updated Inpainting Diffusion Model Japanese InstructBLIP Japanese StableLM Stability AI Japan初となる日本語 特化言語モデル。 日本特化の画像言語モデル。 キャプション生成・質問応答。 Stability AI 沿革
  3. 🦜 Japanese StableLM (JSLM) Alpha • Japanese-StableLM-Base-Alpha-7B ◦ 7B pretrained

    autoregressive model using GPT-NeoX ◦ Trained w/ 750B tokens (Japanese/English) ▪ Japanese/English Wikipedia ▪ Japanese CC-100, mC4 ▪ extended Japanese OSCAR • Japanese-StableLM-Instruct-Alpha-7B ◦ SFT the above base model with Japanese instruction ▪ Stanford Alpaca ▪ Dolly-15k ▪ Japanese translation of Anthropic HH ◦ Trained with 3 epoch
  4. オープンなLLMが続々と出ている 英語など • Stable LM (Stability AI) • Stable Beluga

    (Stability AI) • Llama-2 (Meta) • Mistral (Mistral) • Qwen (Alibaba Cloud) • XGen (Salesforce) • MPT (MosaicML) • …… 日本語 • Japanese Stable LM (Stability AI) • PLaMo (Preferred Networks) • ELYZA-Japanese-Llama-2 (ELYZA) • Weblab (松尾研) • japanese-large-lm (LINE) • bilingual-gpt-neox-4b (りんな) • OpenCALM (CyberAgent) • …… GPT-4はこれらの延長線上にあるの?
  5. LLMの作り方 Fine-Tuning 02 • 人の指示を聞いたり、対話を可能にする。 • SFT, RLHF 等の方法が用いられる。 このために作られたデータが必要。

    Pretraining 01 • ウェブ等の大量のデータを学習。 基礎的な言語能力や知識を身につける。 • 大きな計算資源が必要。 どこが大変?
  6. LLM構築 タイムアタック! Pretraining 1. GPUを確保する 2. データを準備する 3. GPT-NeoXをインストール&実行 Fine-Tuning

    1. データを準備する 2. TRLXをインストール&実行 英語ならとりあえずRedPajama 今すぐダウンロード
  7. LLM構築 タイムアタック! Pretraining 1. GPUを確保する 2. データを準備する 3. GPT-NeoXをインストール&実行 Fine-Tuning

    1. データを準備する 2. TRLXをインストール&実行 フレームワークはお好みのもので GPT-NeoX, llm-foundry, Megatron DeepSpeed…… すんなり動かない場合には問題解決にHPC関連の知識が必要になるかも 学習設定はとりあえず確立したもので
  8. LLM構築 タイムアタック! Pretraining 1. GPUを確保する 2. データを準備する 3. GPT-NeoXをインストール&実行 Fine-Tuning

    1. データを準備する 2. TRLXをインストール&実行 Alpaca, Anthropic HH, Dolly, OpenOrca, …… 今すぐダウンロード
  9. LLM構築 タイムアタック! Pretraining 1. GPUを確保する 2. データを準備する 3. GPT-NeoXをインストール&実行 Fine-Tuning

    1. データを準備する 2. TRLXをインストール&実行 急ぎなら一旦SFTだけでとりあえず良い SFTだけなら既存フレームワークを使うほどでもないが……
  10. LLM構築 タイムアタック! Pretraining 1. GPUを確保する 2. データを準備する 3. GPT-NeoXをインストール&実行 Fine-Tuning

    1. データを準備する 2. TRLXをインストール&実行 コードをほぼ書かずにLLM完成!?
  11. ① Pretraining モデルアーキテクチャ • 基本的には今の所 Transformer 一択 • 細かい差異によりじわじわと進化している 例

    • 活性化関数: SwiGLU, SquaredReLU, …… • 位置埋め込み: RoPE系, ALiBi, …… • 注意機構: MQA, GQA, SWA, …… ちなみに、GPT-4に関して言うと、学習されたのが少し昔だし、そんなに先進的なアーキテクチャを利用していないのではないかと予想。 実際、この辺で工夫するために試行錯誤に時間使うぐらいなら、その分だけモデルを大きくして長く学習する方が、性能が良くなるかもしれない。 一方で、特に最近の小さいサイズのモデルの進化(Mistral 7B等)には、この辺の進歩も結構寄与しているかもしれない。
  12. ① Pretraining 大規模分散学習 大きなモデルの学習をメモリに収める + 効率を出す • 〜中規模:Data Parallelism ◦

    PyTorchのFSDP、DeepSpeedのZeRO • 大規模〜:3D Parallelism (Data + Tensor + Pipeline) ◦ Megatron (及びそれをベースとしたMegatron DeepSpeedやGPT NeoX) 個人的意見としては、DPで事足りるのであればそれが良い。色々と楽なので。 全体的なやり方既には確立しており、OSS実装も利用可能だが、改善の余地はまだあるようにも感じる。
  13. ① Pretraining 学習データ • どういったデータを利用するか? ◦ Web Crawl, Wikipedia, ArXiv,

    GitHub, …… • どのような割合で混合するか? • どのように前処理するか? ◦ 重複除去、フィルタリングなど 恐らく事前学習において最も重要な点だが、何がどのようにモデルに影響したかの検証が難しい。
  14. ② Fine-Tuning (SFT + RLHF) 学習データ • 高品質で多様なアノテーションデータが必要 ◦ 内容によっては専門家がアノテーションする必要あり

    • オープンLLMの一部はGPT-4等にアノテーションさせている、が…… ◦ ライセンスの都合上、このように作ったデータを利用するとモデルの利用が制限される ◦ とはいえ、まずは一旦GPT-4で試せるようになったのはいずれにせよ便利 Fine-tuningのあれこれの重要性については諸説ある。 とはいえ、この中だと個人的には最終的にはここが一番大きな差になり得るかなぁと思ってる。
  15. ② Fine-Tuning (SFT + RLHF) RLHFは必要なのか? • GPT-4やLlama-2-Chat等はRLHFしている • オープンLLMはRLHFせずSFTのみのものも多い

    個人的な予想としては、結局RLHFもすることになるのではないかなと…… Stable Beluga 2 (SFT) Llama 2 (SFT + RLHF)
  16. ③ Evaluation & Analysis • GPT-4 Tech Reportだとここが一番人数が多い • LLMは汎用性が高く色々なことが出来るので、

    その能力や安全性を理解するために、様々なタスクを準備し評価する • 評価がより正確にできれば、改善もより効率的に行える、かもしれない。
  17. Stability AIでの取り組みの例 • Pretraining ◦ GPT-NeoXの改善・独自フレームワークの実装 ◦ 独自データセットの構築 • Fine-Tuning

    ◦ 独自データセットの構築 • Evaluation & Analysis ◦ 日本語lm-eval-harnessの構築 https://github.com/Stability-AI/lm-evaluation-harness/tree/jp-stable ◦ 日本語MT-Benchの構築 https://github.com/Stability-AI/FastChat/tree/jp-stable/fastchat/llm_judge#llm-judge ◦ 安全性の試験に向けた準備 • 日本語等のデータ量が限られる言語に向けた研究
  18. 終わりに 1. LLMの作り方 • とにかく作るだけ、というなら簡単 2. より優れたLLMを作るには • Pretraining, Fine-Tuning,

    Evaluation等の進歩 • Stability AIでの取り組み 今日は分かりやすさのためにGPT-4との対比を繰り返しましたが、恐らく多くのグループはそもそもGPT-4を作りたいとは思っていないと思います。 それよりも、限定的な場面で安価に推論可能な小〜中規模のモデルの性能を向上したいと考えているグループが多そうです。 ただ、やることや考え方は共通している部分も多いと思います。