ラージモデル技術実践編(2) | Llama 2 について知っておきたいこと

前回の記事ではLlamaモデルの概要を簡単におさらいしましたが、今回は【Llama 2について】知っておくべきことを詳しく解説していきます。
9b95d162a893f52a9951ef6be752d617.jpeg

01-Llama 2 のパフォーマンスはどの程度ですか?


Meta が新たにリリースした SOTA オープンソースの大規模言語モデルとして、Llama 2 は Llama モデルの継続およびアップグレードです。Llama 2 ファミリ モデルには、Llama 2 事前トレーニング モデルと Llama 2 チャット微調整モデルが含まれており、これらには 7B、13B、および 70B のパラメーター バージョンがあり、さまざまなアプリケーション シナリオをカバーします。

1.1 トレーニング データ

Llama 2 では、トレーニング前コーパスが Llama に比べて 40% 増加して 2 兆トークンになり、トレーニング データ内のテキスト ソースがより多様になりました。さらに、Llama 2 に対応する微調整モデルは、手動でラベル付けされた 100 万を超えるデータでトレーニングされました。
bda9c60786e8c8b21c34fc29c409addb.jpeg 図 1: Llama 2 モデルの概要 [1]


1.2 モデル評価 モデル

評価の観点から見ると、Llama 2 は、推論、プログラミング、対話能力、および評価などの多くのベンチマーク テストにおいて、初代 Llama や既存のオープンソースよりも優れています。知識テスト、大規模モデル。
f64679251ec1c7042efcb8097e52bb53.jpeg 図 2: さまざまなベンチマークでの Llama 2 のスコア

Llama 2-70B は、推論タスクでは GPT-3.5 に近いものの、全体的なパフォーマンスの点では OpenAI の GPT-4 や Google の PaLM-2-L にはまだ匹敵しません。ソース モデル、特にプログラミング ベンチマークでは 2 つよりはるかに遅れています。
06bfcf0c42012d0bd1ea08c028d51d7a.jpeg 図 3: さまざまなベンチマーク テストにおける Llama 2、GPT、PaLM のスコア


02-Llama 2 のモデル構造のロックを解除する


2.1 Lla​​ma 2 モデル アーキテクチャ

Llama 2 は、事前トレーニング設定とモデル アーキテクチャの点で第一世代のモデルと非常によく似ています。
b8c7a6b9bc60159323f42f3d936d20f9.jpeg
図に示すように、Llama シリーズのモデルはすべて、自己回帰 Transformer アーキテクチャ、つまり Transformer のデコーダ専用アーキテクチャを使用します。2 世代のモデルの一貫性は以下に反映されています。

正規化前 (Pre-normalization): RMSNorm 正規化関数を使用して、各トランスフォーマーのサブレイヤー入力を正規化します。 SwiGLU

アクティベーション関数: フィードフォワード ニューラル ネットワーク (FFN) で、パフォーマンスを向上させるために、Transformer の ReLU アクティベーション関数を置き換える SwiGLU アクティベーション関数

Rotary Positional Embeddings (RoPE): RoPE は、相対位置情報と絶対位置情報の両方を考慮して、モデルの一般化能力を向上させることができます


2.2 Llama 2 トレーニング

のハイライトトレーニング データは前述しましたが、Llama 2 にはトレーニング プロセスにおいて注目に値する 2 つのハイライトもあります。第一に、コンテキストの長さの拡張によりモデルの理解能力が向上し、第二に、グループ化されたクエリ アテンション メカニズムによりモデルの推論速度が向上します。



Llama 2 のコンテキスト ウィンドウの拡張により

、Llama のコンテキスト長が 2048 トークンから 4096 トークンに 2 倍になりました。コンテキスト ウィンドウが長いほど、より多くのチャット ユースケースを採用できることを意味し、それによってモデルの理解が向上します。



グループ化されたクエリ アテンション アテンション

の実現において、Llama 2 30B 上のモデルはグループ化されたクエリ アテンション メカニズム (グループ化されたクエリ アテンション、GQA) を採用しています (図 5 および図 6 を参照)。
0d4c64d900be1ac84eb2c4bf867cc622.jpeg 図 6: GQA[2] を使用したラマ 2

