ChatGLM2 がリリースされ、C-Eval リストのトップになりました!


ChatGLM は 2023 年 3 月のリリース以来爆発的に普及しました。現在、6 月 25 日に清華大学の第 2 世代 (ChatGLM2) がリリースされ、C-Eval リスト (Rank0) で 1 位にランクされました。そしてChatGLM2-6BはRank6にランクイン!

中国語大規模言語モデル評価ベンチマーク: C-EVAL

C-EVAL: 基礎モデル向けのマルチレベル、複数分野の中国語評価スイート

論文アドレス: https://arxiv.org/pdf/2305.08322v1.pdf
ここに画像の説明を挿入
色の異なる本体は、中学、高校、大学、専門の 4 つの難易度を表しています。

github アドレス: https://github.com/SJTU-LIT/ceval

C-Eval リストは、包括的な中国語基本モデル評価キット (マルチレベル、複数分野の言語評価基本モデル キット) です。52の異なる科目と4つの難易度にわたる13,948問の選択問題で構成されており、テストセットはモデルの評価に使用されます(簡単に言うと、中国モデルの総合テスト機です)。

C-Eval リストのアドレス: https://cevalbenchmark.com/static/leaderboard.html
ここに画像の説明を挿入
データセットのアドレス: https://huggingface.co/datasets/ceval/ceval-exam

チャットGLM2-6B

プロジェクトアドレス: https://github.com/THUDM/ChatGLM2-6B

ChatGLM2-6B は、オープンソースの中国語-英語バイリンガル対話モデル ChatGLM-6B の第 2 世代バージョンであり、スムーズな対話や導入敷居の低さなど、第 1 世代モデルの多くの優れた機能を継承しています。次の新機能が導入されています。

より強力なパフォーマンス: ChatGLM の第一世代モデルの開発経験に基づいて、ChatGLM2-6B のベースモデルを完全にアップグレードしました。ChatGLM2-6BはGLMの混合目的関数を使用し、中国語と英語の識別子の1.4T事前トレーニングと人間の好みの調整トレーニングの後、評価結果は、元のモデルと比較して、ChatGLM2-6BがMMLU (+23%)であることを示しています。 CEval (+33%)、GSM8K (+571%)、BBH (+60%) およびその他のデータセットは、パフォーマンスの大幅な向上を達成しており、同じサイズのオープンソース モデルにおいて強力な競争力を持っています。

より長いコンテキスト: FlashAttendant テクノロジーに基づいて、ペデスタル モデルのコンテキスト長 (Context Length) を ChatGLM-6B の 2K から 32K に拡張し、対話段階で 8K コンテキスト長トレーニングを使用して、より多くのラウンドの対話を可能にしました。ただし、ChatGLM2-6B の現在のバージョンでは、単一ラウンドの超長いドキュメントを理解する能力が限られているため、今後の反復アップグレードでの最適化に重点を置きます。

より効率的な推論: マルチクエリ アテンション テクノロジに基づいて、ChatGLM2-6B はより効率的な推論速度とより低いメモリ使用量を備えています: 公式モデルの実装では、推論速度は第 1 世代よりも 42% 高速です。INT4 量子化、6G の下では、ビデオ メモリでサポートされるダイアログの長さが 1K から 8K に増加しました。

よりオープンなプロトコル: Apache-2.0 プロトコルに準拠したオープンソースであり、ChatGLM2-6B モデルのウェイトの使用はモデル ライセンスに従う必要があります。ChatGLM2-6B 分銅は学術研究に完全にオープンであり、正式な書面による許可があれば商用利用も許可されています。

効果

オリジナルモデルと比較して、ChatGLM2-6B は多次元の能力において大幅な向上を達成しました。

不十分: モデルはトレーニングのすべての段階でデータのコンプライアンスと精度を確保するために最善を尽くしますが、ChatGLM2-6B モデルのサイズが小さく、モデルが確率的ランダム性要因の影響を受けるため、出力コンテンツの精度が低下します。保証はできません。モデルは誤解されやすいものです。

導入推論

プロジェクトアドレス: https://github.com/THUDM/ChatGLM2-6B

HuggingFace アドレス: https://huggingface.co/THUDM/chatglm2-6b

環境構成

まず、このリポジトリをダウンロードする必要があります。

git clone https://github.com/THUDM/ChatGLM2-6B
cd ChatGLM2-6B

新しい conda 環境を作成し、環境の依存関係をインストールする

conda create -n chatglm2-6b python==3.9
pip install -r requirements.txt

ここに画像の説明を挿入

モデルのダウンロード

