序文 機械学習プロジェクトを実行するには、まずモデルを(ほとんどの場合は予測 API として)デプロイします。この API を本番環境で動作させるには、まずモデルを提供するインフラストラクチャを構築する必要があります。これには、負荷分散、スケーリング、監視、更新などが含まれます。
一見すると、これらの仕事はすべて馴染みのあるもののように思えるかもしれません。 Web 開発者と DevOps エンジニアは長年にわたりマイクロサービス インフラストラクチャの自動化に取り組んできました。確かに彼らのツールを再利用できるのでしょうか? 残念ながらできません。 ML のインフラストラクチャは従来の DevOps と似ていますが、ML に特化しているため、標準の DevOps ツールは理想的とは言えません。そのため、私たちは機械学習エンジニアリング用のオープンソース プラットフォームである Cortex を開発しました。 非常に高レベルでは、Cortex は、基盤となるインフラストラクチャ全体を自動化し、ローカルまたはクラウド上でのモデルの展開を簡素化するように設計されています。プラットフォームのコアコンポーネントは、開発者が予測 API を記述できるプログラム可能な Python インターフェイスである Predictor Interface です。 Web リクエストの予測を提供するための Python インターフェースを設計することは、数か月を要した課題でした (現在も改良中です)。ここで、私たちが開発したいくつかのデザイン原則を共有したいと思います。 1. 予測子は単なるPythonクラスです Cortex の中核は予測子であり、基本的にはすべてのリクエスト処理コードと依存関係を含む予測 API です。 Predictor インターフェースは、これらの予測 API に対するいくつかの簡単な要件を実装します。 Cortex はモデルの提供にマイクロサービス アプローチを採用しているため、予測インターフェースは次の 2 つの点に厳密に重点を置いています。
この精神に基づき、Cortex の予測インターフェースには、残りの init__() と predict() という 2 つの関数が必要です。これらは、ほぼ予想どおりの機能を果たします。
初期化されると、予測子は、ユーザーがエンドポイントをクエリしたときに単一の predict() 関数が呼び出される Python オブジェクトと考えることができます。 このアプローチの最大の利点の 1 つは、ソフトウェア エンジニアリングの経験がある人なら誰でも直感的に理解できることです。データ パイプラインやモデル トレーニング コードに触れる必要はありません。モデルは単なるファイルであり、予測子はモデルをインポートして predict() メソッドを実行する単なるオブジェクトです。 しかし、このアプローチは、その構文上の魅力を超えて、皮質へのより広範なアプローチを補完する方法という点で、いくつかの重要な利点を提供します。 2. 予測は単なるHTTPリクエストです 本番環境で予測を提供するためのインターフェースを構築する際の複雑さの 1 つは、少なくとも形式においては、入力がモデルのトレーニングに使用されたデータとはほぼ確実に異なることです。 これは 2 つのレベルで機能します。
したがって、予測インターフェースは、予測 API の入力と出力について意見を述べることはできません。予測は単なる HTTP リクエストであり、開発者はそれを自由に使用できます。たとえば、マルチモデル エンドポイントをデプロイし、リクエスト パラメータに基づいてさまざまなモデルをクエリする場合は、次のようにします。
このインターフェースにより、開発者は API で自由に操作できるようになりますが、インフラストラクチャの面では Cortex がより独自の判断を下せる自然な余地も得られます。 たとえば、バックグラウンドでは Cortex は FastAPI を使用してリクエスト ルーティングを設定します。 Cortex は、自動シーケンス、監視、およびその他のインフラストラクチャ機能に関連する多くのプロセスをこのレイヤーに設定しますが、開発者がルーティングを実装する必要がある場合、これらのプロセスは非常に複雑になる可能性があります。 ただし、各 API には predict() メソッドがあるため、各 API のルートの数は同じ (1) になります。理論的には、これにより Cortex はエンジニアを制限することなくインフラストラクチャ レベルでより多くのことを実行できるようになります。 3. サービスモデルは1つのマイクロサービスのみ スケールは、本番環境で機械学習を使用するすべての人にとって大きな懸念事項です。モデルは大きくなり(GPT-2 は約 6 GB)、計算コストが高くなり、レイテンシが大きくなる可能性があります。特にリアルタイム推論の場合、トラフィックを処理するためにスケールアップすることは困難であり、予算が限られている場合はさらに困難になります。 この問題を解決するために、Cortex は予測子を水平方向にスケーリングできるマイクロサービスとして扱います。具体的には、開発者が Cortex をデプロイすると、Cortex に API が組み込まれ、推論用に準備されたクラスターが起動され、デプロイされます。次に、ロードバランサーの背後にある Web サービスとして API を公開し、自動スケーリング、更新、および監視を構成します。 予測子インターフェースは「単なる」Python インターフェースですが、このプロセスの基礎となります。 予測子インターフェースは、コードを単一の推論単位にパッケージ化することを強制します。単一の API に必要なすべてのリクエスト処理コードは、単一の予測子に含まれています。これにより、皮質は予測要因を簡単に評価できるようになります。 こうすることで、エンジニアは、API を本番環境に準備するために、(もちろん、微調整を加えない限りは)余分な作業を行う必要がなくなります。 Cortex のデプロイメントは、デフォルトで本番環境に対応しています。 |
<<: 人工知能アプリケーションのための6つの主要技術、ついに誰かがわかりやすく説明
1月4日、ニューヨークのコーエン小児医療センターの3人の小児科医が、大規模言語モデルChatGPT...
ドローンの市場、入手可能性、需要が長年にわたってどのように増加してきたかを学びます。映画の架空の世界...
組合せ最適化問題の背景組み合わせ最適化は、NP 困難な制約付き最適化問題を解決することを目的とした、...
この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI)より許可を得て転載...
今後 10 年間で、ディープラーニングは自然科学に革命をもたらし、自然現象をモデル化して予測する能力...
制作:ビッグデータダイジェスト編集部ZAOは一夜にして人気者になった。一昨夜、文翁の友人の輪には、さ...
世界がインダストリー4.0へと向かうにつれ、モノのインターネットへの世界的な支出は2022年までに1...
旅行のピーク時に都市環境衛生がより大きな圧力に耐えられるか?清掃車両と清掃作業員をより適切に管理する...
テクノロジーは建設業界にかつてないほど大きな影響を与えています。クラウドベースのコラボレーションやデ...
チャリティーは常に実行速度が遅いことで知られています。慈善団体が社会、経済、環境の変化に対応するには...
今年の AI スタートアップ リストには、AI 音声アシスタントを構築するためのコード不要の Web...
一意の ID はデータの一意性を識別します。分散システムで一意の ID を生成する方法は多数あります...
中国の自動運転は新たな進歩を遂げ、無人運転の時代が到来した。 9月15日、百度はCCTVニュースと提...