TensorFlow が機械学習開発に使用できるのはなぜですか?

TensorFlow が機械学習開発に使用できるのはなぜですか?

機械学習は複雑な分野ですが、データの取得、モデルのトレーニング、予測の提供、将来の結果の改善のプロセスを簡素化する Google の TensorFlow などの機械学習フレームワークのおかげで、実装は以前よりもはるかに簡単になりました。

TensorFlow は、Google Brain チームによって作成され、2015 年に初めて一般公開された、数値計算と大規模機械学習用のオープンソース ライブラリです。 TensorFlow は、多数の機械学習およびディープラーニングのモデルとアルゴリズム (ニューラル ネットワークとも呼ばれます) をまとめ、共通のプログラミング メタファーを通じてそれらを便利なものにします。 Python または JavaScript を使用してアプリケーションを構築し、それらのアプリケーションを高性能 C++ で実行するための便利なフロントエンド API を提供します。

TensorFlow は、PyTorch や Apache MXNet などのフレームワークと競合し、手書き数字の分類、画像認識、単語の埋め込み、リカレント ニューラル ネットワーク、機械翻訳用のシーケンス間モデル、自然言語処理、PDE (偏微分方程式) ベースのシミュレーション用のディープ ニューラル ネットワークをトレーニングして実行できます。最も重要なのは、TensorFlow が同じモデルをトレーニングに使用して、大規模な生産予測をサポートしていることです。

TensorFlow には、独自のプロジェクトで使用できる事前トレーニング済みモデルの広範なライブラリもあります。 TensorFlow Model Park のコードを、独自のモデルをトレーニングするためのベスト プラクティスの例として使用することもできます。

TensorFlowの仕組み

TensorFlow を使用すると、開発者はデータフロー グラフ (データがグラフまたは一連の処理ノード内をどのように移動するかを説明する構造) を作成できます。グラフ内の各ノードは数学演算を表し、ノード間の各接続、つまりエッジは多次元データ配列、つまりテンソルです。

TensorFlow アプリケーションは、ローカル マシン、クラウド内のクラスター、iOS および Android デバイス、CPU、GPU など、最も便利なターゲットで実行できます。 Google 独自のクラウドを使用する場合は、Google のカスタム TensorFlow Processing Unit (TPU) チップ上で TensorFlow を実行し、さらに高速化することができます。ただし、TensorFlow によって作成された結果モデルは、予測を提供するためにほとんどのデバイスに展開できます。

TensorFlow 2.0 は 2019 年 10 月にリリースされ、ユーザーからのフィードバックに基づいてフレームワークにさまざまな改善が加えられ、使いやすくなり (たとえば、モデルのトレーニングに比較的シンプルな Keras API を使用するなど)、パフォーマンスが向上しました。新しい API のおかげで分散トレーニングの実行が容易になり、TensorFlow Lite のサポートにより、より幅広いプラットフォームにモデルを展開できるようになります。ただし、新しい TensorFlow 2.0 機能を最大限に活用するには、以前のバージョンの TensorFlow 用に記述されたコードを書き直す必要があります (少しだけ書き直す場合もあれば、大幅に書き直す場合もあります)。

トレーニング済みのモデルは、REST または gRPC API を使用して Docker コンテナ経由でサービスとして予測を提供するために使用できます。より高度なサービスシナリオではKubernetesを使用できます

Python で TensorFlow を使用する

TensorFlow は、Python 言語を通じてこれらすべての機能をプログラマーに提供します。 Python は習得も使用も簡単で、高レベルの抽象化を結合する方法を表現する便利な方法を提供します。 TensorFlow は Python バージョン 3.7 から 3.10 でサポートされています。以前のバージョンの Python でも動作する可能性がありますが、動作が保証されるわけではありません。

TensorFlow のノードとテンソルは Python オブジェクトであり、TensorFlow アプリケーション自体も Python アプリケーションです。ただし、実際の計算は Python では実行されません。 TensorFlow が提供する変換ライブラリは、高性能な C++ バイナリとして記述されています。 Python は、さまざまな部分間のトラフィックを単純に誘導し、それらを相互に接続するための高レベルのプログラミング抽象化を提供します。