自己回帰モデルのデコードでは、以前にラベル付けされたシーケンスのキー (K) 値 (V) ペアをキャッシュすることで、アテンションの計算が高速化されます。ただし、バッチ サイズとコンテキスト ウィンドウが増加すると、マルチヘッド アテンション モデル (マルチヘッド アテンション、MHA) のメモリ コストが大幅に増加します。
c2cf23e34c46b9cb29503cedda9e8ae8.jpeg 図 7: 「GQA: マルチヘッド チェックポイントからの一般化されたマルチクエリ トランスフォーマー モデルのトレーニング」[3]


GQA の利点は、クエリをグループ化し、グループ内で KV を共有するため、K と V の予測をグループ間で共有できることです。これにより、コンピューティングとメモリの要件が大幅に軽減され、推論速度が向上します。


2.3 Llama 2 チャットの微調整プロセス


Meta は、嗜好データに基づいて報酬モデルをトレーニングし、強化学習を使用して報酬モデルを最適化し、生成の品質を向上させることに取り組んでいます。

RS と PPO による SFT + RLHF

は InstructGPT に似ています。Llama 2 チャット対話モデルの微調整プロセスは次のように分かれています:

自己教師ありトレーニング後の Llama 2 ペデスタル モデル

教師あり微調整 (教師あり微調整、SFT) の取得)

ヒューマン フィードバック強化学習 (ヒューマン フィードバックによる強化学習、RLHF): 拒絶サンプリング + 近接ポリシーの最適化



RLHF は、拒絶サンプリング (拒絶サンプリング微調整、RS) と近接ポリシーの最適化 (近接ポリシー最適化、PPO) という 2 つの最適化アルゴリズムを使用します。拒否サンプリングの原理は、モデルの出力時に K 個の結果をサンプリングし、現時点で最良の報酬モデルを使用してスコアを付け、最も高い報酬値を持つモデルを選択することです。強化学習段階では勾配が更新され、PPOと組み合わせてRS+PPOの最適化が行われます。
0ed487ba69f9a27e32ae2156a692c42b.jpeg 図 8: Llama 2 チャットの微調整プロセス [1]


Meta は、V1 から V5 まで合計 5 つの RLHF バージョンを繰り返しましたが、最新の V5 バージョンのみがリリースされました。V5 バージョンの反復手順を次の図に示します。
d03e33a3df24813aaee860f1b99d2905.jpeg 図 9: RLHF-V5 反復プロセス

必要なのは品質だけ

Meta は、有用性と安全性をそれぞれ最適化するためにユーザーの嗜好データを使用してトレーニングされた 2 つの独立した報酬モデル、Helpfulness RM と Safty RM を使用します。SFT のプロセスにおいて、Llama 2 の公式論文 [2] は、少量の高品質な SFT 嗜好データだけで結果の品質を大幅に改善できることを強調しました (必要なのは品質だけです)。また、この論文は「RLHFが大型モデルの性能上限を根本的に改善する」と指摘した最初の論文でもある。
1e4a4ef044de1ea6fd72a18ef45cc414.jpeg 図 10: Llama 2 の論文で強調されている「必要なのは品質だけ」[2] 要約すると、Llama 2 の

トレーニング プロセスから得られた最も重要な発見は、

報酬モデルが RLHF の鍵であるだけでなく、RLHF の鍵でもあるということです。大規模なモデル全体の効果; データの品質が報酬モデルの鍵となります。[4]

03-UCloud UK8SでLlama 2を練習する


3.1 モデルのダウンロード.

モデルをダウンロードし

