2024年8月16日金曜日

基本的にパソコン上のデータは2進数で示され、
それは私たちが使い慣れた10進数に置き換える事も可能です。
基本的に数字データを扱う事から、
数学的な知識が必要になります。
利用されている数学モデルは
研究者が利用するような高度な数式モデルから
高校、大学レベルの基本的な数学が利用されます。

NumPyは①線形代数、②統計、③フーリエ変換という
基本的な算術演算を効率的に行うことができます。
これは、人工知能のアルゴリズム、強化学習に利用することもできます。

基本的に生成系AIなどで使用される大規模な言語モデルでの
「次元数」は数十億から数百億次元のテンソルです。
こうした行列を頭では想像できませんが、
独立した因子、評価関数を持つ軸がこれだけ存在するということです。
このいわば、数百億次元の「番地」に
それぞれ、数字が割り当てられています。
次元の役割: 各次元はモデルの学習と推論において特定の役割を果たし、
独立した因子として機能します。
例えば、言語モデルでは、各次元が異なる語彙や文脈に関連する特徴を
表現することがあります。
例えば
4次元のテンソル(行列)をどのように考えたらいいか?
3次元行列は2次元シートから成るテキスト上でも書くことができる
行列パターンが3次元のポイント数だけ順に並びます。
例えば、100ポイントであれば、2次元の行列パターンが100枚存在します。
4次元ではこの2次元の100枚の行列パターンが
「一つのボックスとなり」
それがまた4次元で示されるポイント数だけ存在します。
「そのボックスの塊を超ボックスとして」
5次元ではそのポイント数だけ超ボックスが存在します。
こうした作業を繰り返していきます。
次元拡張を頭の中でイメージするための考え方です。
このパターン数を数式であらわすと
これらは全て「積」となります。
従って、数百億次元あるとはこの積の回数が数百億回です。
仮に1次元あたりメモリの消費量がで(32ビット)4バイトであれば
必要なメモリはその百億倍の約40GBになります。

大規模言語モデルにおけるAIの
クラウドコンピューティング、分散処理、GPU、TPUについて
GPUを増やすとはどういうことか?

3. クラウドコンピューティングと分散処理
クラウドコンピューティング: 
現在では、クラウドコンピューティングサービス
(例えば、Amazon Web Services、Google Cloud Platform、Microsoft Azureなど)
が提供する大規模なコンピューティングリソースを利用することが一般的です。
これにより、ユーザーは必要なときに大規模な計算リソースを利用することができます。
基本的にリモートサーバー(クラウドサーバー)上の規定のソフトウェアに
ユーザーがインターネット経由でアクセスして、
そのサーバーのソフトウェアを操作し、
そのサーバーのコンピューティングパワーを利用する事ができます。

分散処理: 計算を複数のマシンやノードに分散して実行することで、
大規模な計算を効率的に処理することができます。
分散処理フレームワーク(例えば、Apache Spark、TensorFlowの分散トレーニングなど)
が用いられます。
この分散化するためには複数のパソコンを同期させ、タスク割り当てをし、
最終的に処理結果を統合する必要があります。

