LLMOpsって何だ?: MLflow Tracing Schemaを読み込む
MLflow Tracing Schema
MLflowの思想をベースにLLMOpsを理解しようと試みる第三弾となります。
今回はこちらのドキュメントをもとに各変数の機能を掘り下げていきますが、ドキュメントを通した変数の理解というよりはLLMOps全体を理解するための読解とします。Structure of Traces
Tracesには4つの概念で構成されています。
- Trace = TraceInfo + TraceData
- TraceInfo
- TraceData
- Span
Trace
Traceはふたつの要素で構成されています。
ひとつはTrace info、 開始時間やstatus、tagなどのひとつのTraceを表現するメタデータが書かれています。
もう一つはTrace Data、そのTraceに含まれる全てのSpanを格納します。
Trace info
Trace infoはとてもわかりやすいと理解しました。
なぜならMLflowのTracesのTop画面が表している情報がまさにそれだからです。
Columnsのプルダウンから追加列を選択できるので、表示されている列が全ての情報ではありませんが、これがいわゆるTrace infoであり、traceごとのメタデータとなります。
詳細は公式ドキュメントを確認していただきたいですが、request_id、experiment_idなどのID情報、timestamp_ms、execution_time_msの実行時間系系の情報、statusのような実行状況(完了状況)、tags、あとはrequest_metadataなどがあります。
Trace Data
こちらは若干わかりにくかったのですが、簡単な理解としては階層構造を含めたSpan同士の全体構成情報とそれプラス最初のinputである「request」と最後のoutputである「response」を持っているようです。
実態としてはUI上には顕著に現れていません。APIで経由で情報を取得した時には見えると思います。
こちらは後日やってみようと思います。
ただ、一旦はSpanをまとめているオブジェクトくらいの理解でOKだと思います。
Span
Span objectは Open Telemetryに準拠して作られています。
全体を読んでいるとやはりSpanが一番重要で、この中にどんなものが格納されているか見ていこうと思います。また前回の記事で触れましたが、Spanはいくつかのtypeがあり、全てが一様の情報を持っているわけではありません。
- inputsとoutputs:これは一番重要ですね。LLMであれば入力と出力の文章ですが、例えば関数であれば引数と返り値になります。
- attributes:これは各spanのメタデータです。LLMであればtempertureやmodelです。
- events:例外やそれに伴うstack trace等が記録されます。
他にはいくかありましたが、意外と重要なのは上記4つだという印象を受けました。
残りはparent_id,start_time_ns,name,span_idなどでした。
まとめ
これでobjectレベルで MLflow tracingによる生成物を理解できました。
これを踏まえた上でUIから記録を確認するだけでも効果がありますが、さらに積み立ててきた記録を統計的に分析する方向に進んでいこうと思います。
Discussion