、HuggingFace [5]: https://huggingface.co/meta-llama から Llama 2 モデルのクローンを作成します。この記事では、Llama 2-chat-7b モデルを使用します。 大規模モデル視覚化ツールキットである
0abf1e8f06f95894bc581c99301e9c68.jpeg WebUI ツール oababooga のオープンソース text-generation-webui [6] をインストールします 。インストール方法は次のとおりです: a. Text Generation の github (https://github.com/oababooga/text-generation ) にアクセスします。 -webui) b. ワンクリック インストール パッケージ インストールまたは手動インストールを選択します c. Llama 2 モデル ファイルを text-generation-webui/models ディレクトリに置きます ファイル構造は次のとおりです: 3.2 指示に従ってイメージをビルド ます Uhub コンテナー イメージ ライブラリの: (https://docs.ucloud.cn/uhub/guide) 1. まず、Uhub 上にイメージ ライブラリを作成します。 2. 次に、クラウド ホスト上にイメージを作成し、 Docker イメージ ビルドでマークします。 -t {タグ名} . docker タグ {ローカル イメージ名}uhuub.service.ucloud.cn/{ミラー ウェアハウスが作成されました}/{ミラー}:tag 3. 最後に、クラウド ホスト イメージを Uhub にプッシュします












bc2ff7eab3b1fb2b7b5250c2fc30af54.jpeg








91a81617c7c39b62e03e78f9602b0fa3.jpeg






docker Push uhub.service.ucloud.cn/{mirrorwarehouse created}/{mirror}:tag

3.3 UK8S クラスターの構成



1. UFS ファイル システムを作成してマウントします

(https://docs.ucloud.cn/ufs/ufs_guide/)
4a5894d501a6f83d2f00d2857639ce08.jpeg 2. UK8S コンテナ クラウド リファレンス ドキュメントを作成します (

https://docs.ucloud.cn/uk8s/)。クラスターを作成するとき、ノード構成は次の図を参照できます。クラスターの作成後、
ef4d073492091356f322eeb8fc5717f7.jpeg 「」をクリックします。 [詳細] ボタンをクリックして設定すると、[外部ネットワーク資格情報] が ~/.kube/config ファイルにコピーされます。同時に、Kubectl コマンド ライン ツールをインストールして構成する必要があります。

(https://docs.ucloud.cn/uk8s/manageviakubectl/connectviakubectl?id=install and configure kubectl)

3. UK8SでUFSを利用する

作成したUFSをUK8Sクラスタの共有ストレージとして利用します。

UK8S での UFS の使用に関するドキュメントに従って、PV と PVC を作成します。

(https://docs.ucloud.cn/uk8s/volume/ufs?id=Use ufs in uk8s)


a. ポッドの作成: 構成ファイル ufspod.yml を書き込みます

apiVersion: apps/v1
kind: デプロイメント・
メタデータ:
name: Llama 2
spec :
セレクター:
matchLabels:
アプリ: ラマ 2
レプリカ: 1
テンプレート: メタデータ
:
ラベル:
アプリ: ラマ 2
仕様:
コンテナー:
- 名前: ラマ 2
イメージ:uhuub.service.ucloud.cn/Llama 2/Llama 2-test:v1 # に置き換えますウェアハウスの
volumeMounts:
- mountPath: "/app/models"
name: mypd
ports
: -containerPort: 7861
volume:
- name: mypdpersistentVolumeClaim
:
claimName: ufsclaim


実行構成ファイル:

kubectl apply -f ufspod.yml
#deployment.apps/ Llama 2 つ作成されました



b. ポッドを入力して

ポッド名を照会します:

kubectl get pods



Pod 内で Bash シェルを開始します:

kubectl exec -it {pod_name} -- /bin/bash c.



オンライン推論用に

server.py ファイルを実行します

python server.py --model Llama-2-7b-chat-hf --この点を聞いてください


。Web 上でラマ 2 と会話することができます。
d23fbc5e1608354d95ac929a767694c9.jpeg さらに、UCloud は、AI 開発者が Llama 2 推論および微調整環境を迅速に構築できるように、すぐに使用できる Llama 2 GPU クラウド ホスト イメージをリリースしました。詳細については、「Llama 2 モデルの迅速な展開」ドキュメントを参照してください。 。

(https://docs.ucloud.cn/gpu/practice/LLaMA2?id=llama2-Rapid Model Deployment)


今回は【Llama 2について】知っておくべきことを紹介します。Llama シリーズのモデルは、その小型サイズとオープンソースの特性により、AI コミュニティでの人気と評判が高く、短期的には、よりカスタマイズされた微調整モデルや Llama 2 ベースの関連サービスが登場すると予測されます。


次回の記事では、クラウド上での「LangChain + 大規模モデル + ベクター データベース」のデプロイと推論に焦点を当てますので、お楽しみに ~ [参考文献] [1] Llama 2 公式発表: https:


//ai.meta

. com/llama/

[2] ラマ 2 公式論文: https://huggingface.co/papers/2307.09288

[3] 「GQA: Training Generalized Multi-Query Transformer Models from Multi-Head Checkpoints」 by Google Research:https://arxiv.org/pdf/2305.13245.pdf [4] 「

Llama 2: an Excellent open LLM」 by Nathan Lambert: https://www.interconnects.ai/p/llama-2-from-meta

[5] Llama 2 モデル: https://huggingface.co/meta-llama

[6] テキスト生成 Web UI github: https: //github.com/oababooga/text-generation-webu

おすすめ

転載: blog.csdn.net/specssss/article/details/132471313