Insights13 February 2025Updated 25 October 20264 min read

Optimising Local LLM Inference Latency for Field Applications

Construction worker using digital tablet with holographic blueprints at a rainy site featuring a crane and building under construction.

Local language models are a credible option for field applications, but we would not promise an immediate answer simply because the model runs on the device. Apple's foundation language model research describes an on-device model of roughly three billion parameters. Treat that as evidence of a deliberately engineered mobile model, not a performance guarantee for an inspection app.

For a field team, the useful question is whether the application can finish a defined task within an acceptable wait, using the information available on site. We recommend starting there before choosing a model or an optimisation technique. A proposed assistant that drafts a maintenance note should have a different acceptance test from the application that records a completed inspection.

Define the answer the worker needs

Start with a narrow language task. For example, ask the assistant to turn a technician's written observations into a proposed handover note. Specify which observations must appear, which details must remain unchanged and what the worker must approve before saving it.

Keep that proposal separate from a claim that the system can predict equipment failure. We would require evidence for that different task before including it in a product promise. A fluent maintenance summary is not the acceptance criterion we would use for a failure prediction.

Write the latency requirement alongside the quality requirement. Measure the wait until something useful appears and the wait until a complete, checked draft is ready. Include loading the model and preparing the input in the test, rather than reporting only the generation stage.

Use representative examples agreed with the field team. Include a short note, a long service history and an incomplete record. Decide in advance when the assistant should decline to produce a recommendation. Avoid selecting the model solely on its best demonstration.

Test compression with the runtime, not in isolation

The AWQ research describes low-bit weight quantisation and an accompanying inference implementation, TinyChat, using kernel fusion and platform-aware weight packing. The important distinction for an implementation team is between the compressed model and the software that executes it.

Our recommendation is to evaluate those as a pair. Record the model version, weight format, runtime version and target device for each test. Do not treat a successful conversion to a smaller weight format as the completion of the optimisation work.

Compare candidate configurations on the same handover examples. Inspect whether identifiers, negations and instructions survive the change. Reject a faster configuration if its drafts no longer meet the agreed quality threshold. Keep the previous working configuration available while testing the replacement.

We would also resist a fixed sequence of compression techniques applied without measurement. Test one change at a time and retain the result only when the measured task improves. Do not carry a research result into a device procurement decision without reproducing the relevant behaviour on the intended hardware.

Give React Native an explicit inference boundary

React Native's New Architecture announcement describes a rewritten native module system for communication between JavaScript and the native platform. That integration boundary is worth designing explicitly when adding an inference runtime.

For a proposed field application, define a small interface: start a job, report progress, cancel it and return a result or a clear failure. Keep the inference implementation behind that interface. Avoid making the screen responsible for the model's loading and execution details.

Require a responsive interface throughout the test. Try scrolling the service history, editing a note and cancelling a draft while inference is running. Verify that cancellation actually ends the work, rather than only hiding a progress indicator. Treat these as acceptance tests, not benefits automatically supplied by the framework.

Separate the worker's saved observation from the generated suggestion. We recommend keeping the original wording available during review and making acceptance of the suggestion an explicit action. If the assistant fails, the worker should still be able to complete the underlying record.

Prove the offline workflow separately

Design the offline test around a complete job, not a disconnected chat demonstration. Start with the necessary model and job records already installed, disable connectivity and attempt the handover task. Then repeat with a missing model or an unavailable reference document.

Specify what the app should say in each case. We would prefer a clear explanation that a required record is unavailable over an answer that silently substitutes an assumption. Show the worker which source records were used and when they were last obtained.

Keep saving and synchronising outside the language model's authority. Decide how a locally approved note is queued for upload, how repeated attempts are handled and how conflicting edits are presented. Test reconnection after the note has been saved. Do not use an apparently successful generated answer as proof that the record reached the office.

Set an equally explicit boundary for data handling. Review diagnostic logs and any network fallback before describing the feature as local. We recommend allowing the field task to continue without an automatic cloud retry when the product's agreed data rules require processing to remain on the device.

Choose the configuration that passes the field test

Before rollout, repeat the agreed tasks across the actual device fleet. Include a fresh app launch and repeated use during a working session. Record completion time, failed jobs and the worker's corrections alongside the configuration under test.

Our release criterion would be a reviewed note that meets the task's quality and waiting-time limits, with a usable fallback when inference cannot run. If no configuration meets that criterion, keep the conventional form and narrow the assistant's role. Local inference is an implementation choice, not a reason to relax the workflow's requirements.

Update, October 2026

For a different deployment setting, our engineering article on inference benchmarking examines a local server workload. Read it as a separate example of matching a benchmark to its workload, not as evidence of mobile performance.

Sources

Want this in your team?

Tell us what you're building and where you want to get to, and we'll think it through with you.

Let's have a chat Follow by RSS →

All insights →