1.GLaM:1.2兆のパラメータを持ち効率的に学習可能な大規模言語モデル(1/2)まとめ
・大規模モデルを学習させて使用可能にするためには非常に多くの計算が必要となり手間
・モデルをより効率的に学習させるためにスパース(疎)なネットワークの利用を検討した
・GLaMはスパース性を利用して効率的に学習できる1兆を超える重みを持つ大規模モデル
2.GLaMとは?
以下、ai.googleblog.comより「More Efficient In-Context Learning with GLaM」の意訳です。元記事は2021年12月9日、Andrew M DaiさんとNan Duさんによる投稿です。
glamは「魅力的な~」を意味する形容詞ですが、glamorous(魅惑的な)の方がイメージ強いのか、画像検索すると魅惑な女性の画像が沢山見つかるのですが、本文中の「1兆を超える重みを持つモデル」の部分を読んで、重量感があった方が覚えやすいと思って選んだglamな女性のアイキャッチ画像のクレジットはPhoto by Ashley Piszek on Unsplash
大規模言語モデル(GPT-3など)は、多くの重要な能力を備えており、わずかな回数の学習をしただけで幅広いタスクを実行可能です。
その中には、非常に少ない、あるいは全く学習データがない状態で、文章読解や質問回答を行う事などが含まれます。
これらのモデルは、単純に多くのパラメータを用いることでより良い性能を発揮しますが、これらの大規模なモデルを学習させて使用可能な状態で提供するためには非常に多くの計算が必要となり手間がかかります。このようなモデルをより効率的に学習させ、利用することは可能なのでしょうか?
論文「GLaM: Efficient Scaling of Language Models with Mixture-of-Experts」では、GLaM(Generalist Language Model)を紹介しています。
GLaMは、スパース性を利用して(計算量とエネルギー消費の点で)効率的に学習・利用できる1兆を超える重みを持つモデルであり、様々な「わずかな回数だけ学習させた後に本番で実行させるようなタスク(few-shot learning task)」において競争力のある性能を達成する事ができます。
GLaMの性能は、言語補完(language completion)、分野を限定しない質問回答、自然言語推論タスクなど7つのカテゴリにおける29のパブリックNLPベンチマークにおいて、学習効率を大幅に改善しました。これは高密度言語モデルであるGPT-3(1750億パラメータ)と比較しても遜色のないものです。
データセット
GLaMを構築するために、私たちはまず、モデルが使用される幅広い場面を代表する用法を含む、高品質な1兆6千億トークンデータセットの構築を開始しました。
このラベルなし言語資料に含まれる膨大な量のデータはWebページですが、その品質は専門的な文章から低品質のコメントやフォーラムページまで多岐にわたります。
そこで、Wikipediaと書籍(どちらも一般的に質の高い情報源)から集めたテキストで学習させたテキスト品質フィルタを開発し、ウェブページのコンテンツの品質を判定することにしました。
最後に、このフィルタを適用してウェブページデータセットから品質の高いサブセットを最終的に生成し、これを書籍データとWikipediaデータと組み合わせて最終的な学習データセットを作成しました。
モデルおよびアーキテクチャ
GLaMはMoE(Mixture of Expert)モデルです。つまり、異なる入力にそれぞれ特化した異なるサブモデル(またはExpertと呼びます)を持っていると考えることができるタイプのモデルです。
各層のエキスパートは、入力データに基づいてエキスパートを活性化させるゲーティングネットワーク(gating network)によって制御されます。各トークン(一般に単語または単語の一部)に対して、ゲーティングネットワークはデータを処理するために最も適切な2つのエキスパートを選択します。
GLaMの完全バージョンは、MoE1層あたり64のExpertと32のMoE層から構成され、合計1.2兆のパラメータを持っていますが、推論時にトークン予測ごとに970億(1.2Tの8%)のパラメータで構成されるサブネットワークのみを活性化させます。
GLaMのアーキテクチャ
各入力トークンは、64のエキスパートネットワークのうち、選択された2つのネットワークに動的にデータが回されて予測が行われます。
GShard MoE Transformerと同様に、他のすべてのTransformer層の単一のフィードフォワードネットワーク(人工ニューラルネットワークの最も単純な層、青いボックス内の「Feedforward またはFFN」)をMoE層で置き換えます。
このMoE層は複数のExpertを持ち、それぞれが同一のアーキテクチャを持つが重みパラメータが異なるフィードフォワードネットワークです。
各MoE層はより多くのパラメータを持っていますが、Expertはまばらに活性化されます。つまり、与えられた入力トークンに対して2つのExpertだけが使われます。これにより、計算量を制限しながらモデルに大きな容量を与えています。
学習中、各MoE層のゲーティングネットワークは、その入力を使って各トークンに対して最適な2つのExpertを活性化し、それを推論に使うように訓練されます。
E個のExpertからなるMoE層では、これは本質的にE x (E – 1)個の異なるフィードフォワードネットワークの組み合わせの集合となり(従来のTransformerアーキテクチャのように一つではなく)、より計算上の柔軟性につながります。
最終的に学習されたトークンの特徴表現は、2つのExpertが出力する重みの組み合わせとなります。これにより、異なるExpertが異なるタイプの入力に対して活性化することができます。より大規模なモデルへの拡張を可能にするため、GLaMアーキテクチャ内の各Expertは複数の計算機にまたがることができます。
私たちは、GSPMDコンパイラバックエンドを使用して、Expertのスケーリングの課題を解決し、このアーキテクチャのいくつかのバリエーション(ExpertサイズとExpert数に基づく)を訓練して、疎活性化言語モデル(sparsely activated language models)のスケーリング効果を理解しました。
3.GLaM:1.2兆のパラメータを持ち効率的に学習可能な大規模言語モデル(1/2)関連リンク
1)ai.googleblog.com
More Efficient In-Context Learning with GLaM
2)arxiv.org
GLaM: Efficient Scaling of Language Models with Mixture-of-Experts