Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Wie kann ich Ungleichheitsvergleiche zur Zusammenstellung der Zeit in JAX verzögern?


Wie kann ich Ungleichheitsvergleiche zur Zusammenstellung der Zeit in JAX verzögern?


Um Ungleichheitsvergleiche zur Zusammenstellung der Zeit in JAX zu verzögern, können Sie bestimmte Strategien verwenden, bei denen Ihr Code neu geschrieben wird, um die symbolischen Operationen von JAX zu verwenden. Hier sind einige Methoden, um dies zu erreichen:

1. Verwenden Sie `core.max_dim` und` core.min_dim`: Anstatt integrierte `max` oder` min`-Funktionen oder `np.max` und` np.min`, können Sie sie durch `core ersetzen .max_dim` und `core.min_dim`. Diese Funktionen verzögern den Ungleichheitsvergleich, bis die Kompilierungszeit, wenn Formen bekannt werden. Anstelle von `D if d> 0 sonst 0` können Sie` core.max_dim (d, 0) `schreiben.

2. Schreiben Sie Conditionalals: Versuchen Sie, Bedingungen mit `core.max_dim` und` core.min_dim` neu zu schreiben. Dieser Ansatz hilft bei der Verzögerung der Bewertung von Ungleichheiten, bis die Formen zur Kompilierungszeit ermittelt werden.

3.. Vermeiden Sie ganzzahlige Abhängigkeiten: Verlassen Sie sich auf die Tatsache, dass symbolische Dimensionen für die meisten arithmetischen Operationen als Ganzzahlen behandelt werden können. Schreiben Sie anstelle von `int (d) + 5`` D + 5`. Dies verringert die Abhängigkeit von ganzzahligen Dimensionen und ermöglicht eine flexiblere Zusammenstellung.

4. Geben Sie symbolische Einschränkungen an. Dies kann dazu beitragen, den Code zu optimieren, indem Vergleiche bis zum Bedarf verzögert werden.

Durch die Anwendung dieser Strategien können Sie die Vergleiche der Ungleichheit effektiv verzögern, um die Zeit in JAX zusammenzustellen, was die Effizienz und Flexibilität Ihres Codes verbessern kann.

Zitate:
[1] https://inria.hal.science/hal-03431315v2/document
[2] https://docs.jax.dev/en/latest/jit-compilation.html
[3] https://github.com/jax-ml/jax/blob/main/changelog.md
[4] https://docs.jax.dev/en/latest/faq.html
[5] https://arxiv.org/abs/1204.1069
[6] https://github.com/google/jax/blob/main/jax/experimental/jax2tf/readme.md
[7] https://arxiv.org/abs/1602.05281
[8] https://stackoverflow.com/questions/69070804/how-to-reduce-jax-compile-time-when-using-for-loop