ディープラーニング学習用途に最適なLinuxディストリビューションとは?

入門/解説

1.ディープラーニング学習用途に最適なLinuxディストリビューションとは?まとめ

・ディープラーニング開発用途に使われている一番ユーザが多いLinuxはUbuntu
・Ubuntuが好まれる理由はユーザの多さとAI用ツール群の公式サポート対象である事
・Pop!_OSと言う新しいディストリビューションがNVIDIA driverを同梱しており扱いやすそう

2.機械学習/人工知能用途の観点からLinuxのdistroの比較と分析

以下、embeddedinventor.comより「Best Linux Distro For Machine Learning & AI: Comparison & Analysis」の意訳です。元記事の投稿は2020年4月19日、EIさんによる投稿です。

機械学習/人工知能は深いところに入っていくとLinux版しか提供されていないソフトウェアに出会うようになります。一言にLinuxといっても様々な団体がOSとソフトウェア群をとりまとめて提供しており(distro、ディストリビューションと言います)があり、ルーツは同じであってもディストリビューション毎に特徴があります。

ディープラーニング用途で一番使われているディストリビューションはおそらくUbuntu(ウブントゥ)系列と思います。根拠はColabがUbuntuベースである事、また、GCPがAIフレームワーク用途に提供しているインスタンスイメージである「Deep Learning VM」がDebian GNU/Linuxベース(ベータ版としてUbuntuもあり)であり、Ubuntuは元々Debianから派生した経緯があるためです。

しかし、Ubuntuであっても数年前の情報には、GPUが刺さっているとインストーラーが落ちて前に進めない、等の先達の皆さんの苦戦の跡が散見されるので全てがスムーズに進むわけではなさそうです。そのため、2021年2月時点でもUbuntuが好まれているのか、Ubuntuでなければいけない理由があるのか?Ubuntuがお勧めされる理由が何なのかを改めて調べてみたくなり意訳しました。

ディストリビューションのメンテをしている方にとっては色々と物言いしたくなるような表現も含まれているかもしれませんが、ユーザ目線の意見と言う事でご容赦ください。

アイキャッチ画像のクレジットはディープな世界にダイブしていくペンギンでPhoto by Joshua Ryder on Unsplash

本記事は、機械学習とAIを実行するのに最適なLinuxディストリビューションを見つけようとしている、Linuxユーザーやディストリビューション探求者の方を対象としています。先に進んで、私達が機械学習とAI実行に最適なLinuxディストリビューションとして何を選択したのかを調べ、各ディストリビューションの違いを分析してみましょう。

機械学習とAIの探求を急いで始めたいという方のために、短い回答を見てみましょう。

短い回答
No1のディストリビューション:Ubuntuとその派生ディストリビューション
No2のディストリビューション:FedoraとRHELファミリーのディストリビューション

これが短い版の回答です。先に進んで、より長く、より有益な情報を見て、考慮された要因、他にどのような選択肢があるかを学び、Ubuntuが機械学習とAIの最良のディストリビューションとして選ばれる理由を見てみましょう。機械学習とAIの探求を開始するためのいくつかの貴重なリソースと一緒に!

分析
Linuxはすでにサーバー市場のかなりの割合を占めており、そこで最も支配的なプレーヤーです。 Linuxがますます有名になるにつれて、Linuxでデスクトップ環境サポートを強化する多くのディストリビューションが開発されています。

コーディングが必要なプログラマー用のセットアップは、コンテンツの作成と編集が必要なアーティストやビデオ編集者用のセットアップと根本的に異なります。従って、Linuxをワークステーションとして使用するために重要と見なされるいくつかの要因は、Linuxで実行する予定の作業の種類によって異なります。

しかし、いくつかの要因はすべての種類の作業に共通しています。 これらには以下が含まれます

・安定性
・パフォーマンス
・サポートとセキュリティ

次に選択するLinuxディストリビューションで全ての生産的な活動を実行する予定ならば、ワークステーション用途に最適なディストリビューションを見つけるために、いくつかの選択肢を分析および比較した以下のリンクで最近書いた記事「Best Linux Distro For Workstation: Analysis and Comparison!!」を読むことをお勧めします。

次に、機械学習とAIアプリケーションの開発を希望するプログラマーのニーズのいくつかを見てみましょう。

基本的な要件
機械学習とAIを行うための基本的なニーズには、次のものがあります。
・優れたコードエディター:VS code, Atom, Sublime Text, Brackets.
・Python、R、GO、および機械学習に使用できるその他のプログラミング言語のサポート
・プロジェクトに必要となる可能性のあるPyTorch、TensorFlow、OpenCV、その他の機械学習ライブラリのサポート
・様々なオペレーティングシステムで機械学習とAIアプリをテストするための仮想化ソフトウェア(LinuxはVirtualBoxとGNOMEBoxをサポートしています)
・必要になる可能性のあるデータ収集、検証、および整理ツール
・Gitのようなソースコード管理ソフトウェア
・GitLabのようなDevOpsツール

