1. はじめに
OSS(Open Source Software)が生まれた背景
---------------------------------------
ソフトウェアの発展は、メインフレーム時代はIBM、ワークステーション時代はSUN Microsystems、PC時代はMicrosoftと、技術に秀でた企業が担っていました。そして、これら各企業によるソフトウェアライセンスを中核に、独占的なエコシステムが形成されて来ました。しかし1995年のWindiws95によるインターネット普及をきっかけとして、”Internet Explorer” のWindowsバンドルへのNetscape社による提訴に代表されるように、一企業によるエコシステムの独占的な支配に対する反対の声が強くなりました。多くのインターネット振興企業が公平に成長できるよう、より自由で皆が参加できるソフトウェアのあり方が模索されるようになりました。同時に、インターネットを介して多くのソフトウェアエンジニアが国境を越えて協調できる環境が作られたことも大きいです。さらに、インターネットを経由して複雑な機能を組み合わせた様々なビジネスモデルが提案されるに従い、ソフトウェアのステップ数も飛躍的に増大していき、もはや一企業が独占的に開発・維持していくことが困難になって来ました。このような時代背景で、OSS(Open Source Software)は生まれ、大企業も2000年頃には参画し、Linuxをはじめ、今ではOSSがエコシステムの中核になって来ました。
2. コンテナ
コンテナ技術がビジネスを索引
---------------------------------------
最近のソフトウェアアーキテクチャにコンテナ技術があります。これはハイパーバイザ技術の応用で、ホストOSのLinuxの上で、複数のゲストOSのLinuxが動かせると言うアイディアから生まれています。(実際には、同じLinux kernel機構なので、複数のゲストOSにおけるプロセスIDなどの名前空間を独立的にホストOSにマッピングするだけで良く、ハイパーバイザよりシンプルに構成できます。)
このコンテナ技術により、今、動いているアプリケーションやミドルウェアをLinux Kernelとともに塊として捉え、これを導入の単位とすることが可能になります。その結果、アプリケーションやミドルウェアごとに動作可能なLinux Kernelとの相性があり、複数システムが最新のLinux Kernelでは協調できかなった問題が解決しました。
このコンテナ技術はDocker社(開発当時はdotCloud社)がソフトウェア流通の仕組みも含めて開発したものがOSSで公開され、多くの会社に受け入れられました。これもコンテナ技術を独占せず、多くの企業に公開することで、各社の成長にも貢献できると言うことからデファクトに向かった事例です。
このコンテナを利用しようと思った時、複数のマシン(クラウド上での仮想マシン)上でどの機能をどう配置(デプロイ)するかを毎回手作業で行うのは大変です。この作業を自動化することをコンテナオーケストレーションと呼びます。このコンテナオーケストレーションでは、今ではGoogleが開発しOSS化したKubernetesが一強になっています。
このようなクラウドを利用したITシステムにおけるOSSの代表例を示します。
3. AI
AI技術の遷移
---------------------------------------
コンテナ技術とともに、現在、ビジネスを牽引しているのはAI技術です。
人間の脳細胞の動きをモデル化したニューラルネットに対し、規則性を発見しづらいもの(例えば動物の写真による種類の識別など)において、事例(例えば動物の写真)を数多く学習させると、ニューラルネット上に、自動的に推論器(例えば、動物の写真を見て種別を答える)が形成されると言うものです。
従来は、計算機資源(CPU速度やメモリ容量、処理対象データを記憶するディスク容量)が膨大に必要になることから、実用性のある推論器は作れませんでしたが、まずクラウドの普及により、膨大な計算機資源を安価に使えるようになりニューラルネットを利用したAI技術は一気にブレイクしました。
Cloudを中心に、ニューラルネットの形を設計し、データを与えて学習させ推論を作る枠組み(フレームワーク)として、Google主導のTensorflow、Facebook主導のPyTorchがあり、より多くの採用企業を増やすため、ともにOSS化しています。
一方、組み込み系においてはゲームPCにおけるグラフィックスで利用しているGPGPU (General Purpose Graphics Processing Unit) により、ニューラルネットの積和演算を高速処理させることでAI技術に進出して来たnVIDIAが大きなシェアを持っています。nVIDIAはフレームワークとしてCUDAを開発していますが、OSS化はしていません。
このようにCUDA、Tensorflow、PyTorchがそれぞれ独立した体系を作っていた頃の状況を以下に示します。
しかし、またTensorflowとPyTorchの間でニューラルネットを相互利用するため、ONNX形式が関係者により定義され、その変換ソフトはOSSとして公開されました。
2018年頃の、この状況を以下に示します。
さらにTensorflowやPyTorchで学習できたニューラルネットをnVIDAでも使いたいとの要望が強くなり、TensorflowからCUDAにニューラルネットをインポートするTensorRTをnVIDIAが開発しました。
これに加え、ニューラルネットを低消費電力やより高速化のため、専用ハードウェアに適用したいとの要望が出てきました。特に、自動車の自動運転では、バッテリー一回の充電での航続距離を延ばすため、AI技術の低消費電力化への強い要望があります。
これまでCPUないしはGPGPUで処理していた一部を、専用の低消費電力ハードウェアで処理させるために、予め、その専用ハードウェア向けにニューラルネットを変えてしまうと、せっかくTensorflowなどで学習させたニューラルネットが無駄になりますし、専用ハードウェアを変えると、毎回、ニューラルネットの構成を変え、再学習をすることになり不便です。
これを避けるため、ニューラルネットの中間表現(IR: Intermediate Representation)が出て来ました。そしてこの中間表現にニューラルネットを変換するフロントエンドと、中間表現を個々のハードウェアに合わせて最適割り当てを行うバックエンドを備えたLLVMと言うものが出て来ました。LLVMでは、ハードウェアの構造に合わせた最適割り当てや、高速化のためのニューラルネットのビット削減やノード数削減など、精度に影響を与えない範囲で等価変形する機能も含んでいます。
この最先端のLLVM/IRにおいては、ワシントン大学が中心になりOSS化したTVM(Tensor Virtual Machine)と、Facebookが中心になりOSS化したGLOWが二強となっています。
このような開発環境の整備が進むことで、低消費電力向けのAI半導体を企画して来たルネサスにもビジネスチャンスが訪れます。
2019年以降の、現在の状況を以下に示します。
4. おわりに
これまで述べて来たように、最新のソフトウェア技術はOSSを中心に進化しています。それは、多くの知恵が必要なことや、一社単独で開発するには、ソフトウェア分量が多すぎることなどから、自然な流れです。
一方で、AIでの画像認識での前処理によく使われるOSSのOpenCV(BSDでライセンス)に、2019年に一部、Affero GPLでライセンスされるソースコードが混入し、一部で騒ぎになったことがあります。Affero GPLは、その機能をネットワーク越しで利用しても、利用した側にAffero GPLのライセンスが適用され、すべてのソースコード開示が前提となり、OSSの利用と自社独自技術の共存が難しいライセンスです。
最先端のソフトウェア技術はOSSがリードしますが、利用にあたっては、自社のソースコードの出自を明らかにして、適切なライセンス対応を行うとともに、自社ビジネスにとり不都合なライセンスのソースコードが混入していないかの確認も必要です。
そのためにもFOSSIDなどのツールを上手に活用し、さらに社内でのOSS利用ルール(ガイドライン)を整備することが大切です。
(*1)本文中記載の会社名、商品名、ロゴは各社の商標、または登録商標です。
Tips集のご案内
テクマトリックスでは、開発企業としてOSSと上手につきあうための「OSS活用Tips集 – シーズン2」を提供しています。
「資料ダウンロードはこちら」から、ホワイトペーパーを一括でダウンロードできます。
1.「OSS最新動向-コロナに負けないオープンソース」
2.「オープンソースSBOMが必要な理由とは!」
3.「ソフトウェアイノベーションはOSSから、コンテナ・AI技術がイノベーションを牽引」
4.「OSSと上手に付き合う方法~攻めは最大の防御なり~」
5.「OSSと上手に付き合う方法~サプライチェーンを安全に~」
6.「ISO/IEC 5230で変わる?OSSコンプライアンス対策」
7.「著作権トロールとは?」