わずか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 入札および評価ビデオインテリジェントアーカイブシステム

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

ブログ    
ブログ    
ブログ    

推薦する

Kerasで最もよく使われるディープラーニングAPI

[[208000]]ご存知のとおり、Keras-Python ライブラリを使用すると、独自のディー...

人工知能の時代に優れた教師とはどのような人物であるべきでしょうか?

つい先日の教師の日、ジャック・マー氏は引退を発表し、正式にアリババの会長を辞任した。引退後、ジャック...

アルゴリズム | 再帰の深い理解、あなたは再帰を誤解しています

再帰は、プログラミングの本で説明するのが最も難しい部分である魔法のアルゴリズムです。これらの本では通...

データ詐欺師はどこにでもいる。いわゆる「万能薬」を暴く方法

この記事は公開アカウント「Reading Core Technique」(ID: AI_Discov...

人工知能の簡単な歴史 | (2)相農は人工知能の誕生を目撃した

1956年、人工知能元年。その夏、米国ニューハンプシャー州ハノーバーの小さな町にある美しいアイビーリ...

ビッグデータと人工知能 - 機械的思考から統計的思考へ

[[384196]]今日は、ビッグデータ、人工知能、認知問題の解決の関係ロジックについて話す記事を書...

Wikipedia+巨大模型で幻想を破れ!スタンフォードWikiChatはGPT-4を上回り、精度は97.3%

大規模言語モデルの幻覚問題が解決されました!最近、スタンフォード大学の研究者が、幻覚をほとんど起こさ...

人工知能がボトルネックに到達しました!学者らが「共同で」ディープラーニングに反対し、AIの今後の発展方向を指摘

ディープラーニングにおける現在の技術的なボトルネックに対応して、清華大学の張北氏を含む多くの学者や教...

...

...

...

5Gについて知っておくべきことは何ですか?

1G の時代では、電話をかけたり受けたりすることしかできませんでした。 2G 時代は、電話をかけた...

ロボット工学が建設業界の新時代を告げる

建設業界は現在、デジタル革新が業界の方向性をますます推進する中で、大きな変革期を迎えています。ロボッ...

概念から事例まで: 初心者向けの機械学習アルゴリズムトップ 10

この記事では、まず初心者が知っておくべき機械学習 (ML) アルゴリズムのトップ 10 を紹介し、い...

兵馬俑は「Subject Three」を演奏したが、これは予想外のことだった

ご家族の皆さん、世界中で人気の魔法のダンス「Subject Three」、まさか兵馬俑も踊り始めると...