TensorFlow での高レベルの作業 (ノードとレイヤーの作成とそれらのリンク) では、Keras ライブラリが使用されます。 Keras API は、一見するとシンプルです。3 つのレイヤーを持つ基本モデルは 10 行未満のコードで定義でき、同じモデルをトレーニングするには数行のコードしか必要ありません。しかし、「ベールを剥ぎ取り」、独自のトレーニング ループを作成するなど、よりきめ細かい作業を実行したい場合は、それを行うことができます。

JavaScript で TensorFlow を使用する

Python は、TensorFlow と機械学習を扱うための最も人気のある言語です。しかし、JavaScript は現在 TensorFlow の第一級言語でもあり、JavaScript の大きな利点の 1 つは、Web ブラウザーがあればどこでも実行できることです。

TensorFlow.js (JavaScript TensorFlow ライブラリとして知られています) は、WebGL API を使用して、システムで利用可能な任意の GPU を使用した計算を高速化します。実行に WebAssembly バックエンドを使用することもできます。これは、CPU のみで実行する場合、通常の JavaScript バックエンドよりも高速ですが、可能な場合は常に GPU を使用することをお勧めします。事前に構築されたモデルを使用すると、簡単なプロジェクトを立ち上げて実行することができ、仕組みを理解することができます。

テンソルフローライト

トレーニング済みの TensorFlow モデルは、エッジ コンピューティングや、iOS や Android システムなどのモバイル デバイスにデプロイすることもできます。 TensorFlow Lite ツールセットは、モデルのサイズと精度の間でトレードオフを可能にすることで、TensorFlow モデルを最適化し、このようなデバイスで適切に実行できるようにします。より小さいモデル(12MB 対 25MB、または 100MB 以上)は精度が低くなりますが、精度の低下は通常小さく、モデルの速度とエネルギー効率によって相殺されます。

TensorFlow を使用する理由は何ですか?

TensorFlow が機械学習開発にもたらす最大の利点は抽象化です。開発者は、アルゴリズムの実装の詳細に取り組んだり、ある関数の出力を別の関数の入力に接続する正しい方法を考え出したりするのではなく、全体的なアプリケーション ロジックに集中できます。 TensorFlow は舞台裏で詳細を処理します。

TensorFlow は、TensorFlow アプリケーションをデバッグして理解する必要がある開発者にとって、より便利な機能を提供します。グラフ全体を単一の不透明なオブジェクトとして構築し、一度に評価する代わりに、各グラフィック操作を個別に透過的に評価および変更できます。このいわゆる「Eager 実行モード」は、TensorFlow の古いバージョンではオプションとして利用可能でしたが、現在は標準となっています。

TensorBoard 視覚化スイートを使用すると、インタラクティブな Web ベースのダッシュボードを通じてグラフの動作を検査および分析できます。 Tensorboard.dev サービス (Google がホスト) を使用すると、TensorFlow で記述された機械学習の実験をホストして共有できます。最大 100M のスカラー、1GB のテンソル データ、1GB のバイナリ オブジェクト データを無料で保存できます。 (Tensorboard.dev でホストされているデータはすべて公開されているため、機密性の高いプロジェクトには使用しないでください。)

TensorFlow は、Google のトップクラスの商業組織のサポートからも多くの利点を得ています。 Google はプロジェクトの急速な発展を推進し、TensorFlow の導入と使用を容易にする多くの重要な製品を開発しました。 Google Cloud のパフォーマンスを高速化するために使用される上記の TPU チップは、ほんの一例です。

TensorFlow を使用した決定論的モデルトレーニング

TensorFlow 実装の詳細によっては、特定のトレーニング ジョブで完全に決定論的なモデル トレーニング結果を取得することが困難になります。まったく同じデータを入力した場合でも、あるシステムでトレーニングされたモデルと別のシステムでトレーニングされたモデルのパフォーマンスが若干異なる場合があります。この矛盾の理由は複雑です。1 つは乱数がシードされる方法と場所に関係しており、もう 1 つは GPU を使用する際の非決定的な動作に関係しています。 TensorFlow の 2.0 ブランチには、数行のコードでワークフロー全体で決定論を有効にするオプションがあります。ただし、この機能はパフォーマンスを犠牲にするため、ワークフローのデバッグ時にのみ使用する必要があります。

TensorFlow と PyTorch、CNTK、MXNet の比較