Linuxは主要なオペレーティングシステムであり、Linuxにはコードの開発と実行に必要な全ての機能があるため、上記のニーズは全てのLinuxディストリビューションで満たすことができます。

必要なのは、選択したライブラリの必要なバージョンがディストリビューションにインストールされていることを確認することだけです。いずれにせよ、これらのディストリビューションは同じLinux OSを使用しています。そのため、特定のコードをどれだけうまく実行できるかという観点では、1つのディストリビューションが他のディストリビューションよりも優れているわけではありません。

その他の重要なニーズ
最新のライブラリの公式サポート

しかし、私達はAIを専門とした開発に関心があるため、最新のフレームワークがリリースされたらすぐに利用可能になり、最新バージョンでコードをテストできる事が必要です。

通常、各ディストリビューションの公式リポジトリは最新のフレームワークがリリースされた後にしばらくたってから更新されますが、望むならフレームワークの公式Webサイトからいつでも最新バージョンを直接ダウンロードしてインストールできます。従って、これは、ディストリビューションを選択する際の意思決定要因にはならないもう1つのニーズです。

これにより、最後の重要なニーズである、機械学習アプリケーション用に特別に作成された最新のツールが必要になります。

意思決定要因:機械学習とAIアプリ用に設計された最新のツールがある事

機械学習アプリを効率的にトレーニングするために必要なセットアップには多くのリソースが必要になります。その一方、機械学習アプリの実行には比較的早く完了するので何時間も待つ必要はありません。そのため機械学習アプリを実行して推論を行うために、トレーニングと同じ環境を使用する必要はありません。

機械学習アプリのデプロイ時に使用される主な戦略は、Dockerなどのコンテナを使用してそれらをクラウドにデプロイする事です。しかし、これには、開発者が留意する必要のある独自の課題、微妙な差違、細かい設定が伴います。これにより、開発作業の生産性が低下します。通常、機械学習のスペシャリストは、これらのばかげた作業が非常に興味深いとは思わず、 代わりにアルゴリズムの設計に集中し続けるためにを回避しようとします。

最新の機械学習開発用ツール No1:KubeFlow
機械学習とAIアプリ開発者の上記のニーズを解決するために、KubeFlowと呼ばれるオープンソースプロジェクトで、リソース、ライブラリ、コンテナ化の要件を管理して機械学習アプリの開発と展開を容易にするツールが積極的に開発されています。

最新のツール No2:CUDA
ご存知かもしれませんが、GPUにはCPUよりも多くのコアがありますが、これらのGPU処理コアは、画面に何かを描画する必要があるときに常に遭遇する種類のタスクである、いくつかの単純なタスクを実行するように配線されています。

AIアプリをトレーニングするときはいつでも、アルゴリズムは通常、収束するまで何度も繰り返すように設計されています。ここでは、GPUのコアを利用して、プロセス全体を少し高速かつ効率的にすることができます。ただし、その前に、GPUをハッキングしてこれらの機械学習タスクを実行するために、NvidiaのCUDAなどの追加ソフトウェアが必要です。

デプロイ段階では、いつでもNvidia Dockerイメージを取得してこれを実行できます。

全てのディストリビューションの選択肢を確認したので、次に、ディストロの選択肢を見て、ニーズに最適なものを選択しましょう。

最適なディストリビューションの選択
それでは私達が選んだ3つの最も人気のあるディストリビューションファミリーを発表します。

(1)Debianファミリー:Debian、Ubuntu、LinuxMintなど
(2)RedHatファミリー:FedoraとCentOS
(3)Archファミリー:Arch、Manjaroなど

Ubuntuが1位になる理由
UbuntuはKubeFlow、Kubernetes、Docker、CUDAなどを公式にサポートしているため、Ubuntuは上記のすべてのニーズを満たします。人気のあるディストリビューションであるため、サポート、機械学習チュートリアルなどの豊富な情報をオンラインで見つけることができます。したがって、Ubuntuは機械学習のナンバーワンディストリビューションとして選ばれています。

Unityデスクトップに不安がある場合は、Kubuntu、Xubuntu、Lubuntuなどの他の好みのデスクトップ環境のいずれかを使用できます。これらのデスクトップ環境の詳細については、「Linux Distros vs Desktop Environments: Differences Explained!」を参照してください。

