beim Erstellen von Anwendungen ist die Auswahl der richtigen Werkzeuge von entscheidender Bedeutung. Sie möchten hohe Leistung, einfache Entwicklung und nahtlose plattformübergreifende Bereitstellung. Beliebte Frameworks bieten Kompromisse:
Aber hier ist der Fang: Die meisten Frameworks fehlen robust natives maschinelles Lernen (ml) Unterstützung. Diese Lücke existiert, weil diese Frameworks vor dem KI -Boom gehen. Die Frage ist:
Wie können wir ML effizient in Anwendungen integrieren?
Gemeinsame Lösungen wie onnx runTime erlauben das Exportieren von ML -Modellen für die Anwendungsintegration, sie sind jedoch nicht für CPUs oder flexibel genug für generalisierte Algorithmen.
Enter jax , eine Python -Bibliothek, die:
In diesem Artikel zeigen wir Ihnen, wie zu:
jax ist wie numpy auf Steroiden. Von Google entwickelt, handelt es sich um eine low-Level-Hochleistungsbibliothek, die ML zugänglich macht und dennoch leistungsfähig ist.
Hier ist ein Beispiel zum Vergleich von Numpy und Jax:
# NumPy version import numpy as np def assign_numpy(): a = np.empty(1000000) a[:] = 1 return a # JAX version import jax.numpy as jnp import jax @jax.jit def assign_jax(): a = jnp.empty(1000000) return a.at[:].set(1)
Benchmarking in Google Colab enthüllt Jaxs Performance Edge:
Diese Flexibilität und Geschwindigkeit machen JAX ideal für Produktionsumgebungen, in denen die Leistung der Schlüssel ist.
jax übersetzt Python-Code in hlo (hochrangige Optimierer) Spezifikationen , die mit c xla bibliotheken kompiliert und ausgeführt werden können. Dies ermöglicht:
Schreiben Sie Ihre JAX -Funktion und exportieren Sie seine HLO -Darstellung. Zum Beispiel:
import jax.numpy as jnp def fn(x, y, z): return jnp.dot(x, y) / z
Um das HLO zu generieren, verwenden Sie das Skript jax_to_ir.py aus dem JAX -Repository:
python jax_to_ir.py \ --fn jax_example.prog.fn \ --input_shapes '[("x", "f32[2,2]"), ("y", "f32[2,2")]' \ --constants '{"z": 2.0}' \ --ir_format HLO \ --ir_human_dest /tmp/fn_hlo.txt \ --ir_dest /tmp/fn_hlo.pb
platzieren Sie die resultierenden Dateien (fn_hlo.txt und fn_hlo.pb) in das Verzeichnis der Assets Ihrer App.
klonen Sie das JAX -Repository und navigieren Sie zu JAX/Beispiele/jax_cpp .
#ifndef MAIN_H #define MAIN_H extern "C" { int bar(int foo); } #endif
cc_shared_library( name = "jax", deps = [":main"], visibility = ["//visibility:public"], )
kompilieren mit bazel:
bazel build examples/jax_cpp:jax
Sie finden die kompilierte libjax.dylib im Ausgabeverzeichnis.
Verwenden Sie Darts ffi paket , um mit der C -Bibliothek zu kommunizieren. Erstellen Sie eine jax.dart -Datei:
import 'dart:ffi'; import 'package:dynamic_library/dynamic_library.dart'; typedef FooCFunc = Int32 Function(Int32 bar); typedef FooDartFunc = int Function(int bar); class JAX { late final DynamicLibrary dylib; JAX() { dylib = loadDynamicLibrary(libraryName: 'jax'); } Function get _bar => dylib.lookupFunction('bar'); int bar(int foo) { return _bar(foo); } }
Fügen Sie die dynamische Bibliothek in Ihr Projektverzeichnis ein. Testen Sie es mit:
final jax = JAX(); print(jax.bar(42));
Sie sehen die Ausgabe aus der C -Bibliothek in Ihrer Konsole.
Mit diesem Setup können Sie:
potenzielle Anwendungsfälle gehören:
Jax überbrückt die Lücke zwischen pythonbasiertem Entwicklungs- und Produktionsebene, und lassen Sie sich ML-Ingenieure auf Algorithmen konzentrieren, ohne sich über C-Code mit niedrigem Niveau zu sorgen.
Wir erstellen eine hochmoderne KI-Plattform mit unbegrenzten Chat-Token und Langzeitgedächtnis, um nahtlose, kontextbewusste Interaktionen zu gewährleisten, die sich im Laufe der Zeit entwickeln.
Es ist völlig kostenlos und Sie können es auch in Ihrer aktuellen IDE versuchen.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3