TensorFlow は他の多くの機械学習フレームワークと競合します。 PyTorch、CNTK、MXNet は、多くの同じニーズを満たす 3 つの主要なフレームワークです。 TensorFlow と比較して優れている点と劣っている点を簡単に見てみましょう。

  • PyTorch は Python で構築されており、内部のハードウェア アクセラレーション コンポーネント、すぐに使用できる設計作業を可能にする高度にインタラクティブな開発モデル、すでに含まれている多くの便利なコンポーネントなど、TensorFlow との類似点が数多くあります。 PyTorch は、短期間で稼働させる必要があるプロジェクトの迅速な開発に適した選択肢となることがよくありますが、TensorFlow は、より大規模なプロジェクトやより複雑なワークフローに適しています。
  • CNTK は Microsoft Cognitive Toolkit であり、グラフ構造を使用してデータ フローを記述する点で TensorFlow に似ていますが、主にディープラーニング ニューラル ネットワークの作成に重点を置いています。 CNTK は、多くのニューラル ネットワーク ジョブをより高速に処理でき、より幅広い API (Python、C++、C#、Java) を備えています。しかし、現時点では TensorFlow ほど学習やデプロイが簡単ではありません。また、TensorFlow はより自由な Apache ライセンスの下で利用できるのに対し、GNU GPL 3.0 ライセンスの下でのみ利用できます。そして、CNTK はそれほど積極的に開発されていません。最後のメジャーリリースは 2019 年でした。
  • Apache MXNet は、AWS 上の主要なディープラーニング フレームワークとして Amazon によって採用されており、複数の GPU と複数のマシンにわたってほぼ直線的に拡張できます。 MXNet は、Python、C++、Scala、R、JavaScript、Julia、Perl、Go など、幅広い言語 API もサポートしていますが、ネイティブ API は TensorFlow ほどユーザーフレンドリーではありません。また、ユーザーと開発者のコ​​ミュニティもはるかに小さくなっています。


元のタイトル: TensorFlow とは? 機械学習ライブラリの説明

<<:  AI の成功のための 10 の重要な役割

>>:  AIのリスクと安全性をどのように管理するのか?

ブログ    
ブログ    
ブログ    

推薦する

AI革命:大人になったら仕事がないかもしれない

2050 年の雇用市場がどうなるかは全く分かりません。 [[412422]]わずか10年から20年の...

...

PaddlePaddle をベースに構築された産業グレードの ICNET アプリケーションの予測速度は、TensorFlow を 20% 上回ります。

導入ICNET について話すとき、リアルタイム アプリケーションにおける画像セマンティック セグメン...

1つのコマンドでChatGPTがさらに強力になります

GPT を使用する過程で、AI にニーズをより明確に理解させる方法が重要です。今日は、GPT をあな...

冬季オリンピックで使用されたロボット配送車両を振り返ると、自律走行機能が核となる

本稿では、冬季オリンピックで使用されたロボット配送車両を概観し、より多くの消費者層に便利で高品質なサ...

機械学習研究開発プラットフォームの選択

機械学習は現在隆盛を極めていますが、機械学習を学習・研究し、実稼働環境で活用したい場合には、プラット...

海外メディア:科学者らが深海を探索できる魚のようなソフトロボットを設計

3月4日のニュース、外国メディアの報道によると、ネイチャー誌に最近発表された研究によると、中国のエン...

AIの頂点:プレミアムディープラーニングGPU、KG 7204-R5

人工知能(AI)の分野といえば、「人間対機械」ゲームにおける「AlphaGo」という名の名を挙げざる...

人工知能を使ったチャットボットの構築方法

今日、世界は、パーソナライズされたエクスペリエンスを提供しながら、人間が重要な決定を下したり、重要な...

...

中科世宇の王金橋氏:5Gは新しい警察アプリケーションを強化し、交通管理の「細かく科学的な」管理を改善します

最近、「つながりとインテリジェンス、より安全な世界の構築」をテーマにした2021年世界セキュリティ博...

...

人工知能、機械学習、認知コンピューティングの入門

何千年もの間、人々はインテリジェントな機械を構築する方法について考え続けてきました。それ以来、人工知...

中小企業はデータセンターの自動化によってもたらされる課題にどのように対処するのでしょうか?

デジタル変革の時代において、データセンターは現代の企業のバックボーンを支える上で重要な役割を果たしま...

Pytorch チュートリアル: 初心者向けクイックガイド

Python は、オープンソースの ML ライブラリ Pytorch のおかげで、データ サイエンス...