DGX Sparkでゼロから始めるAIワークステーション

ゲーミングPCとDGX Spark、学習処理はどちらが速いのか、AIモデル開発で試してみた

 大容量の128GB統合メモリを搭載しているDGX Sparkですが、弱点とされているのがメモリの帯域です。CPU/GPUとメモリ間の速度は最大273GB/sで、コンシューマー向けハイエンドGPUであるNVIDIA GeForce RTX 5090の1792GB/sと比較すると6分の1以下となっています。

 このメモリ帯域の速さ・遅さは、単純に言うとデータの入出力速度に影響します。主に推論時、たとえばローカルAIでLLMに対して指示したときの応答(出力)が、DGX SparkはGeForce RTX 5090より遅くなる可能性があります。

 それを踏まえたうえで、じゃあ推論処理ではなく学習処理の方はどうなのか、というのが気になるところ。数多くのAIモデルが無料で配布されていることもあり、AIを「使う」ことに注目が集まりがちですが、AIを「作る」のも試してみたい。ということで、テストしてみることにしました。

スマホでも使える軽い形態素解析エンジンを作った

 今回テストに使うのは、筆者がしばらく前から作っている日本語の形態素解析エンジン「Sobagaki」です。少し前置きが長くなってしまいますが、最初に「形態素解析」と「Sobagaki」がどういうものなのか、簡単に説明しておきたいと思います。

自作テキストエディタに統合しているSobagaki

 形態素解析は、文章を構成する名詞や動詞、形容詞などの品詞を1つ1つ分解するための手法です。典型的な例としては「すもももももももものうち」という1文です。これは「すもも|も|もも|も|もも|の|うち」(スモモも桃も桃のうち)というように分解されます。

 名詞と助詞が順番に現われている文で、これを機械的に処理するのは簡単なことではありません。どこまでが名詞で、どれが助詞で、というのを判断するのもそうですが、そもそも無数に存在する単語を知っていないと区別すらできないからです。

 このような分析を高速に行なえるようにしたのが形態素解析エンジンで、日本語用としてはMeCabやSudachi、Janomeなどが代表的です。オープンソースで商用利用が可能なものも多く、気軽に自作のアプリやサービスに組み込めます。

 が、筆者としては、そのどれもがデータサイズが大きかったり、特定のプログラミング言語用だったりするのが不満でした。筆者が別で開発しているWindows/macOS/スマホ用のテキストエディタに形態素解析機能を内蔵したいと思ったのですが、既存エンジンだとフィットしません。多機能ではなくてもとにかく軽量で、スマホでも高速にローカル処理できるものが欲しかったのです。

 もしエディタに内蔵できれば、無駄に頻出しているワードを検出できます。「そして」、「しかし」のような言葉の連続は、ウザいけれど自分では読み直しても意外と気付けなかったりするもの。形態素解析で該当箇所を目立つように表示すれば気付けますし、他にも固有名詞の表記に誤りがないか、表現に揺れがないか、といったチェックにも応用可能です。

 ということで、独自に形態素解析エンジンを作ることにした結果、できたのがSobagakiというわけです。

軽量だけれど学習処理はけっこう重い

 前提の話、もうちょっとだけ続きます。

 Sobagakiは主に3層の処理レイヤーからなります。最初に教師ありデータを使い、1層目(Layer 1)は「単語をどこで区切るか」を、2層目(Layer 2)は「単語がどの品詞にあたるか」を、それぞれ学習します。

 3層目(Layer 3)は学習処理はせず、別途用意した単語リストを元に文章内の表記と突き合わせるためのものです。固有名詞の訂正や類似表現の提示などが主な用途となります。

Sobagakiのレイヤー構造

 これら3層あるうちLayer 1とLayer 2に、いわゆるAIを活用しています。元となる学習用のテキストは一部でライセンスフリーのデータを採用しつつ、筆者が過去十数年に渡って蓄積してきた(かつ自分が権利をもつ)原稿テキストを使用。アルゴリズムも特許・権利関係をクリアにしながら開発しています。

 処理が高速で、モデルデータが合計10MB未満と軽量なうえ、正解率は97.35%(UD_Japanese-GSD testにおけるUPOS精度)とそこそこ性能も出ています。が、これだけ小さいモデルであっても学習処理にはかなりの時間がかかります。

