google / google/gemma.cpp

Page-size check prevents mmap for blob-aligned checkpoints

Offen Anfängerfreundlich
#1,031 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
7k
Forks
660
Ø Merge
20 Std. 43 Min.
Gemergte PRs (30 T.)
33

Beschreibung

## Problem

`ChooseMode` disables mmap when the checkpoint size is not divisible by the system page size, even if the file is padded to the blob format's 256-byte alignment.

For example, the 4B checkpoint is 5,401,208,832 bytes: divisible by 256, but with a 2,048-byte remainder on a 4,096-byte page system. It therefore falls back to copying the weights into allocated memory instead of using file-backed mappings.

## Proposed fix

Relax the file-length alignment requirement from the base page size to `kBlobAlign` (256 bytes).

The OS accepts partial-page mappings, but inference kernels can read multiple vectors ahead. Retain the blob-alignment guard and fall back to ordinary reads for lengths that do not meet it. Arbitrary-length mmap support would require separate handling of those reads.

Covered by #1032.

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne bei ChooseMode und untersuche die Prüfung der Checkpoint-Länge, die sie mit der Systemseitengröße vergleicht, und verfolge anschließend die mmap- und Ordinary-Read-Fallback-Pfade. Erledigt ist die Aufgabe, wenn blob-ausgerichtete Längen wie der 4B-Checkpoint dateigestützte Mappings verwenden können, während Längen, die nicht durch kBlobAlign teilbar sind, weiterhin gewöhnliche Lesevorgänge verwenden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
machine-learning, performance
Issue-Typ
Bug
Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Aktivitätsstatus
Aktiv
Klarheit
Klar beschrieben
Anfängerfreundlichkeit
75/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.