ir_model のチュートリアル
このチュートリアルでは、Plot IR でレポートのドキュメントを直接構築します。これにより、チューニングのスイープや stats で計算した要約など、JSONL ストリームに由来しない結果も公開できます。
クイックスタート
moon add Luna-Flow/mare_mark@0.3.0
import {
"Luna-Flow/mare_mark/model",
"Luna-Flow/mare_mark/ir_model",
"Luna-Flow/mare_mark/report",
"Luna-Flow/mare_mark/stats",
}
test "a document by hand" {
let points = [
@ir_model.PlotPoint::new("64", 0.8, "scalar"),
@ir_model.PlotPoint::new("128", 3.1, "scalar"),
@ir_model.PlotPoint::new("64", 0.5, "blocked"),
@ir_model.PlotPoint::new("128", 1.4, "blocked"),
]
let plot = @ir_model.Plot::new(@ir_model.PlotKind::Scaling, "GEMM time", "ms/op", "median", points)
let document = @ir_model.PlotDocument::new("sweep-1", "native", [plot])
inspect(@report.html(document).contains("GEMM time"), content="true")
}
日常的な作業
比較結果をプロットする
stats の比較を、データセットごとに 1 点の区間プロットに変換します:
test "interval plot from comparisons" {
let baseline = [[100.0, 101.0, 99.0], [400.0, 404.0, 398.0]]
let candidate = [[90.0, 92.0, 91.0], [410.0, 409.0, 412.0]]
let points = []
for dataset in 0..<2 {
let result = @stats.compare_paired(
"baseline", "candidate", baseline[dataset], candidate[dataset], 2.0, @model.confirmatory_interval(),
)
points.push(@ir_model.PlotPoint::new(dataset.to_string(), result.relative_delta_pct, "candidate"))
}
let plot = @ir_model.Plot::new(@ir_model.PlotKind::Interval, "Relative median delta", "%", "point estimate", points)
inspect(plot.points[0].y, content="-9")
inspect(plot.points[1].y, content="2.5")
}
正しさの証拠を添付する
test "differential evidence" {
let corpus = @ir_model.CorpusSummary::new(200, 197, 2, 1, 0)
let report = @ir_model.DifferentialReport::new([], [@ir_model.CapabilityCell::new("fast", "unsupported", 1)], [], corpus)
let document = @ir_model.PlotDocument::new("corpus-run", "native", [], differential=report)
inspect(@report.html(document).contains("failed 2"), content="true")
}
さらに先へ
@report.plot_svg で描画すれば自分のページに 1 つのグラフを埋め込め、@report.plot_json でエクスポートすれば他のツールで使えます。report APIを参照してください。
よくある落とし穴
- 数値の x 値。 x は文字列で、最初に現れた順に等間隔で配置されます。順序が重要なら点をソートしてください。
- 空の系列名。
valueとして描画されます。