公式アドレスを使用するか、huggingface からダウンロードできます。
公式モデル ダウンロード アドレス: https://cloud.tsinghua.edu.cn/d/674208019e314311ab5c/HuggingFace
モデル ダウンロード アドレス:
https://huggingface.co/THUDM/chatglm2 - 6b

ダウンロードコマンド (git-lfs を事前にインストールする必要があります):

git clone https://huggingface.co/THUDM/chatglm2-6b.git

/data/sim_chatgpt パスにダウンロードしました。

git-lfs インストール

git-lfs をインストールするには 2 つの方法があります。1 つはコマンドを使用して直接インストールする方法、もう 1 つはローカルにダウンロードしてからインストールする方法です。コマンドを使用して直接インストール:
https://codeleading.com/article/2815391430/

# 先安装git(如已安装可忽略)
sudo apt-get install git
# 安装apt-get源
curl -s https://packagecloud.io/install/repositories/github/git-lfs/script.deb.sh | sudo bash
# 安装git-lfs
sudo apt-get install git-lfs
# 初始化git-lfs
git lfs install

上記の方法でネットワーク速度が遅い場合は、ローカルにインストールしてみてください: https://www.cnblogs.com/allmignt/p/12353756.html

ここで git-lfs をインストールした後、git clone コマンドを直接使用してダウンロードを完了します。
ここに画像の説明を挿入

コード呼び出し

わずか数行のコードでモデルをテストしたい場合は、次のコードを使用できます。

