[CNDW2024] 気まぐれLLMのふるまいを暴け! - OpenLLMetryを通して見る世界 -

5.9K Views

November 29, 24

スライド概要

CloudNative Days Winter 2024で使用したセッション資料です。
デモコード: https://github.com/codex-odyssey/cndw2024-llm-observability

profile-image

Slides are just my own.

シェア

またはPlayer版

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

関連スライド

各ページのテキスト
1.

気まぐれ LLMのふるまいを暴け! - OpenLLMetryを通して見る世界 @shukawam / @ystkfujii 1

2.

Shuhei Kawamura(X: @shukawam) Job: Senior Solutions Architect / Oracle Japan ひとこと: 車をゲットしたけどその 2日後に飛び石をくらってフロント ガラスを全交換しました 😇 Job: 何でも屋(Terraform/k8s/Golang) / ニート ひとこと: ミュウツーexが全然出ない 🥺 Yoshitaka Fujii(X: @ystkfujii) 2

3.

はじめに ● ● 目的: ○ OpenLLMetryの完全理解 話さないこと: ○ LLMの評価手法について ○ 実運用を通じたLLMのオブザーバービリティTips 3

4.

アジェンダ 1. 2. 3. 4. 5. Cloud Native と AI LLM × オブザーバービリティ OpenLLMetryとは 実際にやってみた まとめ 4

5.

Cloud NativeとAI 5

6.

AIってCloud Nativeなんだろうか・・・? 🤔 6

7.

Cloud Native と AI ● ● ● 2023/03: CNCF TAG(Technical Advisory Group) AIの提案[1] 2023/11: Cloud Native AI Working Groupとして承認[2] ○ TAG RuntimeとTAG Observabilityの共同ホスト 2024/03: Cloud Native AI Whitepaperの発表[3] ○ KubeCon + CloudNativeCon Europe 2024でアナウンス[4] [1]https://github.com/cncf/toc/issues/1048 [2]https://github.com/cncf/toc/issues/1200 [3]https://www.cncf.io/reports/cloud-native-artificial-intelligence-whitepaper/ [4]https://kccnceu2024.sched.com/event/1Yhhk/observability-tag-a-review-and-the-rise-of-gen-ai-observability-alolita-sharma-mattyoung-apple-vijay-samuel-ebay-bartlomiej-plotka-google 7

8.

Cloud Native Artificial Intelligence Whitepaper Cloud Native Artificial Intelligence is an evolving extension of Cloud Native. 進化の先 8 https://www.cncf.io/blog/2024/03/19/announcing-the-ai-working-groups-new-cloud-native-artificial-intelligence-whitepaper/

9.

Cloud Native Landscape group CNAI 9 https://landscape.cncf.io/?group=cnai

10.

用語の関係性 10 https://tag-runtime.cncf.io/blog/cnai-kubecon-eu-paris-2024-recap/#form-storm-norm

11.

用語の関係性 11 https://tag-runtime.cncf.io/blog/cnai-kubecon-eu-paris-2024-recap/#form-storm-norm

12.

LLM と Observability Observability LLMを利用して 予測 / 検知 / 補助 する LLM LLMワークロードを 観察 / 監視 / 分析 する 👆今日はこっち 12 https://youtu.be/YluNsK0hgrw?t=696

13.

LLM x オブザーバビリティ 13

14.

ChatGPTやGitHub Copilot など使ったことある方?🖐 14

15.

規模を問わずLLMを使った アプリケーションを開発したことがある方🖐 15

16.

作ったLLMアプリケーションを適切に監視し、 継続的に改善するためのデータを取得している方🖐 16

17.

LLM(Large Language Model)とは 大規模な言語モデルのこと(完)... 言語モデル ■ 単語や文章の出現確率を統計的に分析しモデル化したもの 何が大規模なのか ■ パラメータ数、学習データ、計算量 モデルの性能が大きく向上[1]し、高度な言語能力を獲得 17 [1] Scaling Low: パラメータ数、データセットのサイズ、計算量が増えると損失 (誤差)がべき乗則に従って、減少する法則のこと 参考: https://arxiv.org/abs/2001.08361

