著者 | Luís Roque(創設者 @ (dot)ai/ )、Rafael Guedes 編纂者:岳陽 🚢🚢🚢AIテクノロジーソフトウェアと技術交流グループへのご参加をお待ちしております!最新のトレンドを把握し、一緒に技術的な課題を探求しましょう! 目次01 はじめに 02 Mixtral 8x7B:このモデルとは何ですか?どのように機能しますか? 03 GQA: グループクエリアテンション 04 SWA: スライディングウィンドウの注意 05 SMoE: 専門家の散在的混合 06 ミストラル AI vs メタ: ミストラル 7B vs ラマ 2 7B と ミストラル 8x7B vs ラマ 2 70B 07 結論 01 はじめに自然言語処理(NLP)、特に大規模言語モデル(LLM)における近年の進歩は、主にモデル性能の向上に重点を置いており、これは通常、モデルサイズの増大につながります。予想通り、モデルサイズの増大は計算コストと推論レイテンシの増加を招き、大規模言語モデルを実世界のシナリオに導入・利用する際のリスクを高めています。 パリに拠点を置くヨーロッパ企業であるMistral AIは、LLMの導入に必要な計算リソースを削減しながら、モデルのパフォーマンスを向上させる方法を研究してきました。Mistral 7Bは同社が公開した中で最も小型のLLMであり、従来のTransformerアーキテクチャにGroup-Query Attention(GQA)とSliding Window Attention(SWA)という2つの新しい概念を導入しています。ベンチマークデータセットにおけるLlama 2 7Bと比較して、これらのコンポーネントは推論を高速化し、デコード時のメモリ要件を削減することでスループットを向上させ、モデルの応答品質を損なうことなく、より長いトークンシーケンスの処理を可能にします。 Mistral 7Bは、Mistral AIが開発した唯一のモデルではありません。同社は、Llama 2 70Bなどの大規模LLMと競合可能なMixtral 8x7Bも開発しています。GQAやSWAなどの技術に加えて、このバージョンのモデルでは、3つ目の技術コンセプトであるSparse Mixture of Experts(SMoE)を採用しています。推論中にモデルが各トークンを処理するたびに、利用可能な8つのエキスパートモデルのうち2つだけがアクティブ化されるため、推論時間が短縮され、トークンの処理に必要なパラメータ数が47Bから13Bに削減されます。 本稿では、Mistral AIが従来のTransformerアーキテクチャに追加する新しい技術コンセプトを一つ一つ詳しく説明し、Mistral 7BとLlama 2 7Bの推論時間、Mixtral 8x7BとLlama 2 70Bのメモリ、推論時間、モデル応答コンテンツの品質を比較します。この比較は、RAGシステムと、顧客レビューデータを含む公開されているAmazonデータセットを使用して行われます。 図1: Mixtral 8x7B vs LLama 2 (DALL-Eで生成された画像) 02 Mixtral 8x7B:このモデルとは何ですか?どのように機能しますか?Mixtral 8x7B [1] は、Mistral 7B [2] よりも複雑なLLMであり、推論時の効率性を確保しながら高性能を実現するように設計されています。Mistral 7Bと同様にGQA [3] やSWA [4] などの技術を活用するだけでなく、この進化版ではSMoE [5] も採用しています。これらのコンポーネントについては、次章以降で詳しく説明します。 03 GQA: グループクエリアテンション自己回帰デコーダの推論プロセスは、マルチヘッドアテンション層(MHA)にすべてのアテンションヘッド(クエリ、キー、値ヘッド)をロードするために大量のメモリリソースを必要とするため、Transformerのボトルネックとなっています。この問題に対処するため、Mistral AIはマルチクエリアテンション(MQA)[6]を開発しました。これは、アテンション層で単一のキーと値のみを使用し、複数のクエリヘッドを使用することで、必要なメモリを大幅に削減します。しかし、この解決策はモデル品質の低下や学習の不安定化につながる可能性があるため、T5やLlamaなどのオープンソースLLMではこのアプローチを採用していません。 Grouped Query Attention (GQA) は、クエリ値を G グループ (GQA-G) に分割します。これらのクエリグループはキーヘッドと値ヘッドを共有し、Multi-Head Attention (MHA) と Multi-Query Attention (MQA) の中間に位置します。GQA-1 はすべてのクエリが 1 つのグループに集約されることを意味し、MQA に似ています。一方、GQA-H (H はヘッドの数) は MHA に相当し、各クエリがグループとして扱われます。 このアプローチは、キーヘッドと値ヘッドの数をクエリグループごとに1つのキーと1つの値に削減することで、KVキャッシュのサイズを削減し、結果としてロードする必要があるデータ量を削減します。MQAと比較してこの削減が緩やかなため、推論速度が向上し、デコードプロセス(モデルが学習した知識を用いて出力シーケンスの各トークンを段階的に生成する、ターゲットシーケンスを生成するプロセス)中のメモリ要件が削減されます。同時に、MHAに近い品質とMQAとほぼ同等の速度を実現します。 Mistral には 32 個のクエリ ヘッドと 8 個のキー値ヘッドがあり、クエリは 4 つのグループに分割されます。 図2: MHA、GQA、MQA法の概要(著者撮影) 04 SWA: スライディングウィンドウの注意ほとんどのTransformerモデルは、基本的なアテンションメカニズム(Vanilla Attention)を使用しています。これは、シーケンス内の各トークンが自身と過去のすべてのトークンに注意を向けることができるというものです。これにより、メモリはトークン数に比例して増加します。このアプローチを使用すると、レイテンシが長くなり、キャッシュの可用性が低下することでスループットが低下するため、推論中にいくつかの問題が発生します。 SWA の設計はこれらの問題を軽減し、より低い計算コストでより長いトークン シーケンスをより効率的に処理できるようにします。SWAはスタックされた注意層 (Transformer または類似のモデルでは、通常、複数の注意層が積み重ねられてモデルの主要構造を形成します。各注意層は前の層から入力を受け取り、次の層の出力を生成します) を利用して、ウィンドウ サイズ W を超える情報に焦点を合わせます。k 番目の層の位置 i にある各隠し状態 h は、iW と i の間にある前の層のすべての隠し状態に焦点を当てることができます (隠し状態とは、入力データを処理する際にモデルによって生成される一連の中間状態を指します)。したがって、隠し状態は再帰的に W x k トークンの距離にある入力層のトークンにアクセスできます。32 の注意層と 4096 のウィンドウ サイズを持つモデルでは、注意スパンは 131k トークンです。 図3: Vanilla AttentionとSliding Window Attentionのメモリ使用量の違い(著者撮影) SWA の仕組みをよりよく理解するには、入力プロンプトが次のとおりであると仮定して、次のシナリオを想像してください。
スライディングウィンドウサイズが3(W=3)の場合、レイヤー6(k=6)の位置16(i=16)にいます。この位置では、モデルは単語「at」とレイヤー5の最後の3つのトークンにアクセスできます(「効率性を維持しながら」)。再帰プロセスにより、レイヤー6はスライディングウィンドウ(W=3)の外側の情報にもアクセスできます。これは、レイヤー5がレイヤー4の最後の3つのトークンにアクセスでき、さらにレイヤー4がレイヤー3の最後の3つのトークンにアクセスできるためです。このように、スライディングウィンドウの外側のトークンは、次のトークンの予測に依然として影響を与えます。 図4: スライディングウィンドウの再帰プロセスの説明(ウィンドウサイズ3)(著者撮影) さらに、Mistralの固定アテンションスパン(シーケンス処理時にモデルが効果的に注目できるトークン数)は131kトークンであるため、キャッシュサイズも固定Wに制限されます。この目的のために、著者らはローリングバッファキャッシュを使用しました。これは、過去の値を上書きすることでキャッシュサイズが線形に無制限に増加するのを防ぐキャッシュ技術です。i番目のタイムステップでは、キーと値はキャッシュ内のi番目のmod Wの位置に格納されます。したがって、位置iがWより大きい場合、最初の値は新しいトークンによって上書きされます(FIFOシナリオに似ています)。 前の例に戻ると、ウィンドウ サイズは 3 です。図 5 に示すように、(i+1) 番目の時間ステップで、モデルが 4 番目のトークンを生成する必要がある場合、最初のトークンが置き換えられます。 図 5: ローリング バッファ キャッシュ テクノロジの動作プロセス。最後に生成されたトークンは青色で表示されます (著者による画像)。 SWAのメモリ最適化の最後の部分は、事前フィルとチャンク化戦略に依存しています。著者らは、非常に大きな入力シーケンスを同じサイズ(W)の多数の小さなチャンクに分割し、キーバリューキャッシュを事前フィルすることでメモリ使用量を制限しています。例えば、サイズ3(W=3)の「design to deliver」チャンクを処理する場合、モデルはスライディングウィンドウを使用して現在のチャンクとキャッシュされたチャンクにアクセスできますが、過去のトークンはスライディングウィンドウの外側にあるためアクセスできません。 図6: 事前充填とブロック分割プロセス、ウィンドウサイズ3(著者撮影) 05 SMoE: 専門家の散在的混合Mixture of Experts(MoE)は、エキスパートネットワーク(典型的にはフィードフォワードニューラルネットワーク)の概念を導入することで、従来の階層的な線形データ処理アプローチを打破します。各エキスパートネットワークは、特定のタスクまたはデータタイプを処理するようにカスタマイズされています。 このアーキテクチャは、フィードフォワードニューラルネットワークの各層を独立したエキスパートとして扱い、モデルの残りのパラメータを共有するため、学習効率を向上させます。例えば、 Mixtral 8x7Bは56Bではなく47Bのパラメータを持つため、56Bのパラメータを持つ密なモデルよりも少ない計算リソースで事前学習できます。そのため、 Mixtral 8x7Bは2つのエキスパートモデルをアクティブ化するだけで済み、使用するパラメータは13Bのみであるため、密なモデルと比較して推論時間が短縮されるという利点もあります。 MoE には主に 2 つのコンポーネントがあります。
ルーターの設計においては、更なる検討が必要です。ソフトマックス関数のみを使用すると、エキスパートモデル間の負荷が不均衡になり、あるエキスパートモデルがトークンの80%を受け取ることになり、他のエキスパートモデルの利用率が低下する可能性があります。この問題を解決するために、ソフトマックスゲートの前に調整可能なガウスノイズとスパース性を追加するNoisy Top-k Gating [7]関数が提案されています。 ノイズトップkゲーティングの仕組みをより深く理解するために、以下のシナリオを考えてみましょう。各トークンを上位2つのエキスパートモデル(k=2)に割り当てるとします。入力トークンは変換され、ノイズが追加されます(図7を参照)。次に、上位2つの値を維持し、残りの値を-∞に設定する新しい変換が実行されます。-∞はソフトマックス値0に対応するため、エキスパートモデルはアクティブ化されず、このスパース性によって計算リソースが節約されます。最後に、ソフトマックス関数を適用して、各エキスパートモデルの入力トークンに対する重みを計算します。これらの重みは、各エキスパートモデルが最終的なモデル出力にどの程度寄与するかを定義します。 図7: ノイズの多いトップkゲーティング関数の説明(著者による画像) すべてのコンポーネントを接続し、前述の例「Mixtral 8x7Bは大規模言語モデルです…」を使って、SMoEの実際の動作を理解しましょう。最初のトークン「Mixtral」はルーターを通過し、ルーターはどのエキスパートモデルがそれを処理するか、そして各エキスパートモデルが生成される出力にどの程度の貢献(重み)をするかを決定します。すべてのエキスパートモデルではなく2つのエキスパートモデルのみをアクティブにすることで、推論時間とトレーニング中の計算リソースを節約できます。これは、特定のトークンを、1つの密なフィードフォワードニューラルネットワーク(FFN)ではなく、2つのより小さなFFNで処理するだけで済むためです。 図8: SMoEの実際の応用。トークン「ミストラル」はエキスパートモデル2と8によって処理されます(著者による画像)。 06 ミストラル AI vs メタ: ミストラル 7B vs ラマ 2 7B と ミストラル 8x7B vs ラマ 2 70Bこのセクションでは、Amazon製品に関する他の顧客の意見を顧客が理解するのに役立つ4つのRAGシステムを作成します。これは、多言語チャットボットについて検討した以前の記事( (dot ) com /towards-data-science/ai-powered-customer-support-app-semantic-search-with-pgvector-llama2-with-an-rag-system-and-fc1eef1738d8)の続きです。データセットはこちら( (dot ) kaggle (dot ) com /datasets/yasserh/amazon-product-reviews-dataset)で入手でき、CC0:パブリックドメインライセンスの下でライセンスされています。 これらのRAGシステムの違いは生成モデルにあります。Mistral 7B、Llama 2 7B、Mixtral 8x7B、Llama 2 70Bを使用します。Mistral 7BとLlama 2 7Bの推論時間、Mixtral 8x7BとLlama 2 70Bの推論時間、メモリ消費量、モデル応答品質を比較します。 まず、PGVectorデータベースをセットアップして、コンテキスト検索のためのセマンティック検索を有効にします。そのためには、Docker、env/ディレクトリにあるenvファイル、そしてdocker-compose.yamlファイルが必要です(RAGシステムの仕組みの詳細については、こちらの記事( (dot ) com /the-power-of-retrieval-augmented-generation-a-comparison-between-base-and-rag-llms-with-llama2-368865762c0d)をご覧ください)。
POSTGRES_DB=ポストグレ POSTGRES_USER=管理者 POSTGRES_PASSWORD=ルート
バージョン: '3.8'サービス: postgres: コンテナ名: container-pg イメージ: ankane/pgvector ホスト名: localhost ポート: - 「5432:5432」 環境ファイル: - ./env/postgres.env ボリューム: - postgres-data:/var/lib/postgresql/data 再起動: ボリュームが停止していない限り: postgres-data: すべての準備が整ったら、コマンド `docker-compose up -d` を実行するだけで、PGVector データベースが準備されます。 データセット内の上位 10 製品の顧客レビューを次の方法でデータベースに追加します。
encoder.encoder から Encoder をインポートし、retriever.vector_db から VectorDatabase をインポートし、langchain.docstore.document から Document をインポートして、pandas を pd としてインポートします。
エンコーダ = エンコーダ()
vectordb = VectorDatabase(エンコーダー.エンコーダー)
df = pd.read_csv('data/data.csv')# タイトルとレビューを連結する新しい列を作成しますdf['full_review'] = df[['reviews.title', 'reviews.text']].apply( lambda row: ". ".join(row.values.astype(str)), axis=1)for product_id in df['asins'].unique()[:10]: # Postgresに保存するドキュメントを作成します docs = [
df[df['asins'] == product_id]["full_review"].tolist() 内のアイテムのドキュメント(page_content=item)
]
パッセージ = vectordb.create_passages_from_documents(ドキュメント)
vectordb.store_passages_db(パッセージ、製品ID) PGVector の接続設定は、env/ の下の connection.env ファイルに配置し、次の変数を含める必要があります。 ドライバー=psycopg2 ホスト=ローカルホスト ポート=5432 データベース=postgres ユーザー名=admin パスワード=root データベースへのデータ入力が完了しました。各製品につき2つずつ、計20個の質問クエリを作成し、LLMに「この製品の何が気に入っているか?」と「この製品の何が気に入らないか?」と尋ねます。ただし、質問をLLMに送信する前に、ベクターデータベースからコンテキストを取得し、回答を導き出します。 各製品の正しいコンテキストを取得するには、製品IDとともにクエリを送信する必要があります。これにより、リトリーバーは正しいデータベーステーブルからデータを抽出できます。事前にコンテキストを取得しておくことで、両方のモデルが同じ情報を受け取ることが保証され、比較がより公平になります。 # 製品IDごとに2つの質問を生成(合計20の質問)like_questions = [f"{product_id}|What people like about the product?" for product_id in df["asins"].unique()[:10]]
dislike_questions = [f"{product_id}|この製品について人々が嫌がっていることは何ですか?" for product_id in df["asins"].unique()[:10]]# llamaとmistralに渡すクエリとコンテキストを取得しますQUERIES = []
コンテキスト = []
like_questions+dislike_questions の q について:
id = q.split("|")[0]
クエリ = q.split("|")[1]
コンテキスト = vectordb.retrieve_most_similar_document(クエリ、k=2、id=id)
QUERIES.append(クエリ)
CONTEXTS.append(コンテキスト) 質問とコンテキストが得られたので、それらを LLM に渡して、1 秒あたりに生成される単語数と回答の平均長を記録できます。 まず、CPU 上で実行するためにすべてのモデルを .gguf 形式でダウンロードし、model/ フォルダーに配置します。 (dot ) co /TheBloke/Mistral-7B-v0.1-GGUF の mistral-7b-v0.1.Q4_K_M.gguf と(dot ) co /TheBloke/Nous-Hermes-Llama-2-7B-GGUF の nous-hermes-llama-2-7b.Q4_K_M.gguf を使用し、4ビット量子化を採用しました。Mistral 7B は6.87 GB、Llama 2 は6.58 GB のメモリを必要とします。 (dot ) co /TheBloke/Mixtral-8x7B-v0.1-GGUF の mixtral-8x7b-v0.1.Q4_K_M.gguf と(dot ) co /TheBloke/Llama-2-70B-Chat-GGUF の llama-2-70b-chat.Q4_K_M.gguf はどちらも4ビット量子化を使用しています。Mixtral 8x7B は28.94 GB、Llama 2 は43.92 GB のメモリを必要とします。 次に、使用するモデルをパラメータとする Generator クラスをインポートしました。 generator.generator からジェネレータをインポート ラマ = ジェネレーター(モデル='ラマ') ミストラル = ジェネレーター(モデル='ミストラル') llama70b = ジェネレーター(モデル='llama70b') mixtral8x7b = ジェネレーター(model='mixtral8x7b') このクラスは、config.yaml ファイルで定義されたモデル パラメータをインポートする役割を担います。このパラメータの特性は次のとおりです: context_length は 1024、temperature は 0.7、max_tokens は 2000 です。 ジェネレータ:
ラマ:
llm_path: "model/nous-hermes-llama-2-7b.Q4_K_M.gguf" ミストラル:
llm_path: "model/mistral-7b-v0.1.Q4_K_M.gguf" llama70b:
llm_path: "model/llama-2-70b.Q4_K_M.gguf" mixtral8x7b:
llm_path: "model/mixtral-8x7b-v0.1.Q4_K_M.gguf" コンテキスト長: 1024 温度: 0.7 最大トークン数: 2000 さらに、LangChain を利用したプロンプト テンプレートを作成し、テンプレートに基づいて質問クエリとコンテキストをフォーマットし、それを LLM に渡してモデル応答を取得します。 from langchain import PromptTemplatefrom langchain.chains import LLMChainfrom langchain.llms import LlamaCppfrom base.config import Configclass Generator(Config): """Generator (別名 LLM) は、質問とコンテキストに基づいて回答を提供します""" def __init__(self, model) -> None: super().__init__()
# テンプレート self.template = """
次の文脈を使用して、最後の質問に答えてください。
{コンテクスト}
質問: {質問}
答え:
「」
# ローカルファイルからllmをロードする self.llm = LlamaCpp(
model_path=f"{self.parent_path}/{self.config['generator'][model]['llm_path']}",
n_ctx=self.config["ジェネレータ"]["コンテキスト長"],
temperature=self.config["ジェネレータ"]["温度"],
)
# プロンプトテンプレートを作成する self.prompt = PromptTemplate(
テンプレート=self.template、入力変数=["コンテキスト", "質問"]
)
def get_answer(self, context: str, question: str) -> str: """
コンテキストとユーザーの質問に基づいて llm から回答を取得します
引数:
コンテキスト (str): 取得された最も類似した文書
質問 (str): ユーザーの質問
戻り値:
str: llm 回答
""" query_llm = LLMChain(
llm = self.llm、
プロンプト=self.prompt、
llm_kwargs={"max_tokens": self.config["generator"]["max_tokens"]},
)
query_llm.run({"context": context, "question": question}) を返しますこれで、ユーザーから寄せられた質問やコンテキストをループ処理し、上記のメトリックを記録できるようになりました。 完了後、メトリクスチャートが生成されました。Mistral 7BはLlama 2 7Bよりも大幅に高速で、平均約1.5語/秒の速度で生成しているのに対し、Llama 2 7Bは平均約0.8語/秒しか生成していません。さらに、 Mistral 7Bはより完全な回答を生成し、平均回答長は248語であるのに対し、Llama 2 7Bはわずか75語の文しか生成していません。 図9: Mistral 7BとLLama 2 7Bの推論時間と応答時間の比較(著者撮影) Mixtral 8x7B と Llama 70B を比較する際に、両モデルに対して「製品 B002Y27P3M のどのような点が好まれているのか」という次の質問をし、コンテキストとして次の 2 つのドキュメントを提供しました。 大好きです。素晴らしいです。大好きです。 素晴らしいです。夫にクリスマスプレゼントとして購入しましたが、正直言って私の方が夫よりずっと使っています。バージョンアップされてもこの商品が大好きです。本だけが入っているものが好きです。使いやすく、画面も見やすく、バッテリーも長持ちします。ビーチや旅行にも使っています。持っていてよかったです。 答えは次のとおりです。 ミクストラル 8x7B 1) この電子書籍リーダーの画面サイズは、読書を快適にします。小さすぎず大きすぎず、まさにちょうど良いサイズです。さらに軽量設計なので、デバイスの重さを感じることなく、どこにでも持ち運べます。手頃な価格でありながら高品質な電子書籍リーダーで、これまで以上に読書を楽しめるものをお探しなら、この素晴らしい製品に勝るものはありません。2) Kindleのバッテリー持続時間は驚異的で、外出先で充電を気にせず読書を楽しみたい方に最適です。長時間のバッテリー持続時間により、充電器に差し込む手間なく、何時間も読書を楽しむことができます。つまり、本や記事を読む合間のダウンタイムが短縮されるのです。 ラマ2 70B D. この製品はバッテリー寿命が長く、使いやすく読みやすく、旅行やビーチに最適であるという点が好評です。 次のどの文脈が答えを裏付けているでしょうか? A. 「大好きです。」 B. 「素晴らしい。夫へのクリスマスプレゼントに買いました」 C. 「私は彼よりもずっと頻繁に使っていることを認めざるを得ません」 D. 「あったらいいな」 答え: B、C、D B、C、D 答えは B、C、D です。これらは、製品の機能とユーザーの体験に関する情報を提供しており、長いバッテリー寿命、使いやすさ、旅行やビーチへの適合性が製品の人気の理由であるという答えを裏付けているからです。 B:「素晴らしい。クリスマスに夫に買いました」— この行は、商品がギフトとして購入されたことを示しており、ユーザーがそれを他の人に贈るほど大切に思っていることを示唆しています。 C: 「私は彼よりもずっと頻繁にそれを使用していることを認めざるを得ません」— このセリフは、ユーザーが製品の使用を楽しんでおり、便利だと感じていることを暗示しており、人々が製品の使いやすさを好んでいるという考えを裏付けています。 D: 「あれば便利」— この行は、ユーザーが製品を所有していることに感謝していることを示唆しており、製品の機能や機能性がユーザーの好みに合っているという考えをさらに裏付けています。 どちらのモデルも優れた結果をもたらしました。 驚くべきことに、Mixtral 8x7Bは製品をKindleと識別し、文脈から推測されるよりも正確な情報を提供しました(おそらくトレーニングセットに類似の情報が含まれていたためでしょう)。Llama 2 70Bの回答は簡潔で明確でしたが、回答の根拠を詳細に説明していました。これは、チャットモデルが回答だけでなく、その背後にあるロジックも提供するようにトレーニングされていたためです。 もう 1 つの違いは推論時間です。Mixtral 8x7B では約 3 分かかりましたが、Llama 2 70B では約 10 分かかりました。 メモリ使用量の違いについてですが、Mixtralのパラメータ数は47Bであるのに対し、Llama 2は70Bであるため、Mixtralのメモリ使用量はLlama 2の67%になると予想されます。しかし、SMoEとそのエキスパートモデル間でパラメータが共有されているため、実際には62.5%にとどまります。 図10: Mixtral 8x7BとLlama 2 70Bの推論時間とメモリ消費量の比較(著者撮影) 07 結論過去2年間でLLMは飛躍的な進歩を遂げ、人間や機械が作成したものと区別が困難な高品質なモデル応答を取得できるようになりました。研究の焦点は、より高品質なモデル応答の生成から、リソースをあまり消費しないデバイスで実行できる可能な限り小型のLLMの作成へと移行し、コスト削減と使いやすさの向上を目指しています。 Mistralはこの分野を積極的に研究している企業の一つであり、本論文で実証されているように、非常に優れた成果を上げています。最小モデルであるMistral 7Bでは、TransformerアーキテクチャにGrouped-Query AttentionとSliding Window Attentionという2つの重要な概念を導入しました。これらの機能により、学習中のメモリ効率が向上し、LLama 2と比較して推論時間がほぼ半分に短縮されます(結果セクションで示す通り)。 Mixtral 8x7Bでは、GQAやSWAといった技術概念に加え、トレーニングと推論の効率をさらに向上させる3つ目の技術概念「Sparse Mixture of Experts(専門家の疎混合)」も導入されました。各トークンに対して、最も優れた2つのエキスパートモデルのみが使用されます。このアプローチにより、推論中に使用されるパラメータは、各トークンの処理に必要な470億個ではなく、わずか130億個に抑えられます。Mistral 8x7BとLLama 2 70Bのモデル応答を比較すると、Mistral 8x7BはLLama 2と同等のモデル応答を生成しながら、推論時間を約70%、メモリ消費量を62.5%削減していることがわかります。 私たちは今、最初の一歩を踏み出しました。2024年には、この研究分野からさらなる驚きが生まれることを期待しています。 参考文献[1] アルバート・Q・ジャン、アレクサンドル・サブライロール、アントワーヌ・ルー、アルチュール・メンシュ、ブランシュ・サヴァリー、クリス・バンフォード、デヴェンドラ・シン・シャプロ、ディエゴ・デ・ラス・カサス、エマ・ブー・ハンナ、フロリアン・ブレッサンド、ジャンナ・レンギエル、ギヨーム・ブール、ギヨーム・ランプル、レリオ・ルナール・ラヴォー、ルシル・ソルニエ、マリー=アンヌラショー、ピエール・ストック、サンディープ・スブラマニアン、ソフィア・ヤン、シモン・アントニアク、テブン・ル・スカオ、テオフィル・ジェルヴェ、ティボー・ラブリル、トーマス・ワン、ティモシー・ラクロワ、ウィリアム・エル・サイード。専門家の混合。 arXiv:2401.04088、2024。 [2] アルバート・Q・ジャン、アレクサンドル・サブライロール、アーサー・メンシュ、クリス・バンフォード、デヴェンドラ・シン・シャプロ、ディエゴ・デ・ラス・カサス、フロリアン・ブレッサンド、ジャンナ・レンジェル、ギヨーム・ランプル、ルシール・ソルニエ、レリオ・ルナール・ラヴォー、マリー=アンヌ・ラショー、ピエール・ストック、テブン・ル・スカオ、ティボー・ラブリル、トーマス・ワン、ティモシー・ラクロワ、ウィリアム・エル・サイード。ミストラル7B。 arXiv:2310.06825、2023。 [3] Joshua Ainslie、James Lee-Thorp、Michiel de Jong、Yury Zemlyanskiy、Federico Lebrón、Sumit Sanghai. Gqa: マルチヘッドチェックポイントからの一般化マルチクエリトランスフォーマーモデルのトレーニング. arXiv:2305.13245, 2023. [4] Iz Beltagy、Matthew E Peters、Arman Cohan. Longformer: The long-document transformer. arXiv:2004.05150, 2020. [5] Bo Li、Yifei Shen、Jingkang Yang、Yezhen Wang、Jiawei Ren、Tong Cheng、Jun Zhang、Ziwei Liu。まばらな専門家の混合は、ドメインの一般化が可能な学習者です。 arXiv:2206.04046、2023。 [6] Noam Shazeer. 高速トランスフォーマーデコード:必要なのは書き込みヘッド1つだけ。arXiv:1911.02150, 2019。 [7] Noam Shazeer、Azalia Mirhoseini、Krzysztof Maziarz、Andy Davis、Quoc Le、Geoffrey Hinton、Jeff Dean. とてつもなく巨大なニューラルネットワーク:スパースゲート型Mixture-of-Experts層. arXiv:1701.06538, 2017. 読んでくれてありがとう! 終わり この記事は、原著者の許可を得てBaihai IDPによって翻訳されました。翻訳の転載をご希望の場合は、お問い合わせください。 オリジナルリンク: (ドット)com/mistral-ai-vs-meta-comparing-top-open-source-llms-565c1bc1516e |