nikkie-ftnextの日記

イベントレポートや読書メモを発信

OpenAI DevDay「A Survey of Techniques for Maximizing LLM Performance」視聴ログ。プロンプトエンジニアリング・RAG・ファインチューニングを整理して、完全に理解した!

はじめに

今度は生き残りゲームインシテミルみたいな感じなのかな。 nikkieです。

めちゃめちゃ高揚するキーノートがあった、先日のOpenAI DevDay。

キーノート以外のセッションもアーカイブ公開されたと知り、気になった一本「A Survey of Techniques for Maximizing LLM Performance」を視聴しました。

目次

「A Survey of Techniques for Maximizing LLM Performance」

参加者のツイートで以下を見かけていたのですが、

これはこのトーク中のスライドでした(RAGについてパートの事例の1つ)

LLMの本番運用のために、LLMの性能を最大化することをテーマにしたセッションです。
サーベイということで、理論についての3つのパートと、応用(アプリケーション)のパートからなります

  • 導入
  • 理論
    • プロンプトエンジニアリング
    • RAG
    • ファインチューニング
  • 応用

これら3つについてどんな課題を解くために使うかが分かった気がします。

理解したことメモ

まとめ1

  • LLMの性能向上はプロンプトエンジニアリングから始める
    • 低コストな投資
    • 反復する(感想:そのために評価データセットが大事そう
    • FSL: Few-Shot Learning2
  • プロンプトエンジニアリングで性能向上が頭打ちになったらエラー分析
  • モデルに新しい知識を入れる必要がある場合はRAG
  • モデルが厳密な出力構造に従う必要がある場合はfine-tune
    • 一貫性のない指示に従っている場合も該当するようですが、「一貫性のない指示」ってなんだろう?(私の英語力の限界)

それぞれの定義

  • RAG
    • Giving the model access to domain-specific content

  • ファインチューニング
    • continuing the training process on a smaller, domain-specific dataset to optimize a model for a specific task

RAGとファインチューニングは解きたい課題が違う

  • コンテキストの問題
    • モデルが何を知る必要があるか
    • RAGでアプローチする
    • 短期記憶の問題(イメージ:試験で手元に開いた本がある)
  • LLMの問題
    • モデルはどのように振る舞う必要があるか
    • ファインチューニングでアプローチする
    • 長期記憶の問題(イメージ:試験のために勉強する)

4象限の整理3が分かりやすかったです。

RAG(context・LLM低) RAGもファインチューニングも(context・LLM
プロンプトエンジニアリング(context低・LLM低) ファインチューニング(context低・LLM

上記ツイートのようにいくつか事例が共有されましたが、ファインチューニングの事例(失敗例)は印象的でした。

  • ライティングアシスタントを作りたい
  • トーンを著者の書き方に調整したい
  • 2年分のSlackの投稿データでファインチューニング!
  • Slackの書き方を再現してしまった(一同爆笑)
    • 500語のブログ書いて
    • 朝やるよ
    • いまお願いします
    • ok

このセッションで知ったこと(積ん読リスト)

RAGのHyDE retrieval

LangChainに実装があるみたい
https://github.com/langchain-ai/langchain/blob/v0.0.336/cookbook/hypothetical_document_embeddings.ipynb

ほかにもReRankerなど、RAGは全然知らないことばかりだ〜

Ragas score

RAGの評価指標で2軸4指標

  • LLMの評価
  • コンテンツの評価
    • retrieveしたコンテンツが誤っているとLLMは間違えてしまう

プロンプトエンジニアリング

複数の戦術を使った例を見られました。写経できるぞ!
戦術は以下のドキュメントにもあります

https://platform.openai.com/docs/guides/prompt-engineering

終わりに

「A Survey of Techniques for Maximizing LLM Performance」の視聴ログでした。
✍️評価データを用意し、プロンプトエンジニアリングからはじめ、エラー分析してRAGかファインチューニングかを判断。

プロンプトエンジニアリングが注目される(バズる)ことが多いイメージですが、実課題を解く機能をLLMで提供するにはRAGやファインチューニングが肝なのかなあと思いました。
印象的だったのが、(意訳ですが)プロンプトエンジニアリングは始めるにはよい(good to start)が、特定のタスクを解くgreatな方法ではない、という説明。
プロンプトエンジニアリング、RAG、ファインチューニングを駆使した改善の反復、非常にわくわくしますね。

断片的に知っていた情報が結びついたサーベイでした。
公開に感謝です。素振っていこう!


  1. 再生時間 https://youtu.be/ahnGLM-RC1Y?si=5CJnTbAYLkxGFzUa&t=2666
  2. FSLはファインチューニングのベストプラクティスから
  3. https://youtu.be/ahnGLM-RC1Y?si=ub5CgvSBUAGwhIC4&t=254