機械学習をマスターするための 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 |
GPT-4 はすでに人間がチップを作るのに役立っています!ニューヨーク大学タンドン工学部の研究者た...
海外メディアのTech Xploreによると、百度の研究ロボット工学・自動運転研究所(RAL)とメリ...
2020年という「長い」年が、あっという間に終わりを迎えようとしています。この時期を振り返ると、長い...
生成型 AI の台頭は、インターネットの誕生と同様の影響を及ぼしています。新しいテクノロジーが私たち...
ビデオセグメンテーションタスクは、画像セグメンテーションタスクの拡張版です。ビデオ内のすべてのターゲ...
Mengniu、Jiaoxia、Qingfeng、Oshiman、Wufangzhai、Santon...
[[188839]]ビッグデータの概念が普及するにつれ、ビールとおむつの話は広く知られるようになり...
現代のディープラーニングおよび人工知能技術の開発には、ディープニューラルネットワーク (DNN) を...
自動化の統合は、進化する製造業界において決定的な力となり、従来のパラダイムを再構築し、前例のない進歩...
[51CTO.com クイック翻訳]テクノロジーの進歩と発展により、バーチャル試着室が人々の生活に入...
12月2日、国家工業情報セキュリティ発展研究センターは「中国人工知能特許技術分析報告書」を発表し、百...