Debianは上級ユーザー向けのディストリビューションと見なされているため、使用者は多くありません。同じことが、Ubuntuほど多くの使用者を持たないDebianの他の派生ディストリビューションにも当てはまります。これにより、機械学習の目的で最善の策として、UbuntuとUbuntu風のディストリビューションが選択肢として残ります。

Fedoraが2位になる理由
FedoraはRedHatファミリーの製品であり、RedHatが最新機能をテストしてから、RHEL(Red Hat Enterprise Linux)でリリースするためのテスト用ディストリビューションとして使用されます。従って、Fedoraは、Linuxの分野における最新の進歩のサポートという点で最も人気のあるディストリビューションです。また、Ubuntuに次ぐ多くの使用者がいるためです。使用者が多いため、Fedoraはほとんどのツールがすぐに利用できるもう1つのディストリビューションです。

機械学習アプリがサーバーまたはクラウドから実行されることになっている場合、ほとんどのサーバーがRHELで動いているので、Fedoraを使用してアプリを開発することは理にかなっています。ボーナスとして、UbuntuのようなDebianベースのディストリビューションで利用可能になる前に、いくつかの実験的な機能を数ヶ月、時には数年も使用できる事もあります。

Arch Linuxとその派生物はどうでしょうか?
Archとその派生物は全て、問題をいじくり回すことができる上級ユーザーのニーズに応えることを目的としています。従って、統合開発環境を開発しているIDE企業は、Archユーザーが遭遇する可能性のある問題を解決するのに十分熟練していると思っているため、Archエコシステムでのアプリのテストに多くのリソースを投資しません。

結論
使用しているディストリビューションがすでに気に入っている場合は、機械学習アプリとAIアプリを開発するためだけに切り替える理由はありません。Linuxの世界の初心者の場合は、UbuntuまたはUbuntuから派生物したディストリビューション、またはLinux Mintを使用してみてください。Linuxの分野にしばらく携わっていて、UbuntuやMintなどのDebianファミリーのディストリビューションから切り替えたい場合は、RedHatファミリーのFedoraまたはCentOSを試してみてください。Linuxの専門家であれば、Archファミリーを試してみましょう。機械学習とAI作業を実行するために独自に最適化されたバージョンをインストールすることをお勧めします。

以上で、この記事を締めくくります。

皆さんがこの記事を楽しんで、何か役に立つことを学んだことを願っています。

3.Webbigdataによる捕捉

元記事は2020年4月と少し古いため、Webbigdataで2021年2月時点の最新のディストリビューションランキングをdistrowatch.comから持ってきたのが以下です。

順位 Distribution Page Hit Ranking
1 MX Linux 3411<
2 Manjaro 2432>
3 Mint 2131>
4 Pop!_OS 2106>
5 Ubuntu 1384=
6 Debian 1282>
7 EndeavourOS 1220>
8 elementary 1144<
9 Fedora 991>
10 Solus 808

過去六か月間の集計だとUbuntuより人気のディストリビューションが4つも存在します。そして、「Pop!_OS」が全く聞いた事がなかったので、調べてみたところ、

・最近突然人気が急上昇している
・Ubuntuベースであり特別に目新しい機能はない
・日本語対応しているわけでもなくディストリビューション評価をしている人の中にはお勧め度を低としている人もいた
・System76というアメリカのBTOパソコン制作会社が配布している
・BTOパソコンのメニューを見たら普通にGPUs複数刺し前提のモデルが沢山あった
・インストール用isoイメージにNVIDIA driver同梱版を選べる
・TensormanというTensorFlowツール群をパッケージ化するツールを独自開発して配布している

との事で、これ完全にNVIDIAドライバのインストールがしやすいから人気が急上昇したディストリビューションでディープラーニング開発用途(もしくはマイニング用途)にPop!_OSの人気が急上昇したのではないかと推測されます。

まだ実際に使ってはいないのでPop!_OSがどこまでオススメできるかはわかりませんが、今後、Pop!_OSを実際に評価してみようと思っています。

なお、もし入門用にPCへのインストールを考えている方がもしおられましたら「人工知能/機械学習を学ぶ際の開発環境の注意点」も読む事をオススメします。

4.ディープラーニング学習用途に最適なLinuxディストリビューションとは?関連リンク

1)embeddedinventor.com
Best Linux Distro For Machine Learning & AI: Comparison & Analysis
Best Linux Distro For Workstation: Analysis and Comparison!!
Linux Distros vs Desktop Environments: Differences Explained!

2)distrowatch.com
DistroWatch.com: Put the fun back into computing. Use Linux, BSD.

3)github.com
pop-os

タイトルとURLをコピーしました