18.

LLMをアプリケーションに組み込む際の課題の例 1 それっぽい出力だが、 期待したものではない。 誤った内容も含まれている。 18 回答には、Cohere Playground(command-r-plus-08-2024)を使用

19.

参考:期待した出力はなぜ得られないのか ■ ■ LLMは、ある単語に対して次に続く単語を確率的に選択するだけ ◻ i.e. 正しい情報を出力することを目的として学習されていない 学習データは必ずある時点までのスナップショット ◻ i.e. 学習時以降のデータや学習データ期間に含まれ得ない情報は 正しく出力することができない ◻ command-r-plus-08-2024はどんなに長く見積もっても2024/08ま でのデータしか含まないので、CNDW2024の情報は正しく出力す ることができない 19 参考: Building LLM Powered Applications - https://learning.oreilly.com/library/view/building-llm-powered/9781835462317/

20.

参考:LLMに追加の知識を与える 1. 継続事前学習 a. 知識を与えたいドメインに対して大量の未ラベルデータを用いて追 加の学習をすること 2. ファインチューニング a. 比較的少量のラベル付きのデータを使用して、モデルの出力をそ のタスクに特化させること 3. グラウンディング a. 特定の知識や情報源に接続することで、LLMの出力を現実世界の 知識に基かせるプロセスのこと 20

21.

参考:LLMに追加の知識を与える 1. 継続事前学習 a. 知識を与えたいドメインに対して大量の未ラベルデータを用いて追 加の学習をすること 2. ファインチューニング a. 比較的少量のラベル付きのデータを使用して、モデルの出力をそ のタスクに特化させること 3. グラウンディング a. 特定の知識や情報源に接続することで、LLMの出力を現実世界の 知識に基かせるプロセスのこと 21

22.

参考:Retrieval-Augmented Generation | RAG RAG: LLMの出力を関連情報を取得する検索システムと統合し、LLMへ入力 するプロンプトを拡張することで強化する手法のこと 検索システムの例: ベクトルデータベース、全文検索エンジン、etc. 1. 入力 4. 入力 + 関連情報 5. 関連情報を含んだ出力 3. 関連情報の取得 2. 関連情報の検索 図: RAGの流れ 22

23.

LLMをアプリケーションに組み込む際の課題の例 2 同じプロンプトを入力しても同じ出力がされるとは 限らない。出力の品質にばらつきが生まれる可能 性もあるし、コスト [1]も変わり得る。 23 回答には、Cohere Playground(command-r-plus-08-2024)を使用 [1] OpenAIやCohereなどは、LLMの推論環境を入出力のトークン、文字数による従量課金で使用可能

24.

LLMアプリケーションで起こり得る課題例について 期待する内容が出力されない 予測が難しい運用コスト 出力に時間がかかってしまう … 改善策を検討する&その結果を確認するために必要なデータはきちんと 収集し、それが活用できる状態であるべきでは?

25.

オブザーバビリティ システムがどのような状態になったとしても、それが どんなに斬新で奇妙なものであっても、どれだけ理 解し説明できるかを示す尺度 25 https://www.oreilly.co.jp/books/9784814400126/

26.

オブザーバビリティが重要だと考える理由 ■ ■ ■ ”LLMのふるまいは気まぐれ”(非決定的)であること ☐ だが、機能の根幹を担っておりサービス品質に直結する LLMアプリケーションは構成や処理フローが複雑になりがち ☐ LLM、検索コンポーネント、キャッシュストア、外部API、... ☐ 処理フロー自体をLLMに推論させる[1]ような実装も存在する ユーザーの入力は多様であること ☐ セキュリティリスクを含む入力がされる可能性もある ■ e.g. xxさんのパスワードを教えてください 26 [1] ReAct: 入力を解決するために必要なアクションをLLMに推論させ、実行すること。LangGraphはその有名な実装。

27.

