Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -180,6 +180,10 @@ class MainActivity : ComponentActivity() {
}
// Keep the screen on while the app is running for better demo experience.
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
// Optimize for consistent peak frequencies by requesting sustained performance mode.
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
window.setSustainedPerformanceMode(true)
}
}

override fun onNewIntent(intent: Intent) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ import com.google.ai.edge.gallery.proto.LlmBenchmarkStats
import com.google.ai.edge.gallery.proto.ValueSeries
import com.google.ai.edge.litertlm.Backend
import com.google.ai.edge.litertlm.ExperimentalApi
import com.google.ai.edge.litertlm.PerformanceMode
import com.google.ai.edge.litertlm.benchmark
import com.google.ai.edge.litertlm.setPerformanceMode
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import java.io.File
Expand Down Expand Up @@ -140,30 +142,41 @@ constructor(
else -> Backend.CPU()
}
val modelPath = model.getPath(context = appContext)
for (i in 0 until runCount) {
Log.d(TAG, "Start running #$i...")
val benchmarkInfo =
benchmark(
modelPath = modelPath,
backend = backend,
prefillTokens = prefillTokens,
decodeTokens = decodeTokens,
cacheDir = cacheDirPath,
)
Log.d(TAG, "Done #$i")

val initTimeMs = benchmarkInfo.initTimeInSecond * 1000.0
if (i == 0) {
firstInitTime = initTimeMs
} else {
nonFirstInitTimes.add(initTimeMs)
}
prefillSpeeds.add(benchmarkInfo.lastPrefillTokensPerSecond)
decodeSpeeds.add(benchmarkInfo.lastDecodeTokensPerSecond)
timesToFirstToken.add(benchmarkInfo.timeToFirstTokenInSecond)
try {
setPerformanceMode(PerformanceMode.SUSTAINED_PERFORMANCE)
for (i in 0 until runCount) {
Log.d(TAG, "Start running #$i...")
val runStartTimeNanos = System.nanoTime()

val benchmarkInfo =
benchmark(
modelPath = modelPath,
backend = backend,
prefillTokens = prefillTokens,
decodeTokens = decodeTokens,
cacheDir = cacheDirPath,
)

val executionDurationNanos = System.nanoTime() - runStartTimeNanos
Log.d(TAG, "Done #$i (duration: ${executionDurationNanos / 1_000_000L}ms)")

// Mark finish for this run.
setRunProgress(completedRunCount = i + 1)
val initTimeMs = benchmarkInfo.initTimeInSecond * 1000.0
if (i == 0) {
firstInitTime = initTimeMs
} else {
nonFirstInitTimes.add(initTimeMs)
}
prefillSpeeds.add(benchmarkInfo.lastPrefillTokensPerSecond)
decodeSpeeds.add(benchmarkInfo.lastDecodeTokensPerSecond)
timesToFirstToken.add(benchmarkInfo.timeToFirstTokenInSecond)

// Mark finish for this run.
setRunProgress(completedRunCount = i + 1)
}
} finally {
setPerformanceMode(PerformanceMode.BALANCED)
Log.d(TAG, "Restored performance mode to original state.")
}
val endMs = System.currentTimeMillis()
if (needCleanUpCacheDir) {
Expand Down
Loading