JP2022123817A - 機械学習モデルの効率的な訓練及び導入のためのパイプライン - Google Patents

機械学習モデルの効率的な訓練及び導入のためのパイプライン Download PDF

Info

Publication number
JP2022123817A
JP2022123817A JP2021147468A JP2021147468A JP2022123817A JP 2022123817 A JP2022123817 A JP 2022123817A JP 2021147468 A JP2021147468 A JP 2021147468A JP 2021147468 A JP2021147468 A JP 2021147468A JP 2022123817 A JP2022123817 A JP 2022123817A
Authority
JP
Japan
Prior art keywords
mlms
data
neural network
training
pipeline
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2021147468A
Other languages
English (en)
Inventor
マイケル コーエン ジョナサン
Michael Cohen Jonathan
エドワード リアリー ライアン
Edward Leary Ryan
デュエイン ジュンキン スコット
Duane Junkin Scot
ムカージェー プルネンデュー
Mukherjee Purnendu
フェリペ サントス ジョアン
Felipe Santos Joao
コルヌタ トーマツ
Kornuta Tomasz
プラヴェーン ヴァルン
Praveen Varun
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of JP2022123817A publication Critical patent/JP2022123817A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/061Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L17/00Speaker identification or verification techniques
    • G10L17/18Artificial neural networks; Connectionist approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/10Interfaces, programming languages or software development kits, e.g. for simulating neural networks
    • G06N3/105Shells for specifying net layout
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L13/00Speech synthesis; Text to speech systems
    • G10L13/02Methods for producing synthetic speech; Speech synthesisers
    • GPHYSICS
    • G10MUSICAL INSTRUMENTS; ACOUSTICS
    • G10LSPEECH ANALYSIS TECHNIQUES OR SPEECH SYNTHESIS; SPEECH RECOGNITION; SPEECH OR VOICE PROCESSING TECHNIQUES; SPEECH OR AUDIO CODING OR DECODING
    • G10L15/00Speech recognition
    • G10L15/08Speech classification or search
    • G10L15/16Speech classification or search using artificial neural networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Neurology (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Medical Informatics (AREA)
  • Evolutionary Biology (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Human Computer Interaction (AREA)
  • Acoustics & Sound (AREA)
  • Multimedia (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Machine Translation (AREA)

Abstract

【課題】機械学習モデルの効率的な訓練及び導入のためのパイプラインを提供する。【解決手段】ユーザ固有標的プラットフォームのための機械学習モデル(MLM)の訓練、再訓練及び前に訓練されたMLMのパラメータ及びアーキテクチャを変更すること、前に訓練されたMLMを選択及び構成すること、ユーザ固有ニーズにかなうように、選択されたMLMを適応させること、さらにカスタマイズ可能なワークフローに、選択されたMLMを統合すること、ユーザ及びクラウド・ハードウェア上に、カスタマイズされたワークフローを導入すること、実際の推論データを入力すること、推論出力を読み取り、記憶し、管理することなどを可能にする。【選択図】図5

Description

少なくとも一実施例は、人工知能を実行し、容易にするために使用される処理リソースに関する。たとえば、少なくとも一実施例は、ユーザ固有プラットフォームにおいて機械学習モデルを効率的な訓練、構成、導入、及び使用するためのパイプラインのプロビジョニングに関する。
機械学習は、しばしば、オフィス及び病院環境、ロボット自動化、セキュリティ・アプリケーション、自律輸送、法執行、並びに多くの他の設定において使用される。特に、機械学習は、ボイス、音声、及び物体認識におけるなど、オーディオ及びビデオ処理におけるアプリケーションを有する。機械学習に対する1つの普及している手法は、訓練画像内の特定のタイプの物体又は訓練音声内の特定の単語の存在など、データ分類を容易にすることがある、データ中のパターンを識別するために、訓練データ(音、画像、及び/又は他のデータ)を使用してコンピューティング・システムを訓練することを伴う。訓練は、教師ありであることも、教師なしであることもある。機械学習モデルは、決定木アルゴリズム(又は他のルール・ベースのアルゴリズム)、人工ニューラル・ネットワーク、及び同様のものなど、様々な計算アルゴリズムを使用することができる。「推論ステージ」とも呼ばれる後続の導入ステージ中に、新規データが、訓練済み機械学習モデルに入力され、対象とする様々な標的物体、音、又は文が、訓練中に確立されたパターン及び特徴を使用して識別され得る。
少なくともいくつかの実施例による、1つ又は複数の機械学習モデルの訓練、構成、及び導入をサポートする、カスタマイズ可能なパイプラインの実例アーキテクチャのブロック図である。 少なくともいくつかの実施例による、図1のカスタマイズ可能なパイプラインの訓練エンジンの実例アーキテクチャのブロック図である。 少なくともいくつかの実施例による、図1のカスタマイズ可能なパイプラインのビルド及び導入ステージの実例アーキテクチャのブロック図である。 少なくともいくつかの実施例による、1つ又は複数の機械学習モデルを訓練、構成、及び導入することをサポートする、カスタマイズ可能なパイプラインを実装することが可能な実例コンピューティング・デバイスの図である。 少なくともいくつかの実施例による、音声の自然言語処理のための1つ又は複数の機械学習モデルを使用する、実例のカスタマイズ可能なパイプラインのブロック図である。 少なくともいくつかの実施例による、1つ又は複数の機械学習モデルの訓練、構成、及び導入をサポートする、カスタマイズ可能なパイプラインを提供する実例方法のフロー図である。 少なくともいくつかの実施例による、導入されたカスタマイズ可能な機械パイプライン機械学習モデルを使用する実例方法のフロー図である。 少なくとも一実施例による、推論及び/又は訓練論理を示す図である。 少なくとも一実施例による、推論及び/又は訓練論理を示す図である。 少なくとも一実施例による、ニューラル・ネットワークの訓練及び導入を示す図である。 少なくとも一実施例による、先進コンピューティング・パイプラインのための実例データ・フロー図である。 少なくとも一実施例による、先進コンピューティング・パイプラインにおいて機械学習モデルを訓練、適応、インスタンス化及び導入するための実例システムのシステム図である。
機械学習は、意思決定の少なくともいくつかのレベルが、コンピュータ・システムに委ねられてもよい、多数の工業及びアクティビティにおいて主要物(staple)になった。現在、機械学習モデル(MLM:machine learning model)が、特有の標的ドメイン及びアプリケーションのために開発されている。様々な機械学習アプリケーションの目的は、極めて多様であることがあるので、MLMは、訓練済みMLMの意図されたユーザに応じて、別様にセット・アップ、構成、及び訓練される必要があることがある。同じ一般的なタイプに属するモデル、たとえば、音声認識モデルは、とはいえ、異なる使用事例において極めて別様にセット・アップされることがある。たとえば、自動顧客電話サポートのために設計された音声認識モデルは、病院アプリケーションのために、たとえば、患者の診断データを分析する、又は患者の要求に応答する医師の説話(narrative)を記録するために開発されたモデルとは異なることがある。その上、同じ標的ドメイン(たとえば、医療分野)において動作するMLMでさえ、異なるコンテキストでは別様に構成されなければならないことがある。たとえば、手術室における音声を認識するために設計されたモデルは、観察又は回復病室のために設計されたモデルとは別様に訓練又は構成されなければならないことがある。
現在、ユーザ固有ドメインにおけるアプリケーションのためにMLMを構成することは、著しい開発努力を必要とすることがある。MLMの開発者は、モデルのアーキテクチャ(たとえば、ニューラル・ネットワークMLMの場合、層の数及びノード接続のトポロジー)を設計すること、関連するドメイン固有訓練データ上でMLMを訓練することなどを行う必要があることがある。多くの例では、MLMは、計算の様々な追加のサポート・ステージ、たとえば、音前処理、音アーティファクト削除、フィルタ処理、後処理、スペクトル・フーリエ解析、及び同様のものを伴う、より大きいコードの一部にすぎないことがある。複数のMLMが、同じ計算パイプライン中に存在し得、開発者は、それらの各々が別個の機能性を提供する、複数のMLMを単一の計算パイプラインに組み込まなければならないことがある。たとえば、自然言語処理アプリケーションの開発者は、(スペクトル分析を使用する)特徴抽出、(抽出された特徴を処理する)音響MLM、(アーティファクト、フィラー及びストップ・ワードなどを削除する)音響後処理モジュール、(単語トークン化、レンマ化などを実行する)言語前処理、(話題、話者の意図、音声の句読法などを識別する)言語MLM、(言語MLM出力のルール・ベースの修正/検証を実行するための)言語後処理などを統合しなければならないことがある。そのようなパイプラインでは、音響MLMの出力は、言語MLMに入力されてもよく、言語MLMは、意図識別モデル(intent-identification model)にデータをさらに入力してもよく、以下同様である。
現在、単一の計算パイプライン又はワークフローに、様々なサポート・ステージをもつ1つ又は複数のMLMを統合するために、開発者は、ワークフロー全体を包含するコードを作り出し、管理しなければならない。たとえば、開発者は、医療クリニックのニーズを満たすようにカスタマイズされた音声認識MLMパイプラインなど、プラットフォーム固有コードを作り出すことがある。そのようなコードは、元の使用事例外でMLMアプリケーションを共有及びスケーリングすることを、煩雑で技術的に難しくすることがある。特に、そのようなパイプラインは、他のドメイン又はコンピュータ・プラットフォームに容易にはカスタマイズ可能でないことがある。詳細には、異なるドメインに(たとえば、株式取引会社から投資仲介事務所に)、パイプラインのMLMを再構成することを試みる別の開発者は、実際のMLMを再構成しなければならないだけではなく、コードの部分のうちのいくつかは、パイプラインの1つ又は複数の標準的なモジュール(たとえば、デジタル音信号前処理)を実装してもよいにもかかわらず、コード全体の大部分を再エンジニアリング(re-engineer)及びオーバーホールする必要があることもある。その結果、MLMパイプラインへのアクセスを有するが、高度な開発者の専門知識がないユーザ(たとえば、顧客)は、たとえば、ユーザにとって関心のある異なる言語学的ドメイン(たとえば、スポーツ放送)において使用するために自然言語プログラミングMLMパイプラインを再構成するために、ユーザの特有のニーズにパイプラインをカスタマイズすることができないことがある。それゆえ、ユーザは、ユーザの目的を満たす際に準最適である、MLMパイプラインを使用しなければならないことがある。代替的に、ユーザは、パイプラインを構成し、場合によっては、パイプラインのMLMのうちの一部又は全部を再訓練するために、追加のリソースを負担し、専門の開発者を雇用しなければならないことがある。
本開示の態様及び実施例は、MLMパイプラインの効率的な管理及び構成を可能にする方法及びシステムを説明することによって、現代技術のこれら及び他の困難に対処する。実装形態は、ユーザ固有標的プラットフォームのためのMLMの訓練及び再訓練、前に訓練されたMLMのパラメータ及びアーキテクチャを変更すること、前に訓練されたMLMを選択及び構成すること、ユーザ固有ニーズにかなうように、選択されたMLMを適応させること、さらにカスタマイズ可能なワークフローに、選択されたMLMを統合すること、ユーザ及びクラウド・ハードウェア上に、カスタマイズされたワークフローを導入すること、実際の推論データを入力すること、推論出力を読み取り、記憶し、管理することなどを可能にする。
システム・アーキテクチャ
図1は、少なくともいくつかの実施例による、1つ又は複数の機械学習モデルの訓練、構成、及び導入をサポートする、カスタマイズ可能なパイプライン(CP:customizable pipeline)100の実例アーキテクチャのブロック図である。図1中に描かれているように、CP100は、コンピューティング・デバイス102上に実装されてもよいが、コンピューティング・デバイス102の任意のエンジン及び構成要素は、任意の数のコンピューティング・デバイス上に実装(又はそれらの間で共有)されるか或いはクラウド上に実装されてもよいことを理解されたい。コンピューティング・デバイス102は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、スマートフォン、タブレット・コンピュータ、サーバ、リモート・サーバにアクセスするコンピューティング・デバイス、仮想化されたコンピューティング環境を利用するコンピューティング・デバイス、ゲーミング・コンソール、ウェアラブル・コンピュータ、スマートTVなどであってもよい。CP100のユーザは、コンピューティング・デバイス102への(たとえば、ネットワークを介した)ローカル又はリモートアクセスを有してもよい。コンピューティング・デバイス102は、仮想CPU及び/又は仮想GPUを含む、(図1中に示されていない)任意の数の中央処理ユニット(CPU)及びグラフィカル処理ユニット(GPU)、或いは本明細書で説明される技法を実行することが可能な任意の他の好適な処理デバイスを有してもよい。コンピューティング・デバイス102は、(図1中に示されていない)任意の数のメモリ・デバイス、ネットワーク・コントローラ、周辺デバイス、及び同様のものをさらに有してもよい。周辺デバイスは、画像(又は画像のシーケンス)をキャプチャするためのカメラ(たとえば、ビデオ・カメラ)、音をキャプチャするためのマイクロフォン、スキャナ、センサ、又はデータデータ取込みのための任意の他のデバイスを含んでもよい。
いくつかの実施例では、CP100は、効率的なMLM実装形態のためのいくつかのエンジン及び構成要素を含んでもよい。ユーザ(顧客、エンド・ユーザ、開発者、データ科学者など)は、コマンド・ライン、グラフィカルUI、ウェブ・ベースのインターフェース(たとえば、ウェブ・ブラウザ・アクセス可能インターフェース)、モバイル・アプリケーション・ベースのUI、又はそれらの任意の組合せを含んでもよい、ユーザ・インターフェースUI104を介してCP100と対話してもよい。UI104は、ソフトウェア、データ、及びワークフローの、メニュー、テーブル、グラフ、フローチャート、グラフィカル及び/又はテキスト表現を表示し得る。UI104は、ユーザが、以下でより詳細に説明されるように、様々なパイプライン設定を入力し、訓練/再訓練及び他のデータを提供することができるようにしてもよい、選択可能な項目を含んでもよい。UI104を介して入力されたユーザ・アクションは、パイプラインAPI106を介してCP100のパイプライン・オーケストレータ110に通信され得る。いくつかの実施例では、パイプライン・オーケストレータ110からパイプライン・データを受信するより前に、ユーザ(又はユーザがパイプラインにアクセスするために使用しているリモート・コンピューティング・デバイス)は、リモート・コンピューティング・デバイスにAPIパッケージをダウンロードしてもよい。ダウンロードされたAPIパッケージは、ユーザが、CP100をセット・アップ及び使用する間にパイプライン・オーケストレータ110との双方向通信を有することができるようにするために、リモート・コンピューティング・デバイス上にパイプラインAPI106をインストールするために使用されてもよい。
パイプライン・オーケストレータ110は、パイプラインAPI106を介して、1つ又は複数のMLMを構成及び導入し、様々な入力ユーザ・データの処理(推論)のために、導入されたMLMを使用する際に使用されてもよい、様々なデータをユーザに提供してもよい。たとえば、パイプライン・オーケストレータ110は、利用可能な事前訓練済みMLMに関する情報をユーザに提供してもよく、ユーザによって提供されたユーザ固有データ上での事前訓練済みMLMの再訓練、又は新規(前に訓練されていない)MLMの訓練をすることができるようにしてもよい。パイプライン・オーケストレータ110は、次いで、ユーザから受信された情報に基づいて、CP100を構築してもよい。たとえば、パイプライン・オーケストレータ110は、ユーザ選択のMLMを構成し、選択されたMLMを実装する際に使用される、様々な他の(たとえば、前処理及び後処理)ステージとともに、選択されたMLMを導入してもよい。これら及び他のタスクを実行するために、パイプライン・オーケストレータ110は、いくつかのエンジンを協調させ、管理してもよく、各エンジンは、全体的なパイプライン機能性の一部を実装する。
いくつかの実施例では、CP100は、1つ又は複数の前に訓練された(事前訓練済み)MLMへのアクセスを有してもよく、それゆえ、これらの事前訓練済みMLMのうちの(たとえば、ユーザのサブスクリプションに基づく)少なくともいくつかへのアクセスをユーザに提供してもよい。MLMは、CP専門化(CP specialization)の領域において共通タスクのために訓練されてもよい。たとえば、音声処理を専門とするCPは、顧客サービス要求、一般の会話、及び同様のものなど、何らかの一般的な音声を認識するように訓練された1つ又は複数のMLMへのアクセスを有してもよい。CP100は、訓練エンジン120をさらに含んでもよい。訓練エンジン120は、事前訓練済みMLMの再訓練(追加の訓練)を実装してもよい。再訓練は、使用のユーザ固有ドメインのために手直しされた再訓練データを使用して実行されてもよい。いくつかの実施例では、再訓練データは、ユーザによって提供されてもよい。たとえば、ユーザは、投資仲介環境又は証券取引環境において遭遇されることがある音声の認識を改善するために、事前訓練済みMLMのうちの1つの自然言語処理能力を向上させるための再訓練データを提供してもよい。データは、ビデオ記録、TV番組、及び同様のもののサウンド・トラックとして、任意の利用可能な(圧縮又は非圧縮)デジタル・フォーマット、たとえば、WAV、WavPack、WMA、MP3、MPEG-4でのオーディオ・デジタル記録の形で(たとえば、ユーザの金融会社における技術専門家によって)提供されてもよい。
事前訓練済みMLM122は、ネットワーク140を介してコンピューティング・デバイス102にとってアクセス可能であってもよい、訓練済みモデル・リポジトリ124に記憶されてもよい。事前訓練済みMLM122は、訓練サーバ162によって訓練されてもよい。ネットワーク140は、公衆ネットワーク(たとえば、インターネット)、プライベート・ネットワーク(たとえば、ローカル・エリア・ネットワーク(LAN)、又はワイド・エリア・ネットワーク(WAN))、ワイヤレス・ネットワーク、パーソナル・エリア・ネットワーク(PAN)、或いはそれらの組合せであってもよい。いくつかの実施例では、訓練サーバ162は、コンピューティング・デバイス102の一部であってもよい。他の実施例では、訓練サーバ162は、直接又はネットワーク140を介して、コンピューティング・デバイス102に通信可能に結合されてもよい。訓練サーバ162は、ラックマウント・サーバ、ルータ・コンピュータ、パーソナル・コンピュータ、ラップトップ・コンピュータ、タブレット・コンピュータ、デスクトップ・コンピュータ、メディア・センタ、又はそれらの任意の組合せである(及び/又はそれを含む)ことがある。訓練サーバ162は、訓練エンジン160を含んでもよい。訓練サーバ162上の訓練エンジン160は、コンピューティング・デバイス102上の訓練サーバ162と同じである(又はそれに類似している)ことがある。いくつかの実施例では、コンピューティング・デバイス102上の訓練エンジン120はないことがあり、代わりに、すべての訓練及び再訓練は、訓練サーバ162上の訓練エンジン160によって実行されてもよい。いくつかの実施例では、訓練エンジン160は、事前訓練済みMLM122のオフサイト訓練を実行してもよいのに対して、コンピューティング・デバイス102上の訓練エンジン120は、事前訓練済みMLM122の再訓練、並びに新規(カスタム)MLM125の訓練を実行してもよい。
訓練又は再訓練中に、訓練エンジン160(120)は、1つ又は複数のMLMを生成及び構成してもよい。MLMは、回帰アルゴリズム、決定木、サポート・ベクター・マシン、k平均クラスタリング・モデル、ニューラル・ネットワーク、又は任意の他の機械学習アルゴリズムを含んでもよい。ニューラル・ネットワークMLMは、畳み込み、リカレント、全結合、長期短期メモリ・モデル、ホップフィールド、ボルツマン、又は任意の他のタイプのニューラル・ネットワークを含んでもよい。MLMを生成することは、MLMタイプ(たとえば、ニューラル・ネットワーク)、アーキテクチャ、ニューロンの層の数、層の間の接続のタイプ(たとえば、全結合、畳み込み、非畳み込み(deconvolutional)など)、各層内のノードの数、ネットワークの様々な層/ノードで使用されるアクティブ化関数のタイプ、ネットワークの訓練中に使用される損失関数のタイプなどをセット・アップすることを含んでもよい。MLMを生成することは、ネットワークの様々なノードの初期パラメータ(重み、バイアス)を(たとえば、ランダムに)設定することを含んでもよい。生成されたMLMは、訓練入力165及び対応する標的出力167を含んでもよい、訓練データを使用して訓練エンジン160によって訓練されてもよい。
たとえば、音声認識MLM122の訓練のために、訓練入力165は、MLMが認識するように訓練されている、単語、句、及び/又は文の発話(utterance)をもつ1つ又は複数のデジタル録音を含んでもよい。標的出力167は、標的単語及び句が訓練入力165中に存在するどうかの指示を含んでもよい。標的出力167は、発話の文字起こし(transcription)などをも含んでもよい。いくつかの実施例では、標的出力167は、話者の意図の識別を含んでもよい。たとえば、フード・デリバリー・サービスに電話をかける顧客は、(食べ物を注文するという、注文の状況を調べるという、注文を取り消すというなど)限られた数の意図を伝えることがあるが、事実上数限りないやり方でそのようにすることがある。発せられた特有の単語及び文は、あまり重要でないことがあるのに対して、意図の決定は、重要であることがある。したがって、そのような実施例では、標的出力167は、意図の正しいカテゴリを含んでもよい。類似的に、顧客サービス電話に電話をかけるクライアントの発話を含む、訓練入力165についての標的出力167は、発話の文字起こし並びにクライアントの感情状態(たとえば、怒り、心配、満足など)の指示の両方であってもよい。追加として、訓練エンジン160は、正しい標的出力167に訓練入力165を関連付ける、マッピング・データ166(たとえば、メタデータ)を生成してもよい。MLM122(又はカスタムMLM125)の訓練中に、訓練エンジン160(又は120)は、所望の標的出力167に基づいて、訓練入力165中のパターンを識別し、所望のタスクを実行するようにそれぞれのMLMを訓練してもよい。識別されたパターンの予測効用(predictive utility)が、その後、使用される前に、推論ステージ中に、新規音声の将来の処理において、追加の訓練入力/標的出力関連付けを使用して検証されてもよい。たとえば、新規ボイス・メッセージを受信すると、訓練済みMLM122は、顧客が、前に入れた注文の状況を調べる、顧客の名前、注文番号などを確認することを望むことを識別することが可能であってもよい。
いくつかの実施例では、複数のMLMは、同時に又は別々に訓練されてもよい。音声識別パイプラインは、複数のモデル、たとえば、単語に音声をパースすることなど、音処理のための音響モデル、パースされた単語の認識のための言語モデル、意図識別のためのモデル、質問を理解するためのモデル、又は任意の他のモデルを伴ってもよい。いくつかの実施例では、モデルのうちのいくつかは、独立して訓練されてもよく、他のモデルは、コンカレントに訓練されてもよい。たとえば、音響モデルは、言語処理のすべての他のモデルとは別に訓練されてもよく、意図識別モデルは、音声文字起こしモデルとともに訓練されてもよい、などである。
いくつかの実施例では、MLM122(及び/又はMLM125)の各々又はいくつかは、複数のレベルの線形又は非線形演算を有する深層学習ニューラル・ネットワークとして実装されてもよい。たとえば、音声認識MLMの各々又はいくつかは、畳み込みニューラル・ネットワーク、リカレント・ニューラル・ネットワーク(RNN:recurrent neural network)、全結合ニューラル・ネットワークなどであってもよい。いくつかの実施例では、MLM122(及び/又はMLM125)の各々又はいくつかは、複数のニューロンを含んでもよく、各ニューロンは、他のニューロンから又は外部ソースからそれの入力を受信してもよく、(訓練可能な)重み付けされた入力の和とバイアス値にアクティブ化関数を適用することによって、出力を生成してもよい。いくつかの実施例では、MLM122(及び/又は125)の各々又はいくつかは、入力層、1つ又は複数の隠れ層、及び出力層を含む、層中に配置された複数のニューロンを含んでもよい。隣接する層からのニューロンは、重み付けされたエッジによって接続されてもよい。最初に、エッジ重みは、何らかの開始(たとえば、ランダム)値を割り当てられてもよい。あらゆる訓練入力165について、訓練エンジン160は、MLM122(及び/又はMLM125)の各々又はいくつかに、出力を生成することを行わせてもよい。訓練エンジン137は、次いで、観測された出力を所望の標的出力167と比較してもよい。得られた誤差又は不整合、たとえば、所望の標的出力167とニューラル・ネットワークの実際の出力との間の差が、それぞれのニューラル・ネットワークを通して逆伝播されてもよく、ニューラル・ネットワークにおける重みは、実際の出力を標的出力167により近づけるように調整されてもよい。この調整は、所与の訓練入力165についての出力誤差が、所定の条件を満たす(たとえば、所定の値を下回る)まで、繰り返されてもよい。その後、それぞれのニューラル・ネットワークが、許容できる正確度に訓練されるまで、異なる訓練入力165が選択され、新規出力が生成され、新しい一連の調整が実装されてもよい。
訓練エンジン120は、ドメイン固有アプリケーションのための前に訓練されたMLM122の再訓練を実装するために、(訓練エンジン160と比較して)追加の構成要素を含んでもよい。たとえば、訓練エンジン120は、ドメイン固有データを用いて既存の訓練データ(たとえば、訓練入力165)を拡張するために、データ拡張モジュールを含んでもよい。たとえば、既存の録音は、一般に標的ドメインにおいて遭遇される、標的単語及び句で拡張されてもよい。たとえば、データ拡張モジュールは、「空売り」、「キャピタル・ゲイン税」、「ヘッジ・ファンド」、「経済ファンダメンタルズ」、「新規株式公開」などという句の発話を用いて既存の訓練入力を拡張してもよい。標的出力167は、類似的に拡張されてもよい。たとえば、データ拡張モジュールは、ドメイン固有の意味を有する、「オプション」、「先物」など、様々な技術用語を用いて標的出力167を更新してもよい。訓練エンジン120は、追加として、ノードの数を低減するためのプルーニング・モジュールを有し、ノードのプルーニングが、再訓練済みモデルの精度を、最小しきい値精度よりも下に低減しなかったかどうかを決定するための評価モジュールを有してもよい。
図2Aは、少なくともいくつかの実施例による、図1のカスタマイズ可能なパイプライン100の訓練エンジン(たとえば、訓練エンジン120)の実例アーキテクチャ200のブロック図である。図2A中に描かれているように、訓練エンジン・アーキテクチャ200は、上記で説明された動作を実行する、初期訓練モジュール210、評価モジュール210、再訓練モジュール230など、いくつかのモジュール(サブ・エンジン)を含んでもよい。たとえば、初期訓練モジュール210は、初期データ202を使用してMLM122を訓練してもよい。初期訓練モジュール210はまた、カスタム(ユーザ固有及び/又はユーザ提供の)データ204を使用して、カスタムMLM125を訓練してもよい。評価モジュール220は、MLM122(又はカスタムMLM125)の訓練が成功したかどうか、又は追加の訓練が実行されるべきであるかどうかを決定してもよい。たとえば、評価モジュール220は、テスト/評価のために確保された初期データ202(又はカスタム・データ204)の一部分を使用してもよい。それぞれのMLMが、最小精度又は信頼性レベルを満たさない場合、初期訓練モジュール210は、戻り矢印を用いて描かれているように、MLMの追加の訓練を提供してもよい。MLMがうまく評価に合格すると、MLMは、ユーザによる即時又は将来の使用のために(たとえば、図1の訓練済みモデル・リポジトリ124に)記憶されてもよい。再訓練モジュール230は、再訓練済みMLM123又は再訓練済みカスタムMLM127を生成するために、新規データ/チューニング・データ232を使用して、記憶されたMLMの再訓練を実行してもよい。たとえば、前に訓練されたMLMは、異なるドメインにおけるアプリケーションのために再訓練されてもよい。代替的に、前に訓練されたMLMは、変更された又は追加の条件、たとえば、ドメインにおいて使用されている用語法(terminology)の変更、音声特性が他の従業員のものとは異なる新しい従業員の雇用、及び同様のものを考慮するように再訓練されてもよい。再訓練は、(たとえば、評価モジュール220によって決定された)評価基準が満たされるまで、類似的に実行されてもよい。再訓練基準は、初期訓練基準とは異なってもよい。
再び図1を参照すると、MLM再訓練中に、ユーザは、再訓練プロセスを監視するために、パイプラインAPI106を介してパイプライン・オーケストレータ110と対話してもよい。たとえば、再訓練の始まりにおいて(又は任意の他のステージにおいて)、ユーザは、再訓練なしに「そのまま」使用されるべきであるモデルとして、事前訓練済みMLM122の第1のセットを選択してもよい。ユーザは、再訓練済みMLM123を生成するために、訓練エンジン120(又は訓練エンジン160)による再訓練のための事前訓練済みMLM122の第2のセットをさらに選択してもよい。追加として、ユーザは、訓練エンジン120(又は訓練エンジン160)に、カスタム(ユーザ訓練済み)MLM125を生成することを行わせてもよい。ユーザは、カスタムMLM125のためのアーキテクチャ及びネットワーク・パラメータを、UI104を介して選択してもよく、訓練エンジン120(又は訓練エンジン160)は、パイプライン・オーケストレータ110を介してユーザ指定のパラメータを受信し、受信されたパラメータに従ってカスタムMLM125の訓練を実行してもよい。事前訓練済みMLM122、再訓練済みMLM123、及び/又はカスタムMLM125のパラメータは、パイプライン・オーケストレータ110にとってアクセス可能なメモリ・デバイスに記憶されてもよい。MLMを記憶するメモリ・デバイスは、コンピューティング・デバイス102上のローカル(たとえば、不揮発性)メモリ、又はネットワーク140を介してコンピューティング・デバイス102によってアクセス可能なリモート(たとえば、クラウド・ベースの)メモリであってもよい。CP100のユーザは、ユーザがログインする/CP100のユーザのセッションに対する認証を行うと、ユーザにとって利用可能ないくつかの又はすべてのMLM(たとえば、MLM122、123、及び/又は125)のリスティングを提供されてもよい。ユーザ・アクセス可能リスティングは、現在のセッション中に再訓練される(123)又はユーザ訓練される(125)MLM、並びに前のユーザ・セッションのうちのいずれか中に再訓練された又はユーザ訓練されたMLMを含んでもよい。したがって、各ユーザ・セッション中又はその後に、新規ユーザ訓練済みカスタムMLM125は、将来の使用のために訓練済みモデル・リポジトリ124に記憶されてもよい。
CP100は、エクスポート・エンジン130をさらに含んでもよい。エクスポート・エンジン130は、ユーザが、現在の(又は将来の)ユーザ・セッション中の後続の導入のために、任意の数の事前訓練済みMLM122、再訓練済みMLM123、又はカスタムMLM125を選択することを可能にしてもよい。エクスポート・エンジンは、実装独立のフォーマットを使用して、ユーザ選択のMLMをエクスポートしてもよい。いくつかの実施例では、MLMをエクスポートすることは、MLMのトポロジー、MLMのニューラル・ネットワーク層の数及びタイプ、訓練エンジンによって実行された訓練中に決定された重みの値を識別及び検索することを含んでもよい。そのような実施例では、エクスポート・エンジン130は、ユーザ選択のMLMの表現を生成し、生成された表現が、UI104上に表示されることを引き起こしてもよい。表示された表現は、層の数、ノード、エッジ、各選択されたMLMのトポロジーなど、選択されたMLMのアーキテクチャを特徴づける、グラフ、テーブル、数字、テキスト入力、及び他のオブジェクトを含んでもよい。表示された表現は、重み、バイアス、様々なノードのためのアクティブ化関数、及び同様のものなど、選択されたMLMのパラメータをさらに含んでもよい。エクスポート・エンジン130によってロードされたメタデータは、どんな追加の構成要素及びモジュールが、ユーザ選択のMLMの導入のために必要とされることがあるかをも示してもよい。速度認識では、そのような追加の構成要素は、音声の音のスペクトル分析器、音響モデルのための音声特徴抽出器、音声アーティファクト、フィラー及びストップ・ワードを削除する音響後処理構成要素、単語トークン化、レンマ化などを実行する言語前処理構成要素、言語MLM出力のルール・ベースの修正/検証を実行する言語後処理構成要素、及び他の構成要素を含んでもよい。
CP100は、ビルド・エンジン150をさらに含んでもよい。ビルド・エンジン150は、ユーザが、ユーザ・プラットフォーム上での導入より前に、エクスポートされた事前訓練済みMLM122、再訓練済みMLM123、又はカスタムMLM125を構成することを可能にしてもよい。エクスポート・エンジン130によって提供された、エクスポートされたMLMの表現は、MLMのアーキテクチャ及びプロパティをユーザに通知する。表現は、MLMのどの態様が静的(パラメータ)であるか、及びどの態様(設定)がカスタマイズ可能であるかをユーザに示してもよい。たとえば、ニューラル・ネットワークのタイプ(たとえば、畳み込み対全結合)、ニューラル・ネットワークにおけるニューロン層の数、ネットワークにおいてノードを接続するエッジのトポロジー、様々なノードにおいて使用されるアクティブ化関数のタイプなどが、固定パラメータであってもよい。ユーザが、固定パラメータのうちのいくつかを変更することを望む場合、ユーザは、新規アーキテクチャのためにそれぞれのニューラル・ネットワーク・モデルを再訓練するために、訓練エンジン120を使用しなければならないことがある。一方、ユーザは、モデルを再訓練することなしに、MLMの設定を変更することが可能であってもよい。そのような構成可能な設定は、チャンク・サイズ、たとえば、ストリーミング音声認識アプリケーションにおいて処理されるべきオーディオ・バッファのサイズ、出力をマッピングするために使用されるべきアルファベット(たとえば、ラテン語、キリル文字など)、言語(たとえば、英語、ドイツ語、ロシア語など)、入力ボイス・データのFFT処理のためのウィンドウ・サイズ、ウィンドウ・オーバーラップ(たとえば、25%、50%、75%など)、ハミング・ウィンドウ・パラメータ、発話終了(end-of-utterance)検出パラメータ、オーディオ・バッファ・サイズ、レイテンシ設定などを含んでもよい。ビルド・エンジン150はまた、ユーザが、利用可能なドメイン(たとえば、金融業界ドメイン、医療分野ドメインなど)から選択することを可能にしてもよく、選択されたMLMは、(初期訓練、再訓練、又はユーザ固有データ上での訓練中に)そのドメインのために訓練された。ビルド・エンジン150(又はパイプライン・オーケストレータ110)は、エクスポートされたMLMのパラメータとともにUI104上でのエクスポートされたMLMの設定の表示を引き起こしてもよい。表示は、(設定の)どの修正がビルド・エンジン150によって扱われるべきであるか、及び(パラメータ又は設定の)どの修正が、訓練エンジン120によって扱われるべきであるか指示を用いてアノテーションを付けられてもよい。たとえば、言語モデルに対する変更を呼び出す修正は、(訓練エンジン120を呼び出すことなしに)ビルド・エンジン150によって扱われてもよいのに対して、音響モデル、たとえば、音声認識デコーダ・ステージ中のオーディオ・データ処理に対する変更を呼び出す修正は、訓練エンジン120によって扱われてもよい。いくつかの実施例では、言語モデルに対する変更を呼び出す修正は、限定はしないが、モデルにおける1つ又は複数の層の重みを調整することを含んでもよい。さらなる実例として、大人のボイス・データを使用して訓練されたある言語の音響モデルから、同じ言語のものであるが、子供からのボイス・データを使用して訓練された音響モデルへのなど、モデルの間の設定の修正は、訓練エンジン120の呼出し、及び新規データを用いた音響モデルの再訓練をトリガしてもよい。
いくつかの設定は、単一のエクスポートされたMLMに関係することがあり、たとえば、アルファベット(音声スペリング又は標準的な英語のスペリング)設定は、言語モデルに影響を及ぼすが、音響モデルに影響を及ぼさないことがある。いくつかの設定は、複数のMLMに関係することがあり、たとえば、中国語音声認識のための言語モデルを構成することは、音声の異なる韻律(cadence)及び声音(tone)について調整するために、音響モデルの設定の変更(たとえば、自動又はデフォルト)をも呼び出すことがある。いくつかの設定は、パイプラインの様々な前処理構成要素及び後処理構成要素との1つ又は複数のMLMの対話に影響を及ぼすことがある。たとえば、異なる言語学的ドメインにおける音声認識のためのモデルの使用のために、言語モデルの設定を変更することは、ストップ・ワードをなくす前処理ブロックの設定の修正をも必要とすることがある。詳細には、専門家の会議における正式なプレゼンテーションの音声認識を実行すべきである言語モデルは、非公式のブレインストーミンング・ビジネス・ミーティングの文字起こしよりも積極的でないストップ/フィラー・ワード削除を使用してもよい。
図2Bは、少なくともいくつかの実施例による、図1のカスタマイズ可能なパイプライン100のビルド及び導入ステージの実例アーキテクチャ200のブロック図である。ビルド・エンジン150は、ユーザが、導入より前に、エクスポートされたMLMを構成することを可能にするのに対して、導入(deployment)(導入(deploy))エンジン170は、ユーザ・アクセス可能プラットフォーム上でのCP100の実際の実装を実行する。図2B中に描かれているように、エクスポート・エンジン130によってエクスポートされたMLMは、様々なモデル・アーティファクト252(たとえば、モジュール、依存性、メタデータなど)及びエクスポートされたMLMの実際の実行を構成する1つ又は複数の構成ファイル254を有してもよい。ユーザは、(たとえば、図1のUI104を通して受信された)修正された構成設定256を入力してもよく、修正された構成設定256は、次いで、ビルド・エンジン150によって処理されてもよい。修正された構成設定は、様々なフィールド、たとえば、訓練エンジン120によって当初提供されたデフォルト・フィールドを用いて構成ファイル254に書き戻され、ユーザ指定の設定を用いて上書きされてもよい。ビルド・エンジン150は、エクスポートされたMLMのための構成ファイル254及びモデル・アーティファクト252(たとえば、ソース・コード、ライブラリ、及び他の依存性)を処理してもよく、ライブラリ、パイプラインの前処理構成要素及び後処理構成要素のための実行可能コード、及び同様のものなど、エクスポートされたMLMのための実行可能アーティファクト、構成ファイル及び様々な他の依存性を生成してもよい。ビルド・エンジン150の出力は、パイプラインの中間表現(IR:intermediate representation)であってもよい。いくつかの実施例では、MLMパイプラインのIRは、ドッカー画像260、又はコンテナ化アプリケーション実行のための任意の類似のプラットフォームのための画像としてパッケージングされてもよい。いくつかの実装形態では、異なる(ドッカー以外の)フォーマットの画像が使用されてもよく、たとえば、任意のプロプライエタリ・フォーマットが使用されてもよい。いくつかの実装形態では、様々な実行可能構成要素、ライブラリ、データ、及びメタデータをともにバンドルするフォーマットの適切なアーカイブが使用されてもよい。IRのコンテンツは、ユーザのコンピューティング・デバイス、たとえば、コンピューティング・デバイス102のメモリ・デバイスに(たとえば、アーカイブとして)、又は(たとえば、クラウド上の)コンピューティング・デバイス102にとってアクセス可能なメモリ・デバイスに記憶されてもよい。ビルド・エンジン150は、Python言語で、C++言語で、Java(登録商標)言語で、又は任意の他のプログラミング言語で実装されたツール又はアプリケーションであってもよい。
構成可能なパイプライン(たとえば、図1のCP100)の導入エンジン170は、ユーザ・アクセス可能ハードウェア・リソース(標的プラットフォーム)上にパイプラインを実装してもよい。ユーザは、いくつかのCPU、GPU、及びメモリ・デバイスを有する(たとえば、ローカル)コンピューティング・デバイス102へのアクセスを有してもよい。代替又は追加として、ユーザは、仮想化サービスを提供する1つ又は複数のクラウド・コンピューティング・サーバへのアクセスを有してもよい。導入エンジン170は、ユーザが、利用可能な計算、メモリ、ネットワークなどのリソースの識別を含んでもよい、ユーザ・アクセス可能標的プラットフォーム・リソース262の説明又は識別を入力することを可能にしてもよい。いくつかの実施例では、導入エンジン170は、任意の利用可能なメトリック収集デバイス又はドライバを使用して、コンピューティング・デバイス102のローカル・リソースに関する情報を収集してもよい。代替又は追加として、導入エンジン170又はパイプライン・オーケストレータ110は、利用可能な仮想(クラウド)処理リソースに関する情報を(たとえば、リモート・アクセス・サーバ、又はリモート仮想化サーバの認証サービスを使用して)収集してもよい。収集された情報は、(限定はしないが)CPU速度、CPUコア(物理又は仮想)の数、GPU(物理又は仮想)の数及びタイプ、利用可能なシステム・メモリ及び/又はGPUメモリの量、パイプライン導入のために利用可能なリモート処理ノードの数、コンピューティング・デバイス102上にインストールされたオペレーティング・システムのタイプ及びバージョン(又は仮想化された環境上にインスタンス化されたゲスト・オペレーティング・システムのタイプ/バージョン)、及び同様のものを含んでもよい。導入エンジン170は、ユーザ選択の構成設定が、ビルド・エンジン150によって実装された後に、MLMパイプラインの制御文字(functional character)を再構成することなしに、ユーザ・アクセス可能コンピューティング・リソース上でのMLMパイプライン(たとえば、CP100)の実行をできるようにする。
いくつかの実施例では、導入エンジン170は、ビルド・エンジン150によって(ローカルに又はクラウドに)記憶されたMLMパイプラインのIRにアクセスし、推論エンジン180による使用のために生成された、(たとえば、オブジェクト・コード又はバイト・コードで実装された)実行可能コードの推論アンサンブル、構成ファイル、ライブラリ、依存性、及び他のリソースを生成してもよい。MLMパイプラインのIRが、ドッカー(又は類似の)画像260である実施例では、導入エンジン170は、たとえば、ユーザ・アクセス可能標的プラットフォームのコンテナ化サービスを使用して、ドッカー画像260に基づくパイプライン・ドッカー・コンテナ270をインスタンス化してもよい。いくつかの実施例では、推論アンサンブルは、MLMの導入を容易にし、ユーザが、様々な利用可能なフレームワーク(たとえば、TensorFlow、TersorRT、PyTorch、ONNX Runtimeなど)又はカスタム・ユーザ提供のフレームワークを使用してMLMを実行することを可能にする、Triton ensemble for Triton Inference Serverであってもよい。導入エンジン170は、ビルド・エンジン150によって生成された、実行可能コード、ライブラリ、及び他の依存性を実行するために、IRにおいて指定されたコマンドを実行してもよい。その上、導入エンジン170は、利用可能なGPU及び/又はCPUを含む、特有の標的プラットフォームのコンピューティング・リソース上での処理のために、ビルド・エンジン150によって生成されたMLMパイプライン構成のマッピングを実行してもよい。導入エンジン170によって生成された構成ファイルは、ASCIIシリアル化(ASCII-serialized)されてもよい、プラットフォーム中立プロトコル・バッファを使用して記憶されてもよい。プロトコル・バッファの使用は、ユーザ(開発者)が、MLMアーキテクチャのためのサポートを追加するときに場合によっては起こることがある、キー入力(typographical)及びシリアル化関係の誤差を最小限に抑えることができるようにする。
再び図1を参照すると、導入エンジン170が、推論エンジン180による実行の準備ができている推論アンサンブルに(たとえば、パイプライン・ドッカー・コンテナに)IRを変換した後に、MLMパイプラインは、入力ユーザ・データ182を処理する準備ができていてもよい。ユーザ・データ182は、構成されたMLMパイプラインがそれに適用されてもよい、任意のデータであってもよい。たとえば、音声処理の場合、ユーザ・データ182は、音声記録、たとえば、文字に起こされるべきである、会話、プレゼンテーション、ナレーション、又は任意の他の録音のデジタル記録を含んでもよい。いくつかの実施例では、ユーザ・データは、回答されるべきである質問(又は一連の質問)を含んでもよい。いくつかの実施例では、ユーザ・データ182は、識別されるべき物体をもつ画像(又は画像のシーケンス)、検出されるべき動きのパターンなどであってもよい。任意の他のユーザ・データ182が、ユーザ固有ドメインに依存するユーザ・データのタイプとともに、推論エンジン180に入力されてもよい。自然言語処理を伴う実施例では、ユーザ固有ドメインは、顧客サービス・サポート、医療質問、教育環境、法廷環境、緊急対策要員の会話、又は任意の他のタイプの環境を含んでもよい。
推論エンジン180は、ユーザ・データ182を処理し、推論出力184を生成してもよい。推論出力184は、任意の適切なタイプ及びフォーマットを有してもよい。たとえば、推論出力184は、音声又は会話の文字起こし、話者の意図又は感情の識別、(たとえば、テキスト又は数値の形の)質問に対する回答などであってもよい。推論出力184のフォーマットは、テキスト、数、数値スプレッドシート、オーディオ・ファイル、ビデオ・ファイル、又はそれらの任意の組合せのものであってもよい。
CP100の様々なエンジンは、直線進行(linear progression)で適用される必要はない。いくつかの実施例では、CP100の様々なエンジンは、複数回適用されてもよい。たとえば、ユーザ・データ182は、テスト・データとして使用されてもよく、取得された推論出力184は、パイプラインの現在の状態に関するフィードバックとして使用されてもよい。フィードバックは、パイプラインを、それの性能を改善するためにどのように修正すべきかをユーザに通知してもよい。いくつかの実施例では、そのような修正は、反復的に実行されてもよい。たとえば、フィードバックを受信すると、ユーザは、訓練エンジン120を使用して、パイプライン中に含まれるMLMのうちのいくつかの再訓練を始動してもよい。ユーザはまた、MLMのうちのいくつかを、他の(たとえば、事前訓練済み又はユーザ訓練済み)MLMと置き換え、エクスポート・エンジン130を使用して、新たに追加されたMLMをエクスポートしてもよい。ユーザは、ビルド・エンジン150を使用して、古い、再訓練済み、又は新たに訓練されたMLMのうちのいくつかの構成を変更してもよい。ビルド・エンジン150は、より速いインストールのために、不変のままであったモデル及び構成要素を変更することなしに、(たとえば、更新された構成設定を介して)修正された、パイプラインのMLM並びに構成要素のモデル・アーティファクト及び構成ファイルのみを(たとえば、更新されたIRを生成することによって)更新するように構成されてもよい。いくつかの実施例では、そのようなより速いインストールは、PIP(Package Installation for Python)Wheel build-packageフォーマット(.whl)を使用して達成されてもよい。その後、導入エンジン170は、標的プラットフォーム上に更新されたパイプラインを導入するために、更新されたIRを使用してもよい。いくつかの実施例では、ユーザは、MLM及びそれらのそれぞれの構成設定を保つが、標的プラットフォーム上で利用可能なリソースを(増加させる、減少させる、又はさもなければ修正することよって)修正してもよい。
図3は、少なくともいくつかの実施例による、1つ又は複数の機械学習モデルを訓練、構成、及び導入することをサポートする、カスタマイズ可能なパイプラインを実装することが可能な実例コンピューティング・デバイス300の図である。いくつかの実施例では、コンピューティング・デバイス300は、訓練エンジン120、エクスポート・エンジン130、ビルド・エンジン150、導入エンジン170、及び推論エンジン180を含む、カスタマイズ可能なパイプライン、たとえば、図1のCP100のエンジンのうちの一部又は全部を含んでもよい。図3は、同じコンピューティング・デバイスの一部としてすべてのエンジンを描いているが、いくつかの実装形態では、示されているエンジンのうちのいずれかは、実際は、仮想コンピューティング・デバイス、クラウド・ベースの処理デバイス、及び同様のものを含む、異なるコンピューティング・デバイス上に実装されてもよい。たとえば、コンピューティング・デバイス300は、推論エンジン180を含むが、カスタマイズ可能なパイプラインの他のエンジンを含まないことがある。推論エンジン180(及び/又はパイプラインの任意の他のエンジン)は、機械学習を伴う、音声認識、物体認識、又は任意の他の推論を実行するために、1つ又は複数のGPU310によって実行されてもよい。いくつかの実施例では、GPU310は、複数のコア311を含み、各コアは、複数のスレッド312を実行することが可能である。各コアは、コンカレントに(たとえば、並列に)複数のスレッド312を実行してもよい。いくつかの実施例では、スレッド312は、レジスタ313へのアクセスを有してもよい。レジスタ313は、それぞれのスレッドに制限されたレジスタへのアクセスをもつスレッド固有レジスタであってもよい。追加として、共有レジスタ314は、コアのすべてのスレッドによってアクセスされてもよい。いくつかの実施例では、各コア311は、コア311の異なるスレッド312の間で計算タスク及びプロセスを分散させるためのスケジューラ315を含んでもよい。ディスパッチ・ユニット316は、正しいプライベート・レジスタ313及び共有レジスタ314を使用する適切なスレッド上に、スケジュールされたタスクを実装してもよい。コンピューティング・デバイス300は、1人又は複数のユーザ又は開発者との情報の交換を容易にするための入力/出力構成要素334を含んでもよい。
いくつかの実施例では、GPU310は、それへのアクセスが複数のコア311によって共有されてもよい、(高速)キャッシュ318を有してもよい。その上、コンピューティング・デバイス300は、GPU310が、GPU310によって実行された様々な計算の中間及び/又は最終結果(出力)を記憶してもよい、GPUメモリ319を含んでもよい。特定のタスクの完了の後に、GPU310(又はCPU330)は、(メイン)メモリ304に出力を移動させてもよい。いくつかの実施例では、CPU330は、(パイプラインのエンジンのうちの1つによって割り当てられた)直列計算タスクを伴うプロセスを実行してもよいのに対して、GPU310は、並列処理が可能である、(ニューラル・ノードの入力の重みによる乗算、及びバイアスを追加することなど)タスクを実行してもよい。いくつかの実施例では、パイプラインのそれぞれのエンジン(たとえば、ビルド・エンジン150、推論エンジン180など)は、それぞれのエンジンによって管理されたどのプロセスが、GPU310上で実行されるべきであるか、及びどのプロセスが、CPU330上で実行されるべきであるかを決定してもよい。いくつかの実施例では、CPU330は、どのプロセスが、GPU310上で実行されるべきであるか、及びどのプロセスが、CPU330上で実行されるべきであるかを決定してもよい。
図4は、少なくともいくつかの実施例による、音声の自然言語処理のための1つ又は複数の機械学習モデルを使用する、実例のカスタマイズ可能なパイプライン400のブロック図である。パイプライン400のMLMの一部又は全部は、訓練済みニューラル・ネットワーク・モデル、たとえば、事前訓練済み及び/又はカスタム訓練済み深層学習ニューラル・ネットワークであってもよい。パイプライン400への音声入力402は、たとえば、マイクロフォンによって生成され、処理デバイスによって可読な任意のオーディオ・フォーマットのデジタル・ファイルに変換されたアナログ信号であってもよい。入力音声402は、スペクトル分析及び他の処理を含んでもよい、オーディオ前処理410を受けてもよい。たとえば、入力音声402は、フィルタ処理、アップサンプリング又はダウンサンプリング、プリエンファシス、(たとえば、10msごとに進められる20msウィンドウを使用する)ウィンドウ処理、メル周波数ケプストラム係数(MFCC:Mel Frequency Cepstral Coefficient)アルゴリズムを適用すること、及び/又は他の処理を受けてもよい。抽出された特徴を表す多次元ベクトルは、音響MLM(たとえば、音響ニューラル・ネットワーク・モデル)であってもよい、第1のMLM420に入力されてもよい。音響MLM420は、各々がある確率を割り当てられた、様々な音素(要素副単語音(elemental sub-word sound))の識別を出力するように訓練されたニューラル・ネットワーク・モデルであってもよい。音響後処理430は、(たとえば、様々な単語に確率を割り当てる)音声復号を含んでもよく、音アーティファクト、フィラー又はストップ・ワードを削除すること、或いはいくつかの他のタイプの音響後処理をさらに含んでもよい。言語前処理440は、(単語の原形を決定する)単語ステミング又はレンマ化、トークン化(文字及び単語のシーケンスの識別)、及び同様のものを含んでもよい。言語前処理440の出力は、1つ又は複数の言語MLM(たとえば、言語ニューラル・ネットワーク・モデル)を含んでもよい、第2のMLM450への入力として使用されてもよい。第2のMLM450は、音声入力402の文字起こしであってもよい、テキスト出力460を生成するように訓練された別のニューラル・ネットワークであってもよい。いくつかの実施例では、第2のMLM450は、同じ第2のMLM450の追加の出力/ニューロン層を介して、又は追加のニューラル・ネットワーク・モデルとして実装されてもよい、句読法検出(450-1)、発話検出(450-2)、及び話者の意図の検出(450-3)を生成するように構成されてもよい。第2のMLM450は、言語理解ニューラル・ネットワーク・モデル450-4及び/又は質問回答(QA)ニューラル・ネットワーク・モデル450-5を含んでもよい。QAモデル450-5の出力は、音声入力402中に含まれている質問に対する回答の表現(たとえば、テキスト表現)であってもよい。いくつかの実施例では、QAモデル450-5の出力は、音声出力472の一部として人工音声を出力するように訓練された第3のMLM470であってもよい、音声合成器に提供されてもよい。
図1及び図2に関して上記で説明されたように、第1のMLM420、第2のMLM450、及び/又は第3のMLM470は、破線矢印を用いて概略的に描かれているように、訓練エンジン120よって事前訓練又はカスタム訓練されてもよい。いくつかの実施例では、MLM420、430、及び470のうちの一部又は全部は、ドメイン固有ユーザ・データを使用して再訓練されてもよい。追加として、図4中にさらに描かれているように、MLM420、430、及び470のうちの一部又は全部は、ビルド・エンジン150を使用して、及びユーザによって提供された構成設定に基づいて、(再訓練なしに)構成されてもよい。
図5及び図6は、少なくともいくつかの実施例による、カスタマイズ可能な機械学習パイプラインのプロビジョニングに関係する、それぞれ実例方法500及び600のフロー図である。方法500及び600は、機械学習が使用されてもよい、ボイス認識、音声認識、音声合成、物体検出、物体認識、動き検出、危険検出、ロボティクス・アプリケーション、予測、及び多くの他のコンテキスト及びアプリケーションにおいて使用するためのMLMを導入するために実行されてもよい。少なくとも一実施例では、方法500及び方法600は、コンピューティング・デバイス102、コンピューティング・デバイス300、又は何らかの他のコンピューティング・デバイス、又は複数のコンピューティング・デバイスの組合せの処理ユニットによって実行されてもよい。方法500及び600は、1つ又は複数のメモリ・デバイスを含む(又はそれらと通信する)ことがある、1つ又は複数の処理ユニット(たとえば、CPU及び/又はGPU)によって実行されてもよい。少なくとも一実施例では、方法500及び方法600は、複数の処理スレッド(たとえば、CPUスレッド及び/又はGPUスレッド)によって実行されてもよく、各スレッドは、方法の1つ又は複数の個々の機能、ルーチン、サブルーチン、又は動作を実行する。少なくとも一実施例では、方法500(及び類似的に、方法600)を実装する処理スレッドは、(たとえば、セマフォ、クリティカル・セクション、及び/又は他のスレッド同期機構を使用して)同期されてもよい。代替的に、方法500(及び類似的に、方法600)を実装する処理スレッドは、互いに非同期的に実行されてもよい。方法500及び600の様々な動作は、図5及び図6中に示されている順序と比較して異なる順序で実行されてもよい。方法のいくつかの動作は、他の動作とコンカレントに実行されてもよい。少なくとも一実施例では、図5及び図6中に示されている1つ又は複数の動作は、常に実行されるとは限らないことがある。
図5は、少なくともいくつかの実施例による、1つ又は複数の機械学習モデルの訓練、構成、及び導入をサポートする、カスタマイズ可能なパイプラインを提供する実例方法500のフロー図である。カスタマイズ可能なパイプラインは、図1及び図2A~図2Bに関して上記で説明されたように、様々なエンジン、モジュール、及び構成要素を含んでもよい、CP100であってもよい。方法500を実行する処理ユニットは、(たとえば、パイプライン・サービスのプロバイダによる)事前訓練済みMLM122、又は(パイプラインのユーザによって訓練された)カスタムMLM125であってもよい、複数の訓練済みMLMに、ブロック510においてアクセスしてもよい。選択されたMLMは、パイプライン・サービスのプロバイダによって又はユーザによって前に供給されてもよい、訓練データの第1のセットを使用して事前訓練されてもよい。訓練済みMLMを維持することは、MLMの導入及び実行に十分なファイル及びデータを記憶すること、又はそのようなファイル及びデータへの参照、たとえば、(クラウド・ストレージ上になど)他の場所に記憶されたダウンロード可能なファイル及びデータへのリンクを記憶することを含んでもよい。維持されたMLMのうちのいくつか又は各々は、それぞれのMLMのために構成ファイル、データベースなどに記憶されてもよい、初期構成設定に関連付けられてもよい。構成設定はまた、方法500を実行する処理ユニットによってアクセス可能であってもよい。いくつかの実施例では、選択されたMLMのうちの少なくともいくつかは、複数のニューロン層を有するニューラル・ネットワーク・モデルである(又は、それを含む)ことがある。ニューラル・ネットワーク・モデルのうちのいくつかは、深層学習ニューラル・ネットワーク・モデルであってもよい。
ブロック520において、方法500を実行する処理ユニットは、複数の訓練済みMLMのうちの1つ又は複数のMLMの選択を示すユーザ入力を受信するためのユーザ・インターフェース(UI)を(ユーザに)提供してもよい。たとえば、ユーザは、機械学習パイプラインをセット・アップすることを試みていてもよく、ユーザのために特有の課題又は課題のグループを解決することができるMLMを、利用可能なMLMから選択してもよい。たとえば、音声認識のためのパイプラインをセット・アップすることを試みるユーザは、入力音声を復号するための音響モデル、及び復号された音声を認識するための言語モデルを選択してもよい。パイプラインのためのMLMの選択を助けるために、1つ又は複数のMLMのユーザ選択を受信するより前に、処理ユニットは、ユーザにとって利用可能であってもよい複数の訓練済みMLMの1つ又は複数のリスティングの、UI上での表示を引き起こしてもよい。いくつかの実施例では、リスティングは、列挙された項目、クリック可能なボタン、アイコン、メニュー、又は任意の他のプロンプトの形で利用可能であってもよい。リストされたMLMのうちのいくつか又は各々のためのリスティングは、グラフ、テーブル、層の描写(depiction)、MLMのトポロジーの説明などの形にあってもよい、それぞれのMLMのアーキテクチャの表現を含んでもよい。いくつかの実施例では、リスティングは、ノードの数、エッジ、アクティブ化関数、又はMLMのプロパティの任意の他の仕様など、それぞれのMLMのパラメータをさらに含んでもよい。
MLMのリスティングを閲覧することに応答して、ユーザは、選択されたMLMのうちのいくつかが、ユーザのプロジェクトの詳細により良く対応するように変更されるべきであることを決めてもよい。いくつかの例では、MLMの修正は、たとえば、MLMパイプラインが適用されるべきである特定のドメインのために、選択されたMLMを再訓練するためのユーザ選択のデータであってもよい、第2の訓練データを使用する、選択されたMLMの再訓練を必要とするのに十分に有意であってもよい。特に、方法500を実行する処理ユニットは、1つ又は複数の選択されたMLMのドメイン固有訓練のための訓練データの第2のセットを受信してもよい。たとえば、処理ユニットは、再訓練されるべきであるMLMの指示を、UIを介したユーザ入力に基づいて受信してもよい。たとえば、音声認識パイプラインのために選択された音響MLM及び言語MLMから、ユーザは、(英語のために前に訓練された)言語MLMが、日本語のために再訓練されるべきであることを示してもよい。ユーザはまた、再訓練データ(たとえば、第2のデータ)があるロケーション(たとえば、クラウド・ストレージ・アドレス)を識別してもよい。再訓練データは、訓練入力(たとえば、サウンド・ファイル)、標的出力(たとえば、サウンド・ファイル中の音声の文字起こし)、及びマッピング・データ(訓練入力の標的出力との対応の指示)を含んでもよい。再訓練されるべきMLMの指示及び再訓練データを受信したことに応答して、処理ユニットは、図1と併せて上記でより詳細に説明されたように、1つ又は複数の選択されたMLMのドメイン固有訓練を実行するためのパイプラインの訓練エンジン(たとえば、訓練エンジン120)の実行を引き起こしてもよい。再訓練は、事前訓練済みMLM122と前に訓練されたカスタムMLM125の両方に対して実行されてもよい。
いくつかの例では、MLMの必要とされる修正は、再訓練を必要とするほどには重大でないことがある。いくつかの実施例では、修正された構成設定は、言語ニューラル・ネットワーク・モデルのための言語設定を含んでもよい。前の実例を使用して、英語から日本語への変更を実装するために、ユーザは、音響MLMの設定を修正すること、たとえば、スライディング・ウィンドウのサイズを変更することを決めてもよい。1つ又は複数のMLMのための初期構成設定が、どのように修正されるべきであるかを指定するユーザ入力を受信したことに応答して、ブロック530において、方法500を実行する処理ユニットは、ユーザ入力に基づいて、1つ又は複数の選択されたMLMのための修正された構成設定を決定してもよい。いくつかの実施例では、1つ又は複数の選択されたMLMのための修正された構成設定は、オーディオ・バッファ・サイズ、発話終了設定、又は音響MLMのためのレイテンシ設定を含んでもよい。類似的に構成されてもよい他の自然言語処理MLMは、音声合成MLM、言語理解MLM、質問回答MLM、又は任意の他のMLMを含む。
ブロック540において、方法500を実行する処理ユニットは、図1と併せて上記でより詳細に説明されたように、修正された構成設定に従って、1つ又は複数の選択されたMLMを修正するためのMLMパイプラインのビルド・エンジンの実行を(たとえば、始動するようにとの命令を発行することによって)引き起こしてもよい。ブロック550において、方法は、処理ユニットが、図1と併せて上記でより詳細に説明されたように、1つ又は複数の修正されたMLMを導入するためのパイプラインの導入エンジンの実行を引き起こすことを続けて行ってもよい。ブロック560において、方法500を実行する処理ユニットは、図1と併せて上記でより詳細に説明されたように、1つ又は複数の導入されたMLMの表現の、UI上での表示を引き起こしてもよい。表示された表現は、導入されたMLMが、ユーザ・データを処理する準備ができていることをユーザに示してもよい。構成可能なMLMパイプラインは、任意のタイプの任意の数の機械学習モデルを用いた、訓練、導入、及び推論のために使用されてもよい。
図6は、少なくともいくつかの実施例による、導入されたカスタマイズ可能な機械パイプライン機械学習モデルを使用する実例方法600のフロー図である。いくつかの実施例では、方法600は、方法500と併せて使用されてもよい。方法600は、ユーザへの提示のために事前訓練済みMLM122及びカスタムMLM125のリスティングを提供した後に、及び随意に、訓練エンジンによる再訓練のためにユーザによって選択されたMLMの再訓練の後に実行されてもよい。ブロック610において、方法600を実行する処理ユニットは、(構成可能なパイプライン中に置かれるべき)1つ又は複数のMLMのユーザ選択を受信してもよく、1つ又は複数の選択されたMLMを初期化するためのパイプラインのエクスポート・エンジンの実行を引き起こしてもよい。ブロック620において、方法600は、ユーザ入力データを処理するために利用可能な1つ又は複数の選択されたMLMを(たとえば、エクスポート・エンジンを使用して)作成することを続けて行ってもよい。追加として、方法600は、図5の方法500に関して説明されたように、ビルド・エンジン(ブロック540)及び導入エンジン(ブロック560)の実行を引き起こすことを含んでもよい。
ブロック630において、方法600を実行する処理ユニットは、ユーザ入力データを受信してもよく、ブロック640において、1つ又は複数の導入されたMLMが、出力データを生成するためにユーザ入力データに適用されることを(たとえば、推論エンジンを使用して)引き起こしてもよい。1つ又は複数のMLMのアプリケーションの出力は、ブロック650において、出力データの表現、又は出力データの記憶された表現への参照のうちの少なくとも1つの、UI上での表示を引き起こしてもよい。たとえば、ユーザ入力データが音声を含む場合、出力データの表現は、入力音声の文字起こしによるテキスト、話者の意図の識別、入力音声の句読法、尋ねられた質問に対する(たとえば、合成ボイスを使用した)音応答などであってもよい。いくつかの実施例では、出力データの表現は、たとえば、UI上でユーザに直接提示されるテキスト又は音であってもよい。いくつかの実施例では、出力データの表現は、出力データが(ローカル・マシン上に又はクラウド上に)記憶された指示であってもよい。
推論及び訓練の論理
図7Aは、1つ又は複数の実施例に関して推論及び/又は訓練の動作を実行するために使用される推論及び/又は訓練論理715を示す。
少なくとも一実施例では、推論及び/又は訓練論理715は、1つ又は複数の実施例の態様において推論するように訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層を構成するための順伝播及び/若しくは出力の重み、及び/若しくは入力/出力データ、及び/若しくは他のパラメータを記憶するためのコード並びに/又はデータ・ストレージ701を、限定することなく含んでもよい。少なくとも一実施例では、訓練論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ701を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ701には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)又は単に回路)を含む論理が構成される。少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードする。少なくとも一実施例では、コード及び/又はデータ・ストレージ701は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを順伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ701の任意の部分は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ701は、キャッシュ・メモリ、ダイナミック・ランダム・アドレス可能メモリ(「DRAM」:dynamic randomly addressable memory)、スタティック・ランダム・アドレス可能メモリ(「SRAM」:static randomly addressable memory)、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はコード及び/又はデータ・ストレージ701が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ、若しくは何らか他のタイプのストレージを含むかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、推論及び/又は訓練論理715は、1つ又は複数の実施例の態様において推論するために訓練及び/若しくは使用されるニューラル・ネットワークのニューロン若しくは層に対応した、逆伝播及び/若しくは出力の重み、及び/若しくは入力/出力データを記憶するためのコード並びに/又はデータ・ストレージ705を、限定することなく含んでもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705は、1つ又は複数の実施例の態様を使用した訓練及び/又は推論中に、入力/出力データ及び/又は重みパラメータを逆伝播する間に1つ又は複数の実施例と併せて訓練又は使用されるニューラル・ネットワークの各層の重みパラメータ及び/又は入力/出力データを記憶する。少なくとも一実施例では、訓練論理715は、タイミング及び/又は順序を制御するためのグラフ・コード又は他のソフトウェアを記憶するためのコード及び/又はデータ・ストレージ705を含んでもよく、又はそれに結合されてもよく、コード及び/又はデータ・ストレージ705には、重み及び/又は他のパラメータ情報がロードされて、整数及び/又は浮動小数点ユニット(総称して算術論理演算ユニット(ALU)を含む論理が構成される。
少なくとも一実施例では、グラフ・コードなどのコードは、こうしたコードが対応するニューラル・ネットワークのアーキテクチャに基づき、重み又は他のパラメータ情報をプロセッサALUにロードさせる。少なくとも一実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含められてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705の任意の部分は、1つ又は複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路の内部にあっても外部にあってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ705が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを備えるかの選択は、オン・チップ対オフ・チップで利用可能なストレージ、実行される訓練及び/又は推論の機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705は、別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705は、組み合わされたストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701と、コード及び/又はデータ・ストレージ705は、部分的に組み合わされたストレージ構造で、部分的に別々のストレージ構造であってもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701とコード及び/又はデータ・ストレージ705の任意の部分は、プロセッサのL1、L2、又はL3のキャッシュ、若しくはシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含まれてもよい。
少なくとも一実施例では、推論及び/又は訓練論理715は、訓練及び/又は推論コード(たとえばグラフ・コード)に少なくとも部分的に基づく、又はそれにより示される論理演算及び/又は数学的演算を実行するための、整数及び/又は浮動小数点ユニットを含む1つ又は複数の算術論理演算ユニット(「ALU」)710を、限定することなく含んでもよく、その結果が、アクティブ化ストレージ720に記憶されるアクティブ化(たとえば、ニューラル・ネットワーク内の層若しくはニューロンからの出力値)を生成してもよく、これらは、コード及び/若しくはデータ・ストレージ701、並びに/又はコード及び/若しくはデータ・ストレージ705に記憶される入力/出力及び/又は重みパラメータのデータの関数である。少なくとも一実施例では、アクティブ化ストレージ720に記憶されるアクティブ化は、命令又は他のコードを実行したことに応答して、ALU710によって実行される線形代数計算又は行列ベースの計算に従って生成され、ここでコード及び/若しくはデータ・ストレージ705並びに/又はデータ・ストレージ701に記憶された重み値は、バイアス値、勾配情報、運動量値などの他の値、又は他のパラメータ若しくはハイパーパラメータとともにオペランドとして使用され、これらのいずれか又はすべてが、コード及び/若しくはデータ・ストレージ705、又はコード及び/若しくはデータ・ストレージ701、又はオン・チップ若しくはオフ・チップの別のストレージに記憶されてもよい。
少なくとも一実施例では、ALU710は、1つ若しくは複数のプロセッサ、又は他のハードウェア論理デバイス若しくは回路内に含まれるが、別の実施例では、ALU710は、それらを使用するプロセッサ又は他のハードウェア論理デバイス若しくは回路(たとえばコプロセッサ)の外部にあってもよい。少なくとも一実施例では、ALU710は、プロセッサの実行ユニット内に含まれてもよく、又は同じプロセッサ内にあるか異なるタイプの異なるプロセッサ(たとえば、中央処理装置、グラフィックス・プロセッシング・ユニット、固定機能ユニットなど)の間で分散されているかのいずれかであるプロセッサの実行ユニットによりアクセス可能なALUバンク内に、他のやり方で含まれてもよい。少なくとも一実施例では、コード及び/又はデータ・ストレージ701、コード及び/又はデータ・ストレージ705、並びにアクティブ化ストレージ720は、同じプロセッサ又は他のハードウェア論理デバイス若しくは回路を共有してもよく、別の実施例では、それらは異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路にあってもよく、或いは同じプロセッサ又は他のハードウェア論理デバイス若しくは回路と、異なるプロセッサ又は他のハードウェア論理デバイス若しくは回路との何らかの組合せにあってもよい。少なくとも一実施例では、アクティブ化ストレージ720の任意の部分は、プロセッサのL1、L2、若しくはL3のキャッシュ、又はシステム・メモリを含む他のオン・チップ又はオフ・チップのデータ・ストレージとともに含まれてもよい。さらに、推論及び/又は訓練コードが、プロセッサ又は他のハードウェア論理若しくは回路にアクセス可能な他のコードとともに記憶されてもよく、プロセッサのフェッチ、デコード、スケジューリング、実行、リタイア、及び/又は他の論理回路を使用してフェッチ及び/又は処理されてもよい。
少なくとも一実施例では、アクティブ化ストレージ720は、キャッシュ・メモリ、DRAM、SRAM、不揮発性メモリ(たとえば、フラッシュ・メモリ)、又は他のストレージであってもよい。少なくとも一実施例では、アクティブ化ストレージ720は、完全に又は部分的に、1つ若しくは複数のプロセッサ又は他の論理回路の内部にあってもよく、又は外部にあってもよい。少なくとも一実施例では、アクティブ化ストレージ720が、たとえばプロセッサの内部にあるか外部にあるかの選択、又はDRAM、SRAM、フラッシュ・メモリ、若しくは何らか他のタイプのストレージを備えるかの選択は、オン・チップ対オフ・チップの利用可能なストレージ、実行される訓練及び/又は推論機能のレイテンシ要件、ニューラル・ネットワークの推論及び/又は訓練で使用されるデータのバッチ・サイズ、又はこれらの要因の何からの組合せに応じて決められてもよい。
少なくとも一実施例では、図7Aに示す推論及び/又は訓練論理715は、グーグルのTensorFlow(登録商標)処理ユニット、Graphcore(商標)の推論処理ユニット(IPU)、又はIntel CorpのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(「ASIC」)と併せて使用されてもよい。少なくとも一実施例では、図7Aに示す推論及び/又は訓練論理715は、中央処理装置(「CPU」)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、データ・プロセッシング・ユニット(「DPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(「FPGA」)などの他のハードウェアと併せて使用されてもよい。
図7Bは、少なくとも1つの実施例による、推論及び/又は訓練論理715を示す。少なくとも一実施例では、推論及び/又は訓練論理715は、ハードウェア論理を限定することなく含んでもよく、このハードウェア論理では、計算リソースが、ニューラル・ネットワーク内のニューロンの1つ若しくは複数の層に対応する重み値又は他の情報の専用のものであるか、又は他のやり方でそれらと併せてしか使用されない。少なくとも一実施例では、図7Bに示す推論及び/又は訓練論理715は、グーグルからのTensorFlow(登録商標)処理ユニット、Graphcore(商標)からの推論処理ユニット(IPU)、又はインテルコーポレーションからのNervana(登録商標)(たとえば「Lake Crest」)プロセッサなどの特定用途向け集積回路(ASIC)と併せて使用されてもよい。少なくとも一実施例では、図7Bに示す推論及び/又は訓練論理715は、中央処理装置(CPU)ハードウェア、グラフィックス・プロセッシング・ユニット(「GPU」)ハードウェア、データ・プロセッシング・ユニット(「DPU」)ハードウェア、又はフィールド・プログラマブル・ゲート・アレイ(FPGA)など他のハードウェアと併せて使用されてもよい。少なくとも一実施例では、推論及び/又は訓練論理715は、限定することなく、コード及び/又はデータ・ストレージ701、並びにコード及び/又はデータ・ストレージ705を含み、これらを使用して、コード(たとえばグラフ・コード)、重み値、並びに/又はバイアス値、勾配情報、運動量値、及び/若しくは他のパラメータ若しくはハイパーパラメータ情報を含む他の情報を記憶してもよい。図7Bに示す少なくとも一実施例では、コード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705のそれぞれは、それぞれ計算ハードウェア702及び計算ハードウェア706などの専用計算リソースに関連付けられる。少なくとも一実施例では、計算ハードウェア702及び計算ハードウェア706のそれぞれは、線形代数関数などの数学的関数を、それぞれコード及び/又はデータ・ストレージ701並びにコード及び/又はデータ・ストレージ705に記憶された情報に対してのみ実行する1つ又は複数のALUを備え、その結果は、アクティブ化ストレージ720に記憶される。
少なくとも一実施例では、コード並びに/又はデータ・ストレージ701及び105のそれぞれ、並びに対応する計算ハードウェア702及び706は、ニューラル・ネットワークの異なる層にそれぞれ対応し、それにより、コード及び/又はデータ・ストレージ701並びに計算ハードウェア702との1つのストレージ/計算の対701/702から結果的に生じるアクティブ化は、ニューラル・ネットワークの概念的組織化を反映させるために、次のコード及び/又はデータ・ストレージ705並びに計算ハードウェア706とのストレージ/計算の対705/706への入力として提供される。少なくとも一実施例では、ストレージ/計算の対701/702、及び705/706は、2つ以上のニューラル・ネットワークの層に対応してもよい。少なくとも一実施例では、ストレージ/計算の対701/702、及び705/706の後に、又はそれと並列に、追加のストレージ/計算の対(図示せず)が、推論及び/又は訓練論理715に含まれてもよい。
ニューラル・ネットワークの訓練及び導入
図8は、少なくとも一実施例による、ディープ・ニューラル・ネットワークの訓練及び導入を示す。少なくとも一実施例では、未訓練ニューラル・ネットワーク806が、訓練データ・セット802を使用して訓練される。少なくとも一実施例では、訓練フレームワーク804は、PyTorchフレームワークであり、一方他の実施例では、訓練フレームワーク804は、TensorFlow、Boost、Caffe、マイクロソフトCognitive Toolkit/CNTK、MXNet、Chainer、Keras、Deeplearning4j、又は他の訓練フレームワークである。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806を訓練し、本明細書に記載の処理リソースを使用してそれが訓練されるのを可能にして、訓練済みニューラル・ネットワーク808を生成する。少なくとも一実施例では、重みは、ランダムに選択されてもよく、又はディープ・ビリーフ・ネットワークを使用した事前訓練によって選択されてもよい。少なくとも一実施例では、訓練は、教師あり、一部教師あり、又は教師なしのいずれかのやり方で実行されてもよい。
少なくとも一実施例では、未訓練ニューラル・ネットワーク806は教師あり学習を使用して訓練され、ここで訓練データ・セット802は、入力に対する所望の出力と対になった入力を含み、又は訓練データ・セット802は、既知の出力を有する入力を含み、ニューラル・ネットワーク806の出力が手動で採点される。少なくとも一実施例では、未訓練ニューラル・ネットワーク806は教師ありのやり方で訓練され、訓練データ・セット802からの入力を処理し、結果として得られた出力を、予想の又は所望の出力のセットと比較する。少なくとも一実施例では、次いで、誤差が、未訓練ニューラル・ネットワーク806を通って逆伝播される。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806を制御する重みを調節する。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806が、新規データ・セット812などの入力データに基づき、結果814などにおいて正しい答えを生成するのに好適な訓練済みニューラル・ネットワーク808などのモデルに向かって、どれだけ良好に収束しているかを監視するツールを含む。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806を繰り返し訓練する一方、損失関数、及び確率的勾配降下法などの調整アルゴリズムを使用して、未訓練ニューラル・ネットワーク806の出力を精緻化するように重みを調整する。少なくとも一実施例では、訓練フレームワーク804は、未訓練ニューラル・ネットワーク806が所望の精度に到達するまで未訓練ニューラル・ネットワーク806を訓練する。少なくとも一実施例では、次いで訓練済みニューラル・ネットワーク808を、任意の数の機械学習動作を実装するように導入することができる。
少なくとも一実施例では、未訓練ニューラル・ネットワーク806は、教師なし学習を使用して訓練され、ここで未訓練ニューラル・ネットワーク806は、ラベルなしデータを使用して自らを訓練しようとする。少なくとも一実施例では、教師なし学習の訓練データ・セット802は、いかなる関連出力データ又は「グラウンド・トゥルース」データもない入力データを含む。少なくとも一実施例では、未訓練ニューラル・ネットワーク806は、訓練データ・セット802内でグループ化を学習することができ、個々の入力が、未訓練データ・セット802にどのように関係しているかを判定することができる。少なくとも一実施例では、新規データ・セット812の次元を低減するのに有用な動作を実行することができる訓練済みニューラル・ネットワーク808内で教師なし訓練を使用して、自己組織化マップを生成することができる。少なくとも一実施例では、教師なし訓練を使用して異常検出を実行することもでき、異常検出は、新規データ・セット812の通常のパターンから逸脱した、新規データ・セット812内のデータ点を識別できるようにする。
少なくとも一実施例では、半教師あり学習が使用されてもよく、それは、ラベル付きデータとラベルなしデータが訓練データ・セット802に混在している技法である。少なくとも一実施例では、訓練フレームワーク804を使用して、伝達学習技法などによる漸次的学習が実行されてもよい。少なくとも一実施例では、漸次的学習により、訓練済みニューラル・ネットワーク808は、初期訓練中に訓練済みニューラル・ネットワーク808内に教え込まれた知識を忘れることなく、新規データ・セット812に適合できるようになる。
図9を参照すると、図9は、少なくとも一実施例による、処理及び推論パイプラインを生成及び導入するプロセス900のための実例データ・フロー図である。少なくとも一実施例では、プロセス900は、データ・センタなど、1つ又は複数の施設902においてユーザ・フィードバック・データ上でゲーム名認識分析及び推論を実行するために導入されてもよい。
少なくとも一実施例では、プロセス900は、訓練システム904及び/又は導入システム906内で実行されてもよい。少なくとも一実施例では、訓練システム904は、導入システム906において使用するための機械学習モデル(たとえば、ニューラル・ネットワーク、物体検出アルゴリズム、コンピュータ・ビジョン・アルゴリズムなど)の訓練、導入、及び実施を実行するために使用されてもよい。少なくとも一実施例では、導入システム906は、施設902におけるインフラストラクチャ要件を低減するために、分散コンピューティング環境の間で処理及びコンピュート・リソースをオフロードするように構成されてもよい。少なくとも一実施例では、導入システム906は、施設902にあるコンピューティング・デバイスとともに使用するための仮想機器を選択、カスタマイズ、及び実装するための合理化されたプラットフォームを提供してもよい。少なくとも一実施例では、仮想機器は、フィードバック・データに対して1つ又は複数の処理動作を実行するためのソフトウェア定義されたアプリケーションを含んでもよい。少なくとも一実施例では、パイプライン中の1つ又は複数のアプリケーションは、アプリケーションの実行中に導入システム906のサービス(たとえば、推論、視覚化、計算、AIなど)を使用又はコールしてもよい。
少なくとも一実施例では、先進処理及び推論パイプラインで使用されるアプリケーションのうちのいくつかは、1つ又は複数の処理ステップを実行するために、機械学習モデル又は他のAIを使用してもよい。少なくとも一実施例では、機械学習モデルは、施設902において記憶された(フィードバック・データなど)フィードバック・データ908或いは別の1つ又は複数の施設からのフィードバック・データ908、或いはそれらの組合せを使用して施設902において訓練されてもよい。少なくとも一実施例では、訓練システム904を使用して、導入システム906向けの実用的で導入可能な機械学習モデルを生成するためのアプリケーション、サービス、及び/又は他のリソースが提供されてもよい。
少なくとも一実施例では、モデル・レジストリ924は、バージョン管理及び物体メタデータをサポートすることができる物体ストレージによってバックアップされてもよい。少なくとも一実施例では、物体ストレージには、たとえば、クラウド・プラットフォーム内から、クラウド・ストレージ(たとえば、図10のクラウド1026)の互換性アプリケーション・プログラミング・インターフェース(API)を介してアクセス可能であってもよい。少なくとも一実施例では、モデル・レジストリ924内の機械学習モデルは、システムの開発者又はパートナがAPIと対話することによって、アップロード、リスト化、修正、又は削除されてもよい。少なくとも一実施例では、APIは、適切な資格を有するユーザがモデルをアプリケーションに関連付けできるようにする方法へのアクセスを提供してもよく、それによりアプリケーションのコンテナ化されたインスタンスを実行することの一部として、モデルを実行できるようになる。
少なくとも一実施例では、訓練パイプライン1004(図10)は、施設902が独自の機械学習モデルを訓練している状況、又は最適化若しくは更新される必要がある既存の機械学習モデルを有している状況を含んでもよい。少なくとも一実施例では、フィードバック・データ908は、フォーラム、ウェブ・フォーム、又は同様のものなど、様々なチャネルから受信されてもよい。少なくとも一実施例では、フィードバック・データ908が受信されると、機械学習モデルのためのグラウンド・トゥルース・データとして使用されるべきフィードバック・データ908に対応するアノテーションを生成することを支援するために、AI支援アノテーション910が使用されてもよい。少なくとも一実施例では、AI支援アノテーション910は、(たとえば、あるデバイスからの)あるタイプのフィードバック・データ908、及び/又はフィードバック・データ908中のあるタイプの異常に対応するアノテーションを生成するように訓練されてもよい、1つ又は複数の機械学習モデル(たとえば、畳み込みニューラル・ネットワーク(CNN:convolutional neural network))を含んでもよい。少なくとも一実施例では、AI支援アノテーション910は、次いで、直接使用さてもよく、或いはグラウンド・トゥルース・データを生成するために、アノテーションツールを使用して調整又は微調整されてもよい。少なくとも一実施例では、いくつかの実例において、ラベル付けされたデータ912が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、AI支援アノテーション910、ラベル付けされたデータ912、又はこれらの組合せが、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、訓練済み機械学習モデルは出力モデル916と呼ばれてもよく、本明細書に記載の導入システム906によって使用されてもよい。
少なくとも一実施例では、訓練パイプライン1004(図10)は、施設902が、導入システム906内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設902は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含んでもよい。少なくとも一実施例では、既存の機械学習モデルが、モデル・レジストリ924から選択されてもよい。少なくとも一実施例では、モデル・レジストリ924は、撮像データに対して様々な異なる推論タスクを実行するように訓練された機械学習モデルを含んでもよい。少なくとも一実施例では、モデル・レジストリ924の機械学習モデルは、施設902とは異なる施設(たとえば、離れた場所にある施設)からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、機械学習モデルは、1つの場所、2つの場所、又は任意の数の場所からの撮像データについて訓練されたものであってもよい。少なくとも一実施例では、特定の場所からの撮像データについて訓練されるとき、訓練は、その場所で行われてもよく、又は少なくとも、撮像データの機密性を保護するようなやり方で、若しくは撮像データが構外へ転送されるのを制限するようなやり方で(たとえば、HIPPA規定、プライバシー規定に準拠するように)行われてもよい。少なくとも一実施例では、1つの場所においてモデルが訓練されると、又は部分的に訓練されると、機械学習モデルはモデル・レジストリ924に加えられてもよい。少なくとも一実施例では、次いで機械学習モデルは、任意の数の他の施設において再訓練又は更新されてもよく、再訓練又は更新されたモデルが、モデル・レジストリ924において利用可能にされてもよい。少なくとも一実施例では、次いで機械学習モデルは、モデル・レジストリ924から選択されてもよく、出力モデル916と呼ばれてもよく、導入システム906において使用されて、導入システムの1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行してもよい。
少なくとも一実施例では、訓練パイプライン1004(図10)は、施設902が、導入システム906内の1つ又は複数のアプリケーションのための1つ又は複数の処理タスクを実行する際に使用する機械学習モデルを必要としているが、施設902は現在そのような機械学習モデルを有していないかもしれない(又はそうした目的のために最適化された、効率よい、若しくは有効なモデルを有していないかもしれない)という状況を含むシナリオで使用することができる。少なくとも一実施例では、モデル・レジストリ924から選択された機械学習モデルは、母集団、遺伝的差異、機械学習モデルを訓練するために使用される訓練データの頑健性、訓練データの異常の多様性、及び/又は訓練データに伴う他の問題に違いがあることから、施設902において生成されるフィードバック・データ908向けに微調整又は最適化されていないことがある。少なくとも一実施例では、機械学習モデルを再訓練又は更新するためのグラウンド・トゥルース・データとして使用されることになるフィードバック・データ908に対応するアノテーションの生成を支援するために、AI支援アノテーション910が使用されてもよい。少なくとも一実施例では、ラベル付けされたデータ912が、機械学習モデルを訓練するためのグラウンド・トゥルース・データとして使用されてもよい。少なくとも一実施例では、機械学習モデルを再訓練又は更新することは、モデル訓練914と呼ばれてもよい。少なくとも一実施例では、モデル訓練914、たとえばAI支援アノテーション910、ラベル付けされたデータ912、又はこれらの組合せは、機械学習モデルを再訓練若しくは更新するためのグラウンド・トゥルース・データとして使用されてもよい。
少なくとも一実施例では、導入システム906は、ソフトウェア918、サービス920、ハードウェア922、並びに/又は他の構成要素、特徴、及び機能を含んでもよい。少なくとも一実施例では、導入システム906は、ソフトウェア「スタック」を含んでもよく、それによりソフトウェア918は、サービス920の上に構築されてもよく、サービス920を使用して一部若しくはすべての処理タスクを実行してもよく、サービス920及びソフトウェア918は、ハードウェア922の上に構築され、ハードウェア922を使用して、導入システム906の処理、ストレージ、及び/又は他の計算のタスクを実行してもよい。
少なくとも一実施例では、ソフトウェア918は、任意の数の異なるコンテナを含んでもよく、ここで各コンテナは、アプリケーションのインスタンス化を実行してもよい。少なくとも一実施例では、各アプリケーションは、先進処理及び推論パイプラインの1つ又は複数の処理タスク(たとえば、推論、物体検出、特徴検出、セグメント化、画像強調、キャリブレーションなど)を実行してもよい。少なくとも一実施例では、コンピューティング・デバイスのタイプごとに、フィードバック・データ908(又は、本明細書に記載のものなどの他のタイプのデータ)に対してデータ処理タスクを実行できる任意の数のコンテナが存在してもよい。少なくとも一実施例では、先進処理及び推論パイプラインは、(使用可能なタイプのデータに出力を再変換して、施設902において記憶及び表示するように)パイプラインを通して処理した後に、各コンテナによって使用される、且つ/又は施設902によって使用される撮像データを受信及び構成するコンテナに加えて、フィードバック・データ908を処理するのに所望される又は必要とされる異なるコンテナの選択に基づき定義されてもよい。少なくとも一実施例では、(たとえばパイプラインを構成する)ソフトウェア918内のコンテナの組合せは、(本明細書においてより詳細に記載する)仮想機器と呼ばれてもよく、仮想機器は、サービス920及びハードウェア922を利用して、コンテナにおいてインスタンス化されたアプリケーションの一部又はすべての処理タスクを実行してもよい。
少なくとも一実施例では、データは、データ処理パイプラインの一部としての前処理を受けて、1つ又は複数のアプリケーションによって処理できるようにデータが準備されてもよい。少なくとも一実施例では、パイプラインの1つ若しくは複数の推論タスク又は他の処理タスクの出力に対して後処理が実行されて、次のアプリケーション用に出力データが準備されてもよく、且つ/又は送信及び/若しくはユーザによる使用のために(たとえば、推論要求への応答として)出力データが準備されてもよい。少なくとも一実施例では、推論タスクは、訓練済み若しくは導入済みのニューラル・ネットワークなど、1つ又は複数の機械学習モデルによって実行されてもよく、このモデルは、訓練システム904の出力モデル916を含んでもよい。
少なくとも一実施例では、データ処理パイプラインのタスクはコンテナにカプセル化されてもよく、コンテナはそれぞれ、アプリケーションの個別の完全に機能的なインスタンス化、及び機械学習モデルを参照できる仮想化コンピューティング環境を表す少なくとも一実施例では、コンテナ又はアプリケーションは、(本明細書においてより詳細に記載する)コンテナ・レジストリのプライベート(たとえば、アクセスの制限された)区域に発行されてもよく、訓練済み又は導入済みのモデルは、モデル・レジストリ924に記憶され、1つ又は複数のアプリケーションに関連付けられてもよい。少なくとも一実施例では、アプリケーションの画像(たとえば、コンテナの画像)は、コンテナ・レジストリにおいて入手可能であってもよく、パイプラインに導入するためにユーザによってコンテナ・レジストリから選択されると、画像は、ユーザのシステムで使用できるようにアプリケーションをインスタンス化するためのコンテナを生成するために使用されてもよい。
少なくとも一実施例では、開発者は、供給されたデータに対して処理及び/又は推論を実行するために、アプリケーションを(たとえばコンテナとして)開発、公開、及び記憶してもよい。少なくとも一実施例では、開発、公開、及び/又は記憶は、(たとえば、開発されたアプリケーション及び/又はコンテナが、確実にシステムに準拠するように、又はシステムと互換性があるようにするために)システムに関連付けられたソフトウェア開発キット(SDK)を使用して実行されてもよい。少なくとも一実施例では、開発されたアプリケーションは、システム(たとえば図10のシステム1000)としてサービス920の少なくとも一部をサポートすることができるSDKを用いて、ローカルに(たとえば第1の施設において、第1の施設からのデータについて)テストされてもよい。少なくとも一実施例では、システム1000によって(たとえば、精度などが)検証されると、アプリケーションは、ユーザ(たとえば、病院、クリニック、研究所、ヘルスケア提供者など)によって選択及び/又は実施例できるようにコンテナ・レジストリにおいて利用可能にされて、ユーザの施設(たとえば、第2の施設)におけるデータに対して1つ又は複数の処理タスクが実行されてもよい。
少なくとも一実施例では、次いで開発者は、アプリケーション又はコンテナを、システム(たとえば、図10のシステム1000)のユーザによってアクセス及び使用できるようにネットワークを通して共有してもよい。少なくとも一実施例では、完成し検証されたアプリケーション又はコンテナは、コンテナ・レジストリに記憶されてもよく、関連する機械学習モデルは、モデル・レジストリ924に記憶されてもよい。少なくとも一実施例では、推論又は画像処理の要求を出す要求元エンティティは、コンテナ・レジストリ及び/又はモデル・レジストリ924をブラウジングしてアプリケーション、コンテナ、データセット、機械学習モデルなどを探し、データ処理パイプラインに含めるための要素の所望の組合せを選択し、処理要求を送出してもよい。少なくとも一実施例では、要求は、要求を実行するために必要な入力データを含んでもよく、且つ/又は要求を処理する際に実行されることになるアプリケーション及び/又は機械学習モデルの選択を含んでもよい。少なくとも一実施例では、次いで要求は、導入システム906(たとえばクラウド)の1つ又は複数の構成要素に渡されて、データ処理パイプラインの処理が実行されてもよい。少なくとも一実施例では、導入システム906による処理は、コンテナ・レジストリ及び/又はモデル・レジストリ924から選択された要素(たとえば、アプリケーション、コンテナ、モデルなど)を参照することを含んでもよい。少なくとも一実施例では、パイプラインによって結果が生成されると、結果がユーザに返されて参照されてもよい(たとえば、ローカルで、構内のワークステーション又は端末で実行している視聴アプリケーション・スイートで視聴されてもよい)。
少なくとも一実施例では、パイプラインにおけるアプリケーション又はコンテナの処理又は実行を支援するために、サービス920が利用されてもよい。少なくとも一実施例では、サービス920は、計算サービス、人工知能(AI)サービス、視覚化サービス、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、サービス920は、ソフトウェア918の1つ又は複数のアプリケーションに共通の機能を提供してもよく、それにより機能は、アプリケーションによってコール又は利用されることが可能なサービスに対して抽象化されてもよい。少なくとも一実施例では、サービス920によって提供される機能は、動的でより効率的に実行されてもよく、それと同時に、(たとえば、並列コンピューティング・プラットフォーム1030(図10)を使用して)アプリケーションが並列にデータを処理できるようにすることにより、良好にスケーリングされてもよい。少なくとも一実施例では、サービス920により提供される同じ機能を共有する各アプリケーションに、サービス920のそれぞれのインスタンスを有するよう要求するのではなく、サービス920が、様々なアプリケーション間で共有されてもよい。少なくとも一実施例では、サービスは、非限定的な実例として、検出又はセグメント化のタスクを実行するために使用されてもよい推論のサーバ又はエンジンを含んでもよい。少なくとも一実施例では、機械学習モデルの訓練及び/又は再訓練の機能を提供することができるモデル訓練サービスが含まれてもよい。
少なくとも一実施例では、サービス920がAIサービス(たとえば、推論サービス)を含む場合、異常検出(たとえば、腫瘍、発育異常、瘢痕化など)のためのアプリケーションに関連付けられた1つ又は複数の機械学習モデルは、機械学習モデル、又はその処理を、アプリケーション実行の一部として実行するように推論サービス(たとえば、推論サーバ)に(APIコールとして)コールすることによって、実行されてもよい。少なくとも一実施例では、セグメント化タスクのための1つ又は複数の機械学習モデルを別のアプリケーションが含む場合、セグメント化タスクに関連付けられた処理動作のうちの1つ又は複数を実行するための機械学習モデルを実行するように、アプリケーションは推論サービスをコールしてもよい。少なくとも一実施例では、先進処理及び推論パイプラインを実装するソフトウェア918は、1つ又は複数の推論タスクを実行するためにそれぞれのアプリケーションが同じ推論サービスをコールすることがあるので、合理化されてもよい。
少なくとも一実施例では、ハードウェア922は、GPU、CPU、DPU、グラフィックス・カード、AI/深層学習システム(たとえば、NVIDIAのDGXスーパーコンピュータ・システムなどのAIスーパーコンピュータ)、クラウド・プラットフォーム、又はそれらの組合せを含んでもよい。少なくとも一実施例では、異なるタイプのハードウェア922を使用して、導入システム906のソフトウェア918及びサービス920のための効率的で専用のサポートが提供されてもよい。少なくとも一実施例では、ゲーム名認識の効率、精度、及び有効性を向上させるために、AI/深層学習システム内、クラウド・システム、及び/又は導入システム906の他の処理構成要素において、ローカルで(たとえば、施設902で)処理を行うためのGPU処理の使用が実装されてもよい。
少なくとも一実施例では、ソフトウェア918及び/又はサービス920は、非限定的な実例として深層学習、機械学習、及び/又は高性能コンピューティングに関するGPU処理のために最適化されてもよい。少なくとも一実施例では、導入システム906及び/又は訓練システム904のコンピューティング環境のうちの少なくとも一部は、データセンタの1つ若しくは複数のスーパーコンピュータ、又は高性能コンピューティング・システムにおいて、GPU最適化ソフトウェア(たとえば、NVIDIAのDGXシステムのハードウェアとソフトウェアの組合せ)を用いて実行されてもよい。少なくとも一実施例では、ハードウェア922は、任意の数のGPUを含んでもよく、これらのGPUは、本明細書に記載するように、データの並列処理を実行するためにコールされてもよい。少なくとも一実施例では、クラウド・プラットフォームはさらに、深層学習タスク、機械学習タスク、又は他のコンピューティング・タスクのGPU最適化された実行のためのGPU処理を含んでもよい。少なくとも一実施例では、クラウド・プラットフォーム(たとえば、NVIDIAのNGC)は、(たとえば、NVIDIAのDGXシステムによって提供される)AI/深層学習スーパーコンピュータ、及び/又はGPU最適化ソフトウェアをハードウェア抽象化及びスケーリングのプラットフォームとして使用して、実行されてもよい。少なくとも一実施例では、クラウド・プラットフォームは、シームレスなスケーリング及びロード・バランシングを可能にするために、複数のGPUに対するアプリケーション・コンテナ・クラスタリング・システム又はオーケストレーション・システム(たとえば、KUBERNETES)を統合してもよい。
図10は、少なくとも一実施例による撮像導入パイプラインを生成及び導入するための実例システム1000を示すシステム図である。少なくとも一実施例では、システム1000は、図9のプロセス900、及び/又は先進処理及び推論パイプラインを含む他のプロセスを実装するために使用されてもよい。少なくとも一実施例では、システム1000は、訓練システム904及び導入システム906を含んでもよい。少なくとも一実施例では、訓練システム904及び導入システム906は、本明細書に記載するように、ソフトウェア918、サービス920、及び/又はハードウェア922を使用して実装されてもよい。
少なくとも一実施例では、システム1000(たとえば、訓練システム904及び/又は導入システム906)は、クラウド・コンピューティング環境(たとえば、クラウド1026)において実装されてもよい。少なくとも一実施例では、システム1000は、施設に関してローカルに実装されてもよく、又はクラウドとローカル・コンピューティング・リソースとの組合せとして実装されてもよい。少なくとも一実施例では、クラウド1026のAPIへのアクセスは、制定されたセキュリティ対策又はプロトコルを介して許可されたユーザに限定されてもよい。少なくとも一実施例では、セキュリティ・プロトコルはウェブ・トークンを含んでもよく、このウェブ・トークンは、認証(たとえば、AuthN、AuthZ、Glueconなど)のサービスによって署名されてもよく、適切な許可を持っていてもよい。少なくとも一実施例では、(本明細書に記載の)仮想機器のAPI、又はシステム1000の他のインスタンス化は、対話について検査済み又は許可済みのパブリックIPのセットに限定されてもよい。
少なくとも一実施例では、システム1000の様々な構成要素は、有線及び/又は無線の通信プロトコルを介して、ローカル・エリア・ネットワーク(LAN)及び/又は広域ネットワーク(WAN)を含むがこれらに限定されない様々な異なるタイプのネットワークのうちの任意のものを使用して、相互に通信してもよい。少なくとも一実施例では、(たとえば推論要求を送信するため、推論要求の結果を受信するためなど)施設とシステム1000の構成要素との間の通信は、1つ又は複数のデータ・バス、無線データ・プロトコル(Wi-Fi)、有線データ・プロトコル(たとえば、イーサネット(登録商標))などを介して通信されてもよい。
少なくとも一実施例では、訓練システム904は、図9に関して本明細書に記載したものと同様の訓練パイプライン1004を実行してもよい。少なくとも一実施例では、1つ又は複数の機械学習モデルが導入システム906により導入パイプライン1010において使用されることになる場合、訓練パイプライン1004を使用して、1つ又は複数の(たとえば、事前訓練された)モデルが訓練若しくは再訓練されてもよく、且つ/又は事前訓練されたモデル1006のうちの1つ又は複数が(たとえば再訓練若しくは更新を必要とせずに)実装されてもよい。少なくとも一実施例では、訓練パイプライン1004の結果として、出力モデル916が生成されてもよい。少なくとも一実施例では、訓練パイプライン1004は、任意の数の処理ステップ、つまり、AI支援アノテーション910、ラベル付きデータ912を生成するためのフィードバック・データ908のラベル付け又はアノテーション付け、モデル・レジストリからのモデル選択、モデル訓練914、モデルの訓練、再訓練、若しくは更新、及び/又は他の処理ステップを含んでもよい。少なくとも一実施例では、導入システム906によって使用される異なる機械学習モデルについて、異なる訓練パイプライン1004が使用されてもよい。少なくとも一実施例では、図9に関して記載した第1の実例と同様の訓練パイプライン1004は、第1の機械学習モデルに使用されてもよく、図9に関して記載した第2の実例と同様の訓練パイプライン1004は、第2の機械学習モデルに使用されてもよく、図9に関して記載した第3の実例と同様の訓練パイプライン1004は、第3の機械学習モデルに使用されてもよい。少なくとも一実施例では、それぞれの各機械学習モデルに要求されるものに応じて、訓練システム904内のタスクの任意の組合せが使用されてもよい。少なくとも一実施例では、機械学習モデルのうちの1つ又は複数は、すでに訓練済みで導入の準備が整っていてもよく、それにより機械学習モデルは、訓練システム904によるいかなる処理も受けなくてもよく、導入システム906によって実装されてもよい。
少なくとも一実施例では、出力モデル916及び/又は事前訓練されたモデル1006は、実施例又は実施例に応じて任意のタイプの機械学習モデルを含んでもよい。少なくとも一実施例では、限定することなく、システム1000によって使用される機械学習モデルは、線形回帰、ロジスティック回帰、決定木、サポート・ベクター・マシン(SVM)、ナイーブ・ベイズ、k近傍法(k-nearest neighbor:Knn)、k平均クラスタリング、ランダム・フォレスト、次元縮小アルゴリズム、勾配ブースティング・アルゴリズム、ニューラル・ネットワーク(たとえば、オート・エンコーダ、畳み込み、再帰、パーセプトロン、長/短期メモリ(LSTM)、Bi-LSTM、ホップフィールド、ボルツマン、ディープ・ビリーフ、逆畳み込み、敵対的生成、液体状態マシンなど)を使用する機械学習モデル、及び/又は他のタイプの機械学習モデルを含んでもよい。
少なくとも一実施例では、訓練パイプライン1004は、AI支援アノテーションを含んでもよい。少なくとも一実施例では、ラベル付きデータ912(たとえば、従来のアノテーション)は、任意の数の技法によって生成されてもよい。少なくとも一実施例では、ラベル又は他のアノテーションは、描画プログラム(たとえば、アノテーション・プログラム)、コンピュータ支援設計(CAD)プログラム、ラベル付けプログラム、グラウンド・トゥルース用のアノテーション若しくはラベルの生成に適した別のタイプのプログラム内で生成されてもよく、且つ/又はいくつかの実例では、手書きされてもよい。少なくとも一実施例では、グラウンド・トゥルース・データは、合成により生成されてもよく(たとえば、コンピュータ・モデル又はレンダリングから生成されてもよく)、現実的に生成されてもよく(たとえば、実世界のデータから設計及び生成されてもよく)、機械自動化されてもよく(たとえば、特徴の分析及び学習を使用して、データから特徴を抽出し、次いでラベルを生成してもよく)、人間によりアノテーション付けされてもよく(たとえば、ラベラ、又はアノテーション専門家がラベルのロケーションを定義してもよく)、且つ/又はこれらの組合せであってもよい。少なくとも一実施例では、フィードバック・データ908のインスタンス(又は機械学習モデルによって使用される他のタイプのデータ)ごとに、訓練システム904によって生成される対応するグラウンド・トゥルース・データが存在してもよい。少なくとも一実施例では、訓練パイプライン1004に含まれるAI支援アノテーションに加えて又はその代わりに、導入パイプライン1010の一部としてAI支援アノテーションが実行されてもよい。少なくとも一実施例では、システム1000は多層プラットフォームを含んでもよく、このプラットフォームは、1つ又は複数の医療用撮像及び診断の機能を実行することができる診断アプリケーション(又は他のタイプのアプリケーション)のソフトウェア層(たとえば、ソフトウェア918)を含んでもよい。
少なくとも一実施例では、ソフトウェア層は、セキュアな、暗号化された、且つ/又は認証されたAPIとして実装されてもよく、これを介して、アプリケーション又はコンテナが、外部環境(たとえば、施設902)から呼び出し(たとえばコール)されてもよい。少なくとも一実施例では、次いでアプリケーションは、それぞれのアプリケーションに関連付けられた計算、AI、又は視覚化のタスクを実行するために1つ又は複数のサービス920をコール又は実行してもよく、ソフトウェア918及び/又はサービス920は、ハードウェア922を利用して、処理タスクを有効且つ効率的なやり方で実行してもよい。
少なくとも一実施例では、導入システム906は、導入パイプライン1010を実行してもよい。少なくとも一実施例では、導入パイプライン1010は任意の数のアプリケーションを含んでもよく、これらは、上に記載のAI支援アノテーションを含め、フィードバック・データ(及び/又は他のタイプのデータ)に連続的に、非連続的に、又は他のやり方で適用されてもよい。少なくとも一実施例では、本明細書に記載するように、個々のデバイス用の導入パイプライン1010は、デバイス用の仮想機器と呼ばれてもよい。少なくとも一実施例では、デバイスによって生成されるデータに必要な情報に応じて、1つのデバイスにつき2つ以上の導入パイプライン1010が存在してもよい。
少なくとも一実施例では、導入パイプライン1010にとって利用可能なアプリケーションは、デバイスからのフィードバック・データ又は他のデータに対して処理タスクを実行するために使用することができる任意のアプリケーションを含んでもよい。少なくとも一実施例では、様々なアプリケーションは共通の画像動作を共有することがあるので、いくつかの実施例では、(たとえば、サービス920の1つとして)データ拡張ライブラリを使用して、これらの動作が加速化されてもよい。少なくとも一実施例では、CPU処理に依存する従来の処理手法のボトルネックを回避するために、並列コンピューティング・プラットフォーム1030を使用して、これらの処理タスクがGPU加速化されてもよい。
少なくとも一実施例では、導入システム906は、ユーザ・インターフェース1014(たとえば、グラフィカル・ユーザ・インターフェース、ウェブ・インターフェースなど)を含んでもよく、ユーザ・インターフェース1014は、導入パイプライン1010中に含めるためのアプリケーションを選択することと、アプリケーションを配置することと、アプリケーション又はそのパラメータ若しくは構造を修正又は変更することと、セット・アップ及び/又は導入中に導入パイプライン1010を使用し、それと対話することと、並びに/或いは他のやり方で導入システム906と対話することとを行うために使用されてもよい。少なくとも一実施例では、訓練システム904に関して図示されていないが、ユーザ・インターフェース1014(又は異なるユーザ・インターフェース)は、導入システム906で使用するモデルを選択するため、訓練システム904において訓練若しくは再訓練するモデルを選択するため、且つ/又は他のやり方で訓練システム904と対話するために使用されてもよい。
少なくとも一実施例では、アプリケーション・オーケストレーション・システム1028に加えてパイプライン・マネージャ1012を使用して、導入パイプライン1010のアプリケーション又はコンテナと、サービス920及び/又はハードウェア922との間で対話が管理されてもよい。少なくとも一実施例では、パイプライン・マネージャ1012は、アプリケーションからアプリケーションへの対話、アプリケーションからサービス920への対話、及び/又はアプリケーション若しくはサービスからハードウェア922への対話を容易にするように構成されてもよい。少なくとも一実施例では、ソフトウェア918に含まれるように図示してあるが、これは限定を意図しておらず、いくつかの事例では、パイプライン・マネージャ1012は、サービス920に含まれてもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム1028(たとえば、Kubernetes、DOCKERなど)は、コンテナ・オーケストレーション・システムを含んでもよく、このシステムは、アプリケーションを、調整、管理、スケーリング、及び導入のための論理ユニットとして、コンテナにグループ化することができる。少なくとも一実施例では、導入パイプライン1010からのアプリケーション(たとえば、再構築アプリケーション、セグメント化アプリケーションなど)を個々のコンテナに関連付けることより、各アプリケーションは自己完結型環境内(たとえば、カーネル・レベル)で実行して、スピード及び効率を向上させることができる。
少なくとも一実施例では、各アプリケーション及び/又はコンテナ(又はその画像)は、個々に開発、修正、及び導入されてもよく(たとえば、第1のユーザ又は開発者が、第1のアプリケーションを開発、修正、及び導入し、第2のユーザ又は開発者が、第1のユーザ又は開発者とは別に第2のアプリケーションを開発、修正、及び導入してもよく)、これにより、別のアプリケーション又はコンテナのタスクに邪魔されることなく、1つのアプリケーション及び/又はコンテナのタスクに集中し、注意を払うことが可能になる。少なくとも一実施例では、異なるコンテナ間又はアプリケーション間の通信、及び協調が、パイプライン・マネージャ1012及びアプリケーション・オーケストレーション・システム1028によって支援されてもよい。少なくとも一実施例では、各コンテナ又はアプリケーションの予測される入力及び/又は出力が、(たとえば、アプリケーション又はコンテナの構造に基づき)システムによって知られている限り、アプリケーション・オーケストレーション・システム1028及び/又はパイプライン・マネージャ1012は、アプリケーション又はコンテナのそれぞれ間の通信、及びそれらの間でのリソースの共有を容易にすることができる。少なくとも一実施例では、導入パイプライン1010のアプリケーション又はコンテナのうちの1つ又は複数は、同じサービス及びリソースを共有することができるので、アプリケーション・オーケストレーション・システム1028は、様々なアプリケーション間又はコンテナ間でサービス又はリソースをオーケストレートし、ロード・バランシングを行い、共有を決定してもよい。少なくとも一実施例では、スケジューラを使用して、アプリケーション又はコンテナのリソース要件、これらのリソースの現在の使用量又は計画された使用量、及びリソースの利用可能性が追跡されてもよい。少なくとも一実施例では、こうしてスケジューラは、異なるアプリケーションにリソースを配分し、システムの要件及び利用可能性を考慮してアプリケーション間でリソースを分配してもよい。いくつかの実例では、スケジューラ(及び/又はアプリケーション・オーケストレーション・システム1028の他の構成要素)は、サービスの品質(QoS)、(たとえば、リアルタイム処理を実行するか、遅延処理を実行するかを決定するための)データ出力を必要とする緊急度など、システムに課される制約(たとえば、ユーザ制約)に基づき、リソースの利用可能性及び分配を決定してもよい。
少なくとも一実施例では、導入システム906のアプリケーション又はコンテナによって利用及び共有されるサービス920は、計算サービス1016、AIサービス1018、視覚化サービス1020、及び/又は他のタイプのサービスを含んでもよい。少なくとも一実施例では、アプリケーションは、サービス920のうちの1つ又は複数をコール(たとえば実行)して、アプリケーションのための処理動作を実行してもよい。少なくとも一実施例では、計算サービス1016は、スーパーコンピューティング又は他の高性能コンピューティング(HPC)のタスクを実行するために、アプリケーションによって利用されてもよい。少なくとも一実施例では、アプリケーションのうちの1つ又は複数を介してデータを実質的に同時に処理するため、且つ/又は1つのアプリケーションの1つ又は複数のタスクを実質的に同時に処理するために、計算サービス1016を利用して(たとえば、並列コンピューティング・プラットフォーム1030を使用して)並列処理が実行されてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム1030(たとえば、NVIDIAのCUDA)は、GPU(たとえば、GPU1022)上での汎用コンピューティング(GPGPU)を可能にしてもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム1030のソフトウェア層は、計算カーネルを実行するために仮想命令セット及びGPUの並列計算要素へのアクセスを提供してもよい。少なくとも一実施例では、並列コンピューティング・プラットフォーム1030はメモリを含んでもよく、いくつかの実施例では、メモリは、複数のコンテナ間で、且つ/又は1つのコンテナ内の異なる処理タスク間で共有されてもよい。少なくとも一実施例では、複数のコンテナ、及び/又はコンテナ内の複数のプロセスが、並列コンピューティング・プラットフォーム1030のメモリの共有セグメントからの同じデータを使用するために(たとえば、アプリケーションの複数の異なるステージ、又は複数のアプリケーションが、同じ情報を処理する場合)、プロセス間通信(IPC)コールが生成されてもよい。少なくとも一実施例では、データのコピーを作成し、データをメモリの異なるロケーションに移動(たとえば、読取り/書込みの動作)させるのではなく、メモリの同じロケーションの同じデータが、任意の数の処理タスクに(たとえば、同じ時間、異なる時間などに)使用されてもよい。少なくとも一実施例では、データが使用されて、処理の結果として新規データが生成されるとき、データの新規ロケーションのこの情報は、様々なアプリケーションに記憶され、それらの間で共有されてもよい。少なくとも一実施例では、データのロケーション及び更新済み又は修正済みのデータのロケーションは、コンテナ内でペイロードがどのように理解されるかという定義の一部であってもよい。
少なくとも一実施例では、AIサービス1018は、アプリケーションに関連付けられた(たとえば、アプリケーションの1つ又は複数の処理タスクを実行する役割を課された)機械学習モデルを実行するための推論サービスを実行するために利用されてもよい少なくとも一実施例では、AIサービス1018は、セグメント化、再構築、物体検出、特徴検出、分類、及び/又は他の推論タスクのための機械学習モデル(たとえば、CNNなどのニューラル・ネットワーク)を実行するために、AIシステム1024を利用してもよい。少なくとも一実施例では、導入パイプライン1010のアプリケーションは、訓練システム904からの出力モデル916及び/又はアプリケーションの他のモデルのうちの1つ又は複数を使用して、撮像データ(たとえば、DICOMデータ、RISデータ、CISデータ、REST準拠データ、RPCデータ、生データなど)について推論を実行してもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム1028(たとえば、スケジューラ)を使用する推論の2つ以上の実例が利用可能であってもよい。少なくとも一実施例では、第1のカテゴリは、緊急時の緊急要求について推論を実行するため、又は診断時の放射線医のためなど、より高いサービス・レベル合意を達成できる高優先順位/低レイテンシの経路を含むことができる。少なくとも一実施例では、第2のカテゴリは、緊急ではない要求のため、又は分析が後で実行されてもよい場合に使用することができる標準優先順位の経路を含んでもよい。少なくとも一実施例では、アプリケーション・オーケストレーション・システム1028は、AIサービス1018の異なる推論タスク向けの優先順位経路に基づき、リソース(たとえば、サービス920及び/又はハードウェア922)を分配してもよい。
少なくとも一実施例では、共有ストレージが、システム1000内でAIサービス1018に取り付けられてもよい。少なくとも一実施例では、共有ストレージは、キャッシュ(又は他のタイプのストレージ・デバイス)として動作してもよく、アプリケーションからの推論要求を処理するために使用されてもよい。少なくとも一実施例では、推論要求が送出されたとき、要求は、導入システム906のAPIインスタンスのセットによって受信されてもよく、1つ又は複数のインスタンスが(たとえば、最良な適合のため、ロード・バランシングのためなどに)選択されて、要求が処理されてもよい。少なくとも一実施例では、要求を処理するために、要求がデータベースに入れられてもよく、機械学習モデルは、まだキャッシュにない場合には、モデル・レジストリ924から特定されてもよく、検証ステップは、適切な機械学習モデルがキャッシュ(たとえば、共有ストレージ)に確実にロードされるようにしてもよく、且つ/又はモデルのコピーがキャッシュに保存されてもよい。少なくとも一実施例では、アプリケーションがまだ実行されていない場合、又はアプリケーションの充分なインスタンスが存在しない場合には、スケジューラ(たとえば、パイプライン・マネージャ1012)を使用して、要求において参照されたアプリケーションが起動されてもよい。少なくとも一実施例では、モデルを実行するための推論サーバがまだ起動されていない場合には、推論サーバが起動されてもよい。少なくとも一実施例では、任意の数の推論サーバがモデルごとに起動されてもよい。少なくとも一実施例では、推論サーバがクラスタ化済みであるプル・モデルでは、ロード・バランシングが有利な場合にはいつでもモデルがキャッシュされてもよい。少なくとも一実施例では、推論サーバは、対応する分散サーバに静的にロードされてもよい。
少なくとも一実施例では、推論は、コンテナ内で実行される推論サーバを使用して実行されてもよい。少なくとも一実施例では、推論サーバのインスタンスは、モデルに(任意選択でモデルの複数のバージョンに)関連付けられてもよい。少なくとも一実施例では、モデルに対して推論を実行する要求が受信されたとき、推論サーバのインスタンスが存在しない場合には、新規のインスタンスがロードされてもよい。少なくとも一実施例では、推論サーバをスタートするとき、モデルが推論サーバに渡されてもよく、それにより、推論サーバが異なるインスタンスとして実行されている限り、同じコンテナを使用して異なるモデルにサービス提供されてもよい。
少なくとも一実施例では、アプリケーションの実行中、所与のアプリケーションについて推論要求が受信されてもよく、(たとえば、推論サーバのインスタンスをホストする)コンテナが(まだロードされていなければ)ロードされてもよく、開始プロシージャがコールされてもよい。少なくとも一実施例では、コンテナの前処理論理が、(たとえばCPU及び/又はGPU及び/又はDPUを使用して)入力データに対する任意の追加的な前処理をロード、デコード、及び/又は実行してもよい。少なくとも一実施例では、推論のためにデータが準備されると、コンテナは、必要に応じてデータに推論を実行してもよい。少なくとも一実施例では、これは1つの画像(たとえば手のX線)に対する単一の推論コールを含んでもよく、又は何百もの画像(たとえば胸のCT)について推論を要求してもよい。少なくとも一実施例では、アプリケーションは、完了前に結果を要約してもよく、これは限定することなく、単一の信頼性スコア、ピクセル・レベルのセグメント化、ボクセル・レベルのセグメント化、視覚化の生成、又は所見を要約するためのテキストの生成を含んでもよい。少なくとも一実施例では、異なるモデル又はアプリケーションには、異なる優先順位が割り当てられてもよい。たとえば、リアルタイム(TAT1分未満)の優先順位を有するモデルもあれば、低優先順位(たとえば、TAT10分未満)を有するモデルもある。少なくとも一実施例では、モデル実行時間は、要求元の施設又はエンティティから測定されてもよく、推論サービスに対する実行に加えてパートナ・ネットワーク横断時間を含んでもよい。
少なくとも一実施例では、サービス920と推論アプリケーションの間での要求の移行は、ソフトウェア開発キット(SDK)の後ろに隠されてもよく、キューを通して頑健な移送が提供されてもよい。少なくとも一実施例では、個々のアプリケーション/テナントIDの組合せを求めて、要求がAPIを介してキューに入れられ、SDKは、キューから要求を引き出し、要求をアプリケーションに与える。少なくとも一実施例では、SDKが要求をピックアップする環境において、キューの名称が提供されてもよい。少なくとも一実施例では、キューを介した非同期の通信は、その通信が利用可能になったときに、その通信によって、アプリケーションの任意のインスタンスがワークをピックアップできるようになるので、有用な場合がある。少なくとも一実施例では、結果はキューを介して返送されて、データが失われないようにしてもよい。少なくとも一実施例では、最高優先順位のワークは、アプリケーションのほとんどのインスタンスがキューに接続された状態のキューに進むことができ、一方で最低優先順位のワークは、1つのインスタンスがキューに接続された状態の、受信した順番にタスクを処理するキューに進むことができるので、キューは、ワークをセグメント化する機能も提供することができる。少なくとも一実施例では、アプリケーションは、クラウド1026に生成されたGPU加速インスタンス上で実行されてもよく、推論サービスは、GPU上で推論を実行してもよい。
少なくとも一実施例では、視覚化サービス1020を利用して、アプリケーション及び/又は導入パイプライン1010の出力を見るための視覚化が生成されてもよい。少なくとも一実施例では、視覚化を生成するために、視覚化サービス1020によってGPU1022が利用されてもよい。少なくとも一実施例では、レイ・トレーシングなどのレンダリング効果が、視覚化サービス1020によって実装されて、より高品質の視覚化が生成されてもよい。少なくとも一実施例では、視覚化は、2D画像のレンダリング、3Dボリュームのレンダリング、3Dボリュームの再構築、2Dトモグラフィ・スライス、仮想現実表示、拡張現実表示などを、限定することなく含んでもよい。少なくとも一実施例では、仮想化された環境を使用して、システムのユーザが対話するための仮想のインタラクティブ表示又はインタラクティブ環境(たとえば、仮想環境)が生成されてもよい。少なくとも一実施例では、視覚化サービス1020は、内部ビジュアライザ、シネマティクス、及び/又は他のレンダリング若しくは画像処理の能力若しくは機能(たとえば、レイ・トレーシング、ラスタ化、内部光学など)を含んでもよい。
少なくとも一実施例では、ハードウェア922は、GPU1022、AIシステム1024、クラウド1026、並びに/又は訓練システム904及び/若しくは導入システム906を実行するために使用される任意の他のハードウェアを含んでもよい。少なくとも一実施例では、GPU1022(たとえば、NVIDIAのTESLA及び/又はQUADROのGPU)は、任意の数のGPUを含んでもよく、これらは、計算サービス1016、AIサービス1018、視覚化サービス1020、他のサービス、及び/又はソフトウェア918の任意の特徴若しくは機能の処理タスクを実行するために使用されてもよい。たとえば、AIサービス1018に関して、GPU1022を使用して、撮像データ(又は機械学習モデルによって使用される他のタイプのデータ)に対して前処理が実行されてもよく、機械学習モデルの出力に対して後処理が実行されてもよく、且つ/又は推論が実行されてもよい(たとえば、機械学習モデルが実行されてもよい)。少なくとも一実施例では、クラウド1026、AIシステム1024、及び/又はシステム1000の他の構成要素は、GPU1022を使用してもよい。少なくとも一実施例では、クラウド1026は、深層学習タスクのためにGPU最適化されたプラットフォームを含んでもよい。少なくとも一実施例では、AIシステム1024は、GPUを使用してもよく、クラウド1026、又は深層学習若しくは推論の役割を課された少なくとも一部分は、1つ又は複数のAIシステム1024を使用して実行されてもよい。したがって、ハードウェア922は、個別構成要素として示されているが、これは限定を意図したものではなく、ハードウェア922の任意の構成要素が、ハードウェア922の任意の他の構成要素と組み合わされてもよく、それらによって利用されてもよい。
少なくとも一実施例では、AIシステム1024は、推論、深層学習、機械学習、及び/又は他の人工知能タスク向けに構成された専用のコンピューティング・システム(たとえば、スーパーコンピュータ又はHPC)を含んでもよい。少なくとも一実施例では、AIシステム1024(たとえば、NVIDIAのDGX)は、GPU最適化されたソフトウェア(たとえば、ソフトウェア・スタック)を含んでもよく、これは、CPU、RAM、ストレージ、及び/又は他の構成要素、特徴、若しくは機能に加えて、複数のGPU1022を使用して実行されてもよい。少なくとも一実施例では、1つ又は複数のAIシステム1024は、システム1000の一部又はすべてのAIベースの処理タスクを実行するために、(たとえば、データセンタにおいて)クラウド1026に実装されてもよい。
少なくとも一実施例では、クラウド1026は、GPU加速化インフラストラクチャ(たとえば、NVIDIAのNGC)を含んでもよく、これは、システム1000の処理タスクを実行するためのGPU最適化されたプラットフォームを提供してもよい。少なくとも一実施例では、クラウド1026は、システム1000のAIベースのタスクのうちの1つ又は複数を実行するためのAIシステム1024を(たとえば、ハードウェア抽象化及びスケーリングのプラットフォームとして)含んでもよい。少なくとも一実施例では、クラウド1026は、複数のGPUを利用してアプリケーション・オーケストレーション・システム1028と統合されて、アプリケーションとサービス920の間でシームレスなスケーリング及びロード・バランシングを可能にしてもよい。少なくとも一実施例では、クラウド1026は、本明細書に記載する計算サービス1016、AIサービス1018、及び/又は視覚化サービス1020を含むシステム1000のサービス920の少なくとも一部を実行する役割を課されてもよい。少なくとも一実施例では、クラウド1026は、大小のバッチ推論(たとえば、NVIDIAのテンソルRTの実行)を実行してもよく、加速化された並列コンピューティングのAPI及びプラットフォーム1030(たとえば、NVIDIAのCUDA)を提供してもよく、アプリケーション・オーケストレーション・システム1028(たとえば、KUBERNETES)を実行してもよく、グラフィックス・レンダリングのAPI及びプラットフォーム(たとえば、高品質のシネマティクスを生成するためのレイ・トレーシング、2Dグラフィックス、3Dグラフィックス、及び/又は他のレンダリング技法)を提供してもよく、且つ/又はシステム1000のための他の機能を提供してもよい。
少なくとも一実施例では、患者の機密性を保護するために(たとえば、患者のデータ又は記録が構外で使用されることになる場合)、クラウド1026は、深層学習コンテナ・レジストリなどのレジストリを含んでもよい。少なくとも一実施例では、レジストリは、患者データに対する前処理、後処理、又は他の処理タスクを実行できるアプリケーションのインスタンス化のためのコンテナを記憶してもよい。少なくとも一実施例では、クラウド1026は、患者データ並びにセンサ・データをコンテナに含むデータを受信してもよく、これらのコンテナにおいてセンサ・データについてのみ要求された処理を実行してもよく、次いで、いずれも患者データを抽出、記憶、又は他のやり方でそれにアクセスする必要なしに、結果の出力及び/又は視覚化を適切なパーティ及び/又はデバイス(たとえば、視覚化又は診断に使用される構内の医療デバイス)に転送してもよい。少なくとも一実施例では、患者データの機密性は、HIPAA及び/又は他のデータ規定に準拠して保護される。
本開示の少なくとも一実施例は、以下の条項を考慮して説明することができる。
条項1において、カスタマイズされた機械学習モデル(MLM)を導入するための方法であって、方法は、各々が、初期構成設定に関連付けられた、複数の訓練済みMLMにアクセスするステップと、複数の訓練済みMLMのうちの1つ又は複数のMLMの選択、及び1つ又は複数のMLMのための初期構成設定への修正を示すユーザ入力を受信するためのユーザ・インターフェース(UI)を提供するステップと、ユーザ入力に基づいて、1つ又は複数の選択されたMLMのための修正された構成設定を決定するステップと、修正された構成設定に従って、1つ又は複数の選択されたMLMを修正するためのビルド・エンジンの実行を引き起こすステップと、1つ又は複数の修正されたMLMを導入するための導入エンジンの実行を引き起こすステップと、1つ又は複数の導入されたMLMの表現の、UI上での表示を引き起こすステップとを含む、方法。
条項2において、1つ又は複数の選択されたMLMが、訓練データの第1のセットを使用して事前訓練される、条項1に記載の方法。
条項3において、1つ又は複数の選択されたMLMのドメイン固有訓練のための訓練データの第2のセットを受信するステップと、1つ又は複数の選択されたMLMのドメイン固有訓練を実行するためのパイプラインの訓練エンジンの実行を引き起こすステップとをさらに含む、条項2に記載の方法。
条項4において、1つ又は複数のMLMの選択を示すユーザ入力を受信するより前に、複数の訓練済みMLMのリスティングの、UI上での表示を引き起こすステップと、1つ又は複数のMLMの選択を示すユーザ入力を受信した後に、1つ又は複数の選択されたMLMを初期化するためのエクスポート・エンジンの実行を引き起こすステップとをさらに含む、条項1に記載の方法。
条項5において、エクスポート・エンジンの実行を引き起こすステップが、1つ又は複数の選択されたMLMのアーキテクチャ、或いは1つ又は複数の選択されたMLMのパラメータのうちの少なくとも1つの表現の、UI上での表示を引き起こすステップをさらに含む、条項4に記載の方法。
条項6において、エクスポート・エンジンの実行を引き起こすステップが、1つ又は複数の選択されたMLMを、ユーザ入力データを処理するために利用可能にするステップをさらに含む、条項4に記載の方法。
条項7において、ユーザ入力データを受信するステップと、1つ又は複数の導入されたMLMが、出力データを生成するために、ユーザ入力データに適用されることを引き起こすステップと、出力データの表現、又は出力データの記憶された表現への参照のうちの少なくとも1つ、UI上での表示を引き起こすステップとをさらに含む、条項6に記載の方法。
条項8において、1つ又は複数の選択されたMLMが、パイプライン中に配置されたニューラル・ネットワーク・モデルを備える、条項1に記載の方法。
条項9において、1つ又は複数の選択されたMLMが、音響ニューラル・ネットワーク・モデルと言語ニューラル・ネットワーク・モデルとを備える、条項1に記載の方法。
条項10において、1つ又は複数の選択されたMLMのための修正された構成設定が、音響ニューラル・ネットワーク・モデルのための音響前処理ステージのオーディオ・バッファ・サイズ、音響ニューラル・ネットワーク・モデルのための発話終了設定、音響ニューラル・ネットワーク・モデルのためのレイテンシ設定、又は言語ニューラル・ネットワーク・モデルのための言語設定のうちの少なくとも1つを備える、条項9に記載の方法。
条項11において、1つ又は複数の選択されたMLMが、音声合成ニューラル・ネットワーク・モデル、言語理解ニューラル・ネットワーク・モデル、又は質問回答ニューラル・ネットワーク・モデルのうちの少なくとも1つを備える、条項8に記載の方法。
条項12において、メモリ・デバイスと、メモリ・デバイスに通信可能に結合された、各々が、初期構成設定に関連付けられた、複数の訓練済み機械学習モデル(MLM)にアクセスすることと、複数の訓練済みMLMのうちの1つ又は複数のMLMの選択、及び1つ又は複数のMLMのための初期構成設定の修正を示すユーザ入力を受信するためのユーザ・インターフェース(UI)を提供することと、ユーザ入力に基づいて、1つ又は複数の選択されたMLMのための修正された構成設定を決定することと、修正された構成設定に従って、1つ又は複数の選択されたMLMを修正するためのパイプラインのビルド・エンジンの実行を引き起こすことと、1つ又は複数の修正されたMLMを導入するためのパイプラインの導入エンジンの実行を引き起こすことと、1つ又は複数の導入されたMLMの表現の、UI上での表示を引き起こすこととを行うための1つ又は複数の処理デバイスとを備えるシステム。
条項13において、1つ又は複数の処理デバイスが、さらに、1つ又は複数のMLMの選択を示すユーザ入力を受信するより前に、複数の訓練済みMLMのリスティングの、UI上での表示を引き起こすことと、1つ又は複数のMLMの選択を示すユーザ入力を受信した後に、1つ又は複数の選択されたMLMを初期化するためのパイプラインのエクスポート・エンジンの実行を引き起こすこととを行うためのものである、条項12に記載のシステム。
条項14において、エクスポート・エンジンの実行を引き起こすために、1つ又は複数の処理デバイスが、さらに、1つ又は複数の選択されたMLMのアーキテクチャ、或いは1つ又は複数の選択されたMLMのパラメータのうちの少なくとも1つの表現の、UI上での表示を引き起こすことを行うためのものである、条項13に記載のシステム。
条項15において、1つ又は複数の処理デバイスが、さらに、ユーザ入力データを受信することと、1つ又は複数の導入されたMLMが、出力データを生成するために、ユーザ入力データに適用されることを引き起こすことと、出力データの表現、又は出力データの記憶された表現への参照のうちの少なくとも1つ、UI上での表示を引き起こすこととを行うためのものである、条項12に記載のシステム。
条項16において、1つ又は複数の選択されたMLMのための修正された構成設定が、音響ニューラル・ネットワーク・モデルのための音響前処理ステージのオーディオ・バッファ・サイズ、音響ニューラル・ネットワーク・モデルのための発話終了設定、音響ニューラル・ネットワーク・モデルのためのレイテンシ設定、又は言語ニューラル・ネットワーク・モデルのための言語設定のうちの少なくとも1つを備える、条項12に記載のシステム。
条項17において、1つ又は複数の選択されたMLMが、音声合成ニューラル・ネットワーク・モデル、言語理解ニューラル・ネットワーク・モデル、又は質問回答ニューラル・ネットワーク・モデルのうちの少なくとも1つを備える、条項12に記載のシステム。
条項18において、その上に命令を記憶した非一時的コンピュータ可読媒体であって、命令は、処理デバイスによって実行されたとき、処理デバイスに、各々が、初期構成設定に関連付けられた、複数の訓練済み機械学習モデル(MLM)にアクセスすることと、複数の訓練済みMLMのうちの1つ又は複数のMLMの選択、及び1つ又は複数のMLMのための初期構成設定の修正を示すユーザ入力を受信するためのユーザ・インターフェース(UI)を提供することと、ユーザ入力に基づいて、1つ又は複数の選択されたMLMのための修正された構成設定を決定することと、修正された構成設定に従って、1つ又は複数の選択されたMLMを修正するためのパイプラインのビルド・エンジンの実行を引き起こすことと、1つ又は複数の修正されたMLMを導入するためのパイプラインの導入エンジンの実行を引き起こすことと、1つ又は複数の導入されたMLMの表現の、UI上での表示を引き起こすこととを行わせる、非一時的コンピュータ可読媒体。
条項19において、命令が、さらに、処理デバイスに、1つ又は複数のMLMの選択を示すユーザ入力を受信するより前に、複数の訓練済みMLMのリスティングの、UI上での表示を引き起こすことと、1つ又は複数のMLMの選択を示すユーザ入力を受信した後に、1つ又は複数の選択されたMLMを初期化するためのパイプラインのエクスポート・エンジンの実行を引き起こすこととを行わせるためのものである、請求項18に記載の条項コンピュータ可読媒体のコンピュータ可読媒体。
条項20において、エクスポート・エンジンの実行を引き起こすために、命令が、さらに、処理デバイスに、1つ又は複数の選択されたMLMのアーキテクチャ、或いは1つ又は複数の選択されたMLMのパラメータのうちの少なくとも1つの表現の、UI上での表示を引き起こすことを行わせるためのものである、条項19に記載のコンピュータ可読媒体。
条項21において、命令が、さらに、処理デバイスに、ユーザ入力データを受信することと、1つ又は複数の導入されたMLMが、出力データを生成するために、ユーザ・データに適用されることを引き起こすことと、出力データの表現、又は出力データの記憶された表現への参照のうちの少なくとも1つ、UI上での表示を引き起こすこととを行わせるためのものである、条項18に記載のコンピュータ可読媒体。
条項22において、1つ又は複数の選択されたMLMのための修正された構成設定が、音響ニューラル・ネットワーク・モデルのための音響前処理ステージのオーディオ・バッファ・サイズ、音響ニューラル・ネットワーク・モデルのための発話終了設定、音響ニューラル・ネットワーク・モデルのためのレイテンシ設定、又は言語ニューラル・ネットワーク・モデルのための言語設定のうちの少なくとも1つを備える、条項20に記載のコンピュータ可読媒体。
条項23において、1つ又は複数の選択されたMLMが、音声合成ニューラル・ネットワーク・モデル、言語理解ニューラル・ネットワーク・モデル、又は質問回答ニューラル・ネットワーク・モデルのうちの少なくとも1つを備える、条項20に記載のコンピュータ可読媒体。
他の変形形態は、本開示の範囲内にある。したがって、開示した技法は、様々な修正及び代替的な構成が可能であるが、それらのうち一定の例示的な実施例が図面に示され、上で詳細に説明されてきた。しかし、特定の1つ又は複数の開示された形に本開示を限定する意図はなく、その反対に、特許請求の範囲に定義される開示の趣旨及び範囲に入るすべての修正形態、代替的な構成、及び等価物を網羅することを意図している。
開示される実施例を説明する文脈において(特に、以下の特許請求の範囲の文脈において)「a」及び「an」及び「the」という用語、並びに同様の指示語を使用することは、本明細書に別段の記載のない限り、又は文脈によって明らかに否定されない限り、単数と複数の両方を網羅すると解釈されるべきであり、用語の定義であると解釈されるべきではない。「備える(comprising)」、「有する(having)」、「含む(including)」、「収容する(containing)」という用語は、別段の記載のない限り、オープンエンドの用語(「含むが、これに限定されない」を意味する)と解釈される。「接続される」は、修飾されずに物理的接続を指している場合には、何か介在するものがあったとしても、部分的に又は完全に中に収容される、取り付けられる、又は互いに接合されるものとして解釈される。本明細書において値の範囲を詳述することは、本明細書において別段の記載がない限り、またそれぞれ別々の値が、本明細書に個々に詳述されているかのように明細書に組み込まれていない限り、範囲内に含まれるそれぞれ別々の値を個々に参照する簡潔な方法として機能することを単に意図しているにすぎない。少なくとも一実施例では、「セット」(たとえば、「アイテムのセット」)又は「サブセット」という用語の使用は、文脈によって別段の記載がない、又は否定されていない限り、1つ又は複数の部材を備える空ではない集合として解釈されるべきである。さらに、文脈によって別段の記載がない、又は否定されていない限り、対応するセットの「サブセット」という用語は、対応するセットの厳密なサブセットを必ずしも指すのではなく、サブセットと対応するセットは等しくてもよい。
「A、B、及びCのうちの少なくとも1つ」又は「A、B、及びCのうちの少なくとも1つ」という形の言い回しなどの結合語は、別段の具体的な記載のない限り、又は文脈によって明確に否定されていない限り、項目、用語などが、AかBかCである、又はAとBとCのセットのいずれかの空でないサブセットであることを提示するために一般に使用される文脈で理解される。たとえば、3つの部材を有するセットの説明的な例では、「A、B、及びCのうちの少なくとも1つ」並びに「A、B、及びCのうちの少なくとも1つ」という結合句は、次のセットのうちのいずれかを指す:{A}、{B}、{C}、{A、B}、{A、C}、{B、C}、{A、B、C}。したがって、こうした結合語は、ある一定の実施例が、少なくとも1つのA、少なくとも1つのB、及び少なくとも1つのCのそれぞれの存在を必要とすることを全体的に暗示するものではない。さらに、別段の記載のない、又は文脈によって否定されていない限り、「複数」という用語は、複数である状態を示す(たとえば、「複数の項目(a plurality of items)」は複数の項目(multiple items)を示す)。少なくとも一実施例では、複数である項目の数は、少なくとも2つであるが、明示的に、又は文脈によって示されている場合にはそれより多くてもよい。さらに、別段の記載のない、又は文脈からそうでないことが明らかでない限り、「~に基づく」という言い回しは、「少なくとも部分的に~に基づく」を意味し、「~だけに基づく」を意味しない。
本明細書に記載のプロセスの動作は、本明細書に別段の記載のない、又は文脈によって明確に否定されない限り、任意の好適な順序で実行することができる。少なくとも一実施例では、本明細書に記載のプロセス(又はその変形及び/又は組合せ)などのプロセスは、実行可能命令で構成された1つ又は複数のコンピュータ・システムの制御下で実行され、1つ又は複数のプロセッサ上で、ハードウェアによって、又はそれらの組合せによって集合的に実行されるコード(たとえば、実行可能な命令、1つ若しくは複数のコンピュータ・プログラム、又は1つ若しくは複数のアプリケーション)として実装される。少なくとも一実施例では、コードは、たとえば1つ又は複数のプロセッサによって実行可能な複数の命令を備えるコンピュータ・プログラムの形で、コンピュータ読取り可能ストレージ媒体に記憶される。少なくとも一実施例では、コンピュータ読取り可能ストレージ媒体は、一時的な信号(たとえば、伝播する一時的な電気若しくは電磁送信)を除外するが、一時的な信号のトランシーバ内の非一時的なデータ・ストレージ回路(たとえば、バッファ、キャッシュ、及びキュー)を含む非一時的なコンピュータ読取り可能ストレージ媒体である。少なくとも一実施例では、コード(たとえば、実行可能コード又はソース・コード)は、1つ又は複数の非一時的なコンピュータ読取り可能ストレージ媒体のセットに記憶され、このストレージ媒体には、コンピュータ・システムの1つ又は複数のプロセッサによって実行されたときに(すなわち、実行された結果として)、コンピュータ・システムに本明細書に記載の動作を実行させる実行可能命令が記憶されている(又は、実行可能命令を記憶するための他のメモリを有する)。少なくとも一実施例では、非一時的なコンピュータ読取り可能ストレージ媒体のセットは、複数の非一時的なコンピュータ読取り可能ストレージ媒体を備え、複数の非一時的なコンピュータ読取り可能ストレージ媒体の個々の非一時的なストレージ媒体のうちの1つ又は複数には、すべてのコードがないが、複数の非一時的なコンピュータ読取り可能ストレージ媒体は、集合的にすべてのコードを記憶している。少なくとも一実施例では、実行可能命令は、異なる命令が異なるプロセッサによって実行されるように実行され、たとえば、非一時的なコンピュータ読取り可能ストレージ媒体は命令を記憶し、メインの中央処理装置(「CPU」)は一部の命令を実行し、グラフィックス・プロセッシング・ユニット(「GPU」)及び/又は、潜在的にはGPUと併せてデータ・プロセッシング・ユニット(「DPU」)は他の命令を実行する。少なくとも一実施例では、コンピュータ・システムの異なる構成要素は、別々のプロセッサを有し、異なるプロセッサは、命令の異なるサブセットを実行する。
したがって、少なくとも一実施例では、コンピュータ・システムは、本明細書に記載のプロセスの動作を単独で又は集合的に実行する1つ又は複数のサービスを実装するように構成され、こうしたコンピュータ・システムは、動作の実行を可能にする適用可能なハードウェア及び/又はソフトウェアで構成される。さらに、本開示の少なくとも一実施例を実装するコンピュータ・システムは、単一のデバイスであり、別の実施例では、異なるやり方で動作する複数のデバイスを備える分散型のコンピュータ・システムであり、それにより単一のデバイスがすべての動作を実行しないように分散型のコンピュータ・システムが本明細書に記載の動作を実行する。
本明細書に提供されるあらゆる例、又は例示的な言葉(たとえば、「など」)の使用は、本開示の実施例をより明らかにすることだけを意図しており、別段の主張のない限り、本開示の範囲に制限を加えるものではない。本明細書のいかなる言葉も、特許請求されていない任意の要素を、本開示の実践に不可欠なものとして示すと解釈されるべきではない。
本明細書に引用される出版物、特許出願、及び特許を含むすべての参考文献は、各参考文献が参照により組み込まれることがあたかも個別に明確に示され、その全体が本明細書に記載されたかのように、それと同程度まで参照により本明細書に組み込まれる。
明細書及び特許請求の範囲において、「結合される」及び「接続される」という用語が、その派生語とともに使用されてもよい。これらの用語は、互いに同義語として意図されていない場合があることを理解すべきである。むしろ、特定の例では、「接続される」又は「結合される」は、2つ以上の要素が物理的又は電気的に互いに直接又は間接的に接触していることを示すために使用されてもよい。また「結合される」は、2つ以上の要素が直接互いに接触していないが、なお互いに連動又は相互作用することを意味してもよい。
別段の具体的な記載のない限り、明細書全体を通して「処理する」、「コンピューティング」、「計算する」、又は「判定する」などの用語は、コンピューティング・システムのレジスタ及び/又はメモリ内の、電子的などの物理的な量として表されるデータをコンピューティング・システムのメモリ、レジスタ、又は他のそのような情報ストレージ・デバイス、送信デバイス、若しくはディスプレイ・デバイス内の物理的な量として同様に表される他のデータになるよう操作及び/又は変換するコンピュータ若しくはコンピューティング・システム、又は同様の電子コンピューティング・デバイスの行為及び/又はプロセスを指す。
同様に、「プロセッサ」という用語は、レジスタ及び/又はメモリからの電子データを処理し、その電子データを、レジスタ及び/又はメモリに記憶することができる他の電子データに変換する任意のデバイス、又はデバイスの一部分を指してもよい。非限定的な例として、「プロセッサ」は、CPU又はGPUであってもよい。「コンピューティング・プラットフォーム」は、1つ又は複数のプロセッサを備えてもよい。本明細書で使用する「ソフトウェア」プロセスは、たとえば、タスク、スレッド、及び知的エージェントなど、経時的にワークを実行するソフトウェア及び/又はハードウェアのエンティティを含んでもよい。また、各プロセスは、命令を直列で又は並列で連続的に又は断続的に実行するための複数のプロセスを指してもよい。少なくとも一実施例では、「システム」及び「方法」は、1つ又は複数の方法をシステムが具体化することができ、方法がシステムと考えられてもよい場合に限り、本明細書において交換可能に使用される。
本明細書では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又はそれらをサブシステム、コンピュータ・システム、又はコンピュータ実装機械に入力することに言及することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、関数呼出し、又はアプリケーション・プログラミング・インターフェースへの呼出しのパラメータとしてデータを受信するなど、様々なやり方で実現することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、直列又は並列のインターフェースを介してデータを転送することによって実現することができる。少なくとも一実施例では、アナログ・データ又はデジタル・データを得る、取得する、受信する、又は入力するプロセスは、提供するエンティティから取得するエンティティにコンピュータ・ネットワークを介してデータを転送することによって実現することができる。また、少なくとも一実施例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示することにも言及することができる。様々な例では、アナログ・データ又はデジタル・データを提供する、出力する、送信する、送る、又は提示するプロセスは、関数呼出しの入力又は出力のパラメータ、アプリケーション・プログラミング・インターフェース若しくはプロセス間通信機構のパラメータとしてデータを転送することによって実現することができる。
本明細書の記載は、記載した技法の例示的な実施例について述べているが、記載した機能を実装するために他のアーキテクチャが使用されてもよく、この他のアーキテクチャは、本開示の範囲内にあることが意図される。さらに、説明を目的として、役割の具体的な分配が定義され得るが、様々な機能及び役割は、状況に応じて異なるやり方で分配及び分割されてもよい。
さらに、主題は、構造的特徴及び/又は方法論的動作に特有の言語で説明されてきたが、添付の特許請求の範囲で特許請求される主題は、説明した特有の特徴又は動作に必ずしも限定されないことが理解されるべきである。むしろ、特有の特徴及び動作は、特許請求の範囲を実装する例示的な形として開示されている。

Claims (23)

  1. カスタマイズされた機械学習モデル(MLM)を導入するための方法であって、前記方法は、
    各々が、初期構成設定に関連付けられた、複数の訓練済みMLMにアクセスするステップと、
    前記複数の訓練済みMLMのうちの1つ又は複数のMLMの選択、及び前記1つ又は複数のMLMのための初期構成設定への修正を示すユーザ入力を受信するためのユーザ・インターフェース(UI)を提供するステップと、
    前記ユーザ入力に基づいて、前記1つ又は複数の選択されたMLMのための修正された構成設定を決定するステップと、
    前記修正された構成設定に従って、前記1つ又は複数の選択されたMLMを修正するためのビルド・エンジンの実行を引き起こすステップと、
    前記1つ又は複数の修正されたMLMを導入するための導入エンジンの実行を引き起こすステップと、
    前記1つ又は複数の導入されたMLMの表現の、前記UI上での表示を引き起こすステップと
    を含む、方法。
  2. 前記1つ又は複数の選択されたMLMが、訓練データの第1のセットを使用して事前訓練される、請求項1に記載の方法。
  3. 前記1つ又は複数の選択されたMLMのドメイン固有訓練のための訓練データの第2のセットを受信するステップと、
    前記1つ又は複数の選択されたMLMの前記ドメイン固有訓練を実行するための前記パイプラインの訓練エンジンの実行を引き起こすステップと
    をさらに含む、請求項2に記載の方法。
  4. 前記1つ又は複数のMLMの選択を示す前記ユーザ入力を受信するより前に、前記複数の訓練済みMLMのリスティングの、前記UI上での表示を引き起こすステップと、
    前記1つ又は複数のMLMの選択を示す前記ユーザ入力を受信した後に、前記1つ又は複数の選択されたMLMを初期化するためのエクスポート・エンジンの実行を引き起こすステップと
    をさらに含む、請求項1に記載の方法。
  5. 前記エクスポート・エンジンの実行を引き起こすステップが、
    前記1つ又は複数の選択されたMLMのアーキテクチャ、或いは前記1つ又は複数の選択されたMLMのパラメータのうちの少なくとも1つの表現の、前記UI上での表示を引き起こすステップ
    をさらに含む、請求項4に記載の方法。
  6. 前記エクスポート・エンジンの実行を引き起こすステップが、
    前記1つ又は複数の選択されたMLMを、ユーザ入力データを処理するために利用可能にするステップ
    をさらに含む、請求項4に記載の方法。
  7. 前記ユーザ入力データを受信するステップと、
    前記1つ又は複数の導入されたMLMが、出力データを生成するために、前記ユーザ入力データに適用されることを引き起こすステップと、
    前記出力データの表現、又は前記出力データの記憶された表現への参照のうちの少なくとも1つ、前記UI上での表示を引き起こすステップと
    をさらに含む、請求項6に記載の方法。
  8. 前記1つ又は複数の選択されたMLMが、パイプライン中に配置されたニューラル・ネットワーク・モデルを備える、請求項1に記載の方法。
  9. 前記1つ又は複数の選択されたMLMが、音響ニューラル・ネットワーク・モデルと言語ニューラル・ネットワーク・モデルとを備える、請求項1に記載の方法。
  10. 前記1つ又は複数の選択されたMLMのための前記修正された構成設定が、
    前記音響ニューラル・ネットワーク・モデルのための音響前処理ステージのオーディオ・バッファ・サイズ、
    前記音響ニューラル・ネットワーク・モデルのための発話終了設定、
    前記音響ニューラル・ネットワーク・モデルのためのレイテンシ設定、又は
    前記言語ニューラル・ネットワーク・モデルのための言語設定
    のうちの少なくとも1つを備える、請求項9に記載の方法。
  11. 前記1つ又は複数の選択されたMLMが、音声合成ニューラル・ネットワーク・モデル、言語理解ニューラル・ネットワーク・モデル、又は質問回答ニューラル・ネットワーク・モデルのうちの少なくとも1つを備える、請求項8に記載の方法。
  12. メモリ・デバイスと、
    前記メモリ・デバイスに通信可能に結合された、
    各々が、初期構成設定に関連付けられた、複数の訓練済み機械学習モデル(MLM)にアクセスすることと、
    前記複数の訓練済みMLMのうちの1つ又は複数のMLMの選択、及び前記1つ又は複数のMLMのための初期構成設定の修正を示すユーザ入力を受信するためのユーザ・インターフェース(UI)を提供することと、
    前記ユーザ入力に基づいて、前記1つ又は複数の選択されたMLMのための修正された構成設定を決定することと、
    前記修正された構成設定に従って、前記1つ又は複数の選択されたMLMを修正するためのパイプラインのビルド・エンジンの実行を引き起こすことと、
    前記1つ又は複数の修正されたMLMを導入するための前記パイプラインの導入エンジンの実行を引き起こすことと、
    前記1つ又は複数の導入されたMLMの表現の、前記UI上での表示を引き起こすことと
    を行うための1つ又は複数の処理デバイスと
    を備えるシステム。
  13. 前記1つ又は複数の処理デバイスが、さらに、
    前記1つ又は複数のMLMの選択を示す前記ユーザ入力を受信するより前に、前記複数の訓練済みMLMのリスティングの、前記UI上での表示を引き起こすことと、
    前記1つ又は複数のMLMの選択を示す前記ユーザ入力を受信した後に、前記1つ又は複数の選択されたMLMを初期化するための前記パイプラインのエクスポート・エンジンの実行を引き起こすことと
    を行うためのものである、請求項12に記載のシステム。
  14. 前記エクスポート・エンジンの実行を引き起こすために、前記1つ又は複数の処理デバイスが、さらに、
    前記1つ又は複数の選択されたMLMのアーキテクチャ、或いは前記1つ又は複数の選択されたMLMのパラメータのうちの少なくとも1つの表現の、前記UI上での表示を引き起こすこと
    を行うためのものである、請求項13に記載のシステム。
  15. 前記1つ又は複数の処理デバイスが、さらに、
    ユーザ入力データを受信することと、
    前記1つ又は複数の導入されたMLMが、出力データを生成するために、前記ユーザ入力データに適用されることを引き起こすことと、
    前記出力データの表現、又は前記出力データの記憶された表現への参照のうちの少なくとも1つ、前記UI上での表示を引き起こすことと
    を行うためのものである、請求項12に記載のシステム。
  16. 前記1つ又は複数の選択されたMLMのための前記修正された構成設定が、
    音響ニューラル・ネットワーク・モデルのための音響前処理ステージのオーディオ・バッファ・サイズ、
    前記音響ニューラル・ネットワーク・モデルのための発話終了設定、
    前記音響ニューラル・ネットワーク・モデルのためのレイテンシ設定、又は
    言語ニューラル・ネットワーク・モデルのための言語設定
    のうちの少なくとも1つを備える、請求項12に記載のシステム。
  17. 前記1つ又は複数の選択されたMLMが、音声合成ニューラル・ネットワーク・モデル、言語理解ニューラル・ネットワーク・モデル、又は質問回答ニューラル・ネットワーク・モデルのうちの少なくとも1つを備える、請求項12に記載のシステム。
  18. その上に命令を記憶した非一時的コンピュータ可読媒体であって、前記命令は、処理デバイスによって実行されたとき、前記処理デバイスに、
    各々が、初期構成設定に関連付けられた、複数の訓練済み機械学習モデル(MLM)にアクセスすることと、
    前記複数の訓練済みMLMのうちの1つ又は複数のMLMの選択、及び前記1つ又は複数のMLMのための初期構成設定の修正を示すユーザ入力を受信するためのユーザ・インターフェース(UI)を提供することと、
    前記ユーザ入力に基づいて、前記1つ又は複数の選択されたMLMのための修正された構成設定を決定することと、
    前記修正された構成設定に従って、前記1つ又は複数の選択されたMLMを修正するためのパイプラインのビルド・エンジンの実行を引き起こすことと、
    前記1つ又は複数の修正されたMLMを導入するための前記パイプラインの導入エンジンの実行を引き起こすことと、
    前記1つ又は複数の導入されたMLMの表現の、前記UI上での表示を引き起こすことと
    を行わせる、非一時的コンピュータ可読媒体。
  19. 前記命令が、さらに、前記処理デバイスに、
    前記1つ又は複数のMLMの選択を示す前記ユーザ入力を受信するより前に、前記複数の訓練済みMLMのリスティングの、前記UI上での表示を引き起こすことと、
    前記1つ又は複数のMLMの選択を示す前記ユーザ入力を受信した後に、前記1つ又は複数の選択されたMLMを初期化するための前記パイプラインのエクスポート・エンジンの実行を引き起こすことと
    を行わせるためのものである、請求項18に記載のコンピュータ可読媒体。
  20. 前記エクスポート・エンジンの実行を引き起こすために、前記命令が、さらに、前記処理デバイスに、
    前記1つ又は複数の選択されたMLMのアーキテクチャ、或いは前記1つ又は複数の選択されたMLMのパラメータのうちの少なくとも1つの表現の、前記UI上での表示を引き起こすこと
    を行わせるためのものである、請求項19に記載のコンピュータ可読媒体。
  21. 前記命令が、さらに、前記処理デバイスに、
    ユーザ入力データを受信することと、
    前記1つ又は複数の導入されたMLMが、出力データを生成するために、前記ユーザ・データに適用されることを引き起こすことと、
    前記出力データの表現、又は前記出力データの記憶された表現への参照のうちの少なくとも1つ、前記UI上での表示を引き起こすことと
    を行わせるためのものである、請求項18に記載のコンピュータ可読媒体。
  22. 前記1つ又は複数の選択されたMLMのための前記修正された構成設定が、
    音響ニューラル・ネットワーク・モデルのための音響前処理ステージのオーディオ・バッファ・サイズ、
    前記音響ニューラル・ネットワーク・モデルのための発話終了設定、
    前記音響ニューラル・ネットワーク・モデルのためのレイテンシ設定、又は
    言語ニューラル・ネットワーク・モデルのための言語設定
    のうちの少なくとも1つを備える、請求項20に記載のコンピュータ可読媒体。
  23. 前記1つ又は複数の選択されたMLMが、音声合成ニューラル・ネットワーク・モデル、言語理解ニューラル・ネットワーク・モデル、又は質問回答ニューラル・ネットワーク・モデルのうちの少なくとも1つを備える、請求項20に記載のコンピュータ可読媒体。
JP2021147468A 2021-02-12 2021-09-10 機械学習モデルの効率的な訓練及び導入のためのパイプライン Pending JP2022123817A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US17/248,906 2021-02-12
US17/248,906 US20220261631A1 (en) 2021-02-12 2021-02-12 Pipelines for efficient training and deployment of machine learning models

Publications (1)

Publication Number Publication Date
JP2022123817A true JP2022123817A (ja) 2022-08-24

Family

ID=82611025

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2021147468A Pending JP2022123817A (ja) 2021-02-12 2021-09-10 機械学習モデルの効率的な訓練及び導入のためのパイプライン

Country Status (4)

Country Link
US (1) US20220261631A1 (ja)
JP (1) JP2022123817A (ja)
CN (1) CN114925846A (ja)
DE (1) DE102022102912A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB202004594D0 (en) * 2020-03-30 2020-05-13 Microsoft Technology Licensing Llc Partitioning for an execution pipeline
US11978438B1 (en) * 2021-03-29 2024-05-07 Amazon Technologies, Inc. Machine learning model updating
US11889112B2 (en) * 2021-04-30 2024-01-30 Tencent America LLC Block-wise content-adaptive online training in neural image compression
WO2024065028A1 (en) * 2022-09-26 2024-04-04 FORMIC Al LTD. Application of an ai-based model to a preprocessed data set
CN117785486B (zh) * 2024-02-27 2024-05-24 融科联创(天津)信息技术有限公司 环境资源调配方法、装置、设备和介质

Also Published As

Publication number Publication date
DE102022102912A1 (de) 2022-08-18
US20220261631A1 (en) 2022-08-18
CN114925846A (zh) 2022-08-19

Similar Documents

Publication Publication Date Title
EP3889914A2 (en) Unsupervised learning of scene structure for synthetic data generation
US20220261631A1 (en) Pipelines for efficient training and deployment of machine learning models
WO2021061962A1 (en) Transfer learning for neural networks
US11901047B2 (en) Medical visual question answering
US20220230376A1 (en) Motion prediction using one or more neural networks
US20230109379A1 (en) Diffusion-based generative modeling for synthetic data generation systems and applications
AU2021236965B2 (en) Automatically generating diverse text
US20220269548A1 (en) Profiling and performance monitoring of distributed computational pipelines
WO2021242840A1 (en) Scene graph generation for unlabeled data
US11501165B2 (en) Contrastive neural network training in an active learning environment
CN117296058A (zh) 作为简单有效的对抗攻击方法的变体不一致攻击(via)
US11798549B2 (en) Generating action items during a conferencing session
KR102434666B1 (ko) 사전 데이터베이스를 활용하여 음성 데이터에 기반한 텍스트를 생성하기 위한 방법 및 컴퓨팅 장치
US20230377099A1 (en) Synthesizing content using diffusion models in content generation systems and applications
US20240013802A1 (en) Inferring emotion from speech in audio data using deep learning
WO2023014940A1 (en) Application management platform for hyper-converged cloud infrastructures
US20240161728A1 (en) Synthetic speech generation for conversational ai systems and applications
US20240119927A1 (en) Speaker identification, verification, and diarization using neural networks for conversational ai systems and applications
US20240153531A1 (en) Multi-scale speaker diarization for conversational ai systems and applications
US20230297074A1 (en) Interpreting discrete tasks from complex instructions for robotic systems and applications
US20240095463A1 (en) Natural language processing applications using large language models
US20240038212A1 (en) Normalizing flows with neural splines for high-quality speech synthesis
US20240185001A1 (en) Dataset generation using large language models
US20240062014A1 (en) Generating canonical forms for task-oriented dialogue in conversational ai systems and applications
US20230342666A1 (en) Multi-track machine learning model training using early termination in cloud-supported platforms