機械学習をマスターするための 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 |
機械学習と人工知能は、特にマーケティング分析とサイバーセキュリティの分野で多くの分野で広く応用されて...
背景モノのインターネット (IoT) の継続的な発展は、ここ数年にわたって現実のものとなってきました...
コロナウイルスのパンデミック以前、AI業界は2020年に大きな成長を遂げると予想されていました。 2...
10月31日、テクノロジー系ポッドキャスト「Dwarkesh Patel」によると、Googleの...
現在、人工知能や5Gなどの技術の助けを借りて、我が国のドローン開発は急速な成長の軌道に乗っています。...
2019年国際産業インターネット革新・開発フォーラムがこのほど、第2回中国国際輸入博覧会で開催され...
「携帯電話1台で世界中を旅する」というのは、ほぼすべての人の現状です。アクセスカード、バスカード、鍵...
Googleで最初に出てくるのは、スタンフォード大学の元学長ゲルハルト・カスパーの名前です。 199...
1分で新しいGPTが誕生!わずか1週間で、さまざまなカスタマイズされたGPTが世界中で爆発的に増加し...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
[[357174]] AI の旅が始まって以来、私は無限の可能性を秘め、輝かしい歴史に足跡を残してき...
この記事は、公開アカウント「Reading the Core」(ID: AI_Discovery)か...