機械学習をマスターするための 100 日 | 1 日目から 62 日目までのコレクション みなさんこんにちは。私はラオ・フーです。 「100日で機械学習」シリーズも久しぶりの更新です。最近は、機械学習モデルのデプロイやディープラーニングフレームワークの開発に使える、gRPC を使ったオープンソースフレームワークを取り上げています。この記事は「100日で機械学習」の続編です。一緒に gRPC を探索してみましょう。 gRPC(リモートプロシージャコール) gRPC は Google によって開発された、言語やプラットフォームに依存しないオープンソースの RPC フレームワークです。 たとえば、サーバー A とサーバー B の 2 つのサーバーがあります。サーバー A にはアプリケーションがデプロイされています。サーバー B のアプリケーションが提供する関数/メソッドを呼び出したい場合、それらは同じメモリ空間にないため、直接呼び出すことはできません。ネットワークを使用して呼び出しのセマンティクスを表現し、呼び出しデータを伝達する必要があります。 RPC はアイデアやメカニズムのようなもので、実装方法はたくさんあります。gRPC 以外にも、Alibaba の Dubbo、Facebook の Thrift、Twitter の Finagle などがあります。 gRPC は、サービスを定義し、リモートで呼び出すことができるメソッド (パラメーターと戻り値の型を含む) を指定するという概念に基づいています。このインターフェースをサーバー側に実装し、gRPC サーバーを実行してクライアント呼び出しを処理します。クライアント側にスタブがあると、サーバー側の同じメソッドのように動作できます。 C++ で gRPC サーバーを作成し、Go、Python、Ruby でクライアントを簡単に作成できます。 上図の Protocbuf は gRPC のデータシリアル化ツールです。Protobuf を使用してデータをバイナリ データ ストリームにシリアル化することで、異なる言語 (proto3 は C++、Java、Python、Go、Ruby、Objective-C、C# をサポート) で記述され、異なるプラットフォームで実行されるアプリケーション間でデータを交換できるようになります。 ps: Protocbuf も Google によってオープンソース化されています。 Protocol Buffer は、proto ファイルをコンパイルして言語関連のコード ファイルを生成するコンパイル ツールを公式に提供しており、コーディングの作業負荷を大幅に軽減できます。シリアル化プロトコルの場合、ユーザーはビジネス オブジェクト自体、つまり IDL 定義にのみ焦点を当てる必要があり、シリアル化およびデシリアル化コードはツールによって生成されるだけで済みます。 ProtoBuf プロトコルのワークフローの詳細な説明 gRPC の例 - 機械学習モデルの展開 インスタンスを起動する前に、gRPCと関連ツールをインストールする必要があります。 pip インストール -U grpcio
アイリス データセットを例に挙げてみましょう。ランダム フォレスト分類器を gRPC サーバーにデプロイし、クライアントはアイリスの種類を予測するリクエストを送信します。 0. ランダム フォレスト分類モデルをトレーニングし、トレーニング済みのモデルを pkl ファイルとして保存します。 # トレーニングモデル.py main() を定義します: ファイル名_p = 'IrisClassifier.pkl' __name__ == "__main__" の場合: 新しいiris_demo.protoファイルを作成する 構文 = "proto3"; パッケージアイリス; メッセージ IrisPredictRequest // パラメータ 1 を定義する メッセージ IrisPredictResponse{//パラメータ 1 を定義する サービスIrisPredictor{// サービスの定義 proto ファイル形式は通常、次の 3 つの部分で構成されます。
2. gRPC protobuf を使用して Python ライブラリ関数を生成します python -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. ./iris_demo.proto -Iはソースファイルへのパスを指定します --python_out で、xxx_pb2.py の出力パスを指定します。他の言語を使用する場合は、対応する言語のオプションを使用してください。 --grpc_python_out はxxx_pb2_grpc.pyファイルの出力パスを指定します --*.proto はコンパイルされる proto ファイルです。 実行が正常に完了すると、iris_demo_pb2.py (メッセージシリアル化クラスを含む) と iris_demo_pb2_grpc.py (サーバー Stub クラスとクライアント Stub クラス、および実装されるサービス RPC インターフェイスを含む) が自動的に生成されます。これら 2 つの py ファイルの詳細を気にする必要はなく、サーバーとクライアントでそれらを呼び出す方法を知るだけで済みます。 この例では、次の方法を使用します。 _pb2_grpc.py は、 3. サーバーを書く ここでの重要なポイントは、IrisPredictor クラスの predict_iris_species メソッドを定義し、iris_demo_pb2_grpc.py の add_IrisPredictorServicer_to_server メソッドを使用して IrisPredictor をサーバーに追加することです。 serve 関数は、4 つのワーカーのスレッド プールを使用して gRPC の実行方法を定義します。 # iris_prediction_server.py クラス IrisPredictor(iris_demo_pb2_grpc.IrisPredictorServicer): @クラスメソッド def predict_iris_species(自己、リクエスト、コンテキスト): def run(): __name__ == '__main__' の場合: 4. クライアントに手紙を書く クライアント ロジックはよりシンプルになり、gRPC サービスに接続してから呼び出しを開始します。 # iris_prediction_client.py def run(): __name__ == '__main__' の場合: 5. RPCを呼び出す まずサーバーを起動する $ python iris_prediction_server.py 別のターミナルでクライアント コードを実行し、gRPC サービスを呼び出します。予測結果は次のとおりです。 $ python iris_prediction_client.py |
ImageNet の精度は常にモデルのパフォーマンスを評価するための主要な指標であり、ディープラーニ...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...
AIは人間の感情を認識できるでしょうか?原理的には、AIは音声認識、視覚認識、テキスト認識、表情認識...
フィナンシャル・タイムズによると、8月8日、ソーシャルメディア大手のMeta(旧Facebook)は...
最近南京で開催された2020年世界知能製造会議において、中国工程院の研究者らは、人類の発展の観点から...
最近の急速な技術発展により、真のスマートシティの時代が近づいてきました。人工知能、クラウドおよびエッ...
8月8日、IT Homeは中国サイバースペース事務局から、顔認識技術の応用を標準化するため、「中華人...
4月15日、2021年上海モーターショー前夜、ファーウェイは自動運転システムADSのプロモーション...
[51CTO.com クイック翻訳] 人工知能の発展に伴い、人々の日常生活に密接に関係する多くの分野...
代償なくして勝利はない。しかし、私たちはしばしばこのことを忘れ、即座の勝利を要求します。これは、世界...