中国移動研究所のチャン・ヤオビン氏:主流の人工知能技術スタックの詳細な議論と実践的な概要

中国移動研究所のチャン・ヤオビン氏:主流の人工知能技術スタックの詳細な議論と実践的な概要

はじめに:近年の人工知能技術の急速な発展は、主にニューラルネットワーク、チップ、ビッグデータという 3 つの要素の統合によるものです。人工知能とは、機械が人間のように考えたり、さらには人間を超えたりするようになることです。機械学習は、人工知能を実現する方法です。その最も基本的なアプローチは、アルゴリズムを使用してデータを解析し、そこから学習し、現実世界の出来事について決定や予測を行うことです。ディープラーニングは、機械学習を実装するもう 1 つの方法です。より多くのレイヤーとニューロンを使用し、大量のデータをシステムに入力してネットワークをトレーニングすることで、人間のニューラル ネットワークをシミュレートします。以下では、医療分野における人工知能のプラットフォーム アーキテクチャを例に、コンピューティング エンジンと分析エンジンを中心に、基本データ層、コンピューティング エンジン層、分析エンジン層、アプリケーション エンジン層、および一般的なアプリケーション層の 5 層モデル技術スタックについて説明します。

01

まず、人工知能プラットフォームのコンピューティング エンジンについて説明します。現在、最も主流の 5 つのビッグ データ分散コンピューティング フレームワークには、Hadoop、Spark、Flink、Storm、Samaza が含まれます。利点と適用シナリオについては以下で説明します。

1. Hadoop は最も商業的に使用されているフレームワークであり、業界や製品コミュニティで広く認知されています。データをバッチ処理し、小さな処理タスクに分割してコンピューティング クラスターに分散し、結果を統合して、プロセス全体を論理的に明確にできる場合、このシナリオは Hadoop 処理に非常に適しています。

2. Spark はより高度なアーキテクチャを使用しており、柔軟性、使いやすさ、パフォーマンスの点で Hadoop よりも優れています。Hadoop に取って代わる傾向がありますが、安定性を大幅に改善する必要があります。

3. Flink はバッチ処理とリアルタイム処理の両方のフレームワークですが、ストリーム処理が依然として優先されています。Flink は、Java および Scala 用のストリーム API、Java、Scala、Python 用の静的データ API、Java および Scala に SQL クエリを埋め込むためのコードなど、一連の API を提供します。また、機械学習および画像処理パッケージも組み込まれています。

4. Storm は、一定の市場シェアを占める分散コンピューティング フレームワークです。そのアプリケーションは、有向非巡回グラフとして設計されています。 *** ストリームを簡単に処理できるように設計されており、あらゆるプログラミング言語で使用できます。各ノードは 1 秒あたり数百万のタプルを処理し、非常にスケーラブルで、タスク処理の保証を提供します。 Clojure で書かれています。リアルタイム分析、分散機械学習、特に大規模なデータ ストリームを扱うさまざまな状況で使用できます。 Storm は YARN 上で実行でき、Hadoop エコシステムに統合されています。

5. Samza は LinkedIn がオープンソース化した分散ストリーム処理フレームワークです。Kafkaメッセージ キューをベースとしてリアルタイムのストリーミング データ処理を実装しており、Twitter のストリーム処理システム Storm と非常によく似ています。違いは、Samza が Hadoop をベースとしており、LinkedIn の Kafka 分散メッセージング システムを使用し、リソース マネージャー Apache Hadoop YARN を使用してフォールト トレランス、プロセッサ分離、セキュリティ、およびリソース管理を実現することです。

02

