ハグ顔(Hugging Face)での最新技術の組み合わせであるミクストラル(Mixtral)へようこそ
ミクストラル(Mixtral)へようこそ!ハグ顔(Hugging Face)の最新技術との魅力的な組み合わせ
Mixtral 8x7bは、ミストラルが本日リリースした刺激的な大型言語モデルで、オープンアクセスモデルの最新技術基準を上回り、多くのベンチマークでGPT-3.5を凌駕しています。私たちは、MixtralをHugging Faceエコシステムに包括的に統合してのローンチをサポートすることに興奮しています🔥!
本日リリースされる機能と統合には以下があります:
- ハブ上のモデル、モデルカードとライセンス(Apache 2.0)
- 🤗 Transformers統合
- 推論エンドポイントとの統合
- 高速で効率的な本番推論のためのテキスト生成推論との統合
- 🤗 TRLを使用した単一のGPUでのMixtralの微調整の例
目次
Mixtral 8x7bとは何ですか?
Mixtralは、Mistral 7Bと似たアーキテクチャであり、Mixture of Experts(MoE)という技術により、実際には8つの「専門」モデルが1つに組み込まれています。Transformerモデルにおいては、Feed-Forwardレイヤーの一部を疎なMoEレイヤーで置き換えることで機能します。MoEレイヤーには、どの専門家がどのトークンを最も効率的に処理するかを選択するためのルーターネットワークが含まれています。Mixtralの場合、各タイムステップごとに2つの専門家が選択されるため、有効パラメータの数が4倍でも、12Bパラメータ密なモデルと同じ速度でデコードすることが可能です!
MoEsの詳細については、関連するブログ記事をご覧ください:hf.co/blog/moe
- 「NVIDIAがゲームチェンジャーとマーケットメーカーへの投資でAI革命を推進する方法」
- 「スピークAI転写ソフトウェアのレビュー(2023年12月)」
- 「ビジネスにスピーチAIを導入する際に考慮すべき5つのポイント」
Mixtralリリースの要点:
- ベースバージョンとInstructバージョンのリリース
- 最大32kトークンのコンテキスト長に対応
- Llama 2 70Bを凌駕し、ほとんどのベンチマークでGPT3.5と同等または上回る
- 英語、フランス語、ドイツ語、スペイン語、イタリア語に対応
- HumanEvalで40.2%のコーディング能力
- Apache 2.0ライセンスで商用利用可能
ミクストラルモデルはどれくらい優れているのでしょうか?以下は基本モデルとそのパフォーマンスについて、LLM Leaderboardの他のオープンモデルとの比較の概要です(スコアが高いほど良い結果です):
インストラクトモデルやチャットモデルの場合、MT-BenchやAlpacaEvalといったベンチマークで評価する方が良いです。以下では、Mixtral Instructがトップクローズドモデルやオープンアクセスモデルと比べてどれくらいのパフォーマンスを発揮するかを示します(スコアが高いほど良い結果です):
驚くほど、Mixtral InstructはMT-Benchで他のすべてのオープンアクセスモデルを上回り、GPT-3.5とほぼ同等のパフォーマンスを達成した最初のモデルとなります!
名前について
ミクストラルのMoEはMixtral-8x7Bと呼ばれていますが、56Bのパラメータを持っているわけではありません。リリース後しばらくして、このモデルが8つのモデル(各々7Bのパラメータ)のアンサンブルのように振る舞うと誤解されている人もいることがわかりましたが、MoEモデルはそうは動作しません。モデルの一部のレイヤー(フィードフォワードブロック)が複製されるだけであり、その他のパラメータは7Bモデルと同じです。合計のパラメータ数は56Bではなく、約45Bです。もっと適切な名前はMixtral-45-8e
のようにすることで、アーキテクチャをより正確に伝えることができます。MoEの詳細については、「エキスパートの混合について説明する」記事を参照してください。
プロンプトの形式
基本モデルにはプロンプトの形式はありません。他の基本モデルと同様、リーズナブルな続きを持つ入力シーケンスやゼロショット/フューショットの推論に使用することができます。また、独自のユースケースのファインチューニングの基盤としても優れています。 インストラクトモデルは非常にシンプルな会話構造を持っています。
<s> [INST] ユーザーの指示1 [/INST] モデルの回答1</s> [INST] ユーザーの指示2[/INST]
この形式は効果的に使用するために厳密に再現する必要があります。以降では、transformers
で利用可能なチャットテンプレートでインストラクトプロンプトを簡単に再現する方法を紹介します。
何を知らないのか
前回のMistral 7Bのリリースと同様、この新しいシリーズのモデルについてはいくつかの疑問があります。特に、事前学習に使用されたデータセットのサイズ、構成、および前処理方法についての情報がありません。
同様に、Mixtralインストラクトモデルについても、ファインチューニングデータセットやSFTおよびDPOに関連するハイパーパラメータについての詳細は共有されていません。
デモ
ハグイングフェイスチャットでミクストラルインストラクトモデルとチャットすることができます!こちらをご覧ください:https://huggingface.co/chat/?model=mistralai/Mixtral-8x7B-Instruct-v0.1。
推論
ミクストラルモデルで推論を実行する方法は2つあります:
- 🤗 Transformersの
pipeline()
関数を使用する方法。 - テキスト生成推論を使用する方法。この方法は、連続したバッチ処理、テンソル並列処理などの高度な機能をサポートしており、高速な結果を提供します。
いずれの方法でも、モデルを半精度(float16)で実行したり、量子化された重みを使用したりすることができます。ミクストラルモデルは45Bパラメータの密なモデルにほぼ相当するサイズですので、必要なVRAMの最小量を以下のように推定することができます:
Using 🤗 Transformers
🤗 Transformersを使用することで、Mixtralを活用し、Hugging Faceエコシステム内のすべてのツールを利用することができます。これには以下のものが含まれます:
- トレーニングと推論スクリプトと例
- 安全なファイル形式 (
safetensors
) - bitsandbytes (4-bitの量子化)、PEFT (効率的なパラメータ微調整)、Flash Attention 2などのツールとの統合
- モデルを使用して生成を実行するためのユーティリティとヘルパー
- デプロイするためのモデルのエクスポートメカニズム
最新のtransformers
リリースを使用することをお勧めします:
pip install -U "transformers==4.36.0" --upgrade
以下のコードスニペットでは、🤗 Transformersおよび4-bitの量子化を使用して推論を実行する方法を示しています。モデルのサイズが大きいため、少なくとも30 GBのRAMを搭載したカードが必要です。これにはA100 (80 GBまたは40 GBのバージョン)やA6000 (48 GB)などのカードが含まれます。
from transformers import AutoTokenizerimport transformersimport torchmodel = "mistralai/Mixtral-8x7B-Instruct-v0.1"tokenizer = AutoTokenizer.from_pretrained(model)pipeline = transformers.pipeline( "text-generation", model=model, model_kwargs={"torch_dtype": torch.float16, "load_in_4bit": True},)messages = [{"role": "user", "content": "Mixture of Expertsについて、100ワード以下で説明してください。"}]prompt = pipeline.tokenizer.apply_chat_template(messages, tokenize=False, add_generation_prompt=True)outputs = pipeline(prompt, max_new_tokens=256, do_sample=True, temperature=0.7, top_k=50, top_p=0.95)print(outputs[0]["generated_text"])
<s>[INST] Mixture of Expertsについて、100ワード以下で説明してください。[/INST] Mixture of Expertsは、複数のモデルまたは「専門家」を組み合わせてより正確な予測を行うアンサンブル学習の手法です。各専門家はデータの異なるサブセットに特化しており、ゲーティングネットワークは与えられた入力に対して適切な専門家を決定します。このアプローチにより、モデルはデータ内の複雑な非線形関係に適応し、全体的なパフォーマンスを向上させることができます。
テキスト生成の推論の利用
テキスト生成の推論は、Hugging Faceが開発した本番利用可能な推論コンテナであり、大規模な言語モデルの簡単なデプロイを可能にします。これには、連続的なバッチ処理、トークンストリーミング、複数のGPUでの高速推論のためのテンソル並列処理、本番準備のログ記録とトレーシングなどの機能があります。
MixtralをHugging Faceの推論エンドポイントにデプロイすることができます。これは、テキスト生成の推論をバックエンドとして使用しています。Mixtralモデルをデプロイするには、モデルページにアクセスし、「Deploy -> Inference Endpoints」ウィジェットをクリックします。
注意:A100にアクセスするには、メールでquotaのアップグレードをリクエストする必要がある場合があります[email protected]
弊社のブログ「Deploy LLMs with Hugging Face Inference Endpoints」では、Hugging Face推論エンドポイントを使用してLLMをデプロイする方法について詳しく説明しています。また、サポートされているハイパーパラメータやPythonやJavaScriptを使用してレスポンスをストリーミングする方法についても情報が記載されています。
以下のように、Dockerを使用して2x A100s(80GB)でローカルでText Generation Inferenceを実行することもできます。
docker run --gpus all --shm-size 1g -p 3000:80 -v /data:/data ghcr.io/huggingface/text-generation-inference:1.3.0 \ --model-id mistralai/Mixtral-8x7B-Instruct-v0.1 \ --num-shard 2 \ --max-batch-total-tokens 1024000 \ --max-total-tokens 32000
🤗 TRLを使用したファインチューニング
LLMのトレーニングは技術的にも計算的にも挑戦的な場合があります。このセクションでは、Hugging Faceエコシステムで使用できるツールについて、シングルA100 GPU上でMixtralを効率的にトレーニングする方法について見てみます。
OpenAssistantのチャットデータセットでMixtralをファインチューニングするための例のコマンドは、以下に示されています。メモリを節約するために、4ビットの量子化とQLoRAを使用して、アテンションブロック内のすべての線形レイヤーを対象にします。ただし、密なトランスフォーマーとは異なり、MLPレイヤーを対象にしないでください。MLPレイヤーは疎でPEFTとの相互作用がうまくいきません。
まず、🤗 TRLのナイトリーバージョンをインストールし、リポジトリをクローンしてトレーニングスクリプトにアクセスします:
pip install -U transformerspip install git+https://github.com/huggingface/trlgit clone https://github.com/huggingface/trlcd trl
それからスクリプトを実行できます:
accelerate launch --config_file examples/accelerate_configs/multi_gpu.yaml --num_processes=1 \ examples/scripts/sft.py \ --model_name mistralai/Mixtral-8x7B-v0.1 \ --dataset_name OpenAssistant/oasst_top1_2023-08-25 \ --batch_size 2 \ --gradient_accumulation_steps 1 \ --learning_rate 2e-4 \ --save_steps 20_000 \ --use_peft \ --peft_lora_r 16 --peft_lora_alpha 32 \ --target_modules q_proj k_proj v_proj o_proj \ --load_in_4bit
これには、シングルA100でのトレーニングに約9時間かかりますが、--num_processes
を使用可能なGPUの数に調整することで簡単に並列化することができます。
免責事項と進行中の作業
- 量子化: MoEsの量子化は研究の進んだ分野です。TheBlokeが4ビットと8ビットの量子化を実現するための初期実験を行っていますが、モデルの品質が著しく低下します。この領域では、QMoEなどの最近の研究によって、MoEsのサブ1ビットの量子化が実現されており、ここに適用することができます。
- 高いVRAM使用量: MoEsは推論を非常に高速に実行しますが、依然として大量のVRAM(したがって高価なGPU)が必要です。これはローカル環境での使用を難しくします。MoEsはデバイスが多く、大きなVRAMを持つセットアップに最適です。Mixtralは半精度で90GBのVRAMを必要とします。
追加リソース
結論
Mixtralのリリースに非常に興奮しています!今後の日々で、Mixtralを細かく調整し展開する方法について詳しく学ぶ準備をしてください。
We will continue to update VoAGI; if you have any questions or suggestions, please contact us!
Was this article helpful?
93 out of 132 found this helpful
Related articles
- なぜOpenHermes-2.5はGPT-4やLLama2 13Bよりも優れているのか? 結果はこちら
- 「SuperDuperDBを活用して簡単にシンプルな重複排除システムを作成する」
- 「たぬき+GPT4を使用して、20分で顧客サポートボットを作成しましょう」
- ニューラルネットワークチュートリアルのプログラミング:ヴィンテージスタイル
- 次元性の祝福?!(パート1)
- Principal Components Analysis(主成分分析)が好きですか?新しい論文が「ファントム振動」というアーティファクトを生成できることを報告しています
- より良いOCRパフォーマンスを得るためのEasyOCRの微調整方法