GitHubじゃ!Pythonじゃ!

GitHubからPython関係の優良リポジトリを探したかったのじゃー、でも英語は出来ないから日本語で読むのじゃー、英語社会世知辛いのじゃー

dmlc

nnvm – ベアメタルに深く学ぶ

投稿日:

ベアメタルに深く学ぶ

NNVM:AIフレームワーク用オープンコンパイラ

インストール | ドキュメンテーション | チュートリアル | リリースノート

NNVMコンパイラは、深い学習システムのための再利用可能な計算グラフの最適化とコンパイルを提供します。 これはTVMスタックによってサポートされ、次のモジュールに提供されます。

  • フロントエンドフレームワークからの深い学習ワークロードをグラフIRで表します。
  • 計算グラフを最適化してパフォーマンスを向上させる。
  • 実行可能モジュールにコンパイルし、最小の依存性で異なるハードウェアバックエンドにデプロイします。

NNVMは、コアインタフェースを変更することなく、分散型の方法で新しいフロントエンド、演算子、およびグラフの最適化を追加するように設計されています。 コンパイルされたモジュールは、c ++、python、javascript、java、objective-cなどの言語で、サーバー、モバイル、組み込みデバイス、およびブラウザに依存性を最小限に抑えて展開できます。 リリースアナウンスをチェックアウト

次のコードスニペットは、nnvmコンパイラの一般的なワークフローを示しています。

import tvm
from tvm.contrib import graph_runtime, rpc
import nnvm.frontend
import nnvm.compiler

# GET model from frameworks
# change xyz to supported framework name.
graph, params = nnvm.frontend.from_xyz(...)

# OPTIMIZE and COMPILE the graph to get a deployable module
# target can be "opencl", "llvm", "metal" or any target supported by tvm
target = "cuda"
graph, lib, params = nnvm.compiler.build(graph, target, {"data", data_shape}, params=params)

# DEPLOY and run on gpu(0)
module = graph_runtime.create(graph, lib, tvm.gpu(0))
module.set_input(**params)
module.run(data=data_array)
output = tvm.nd.empty(out_shape, ctx=tvm.gpu(0))
module.get_output(0, output)

# DEPLOY to REMOTE mobile/rasp/browser with minimum tvm rpc runtime
# useful for quick experiments on mobile devices
remote = rpc.connect(remote_host, remote_port)
lib.export_library("mylib.so")
remote.upload("mylib.so")
rlib = rpc.load_module("mylib.so")
# run on remote device
rmodule = graph_runtime.create(graph, rlib, remote.gpu(0))
rmodule.set_input(**params)
rmodule.run()

ライセンス

Apache-2.0ライセンスでライセンスされています。

リンク

  • TinyFlowはNNVMを使ってTensorFlowのようなAPIを構築する方法を説明しています。
  • Apache MXNetはバックエンドとしてNNVMを使用します。







-dmlc
-, , , , , , , , ,

執筆者: