わずか1行のコードでモデルを数秒でAPIに変換でき、TensorFlowなどのフレームワークをサポートしています。

わずか1行のコードでモデルを数秒でAPIに変換でき、TensorFlowなどのフレームワークをサポートしています。

[[283641]]

機械学習モデルを API にパッケージ化することにまだ不安がありますか?このツールを使用すると、1 行のコードで直接パッケージ化できます。

機械学習アプリケーションに焦点を当てる人々は、トレーニングされたモデルから実際の工業生産ツールに至るまでにはまだ長い道のりがあることを知っています。作業の大部分は、モデルのパッケージ化、API インターフェースの予約、既存の運用システムとの統合です。最近、GitHub には、ユーザーが 1 行のコードで任意のモデルを API としてパッケージ化できるプロジェクトがあります。このツールは、開発者が実際の運用アプリケーションにモデルを迅速に展開するのに間違いなく役立ちます。

プロジェクトアドレス: https://github.com/cortexlabs/cortex

プロジェクトの特徴と原則

このプロジェクトは Cortex と呼ばれ、コマンドライン ツールです。著者らは、このプロジェクトには次のような利点があると述べています。

  • 自動定義: Cortex は、本番作業に必要な API を自動的に定義できます。
  • マルチフレームワークのサポート: Cortex は、TensorFlow、PyTorch、scikit-learn、XGBoost など、複数の機械学習フレームワークをサポートしています。
  • CPU/GPU サポート: Cortex は CPU または GPU 上で推論作業を実行できます。
  • ロールバック更新: Cortex はデプロイされた API を直接更新できます。
  • ログ ストリーム: Cortex はデプロイされたモデルのログ ストリームを保持し、CLI に表示します。
  • 予測監視: Cortex はネットワークの評価指標を監視し、予測結果を追跡できます。
  • 最小限の構成: デプロイ時に、ユーザーは cortex.yaml というファイル内の関連するプロパティを構成するだけで済みます。

このプロジェクトはどのように機能しますか?具体的には、ユーザーが cortex deploy を実行するたびに、コマンド ラインは構成プロパティとコードをサーバー クラスターに送信します。各モデルは、関連する Python パッケージとリクエストを処理するためのコードを含めて、Docker コンテナにロードされます。このモデルは、Elastic Load Balancing (ELB)、Flask、TensorFlow Serving、ONNX Runtime などのネットワーク サービスを通じてユーザーに API を公開します。コンテナは Elastic Kubernetes Service (EKS) によって制御され、ログファイルと評価メトリックのログ記録と印刷は CloudWatch によって行われます。

使い方

使用プロセスは主に次の 3 つのステップに分かれます。

モデルAPIの定義

  1. # 予測子.py
  2. model = download_my_model() def predict(sample, metadata): return model.predict(sample[ "text" ])

上記のように、ユーザーが行う必要があるのは、入力データに基づいて出力を返すことができるように、この API を表す関数を定義することだけです。

デプロイメントの構成

  1. $ curl http: //***.amazonaws.com/sentiment/classifier \-X POST -H "Content-Type: application/json" \-d '{"text": "映画は素晴らしかったです!"}'
  2. ポジティブ

2 番目のステップでは、ユーザーは関連するプロパティを構成するために使用される新しい yaml ファイルを作成する必要があります。

具体的には、ユーザーはデプロイされたモデルの名前を定義できます。この場合は、classifierpredictor という名前です。次に、classifierpredictor などの API の名前、パス、モデルの種類、使用する GPU の数を定義する必要があります。

AWS デプロイメント

  1. $ コルテックスデプロイ
  2. 分類子の作成 (http: //***.amazonaws.com/sentiment/classifier)

AWS を例にとると、上記の作業を完了した後、ユーザーはこの API を作成して AWS で作業できるようになります。

もちろん、ユーザーは以下に示すように推論結果をリアルタイムで保存することもできます。

  1. $ curl http: //***.amazonaws.com/sentiment/classifier \-X POST -H "Content-Type: application/json" \-d '{"text": "映画は素晴らしかったです!"}'
  2. ポジティブ

さらに、ユーザーは実行結果を監視できます。

  1. $ cortex 分類器を取得 --watch
  2. ステータス 最新 利用可能 リクエスト 最終更新 平均遅延 ライブ1 1 1 8秒 123ミリ秒
  3. クラス数 正 8 負4

チュートリアル

ユーザーがこのツールをより効果的に使用できるように、プロジェクト作成者はいくつかのユースケースも提供しています。含む:

  • TensorFlow と BERT に基づく感情分析: https://github.com/cortexlabs/cortex/tree/0.10/examples/tensorflow/sentiment-analysis
  • TensorFlow と Inception モデルに基づく画像分類: https://github.com/cortexlabs/cortex/tree/0.10/examples/tensorflow/image-classifier
  • PyTorch と DistilGPT2 に基づくテキスト生成: https://github.com/cortexlabs/cortex/tree/0.10/examples/pytorch/text-generator
  • XGBoost / ONNX に基づく虹彩分類: https://github.com/cortexlabs/cortex/tree/0.10/examples/xgboost/iris-classifier

BERT を使用した感情分析を例に挙げます。

まず、ユーザーはモデル上で API インターフェース関数を定義して、関数を通じてデータを入力し、モデルの推論結果を返すことができるようにする必要があります。この py ファイルは handler.py として定義されています。

  1. # ハンドラ.py
  2. tensorflow を tfi としてインポートtensorflow_hub を hubfrom bert としてインポートtokenization、run_classifier
  3. ラベル = [ "ネガティブ" , "ポジティブ" ]
  4. tf.Graph().as_default() の場合: bert_module = hub.Module( "https://tfhub.dev/google/bert_uncased_L-12_H-768_A-12/1" ) info = bert_module(signature= "tokenization_info" , as_dict=True)tf.Session() を sess として使用: vocab_file, do_lower_case = sess.run([info[ "vocab_file" ], info[ "do_lower_case" ]]) tokenizer = tokenization.FullTokenizer(vocab_file=vocab_file, do_lower_case=do_lower_case)
  5. def pre_inference(サンプル、署名、メタデータ): input_example = run_classifier.InputExample(guid= "" 、text_a=sample[ "review" ]、label= 0 ) input_feature = run_classifier.convert_single_example( 0 、input_example、[ 01 ]、 128 、tokenizer) return { "input_ids" : [input_feature.input_ids]}
  6. def post_inference(予測、署名、メタデータ): ラベル[予測[ "ラベル" ][ 0 ]]を返します

次に、ユーザーは構成 yaml ファイルを定義し、ファイル内に関連するプロパティを指定する必要があります。ファイル名は cortex.yaml として定義する必要があることに注意してください。

  1. # コルテックス
  2. - 種類: デプロイメント 名前: 感情
  3. - 種類: API 名前: 分類子 tensorflow: モデル: s3: //cortex-examples/tensorflow/sentiment-analysis/bert リクエスト ハンドラー: handler.py トラッカー: モデル タイプ: 分類

ご覧のとおり、yaml ファイルでは、使用するモデルと、API インターフェースとして機能する py ファイル (つまり、最初の手順で定義された py ファイル) を指定する必要があります。

次にそれを展開します。

  1. $ コルテックスデプロイ
  2. 展開開始

監視情報を取得する必要がある場合は、cortex get コマンドを入力する必要があります。

  1. $ cortex 分類器を取得 --watch
  2. ステータス 最新 利用可能 リクエスト 最終更新 平均待ち時間 ライブ1 1 1 8秒

コマンドラインからリアルタイムの予測を取得することもできます。

  1. $ cortex 分類器を取得
  2. URL: http: //***.amazonaws.com/sentiment/classifier
  3. $ curl http: //***.amazonaws.com/sentiment/classifier \ -X POST -H "Content-Type: application/json" \ -d '{"review": "映画は素晴らしかった!"}'"positive

<<:  問題点を突き止める - Weiang 入札および評価ビデオインテリジェントアーカイブシステム

>>:  顔認識アクセス制御システムの登場により、私たちのプライバシーを誰が守るのでしょうか?

ブログ    
ブログ    
ブログ    

推薦する

...

データが増えるほど、AIの意思決定モデルは脆弱になる

データは、人工知能システムを構築するために必要な重要なインフラストラクチャです。データは、AI シス...

...

清華大学などは、シンボリックメモリと組み合わせて、大規模モデルの複雑な推論能力を向上させるChatDBを提案した。

ChatGPT、GPT-4、PaLM、LLaMAなどの大規模言語モデルの普及に伴い、大規模言語モデ...

...

機械学習の問題を解決する一般的な方法があります!これを読んでください

平均的なデータ サイエンティストは毎日大量のデータを処理します。データのクリーニング、処理、機械学習...

CMU ロボット犬が逆さまに階段を降りる!オープンソースとしてリリース

正直に言うと、私はロボット犬の技をたくさん見てきました -しかし、私は今日も驚きました。 CMU の...

...

人工知能オンライン機能システムのデータアクセス技術

1. オンライン機能システム主流のインターネット製品では、古典的な計算広告、検索、推奨から、垂直分野...

...

...

ゼロコード機械学習の秘密

この段階では、人工知能の応用シナリオが増加し、市場規模が拡大しており、機械学習の価値がますます顕著に...

今後 10 年間で最も「収益性の高い」 5 つの業界。誰がやっても儲かるでしょう。

VRバーチャルリアリティは未来のトレンドであり、大きな発展の見込みがあります。現在、大手企業がこの...

...