2020年10月16日
AIのイネーブラーとなるコンテナ
コンテナとマイクロサービスは、AIの発展を加速させています。組織はアプリケーションを一度作成すれば、あらゆる場所で実行できるようになります。
2010年代のはじめに企業がDockerコンテナを使い始めたときに、彼らの主な関心はモビリティの問題を解決することでした。つまり、どのホストシステムで実行されても同じ結果を得られるようなソフトウェアを手に入れることです。作成する個々のマイクロサービスを、システム全体に影響を与えずに簡単に変更および拡張できるようになったことで、開発環境に予見性と信頼性がもたらされました。
複雑な人工知能 (AI) アプリケーションを作成することは、コンテナユーザーの優先度リストの上位にはありませんでした。AIアプリを作成するには多くの作業が必要であり、展開するには多くのリソースが必要になります。現在、コンテナの人気が高まり、AIの採用が広がっている中で、企業はコンテナ化を活用して、AIや機械学習のライフサイクルで柔軟性、ポータビリティ、信頼性を実現しようとしています。
AIの市場は爆発的に拡大しています。北アメリカだけでも、ハードウェア、ソフトウェア、サービス向けのAI市場の規模は2018年に210億ドルになっており、2026年には2,030億ドルに達すると予測されています。AIは、自動運転車からデジタル音声アシスタントや感情分析にいたるまで、幅広い用途で重要な役割を果たしています。
AIの普及には多くの要因があります。具体的には、多数のソースから得られた大規模なデータセットを広く利用できるようになったこと、組織がデータの潜在的な価値を認識するようになったこと、AIのツールやテクノロジーを利用しやすくなったこと、計算リソースが安価になったこと、データサイエンティストやデータエンジニアの数が増えていることなどが挙げられます。簡単に言えば、AIから得られる結果が実際に利益を生み出すことがわかってきたのです。
コンテナがもたらす価値
企業がAIアプリの開発と展開を容易にするためにコンテナを使っているのはなぜでしょうか? 主な理由は、コンテナには柔軟性があり、アプリケーションを一度作成すればどこでも、つまり、あらゆるサーバー、クラウドプロバイダー、オペレーティングシステムで実行できるようになるからです。
企業は機械学習を活用してビジネス成果を改善するために多くのデータサイエンティストを雇っています。これらの高度なスキルを持つスタッフはソフトウェアの数理モデルを構築し、膨大な量の履歴データを処理してビジネス成果の予測を行っています。Google、Tesla、Amazon、その他の企業は、高度な機械学習モデルから得られた有益な情報を用いて市場に破壊的なイノベーションをもたらしました。
しかし、データサイエンティストを雇うだけでは十分ではありません。AIの普及が進み、専門家の研究対象から企業の関心の的になるにつれて、機械学習モデルを作成して本番環境のアプリケーションに展開するためのツールやプロセスが必要になっています。AIの可能性を実現するには、本番環境でツールやテクノロジーを活用することが不可欠です。
機械学習モデルを作成する際の課題
機械学習モデルの作成は、データサイエンティストが常に行っている反復プロセスで、データの調査、データの前処理、特徴の抽出、モデルのトレーニング、モデルの検証、モデルの展開という段階があります。一度作成したら終わりというわけではありません。必要になるものが事前にはっきりとわかっている場合は、コードを書くだけで済みますが、AIを活用するには、ソフトウェアが現実を十分に表現しているソリューションに収束するまで、データと機械学習を使って繰り返し学習させる必要があります。
機械学習のプロジェクトでは、複数の手順が反復して実行されます。最初に試験的な取り組みを通じて、現在のデータとビジネス課題に最適なアルゴリズムを見つけ出します。多くの場合、データサイエンスのチームはさまざまなトレーニングアルゴリズムを異なる環境で同時に試して、現在の問題に最適なものを採用します。
このプロセスの課題は、大きく変化するコンピューティング性能のニーズを計画して管理することです。MLモデルのトレーニングでは、特にデータ抽出とモデルのトレーニングの段階で計算リソースに大きな負荷がかかります。モデルによる推論、つまり、トレーニング済みのモデルと新しいデータを使って予測を行うプロセスでは、必要なコンピューティング性能は少なくなりますが、そのコンピュートシステムは重要なビジネス機能のモデルを提供するので信頼性が求められます。変化するコンピューティング性能のニーズに対処するため、企業はオンプレミスとパブリッククラウドのハイブリッドアーキテクチャーを活用し、効率的かつ費用対効果の高い方法でデータサイエンスのニーズに対応しています。
MLライフサイクルでコンテナを使用する利点
コンテナを使用すると、機械学習モデルの開発を大幅に加速できます。従来のVM環境やベアメタル環境では、開発環境のプロビジョニングに数週間や数か月かかることもありますが、コンテナ化された開発環境は数分でプロビジョニングが完了します。データ処理と特徴の抽出は、MLライフサイクルで鍵となる段階ですが、コンテナ化された開発環境を使用すれば、これらの処理が必要になったときにクラスターを簡単に立ち上げて、不要になったらすぐに取り除くことができます。モデルのトレーニングの段階では、コンテナの柔軟性を活用してトレーニング環境を複数のホストサーバーに分散して構築すれば、インフラストラクチャのリソースを効率的に使用できます。トレーニングが完了したら、モデルをコンテナのエンドポイントとしてホストし、オンプレミス、パブリッククラウド、またはネットワークエッジに展開することができます。
これらのエンドポイントは必要に応じてスケールアップやスケールダウンが可能なので、展開で求められる信頼性とパフォーマンスが得られます。たとえば、レコメンデーションエンジンを備えた小売Webサイトを提供している場合、Webサイトにアクセスするユーザーが増加したら、コンテナを追加してモデルの新しいインスタンスを起動できます。その後、需要が低下したら不要になったコンテナを破棄できるので、高価なハードウェアリソースを効率的に使用できます。
AIと分離
アプリケーションとその依存ライブラリをパッケージ化し、他のコンテナ化アプリケーションから分離することは、AIシステムでは特に有用です。AIで分離のニーズが高い理由は、従来のソフトウェア開発よりも多くのバージョンのソフトウェアツールやモデルが必要になるからです。従来の開発者がよく行っているのはソフトウェアアップデートですが、その変更点は、AIモデルを作成する際のさまざまなバージョンを伴う変更点よりもはるかに少ないのが普通です。
たとえば、データサイエンティストはGPUで使用するTensorFlowやPyTorchのバージョンに非常に気を配っています。選択するツールやツールのバージョンは、モデルのトレーニングにかかる時間や収束するソリューションに大きく影響する場合があるからです。そのため、データサイエンティストは、モデルの実行環境を管理し、さまざまなモデル向けに複数の環境を同時に設定できるようになることを望んでいます。コンテナを使用すれば、それぞれのモデルを他のモデルの影響を受けずに実行できます。
トレーニング済みのモデルを再トレーニングしようとしている場合は、再現性も重要になります。正確な結果が得られるように、開発者は以前と同じバージョンのツールと依存ライブラリを使って同一の環境を用意しなければなりません。依存ライブラリパッケージのバージョンが変わると、正しい結果が得られない場合があります。
AI/MLでコンテナを活用する際の課題
本質的に機械学習アプリケーションはデータに大きく依存しているので、そのアプリケーションをコンテナに展開する作業は、Webアプリケーションや他のマイクロサービスベースのアプリケーションをコンテナに展開するほど単純ではありません。機械学習アプリケーションでは、コンテナ内でデータの永続性を確保するために特別な構成オプションが必要になります。また、コンテナの利点はアプリケーションの柔軟性とポータビリティが向上することですが、複雑なシステムで複数のコンテナを管理する作業は簡単ではありません。このような場合は、Kubernetesが役に立ちます。
Kubernetesはオープンソースのオーケストレーションフレームワークで、コンテナ化されたクラウドネイティブのアプリケーションの展開と管理を行うことができます。ただし、オープンソースのKubernetesだけでは、コンテナ化アプリケーションをエンタープライズ規模で展開するには十分ではなく、さらに多くの機能が必要になります。たとえば、管理、監視、永続ストレージ、セキュリティ、アクセス制御の機能などです。
コンテナをより広範に使用するために欠かせない機能の1つに、ステートフルアプリケーションでの永続ストレージのサポートがあります。データにアクセスするデータ分析やMLアプリケーションでは、データレイヤーまたはデータファブリックが必要になります。これらの機能を使えば、コンテナ化アプリケーションは、どこに展開されていても一貫した方法でデータにアクセスできるようになります。
さらなるイノベーション
他のソフトウェア工学と同様に、機械学習もコンテナのアジリティ、ポータビリティ、柔軟性からメリットを得られます。実際に、この分野で多くのイノベーションを目にすることができます。たとえば、KubeDirectorは、複雑な分散型のステートフルアプリケーションをKubernetesで実行することを目的としたオープンソースプロジェクトです。また、KubeFlowは、本番環境のML展開を簡素化することを目的としたオープンソースプロジェクトです。コンテナを採用する企業が増えていくにつれて、この分野でさらに多くのイノベーションを目にすることになるでしょう。
コンテナとAI: リーダーのためのアドバイス
- 組織は「一度ビルドすればどこでも実行できる」というポータビリティと柔軟性を得るために、AI/MLライフサイクルでコンテナを活用し始めています。
- アプリケーションとその依存ライブラリをパッケージ化して他のコンテナ化アプリケーションから分離する機能は、AI展開では特に有用です。
- 複雑なシステムで複数のコンテナを管理する作業は簡単ではありませんが、オープンソースのKubernetesが役立ちます。特に重要な要件は、永続ストレージと内蔵型のセキュリティです。
この記事/コンテンツは、記載されている特定の著者によって書かれたものであり、必ずしもヒューレット・パッカード エンタープライズの見解を反映しているわけではありません。

Ellen Friedman
ヒューレット・パッカード エンタープライズ、プリンシパルテクノロジスト
Ellen Friedmanはヒューレット・パッカード エンタープライズのプリンシパルテクノロジストで、大規模なデータ分析と機械学習に取り組んでいます。Ellenは、HPEで現在の職に就く前にMapR Technologies社で働いていました。彼女はApache DrillとApache Mahoutのオープンソースプロジェクトのコミッターとして活動していた経験があり、O’Reilly Media社から出版された『AI & Analytics in Production』、『Machine Learning Logistics』、『Practical Machine Learning』シリーズなどの書籍の共同執筆者です。
enterprise.nxt
ITプロフェッショナルの皆様へ価値あるインサイトをご提供する Enterprise.nxt へようこそ。
ハイブリッド IT、エッジコンピューティング、データセンター変革、新しいコンピューティングパラダイムに関する分析、リサーチ、実践的アドバイスを業界の第一人者からご提供します。