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

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

ブログ    

推薦する

二重あごをなくすコツがある。浙江大学の2000年代生まれの大学生が、ACM SIGGRAPHで発表した新しい美容アルゴリズムを開発

ソーシャルネットワーク、ライブ放送、ショートビデオの普及に伴い、他人により良い印象を与えるために、顔...

陳丹奇チームの新作:5%のコストでSOTAを達成、「アルパカの毛刈り」法が人気

わずか3% の計算労力と5% のコストで SOTA を達成し、1B-3B 規模の大規模オープンソース...

CMU、清華大学、MITが世界初のエージェント無限フローをリリース。ロボット「007」は残業して勉強が止まらない!具現化された知能は革命を起こしている

世界初の生成型ロボットエージェントがリリースされました!長い間、大規模なインターネットデータでトレー...

AIビッグモデルは今後も拡大し続けるのか?

人工知能は現在、ビジネスと金融のあらゆる側面に急速に導入されています。いくつかの刺激的な成功により、...

...

ChatGPTプロンプトワードの新しいゲームプレイ「もっと作る」、テキストと画像の効果を2倍にする

ChatGPT は誰もがよく知っていると思いますが、それをうまく使う方法は想像するほど簡単ではありま...

GPT-4が「愚か」になったと誰もが不満を言っていますが、これはアーキテクチャの再設計が原因かもしれません。

OpenAI が GPT-4 を最初にリリースしてから約 4 か月が経ちました。しかし、時間が経つ...

機械学習の次元削減手法で「次元の呪い」を打破する

この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...

銀行、金融、保険業界に革命をもたらす主要技術

不安定な市場環境、規制上のハードル、そしてBrexitは、好況時でも最も回復力のある企業にさえ課題を...

...

アリババクラウドは、70億のパラメータを持つTongyi Qianwen大規模モデルをオープンソース化し、無料で商用利用可能に

大規模モデルの開発動向はオープンソースへと移行し始めています。周知のとおり、ChatGPT、GPT-...

中秋節には月餅を食べます。今日はロボットがどのように月餅を作るかについてお話します。

最近、主要プラットフォームのホームページには、生地をこねる、餡を作る、型から外す、焼くまで、月餅を作...

...

2025年までに世界のAIヘルスケア市場は272億ドルに達する

4月17日、市場調査会社リサーチ・アンド・マーケッツが最近発表したレポートでは、2025年までに世界...