あなたのAIモデルは、可能なデータソース限り近くてみよう

出典:Redislabs
著者:ピーター・カイヨウ、LucaAntigaの
翻訳:ケビン

簡単な紹介

今日はRedisAI、事前に統合された[テンソル] WERKコンポーネントのプレビュー版をリリースしました。RedisAIは、サービステンソルの作業で、深さの学習モジュールRedisのタスクを実行することができます。このブログでは、我々はこの新しいモジュールの機能を紹介し、我々はそれが(ML)を機械学習を覆すだろうと考えている理由を説明します、ラーニングソリューション(DL)の深さがあります。
プロデュースRedisAI二つの理由です:まず、ホストにデータを移行コストの高さは、AIのモデルを実行し、リアルタイムに大きな影響を経験し、第二に、サービングAIモデルは常にDevOpsチームの分野で課題となっています。RedisAIを構築する私たちの目的は、ユーザがRedisのマルチノード状況のデータだけでなく、良いサービス、更新を移動し、独自のモデルを統合することができないようにすることです。

 

場所データが重要です

image.png

深い位置データモデルの重要性を学び、機械学習の動作を実証するために、我々はロボットチャットの例を与えます。チャットボット通常リカレントニューラルネットワークモデル(RNN)、1(seq2seq)ユーザQ&シーンに対応します。より高度なモデルは、会話のコンテキストを保存するようにして二つの入力ベクトルと2つの出力ベクトル、及びデジタル中間状態ベクトルを使用します。このモデルは、ユーザの入力としての最後のメッセージを使用しています状態履歴の代表者間の対話、その出力は、ユーザメッセージと新しい中間状態への応答です。

image.png

インタラクティブなユーザ定義をサポートするために、この中間状態はデータベースに保存されなければならないので、Redisの+ RedisAIは非常に良いオプションです、比較を行うために、伝統的なプログラムとRedisAIプログラムが存在します。

 

1 、伝統的なプログラム

使用 Flask 应用或其它方案,集成 Spark 来构建一个聊天机器人。当收到用户对话消息时,服务端需要从 Redis 中获取到中间的状态。因为在 Redis 中没有原生的数据类型可用于 tensor,因此需要先进行反序列化,并且在运行递归神经网络模型(RNN)之后,保证实时的中间状态可以再序列化后保存到 Redis 中。

image.png

 

 考虑到 RNN 的时间复杂度,数据序列化/反序列化上 CPU 的开销和巨大的网络开销,我们需要一个更优的解决方案来保证用户体验。

 

2、RedisAI 方案
在 RedisAI 中,我们提供了一种叫 Tensor 的数据类型,只需使用一系列简单的命令,即可在主流的客户端中对 Tensor向量进行操作。同时,我们还为模型的运行时特性提供了另外两种数据类型:Models 和 Scripts。

image.png

 

 Models 命令与运行的设备(CPU 或 GPU)和后端自定义的参数有关。RedisAI 内置了主流的机器学习框架,如 TensorFlow、Pytorch 等,并很快能够支持 ONNX Runtime 框架,同时增加了对传统机器学习模型的支持。然而,很棒的是,执行 Model 的命令对其后端是不感知的:

AI.MODELRUN model_key INPUTS input_key1 …  OUTPUTS output_key1 ..

这允许用户将后端选择(通常由数据专家来决定)和应用服务解耦合开来,置换模型只需要设置一个新的键值即可,非常简单。RedisAI 管理所有在模型处理队列中的请求,并在单独的线程中执行,这样保障了 Redis依然可以响应其它正常的请求。Scripts 命令可以在 CPU 或GPU 上执行,并允许用户使用 TorchScript 来操作Tensors 向量,TorchScript 是一个可操作 Tensors 向量的类 Python 自定义语言。这可以帮助用户在执行模型前对数据进行预处理,也可以用在对结果进行后处理的场景中,例如通过集成不同的模型来提高性能。

image.png

RedisAI 的数据类型和后端概览

我们计划未来通过 DAG 命令支持批量执行命令,这会允许用户在一个原子性操作中批量执行多个 RedisAI 命令。例如在不同的设备上运行一个模型的不同实例,通过脚本对执行结果做平均预测。使用 DAG 命令,就可并行地进行计算,再执行聚合操作。如果需要全量且更深的特性列表,可以访问 redisai.io。新的架构可以简化为:
image.png

 

 

模型服务可以更简单

本番環境では、コードを書くと、アプリケーションがフラスコ内の最適な解決策ではない展開にJupyterのノートPCを使用しています。ユーザー自身のリソースを決定する方法、それを最高のでしょうか?ユーザホストがダウンしている場合は、ボットの中間状態は何をどうなりますか?ユーザー作成のホイールは、問題を解決するために、既存のRedisの機能を実現するために繰り返してもよいです。また、併用レジメンの複雑さのためには、多くの場合、予想以上に、頑固に非常に困難になり、元のソリューションに準拠しています。RedisのエンタープライズクラスのデータストレージソリューションによってRedisAI、統合のRedisとAIモデルの良い深さを達成するために、そのような深い学習ニーズなどのデータ型テンソル、モデルとスクリプトをサポートしています。ユーザーが、本番環境でのように多くのモデルを追加することにより、インフラストラクチャのコストと総コストを削減することができますので、単純にRedisのクラスタ拡張できるため、モデルの計算能力を拡張する必要がある場合。最後に、うまく既存の生態のRedisに適応RedisAIは、ユーザーが事前とするユーザデータの後処理、データ構造はRedisGearは、右の変換を行うに使用できるスクリプトを実行することができ、日付RedisGraph状態までのデータを保持するために使用することができます。 

 

結論とフォローアップ計画

1は、短期的には、我々は場合にRedisAIを使用するには、3つの主要なバックエンド(Tensorflow、PytorchとONNXランタイム)をサポートし、できるだけ早く安定し、定常状態に達します。
2は、我々はこれらを動的にバックエンドをロードすることができることを願って、ユーザーがロードされた指定されたバックエンドをカスタマイズすることができます。例えば、これは、ユーザーがTensorflow Liteの治療例でエッジを使用することができるようになります。図3は、自動的に達成同じモデルで異なるキューをマージすることができ、自動スケジューリング機能を実現する予定です。4、モデルのパフォーマンスを測定するために使用されますRedisAI統計モデルを実行します。

DAG特性を完了するために5は、上記で説明しました。

 

より高品質なITのミドルウェア技術/記事/データ/乾燥品のオリジナル/翻訳、に注意を払ってください「ミドルウェア弟」公共の数!

おすすめ

転載: blog.51cto.com/13739602/2439833