4. GPUとTPU
GPU(Graphics Processing Unit): 
グラフィック処理ユニットは、並列処理能力が高いため、
大規模なテンソルの計算に特化しています。
機械学習や深層学習のトレーニングに広く利用されています。
並列処理とは複数の演算や計算タスクを独立して同時に実行する手法です。
中央演算装置でるCPUはメモリ機能もありますが、
演算する論理回路を含んでいます。
AND、OR、NOT、NAND、NORの基本論理ゲートは
全ての2進数の変化パターンを含んでいるため、
これらの論理ゲートを駆使して回路設計する事で
多種多様なプログラムのデコードされた命令に対して
柔軟に結果を出力することができます。
GPU基本的にCPUと機能は同じですが、
演算する単位であるコア数がCPUに比べて100倍程度多く、
その代わりコアの性能を下げて、それぞれの演算能力が低いです。
GPUは基本的にグラフィックスプロセスユニットと言われますから
高精細な大きな画像を扱う事に特化した演算装置です。
この画像は数十億以上というピクセル数に割り当てられた数字を
非常に速い時定数で命令に応じて変化させていく必要があります。
そうした場合、基本的にはそのピクセル数に応じて
計算を並列にしていく必要があります。
従って、領域ごとに演算コアを独立させるGPUが適しています。
これは、人工知能でも同様です。
基本的に人工知能による強化学習も
大規模データを同時に処理する必要があります。
この大規模データは画像の各ピクセルに割り当てられた数字のように
天文学的なデータ数を同時に計算する必要があります。
テンソルの次元ごとに独立して計算することができるため
計算装置を分割して、計算することが大切です。
ここで使われる計算は
例えば、複雑な物理現象を研究者がシミュレーションするような
複雑な数式モデルはあまり使われません
①線形代数、②統計、③フーリエ変換といった
演算の為のデータリソースをあまり必要としない処理が大部分です。
従って、各演算コアの性能をあまり高める必要はありません。
ゆえに並列演算できる「コア数」が大切です。
このGPUの利用できる演算コアの総数が
ローカルでより多くの人が高性能なAIを利用できる事に繋がるからです。
これは同時に仮想空間のようなグラフィックスを生み出す
出口戦略にもつながります。
人工知能はハードウェアの制約で言えば
仮想空間と非常に親和性が高いです。
従って、とにかくクラウド上で利用できるGPUの能力の
必要十分条件を満たすことが大事です。
それは仮想空間技術の先進性にも関わります。
当然、GPUとCPUはハードウェア設計が物理的に大きく違いますから
通常の個人が持つパーソナルコンピューターとは違う、
GPUを持つコンピューターをサーバーに用意する必要があります。

TPU(Tensor Processing Unit): 
Googleが開発した専用のハードウェアで、テンソル演算に最適化されています。
TPUは高性能な計算リソースを提供し、
機械学習モデルのトレーニングや推論に利用されます。
特にディープニューラルネットワークのトレーニングと
推論(インファレンス)において高い性能を発揮します。

ここで推論(インファレンス)とは何か?確認します。
機械学習のプロセスは、通常、トレーニングと推論の二つのフェーズに分けられます。
トーレニングでは既存のデータからデータの傾向を学習するという事です。
一方で、推論はトレーニングされたモデルに
新しい画像、音声、自然言語を入力した時に
どういった分類に入るか、あるいは入力した命令に対する
トレーニングに基づいた結果を示す時に活躍します。
例えば、OpenAIで
「TPUについて詳しく説明して」と命令したら、
それに対する結果が示されます。
このプロセスには「推論」が含まれ、
推論の為の事前に行われたビックデータに基づく、
ラージ言語モデルに基づくトレーニングモデルが存在します。
こうした推論は私が目指している画像診断においても重要です。
すなわち、脳血管全体の動きを超高解像度で分析するときには
すでに大量のデータから学習したモデルが存在します。
患者さんの新しい脳血管の動画が示されたときに、
既存のデータの学習モデルから、
人工知能はどこの動きに異常があるかを判断します。
その時には新しいデータの出力過程で「推論」が必要になります。

主な特徴と構造
専用設計:
TPUは、ディープラーニングモデルの行列演算やベクトル演算に特化した
ASIC(Application-Specific Integrated Circuit)です。
これは、GPUやCPUの汎用性と異なり、特定の用途に特化することで、
より高効率な計算が可能です。

ASIC(Application-Specific Integrated Circuit)
具体的にどのように回路が最適化されているでしょうか?
それを確認しましょう。

AIでは膨大なデータを「高速」に処理する必要があります。
速度を上げると無数にある
トランジスタの同期が難しくなります。
トランジスタを高密度に配置することによって
電子到達の遅れを最小限にすることで
高い周波数のクロックでも同期を取れるようにします。
但し、GPUに対してトランジスタを高密度にしているかどうかは
はっきりわかりませんが、OpenAIに推定させたところ
GPUもTPUも6×10^11トランジスタ/cm^2程度で変わりませんでした。

