tensorflow / tensorflow/java

Unintuitive out of memory errors, and odd OOMs

Offen
#186 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Vorherrschende Sprache
Java
Sterne
928
Forks
227
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

I'm experimenting with TensorScope, and thus using large amounts of memory for tensors. However, when I try this, I get odd oom-related errors.

Example (kotlin):

repeat(1000) {
    TFloat32.tensorOf(Shape.of(10000, 10000))
}

gives

2021-01-11 20:36:45.599992: W external/org_tensorflow/tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 400000000 exceeds 10% of free system memory.
2021-01-11 20:36:45.625897: W external/org_tensorflow/tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 400000000 exceeds 10% of free system memory.
2021-01-11 20:36:45.626092: W external/org_tensorflow/tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 400000000 exceeds 10% of free system memory.
2021-01-11 20:36:45.626180: W external/org_tensorflow/tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 400000000 exceeds 10% of free system memory.
2021-01-11 20:36:45.626262: W external/org_tensorflow/tensorflow/core/framework/cpu_allocator_impl.cc:81] Allocation of 400000000 exceeds 10% of free system memory.
Exception in thread "main" java.lang.NullPointerException
	at org.tensorflow.internal.buffer.TensorBuffers.tensorMemory(TensorBuffers.java:180)
	at org.tensorflow.internal.buffer.TensorBuffers.toFloats(TensorBuffers.java:102)
	at org.tensorflow.internal.types.TFloat32Mapper.mapDense(TFloat32Mapper.java:34)
	at org.tensorflow.internal.types.TFloat32Mapper.mapDense(TFloat32Mapper.java:30)
	at org.tensorflow.RawTensor.asTypedTensor(RawTensor.java:215)
	at org.tensorflow.Tensor.of(Tensor.java:90)
	at org.tensorflow.Tensor.of(Tensor.java:63)
	at org.tensorflow.types.TFloat32.tensorOf(TFloat32.java:79)
	at tester.TensorScopeKt.main(TensorScope.kt:8)
	at tester.TensorScopeKt.main(TensorScope.kt)

I'd think this is a fairly straight forward OOM, just without nice error messages, but the used memory in Task Manager (I'm on Windows) barely moves. I do start using heap memory, but it caps 100MB, even with -Xmx6g. Is there some limit on tensor allocations I'm not aware of?

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne damit, das Kotlin-Beispiel über TFloat32.tensorOf zu reproduzieren und den gemeldeten Fehler unter org/tensorflow/internal/buffer/TensorBuffers.java:180 nachzuverfolgen. Vergleiche die Warnungen zur nativen Speicherzuweisung mit der Ausnahme auf Java-Seite und definiere „fertig“ als die Meldung von Fehlern bei der Speicherzuweisung mit einem genauen, umsetzbaren Fehler anstelle der beobachteten NullPointerException.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java, kotlin
Bereich
machine-learning
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

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