Spark は、大規模なデータ処理向けに設計された高速で汎用的なコンピューティング エンジンです。バージョン 2.4 がリリースされました。 Spark は、カリフォルニア大学バークレー校 AMP ラボによって開発された Hadoop MapReduce に似た汎用並列フレームワークです。Hadoop MapReduce のほぼすべての利点を備えています。メモリ分散データセットの助けを借りて、インタラクティブなクエリを提供できるだけでなく、反復的なワークロードを最適化することもできます。今年リリースされた Spark 2.4 は、Spark の安定性、使いやすさ、パフォーマンスを継続的に向上させるだけでなく、Spark のエコシステムを拡張し、K8s 上の Spark を導入して、ユーザーに Spark を展開する新たな方法を提供します。また、Pandas UDF も導入され、ユーザーは Pandas 関数を Spark 上で直接実行できるようになります。カーネル操作アーキテクチャを次のように分析します。

1. SparkContextエンジン構築分析:

一般的に言えば、ユーザーが開発した Spark アプリケーションの送信と実行は、SparkContext のサポートから切り離すことはできません。アプリケーションを送信する前に、まず SparkContext を初期化する必要があります。 SparkContext は、ネットワーク通信、分散デプロイメント、メッセージ通信、ストレージ システム、コンピューティング エンジン、測定システム、ファイル サービス、Web UI などのコンテンツを隠します。アプリケーション開発者は、SparkContext が提供する API を使用するだけで機能開発を完了できます。

2. SparkEnv環境構築分析​​:

Spark 実行環境 SparkEnv は、Spark でタスクを実行するために必要なコンポーネントです。 SparkEnv は、RPC 環境 (RpcEnv)、シリアル化マネージャー、ブロードキャスト マネージャー (BroadcastManager)、マップ タスク出力トラッカー (MapOutputTracker)、ストレージ システム、測定システム (MetricsSystem)、出力送信コーディネーター (OutputCommitCoordinator) など、タスク操作に必要なさまざまなコンポーネントを内部的にカプセル化します。

3. 交換可能なストレージシステムの分析

Spark は、各ノードのメモリをストレージとして使用することを優先し、メモリが不足している場合にのみディスクの使用を検討します。これにより、ディスク I/O が大幅に削減され、タスク実行の効率が向上するため、Spark はリアルタイム コンピューティング、反復コンピューティング、ストリーミング コンピューティングなどのシナリオに適しています。実際のシナリオでは、一部のタスクはストレージを集中的に使用し、他のタスクはコンピューティングを集中的に使用するため、コンピューティング スペースのリソースが非常に不足している一方で、ストレージ スペースが非常にアイドル状態になることがあります。 Spark のメモリ保存領域と実行保存領域の境界は「ソフト」境界にすることができるため、リソースが不足している側が他方の領域を借りることができ、リソースを有効活用できるだけでなく、タスクの実行効率も向上します。さらに、Spark のメモリ空間では、オペレーティング システムのメモリを直接操作する Tungsten の実装も提供されます。 Tungsten では、Java オブジェクトをヒープ内に割り当てる必要がないため、システムのメモリ リソースをより効率的に利用できます。また、システム メモリを直接操作するため、スペースの割り当てと解放も高速になります。

4. 2レベルスケジューリングシステムの分析:

スケジューリング システムは主に DAGScheduler と TaskScheduler で構成されており、どちらも SparkContext に組み込まれています。 DAGScheduler は、ジョブの作成、DAG 内の RDD をさまざまなステージに分割し、ステージに対応するタスクを作成し、タスクをバッチで送信する役割を担います。 TaskScheduler は、FIFO や FAIR などのスケジューリング アルゴリズムに従ってバッチ タスクをスケジュールし、タスクにリソースを割り当て、実行を担当するクラスター マネージャーの現在のアプリケーションの Executor にタスクを送信する役割を担います。 Spark には SparkSession や DataFrame などの新しい API が追加されましたが、これらの新しい API の基盤となるレイヤーは依然として SparkContext に依存しています。

5. 多次元計算エンジン解析:

コンピューティング エンジンは、メモリ マネージャー (MemoryManager)、Tungsten、タスク メモリ マネージャー (TaskMemory-Manager)、Task、外部ソーター (ExternalSorter)、シャッフル マネージャー (ShuffleManager) などで構成されています。 MemoryManager は、ストレージ システム内のストレージ メモリのサポートと管理に加えて、コンピューティング エンジン内の実行メモリのサポートと管理も提供します。ストレージに加えて、タングステンはコンピューティングや実行にも使用できます。 TaskMemoryManager は、単一のタスクに割り当てられたメモリ リソースのよりきめ細かい管理と制御を提供します。 ExternalSorter は、ShuffleMapTask によってマップ側またはリデュース側で計算された中間結果に対して、ソート、集計、およびその他の操作を実行するために使用されます。 ShuffleManager は、各パーティションに対応する ShuffleMapTask によって生成された中間結果をディスクに永続化し、Reduce 側のパーティションに応じて ShuffleMapTask によって生成された中間結果をリモートでプルするために使用されます。

6. 強力な SparkMLlib 機械学習ライブラリ:

機械学習のエンジニアリング実践を簡素化し、より大規模なスケーラビリティを実現することを目的としています。 MLlib は、分類、回帰、クラスタリング、協調フィルタリング、次元削減などの一般的な学習アルゴリズムとツール、および低レベルの最適化プリミティブと高レベルのパイプライン API で構成されています。

それでは、人工知能プラットフォーム解析エンジンの処理を分析してみましょう。分析エンジンの主な技術は機械学習とディープラーニングです。機械学習フレームワークは、分類、回帰、クラスタリング、異常検出、データ準備などのさまざまな学習方法をカバーし、ニューラル ネットワーク メソッドも含めることができます。ディープラーニング フレームワークは、パターン認識の複数ステップのプロセスを含む、多くの隠し層を持つさまざまなニューラル ネットワーク トポロジをカバーします。ネットワーク内のレイヤーが増えるほど、クラスタリングと分類のために抽出できる特徴は複雑になります。一般的なディープラーニング フレームワークには、Caffe、CNTK、DeepLearning4j、Keras、MXNet、TensorFlow などがあります。その中でも、Deeplearning4j は、Java、Scala、Clojure ユーザー グループで最も広く使用されている JVM オープン ソース ディープラーニング ツールです。これは、ディープラーニングをプロダクションスタックに導入することを目的としており、Hadoop や Spark などの主流のビッグデータ フレームワークと緊密に統合されています。 DL4J は、画像、テキスト、時系列、サウンドなど、すべての主要なデータ タイプを処理できます。提供されるアルゴリズムには、畳み込みネットワーク、LSTM などの再帰ネットワーク、Word2Vec や Doc2Vec などの NLP ツール、さまざまな種類のオートエンコーダーが含まれます。 Deeplearning4j には、クラスター上で分散ニューラル ネットワーク トレーニングを処理するための Spark 統合が組み込まれており、データ並列処理を使用してネットワーク トレーニングを複数のコンピューターにスケールアウトし、各ノードを 1 つの GPU (または 4 つの GPU) で実行します。

03

ディープラーニングフレームワークの計算には大量の画像データが必要です。データは前処理のためにフロントエンドからバックエンドに送信され、その後ラベル付けされてトレーニングデータセットが得られます。データが整理された後、モデルのトレーニングを実施します。これは、非常に計算量と通信量の多いプロセスです。モデルのトレーニング後、推論と予測を実施します。これは主に順方向の計算プロセスです。バッチ サンプルに対しては高スループットと高同時実行の応答、単一サンプルに対しては低レイテンシの応答が必要です。以下は画像認識プロセスの例です。

1. データの収集と取得:

光や音などの情報は、IoTセンサーを通じて電気情報に変換されます。情報には、テキスト、画像などの 2 次元イメージ、音波、心電図、脳波などの 1 次元波形、または物理量や論理値などがあります。

2. データ前処理:

これには、A\D、2値化、画像スムージング、変換、強調、復元、フィルタリングなどが含まれており、主に画像処理を指します。

3. 特徴の抽出と選択:

パターン認識では、特徴を抽出して選択する必要があります。たとえば、64x64 の画像では 4096 のデータを取得できます。測定空間の元のデータを変換して、特徴空間で分類の本質を最もよく反映する特徴を取得します。これは特徴の抽出と選択のプロセスです。

4. 分類器の設計:

分類器設計の主な機能は、トレーニングを通じて決定ルールを決定し、その決定ルールに従って分類を実行したときにエラー率が最小になるようにすることです。

5. 分類決定:

識別されたオブジェクトを特徴空間で分類します。

***、人工知能プラットフォーム分析エンジンのディープラーニングを探ります。 多層ニューラルネットワーク上のさまざまな機械学習アルゴリズムを使用して、画像やテキストなどの問題をどのように解決しますか? ディープラーニングは、ニューラルネットワークとして広く分類できますが、具体的な実装には多くの変更があります。ディープラーニングの中核は特徴学習であり、階層型ネットワークを通じて階層的な特徴情報を取得し、これまでは手動の特徴設計を必要としていた重要な問題を解決することを目的としています。ディープラーニングは、CNN 畳み込みニューラル ネットワーク、AutoEncoder 自動エンコーダー、Sparse Coding スパース コーディング、RBM 制限付きボルツマン マシン、DBN ディープ ビリーフ ネットワーク、RNN 多層フィードバック リカレント ニューラル ネットワークなど、複数の重要なアルゴリズムを含むフレームワークです。さまざまな問題 (画像、音声、テキスト) に対して、より良い結果を得るには、さまざまなネットワーク モデルを使用する必要があります。

04

畳み込みニューラル ネットワークに注目しましょう。これは、少なくとも 1 つの層を含むニューラル ネットワークです。この層の機能は、入力 f と設定可能な畳み込みカーネル g の畳み込みを計算して、出力を生成することです。畳み込みの目的は、畳み込みカーネルをテンソルのすべてのポイントに適用し、畳み込みカーネルをスライドさせることで新しいフィルタリングされたテンソルを生成することです。畳み込みの価値は、入力の次元を削減する能力にあり、これは畳み込みカーネルのストライド パラメータを変更することによって実現されます。ストライドを設定することは、入力テンソルの次元を調整する方法です。ストライド パラメータの形式は、入力ベクトルと同じです。課題は、入力が境界にある場合、画像の境界を埋めることができることです。データ形式はNHWC(数値、高さ、幅、チャンネル数)です。畳み込みカーネルの機能は、多くの場合、畳み込みカーネルの中心にあるピクセルのグレースケールを強調することです。畳み込みニューラル ネットワーク (CNN) は、主に、変位、拡大縮小、その他の歪みの影響を受けない 2 次元グラフィックスを認識するために使用されます。

CNN の特徴検出層はトレーニング データを通じて学習されるため、CNN を使用する場合は明示的な特徴抽出が回避され、トレーニング データから暗黙的に学習が行われます。さらに、同じ特徴マップ上のニューロンの重みは同じであるため、ネットワークは並列に学習することができ、これもニューロンが互いに接続されたネットワークに対する畳み込みネットワークの大きな利点です。畳み込みニューラル ネットワークは、ローカル重み共有の特殊な構造により、音声認識や画像処理において独自の利点を持っています。そのレイアウトは実際の生物学的ニューラル ネットワークに近いものであり、重み共有によりネットワークの複雑さが軽減されます。特に、多次元入力ベクトルの画像を直接ネットワークに入力できるため、特徴抽出および分類時のデータ再構築の複雑さが回避されます。

