Table of Contents

Benchmark'lar

Bu sayfayı neden okuyorsunuz? Bu sayfa Intentum'un BenchmarkDotNet benchmark'larını (ToVector, Infer, PolicyEngine) ve performans boyutlandırma ipuçlarını açıklar. Gecikme, throughput veya maliyet optimizasyonu arıyorsanız doğru yerdesiniz.

Intentum, çekirdek işlemler için BenchmarkDotNet benchmark'ları içerir: davranış uzayından vektöre, intent inference (mock embedding ile) ve politika kararı. Makinenizde gecikme, throughput ve bellek ölçmek ve üretim boyutlandırması için performans belgelemek için kullanın.


Neyi ölçüyoruz

Benchmark Ölçülen
ToVector_10Events / ToVector_1KEvents / ToVector_10KEvents BehaviorSpace.ToVector() — 10, 1K veya 10K olaydan davranış vektörünü oluşturma.
LlmIntentModel_Infer_10Events / LlmIntentModel_Infer_1KEvents LlmIntentModel.Infer(space)Mock embedding sağlayıcı ile tam inference (API çağrısı yok).
PolicyEngine_Decide intent.Decide(policy) — politika değerlendirmesi (üç kural).

Tüm benchmark'lar Mock embedding sağlayıcı kullanır; çalıştırmak için API anahtarı gerekmez ve sonuçlar yerelde tekrarlanabilir.


Benchmark'ları çalıştırma

Reponun kökünden:

dotnet run --project benchmarks/Intentum.Benchmarks/Intentum.Benchmarks.csproj -c Release

Sonuçlar (Mean, Error, StdDev, Allocated) konsola yazılır. BenchmarkDotNet ayrıca BenchmarkDotNet.Artifacts/results/ altına çıktı üretir:

  • *-report.html — tam rapor (tarayıcıda açın).
  • *-report-github.md — doküman veya README için uygun Markdown tablo.
  • *-report.csv — ileri analiz için ham sayılar.

Tek bir benchmark filtreleme

dotnet run --project benchmarks/Intentum.Benchmarks/Intentum.Benchmarks.csproj -c Release -- --filter "*ToVector_10Events*"

Dokümanlardaki benchmark sonuçlarını güncelleme

Dokümanlarda gösterilen benchmark sonuçlarını (örn. Case studies — Benchmark sonuçları) güncellemek için:

./scripts/run-benchmarks.sh

Bu komut Release modunda benchmark'ları çalıştırır ve üretilen *-report-github.md dosyasını docs/case-studies/benchmark-results.md olarak kopyalar. Yayımlanan sonuçları kod tabanıyla senkron tutmak için bu dosyayı commit edebilirsiniz (isteğe bağlı; CI varsayılan olarak benchmark çalıştırmaz).


Özet

Madde Nerede
Proje benchmarks/Intentum.Benchmarks
Çalıştırma dotnet run --project benchmarks/Intentum.Benchmarks/Intentum.Benchmarks.csproj -c Release
Çıktılar BenchmarkDotNet.Artifacts/results/
Doküman güncelleme ./scripts/run-benchmarks.shdocs/case-studies/benchmark-results.md

Sample.Blazor API için yük testi (örn. eşzamanlı infer endpoint) için Yük testi: infer endpoint sayfasına bakın.


İyileştirme fırsatları ve önerilen çözümler

Benchmark sonuçlarına göre (LlmIntentModel bellek ve gecikme event/boyut sayısıyla artıyor; PolicyEngine zaten hızlı) somut adımlar:

Amaç Çözüm
Büyük event setlerinde LlmIntentModel işini azaltmak space.ToVector(new ToVectorOptions(CapPerDimension: N)) çağırıp sonucu geçir: model.Infer(space, vector). Böylece benzersiz boyutlar sınırlanır, embedding çağrıları azalır. Veya Infer(space, toVectorOptions) extension’ını kullanın; bkz. Gelişmiş Özellikler.
Bellek ve API maliyetini düşürmek CachedEmbeddingProvider (veya Redis) kullanın; tekrarlayan behavior key’ler API’yi tekrar çağırmaz; daha az allocation ve gecikme.
Production’da inference gecikmesini düşük tutmak ChainedIntentModel (önce kural tabanlı, LLM yedek) ile yüksek güvenli yollar LLM’e girmeden çözülsün; ToVectorOptions ile boyutları cap’leyin; aynı space birden çok değerlendiriliyorsa vektörü önceden hesaplayıp tekrar kullanın.
Production’da daha büyük veri setleri Gerçekçi payload boyutlarıyla yük testi (örn. Yük testi: infer endpoint); p95 artıyorsa boyut cap’i veya cache ekleyin.
PolicyEngine Değişiklik gerekmez; zaten onlarca nanosaniye seviyesinde.

Sonraki adım: Bu sayfayı bitirdiyseniz → Gelişmiş özellikler veya Üretim hazırlığı.