Windowsでの学習処理の様子。1エポックあたりの処理時間は1分前後。これを50回繰り返して学習するので1時間は待つことに
ベンチマークでは正解率が97.35%とそれなり

 筆者の仕事用デスクトップPCは、本格3Dゲームもちゃんと動いてくれる下記のようなゲーミングPCに近いスペック。にもかかわらず、CPUで学習処理をさせると一晩かけても終わりません。さすがにGPU(CUDA)で処理するように変更しましたが、それでも1時間は待たなければいけないのです。

【デスクトップPCとDGX Sparkの主要スペック比較】

DGX Sparkの学習処理は速いのか、実行結果を比較

 ようやくここからが本題です。Sobagakiの品詞分解の精度をより高めるために、元データを変えたりアルゴリズムを調整したりして再学習することが時々あるのですが、そのたびに1時間待つのはストレスです。

 そこで、DGX Sparkで同じ学習処理を走らせてみて、高速になるのか、それとも遅くなるのか、実際に動かして確かめておきたいな、と思ったのが今回テストすることにしたきっかけでもあります。

 どちらが速くなりそうか、先ほどのスペック比較表からは推測が難しいところです。DGX SparkはデスクトップPCの10倍以上のメモリ(VRAM)容量がある一方、メモリ帯域はおよそ半分しかありません。ただ、チップのアーキテクチャは異なります。

 今回のモデルサイズが10MB未満と小さいことを考えれば、メモリ容量の差はおそらく影響しないでしょう。メモリ帯域についても、学習処理ではGPU内部での計算の方が圧倒的に重いと思われるため、データの読み書きにかかる時間は(データサイズも小さいので)無視できる程度のはず。ひとまず実行してみます。

DGX Sparkで学習処理のベンチマーク実行中
リソースモニターを見るとフルにはGPUを使っていない様子

 結果、Layer 1学習で25.5%、Layer 2学習で82%、DGX Sparkが高速(処理時間短縮)になりました。対して推論はDGX Sparkの方が実質40%低速、ということになっています。

学習処理はDGX Sparkが1.82倍高速!

 Layer 1学習はCPUによる軽い処理で、どちらも一瞬で完了しています。ここは演算処理というよりは、データ読み込み周りやプラットフォーム(OS)の違いが影響していそうです。25%高速とはなっているものの、ほとんど差はないと言っていいかもしれません。

 対して、GPU処理のLayer 2学習は、GPUの演算能力や処理効率の違いとして明確に現われているように思えます。半分程度の時間で完了するので、学習処理を行なうときはDGX Sparkに任せるのが正解でしょう。

推論はWindowsのデスクトップPCに軍配

 推論は残念ながらDGX Sparkの方が劣る結果となりました。といっても、このテストで言うと対象テキストの長さは8文(411文字)で、原稿用紙1枚分余り。これを42msで処理していますから、そんなに低速とは言えないかな、とも思います。

 なので実用上はDGX Sparkも推論で使って問題なし。とはいえ、明らかに得意・不得意は分かれました。推論させるよりは学習させた方がDGX Sparkの「おいしいところ」を味わえそうな雰囲気です。

大容量データセットによるローカルAI学習がアツいかも!

 今回は元となるテキストデータ計約100MBを使った学習処理でしたが、より大きなデータセットをベースにAIモデルを作成する場合、学習処理の高速さとともに128GBという大容量メモリをもつDGX Sparkの強みが一段と活きそうです。

 個人レベルで128GB容量を有効に使うデータセットを用意するのは大変そうではあるものの、24時間稼働させている宅内ネットワークカメラの映像データや、ドライブレコーダーの録画データなどを元にするなら可能そうですし、それを使った独自の映像解析ツールみたいなものも作れるかもしれません(解析用データをどこに保存しておくかという課題はありますが)。

 ローカルで動く独自AIにすれば、プライバシーに関わる映像データをインターネットに露出することもありません。DGX Sparkのポテンシャルを最大限に発揮できる使い方として、ローカルでのAI学習処理にチャレンジしてみるのも面白いのではないでしょうか。