第9回 AI技術を組み込んだアプリケーションの開発(前半)

インターネットを利用したサービスで覇者となった企業たちは、マイクロサービスとコンテナを活用することで、競合他社を大きく引き離す成果を挙げた。このような手法と技術を、企業に取り入れるモダナイゼーションが注目されている。それはITサービス提供力を重視する戦略的活動であり、これからの企業の発展を大きく左右するためだ。従来のアプリケーションにAI技術を組み込み、ビジネスに革新を起こす事例が相次いでいる。ところがAIの未来的なイメージと比べ、開発現場は地道な作業の繰り返しである。その中でコンテナは、AI技術を組み込んだアプリケーションの開発と実行に欠かせないプラットフォームとしての地位を固めつつある。

日本IBM テクノロジー事業本部 高良真穂

AIのアプリ開発とは

 プログラミングを少しでも学んだことがある人はIF文の役割をご存知だろう。変数の値や処理結果に基づいて、処理を選択するのだ。つまりIF文でルールを記述して、重ねていけば、複雑な判断や対応を決めることができる。要するに、プログラムは、業務のエキスパートの知識や経験をコード化した知的財産なのだ。では、このようなノウハウが満載されたプログラムと、人工知能技術を活用したプログラムでは何が違うのか?

 人工知能技術を利用したプログラムでは、収集されたデータから、自動的にルールを発見することを目指している。業務のエキスパートが設定したルールをプログラム化するのではなく、大ざっぱに言ってしまえば、膨大な量のデータを収集して、その中からルールを発見して判断を行うのだ。これには統計学の知識、機械学習(Machine Learning)、GPUにより脳の仕組みを模倣した深層学習(Deep Learning)などの技術が必要になる。

 このようなAI技術を組み込んだプログラムを開発するには、上図の工程を繰り返し実行することが求められる。なぜならば、開発に利用したデータに偏りがあれば、それから作られる数学モデル、すなわち、「数式と変数」の回答には、偏見のような誤りを含むものになる。そして、モデルには正解というものがないのだ。そのため、学習データとモデル適用の結果を繰り返し評価しながら、改善を繰り返し、実用レベルの完成度へと高めていかなければならない。

 そして、最終的に本番サービスに組み込んでからも、常に動作をモニタリングしていなければならない。人間と同じように生涯の学習を通じて、知識をリフレッシュして、基準を見直さなければならないからだ。このようにAIの未来的なイメージに反して、AIアプリの開発現場は地道な作業の繰り返しなのだ。

コンテナとAIアプリ開発

 コンテナとKubernetesは、マイクロサービス、継続的開発と継続的リリース、スケーラビリティ、モニタリングに優れたプラットフォームであることを解説してきた。この特性はAI技術を応用したシステムの開発と運用のニーズに、非常に良くマッチしている。そのようなことからKubernetes上でAI技術の開発と運用を目的としたOSS群が開発され普及してきた。このようにして、AIのプラットフォームのデファクトスタンダードとしてKubernetesは認知されている。

 次回は、AIアプリの開発と運用を支援するKubernetesで動作するOSSについて話を進めていきたい。