深層学習(DeepLearning)による「言語学習」を様々な環境で行い、速度を比較をしてみようと思います。今年(2021)の1月から考えていたことですが、やっと、実現できる環境が整いました。この5月の連休でやり遂げたいと思っていましたが、翌々日に終了しました(笑い)。
用語解説
まず、簡単に用語の説明をします。
深層学習(Deep Learning)は、人工知能の用語で、機械学習の一種です。現在、ほとんど全ての分野で使用されている技術です。もし、興味がある方は、親ブログを参考にしてください。
深層学習のポイントは、人間がアルゴリズム(問題の解決法)を与えるのではなく、コンピュータ自身にアルゴリズム(重み付け)を導かせることです。そのためには、非常に多くの試行錯誤が必要なため、膨大な量のデータとその計算が必要となります。現在では、人間が考える以上のアルゴリズムを導き出します。
次に、言語学習について説明します。簡単に言うと、「コンピュータに言葉の意味を覚えさせること」です。ここで注意が必要なのは、人間が言葉を覚えることと、コンピュータが言葉を覚えることは意味が異なります。この学習で得たデータを用いて、翻訳プログラムなどが動いています。
技術的な話を少ししたいと思います。詳細は、親ブログや、参考書籍を見てください。今回、学習に用いた方法は、改良型のRNN(リカレント・ニューラル・ネットワーク)です。また、学習データには、PTB(Penn Treebank)データセットを用いました。
学習のレベル
今回の学習のレベル(到達度)について、説明したいと思います。その前に、少しトピックを…
ご存じのように、人工知能は現在、第3回目のブームになっています。第1回と第2回のときは、発想倒れで、技術が追いついていませんでした。しかし、今回は、ハードウェア、ソフトウェア、人工知能アルゴリズム、全ての環境が整っています。そういう意味では、今回はブームでなく、確固とした技術革新の時代になっていると思います。日々、新しい技術が登場しています。
さて、本題に戻りますが、言語学習の評価の指標の一つとして、「Perplexity」があります。これは、小さければ小さいほど良いことを意味します。つまり、言葉の意味を学習できていることを表します。
今回のプログラムの Perplexity は「76.5」です。この数値がどれくらいのレベルか知っていただくために、今ままでの人工知能の世界競技会の結果を示しますので参考にしてください。この数値は、その当時の企業や大学の最先端の研究、世界最高の水準を表しています。つまり、当時の技術、予算、人員、全てを動員しての結果です。とても個人が出せる数値ではありません。
2012年 ー 141.2 ~ 92.0 2014年 - 82.7 ~ 78.4 2016年 - 79.7 ~ 62.4 |
さて、皆様方はどのように思われたでしょうか?私は、本当に凄い数値だと思います。それは、個人で、この数値が出せるという意味でです。
実行環境
今回、プログラムを実行する環境は、MacBook Pro(BigSur/M1)、Mini PC(Ubuntu/Celeron)、Note PC(Windows/Core i5)、Googole Colaboratry(GPU mode)の4つです。どれもバラバラな環境なので、比較すること自体に、あまり意味が無いかもしれません。
しかし、さまざまな環境で実行することで、人工知能の学習が、多くの人に身近なものになって欲しいと思っています。できれば、人工知能の学習の楽しさを多くの人に知ってもらいたいと思っています。
それでは、それぞれの実行環境の詳細を示します。
【MacBook Pro】
コンピュータスペック | |
Compuer CPU Memory Strage | Apple MacBook Pro 2020 Model Apple M1 with 8 CPU, 8 GPU, 16 Neural Engine 16GB SSD 256GB |
実行環境 | |
OS Software Execute Tool | BigSur Ver.11.2.3 Anaconda3 Ver.4.9.2 / Python Ver.3.8.5 Vertualenv Ver.20.4.3 Jupyter Notebook Ver.6.1.4 / Jupyter Core Ver.4.6.3 |
その他 | |
環境構築時に、「vertualenv」を使って、本体とは独立な環境を構築した。 |
【Mini PC】
コンピュータスペック | ||
Compuer CPU Memory Strage | MINIS FORUM GK41 Intel Celeron J4125 2.0GHz LP DDR4 8GB SSD M2.2280 128GB SATA SSD | |
実行環境 | ||
OS Software Execute Tool | Ubuntu Ver.20.04.2 LTS Anaconda3 Ver.4.9.2 / Python Ver.3.8.5 Jupyter Notebook Ver.6.2.0 / Jupyter Core Ver.4.7.1 | |
その他 | ||
購入時は、Windows10 Pro がプレインストールされていたが、購入後、すぐに Linux (Ubuntu) のインストールを行った。 |
【Windows Note PC】
コンピュータスペック | |
Computer CPU Memory Strage | FUJITSU Note PC Intel Core i5-3320M 2.6GHz 8GB SSD 256GB |
実行環境 | |
OS Software Execute Tool | Windows10 Pro Ver.20H2 biuld 19042.964 Anaconda3 Ver.4.9.2 / Python Ver.3.8.5 Jupyter Notebook Ver.6.1.4 / Jupyter Core Ver.4.6.3 |
その他 | |
パソコン本体は中古で購入。購入時、メモリ増設、SSDへの換装等を行った。 |
【Google Colaboratory with GPU】
コンピュータスペック | |
Compuer &CPU | Google Cloud TPU Service (Google Cloud Platform : GCP 上の) Google TPU (Tensor Processing Unit) Ver.1 or Ver.2 or Ver.3のいずれか、TPU は、Google が開発した、機械学習に特化した独自開発のプロセッサで、演算精度を犠牲にして、8/16bitの演算器をベースにしている。Ver.3のスペックは、1ポッド(複数のTPUを相互接続)で100PFLOPSである。 |
実行環境 | |
上記は、有料のサービスであるが、機能を制限した上で無料で開放している。今回、それを利用させていただく。また、オプションで GPU を使用できるので、GPU をオンにして実行する。 | |
その他 | |
上記サービスは、いつ廃止になるかは不明である。 |
実行結果
実は、今回のプログラムは、Windows NotePC と、Google Colaboratory では、既に実行し、計測が終了しています。しかし、以前の環境なので、時間に余裕があれば、再度、実行したいと考えています。今回は、まだ一度も実行していない、Macbook Pro と、Mini PC の計測を優先したいと思います。
個人的なことになりますが、Macbook Pro の結果に、とても期待しています(笑い)。
実行結果を示す前に、結果の見方について説明します。半分、プログラムの説明になります。深層学習/機械学習による言語学習のプログラムは、何度も学習を繰り返しながら賢くなります。この繰り返しの回数のことを、epoch という名称で表します。実際は、1epoch の中で何度も繰り返し(今回は、1327回)学習しています。
今回のプログラムで、perplexity が 76.5 になるには、epoch が 40 必要です。しかし、私の Windows PC では、1epoch の実行に1時間15分ほどかかります。従って、処理速度の比較は、1epoch だけの実行で行いたいと思います。その際、「学習終了時」と「学習用データ」、「評価用データ」による「perplexity」も示したいと思います。
実行結果は次のようになりました。
【MacBook Pro】 | |
1epoch | 処理時間 1993秒 学習終了時 perplexity 231.43 学習用データによる perplexity 199.94 評価用データによる perplexity 195.61 [計測期日 2021/04/29] |
【Mini PC】 | |
1epoch | 処理時間 4226秒 学習終了時 perplexity 233.01 学習用データによる perplexity 200.78 評価用データによる perplexity 197.44 [計測期日 2021/05/01] |
【Windows Note PC】 | |
1epoch | 処理時間 4404秒 学習終了時 perplexity 232.09 学習用データによる perplexity 200.68 評価用データによる perplexity 196.40 [計測期日 2020/12/19] |
【Google Colaboratory with GPU】 | |
1epoch | 処理時間 217秒 学習終了時 perplexity 233.02 学習用データによる perplexity 202.31 評価用データによる perplexity 197.53 [計測期日 2021/01/07] |
40epoch目 | 処理時間 203秒 学習終了時 perplexity 47.04 学習用データによる perplexity 80.20 評価用データによる perplexity 76.52 [計測期日 2021/01/08] トータル学習時間 8400秒(想像) |
比較・感想
今回の結果の比較、並びに、感想を示します。Mini PC は、翌々日に計測しました。
まずは、学習の状況を示す「perplexity」について比較したいと思います。
Macbook[1E] | Mini PC[1E] | Windows[1E] | Google[1E] | Google[40E] | |
学習終了時 | 231.43 | 233.01 | 232.09 | 233.02 | 47.04 |
学習用データ | 199.94 | 200.78 | 200.68 | 202.31 | 80.20 |
評価用データ | 195.61 | 197.44 | 196.40 | 197.53 | 76.52 |
備考 | 翌々日に計測 |
当たり前と言えば当たり前ですが、1epoch での結果はおおむね同じ値になりました。学習終了時が 230程度、学習用データが200程度、評価用データが195を超える程度です。Mini PC(Ubuntu/Celeron)でも、同様の結果が想像できます。(実際にそうでした)
ちなみに、Google Colaboratory (GPU) では、最初に紹介したように、40epoch で、評価用のデータでは 76.5 になりました。これは、本当に凄い値だと思います。
ちなみに、学習用のデータが英語(アメリカ?)だったので、学習した成果を確認した結果も、その影響を受けました。今回は、ある単語を与えて、「その単語とは?」と尋ねてみました。以下がその一例です。
「人生とは?」の問いに、 「人生は、連邦政府が来年登場することで、10億ドルを急落させることです。」 |
意味がよく分かりませんが、当時、アメリカ大統領選が1ヶ月前に行われ、何か意味深に感じさせた答えでした。実際は、単にランダムに導き出された文ですが…。
次に、処理時間についてです。
Macbook | Mini PC | Windows | |||
1epoch(実測) | 1993秒 | 4226秒 | 4404秒 | 217秒 | |
40epoch(予想) | 22時間 | 47時間 | 49時間 | 2.3時間 | |
比率 | 10 | 20 | 21 | 1 | Googole を1とする |
処理時間の結果に関しては、やはり、Google Colaboratory (GPU) が圧倒的に速いことが分かりました。40epoch の場合、Google で2時間超、Windows(Core i5)で2日、Macbook Pro(M1)でも1日が必要となります。ちなみに、Mini PC(Ubuntu/Celeron)では、3~4日が予想されます。
2021/05/01 追加記事です。
翌々日、Mini PC (Ubuntu/Celeron) で計測を行いました。驚きの結果になりました。何と、Celeron が Core-i5 とほとんど同じ結果になってしまったのです。
原因として考えられるのは、
「両者の CPU は世代による違いで、実は、同等のパフォーマンスを持っていた」
「CPU のパフォーマンスの差を、Windows と Ubuntu の、OSによる違いが吸収した」
などが考えられます。今後、詳しく調べてみたいと思います。
今後やりたいこと
最後に、今回の一連の作業を終えて、今後やりたいことを述べたいと思います。
まず、やらなければいけないことがあります。それは、書籍を用いた、人工知能の学習です。今回は、実践的な機械学習がテーマです。詳細は、こちらへどうぞ。一番下にある書籍4を使って、勉強する予定です。
それを行いつつ、別途、やりたいことは、
① 深層学習/機械学習において、M1 のパフォーマンスを最大限に引き出す、
プログラムの実行環境の構築方法を調べて実践する
② 深層学習/機械学習に特化したNVIDAの専用プロセッサを搭載した、
AIコンピュータの購入と活用(将来は実用システムの構築を目指す)
の2つです。
①については、こちらのブログで順次記事にしたいと思います。②については、親ブログに記事を書きたいと思いますが、導入時の状況は、こちらのブログでも記事にしたいと思います。
コメント