LLMアプリケーションの監視項目 ● ● ● Traces ○ LLMアプリケーションの入力〜出力までの流れ + 付帯情報 ○ e.g. 各ステップの実行時間、モデル名、パラメータ Metrics ○ LLMを使用するクライアント: トークンの使用量、処理時間 ○ LLMをホストするサーバー: TTFT[1]、TPOP[2] Events ○ LLMに対する入出力のキャプチャ 27 [1] Time To First Token: レスポンスのための最初のトークンを生成するために要した時間 [2] Time Per Output Token: 最初のトークンの後に生成されるトークンあたりに要した時間

28.

探究!OpenLLMetry 28

29.

OpenLLMetry ● ● ● OpenTelemetryを拡張したLLMオブザーバビリティツール ○ Traceloop社がApache 2.0ライセンスで公開 ○ Semantic Conventions for Gen AIをリード[1] さまざまなツールに対する計装ライブラリ も提供 ○ OpenAI、LangChain、Chroma DB など 利用例 29 https://www.traceloop.com/docs/openllmetry/contributing/semantic-conventions

30.

Semantic Conventions for Gen AI[1] ● OpenTelemetry配下で生成AIに対するセマンティック規約を策定 ○ 対象:Events[2] / Metrics / Spans(Traces) セマンティック規約とは、 さまざまな操作やデータで 推奨される名前 を定義したもの ● たとえば、Spanの規約(一部抜粋) Attribute Description Example gen_ai.request.model リクエスト先の生成AIの名前 gpt-4o-mini-2024-07-18 gen_ai.usage.input_tokens 生成AIの入力で使用されたトークン数 83 experimental 30 [1] https://opentelemetry.io/docs/specs/semconv/gen-ai/ [2] 2024年10月にマージ:https://github.com/open-telemetry/semantic-conventions/pull/980

31.

Semantic Conventions for Gen AI[1] ● OpenTelemetry配下で生成AIに対するセマンティック規約を策定 ○ 対象:Events[2] / Metrics / Spans(Traces) OpenLLMetryを利用すると、 さまざまな操作やデータで 推奨される名前 を定義したもの セマンティック規約をもとに、 いい感じに計装 できる! セマンティック規約とは、 ● たとえば、Spanの規約(一部抜粋) Attribute Description Example gen_ai.request.model リクエスト先の生成AIの名前 gpt-4o-mini-2024-07-18 gen_ai.usage.input_tokens 生成AIの入力で使用されたトークン数 83 experimental 31 [1] https://opentelemetry.io/docs/specs/semconv/gen-ai/ [2] 2024年10月にマージ:https://github.com/open-telemetry/semantic-conventions/pull/980

32.

GrafanaからTraceをみると LLMからの回答 ユーザからの質問 32

33.

GrafanaからMetricsを見てみる 処理時間 消費トークン数 33

34.

Traceloop (SaaS)も利用可能 34 https://app.traceloop.com/

35.

OpenLLMetryを使えばいい感じに計装できる ? 🤔 まだまだ発展途上... 変化に追いついていない部分もある ● ● セマンティック規約周り ○ メトリクスにTime To First TokenやTime Per Output Tokenがない[1] ○ Eventsは未実装[2] Frameworkの計装ライブラリ周り ○ LangChain Instrumentationはstream出力した場合、トークン数が取得 できない[3] [1]https://github.com/traceloop/openllmetry/blob/v0.33.12/packages/traceloop-sdk/traceloop/sdk/metrics/metrics.py#L87 [2]https://github.com/traceloop/openllmetry/issues/2322 [3]https://github.com/traceloop/openllmetry/blob/main/packages/opentelemetry-instrumentation-langchain/opentelemetry/instrumen tation/langchain/callback_handler.py#L251 35

36.

OpenTelemetryの拡張ということは ...? 36

37.

OpenTelemetryの拡張ということは ...? 既存のエコシステムが利用可能! 37

38.

エコシステムとの統合 ● たとえば、 ○ Grafanaによる可視化 ○ テレメトリーシグナルに対する各種クエリ機能 ■ PromQL / TraceQL / TraceQL Metrics … ○ OpenTelemetry Collectorの活用 もちろん、、、 オブザーバビリティベンダーの SaaSも利用可能! (念のため) 38

