Repository navigation
Conversation
Reads the process memory footprint (what jetsam limits, counting Metal and Neural Engine buffers), samples its peak, and reports the thermal state and Low Power Mode. The ios ignore rule is anchored to the app root so the module's ios folder is tracked. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Runs Qwen3 0.6B on Core AI (Neural Engine and GPU exports), llama.rn and react-native-executorch (MLX and XNNPACK backends) with the same prompts, greedy decoding, thinking off and 256 output tokens, and records load times, time to first token, prefill and decode speed, peak footprint and thermal state. Benchmarks run only with HARNESS_BENCHMARK=true, and ExecuTorch is linked only with EXECUTORCH=1. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The MLX counterpart of the React Native benchmarks, on mlx-swift-lm 3.32.3 with the same prompts and metrics, built with XcodeGen. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
A benchmark runs longer than the auto-lock delay, and a locked device suspends the app, which the harness reports as a disconnected bridge. run.sh now continues with the next configuration when one fails. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The Neural Engine compile on the first prediction after clearing the specialization cache takes about 100 seconds and heats the device, which slowed down the generation runs after it. Cold start now runs last, and the generation benchmarks start with the model already compiled. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…andling Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Core AI keeps some memory after an unload, so a baseline taken after the warmup load made the footprint after load negative. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Core AI model configs take the source as a string since the config refactor on main. The lockfile is regenerated from main's, so zod stays at 4.2.1 and only react-native-executorch gets the 4.6.7 it needs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
Comment |
Contributor
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
collect.ts now takes the median over launches, shows the decode range and launch count, leaves out throttled launches unless --all is passed, and reports the peak footprint above the app's baseline. RESULTS.md reports two nominal launches per Core AI export, three for MLX, and one each (plus a throttled one, listed separately) for llama.rn and both ExecuTorch backends. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Benchmarks Qwen3 0.6B on the on-device runtimes we work with, on one iPhone 17 Pro (iOS 27.0), to answer whether Core AI is as fast as MLX in practice. Results, methodology and run counts are in
harness/benchmarks/RESULTS.md, and the raw data, one line per launch, is inharness/benchmarks/results/.Results
Qwen3 0.6B, 256 output tokens, greedy decoding, thinking off. Each launch is 1 warmup and 3 measured runs per prompt. The table shows the median over launches that stayed at a nominal thermal state.
Spread:
Core AI cold start:
prepare(), andspecialize()takes under 1 ms without changing that. After that, every load still waits 2.6 s for the first token.Is Core AI as fast as MLX?
RESULTS.md explains why: decode is one token per step, the export uses static shapes, and it keeps some weights at 8 bits.
What's in here
harness/benchmarks/:measure.ts) and the same prompts for everyone (prompts.ts);run.sh, which runs the configurations one app launch at a time;collect.ts, which builds the tables: the median over launches, with throttled launches left out unless--allis passed.The benchmarks only run with
HARNESS_BENCHMARK=true.harness/benchmarks/mlx/: a minimal Swift app on mlx-swift-lm, built with XcodeGen, that measures the same things the same way.apps/expo-example/modules/device-stats: a local Expo module that reports the process footprint (with a sampled peak), the thermal state and Low Power Mode.react-native-executorchadded to the example app. It's linked only withEXECUTORCH=1, and its native libraries are downloaded by hand, as the README describes.Methodology notes
nominalthermal state, and records the state before and after. A pass without those waits throttled the phone to a third of these speeds and is not used.Follow-ups
🤖 Generated with Claude Code