さまざまな図面における同様の参照番号および符号は同様の要素を示す。
詳細な説明
本明細書は、1つ以上のロケーションにおける1つ以上のコンピュータ上にコンピュータプログラムとして実装されるシステムであって、ハードウェアリソースのターゲットセット上で特定の機械学習タスクを実行するように構成されたタスクニューラルネットワークのためのアーキテクチャを決定するシステムについて説明する。
タスクニューラルネットワークは、任意の種類のデジタルデータ入力を受信するとともに、当該入力に基づいて任意の種類のスコア、分類、または回帰出力を生成するように構成することができる。言い換えれば、タスクニューラルネットワークが実行するように構成された特定の機械学習タスクは、スコアリングタスク、分類タスク、および/または回帰タスクを含む多種多様なタスクのいずれかに対応し得る。以下で説明するように、このようなタスクは、画像、テキスト、音声、および他のデータの処理を伴う応用例等の広範囲の応用例において有用であり得る。
たとえば、タスクニューラルネットワークへの入力が画像であるかまたは画像から抽出された特徴である場合、所与の画像についてタスクニューラルネットワークによって生成される出力は、オブジェクトカテゴリのセットの各々についてのスコアであり得る。ここで、各スコアは、画像がそのカテゴリに属するオブジェクトの画像を含む推定尤度を表わす。
別の例として、タスクニューラルネットワークへの入力がインターネットリソース(たとえば、ウェブページ)、ドキュメント、もしくはドキュメントの部分、または、インターネットリソース、ドキュメント、もしくはドキュメントの部分から抽出された特徴である場合、所与のインターネットリソース、ドキュメント、またはドキュメントの部分についてタスクニューラルネットワークによって生成される出力は、トピックのセットの各々についてのスコアであり得る。ここで、各スコアは、インターネットリソース、ドキュメント、またはドキュメント部分がトピックに関するものである推定尤度を表わす。
別の例として、タスクニューラルネットワークへの入力が特定の広告についての印象コンテキストの特徴である場合、タスクニューラルネットワークによって生成される出力は、特定の広告がクリックされるであろう推定尤度を表わすスコアであり得る。
別の例として、タスクニューラルネットワークへの入力が、ユーザについての個人化された推奨の特徴、たとえば、推奨についてのコンテキストを特徴付ける特徴、たとえば、ユーザによって行われた以前のアクションを特徴付ける特徴である場合、タスクニューラルネットワークによって生成される出力は、コンテンツアイテムのセットの各々についてのスコアであり得る。ここで、各スコアは、コンテンツアイテムが推奨されることに対してユーザが好意的に応答するであろう推定尤度を表わす。
別の例として、タスクニューラルネットワークへの入力が1つの言語のテキストのシーケンスである場合、タスクニューラルネットワークによって生成される出力は、別の言語のテキスト部分のセットの各々についてのスコアであり得る。ここで、各スコアは、他の言語のテキスト部分が当該他の言語への入力テキストの適切な翻訳である推定尤度を表わす。
別の例として、タスクニューラルネットワークへの入力が発話を表わすシーケンスである場合、タスクニューラルネットワークによって生成される出力は、テキスト部分のセットの各々についてのスコアであり得る。ここで、各スコアは、テキスト部分が発話についての正確な写しである推定尤度を表わす。
いくつかの例では、タスクニューラルネットワークのためのアーキテクチャを決定するシステムは、図1を参照して以下でさらに詳細に説明するように、システム100に対応し得る。同様に、いくつかの例では、タスクニューラルネットワークのアーキテクチャは、それぞれ図1および図2を参照して以下でさらに詳細に説明するように、ニューラルネットワークアーキテクチャ150および200の一方または両方に対応し得る。
図1は、例示的なニューラルアーキテクチャ検索(NAS)システム100を示す。ニューラルアーキテクチャ検索システム100は、以下で説明されるシステム、コンポーネントおよび技術が実装され得る、1つ以上のロケーションにおける1つ以上のコンピュータ上でコンピュータプログラムとして実装されるシステムの一例である。
ニューラルアーキテクチャ検索システム100は、ハードウェアリソースのターゲットセット上で特定の機械学習タスクを実行するように構成されたタスクニューラルネットワークのためのアーキテクチャを決定するシステムである。当該アーキテクチャは、ニューラルネットワーク内の層の数、層の各々によって実行される演算、およびニューラルネットワーク内の層間の接続性、すなわち、どの層がニューラルネットワーク内の他のどの層から入力を受信するか、を定義している。上述したように、タスクニューラルネットワークは、デジタルデータ入力を受信するとともに、当該入力に基づいて出力を生成するために特定の機械学習タスク(たとえば、スコアリング、分類、回帰など)を実行するように構成され得る。システム100によって決定されるアーキテクチャは、ニューラルネットワーク内の層の数、層の各々によって実行される演算、およびニューラルネットワーク内の層間の接続性、すなわち、どの層がニューラルネットワーク内の他のどの層から入力を受信するか、を定義する。
ニューラルアーキテクチャ検索システム100は、コントローラ110と、トレーニングエンジン120と、ターゲットハードウェア展開エンジン130と、性能測定エンジン140とを含む。簡潔に述べると、以下でさらに詳細に説明するように、コントローラ110は、事前に選択された候補ニューラルネットワークアーキテクチャの性能尺度(たとえば、多目的性能メトリック142)に基づいて、候補アーキテクチャ検索空間111から候補ニューラルネットワークアーキテクチャを繰返し選択する。トレーニングエンジン120は、トレーニングデータ102および検証セット104を用いて、コントローラ110によって選択された各候補ニューラルネットワークアーキテクチャをトレーニングして、特定の機械学習タスクを実行するとともに、特定の機械学習タスクに対するそれぞれのトレーニング済み候補ニューラルネットワークアーキテクチャの性能に基づいて、各々のトレーニング済み候補ニューラルネットワークアーキテクチャについての第1の性能メトリック122を決定する。ターゲットハードウェア展開エンジン130は、ハードウェアリソースのターゲットセット(たとえば、データセンタ内の集合ハードウェアアクセラレータ)上で各々のトレーニング済み候補ニューラルネットワークアーキテクチャを実行し、ハードウェアリソースのターゲットセット上に展開されたときのそれぞれのトレーニング済み候補ニューラルネットワークアーキテクチャの性能に基づいて、各々のトレーニング済み候補ニューラルネットワークアーキテクチャについての第2の性能メトリック132を決定する。性能測定エンジン140は、それぞれのトレーニング済み候補ニューラルネットワークアーキテクチャについて決定された第1の性能メトリック122および第2の性能メトリック132に基づいて、各々のトレーニング済み候補ニューラルネットワークアーキテクチャについての多目的性能メトリック142を決定する。いくつかの例では、性能測定エンジン140はさらに、各々のトレーニング済み候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142をコントローラ110に提供し、次いで、当該コントローラ110は、当該多目的性能メトリック142に少なくとも部分的に基づいて候補アーキテクチャ検索空間111から1つ以上の追加の候補ニューラルネットワークアーキテクチャを選択する。
一例として、コントローラ110は、1つ以上の事前に選択された候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142に少なくとも部分的に基づいて、候補アーキテクチャ検索空間111からk番目の候補ニューラルネットワークアーキテクチャを選択し得る。たとえば、k番目の候補ニューラルネットワークアーキテクチャの選択は、コントローラ110によって選択された(k-1)番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142、コントローラ110によって選択された(k-2)番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142、などに少なくとも部分的に基づいている。(多目的性能メトリック142について、以下でより詳細に説明する。)この例では、トレーニングエンジン120は、次いで、トレーニングデータ102および検証セット104を用いて、コントローラ110によって選択されるk番目の候補ニューラルネットワークアーキテクチャのインスタンスをトレーニングして、特定の機械学習タスクを実行するとともに、特定の機械学習タスクのその性能に基づいて、k番目の候補ニューラルネットワークアーキテクチャのトレーニング済みインスタンスについて第1の性能メトリック122を決定し得る。さらに、この例では、ターゲットハードウェア展開エンジン130は、ハードウェアリソースのターゲットセット(たとえば、データセンタ内の集合ハードウェアアクセラレータ)上でk番目の候補ニューラルネットワークアーキテクチャのトレーニング済みインスタンスを実行し、ハードウェアリソースのターゲットセット上に展開されたときのその性能に基づいて、k番目の候補ニューラルネットワークアーキテクチャのトレーニング済みインスタンスについての第2の性能メトリック132を決定し得る。次いで、性能測定エンジン140は、この例では、k番目の候補ニューラルネットワークアーキテクチャのトレーニング済みインスタンスについて、トレーニングエンジン120およびターゲットハードウェア展開エンジン130によって決定された第1の性能メトリック122および第2の性能メトリック132に基づいて、コントローラ110によって選択されたk番目の候補ニューラルネットワークアーキテクチャについての多目的性能メトリック142を決定し得る。この例では、性能測定エンジン140は、コントローラ110によって選択されたk番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142を提供してもよく、次いで、コントローラ110によって選択されたk番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142、コントローラ110によって選択された(k-1)番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142、コントローラ110によって選択された(k-2)番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142などに少なくとも部分的に基づいて、候補アーキテクチャ検索空間111から(k+1)番目の候補ニューラルネットワークアーキテクチャを選択し得る。
概して、トレーニングデータ102および検証セット104はともに、ニューラルネットワーク入力のセットと、各ネットワーク入力ごとに、特定のタスクを実行するためにニューラルネットワークによって生成されるべきそれぞれのターゲット出力とを含む。たとえば、トレーニングデータのより大きなセットは、トレーニングデータ102および検証セット104を生成するためにランダムに区分けされていてもよい。
システム100は、さまざまな方法のいずれかでトレーニングデータ102および検証セット104を受信し得る。たとえば、システム100は、たとえば、当該システム100によって利用可能にされるアプリケーションプログラミングインターフェイス(application programming interface:API)を用いて、データ通信ネットワークを介して、システムの遠隔ユーザからのアップロードとしてトレーニングデータを受信し得るとともに、当該アップロードされたデータをトレーニングデータ102および検証セット104にランダムに分割し得る。別の例として、システム100は、ニューラルネットワークをトレーニングするために、システム100によって既に維持されているどのデータを用いるべきかを指定する入力をユーザから受信し、次いで、当該指定されたデータをトレーニングデータ102と検証セット104とに分割することができる。
コントローラ110は、候補アーキテクチャ検索空間111から候補ニューラルネットワークアーキテクチャを選択し、選択された候補ニューラルネットワークアーキテクチャを定義する出力112を生成するように構成される。候補アーキテクチャ検索空間111は、候補ニューラルネットワークアーキテクチャのコンポーネントによって実行され得る演算のセットまたはリストを含み得る。候補アーキテクチャ検索空間111において反映される演算は、システム100が候補ニューラルネットワークアーキテクチャを構築、設計、または開発し得る基となる構築ブロックとして見なされてもよい。いくつかの例では、候補アーキテクチャ検索空間111から各候補ニューラルネットワークアーキテクチャを選択するために、コントローラ110は、各候補ニューラルネットワークアーキテクチャの1つ以上のコンポーネントの各々について、候補アーキテクチャ検索空間111において反映された演算のセットまたはリストから、それぞれのコンポーネントによって実行されるべき演算を選択するように構成される。
いくつかの実現例では、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストは、候補ニューラルネットワークアーキテクチャがハードウェアリソースのターゲットセットのいくつかの属性を活用するように動作するかまたは機能するように意図されている対象のハードウェアリソースのターゲットセットに固有の演算を含み得る。このため、ハードウェアリソースのターゲットセットが1つ以上のTPUおよび/またはGPUに対応する例では、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストは、改善された演算強度、並列性、および/または実行効率を促進する演算を含み得る。このようにして、候補アーキテクチャ検索空間111を用いてコントローラ110によって選択される候補ニューラルネットワークアーキテクチャは、ハードウェアリソースのターゲットセット上に展開されたときに比較的高速で特定のタスクを実行することができる可能性がより高くなり得る。特に、ハードウェアリソースのターゲットセットが1つ以上のTPUおよび/またはGPUに対応する例では、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストは、深度に関する畳み込みを隣接する1×1畳み込みと融合するための1つ以上の演算、入力テンソルの空間的広がりを減少させつつ入力テンソルの深度を増大させることによって当該入力テンソルを再形成する1つ以上の空間-深度間の畳み込み演算(たとえば、2×2畳み込み)、または、それらの組合せを含み得る。いくつかの実現例では、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストに含まれる1つ以上の空間-深度間の演算は、ストライド-nのn×n畳み込み(たとえば、n×nカーネルでの畳み込みを用いる演算)を用いる1つ以上の演算を含み得る(ここで、nは1よりも大きい整数値(たとえば、2または4)を表わす)とともに、
H×W×Cテンソル入力を、
に再形成する役割を果たし得る。いくつかの例では、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストはさらに、ハードウェアリソースのターゲットセットの1つ以上のメモリにおいて1つ以上のメモリ演算を実行することによって入力テンソルの形状を各々が修正する1つ以上の他のタイプの畳み込み演算および/または1つ以上の再形成演算を含む1つ以上の追加の演算を含み得る。たとえば、候補アーキテクチャ検索空間111の検索空間は、テンソルの要素をメモリ内の別のメモリロケーションに移動させることによって、もしくは、要素を或るメモリロケーションから別のメモリロケーションにコピーすることによって、またはこれら両方によって、入力テンソルを再形成する演算(たとえば、空間-バッチ間の演算)を含み得る。特定の例として、当該演算は、空間データのブロックを深度方向に再配置するものであり得る。より具体的には、この演算は、高さ寸法および幅寸法からの値を深度寸法に移動させた入力テンソルのコピーを出力する。いくつかの実現例では、この演算は空間-バッチ間の演算に対応する。
いくつかの例では、コントローラ110は、コントローラ110の動作を管理するパラメータ(本明細書では「コントローラパラメータ」と称される)に従って出力112を生成するように構成される。いくつかの実現例では、コントローラ110は、システム100の性能測定エンジン140および/またはシステム100内で生成される他のフィードバックを参照して以下でさらに詳細に説明するように、多目的性能メトリック142に少なくとも部分的に基づいて、候補アーキテクチャ検索空間111から少なくともいくつかの候補ニューラルネットワークアーキテクチャを選択するように構成される。前述の実現例のうちの少なくともいくつかでは、コントローラ110のコントローラパラメータのうちの1つ以上は、多目的性能メトリック142および/またはシステム100内で生成される他のフィードバックに少なくとも部分的に基づいて調節または調整され得る。コントローラ110は、強化学習、進化的探索、差別化可能な検索などに基づいて、NAS技術などの多種多様なNAS技術のいずれかを用いて、候補ニューラルネットワークアーキテクチャを選択してもよく、および/またはこのような候補ニューラルネットワークアーキテクチャを指定する出力112を生成してもよい。いくつかの例では、コントローラ110は、コントローラパラメータに従って出力シーケンスを生成するように構成された、再帰型ニューラルネットワーク(recurrent neural network:RNN)などのニューラルネットワークを表わすかまたは含む。概して、これらの例では、システム100は、コントローラパラメータの値を調節するようにコントローラ110をトレーニングすることによって、ニューラルネットワークのためのアーキテクチャを決定する。
コントローラ110によって選択されるとともにコントローラ110によって生成された出力112で表される各候補ニューラルネットワークアーキテクチャについて、トレーニングエンジン120は、トレーニングデータ102に関して出力112によって定義されるアーキテクチャを有するニューラルネットワークのインスタンスをトレーニングするとともに、検証セット104に関して当該トレーニング済みインスタンスの性能(たとえば、精度)を評価する。いくつかの実現例では、出力112によって定義されるアーキテクチャを有するニューラルネットワークのトレーニング済みインスタンスの性能を評価するために、トレーニングエンジン120は、特定の機械学習タスクに関して当該トレーニング済みインスタンスの性能の第1の性能メトリック122または尺度を決定する。いくつかの例では、所与の候補ニューラルネットワークアーキテクチャについて決定された第1の性能メトリック122は、候補ニューラルネットワークアーキテクチャが特定の機械学習タスクを実行することが可能であり得る精度のレベルを示し得る。
トレーニングエンジン120は、コントローラ110によって選択された候補ニューラルネットワークアーキテクチャについて決定された第1の性能メトリック122を、さらなる評価のために性能測定エンジン140に提供し得る。加えて、トレーニングエンジン120はまた、コントローラ110によって選択された候補ニューラルネットワークアーキテクチャのトレーニング済みインスタンス124をターゲットハードウェア展開エンジン130に提供し得る。
ターゲットハードウェア展開エンジン130は、ハードウェアリソースのターゲットセット上に展開されたときのコントローラ110によって選択された(かつ出力112によって定義された)各ニューラルネットワークアーキテクチャの各トレーニング済みインスタンスの第2の性能メトリック132または性能の尺度を決定するために1つ以上の演算を実行する。いくつかの例では、所与の候補ニューラルネットワークアーキテクチャについて決定された第2の性能メトリック132は、候補ニューラルネットワークアーキテクチャがハードウェアリソースのターゲットセット上に展開されたときに特定の機械学習タスクを実行することが可能であり得る速度またはレイテンシのレベルを示し得る。所与の候補ニューラルネットワークアーキテクチャについての第2の性能メトリック132を決定するために、ターゲットハードウェア展開エンジン130は、ハードウェアリソースのターゲットセット上で候補ニューラルネットワークアーキテクチャを実行するための1つ以上の演算を実行し得る。
上述したように、いくつかの実現例では、ハードウェアリソースのターゲットセットは1つ以上のTPUおよび/またはGPUに対応し得る。例のうちいくつかにおいては、ハードウェアリソースのターゲットセットは、1つ以上のTPU、GPU、他のタイプの行列マシンおよび/もしくはベクトルマシン、またはそれらの組合せを含み得る、データセンタ内のハードウェアアクセラレータの集合に対応し得る。主に1つ以上のTPUおよび/またはGPUに関して説明されるが、いくつかの例では、ハードウェアリソースのターゲットセットが1つ以上のCPU、エッジもしくはモバイルコンピューティングデバイス、または他のコンピューティングユニットに対応し得ることが理解されるはずである。このような例では、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストは、ハードウェアリソースのターゲットセットに固有であるかまたはハードウェアリソースのターゲットセットのいくつかの属性を活用する役割を果たす演算を含み得る。いくつかの実現例では、ハードウェアリソースのターゲットセットは、上述のタイプのハードウェアリソース(たとえば、TPU、GPU、CPU、エッジまたはモバイルコンピューティングデバイスなど)のうちの2つ以上の組合せに対応し得る。
いくつかの例では、ハードウェアリソースのターゲットセットは、システム100の一部として含まれ得るが、ターゲットハードウェア展開エンジン130に関連する演算を実行するために予約され得る。他の例では、ハードウェアリソースのターゲットセットは、ターゲットハードウェア展開エンジン130および/またはシステム100の1つ以上の他のコンポーネントに通信可能に結合され得る。いずれの場合も、ターゲットハードウェア展開エンジン130は、コントローラ110によって選択された候補ニューラルネットワークアーキテクチャのトレーニング済みインスタンスをハードウェアリソースのターゲットセット上に展開し、それに基づいて第2の性能メトリック132を決定するように構成される。
より具体的には、所与の候補ニューラルネットワークのトレーニング済みインスタンスをハードウェアリソースのターゲットセット上に展開すると、ターゲットハードウェア展開エンジン130は、(i)ハードウェアリソースのターゲットセット上に展開されたときの、候補ニューラルネットワークを用いて出力を生成するレイテンシ、(ii)ハードウェアリソースのターゲットセット上に展開されたときの候補ニューラルネットワークの演算強度、および/または、(iii)ハードウェアリソースのターゲットセット上に展開されたときの候補ニューラルネットワークの実行効率、を測定または決定し得る。いくつかの実現例では、第2の性能メトリック132は、前述のパラメータ(i)、(ii)、および(iii)のうちの1つ以上に少なくとも部分的に基づいている。いくつかの実現例では、ターゲットハードウェア展開エンジン130は、前述のパラメータ(i)、(ii)、および(iii)のうちの1つ以上に少なくとも部分的に基づいて、候補ニューラルネットワークアーキテクチャについての第2の性能メトリック132を決定し得る。これらの実現例のうちの少なくともいくつかでは、ターゲットハードウェア展開エンジン130は、候補ニューラルネットワークについての第2の性能メトリック132として前述のパラメータ(i)、(ii)、および(iii)のうちの1つ以上を用い得る。いくつかの例では、前述のパラメータ(i)、(ii)、および(iii)の各々は、第2の性能メトリック132に直接的または間接的に反映される。他の構成も実現可能である。
いくつかの実現例では、ハードウェアリソースのターゲットセットは、システム100の一部として含まれ得るとともに、ターゲットハードウェア展開エンジン130に加えて、システム100の1つ以上のコンポーネントに関連する演算を実行するために活用され得る。いくつかのこのような実現例では、ターゲットハードウェア展開エンジン130の機能のいくつかまたはすべては、トレーニングエンジン120にまとめられ得るか、またはその逆も同様であり得る。たとえば、いくつかのこのような実現例では、システム100は、第1の性能メトリック122および第2の性能メトリック132を同時にまたはほぼ同時に決定してもよい。さらに、いくつかの例では、ターゲットハードウェア展開エンジン130は、候補ニューラルネットワークアーキテクチャについての第2の性能メトリック132を決定するために、コントローラ110によって選択された候補ニューラルネットワークアーキテクチャのトレーニング済みインスタンスをハードウェアリソースのターゲットセット上に必ずしも展開しない可能性もあるが、代わりに、第2の性能メトリック132を概算または予測するために1つ以上の演算を実行する可能性がある。たとえば、いくつかのこのような例では、ターゲットハードウェア展開エンジン130は、第2の性能メトリック132を計算するかまたはハードウェアリソースのターゲットセット上に展開されたときの所与の候補ニューラルネットワークの性能をシミュレートして、その1つ以上の尺度を取得するために、1つ以上のモデルとともに、ハードウェアリソースのターゲットセットの既知または所定のパラメータを活用してもよい。他の構成も実現可能である。
いくつかの実現例では、本明細書で説明するレイテンシ、演算強度、および実行効率は以下のように定義され得る。
ここで、W(FLOP)は、ニューラルネットワークアーキテクチャにおいて必要とされる計算の量であり、Q(バイト)は、ニューラルネットワークアーキテクチャの実行中に受けるメモリトラフィック(メモリ転送のバイト)であり、Iは、ニューラルネットワークアーキテクチャの演算強度であり、C(FLOP/秒)は、ニューラルネットワークアーキテクチャによって達成される計算レートであり、CIdealは、ニューラルネットワークアーキテクチャによって達成される理想的な計算レートであり、Eは、ニューラルネットワークの実行効率であり、bは、ハードウェアリソースのターゲットセットのメモリ帯域幅であり、CMaxは、ハードウェアリソースのターゲットセット上で実現可能なピーク計算レートであり、Rは、ハードウェアリソースのターゲットセット上でピーク計算レートを達成するためにニューラルネットワークアーキテクチャに必要とされる「隆起点」または最小演算強度である。上記の式にて実証されるように、CはCIdealおよびE(たとえば、Eは、C/CIdealとして定義される)によって決定され、CIdealはI、b、CMaxおよびRによって決定される。パラメータb、CMaxおよびRは、ハードウェアリソースのターゲットセットに関連する定数値であり得る。実際には、ニューラルネットワークアーキテクチャのエンドツーエンド推論レイテンシは、W、I、およびEの関数である。このため、データセンタアクセラレータに関するレイテンシ(たとえば、TPU、GPUなど)を最適化するために、システム100は、W(FLOP)の低減のみを試みるのではなく、W、IおよびEを全体的にかつ同時に最適化しようと試みることもある。システム100はこのように動作するように構成され得る。なぜなら、IおよびEを考慮せずにW(FLOP)を低減することにより、CがWよりもはるかに急速に低下する可能性があり、これによりレイテンシの低下を引起こす可能性があるからである。
トレーニングエンジン120と同様に、ターゲットハードウェア展開エンジン130は、コントローラ110によって選択された候補ニューラルネットワークアーキテクチャについて決定された第2の性能メトリック132を、さらなる評価のために性能測定エンジン140に提供し得る。次いで、性能測定エンジン140は、第1の性能メトリック122および第2の性能メトリック132を用いて、多目的性能メトリック142を決定する。所与の候補ニューラルネットワークアーキテクチャについて性能測定エンジン140によって決定される多目的性能メトリック142は、候補ニューラルネットワークアーキテクチャについてトレーニングエンジン120によって決定された第1の性能メトリック122を、候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定された第2の性能メトリック132と組合わせてもよい。一例として、所与の候補ニューラルネットワークアーキテクチャが特定の機械学習タスクを実行することが可能であり得る精度のレベルを第1の性能メトリック122が示しており、かつ、ハードウェアリソースのターゲットセット上に展開されたときの、候補ニューラルネットワークアーキテクチャによって特定の機械学習タスクを実行するレイテンシを第2の性能メトリック132が示しているいくつかの実現例の場合、コントローラ110によって選択されたm番目の候補ニューラルネットワークアーキテクチャについて決定される多目的性能メトリック142は、以下のように精度とレイテンシとを組合わせ得る。
ここで、ACCURACY(m)は、m番目の候補ニューラルネットワークアーキテクチャが、m番目の候補ニューラルネットワークアーキテクチャについてトレーニングエンジン120によって決定される第1の性能メトリック122によって示されるように特定の機械学習タスクを実行することが可能であり得る精度の測定されたレベルであり、LATENCYActual(m)は、m番目の候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定される第2の性能メトリック132によって示されるように、ハードウェアリソースのターゲットセット上に展開されたときの、m番目の候補ニューラルネットワークアーキテクチャによる特定の機械学習タスクを実行する場合の測定されたレイテンシであり、LATENCYTarget(m)は、ハードウェアリソースのターゲットセットの既知のまたは概算された属性、ニューラルネットワークアーキテクチャ(たとえば、ユーザによって指定されるターゲットレイテンシ)を検索しているユーザによって提供される入力、および/または、現在の演算条件に基づいて決定されるような、ハードウェアリソースのターゲットセット上に展開されたときの、m番目の候補ニューラルネットワークアーキテクチャによって特定の機械学習タスクを実行するターゲットのまたは理想的なレイテンシであり、ωは、多目的性能メトリック142においてレイテンシ性能が与えられる重みを決定するために用いられる因子である。いくつかの例では、ωの値は調節可能であり得る。たとえば、これらの例のうちのいくつかでは、ωの値は、ニューラルネットワークアーキテクチャを探索しているユーザによって提供される入力に基づいて決定されてもよい。
同様に、第1の性能メトリック122および第2の性能メトリック132が、前述の例におけるものとほぼ同じように、それぞれ精度およびレイテンシを示すとともに、第2の性能メトリック132がさらに、ハードウェアリソースのターゲットセット上に展開されたときの所与の候補ニューラルネットワークアーキテクチャの演算強度と、ハードウェアリソースのターゲットセット上に展開されたときの候補ニューラルネットワークアーキテクチャの実行効率とを示すいくつかの実現例の場合、コントローラ110によって選択されるm番目の候補ニューラルネットワークアーキテクチャについて決定される多目的性能メトリック142は、精度、レイテンシ、演算強度、および実行効率を以下のとおり組合わせ得る。
ここで、IActual(m)は、m番目の候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定される第2の性能メトリック132によって示されるように、ハードウェアリソースのターゲットセット上に展開されたときのm番目の候補ニューラルネットワークアーキテクチャの測定された演算強度であり、ITarget(m)は、ハードウェアリソースのターゲットセットの既知であるかまたは概算された属性、ニューラルネットワークアーキテクチャ(たとえば、ユーザによって指定されるターゲット演算強度)を検索しているユーザによって提供される入力、および/または、現在の演算条件に基づいて決定されるような、ハードウェアリソースのターゲットセット上に展開されたときのm番目の候補ニューラルネットワークアーキテクチャについてのターゲットのまたは理想的な演算強度であり、θは、演算強度が多目的性能メトリック142において与えられる重みを決定するために用いられる因子であり、EActual(m)は、m番目の候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定される第2の性能メトリック132によって示されるように、ハードウェアリソースのターゲットセット上に展開されたときのm番目の候補ニューラルネットワークアーキテクチャの測定された実行効率であり、ETarget(m)は、ハードウェアリソースのターゲットセットの既知であるかまたは概算された属性、ニューラルネットワークアーキテクチャ(たとえば、ユーザによって指定されるターゲット演算強度)を検索しているユーザによって提供される入力、および/または、現在の演算条件に基づいて決定されるような、ハードウェアリソースのターゲットセット上に展開されたときのm番目の候補ニューラルネットワークアーキテクチャのターゲットのまたは理想的な実行効率であり、γは、多目的性能メトリック142において実行効率が与えられる重みを決定するために用いられる因子である。ここで、ωの値と同様に、いくつかの例では、θの値およびγの値の一方または両方が調節可能であり得る。たとえば、これらの例のうちのいくつかでは、θの値およびγの値の一方または両方は、ニューラルネットワークアーキテクチャを探索しているユーザによって提供される入力に基づいて決定され得る。第2の性能メトリック132によって示されているパラメータまたは示されていないパラメータに応じて、項が必要に応じて上述の式に挿入されるかまたは上述の式から削除され得ることを理解されたい。たとえば、多目的性能メトリック142を管理する式は、第2の性能メトリック132が(レイテンシおよび演算強度ではなく)実行効率に基づいて決定される状況では、レイテンシ項および演算強度項を省略してもよい。多目的性能メトリック142のための他の構成も実現可能である。より具体的には、ω、γ、θの値は、それぞれの検索要件に従ってそれぞれの値として決定することができる。多目的性能メトリック142における1つ以上の因子(たとえば、レイテンシ、演算強度、および実行効率)は、ω、γ、θの1つ以上の値をゼロに調整することによって省略することができる。
上述したように、いくつかの実現例では、多目的性能メトリック142がコントローラ110に提供され得るとともに、いくつかのこのような実現例では、追加の候補ニューラルネットワークアーキテクチャを選択するためにコントローラ110によって活用され得る。いくつかの例では、システム100は、多目的性能メトリック142を用いて、コントローラパラメータの現在値を更新して、タスクに関してコントローラ110によって生成される出力112によって定義されるアーキテクチャの予想性能を改善する。たとえば、システム100は、(たとえば、近接ポリシー最適化を用いて)多目的メトリック142の値を最大化するような態様でコントローラパラメータを更新してもよい。コントローラ110がニューラルネットワークを含む実現例の場合、多目的性能メトリック142は、コントローラ110のニューラルネットワークをトレーニングするために用いられる「報酬」として有効に機能し得る。このような態様でコントローラパラメータの値を繰返し更新することにより、システム100は、特定のタスクに対して高い性能を有するニューラルネットワークをもたらす出力112を最終的に生成するように、すなわち、コントローラ110によって提案されるアーキテクチャの検証セット104に対する予想される精度、ならびに、ハードウェアリソースのターゲットセット上に展開されるときの高い性能を最大化するように、すなわち、特定のタスクが実行されると予想される速度を最大化するように、コントローラ110に実行させるかまたは当該コントローラ110をトレーニングすることができる。
コントローラ110がトレーニングされる(たとえば、コントローラパラメータが収束する)と、候補アーキテクチャ検索空間111を使い果たすと、最大数の候補ニューラルネットワークアーキテクチャを生成すると、1つ以上の基準のセット(たとえば、1つ以上の閾値)を満たす多目的性能メトリック142で1つ以上の候補ニューラルネットワークアーキテクチャを生成すると、および/または、他のいくつかの終了基準が満たされると、システム100は、ニューラルネットワークのための最終的なアーキテクチャを選択することができる。最終的なアーキテクチャを選択するために、システム100は、コントローラパラメータのトレーニングされた値に従って新しい出力112を生成し、新しい出力112によって定義されるアーキテクチャをニューラルネットワークの最終的なアーキテクチャとして用いることができるか、または、トレーニングされた値に従って複数の新しい出力112を生成し、次いで、複数の新しい出力112によって定義される複数の候補ニューラルネットワークアーキテクチャのうちの1つを選択することができる。いくつかの例では、1つ以上の最終的なアーキテクチャを選択するために、システム100は、最大の第1の性能メトリック122、第2の性能メトリック132、および/または多目的性能メトリック142をもたらした1つ以上の候補ニューラルネットワークアーキテクチャを選択し得る。複数の新しい出力112が生成される実現例では、システム100は、検証セット104上の新しい各出力112によって定義されるアーキテクチャの性能を評価し、次いで、最高性能アーキテクチャ(たとえば、システム100によって考慮される他のすべての候補ニューラルネットワークアーキテクチャの値よりも大きい値の多目的性能メトリック142をもたらす候補ニューラルネットワークアーキテクチャ)を最終的なアーキテクチャとして選択することができる。代替的には、システム100はさらに、選択された各々のアーキテクチャをトレーニングし、次いで、さらなるトレーニング後にアーキテクチャの各々の性能を評価することができる。
次いで、ニューラルネットワーク検索システム100は、ニューラルネットワークの最終的なアーキテクチャを指定するアーキテクチャデータ150、すなわち、ニューラルネットワークの一部である層を指定するデータ、層間の接続性、および層によって実行される演算、を出力することができる。たとえば、ニューラルネットワーク検索システム100は、トレーニングデータを提出したユーザに対してアーキテクチャデータ150を出力することができる。場合によっては、データ150はまた、アーキテクチャを有していたニューラルネットワークのトレーニング済みインスタンスのトレーニングからの、ニューラルネットワークのパラメータについてのトレーニングされた値を含む。
いくつかの実現例では、アーキテクチャデータ150を出力する代わりに、または、アーキテクチャデータ150を出力することに加えて、システム100は、たとえば、最初から、またはアーキテクチャを有するニューラルネットワークのインスタンスをトレーニングした結果として生成されるパラメータ値を微調整するために、当該決定されたアーキテクチャを有するニューラルネットワークのインスタンスをトレーニングし、次いで、トレーニングされたニューラルネットワークを用いて、たとえば、システムによって提供されるAPIを介して、ユーザによって受信された要求を処理する。すなわち、システム100は、処理されるべき入力を受信し、トレーニングされたニューラルネットワークを用いて入力を処理するとともに、トレーニングされたニューラルネットワークによって生成される出力、または受信された入力に応答して生成される出力から導出されたデータを提供することができる。いくつかの例では、システム100は、上述の技術のうちの1つ以上を用いて最終的なアーキテクチャを選択し、次いで、モデルスケーリング技術を用いてアーキテクチャのサイズをスケールアップして、データ150において指定される最終的なアーキテクチャを生成してもよい。他の例では、1つ以上のシステムは、システム100からデータ150を受信し、このようなモデルスケーリング技術を用いて、データ150内で指定されるアーキテクチャのサイズをスケールアップしてもよい。
コントローラ110がRNNなどのニューラルネットワークを含むいくつかの実現例の場合、システム100は、分散方式でコントローラ110のニューラルネットワークをトレーニングし得る。すなわち、システム100は、コントローラ110のニューラルネットワークの複数のレプリカを含む。トレーニングが分散されているこれらの実現例のうちのいくつかでは、各レプリカは、レプリカによって出力される出力112のバッチについての性能メトリックを生成する専用トレーニングエンジンと、性能メトリックを用いてコントローラパラメータへの更新を決定する専用コントローラパラメータ更新エンジンとを有する。コントローラパラメータ更新エンジンが更新を決定すると、コントローラパラメータ更新エンジンは、コントローラパラメータ更新エンジンのすべてにとってアクセス可能な中央パラメータ更新サーバに更新を送信することができる。中央パラメータ更新サーバは、サーバによって維持されるコントローラパラメータの値を更新し、更新された値をコントローラパラメータ更新エンジンに送信することができる。場合によっては、複数のレプリカの各々ならびにそれらの対応するトレーニングエンジンおよびパラメータ更新エンジンは、トレーニングエンジンおよびパラメータ更新エンジンの他の各セットとは非同期的に動作することができる。
いくつかの例では、システム100によってニューラルネットワークのために選択されるとともに、ニューラルネットワーク検索システム100によって出力されるアーキテクチャデータ150によって指定される最終的なアーキテクチャは、図2を参照して以下でさらに詳細に説明されるように、ニューラルネットワークアーキテクチャ200の最終的なアーキテクチャと同様または同等であり得る。ニューラルネットワークのためのこのような最終的なアーキテクチャは、1つ以上のTPUおよび/またはGPU上での展開に特によく適している可能性がある。
図2は、例示的なニューラルネットワークアーキテクチャ200を示す。より具体的には、ニューラルネットワークアーキテクチャ200は、初期畳み込みサブネットワーク210と、空間-深度間の畳み込みサブネットワーク220と、1つ以上の追加のサブネットワーク230とを含む。上述したように、いくつかの例では、ニューラルネットワークアーキテクチャ200は、図1を参照して上述したように、システム100によって選択される最終的なニューラルネットワークアーキテクチャに対応し得る。
ニューラルネットワークアーキテクチャ200は、1つ以上のTPU、1つ以上のGPU、および/または1つ以上の他の行列マシンもしくはベクトルマシン上に展開されたときの最適化された性能のために設計される。このため、システム100は、システム100に関連付けられたハードウェアリソースのターゲットセットが1つ以上のTPUおよび/またはGPUを含む状況において、ニューラルネットワークアーキテクチャ200と同様または同等である最終的なニューラルネットワークアーキテクチャを選択する可能性がより高くなり得る。ニューラルネットワークアーキテクチャ200が、システム100によって選択される最終的なニューラルネットワークアーキテクチャに対応し得ると仮定すると、ニューラルネットワークアーキテクチャ200のコンポーネントは、図1を参照して上述したように、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストからの演算を実行するように構成され得ることとなる。簡潔に述べると、以下でさらに詳細に説明するように、ニューラルネットワークアーキテクチャ200は、ネットワーク入力202を受信および処理して、特定の機械学習タスクについてネットワーク入力202のためのネットワーク出力232を生成するように構成される。たとえば、ニューラルネットワークアーキテクチャ200が実行するように構成される特定の機械学習タスクは画像処理タスクであり得る。この例では、ネットワーク入力202は、1つ以上の画像、すなわち、画像のピクセルの強度値を表わすデータに対応し得る。画像処理タスクの例は、画像分類、オブジェクト検出、画像セグメンテーションなどを含む。
ニューラルネットワークアーキテクチャ200の初期畳み込みサブネットワーク210は、ネットワーク入力202を受信するとともにネットワーク入力202の初期の特徴表現212を生成するように構成された1つ以上の畳み込み層を含み得る。初期畳み込みサブネットワーク210によって生成されるネットワーク入力202の初期の特徴表現212は、第1の空間的広がりおよび第1の数の深度チャネルを有する。初期畳み込みサブネットワーク210は、ネットワーク入力202の初期の特徴表現212を空間-深度間の畳み込みサブネットワーク220に出力するように構成され得る。
ニューラルネットワークアーキテクチャ200の空間-深度間の畳み込みサブネットワーク220は、初期畳み込みサブネットワーク210から初期の特徴表現212を受信し、初期の特徴表現212に対して空間-深度間の畳み込み演算を実行してネットワーク入力202の第2の特徴表現222を生成するように構成された1つ以上の畳み込み層を含み得る。空間-深度間の畳み込みサブネットワーク220によって生成されるネットワーク入力202の第2の特徴表現222は、第1の空間的広がりよりも小さい第2の空間的広がりと、第1の数の深度チャネルよりも大きい第2の数の深度チャネルとを有する。言い換えれば、空間-深度間の畳み込みサブネットワーク220が実行する空間-深度間の畳み込み演算は、入力テンソルの空間的広がりを減少させつつ入力テンソルの深度を増大させるものである。このような態様で畳み込みの入力テンソルを再形成することにより、この演算は、アクセラレータ(たとえば、TPUおよび/またはGPU)における並列性を改善させる役割を果たし得る。加えて、この演算はまた、ニューラルネットワークアーキテクチャの容量および精度に利益をもたらす役割を果たし得る。このような演算は、図1を参照して上述したように、候補アーキテクチャ検索空間111において反映される演算のセットまたはリストからの演算(たとえば、「アクセラレータフレンドリ」な演算)を表わし得る。
いくつかの実現例では、空間-深度間の畳み込みサブネットワーク220が実行する空間-深度間の畳み込み演算は、ストライド-nのn×n畳み込み(たとえば、n×nカーネルでの畳み込み)であり、ここで、nは、2または4などの1よりも大きい整数値を表わす。このような演算は、H×W×Cテンソルを
に再形成する役割を果たし得る。重要なこととして、この演算は、精度を損なうことなく全体的な速度を改善させ得るように、総テンソル体積を変更することなく深度を増大させる。入力テンソルは、1つ以上のメモリ演算を実行することによって入力テンソルの形状を修正する空間-バッチ演算または他の再成形演算を用いて同様の態様で再成形され得るが、空間-深度間の畳み込みサブネットワーク220が実行する空間-深度間の畳み込み演算は以下の2つの利点を有する。すなわち、(i)畳み込みは、比較的高い演算強度および実行効率に関連付けられており、このため、TPUおよび/またはGPU上への展開に有利に変換され、(ii)演算強度および実行効率を改善するために入力テンソルを再形成することに加えて、ストライドnのn×n畳み込みはまた、対応するニューラルネットワークの容量に寄与するようにトレーニングされ得る。この演算は、1つ以上のメモリ演算を実行することによって入力テンソルの形状を修正する空間-バッチ間の演算または他の再形成演算の挙動を模倣するようにトレーニングすることができるとともに、並列性を高めることによってニューラルネットワークアーキテクチャの速度を改善しながらニューラルネットワークアーキテクチャの精度を改善するようにさらにトレーニングすることができる。
空間-深度間の畳み込みサブネットワーク220は、ネットワーク入力202の第2の特徴表現222をニューラルネットワークアーキテクチャ200の1つ以上の追加のサブネットワーク230に出力するように構成され得る。ニューラルネットワークアーキテクチャ200の1つ以上のサブネットワーク230は、空間-深度間の畳み込みサブネットワーク220から第2の特徴表現222を受信するとともにネットワーク入力202のためのネットワーク出力232を生成するように構成された1つ以上の層(たとえば、畳み込み層)を含み得る。
図3は、ハードウェアリソースのターゲットセット上に展開されたときに特定の機械学習タスクを実行するように構成されたタスクニューラルネットワークのためのアーキテクチャを決定するための例示的なプロセス300のフロー図である。便宜上、当該プロセス300は、1つ以上のロケーションに配置された1つ以上のコンピュータのシステムによって実行されるものとして説明されるだろう。たとえば、ニューラルアーキテクチャ検索システム、たとえば、本明細書に従って適切にプログラムされる図1のニューラルアーキテクチャ検索システム100は、プロセス300を実行することができる。
当該システムは、特定の機械学習タスクを実行するためのトレーニングデータを受信する(ステップ302)。たとえば、これは、図1を参照して上述したように、システム100がトレーニングデータ102および/または検証セット104を受信することに対応し得る。いくつかの例では、特定の機械学習タスクは画像処理タスクに対応し得る。
当該システムは、トレーニングデータを用いて、候補ニューラルネットワークアーキテクチャの空間内で検索を実行して、1つ以上の候補ニューラルネットワークアーキテクチャを識別する(ステップ304)。たとえば、これは、図1を参照して上述したように、システム100のコントローラ110が候補アーキテクチャ検索空間111内で検索を実行することに対応し得る。上述したように、候補ニューラルネットワークアーキテクチャを選択するために、および/または、このような候補ニューラルネットワークアーキテクチャを指定する出力を生成するために、コントローラ110は、強化学習、進化的検索、差別化可能な検索などに基づくNAS技術などの、多種多様なNAS技術のいずれかを用い得る。いくつかの実現例では、ステップ304の動作を実行するために、システムは、図4を参照して以下でさらに詳細に説明するように、プロセス400を繰返し実行する。
図4は、1つ以上の候補ニューラルネットワークアーキテクチャを識別するために候補ニューラルネットワークアーキテクチャの空間内で検索を実行するためのプロセスの繰返しを表わす例示的なプロセス400のフロー図である。便宜上、当該プロセス400は、1つ以上のロケーションに配置された1つ以上のコンピュータのシステムによって実行されるものとして説明されるだろう。たとえば、ニューラルアーキテクチャ検索システム、たとえば、本明細書に従って適切にプログラムされる図1のニューラルアーキテクチャ検索システム100は、プロセス400を実行することができる。上述したように、いくつかの実現例では、当該システムは、プロセス400をプロセス300のステップ304の一部として繰返し実行する。
当該システムは、候補ニューラルネットワークアーキテクチャの空間から候補ニューラルネットワークアーキテクチャを選択する(ステップ402)。たとえば、これは、図1を参照して上述したように、システム100のコントローラ110が候補アーキテクチャ検索空間111から或る候補ニューラルネットワークアーキテクチャを選択することに対応し得る。より具体的には、ステップ402において、当該システムは、候補ニューラルネットワークアーキテクチャの1つ以上のコンポーネントの各々について、空間-深度間の畳み込み演算を含む演算のセットから、それぞれのコンポーネントによって実行されるべき演算を選択する。演算のセットに含まれる空間-深度間の畳み込み演算は、入力テンソルの空間的広がりを減少させながら当該入力テンソルの深度を増大させる演算であり得る。加えて、当該演算のセットはさらに、1つ以上の他のタイプの畳み込み演算を含み得る。たとえば、当該演算のセットは、図1を参照して上述したように、候補アーキテクチャ検索空間111において反映された演算に対応していてもよく、これは、候補ニューラルネットワークアーキテクチャが、ハードウェアリソースのターゲットセットのいくつかの属性を利用するように動作するかまたは機能する役割を果たすことが意図されているハードウェアリソースのターゲットセットに特有の演算を含み得る。いくつかの例では、空間-深度間の畳み込み演算は、このような演算の一例を表わし得る。いくつかの実現例では、空間-深度間の畳み込み演算は、ストライド-nのn×n畳み込みであってよく、この場合、nは1よりも大きい整数値である。たとえば、いくつかのこのような実現例では、空間-深度間の畳み込み演算はストライド-2の2×2畳み込みであり得る。上述したように、この演算は、入力テンソルの形状を修正するためのハードウェアアクセラレータ上に有利に展開され得る。チャネル深度を増加させるための再形成演算により、畳み込みのためにより速い計算レート(Op/秒)をもたらすことができるとともに、このような再形成演算により、計算精度に影響を及ぼすことなく計算速度を向上させることができることが周知である。再形成演算の代替例としてストライド-2の2×2畳み込みを用いるアプローチは、TPUにおいて高い演算強度で畳み込みを効率的に計算することができるので有利である。加えて、当該システムはまた、モデル容量を改善するとともに実質的に同じテンソル再形成演算を模倣するためのトレーニングセットを前提として、ストライド2-の2×2畳み込みをトレーニングすることもできる。いくつかの実現例では、当該演算のセットがさらに含み得る1つ以上の再形成演算は各々が、ハードウェアリソースのターゲットセットの1つ以上のメモリにおいて1つ以上のメモリ演算を実行することによって入力テンソルの形状を修正する。たとえば、このような1つ以上のメモリ演算(たとえば、空間-バッチ間の演算)が含み得る1つ以上の演算は各々が、入力テンソルの要素をハードウェアリソースのターゲットセットの1つ以上のメモリ内のさまざまなメモリロケーションに移動させることによって、もしくは、要素を1つのメモリロケーションから別のメモリロケーションにコピーすることによって、または、これらの両方によって、入力テンソルを再形成する。特定の例として、これらの1つ以上の演算は、空間データのブロックを深度方向に再配置する1つ以上の演算を含み得る。より具体的には、これらの1つ以上の演算の各々は、高さ寸法および幅寸法からの値を深さ寸法に移動させる入力テンソルのコピーを出力し得る。
いくつかの例では、当該システムは、1つ以上の事前に選択された候補ニューラルネットワークアーキテクチャについて決定された性能の尺度に少なくとも部分的に基づいて、候補ニューラルネットワークアーキテクチャの空間から候補ニューラルネットワークアーキテクチャを選択する(ステップ402)。たとえば、これは、図1を参照して上述したように、コントローラ110が、当該コントローラ110によって選択された(k-1)番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142や、当該コントローラ110によって選択された(k-2)番目の候補ニューラルネットワークアーキテクチャについて決定された多目的性能メトリック142などに少なくとも部分的に基づいて、候補アーキテクチャ検索空間111からk番目の候補ニューラルネットワークアーキテクチャを選択することに対応し得る。
当該システムは、選択された候補ニューラルネットワークアーキテクチャの性能の尺度を、その(i)特定の機械学習タスクに対する性能と、(ii)ハードウェアリソースのターゲットセット上に展開されたときの性能とに基づいて決定する(ステップ404)。たとえば、これは、図1を参照して上述したように、性能測定エンジン140が、コントローラ110によって選択された候補ニューラルネットワークアーキテクチャについての多目的メトリック142を決定することに対応し得る。
さらに、いくつかの例では、(i)特定の機械学習タスクに関する選択された候補ニューラルネットワークの性能は、選択された候補ニューラルネットワークアーキテクチャについてトレーニングエンジン120によって決定された第1の性能メトリック122に反映される、選択された候補ニューラルネットワークアーキテクチャの性能に対応し得る。このため、いくつかの実現例では、プロセス400は、システムがトレーニングデータを用いて候補ニューラルネットワークをトレーニングする1つ以上の追加のステップを含む。たとえば、これは、図1を参照して上述したように、トレーニングエンジン120が、トレーニングデータ102および/または検証セット104を用いて、選択された候補ニューラルネットワークアーキテクチャのインスタンスをトレーニングすることに対応し得る。いくつかの例では、このような1つ以上の追加のステップは、ステップ402の後に実行され得るが、ステップ404の前に実行されてもよい。
同様に、いくつかの例では、(ii)ハードウェアリソースのターゲットセット上に展開されたときの選択された候補ニューラルネットワークの性能は、選択された候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定される第2の性能メトリック132に反映される、選択された候補ニューラルネットワークアーキテクチャの性能に対応し得る。このため、いくつかの実現例では、当該プロセス400は、当該システムがハードウェアリソースのターゲットセット上で候補ニューラルネットワークのトレーニング済みインスタンスを実行する、1つ以上の追加のステップを含む。たとえば、これは、図1を参照して上述したように、ターゲットハードウェア展開エンジン130が、システム100に関連付けられたハードウェアリソースのターゲットセット上で候補ニューラルネットワークのトレーニング済みインスタンスを実行することに対応し得る。いくつかの実現例では、ハードウェアリソースのターゲットセットは、1つ以上のTPU、GPU、他の行列マシンもしくはベクトルマシン、またはそれらの組合せに対応し得る。
いくつかの実現例では、(ii)ハードウェアリソースのターゲットセット上に展開されたときの選択された候補ニューラルネットワークアーキテクチャの性能は、ハードウェアリソースのターゲットセット上に展開されたときの選択された候補ニューラルネットワークアーキテクチャを用いて出力を生成するレイテンシに少なくとも部分的に基づいている。たとえば、このようなレイテンシは、以下のような選択された候補ニューラルネットワークアーキテクチャのレイテンシに対応し得る。この選択された候補ニューラルネットワークアーキテクチャのレイテンシは、ターゲットハードウェア展開エンジン130がハードウェアリソースのターゲットセット上で当該選択された候補ニューラルネットワークアーキテクチャを実行するときにターゲットハードウェア展開エンジン130によって測定されるとともに、当該選択された候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定される第2の性能メトリック132に反映されるものである。
いくつかの実現例では、(ii)ハードウェアリソースのターゲットセット上に展開されたときの選択された候補ニューラルネットワークアーキテクチャの性能は、ハードウェアリソースのターゲットセット上に展開されたときの当該選択された候補ニューラルネットワークアーキテクチャの演算強度に少なくとも部分的に基づいている。たとえば、このような演算強度は、以下のような選択された候補ニューラルネットワークアーキテクチャの演算強度に対応し得る。この選択された候補ニューラルネットワークアーキテクチャの演算強度とは、ターゲットハードウェア展開エンジン130がハードウェアリソースのターゲットセット上で当該選択された候補ニューラルネットワークアーキテクチャを実行するときにターゲットハードウェア展開エンジン130によって測定されるとともに、当該選択された候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定される第2の性能メトリック132に反映されるものである。いくつかの例では、このような演算強度は、図1を参照して上述したように、「I」パラメータに対応する。
いくつかの実現例では、(ii)ハードウェアリソースのターゲットセット上に展開されたときの選択された候補ニューラルネットワークアーキテクチャの性能は、ハードウェアリソースのターゲットセット上に展開されたときの当該選択された候補ニューラルネットワークアーキテクチャの実行効率に少なくとも部分的に基づいている。たとえば、このような実行効率は、以下のような選択された候補ニューラルネットワークアーキテクチャの実行効率に対応し得る。この選択された候補ニューラルネットワークアーキテクチャの実行効率とは、ターゲットハードウェア展開エンジン130がハードウェアリソースのターゲットセット上で当該選択された候補ニューラルネットワークアーキテクチャを実行するときにターゲットハードウェア展開エンジン130によって測定されるとともに、当該選択された候補ニューラルネットワークアーキテクチャについてターゲットハードウェア展開エンジン130によって決定された第2の性能メトリック132に反映されるものである。いくつかの例では、このような実行効率は、図1を参照して上述したように、「E」パラメータに対応する。
再び図3を参照すると、ステップ306において、当該システムは、識別された候補ニューラルネットワークアーキテクチャを用いて特定のタスクを実行するように構成されたタスクニューラルネットワークのためのアーキテクチャを生成する。たとえば、これは、図1を参照して上述したように、システム100が出力のためのデータ150を生成することに対応し得る。いくつかの例では、これは、システム100または当該システム100と通信する別のシステムが、タスクニューラルネットワークのためのアーキテクチャを生成するためにモデルスケーリング技術を用いて選択された最終的なアーキテクチャのサイズをスケールアップすることに対応し得る。
いくつかの実現例では、プロセス300は、当該システムが、生成されたアーキテクチャを有するタスクニューラルネットワークを用いて新しい入力に対して特定の機械学習タスクを実行する、1つ以上の追加のステップを含む。たとえば、これは、図1を参照して上述したようなデータ150に反映されたニューラルネットワークを用いる1つ以上のシステム、または、図2を参照して上述したようなニューラルネットワークアーキテクチャ200と同様または同等のアーキテクチャを有するニューラルネットワークが、特定の機械学習タスクを実行することに対応し得る。たとえば、このようなタスクは画像処理タスクに対応し得る。
いくつかの実現例では、当該プロセス300は、当該システムが特定の機械学習タスクを実行する際に用いるために当該生成されたアーキテクチャを指定するデータを提供する1つ以上の追加のステップを含む。たとえば、これは、図1を参照して上述したように、システム100が出力のためのデータ150を提供することに対応し得る。
図5は、特定の機械学習タスクについてのネットワーク入力についての出力を生成するためにタスクニューラルネットワークを用いるための例示的なプロセス500のフロー図である。便宜上、プロセス500は、1つ以上のロケーションに配置された1つ以上のコンピュータのシステムによって実行されるものとして説明されるだろう。便宜上、プロセス500は、1つ以上のロケーションに配置された1つ以上のコンピュータのシステムによって実行されるものとして説明されるだろう。たとえば、図1のニューラルネットワークアーキテクチャ150および/または図2のニューラルネットワークアーキテクチャ200と同様または同等のアーキテクチャを有するニューラルネットワークが展開されるシステムは、本明細書に従って適切にプログラムされるとともに、プロセス500を実行することができる。
当該システムはネットワーク入力を受信する(ステップ502)。たとえば、これは、図2を参照して上述したように、当該システムがネットワーク入力202を受信することに対応し得る。当該システムは、タスクニューラルネットワークを用いてネットワーク入力を処理して、特定の機械学習タスクについてのネットワーク入力についての出力を生成する(ステップ504~508)。たとえば、これは、システムが、図2を参照して上述したように、ニューラルネットワークアーキテクチャ200と同様または同等のアーキテクチャを有するタスクニューラルネットワークを用いて、ネットワーク入力202のためのネットワーク出力232を生成することに対応し得る。
より具体的には、ステップ504において、当該システムは、タスクニューラルネットワークを用いて、ネットワーク入力の初期の特徴表現を生成する。たとえば、これは、図2を参照して上述したように、初期畳み込みサブネットワーク210を用いて、ネットワーク入力202の初期の特徴表現212を生成することに対応し得る。
ステップ506において、当該システムは、タスクニューラルネットワークを用いて、初期の特徴表現に対して空間-深度間の演算を実行して、ネットワーク入力の第2の特徴表現を生成する。たとえば、これは、図2を参照して上述したように、空間-深度間の畳み込みサブネットワーク220を用いて、初期の特徴表現212に基づいてネットワーク入力202の第2の特徴表現222を生成することに対応し得る。いくつかの実現例では、空間-深度間の畳み込み演算はストライド-nのn×n畳み込みであり得る。ここで、nは1よりも大きい整数値である。たとえば、いくつかのこのような実現例では、空間-深度間の畳み込み演算はストライド-2の2×2畳み込みであってもよい。上述したように、この演算は、入力テンソルの形状を修正するためのハードウェアアクセラレータ上に有利に展開され得る。
次いで、ステップ508において、当該システムは、タスクニューラルネットワークを用いて、第2の特徴表現を処理して、ネットワーク入力についての出力を生成する。たとえば、これは、図2を参照して上述したように、1つ以上の追加のサブネットワーク230を用いて第2の特徴表現222に基づいてネットワーク出力232を生成することに対応し得る。
いくつかの例では、1つ以上の追加のサブネットワークは1つ以上の畳み込み層を含み得る。いくつかの実現例では、タスクニューラルネットワークを用いてネットワーク入力を処理することは、1つ以上のハードウェアアクセラレータのセットを用いて、タスクニューラルネットワークを用いてネットワーク入力を処理することを含む。これらの実現例のうちの少なくともいくつかでは、1つ以上のハードウェアのセットは、1つ以上のテンソル処理ユニット(TPU)、1つ以上のグラフィックス処理ユニット(GPU)、またはそれらの組合せを含み得る。
本明細書は、システムおよびコンピュータプログラムコンポーネントに関連して「構成された」という用語を用いる。1つ以上のコンピュータのシステムが特定の動作またはアクションを実行するように構成されるという場合、当該システムが、動作時にシステムに動作またはアクションを実行させるソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せをインストールしていることを意味する。1つ以上のコンピュータプログラムが特定の動作またはアクションを実行するように構成されているという場合、1つ以上のプログラムが、データ処理装置によって実行されると、当該装置に動作またはアクションを実行させる命令を含むことを意味する。
本明細書に記載されている主題および機能的動作の実施形態は、デジタル電子回路で実現されてもよく、有形的に具体化されたコンピュータソフトウェアもしくはファームウェアで実現されてもよく、本明細書に開示されている構造およびそれらの構造的等価物を含むコンピュータハードウェアで実現されてもよく、またはそれらのうちの1つ以上の組合せで実現されてもよい。本明細書中に記載される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわちデータ処理装置による実行のために、またはデータ処理装置の動作を制御するために有形の非一時的な記憶媒体上で符号化されるコンピュータプログラム命令の1つ以上のモジュールとして実現されてもよい。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、またはこれらの1つ以上の組合せであり得る。代替的または付加的には、プログラム命令は、データ処理装置によって実行されるように好適な受信機装置に送信される情報を符号化するために生成される人為的に生成された伝搬信号、たとえば機械によって生成される電気信号、光学信号または電磁気信号、で符号化することができる。
「データ処理装置」という語は、データ処理ハードウェアを指すとともに、データを処理するためのあらゆる種類の装置、デバイスおよびマシンを包含し、一例として、プログラム可能なプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む。当該装置はまた、専用論理回路類、たとえばフィールドプログラマブルゲートアレイ(field programmable gate array:FPGA)、特定用途向け集積回路(application-specific integrated circuit:ASIC)であり得るとともにこれらを含み得る。当該装置は、任意には、ハードウェアに加えて、コンピュータプログラムのための実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステムまたはこれらのうち1つ以上の組合せを構成するコード、を含み得る。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプトまたはコードとも称され得るかまたは記載され得る)は、コンパイラ型言語もしくはインタープリタ型言語または宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で書込まれてもよく、スタンドアロンのプログラムとして、またはコンピューティング環境での使用に適したモジュール、コンポーネント、サブルーチンまたは他のユニットとして任意の形態で展開されてもよい。プログラムは、ファイルシステム内のファイルに対応していてもよいが、必ずしも対応している必要はない。プログラムは、他のプログラムもしくはデータ(たとえばマークアップ言語文書に格納された1つ以上のスクリプト)を保持するファイルの一部に格納されてもよく、当該プログラムに専用の単一のファイルに格納されてもよく、または複数の調整されたファイル(たとえば1つ以上のモジュール、サブプログラム、またはコードの一部を格納するファイル)に格納されてもよい。コンピュータプログラムは、1つのコンピュータ上で、または、一箇所に位置するかもしくは複数の箇所にまたがって分散されてデータ通信ネットワークによって相互接続されている複数のコンピュータ上で実行されるように展開されてもよい。
本明細書では、「データベース」という語は、データの任意の集合を指すために広く用いられるものであって、データは、任意の特定の方法で構造化される必要はなく、または、構造化される必要もなく、1つ以上のロケーションにある記憶デバイス上に格納することができる。したがって、たとえば、インデックスデータベースはデータの複数の集合を含み得る。これら複数の集合の各々はさまざまに編成およびアクセスされ得る。
同様に、本明細書では、「エンジン」という語は、1つ以上の特定の機能を実行するようにプログラムされたソフトウェアベースのシステム、サブシステム、またはプロセスを指すために広く用いられている。一般に、エンジンは、1つ以上のロケーションにある1つ以上のコンピュータにインストールされた1つ以上のソフトウェアモジュールまたはコンポーネントとして実装されることとなる。場合によっては、1つ以上のコンピュータは、特定のエンジン専用であり得るとともに、他の場合には、複数のエンジンが、同じコンピュータまたは複数のコンピュータにインストールされて実行され得る。
本明細書中に記載されるプロセスおよび論理フローは、入力データ上で演算して出力を生成することによって機能を実行するように1つ以上のコンピュータプログラムを実行する1つ以上のプログラム可能なプロセッサによって実行され得る。また、プロセスおよび論理フローは、特殊用途論理回路、たとえばFPGAもしくはASICによって、または、特殊用途論理回路と1つ以上のプログラムされたコンピュータとの組合せによって実行されてもよい。
コンピュータプログラムの実行に適したコンピュータは、汎用マイクロプロセッサ、特殊用途マイクロプロセッサもしくはこれら両方に基づいているか、または、他の任意の種類の中央処理装置に基づいていてもよい。概して、中央処理装置は、読取り専用メモリまたはランダムアクセスメモリまたはそれら両方から命令およびデータを受信するだろう。コンピュータの必須の要素は、命令を実行または実施するための中央処理装置と、命令およびデータを格納するための1つ以上のメモリデバイスとである。中央処理装置およびメモリは、特殊用途論理回路によって補完され得るか、または特殊用途論理回路に組み込まれ得る。一般に、コンピュータはまた、データを格納するための1つ以上の大容量記憶装置、たとえば磁気ディスク、光磁気ディスクまたは光ディスクを含み得るか、または、当該1つ以上の大容量記憶装置からデータを受信するもしくは当該1つ以上の大容量記憶装置にデータを転送するように、もしくは受信も転送も行なうように動作可能に結合されるであろう。しかし、コンピュータは、このようなデバイスを有する必要はない。さらに、コンピュータは、別のデバイス、たとえば数例を挙げると、携帯電話、携帯情報端末(personal digital assistant:PDA)、携帯型オーディオまたはビデオプレーヤ、ゲームコンソール、グローバル・ポジショニング・システム(Global Positioning System:GPS)受信機、またはポータブルストレージデバイス、たとえばユニバーサル・シリアル・バス(universal serial bus:USB)フラッシュドライブ、に組込まれてもよい。
コンピュータプログラム命令およびデータを格納するのに適したコンピュータ可読媒体は、すべての形態の不揮発性メモリ、媒体およびメモリデバイスを含み、一例としてたとえばEPROM、EEPROMおよびフラッシュメモリデバイスといった半導体メモリデバイス、たとえば内蔵ハードディスクまたは取外し可能なディスクといった磁気ディスク、光磁気ディスク、ならびに、CD-ROMディスクおよびDVD-ROMディスクを含む。
ユーザと対話できるようにするために、この明細書中に記載される主題の実施形態は、情報をユーザに表示するための表示装置、たとえば陰極線管(cathode ray tube:CRT)または液晶表示(liquid crystal display:LCD)モニタと、ユーザがコンピュータに入力することを可能にするキーボードおよびポインティングデバイス、たとえばマウスまたはトラックボールとを有するコンピュータ上で実現され得る。ユーザと対話できるようにするために他の種類のデバイスが使用されてもよく、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった形態であってもよく、ユーザからの入力は、音響入力、音声入力または触知入力を含む任意の形態で受取ることができる。加えて、コンピュータは、ユーザが使用するデバイスとの間で文書を送受信することによって、たとえばウェブブラウザから受取った要求に応答してユーザのデバイス上でウェブブラウザにウェブページを送ることによって、ユーザと対話し得る。また、コンピュータは、テキストメッセージまたは他の形式のメッセージをパーソナルデバイス、たとえば、メッセージングアプリケーションを実行しているスマートフォンに送信し、返答としてユーザから応答メッセージを受信することによって、ユーザと対話することができる。
機械学習モデルを実現するためのデータ処理装置はまた、たとえば、機械学習トレーニングまたは作成の共通かつ計算集約的な部分(すなわち、推論作業負荷)を処理するための専用のハードウェアアクセラレータユニットを含み得る。
機械学習モデルは、機械学習フレームワーク、たとえば、TensorFlowフレームワーク、Microsoft(登録商標)Cognitive Toolkitフレームワーク、Apache Singaフレームワーク、またはApache MXNetフレームワークを用いて実装および展開することができる。
本明細書に記載の主題の実施形態は、たとえばデータサーバとしてバックエンドコンポーネントを含むか、または、ミドルウェアコンポーネント、たとえばアプリケーションサーバを含むか、または、フロントエンドコンポーネント、たとえば本明細書に記載の主題の実現例とユーザがやり取りできるようにするグラフィカルユーザインターフェイス、ウェブブラウザもしくはアプリを有するクライアントコンピュータを含むか、または、1つ以上のそのようなバックエンド、ミドルウェア、もしくはフロントエンドのコンポーネントの任意の組合わせを含む、コンピューティングシステムにおいて実現することができる。システムのコンポーネントは、デジタルデータ通信の任意の形態または媒体、たとえば通信ネットワークにより、相互に接続することができる。通信ネットワークの例は、ローカルエリアネットワーク(local area network:LAN)およびワイドエリアネットワーク(wide area network:WAN)、たとえばインターネットを含む。
コンピューティングシステムはクライアントおよびサーバを含み得る。クライアントおよびサーバは、一般的には互いから離れており、典型的には通信ネットワークを通して対話する。クライアントとサーバとの関係は、各コンピュータ上で実行されるとともにクライアントとサーバとの相互の関係を有するコンピュータプログラムにより生じるものである。いくつかの実施形態では、サーバは、たとえば、クライアントとして機能するデバイスと対話するユーザに対してデータを表示するとともに当該ユーザからユーザ入力を受信する目的で、データ、たとえば、HTMLページをユーザデバイスに送信する。ユーザデバイスにおいて生成されたデータ、たとえばユーザ対話の結果は、サーバにおいてデバイスから受信することができる。
本明細書は多くの具体的な実現例の詳細を含んでいるが、これらは、いずれかの発明の範囲、またはクレームされ得るものの範囲を限定するものとして解釈されるべきではなく、特定の発明の特定の実施形態に特有となり得る特徴の説明であると解釈されるべきである。別個の実施形態の文脈において本明細書に記載されている特定の特徴は、単一の実施形態において組合せて実現されてもよい。逆に、単一の実施形態の文脈において記載されているさまざまな特徴は、複数の実施形態において別々に、または任意の好適な副次的組合せで実現されてもよい。さらに、特徴は特定の組合せで作用するものとして上述され得るとともに、さらにはそのようなものとして最初にクレームされ得るが、クレームされている組合せのうちの1つ以上の特徴は、場合によっては、当該組合せから削除されてもよく、クレームされている組合せは、副次的組合せまたは副次的組合せの変形例に向けられてもよい。
同様に、動作は特定の順序で図面に示されるとともに請求項に記載されているが、これは、このような動作が、望ましい結果を達成するために、示されている特定の順序もしくは連続的な順序で実行されなければならないと理解されるべきではなく、または、望ましい結果を達成するために、示されているすべての動作が実行されなければならないと理解されるべきではない。特定の状況では、マルチタスクおよび並列処理が有利となる可能性もある。さらに、上述の実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてこのような分離が必要であると理解されるべきではなく、記載されているプログラムコンポーネントおよびシステムが、一般に単一のソフトウェア製品に一体化され得ること、または複数のソフトウェア製品にパッケージングされ得ることが理解されるべきである。
主題の特定の実施形態が説明されてきた。他の実施形態は添付の特許請求の範囲内である。たとえば、特許請求の範囲に記載されている動作は、異なる順序で実行されて、依然として望ましい結果を達成することができる。一例として、添付の図面に示されているプロセスは、所望の結果を達成するために、必ずしも、図示される特定の順序または連続的順序を必要とするものではない。場合によっては、マルチタスクおよび並列処理が有利である可能性もある。