39.

計装ライブラリの提供状況 LLM Provider ● ● ● ● ● ● ● Azure OpenAI Aleph Alpha Anthropic Amazon Bedrock Cohere IBM watsonx Google Gemini ● ● ● ● ● ● ● Google VertexAI Mistral AI Ollama OpenAI Replicate together.ai HuggingFace Transformers 39 https://www.traceloop.com/docs/openllmetry/tracing/supported

40.

計装ライブラリの提供状況 言語 ● ● ● ● ● Python Node.js Next.js Go Ruby Frameworks Vector DB ● ● ● ● ● ● Choma DB Marqo Milvus Pinecone Qdrant Weaviate ● ● ● ● Haystack LangChain LlamaIndex burr 40 https://www.traceloop.com/docs/openllmetry/tracing/supported

41.

計装方法 これだけでサポートされている LLM Provider, Vector DB, Frameworkに対する計装が行われる [1] デコレーターを利用することも可能 41 [1] もちろん、Traceloop SDKを使用せずに計装することも可能です。

42.

実際にやってみた 42

43.

よし、 LLMアプリケーション作って オブザーブしてみよう! \ ヤッテク / 43

44.

デモ:CNDW2024 セッション提案 Bot アプリケーション 44 https://github.com/codex-odyssey/cndw2024-llm-observability/tree/main

45.

デモ:CNDW2024 セッション提案 Bot アプリケーション 45 https://github.com/codex-odyssey/cndw2024-llm-observability/tree/main

46.

デモ:アプリケーションの概要 Agent 関連性 を評価 関連性が 高ければ 、 Respondentにパス 関連性が 低ければ 、 質問に関連する キーワードを生成 Respondent (回答者) Keyword Generator Prompt Template Prompt Template Chat Model Chat Model Session Retriever Retriever Prompt Template Vector DB Embedding Model Chat Model セッション情報 46 https://github.com/codex-odyssey/cndw2024-llm-observability/tree/main

47.

デモ:アプリケーションの概要 役割:質問に関連するCloud Nativeっぽいキーワード作成 ②必要に応じて、質問に関連するキー ワードを生成 Keyword Generator ③質問 / キーワードで検索 ①質問 Responder (回答者) ⑤回答 Session Retriever ④関連するセッション情報 役割:ユーザーへの回答作成 https://github.com/codex-odyssey/cndw2024-llm-observability/tree/main 役割:質問 / キーワード に関連するセッションの取得

48.

デモ:オブザーブしてみよう! LLMが何を生成しているのか? トークンをどれだけ消費しているのか? 処理時間が長いやつはどのコンポーネントなのか? 48

49.

Grafana:LLMが何を生成しているのか 49

50.

Grafana:トークンをどれだけ消費しているのか 50

51.

Grafana:遅いコンポーネントはどれか? 51

52.

ちなみに、 SaaSだとどんな感じ? 52

53.

Traceloop:LLMが何を生成しているのか 53

54.

Traceloop:遅いコンポーネントはどれか ソート 54

55.

Traceloop:トークンをどれだけ消費しているのか 55

56.

まとめ ● Cloud NativeはAIで進化する ● LLMには、固有のオブザーバビリティの観点がある ○ ● ● LLMの入出力 / トークン数 / モデル名等の属性値 など OpenTelemetryの拡張として、OpenLLMetry がある ○ 既存のエコシステムが利用可能 無限の可能性 ○ 特化したツールに比べると、学習や実現コストが発生 今後のエコシステムの進化に期待!!! 56

57.

宣伝:同人誌作りました! 57 https://techbookfest.org/product/vwEgK9fAmzRphNukv4E83P?productVariantID=b6iAh0AVyEs4hCUczPiy89 https://techbookfest.org/product/mn0L7GEm3s8Vhmxq971HEi?productVariantID=myG2YLxFNAEVkRf2dipG8f

58.

Thank y u! 58