TPUはGPUに対してAIに特化した演算装置となっています。
例えば、ディープラーニングで最も頻繁に使われる演算(数学モデル)は
行列積、積和演算です。
従って、これらの演算を高速で出来るように回路設計されています。
すなわち、専用の乗算加算器や、積和演算ユニットが大量に実装されています。
これらの数はTPUではGPUに対しておおよそ10倍です。

また、計算を高速にするため、
1つの演算が完了する前に次の演算を開始できるようにする
回路設計(パイプライン処理)がなされています。

演算コアの数はGPUとTPUでそれほど変わりません。
コア同士のデータ転送効率もそれほど変わりません。

TPUでは消費電力を下げるために
クロック速度の精緻な調整や
不必要な回路動作、クロック生成を抑える
パワーゲーティングとクロックゲーティングがとられています。
ディープラーニングでは消費電力も問題となるからです。

AIの推論タスクでは
32ビット浮動小数点(FP32)演算よりも
低精度の16ビット(FP16)や8ビット整数(INT8)演算が用いられることがあります。
32ビット浮動小数点のような大きな数字幅を扱うわけではないからです。
このような演算の為の単位となるビットを変えるためには
それ専用の回路設計が必要になります。
FP16: FP16専用の演算ユニットやTensor Core。
INT8: INT8専用の整数演算ユニットや量子化処理のサポート。

行列演算の高速化:
ディープラーニングのコアとなる行列演算を効率的に処理するために、
TPUには「マトリックスマルチプライユニット」が搭載されています。
これにより、大規模な行列計算を高速に実行でき、
特に畳み込みニューラルネットワーク(CNN)や
リカレントニューラルネットワーク(RNN)のようなモデルで
顕著な性能向上を実現します。

低消費電力:
TPUは、高い計算能力を持ちながらも低消費電力を維持しています。
これは、クラウドデータセンターでの大規模なデプロイメントにおいて重要な利点です。

AIの仕様に合わせた半導体は「AI半導体」といわれますが、
その半導体から成る回路設計、演算コア設計、演算ユニットを
人工知能の仕様に合わせて設計する事が大切です。
従って、日本の戦略として、
スピードを上げてGPU数を増やしていく事は
高性能な人工知能を使いたいと考えている人や
人工知能に限らない画像生成をしたい人にはありがたいですが、
用途に分けて、細かく演算装置を設計して
専用のデータセンターを構築していく事も重要です。
こういった高度なデータセンターシステムを組むことは
もともと日本が得意とすることです。
例えば、これだけ高度な交通網を遅延なく築ける国は
世界のどこにもないからです、

①線形代数
線形代数は、ニューラルネットワークのトレーニングなどで重要です。
例えば、行列の積やベクトル演算は、ニューラルネットワークの
前向き伝播や誤差逆伝播で頻繁に使われます。

②統計
統計的な手法は、強化学習でのエージェントの行動選択に役立ちます。
例えば、epsilon-greedyポリシーでは、確率的に最適行動を選択する
ために統計的な分布を使用します。

③フーリエ変換
フーリエ変換は、信号処理や時系列データの解析に使用されます。
強化学習の文脈では、フーリエ変換を使って環境の状態や行動の
パターンを分析することがあります。
フーリエ変換では
任意のベクトル(テンソル)をもつ数列情報を波の足し合わせと考え、
その数列情報からいくつかの特徴(周波数)を切り分ける事が可能です。
切り分けた数列を区別して、一つの波として表現する事も可能です。
すなわち、一定の傾向をもつ数列をグループ化できます。
こうした傾向を元に個別化した学習を行い、
その傾向を拡張する事によって推論することができます。
こうした一定の傾向は推論のための一つの重要な要素(次元)となります。
また、こうした傾向はコンピューター上では
原理的に周波数は1つの数字として定義できますから、
複数の数列を1つの数字に圧縮できます。
強化学習では波としての特徴である振幅、減衰係数、位相などは
あまりアルゴリズムとしては取り入れられません。
それよりも学習するビックデータから
多種多様な「傾向」を見出すことが重要ですから、
いくつもの周期の異なる波を捉え、グループ化して
それらを周期に応じて個別の数字として圧縮して、学習していきます。
それらの傾向は推論の為の拡張に生かされます。

0 コメント:

コメントを投稿

 
;