OpenELM - Appleのオープンソースで高効率な言語モデルシリーズ
OpenELMは、Appleの最新の高性能オープンソース言語モデルシリーズで、OpenELM-270M、OpenELM-450M、OpenELM-1_1B、OpenELM-3Bなど、さまざまなパラメータスケールを持つバージョンが含まれています。この大規模モデルはレイヤーを利用し...
OpenELMとは何ですか?
OpenELMは、Appleが提供する最新の高性能オープンソース言語モデルシリーズで、OpenELM-270M、OpenELM-450M、OpenELM-1_1B、OpenELM-3B(事前学習済みバージョンとインストラクショナルチューニング済みバージョンの両方)など、パラメータ規模の異なるバージョンが用意されています。この大規模モデルは、レイヤー間スケーリング戦略を採用し、Transformerモデルの各レイヤーにパラメータを不均一に分散させることで、精度と効率性を向上させています。このモデルは公開データセットで事前学習されており、複数の自然言語処理タスクにおいて優れた性能を発揮します。OpenELMのコード、事前学習済みモデルの重み、トレーニングおよび評価プロセスはすべてオープンソースであり、コミュニティ内でのオープンな研究とさらなる開発を促進することを目的としています。
OpenELMに関する基本情報
- パラメータサイズOpenELMには合計8つのモデルがあり、そのうち4つは事前学習済み、残りの4つは指示に基づいてファインチューニングされており、2億7000万から30億までのさまざまなパラメータ規模(2億7000万、4億5000万、11億、30億)をカバーしています。
- 技術アーキテクチャOpenELMはTransformerベースのアーキテクチャを採用し、アテンションヘッドの数とフィードフォワードネットワーク(FFN)の乗数を調整することで、非均一なパラメータ分布を実現するレイヤーごとのスケーリング戦略を使用しています。このモデルでは、マルチヘッドアテンション(MHA)の代わりにグループクエリアテンション(GQA)、従来のReLUの代わりにSwiGLU活性化関数、正規化レイヤーとしてRMSnormを使用しています。
- 事前学習データOpenELMは、事前学習のためにRefinedWeb、重複PILE、RedPajamaのサブセット、Dolma v1.6のサブセットなど、合計約1兆8000億トークンの複数の公開データセットを使用します。
- オープンソースライセンスOpenELMのコード、事前学習済みモデルの重み、およびトレーニングガイドラインはすべてオープンソースライセンスで公開されています。さらに、AppleはモデルをMLXライブラリに変換し、Appleデバイス上で推論と微調整を行うためのコードも公開しています。
OpenELM公式サイトへの入り口
- arXivの研究論文:https://arxiv.org/abs/2404.14619
- GitHubのモデル重みとトレーニング設定:https://github.com/apple/corenet
- 精巧に調整されたハグフェイスモデルのアドレス:https://huggingface.co/collections/apple/openelm-instruct-models-6619ad295d7ae9f868b759ca
- 事前学習済みのハグ顔モデルはこちらから入手できます。https://huggingface.co/collections/apple/openelm-pretrained-models-6619ac6ca12a10bd0d0df89e
OpenELMの技術アーキテクチャ
- トランスフォーマーアーキテクチャOpenELMはデコーダーのみのTransformerモデルアーキテクチャを採用しています。これは自然言語処理で広く用いられているアーキテクチャであり、特にシーケンシャルデータの処理に適しています。
- レイヤーごとのスケーリングOpenELMは、層間スケーリングによってモデルの各層にパラメータを効果的に分散させます。つまり、入力に近い初期の層ではアテンション機構とフィードフォワードネットワークの次元が小さく、出力に近い層ではこれらの次元が徐々に大きくなります。
- グループクエリアテンション(GQA)OpenELMは、従来のマルチヘッドアテンション(MHA)の代わりにGQAを使用します。GQAは、モデルの長距離依存関係の処理能力を向上させるために設計されたアテンションメカニズムの派生形です。
- RMSNorm正規化OpenELMは正規化レイヤーとしてRMSNormを使用しており、この手法はトレーニングプロセスを安定させるのに役立ちます。
- SwiGLU活性化機能フィードフォワードネットワーク(FFN)において、OpenELMはSwiGLU活性化関数を使用します。これは、モデルが複雑なパターンを捉えるのに役立つゲート付き活性化関数です。
- RoPEロケーションコード位置情報をエンコードするために、OpenELMは回転位置埋め込み(RoPE)というエンコード方式を使用します。この方式は、シーケンス内の要素の順序を処理できます。
- フラッシュ注意スケーリングされたドット積アテンションを計算する際、OpenELMはFlashアテンションを使用します。これは、アテンションを計算するための高速かつメモリ効率の良い方法です。
OpenELMのパフォーマンス
研究者らは、OpenELMをPyThia、Cerebras-GPT、TinyLlama、OpenLM、MobiLlama、OLMoなどのモデルと比較した。モデルサイズが同程度の場合、OpenELMはARC、BoolQ、HellaSwag、PIQA、SciQ、WinoGrandeといった主要なテストプラットフォームにおいて、ほとんどのタスクでより高い精度を示した。特に、OpenELMはパラメータ数と事前学習データが少ないにもかかわらず、OLMoモデルと比較して高い精度を達成した。