活性化関数: ニューラル ネットワークの入力に非線形性を導入し、曲線を通じて入力のより複雑な変化を特徴付けることができます。tf.nn.relu、tf.sigmoid、tf.tanh、tf.nn.dropout はモデルの設計によく推奨され、そのパフォーマンスは比較的優れています。活性化関数が有用かどうかを評価する要因は次のとおりです。単調性、勾配降下法を使用してローカル極値点を見つける。微分可能、任意のポイントで導関数を計算できることを保証するため、活性化関数の出力に勾配降下法を使用できます。モデルの評価指標は、感度、特異度、精度です。感度(感度、再現率、敏感)= TP/P = TPR、特異度(特異度)= TN/N、精度(精度)= TP/TP+FP。

つまり、人工知能フレームワークの時代は成熟しており、もはや科学者や技術者の主な戦場ではありません。ネットワーク構造とトレーニング方法を革新するには、いくつかのコンピューティングモデルとアルゴリズムの実装を再定義する必要があります。このようなディープラーニングアルゴリズムは、より効果的で、一般的なモバイルデバイスで動作できるようになります。追加のハードウェアサポートを必要とせず、メモリオーバーヘッドも抑制します。これにより、人工知能技術が大規模な商用段階に入り、人工知能製品が消費者市場に完全に参入するようになります。

[この記事は、51CTO コラムニスト「Mobile Labs」によるオリジナル記事です。転載については、元の著者にお問い合わせください。]

この著者の他の記事を読むにはここをクリックしてください

<<:  人工知能はどのようにして銀行をより「インテリジェント」にすることができるのでしょうか?

>>:  2019年中国インテリジェント製造業のトップ10の発展トレンド!

ブログ    
ブログ    
ブログ    
ブログ    
ブログ    

推薦する

人工知能は人間の生活水準をどのように向上させることができるのでしょうか?

米国を例にとると、10年後には、成人一人当たり人工知能ビジネスから年間13,500ドルの利益を得るこ...

顔認識技術が「無人小売」時代の到来を牽引

序文:顔認識は現在最も人気のある人工知能技術として、生産と生活のあらゆる側面で広く使用されています。...

AIもボトルネックに遭遇。人工知能技術のストレージ性能要件の分析

2020年は多くの人々にとって忘れられない年です。新型コロナウイルス感染症の突然の発生は、ほぼすべて...

2つのセッションが始まります!自動運転とスマートカーに関する最新の提案13選

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

...

約100機のドローンが「爆発」し、重慶の建物に墜落した!プログラムエラー、ホストクラッシュ

ドローンが墜落することは珍しくありませんが、数十機、あるいは数百機ものドローンが同時に墜落したらどう...

Nature: AI はなぜいつも差別的なのか?

[[241142]]ビッグデータダイジェスト制作編集者: Hu Jia、Wang Yiding、X...

アルゴリズムに関する漫画: コンシステント・ハッシュとは何ですか?

1年前——同システムでは、今後2年間で総注文数が約1億件に達すると予測している。 1 つの MyS...

...

人間を殺し、ロボット犬を救う「ボストンパワー」ロボットはターミネーターに変身する

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

モバイルアプリの開発とビジネスにおける人工知能の役割は何ですか?

人工知能の誕生により、モバイル アプリケーションに大きな可能性をもたらすまったく新しい時代が到来しま...

ソラを解剖:技術的な詳細を推測するための37ページのリバースエンジニアリング、マイクロソフトも参加、中国チームが制作

ソラは発売後すぐにリバースエンジニアリングによって「解剖」されたのでしょうか? !リーハイ大学とマイ...

未来の戦場は「瞬殺」の時代へ、人工知能が威力を発揮

近年、人工知能技術は飛躍的な進歩を遂げ、戦闘指揮の分野で広く応用され、観察・判断・決定・行動(OOD...

マインクラフトがAIの街に変身、NPC住民が本物の人間のようにロールプレイ

この立方体の男が、目の前にいる「招かれざる客」の正体について素早く考えている様子を、注意深く見てくだ...