Gemma 4 VL (Vulkan, v0.11.0 export) is killed by lmkd during load on an 8 GB phone; the v0.9.0 export loads there through the legacy runner

Abierto
#1,613 0 comentarios 0 reacciones 1 asignado Ver en GitHub

Los mantenedores suelen responder en 1 día

@barhanc ya está trabajando en esto.

Desde el 5/11/2026.

Evaluación

Este issue todavía no se ha evaluado.

Descripción

model

Description

On a Samsung Galaxy S24 (8 GB), loading Gemma 4 VL E2B through the new multimodal LLM API gets the app killed by the Android low-memory killer before generation starts. The app is in the foreground (oom_score_adj 0). On the same phone, our previous release loads the v0.9.0 Vulkan export of the same model through react-native-executorch/legacy and answers normally.

The XNNPACK v0.11.0 export of the same model loads fine on the new API on this phone, using about 2.7 GB PSS with a 7.8 s load. The problem looks specific to the Vulkan path.

Environment

  • react-native-executorch 0.11.0 in both builds.
  • Device: Samsung Galaxy S24, SM-S921B (Exynos 2400, Xclipse 940 GPU), 8 GB RAM (MemTotal 7.05 GiB), Android API 37.
  • Context window: 2048 in both builds. That is the export's max_context_len; the app does not raise it.
Works Killed
API react-native-executorch/legacy LLM new multimodal LLM API
Model file [email protected]/e2b/vulkan/gemma_4_e2b_vulkan_8da4w.pte (4.37 GB) [email protected]/e2b/vulkan/gemma_4_e2b_vulkan_8da4w.pte (3.81 GB)
Result Loads and answers. Memory after load: GL mtrack 3.07 GiB, TOTAL PSS 4.8 GiB (of which 1.7 GiB swapped), MemAvailable 0.65 GiB lmkd reclaims the app about 15 s after the first message, during load

Steps to reproduce

  1. On an 8 GB Android phone (we used the S24 above), download gemma-4-E2B-it-ExecuTorch v0.11.0 e2b/vulkan/gemma_4_e2b_vulkan_8da4w.pte with its tokenizer.
  2. Load it with the multimodal LLM API from 0.11.0 and send a short text prompt (we sent "And of Germany?" in an existing chat).
  3. The process is killed during load. No JS or native error is logged before the kill.

Log

13:01:46.126 I/PMTEST: gemma-vl-new-build-start
13:01:57.149 I/GSC (23633): SID[119] ...            <- Vulkan shader compilation in the app process
13:02:01.396 D/io_stats: Read_top(KB): privatemind.ver(23633) 1217384
13:02:01.472 I/lmkd (602): Reclaim 'com.swmansion.privatemind.ver' (23633), uid 10481, oom_score_adj 0, state 2(8)
             to free 308kB rss, 0kB anon rss, 248220kB swap, 13525kB dmabuf_pss, 40576kB dmabuf_rss;
             reason: min2x watermark is breached even after kill; level: 3

Before reclaiming the app, lmkd killed dozens of background processes in the preceding seconds, so memory runs out during load, not during generation.

What we did not isolate

Two things changed between the working and the failing run: the runner (legacy vs. new multimodal API) and the export (v0.9.0 vs. v0.11.0). We have not yet run the v0.9.0 file through the new API, or the v0.11.0 file through the legacy runner, in a clean app. Two questions:

  • Does the Vulkan path in the new runner hold more at load, for example keeping the mmapped weights and a GPU copy at the same time?
  • Is there a load option that lowers the peak?

The XNNPACK export works as a workaround, running on the CPU instead of the GPU.

Lenguaje dominante
TypeScript
Estrellas
1.8k
Forks
101
Merge medio
2 d 4 h
PR fusionados (30 d)
58

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de software-mansion/react-native-executorch

Todos los issues de software-mansion/react-native-executorch

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.