При создании приложений выбор правильных инструментов имеет решающее значение. Вы хотите высокую производительность, легкую разработку и бесшовное кроссплатформенное развертывание. Популярные фреймворки предлагают компромиссы:
]Но вот улов: большинству структур не хватает надежного Native Machine Learning (ML) поддержка. Этот разрыв существует, потому что эти рамки предшествует бум ИИ. Вопрос:
]как мы можем эффективно интегрировать ML в приложения?
]общие решения, такие как Onnx Runtime , разрешают экспортировать модели ML для интеграции приложений, но они не оптимизированы для процессоров или достаточно гибки для обобщенных алгоритмов.
]enter jax , библиотека Python, которая:
В этой статье мы покажем вам, как:
]jax похоже на Numpy на стероидах. Разработанная Google, это низкоуровневая, высокопроизводительная библиотека, которая делает ML доступной, но мощной.
] вот пример сравнения Numpy и 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 в Google Colab раскрывает Edge Jax's Performance:
]Эта гибкость и скорость делают JAX идеальным для производственных сред, где производительность является ключевой.
]
]
JAX переводит код Python в спецификации HLO (оптимизатор высокого уровня). Это включает: ] ] написание алгоритмов в Python.
] импортировать jax.numpy как jnp
def fn (x, y, z):
вернуть jnp.dot (x, y) / z
]
import jax.numpy as jnp def fn(x, y, z): return jnp.dot(x, y) / zиз 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
]
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]
] 2. Создайте динамическую библиотеку C
]] ] добавить файл заголовка main.h:
]#ifndef MAIN_H #define MAIN_H extern "C" { int bar(int foo); } #endifbuild
cc_shared_library( name = "jax", deps = [":main"], visibility = ["//visibility:public"], )]
Bazel Build Примеры/JAX_CPP: JAX
]
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]
] 3. Подключите DART с C, используя FFI
]
]
import 'dart: ffi';
Import 'Package: dynamic_library/dynamic_library.dart';
typedef foocfunc = int32 функция (int32 bar);
typedef foodartfunc = int function (int bar);
класс jax {
Поздняя окончательная динамика Dylib;
Jax () {
dylib = LoadDynamicLibrary (LibraryName: 'JAX');
}
Функция get _bar => dylib.lookupfunction
]
cc_shared_library( name = "jax", deps = [":main"], visibility = ["//visibility:public"], )]
final jax = jax ();
Печать (JAX.BAR (42));
]
final jax = JAX(); print(jax.bar(42));]
] ? Следующие шаги
]оптимизируйте модели ML с JAX и XLA.
]]
алгоритмы поиска]
мы создаем передовую платформу ИИ с неограниченными токенами в чате и долговременной памятью, обеспечивая бесшовные, контекстные взаимодействия, которые развиваются со временем.это полностью бесплатно, и вы также можете попробовать его внутри своей текущей IDE.]
]]
]
]
]
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3