序文
最近、Meta は、大規模な言語モデル Llama2 がオープンソースであることを発表しました。これには、70 億、130 億、700 億のパラメーターに対応する 7B、13B、70B の異なるサイズが含まれており、各仕様には最適化されたモデル Llama-2-Chat があります。 。Llama2 は研究シナリオおよび商用目的には無料で (ただし、月間アクティブ ユーザー数が 7 億人を超える企業は申請が必要です)、企業や開発者向けに大規模モデル研究のための最新ツールを提供します。
現時点では、Llama-2-Chat は、ほとんどの評価指標で他のオープンソース対話モデルを上回っており、一部の人気のクローズド ソース モデル (ChatGPT、PaLM) にも遠く及ばない。Alibaba Cloud の機械学習プラットフォーム PAI は、最初に Llama2 シリーズ モデルを適応させ、完全な微調整、Lora の微調整、推論サービスなどのシナリオでベスト プラクティスを導入し、AI 開発者が迅速に開梱できるようにします。以下にそれぞれ具体的な利用手順を紹介します。
ベスト プラクティス 1: Llama 2 のローコード Lora の微調整と展開
- このプラクティスは、 Alibaba Cloud機械学習プラットフォーム PAI クイック スタートモジュールを使用して、Llama-2-7b-chat 用に開発されます。PAI-Quick Start は、オープンソース モデルに基づいたローコード トレーニング、デプロイメント、推論のプロセス全体をサポートしており、事前にトレーニングされたモデルをすぐに体験したい開発者に適しています。
1. 準備
1. PAI クイック スタート ページにアクセスします。
a. PAI コンソール https://pai.console.aliyun.com/にログインします。
b. PAI ワークスペースに入り、左側のナビゲーション バーで [クイック スタート] を見つけます。
2. Llama2 モデルを選択します
PAI-Quickstart には、人工知能のさまざまなドメインやタスクをサポートするさまざまなソースからの多くの人気のあるオープン ソース モデルが含まれています。この例では、「Generative AI-Large Language Model (large- language-model)」を選択してモデル一覧ページに入ります。
モデル リスト ページでは、さまざまなオープン ソース コミュニティからのいくつかの主流モデルを確認できます。このデモでは、モデルを使用しますllama-2-7b-chat-hf
(llama-2-7b-hf
モデルについても同様です)。現在のビジネス ニーズに合わせて他のモデルを自由に選択することもできます。
チップ:
- 一般に、パラメータの数が多いモデルほど効果は高くなりますが、対応するモデルの実行コストとトレーニングの微調整に必要なデータの量が多くなります。
- Llama-2-13B および 70B のバージョン、および他のオープンソースの大規模言語モデルも PAI-Quick Start で開始される予定ですので、ご期待ください。
2. オンライン推論のモデル化
Quick Start によって提供されるLlama-2-7b-chatllama-2-7b-chat-hf
モデルはHuggingFace から派生しています。また、主にTransformerアーキテクチャに基づいた大規模な言語モデルでもあります。トレーニングにはさまざまな混合オープンソース データセットを使用するため、ほとんどの英語が非言語のプロフェッショナルなシーン。PAI を介してこのモデルを PAI-EAS に直接デプロイし、推論サービスを作成することをすぐに開始できます。
1. 導入モデル
モデルの詳細ページのデプロイメント・エントリーを介して、ワンクリックでこのモデルに基づくオンライン推論サービスを作成できます。デフォルトですべてのパラメーターが構成されています。もちろん、使用するコンピューティングリソースやその他の設定も自由に選択でき、モデルをPAI-EASに直接デプロイして推論サービスを作成することもできます。
このモデルには少なくとも 64 GiB のメモリと 24 GiB 以上のビデオ メモリが必要であることに注意してください。選択したコンピューティング リソースが上記の要件を満たしていることを確認してください。満たしていない場合は、展開が失敗する可能性があります。
サービスの詳細ページでは、推論サービスの展開ステータスを表示できます。サービスのステータスが「実行中」の場合、推論サービスが正常にデプロイされていることを意味します。
チップ:
- 今後は、PAI クイック スタートの [タスクとデプロイメントの管理] ボタンをクリックして、現在の推論サービスに戻ることができます。
2. 推論サービスを呼び出す
デプロイが成功したら、WebUI
できるだけ早くサービスをデバッグし、予測リクエストを送信できます。
API 呼び出し機能は WebUI でもサポートされており、WebUI ページの下部にある「API 経由で使用」をクリックすると関連ドキュメントを表示できます。
3. モデルの微調整トレーニング
llama-2-7b-chat-hf
モデルは、専門家以外のほとんどのシナリオに適しています。ドメイン固有の専門知識を適用する必要がある場合は、モデルの微調整トレーニングを使用して、カスタム ドメインでのモデルの能力を支援することを選択できます。
チップ:
- 大規模な言語モデルは、対話プロセス中に比較的単純な知識を直接学習することもできます。ご自身のニーズに応じてトレーニングするかどうかを選択してください。
- Quick Start でサポートされている現在のトレーニング方法はLoRAに基づいています。他のトレーニング方法 (SFT など) と比較して、LoRA トレーニングはトレーニングのコストと時間を大幅に削減しますが、大規模な言語モデルの LoRA トレーニング効果は不安定になる可能性があります。
1. データを準備する
ヒント:
- Llama 2 モデルのトライアル体験を容易にするために、
llama-2-7b-chat-hf
微調整トレーニングを直接実行できるように、モデル カードに命令調整用のデフォルト データ セットも用意しました。
OSS上のデータを利用した学習をサポートするモデルです。トレーニング データは Json 形式の入力を受け入れ、各データは質問、回答、ID で構成されます。これらは、「命令」、「出力」、および「ID」フィールドで表されます。次に例を示します。
[
{
"instruction": "以下文本是否属于世界主题?为什么美国人很少举行阅兵?",
"output": "是",
"id": 0
},
{
"instruction": "以下文本是否属于世界主题?重磅!事业单位车改时间表已出!",
"output": "不是",
"id": 1
}
]
トレーニングデータの具体的な形式については、PAI-Quick Startの具体的なモデル紹介ページにも記載されています。
OSS にデータをアップロードし、対応するデータを表示する方法については、OSS のヘルプドキュメントを参照してください: https://help.aliyun.com/document_detail/31883.html?spm=a2c4g.31848.0.0.71102cb7dsCgz2
モデル トレーニングの効果をより適切に検証するために、トレーニング データ セットを提供することに加えて、検証データ セットを準備することもお勧めします。これは、トレーニング中にモデル トレーニングの効果を評価し、調整を最適化するために使用されます。トレーニングパラメータ。
2. トレーニング課題を提出する
使用するデータセットを準備した後、トレーニング用にデータセットを構成し、クイック スタートのモデル ページでトレーニング ジョブを送信できます。トレーニングジョブで使用される最適化されたハイパーパラメータとコンピューティングリソース構成がデフォルトで設定されており、実際のビジネスに応じて変更することもできます。
トレーニング ジョブの詳細ページでは、トレーニング タスクの実行の進行状況、タスク ログ、モデルの評価情報を表示できます。トレーニング タスクのステータスが「成功」の場合、トレーニング ジョブによって生成されたモデルは OSS に保存されます (ジョブの詳細ページの「モデルの出力パス」を参照)。
チップ:
- デフォルトのデータ セットとデフォルトのハイパーパラメータを使用した場合、コンピューティング リソースのトレーニングの推定完了時間は約 1 時間 30 分です。カスタム トレーニング データと構成アイテムを使用する場合、トレーニングの推定完了時間は異なる場合がありますが、通常は数時間以内であるはずです。
- 途中でページを閉じた場合でも、PAI-クイック スタートの [タスクと展開の管理] ボタンをクリックすると、いつでも現在のトレーニング タスクに戻ることができます。API 呼び出し機能は WebUI でもサポートされており、WebUI ページの下部にある「API 経由で使用」をクリックすると関連ドキュメントを表示できます。
3. 微調整モデルを展開する
微調整トレーニングが成功すると、ユーザーは取得したモデルをジョブの詳細ページで推論サービスとして直接デプロイできます。特定のモデルのデプロイメントおよびサービス呼び出しプロセスについては、上記の「直接デプロイメント モデル」ドキュメントを参照してください。
ベストプラクティス 2: Llama2 の全パラメータ微調整トレーニング
- この演習では、Alibaba Cloud機械学習プラットフォーム PAI-DSWモジュールを使用して、Llama-2-7B-Chat のすべてのパラメータを微調整します。PAI-DSW は対話型モデリング プラットフォームであり、モデルの微調整をカスタマイズし、モデル チューニングの効果を追求する必要がある開発者に適しています。
1. 動作環境要件
Python 環境は 3.9 以上、GPU は A100 (80GB) を推奨しますが、リソースが比較的厳しいため、数回リフレッシュすることをお勧めします。
2. 準備
1. PAI にログインし、Llama-2-7B-Chat をダウンロードします
a. PAI コンソール https://pai.console.aliyun.com/にログインします。
b. PAI-DSW を入力してインスタンスを作成し、モデル ファイルをダウンロードします。
ModelScope のダウンロード モデルは、リンクをクリックしてください: https://modelscope.cn/models/modelscope/Llama-2-7b-chat-ms/summary
2. ダウンロードおよびインストール環境
次に、必要な環境をダウンロードしてインストールします。
- ColossalAI は超並列 AI トレーニング システムであり、この例ではモデルの微調整にこのフレームワークを使用します。
- Transformers は、Transformers モデル構造に基づいた事前トレーニング済みの言語ライブラリです。
- Gradio は、機械学習 Web プレゼンテーション ページを迅速に構築するためのオープン ソース ライブラリです。
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/ColossalAI.tar.gz
! tar -zxvf ColossalAI.tar.gz
! pip install ColossalAI/.
! pip install ColossalAI/applications/Chat/.
! pip install transformers==4.30.0
! pip install gradio==3.11
3. サンプルトレーニングデータをダウンロードする
トレーニングに必要なデータをダウンロードします。ここでは、音声生成やその他のコンテンツを含むクリエイティブ生成データを提供します。
このフォーマットを参考にして、必要なデータを自分で用意することもできます。
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/llama_data.json
! wget https://atp-modelzoo-sh.oss-cn-shanghai.aliyuncs.com/release/tutorials/llama2/llama_test.json
3. モデルの微調整
すでに作成されたトレーニング スクリプトをモデルのトレーニングに使用できます。
! sh ColossalAI/applications/Chat/examples/train_sft.sh
4. トライアルモデル
モデルのトレーニングが完了したら、提供されている WebUI デモをダウンロードし、微調整されたモデルを試してください (モデルのアドレスはトレーニングしたモデルのアドレスに置き換えられることに注意してください)。
import gradio as gr
import requests
import json
from transformers import AutoTokenizer, AutoModelForCausalLM
#模型地址替换为自己训练好的模型地址
tokenizer = AutoTokenizer.from_pretrained("/mnt/workspace/sft_llama2-7b",trust_remote_code=True)
#模型地址替换为自己训练好的模型地址
model = AutoModelForCausalLM.from_pretrained("/mnt/workspace/sft_llama2-7b",trust_remote_code=True).eval().half().cuda()
def inference(text):
from transformers import pipeline
pipe = pipeline("text-generation", model=model, tokenizer=tokenizer,device='cuda:0', max_new_tokens=400)
res=pipe(text)
return res[0]['generated_text'][len(text):]
demo = gr.Blocks()
with demo:
input_prompt = gr.Textbox(label="请输入需求", value="请以软件工程师的身份,写一篇入职的发言稿。", lines=6)
generated_txt = gr.Textbox(lines=6)
b1 = gr.Button("发送")
b1.click(inference, inputs=[input_prompt], outputs=generated_txt)
demo.launch(enable_queue=True, share=True)
5. モデルを OSS にアップロードし、オンラインでデプロイします
上記のモデルを PAI-EAS にデプロイする場合は、まずトレーニング済みモデルを OSS にアップロードする必要があります。
次のパラメータは独自の情報に従って入力する必要があります
# encoding=utf-8
import oss2
import os
AK='yourAccessKeyId'
SK='yourAccessKeySecret'
endpoint = 'yourEndpoint'
dir='your model output dir'
auth = oss2.Auth(AK, SK)
bucket = oss2.Bucket(auth, endpoint, 'examplebucket')
for filename in os.listdir(dir):
current_file_path = dir+filename
file_path = '需要上传地址'
bucket.put_object_from_file(file_path, current_file_path)
次のステップはデプロイです。[ベスト プラクティス 3: Llama2 の WebUI の迅速なデプロイ] を参照してください。
ベスト プラクティス 3: Llama2 による WebUI の迅速な展開
- この演習では、Alibaba Cloud機械学習プラットフォーム PAI-EAS モジュールを使用して、Llama-2-13B-chat をデプロイします。PAI-EAS は、オンライン推論サービスまたは AI-Web アプリケーションとしてのモデルのワンクリック展開をサポートするオンライン モデル サービス プラットフォームであり、柔軟なスケーリングの特性を備えており、コスト効率の高いモデル サービスを必要とする開発者に適しています。
1. サービスの展開
1. PAI-EASモデルのオンラインサービスページに入ります。
-
- PAI コンソール https://pai.console.aliyun.com/にログインします。
- 左側のナビゲーション バー のワークスペース リストをクリックし、ワークスペース リスト ページで操作するワークスペースの名前をクリックして、対応するワークスペースに入ります。
- ワークスペース ページの左側のナビゲーション バーで、[モデルのデプロイメント] > [モデル オンライン サービス (EAS)]を選択して、 PAI EAS モデル オンライン サービスページに入ります。
2. PAI EAS モデルのオンライン サービス ページで、[展開サービス] をクリックします。
3. デプロイメントサービスページで、次の主要なパラメータを設定します。
パラメータ | 説明 |
サービス名 | サービス名をカスタマイズします。この場合に使用される値の例は、chatllm_llama2_13b です。 |
導入方法 | AI-Web アプリケーションをデプロイするイメージを選択します。 |
ミラーの選択 | PAI プラットフォーム イメージ リストで chat-llm-webui を選択し、イメージ バージョンとして 1.0 を選択します。バージョンの反復が速いため、展開時にイメージ バージョンの最も高いバージョンを選択できます。 |
コマンドを実行する | サービス実行コマンド: デプロイメントに 13b モデルが使用されている場合: python webui/webui_server.py --listen --port=8000 --model-path=meta-llama/Llama-2-13b-chat-hf --precision= fp16 デプロイメントに 7b モデルを使用する場合: python webui/webui_server.py --listen --port=8000 --model-path=meta-llama/Llama-2-7b-chat-hf ポート番号入力: 8000 |
リソースグループタイプ | パブリック リソース グループを選択します。 |
リソース割り当て方法 | 「一般リソース構成」を選択します。 |
リソース構成の選択 | GPU タイプを選択する必要があり、インスタンス仕様として ecs.gn6e-c12g1.3xlarge が推奨されます。13b モデルは gn6e 以降のモデルで実行する必要があります。7b モデルは A10/GU30 モデルで実行できます。 |
追加のシステムディスク | 50GBを選択してください |
4. [展開] をクリックし、モデルの展開が完了するまでしばらく待ちます。
2. モデル推論のための WebUI を開始します。
1. 対象サービスの「サービスモード」列の下にある「Web アプリケーションの表示」をクリックします。
2. WebUI ページで、モデル推論の検証を実行します。
ダイアログ ボックスの下部にある入力インターフェイスに会話の内容 (たとえば、「財務管理の学習計画を提供してください」) を入力し、[送信] をクリックして会話を開始します。
そのうえ
- この記事では、主に 7B および 13B サイズ向けに、Alibaba Cloud 機械学習プラットフォーム PAI に基づいて Llama2 を迅速に微調整してデプロイする方法を示します。将来的には、PAI に基づいて 70B サイズの Llama-2-70B を微調整して展開する方法を示しますので、ご期待ください。
- 上記実験では、[ベストプラクティス 3: Llama2 Rapid Deployment WebUI] が無料トライアルモデルをサポートしていますので、[原文を読む]をクリックして Alibaba Cloud ユーザーセンターにアクセスし、「PAI-EAS」の無料トライアルを取得してから、 PAI コンソールにアクセスして体験してください。
参考文献:
- Llama2: モデルの内部 https://ai.meta.com/llama/#inside-the-model
- Llama 2 コミュニティライセンス契約 https://ai.meta.com/resources/models-and-libraries/llama-downloads/
- HuggingFace Open LLM リーダーボード https://huggingface.co/spaces/HuggingFaceH4/open_llm_leaderboard
- Alibaba Cloud 機械学習プラットフォーム PAI: https://www.aliyun.com/product/bigdata/learn
※ Llama2 は外国企業によって開発された制限付きのオープンソース モデルであることを特に注意してください。Llama2 を使用する前に、Llama2 のライセンス契約、特に制限的なライセンス条項 (たとえば、月間アクティブ ユーザー数が 7 億人を超える企業は、追加のライセンスを申請するため)および免責条項など。
また、該当国の法律や規制を遵守するよう注意してください。Llama2 を使用して中国の公衆にサービスを提供する場合は、その国の法律や規制を遵守し、特に行為を行ったり引き起こしたりしないようにしてください。国、社会等の権利利益を脅かす内容。
クリックして今すぐクラウド製品を無料で試し、クラウドでの実践的な取り組みを始めましょう!
この記事は Alibaba Cloud のオリジナルのコンテンツであり、許可なく複製することはできません。