from transformers import AutoTokenizer, AutoModel
tokenizer = AutoTokenizer.from_pretrained("/data/sim_chatgpt/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("/data/sim_chatgpt/chatglm2-6b", trust_remote_code=True, device='cuda')
model = model.eval()
response, history = model.chat(tokenizer, "你好", history=[])
print(response)
你好 !我是人工智能助手 ChatGLM2-6B,很高兴见到你,欢迎问我任何问题。
response, history = model.chat(tokenizer, "晚上睡不着应该怎么办", history=history)
print(response)
晚上睡不着可能会让你感到焦虑或不舒服,但以下是一些可以帮助你入睡的方法:

1. 制定规律的睡眠时间表:保持规律的睡眠时间表可以帮助你建立健康的睡眠习惯,使你更容易入睡。尽量在每天的相同时间上床,并在同一时间起床。
2. 创造一个舒适的睡眠环境:确保睡眠环境舒适,安静,黑暗且温度适宜。可以使用舒适的床上用品,并保持房间通风。
3. 放松身心:在睡前做些放松的活动,例如泡个热水澡,听些轻柔的音乐,阅读一些有趣的书籍等,有助于缓解紧张和焦虑,使你更容易入睡。
4. 避免饮用含有咖啡因的饮料:咖啡因是一种刺激性物质,会影响你的睡眠质量。尽量避免在睡前饮用含有咖啡因的饮料,例如咖啡,茶和可乐。
5. 避免在床上做与睡眠无关的事情:在床上做些与睡眠无关的事情,例如看电影,玩游戏或工作等,可能会干扰你的睡眠。
6. 尝试呼吸技巧:深呼吸是一种放松技巧,可以帮助你缓解紧张和焦虑,使你更容易入睡。试着慢慢吸气,保持几秒钟,然后缓慢呼气。

如果这些方法无法帮助你入睡,你可以考虑咨询医生或睡眠专家,寻求进一步的建议。

Gradio ベースの Web バージョンのデモ

グラデーションをインストールする

pip install gradio

web_demo.pyを変更する

vi web_demo.py

モデルの読み込みパスを変更する

tokenizer = AutoTokenizer.from_pretrained("/data/sim_chatgpt/chatglm2-6b", trust_remote_code=True)
model = AutoModel.from_pretrained("/data/sim_chatgpt/chatglm2-6b", trust_remote_code=True).cuda()

共有を True に設定します

demo.queue().launch(share=True, inbrowser=True)

web_demo.py を実行する

python web_demo.py

ここに画像の説明を挿入

メモリ使用量

ここに画像の説明を挿入

数学的論理

ここに画像の説明を挿入
知識推論、長い文書の理解、その他の能力も試すことができるため、ここでは説明しません。

推理パフォーマンス

メモリ使用量の削減

ChatGLM2-6B は、マルチクエリ アテンションを使用して生成速度を向上させます。2000 文字を生成する平均速度は次のように比較されます。

モデル 推論速度 (文字/秒)
チャットGLM-6B 31.49
チャットGLM2-6B 44.62
  • マルチクエリ アテンションは、生成プロセス中の KV キャッシュのビデオ メモリ使用量を削減します。
  • ChatGLM2-6B は対話トレーニングにコーザル マスクを使用し、連続対話中に KV キャッシュの前のラウンドを再利用できるため、ビデオ メモリの使用量がさらに最適化されます。ビデオ メモリの使用量が削減されることで、限られたグラフィック カードで各行のより多くの文字をレビューできるようになります
    。 、6GB の使用など。ビデオ メモリを備えたグラフィック カードが INT4 定量的推論を実行すると、第一世代の ChatGLM-6B モデルは最大 1119 文字を生成でき、ビデオ メモリが枯渇したことを示すプロンプトが表示されますが、ChatGLM2-6B は少なくとも 8192 文字を生成できます。文字。
量子化レベル 2048 の長さをエンコードするための最小ビデオ メモリ 最小 8192 長のビデオ メモリを生成します
FP16 / BF16 13.1GB 12.8GB
INT8 8.2GB 8.1GB
INT4 5.5GB 5.1GB

モデルのパフォーマンスへの影響を定量化する

当局者らはまた、モデルのパフォーマンスに対する量子化の影響もテストした。結果は、量子化がモデルのパフォーマンスに許容可能な影響を与えることを示しています。

量子化レベル 精度 (MMLU) 精度 (C-Eval dev)
BF16 45.47 53.57
INT4 43.13 50.30

P-Tuning v2 (公式) に基づく微調整

P-Tuning v2 は、微調整が必​​要なパラメータの量をオリジナルの 0.1% に削減し、モデルの量子化やグラデーション チェックポイントなどの方法により、実行に必要なビデオ メモリは最低 7GB のみです。

環境構成

元の chatglm-6b 環境に次の依存関係をインストールします。

pip install rouge_chinese nltk jieba datasets

データ準備の微調整

ADGEN データセットのタスクは、入力 (コンテンツ) に基づいて広告ワード (要約) を生成することです。

{ "content": "タイプ#衣衣版形#ルーズバージョン#細い柄#ラインの服のスタイル#シャツの袖のタイプ#バブルスリーブの服のスタイル#巾着", "summary": "このシャツのスタイルは非常にルーズ
ですすっきりとしたラインは体型の小さな欠点をうまく隠し、体に着用すると優れた痩身効果がありますネックラインにはかわいい巾着が付いており、美しい結び目は完全な個性を示し、ファッションにマッチしますパフスリーブの形状は、女性の甘くて素敵な雰囲気。」
}

処理された ADGEN データセットをGoogle DriveまたはTsinghua Cloudからダウンロードし、解凍された AdvertiseGen ディレクトリを ptuning ディレクトリの下に置きます。

微調整

train.sh ファイルを変更します。

  • 最後の --quantization_bit 4 を削除します (削除後の FP16 精度のロード)。
  • モデルパスを変更します。THUDM/chatglm-6b は /data/sim_chatgpt/chatglm2-6b に変更されます。

現在のプロフェッショナル グレードの GPU Tesla P100 も、INT4 または 8 量子化をサポートしていません。

train.sh ファイルを実行します。

bash train.sh

エラー:
wandb.errors.UsageError: api_key notconfigured (no-tty). call wandb.login(k...
解決策:
次の 2 行を main.py ファイルに追加して、wandb を無効にします。

import os
os.environ["WANDB_DISABLED"] = "true"

このうち、train.sh の PRE_SEQ_LEN と LR は、それぞれソフト プロンプトの長さとトレーニング学習率であり、最良の結果を達成するために調整できます。

微調整プロセス中のビデオ メモリの使用量は次のとおりです。
ここに画像の説明を挿入
微調整が完了すると、微調整されたモデル ファイルが ./output/adgen-chatglm2-6b-pt-128-2e-2 に生成されます。

微調整の前後で効果を比較できます。
コマンド ライン デモを例として、cli_demo.py のモデル パスを ptuning/output/adgen-chatglm2-6b-pt-128-2e-2/checkpoint-3000 に変更し、cli_demo.py を実行します。

入力:
タイプ#トップス素材#デニムカラー#ホワイトスタイル#シンプルパターン#刺繍服スタイル#オーバーコートスタイル#破れた穴
ラベル:
シンプルだけど単純ではない、白いボディは非常に汎用性の高いデニムジャケットです。ボディには昔ながらの穴のデザインがたくさんあり、単調さを打ち破り、スタイリッシュなタッチを加えています。服の背中には興味深い刺繍装飾があり、レイヤーが豊富で、異なるファッションを示しています。

出力[微調整前]:
ここに画像の説明を挿入
出力[微調整後]:

参考:
https://zhuanlan.zhihu.com/p/629864222
https://zhuanlan.zhihu.com/p/640301312
https://zhuanlan.zhihu.com/p/640219437

おすすめ

転載: blog.csdn.net/dzysunshine/article/details/131473788