このブログ投稿では、MosaicML の 競合である MPT-7B を独自の AWS SageMaker インスタンスで実行するプロセスを段階的に説明します。 ChatGPT の ChatGPT の機能に興奮していますが、機密データを OpenAI に公開することに懸念がありますか?幸いなことに、独自のインフラストラクチャで実行できる代替手段があります。そのような代替手段の 1 つは、ChatGPT の競合製品である MosaicML の MPT-7b です。これについては、このブログ投稿で説明します。 MosaicML と MPT-7B の概要 最近 MosaicML は、ChatGPT の競合相手とされる MPT-7B モデルで ML コミュニティに波紋を広げています。その期待にもかかわらず、このモデルを実行するのは、ドキュメントが少なく、リソースが大量に必要なため、気が遠くなる可能性があります。ただし、Jupyter ノートブックの AWS SageMaker で MPT-7B を実行できます。この環境は初心者に優しく、迅速な反復に非常に柔軟な環境です。このセットアップにより、実稼働への移行を決定する前に、モデルの実現可能性とハードウェア要件をテストできます。 Databricks に 13 億ドルで買収された AWS SageMaker で MPT-7B を実行する AWS SageMaker 上の Jupyter ノートブックで MPT-7B を実行すると、いくつかの利点があります。使用した分だけ支払い、使い終わったらオフにできるだけでなく、モデルを再ロードすることなくコードの一部を簡単に再実行できるため、反復開発中の時間を節約できます。でも気をつけてください!ノートブック インスタンスを停止するのを忘れると、料金がすぐに加算される可能性があります。 この方法は比較的便利ですが、考慮する必要がある考慮事項がいくつかあります。まず、モデルのロードには高性能 GPU であっても最大 20 分かかる場合があり、このプロセスには多少時間がかかります。また、ランニングコストは 1 時間あたり少なくとも 4 ドルかかるため、コストも考慮すべき要素です。 MPT-7B は少なくとも インスタンスで実行する必要があります。これより小さいものは実現不可能と思われます。 SageMaker ではなく EC2 を選択した場合は、AWS に インスタンスの使用許可を求める必要があります。 p3.2xlarge p3.2xlarge 次のセクションでは、独自の SageMaker jupyter ノートブックで MPT-7B モデルを実行する方法を段階的に説明します。 ステップ 1 - SageMaker コンソールを開く AWS コンソールを起動し、SageMaker を検索します。 ステップ 2 - ノートブック インスタンスを作成する 左側のメニューから、 を選択します。 「ノートブック」->「ノートブック インスタンス」 ボタンをクリックします。 [ノートブック インスタンスの作成] インスタンス名を指定します。インスタンス タイプ を選択します。残念ながら、 と同じくらい強力なインスタンスが必要なようです。そうしないと、インスタンスがメモリ不足になったり、最も単純な質問に応答するのに過度に時間がかかったりする可能性があります。ただし、このインスタンスの料金は 1 時間あたり約 4 ドルかかるため、使用量を注意深く監視することが重要であることに注意してください。 m1.p3.2xlarge m1.p3.2xlarge 新しい IAM ロールを作成します。 テスト環境に特に機密データが含まれていない場合は、 へのアクセスを許可できます。それ以外の場合は、より明示的にする必要があります。 任意の S3 バケット ボタンをクリックします。 [ノートブック インスタンスの作成] ノートブックは 中ステータスになります。これはおそらく 10 分ほど続くでしょう: 保留 それまでの間、AWS SageMaker インスタンスのプロビジョニングが完了した後にアップロードできるように、ノートブックをダウンロードします。 ステップ 3 - ノートブックをダウンロードする にあるノートブックに移動し、ダウンロードします。 AWS SageMaker.ipynb の MPT-7B このノートブックには、2 つの主要なコード ブロックがあることがわかります。最初のブロックは MPT-7B トークナイザーとモデルをロードします。 from torch import cuda, bfloat16 from transformers import AutoTokenizer, AutoModelForCausalLM, AutoConfig device = f'cuda:{cuda.current_device()}' if cuda.is_available() else 'cpu' tokenizer = AutoTokenizer.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True) config={"init_device": "meta"} model = AutoModelForCausalLM.from_pretrained("mosaicml/mpt-7b-chat", trust_remote_code=True, config=config, torch_dtype=bfloat16) print(f"device={device}") print('model loaded') トークナイザーは、モデルに送信された質問をエンコードし、モデルからの応答をデコードするために使用されます。さらに、後でそれを利用するようにモデルを構成できるように、GPU のデバイス仕様を取得します。 import time from IPython.display import Markdown import torch from transformers import StoppingCriteria, StoppingCriteriaList # mtp-7b is trained to add "<|endoftext|>" at the end of generations stop_token_ids = [tokenizer.eos_token_id] # Define custom stopping criteria object. # Source: https://github.com/pinecone-io/examples/blob/master/generation/llm-field-guide/mpt-7b/mpt-7b-huggingface-langchain.ipynb class StopOnTokens(StoppingCriteria): def __call__(self, input_ids: torch.LongTensor,scores: torch.FloatTensor, **kwargs) -> bool: for stop_id in stop_token_ids: if input_ids[0][-1] == stop_id: return True return False stopping_criteria = StoppingCriteriaList([StopOnTokens()]) def ask_question(question, max_length=100): start_time = time.time() # Encode the question input_ids = tokenizer.encode(question, return_tensors='pt') # Use the GPU input_ids = input_ids.to(device) # Generate a response output = model.generate( input_ids, max_new_tokens=max_length, temperature=0.9, stopping_criteria=stopping_criteria ) # Decode the response response = tokenizer.decode(output[:, input_ids.shape[-1]:][0], skip_special_tokens=True) end_time = time.time() duration = end_time - start_time display(Markdown(response)) print("Function duration:", duration, "seconds") の使用に注意してください。これは必要です。そうしないと、モデルが質問に答えた後でも、ただしゃべり始めるだけです。 stopping_critera さまざまなオプションを検討したい場合は、 を参照してください。 「モデル生成パラメーター」 さて、このノートブックを SageMaker にアップロードしましょう。 ステップ 4 - ノートブックをアップロードする この時点までに SageMaker ノートブック インスタンスのプロビジョニングが完了していることを願っています。完了したら、 リンクをクリックします。 「Open Jupyter」 次に、画面の右上隅にある ボタンをクリックし、ダウンロードしたノートブックを選択します。 [アップロード] カーネルを に設定します。 conda_python3 ステップ 5 - ノートブックを実行する を選択します。 [セル] -> [すべて実行] 砂時計のロゴがブラウザ タブに表示されます。 モデルがダウンロードされるまで約 10 分間待つ必要があります。 実行すると、 」という質問に対する答えが表示されます。 「核分裂と核融合の違いを説明してください モデルとトークナイザーは上記ですでにロードされているため、 コード ブロックを変更し、 ボタンをクリックするだけで他の質問をすることができます。これにより、新しい質問をテストするたびに 10 分を費やす必要がなくなります。 ask_question [実行] ステップ 6 - ノートブックを停止する モデルのテストが終了したら、すぐにノートブック インスタンスのリストに戻り、モデルを停止します。そうしないと、1 時間あたり 4 ドルがすぐに加算されてしまいます 💸 性能比較 パフォーマンスの点では、私の予備テストによると、MPT-7B の結果は ChatGPT ほど良くない可能性があります。次のような質問にきちんと答えてくれます。 、 フランスの首都は何ですか? 核分裂と核融合の違いを教えてください 。 csv を pdf に変換する Python コードを作成します しかし、_ベリーズの首都はどこですか?_ のような質問では、かなりひどく失敗します。 現在、さらにデータを収集しており、フォローアップのブログ投稿で包括的な比較分析を行う予定です。その投稿では、実際の会話履歴を使用して、MPT-7B、MPT-30B、Falcon-40b、ChatGPT の質疑応答のパフォーマンスを比較します。 テストから本番まで テストから本番環境に移行する準備ができたら、SageMaker には追加の利点、つまりモデルのエンドポイントを作成する機能が提供されます。 SageMaker を使用すると、エンドポイントへの要求に基づいて自動スケールし、リソースを最適化できます。 追加のヒント Jupyter ノートブックでの実行中にプロセスがフォークされてメモリ不足になりやすいことに注意してください。この問題が発生した場合は、カーネルをシャットダウンし、すべてのコマンドを再度実行してください。 このモデルを AWS 以外のプラットフォームで実行することに興味がある場合は、月額 9 ドルの Google Colab Pro も実行可能なオプションです。ただし、テストの結果、提供されたクレジットをわずか数時間以内に使い果たしたことがわかりました。 😳 直面する可能性のあるもう 1 つの課題は、CUDA バージョンの非互換性により SageMaker で を利用できないことです。残念ながら、AWS の現在の P3 インスタンスには最新の CUDA バージョンが含まれていません。したがって、Triton 最適化を利用したい場合は、コマンドライン アクセスで EC2 コンテナを作成する必要があります。ただし、8 つの VCPU でインスタンスを実行するには、AWS サポートからの特別な許可も必要になることに注意することが重要です。今後の投稿では、Triton を統合し、 などのよりコスト効率の高い GPU クラウド プロバイダーを利用する方法に関する詳細なガイドを提供する予定です。 Triton 最適化 Lambda Labs 最終的な考え MosaicML の MPT-7B は、OpenAI の ChatGPT に代わる実行可能な代替手段を提供しますが、独自の課題も抱えています。モデルの実行には時間と費用がかかり、利用可能なドキュメントも不足しています。ただし、モデルを社内に保持し、データが OpenAI に公開されないように保護できる機能は、特定のユースケースでは魅力的な場合があります。 SageMaker は、モデルを迅速にテストするための非常に便利な機能を提供し、準備ができたら実稼働環境に移行する柔軟性を提供します。 MPT-7B を使い始めたばかりの場合でも、しばらく使用している場合でも、このガイドが貴重な洞察を提供することを願っています。 次回のブログ投稿にご期待ください。MPT-7B、MPT-30B、Falcon-40b、ChatGPT のパフォーマンス比較をさらに詳しく説明します。 またはそのより大きなバリエーションである について詳しく知りたい場合は、次のリンクを参照してください。 MPT-7B MPT-30B ChatGPT と MPT-7B のどちらを使用しているかに関係なく、重要なのは、データのプライバシーと費用対効果を損なうことなくユースケースを確実に提供することであることを覚えておいてください。楽しくいじくりましょう! MPT または ChatGPT をデータに使用するためのターンキー ソリューションが必要ですか? では、企業向けに ChatGPT を提供しています。 ChatGPT、MPT、またはその他のモデルを会社のデータで活用することに興味がある場合は、お問い合わせください。 MindfulDataAI.com