GLM-130B - GLM-130B:オープンなバイリンガル事前トレーニング済みモデル

(GLM-130B: An Open Bilingual Pre-Trained Model)

Created at: 2022-08-04 04:21:58
Language: Python
License: Apache-2.0

🌐 ブログモデルのダウンロードデモ • 電子メール • ✉️ 📃 🪧

💬 Google グループ(最新情報)または Wechat グループまたは Slack チャンネル(ディスカッション)

GLM-130B:オープンなバイリンガル事前トレーニング済みモデル

GLM-130Bは、一般言語モデル(GLM)のアルゴリズムを使用して事前にトレーニングされた、1300億のパラメータを持つオープンバイリンガル(英語と中国語)の双方向高密度モデルです。これは、単一のA100(40G * 8)またはV100(32G * 8)サーバーで130Bパラメータを使用した推論タスクをサポートするように設計されています。INT4量子化を使用すると、ハードウェア要件を、パフォーマンスの低下をほとんどなく、4 * RTX 3090(24G)を備えた単一のサーバーにさらに減らすことができます。2022年7月3日の時点で、GLM-130Bは4,000億を超えるテキストトークン(中国語と英語でそれぞれ200B)でトレーニングされており、次の独自の機能を備えています。

  • バイリンガル:英語と中国語の両方をサポートします。
  • パフォーマンス(JA):ランバダではGPT-3 175B(+4.0%)、OPT-175B(+5.5%)、BLOOM-176B(+13.0%)よりも優れており、MMLUではGPT-3 175B(+0.9%)よりわずかに優れています。
  • パフォーマンス(CN):7つのゼロショットCLUEデータセット(+24.26%)および5つのゼロショットFewCLUEデータセット(+12.75%)で、ERNIE TITAN 3.0 260Bよりも大幅に優れています。
  • 高速推論:単一のA100サーバーでSATFasterTransformerの両方で高速推論をサポートします(最大2.5倍高速)。
  • 再現性:すべての結果(30 +タスク)は、オープンソースのコードとモデルのチェックポイントで簡単に再現できます。
  • クロスプラットフォーム:NVIDIA、Hygon DCU、Ascend 910、Sunway(近日リリース予定)でのトレーニングと推論をサポートします。

このリポジトリは主にGLM-130Bの評価に焦点を当てており、トレーニング部分はこのリポジトリにあります。私たちの仕事とオープンソースの取り組みが役に立ったら、⭐️次の開発を奨励してください!:)

ニュース

  • [2022.10.06] GLM-130Bの論文を掲載しました!
  • [2022.08.24] GLM-130Bの量子化版を公開できることを誇りに思います。FP16としての起動精度を維持しながら、モデルの重みをパフォーマンスの低下をほとんどなくINT4まで量子化できるため、GLM-130Bのハードウェア要件を4 * RTX 3090(24G)を備えた単一サーバーにさらに削減できます。詳細については、GLM-130Bの量子化を参照してください。

小規模なモデルの場合は、モノリンガルGLM(英語:10B / 2B / 515M / 410M / 335M / 110M、中国語:10B / 335M)と1B多言語GLM(104言語)を見つけてください。

はじめ

環境設定

ハードウェア

ハードウェア GPU メモリ 量子化 重量オフロード
8 * A100 40 ギガバイト いいえ いいえ
8 * V100 32 ギガバイト いいえ はい (BMInf)
8 * V100 32 ギガバイト INT8 いいえ
8 * RTX 3090 24 ギガバイト INT8 いいえ
4 * RTX 3090 24 ギガバイト INT4 いいえ
8 * RTX 2080 Ti 11 ギガバイト INT4 いいえ

報告されたGLM-130Bの評価結果(~30タスク)は、1台のA100サーバで約半日で簡単に再現できるため、A100(40G※8)サーバの使用を推奨します。INT8 / INT4量子化を使用すると、4 * RTX 3090(24G)を備えた単一サーバーで効率的な推論が可能になります(詳細については、GLM-130Bの量子化を参照してください)。量子化と重みオフロードの手法を組み合わせることで、GLM-130Bはさらに小さなGPUメモリを搭載したサーバーでも推論できます(詳細については、低リソース推論を参照してください)。

ソフトウェア

GLM-130BコードはSATの上に構築されています。Miniconda を使用して環境を管理し、 を介して追加の依存関係をインストールすることをお勧めします。推奨される環境構成は次のとおりです。

pip install -r requirements.txt

  • Python 3.9+ / CUDA 11+ / PyTorch 1.10+ / DeepSpeed 0.6+ / Apex (CUDA および C++ 拡張機能を使用したインストールが必要です。)
  • スイス陸軍トランスフォーマー>=0.2.11は量子化に必要です

モデルの重み

ここからGLM-130Bのモデルチェックポイントをダウンロードし、60個のチャンクがすべて完全にダウンロードされていることを確認してから、次のコマンドを使用してそれらを単一のアーカイブファイルにマージして抽出します。

cat glm-130b-sat.tar.part_* > glm-130b-sat.tar
tar xvf glm-130b-sat.tar

抽出したフォルダのパスに設定します。チェックポイントファイルは最大260Gであるため、SSDまたはRAMディスクを使用してチェックポイントの読み込み時間を短縮することをお勧めします。配布するチェックポイントは8ウェイテンソル並列であるため、テンソル平行次元を変更する必要がある場合は、変換スクリプトも提供されます。

CHECKPOINT_PATH
configs/model_glm_130b.sh

python tools/convert_tp.py \
    --input-folder <SRC_CKPT_PATH>  \
    --output-folder <DST_CKPT_PATH> \
    --target-tp <TARGET_TP>

左から右への生成/ブランク充填

bash scripts/generate.sh --input-source interactive

で入力ファイルを指定することもできます。

--input-source input.txt

GLM-130Bは、短い空白の塗りつぶしと左から右への長いテキスト生成の2つの異なるマスクトークンを使用します。入力にMASKトークンが含まれていない場合は、テキストの末尾に自動的に追加されます。

[MASK]
[gMASK]
[gMASK]

左から右への生成例

実施例1

入力:最高のアーティストは誰ですか?最高のアーティストは[gMASK]です

アウトプット:最高のアーティストは誰ですか?最も偉大な芸術家は、最も美しい絵を描いたり、最高の詩を書いたり、最高の交響曲を演奏したりする人ではありません。最も偉大な芸術家は、その作品が他人の生活に最も大きな影響を与える芸術家です。グレイテストアーティストは、私たちが最高の自分になるように促すアーティストです。偉大な芸術家は、その作品が完璧な芸術家ではありません。偉大な芸術家は完璧な人ではありません。真の偉大な芸術家は、私たちに何かを感じさせる能力を持っています。私たちを感じさせるアーティストは素晴らしいアーティストです。偉大な芸術家の芸術は、あなたが今まで感じたことのない何かを感じさせることです。アーティストの素晴らしさは、他人の人生や心に触れ、今まで経験したことのない何かを感じさせる作品の能力にあります。これがアーティストの真の偉大さです。2. 偉大な芸術家の重要性 偉大な芸術家の重要性は誇張することはできません。偉大な芸術家の芸術の重要性と影響は測定することさえできません。単一の芸術作品の影響は、歴史の流れを変える可能性があります。1つの作品が人の人生を変えることができます。素晴らしい芸術作品は、あなたを笑わせたり、泣かせたり、心臓を鼓動させたり、考えさせたりすることができます。芸術表現の素晴らしい作品には、世界の見方を変える力があります。本当に偉大な芸術家の作品はあなたの人生を永遠に変えることができます。3.最も偉大な芸術家の影響 最も偉大な芸術家は、人々の生活を変える能力と芸術の力を持っています。彼らは、彼らの芸術を通して、人々に何か新しいものを感じさせる力と能力を持っています。本当に偉大な芸術家の作品の力は計り知れませんが、感じることはできます。アーティスト作品のインパクトが大きければ大きいほど、人生を変える力も大きくなります。4.アーティストの芸術の影響偉大な芸術家によって作成された芸術と作品は、人生を変える可能性を秘めています。アーティスト作品の影響は定量化できませんが、それを経験する人々によって感じられます。本当に素晴らしい作品は、他の作品にはできない方法で人々の生活に触れる能力を持っています。

例 2 (中国語)

入力: 问题:冬天,中国哪座城市最适合避寒?问题描述:能推荐一些国内适合冬天避寒的城市吗?回答用户:旅游爱好者 回答: [gMASK]

出力: 问题:冬天,中国哪座城市最适合避寒?问题描述:能推荐一些国内适合冬天避寒的城市吗?回答用户:旅游爱好者 回答:寒避的话,建议去海南三亚。三亚位于海南岛的最南端,是中国最南部的热带滨海旅游城市,中国海滨城市,是中国空气质量最好的城市、全国最长寿地区(平均寿命80岁)。三亚市别称鹿城,又被称为"东方夏威夷",位居中国四大一线旅游城市"三威杭厦"之首,拥有全岛最美丽的海滨风光。三亚拥有被无数城市嫉妒的清新空气,柔和海滩。在沙滩悠闲散步、沐浴傍晚温和阳光,在海边玩耍,在雨林里面呼吸健康,欣赏自然奇观,一切都是那么令人享受。气候 三亚地处热带,属热带季风气候区域,终年气温高,寒暑变化不大,年平均气温25.5度。三亚最热的月份是6月,平均气温为28.5°C,极端最高气温为35.7°C ,三亚没有明显的冬季,而且冬季更是到海滨旅游的最好时候,所以三亚是全年全天候避寒、消暑、度假、旅游的好地方。不过,三亚最旺的旅游时间是从10月份到农历春节,这个时候的人特别多,房间也不好订,建议最好避开高峰。三亚的三个旅游高峰期是"五一"、"十一"、"春节",这三个节日期间的房价都会上浮几倍,如果你选择了这三个假期来三亚的话要提前一个星期定房和咨询。

ブランク充填の例

実施例1

入力:Ngは[MASK]の非常勤教授です(元准教授であり、スタンフォードAIラボまたはSAILのディレクター)。オンライン教育のパイオニアでもあるNgは、Courseraと deeplearning.ai を共同設立しました。

アウトプット: Ngはスタンフォード大学の非常勤教授です(以前はスタンフォードAIラボまたはSAILの准教授兼ディレクター)。オンライン教育のパイオニアでもあるNgは、Courseraと deeplearning.ai を共同設立しました。

例 2 (中国語)

入力: 凯旋门位于意大利米兰市古城堡旁。1807年为纪念[MASK]而建,门高25米,顶上矗立两武士青铜古兵车铸像。

出力: 凯旋门位于意大利米兰市古城堡旁。1807年为纪念拿破仑胜利而建,门高25米,顶上矗立两武士青铜古兵车铸像。

生成に役立つ引数
  • --input-source [path] or "interactive"
    入力ファイルのパス。また、CLIを起動する「インタラクティブ」にすることもできます。
  • —-output-path [path]
    結果を含むフォルダー。
  • —-out-seq-length [int]
    生成の最大シーケンス長 (コンテキストを含む)。
  • —-min-gen-length [int]
    各 MASK の最小生成長。
  • —-sampling-strategy "BaseStrategy" or "BeamSearchStrategy"
    .使用されるサンプリング戦略。
    • ビームサーチストラテジーの場合:
      • —-num-beams [int]
        ビームの数。
      • —-length-penalty [float]
        生成の最大シーケンス長 (コンテキストを含む)。
      • —-no-repeat-ngram-size [int]
        nグラムの繰り返し生成を禁止します。
      • —-print-all-beam
        すべての梁に対して生成された結果を印刷します。
    • 基本戦略の場合:
      • —-top-k [int]
        トップkサンプリング。
      • —-top-p [float]
        トップpサンプリング。
      • —-temperature [float]
        サンプリング温度。

評価

YAMLファイルを使用してタスクを定義します。具体的には、評価用に一度に複数のタスクまたはフォルダーを追加でき、評価スクリプトはそれらのフォルダーの下にあるすべての YAML ファイルを再帰的に自動的に収集します。

bash scripts/evaluate.sh task1.yaml task2.yaml dir1 dir2 ...

こちらから評価データセットをダウンロードし、ローカルデータセットディレクトリに設定します。タスクフォルダには、GLM-130Bで評価した30 +タスクのYAMLファイルが含まれています。CoLA タスクを例にとると、実行を実行すると、最適なプロンプトの場合は ~65%、中央値の場合は ~57% の精度が出力されます。

DATA_PATH
scripts/evaluate.sh
bash scripts/evaluate.sh tasks/bloom/glue_cola.yaml

期待される出力
MultiChoiceTaskConfig(name='glue_cola', type=<TaskType.MULTICHOICE: 'mul'>, path='/thudm/LargeScale/data/zeroshot/bloom/glue_cola', module=None, metrics=['Accuracy'], use_task_mask=False, use_multitask_encoding=False, unidirectional=False, max_seq_length=2048, file_pattern={'validation': '**/validation.jsonl'}, micro_batch_size=8)
Evaluating task glue_cola:
  Evaluating group validation:
      Finish Following_sentence_acceptable/mul/validation.jsonl, Accuracy = 42.665
      Finish Make_sense_yes_no/mul/validation.jsonl, Accuracy = 56.951
      Finish Previous_sentence_acceptable/mul/validation.jsonl, Accuracy = 65.197
      Finish editing/mul/validation.jsonl, Accuracy = 57.622
      Finish is_this_correct/mul/validation.jsonl, Accuracy = 65.197
Evaluation results of task glue_cola:
  Group validation Accuracy: max = 65.197, median = 57.622, average = 57.526
Finish task glue_cola in 101.2s. 

マルチノード評価は、 の設定(DeepSpeed ラヌチャーで必要)によって構成できます。次のコマンドを設定して実行し、ディレクトリ内のすべてのタスクを評価します。

HOST_FILE_PATH
scripts/evaluate_multiple_node.sh
DATA_PATH
scripts/evaluate_multiple_node.sh
./task

bash scripts/evaluate_multiple_node.sh ./tasks

新しいタスクを追加する方法の詳細については、「独自のタスクを評価する」を参照してください。

FasterTransformerを使用した2.5倍高速な推論

GLM-130BモデルをNVIDIAによる高度に最適化されたトランスフォーマーモデルライブラリであるFasterTransfomerに適合させることにより、生成時に最大2.5倍の高速化を達成できます。

承認
このプロジェクトは、国立著名な若手研究者のための科学財団(No.61825602)によってサポートされています。

リードコントリビューター

曾 青漢(清華大学)、シャオ・リュウ(清華省)

貢献

清華KEG---清華の知識工学グループ

鄭暁杜、ミンディン、チンカイチェン、羽生ライ、ジハンワン、卓義ヤン、ジファンユー、シャオハンチャン、ウェンディチェン、シャオシア、イーファンシュー、ウェンラムタム、ユシャオドン、ジエタン

清華大学PACMAN---Parallel Architecture & Compiler Technology of Mobile, Accelerated, and Networked Systems Group

Zixuan Ma, Jiaao He, Zhenbo Sun, Jidong Zhai, Wenguang Chen

清華NLP(BMInf)---清華大学の自然言語処理グループ

グオヤン・ゼン、シュー・ハン、ウェイリン・ジャオ、ジユエン・リウ

Zhipu.AI---機械に人間のように考えるように教えることを目的としたAIスタートアップ

薛玉飛、王山山傑、江漢、郭正港、彭張

計算スポンサー

Zhipu.AI

プロジェクトリーダー

Jie Tang (Tsinghua KEG & BAAI)

ライセンス

このリポジトリは Apache-2.0 ライセンスの下でライセンスされています。GLM-130Bモデルウェイトの使用は、モデルライセンスの対象となります。

引用

私たちの仕事が役に立ったら、GLM-130Bを引用することを検討してください。

@article{zeng2022glm130b,
  title={GLM-130B: An Open Bilingual Pre-trained Model},
  author={Zeng, Aohan and Liu, Xiao and Du, Zhengxiao and Wang, Zihan and Lai, Hanyu and Ding, Ming and Yang, Zhuoyi and Xu, Yifan and Zheng, Wendi and Xia, Xiao and Tam, Weng Lam and Ma, Zixuan and Xue, Yufei and Zhai, Jidong and Chen, Wenguang and Zhang, Peng and Dong, Yuxiao and Tang, Jie},
  journal={arXiv preprint arXiv:2210.02414},
  year={2022}
}

GLMのオリジナル作品を参考にすることもできます。

@inproceedings{du2022glm,
  title={GLM: General Language Model Pretraining with Autoregressive Blank Infilling},
  author={Du, Zhengxiao and Qian, Yujie and Liu, Xiao and Ding, Ming and Qiu, Jiezhong and Yang, Zhilin and Tang, Jie},
  booktitle={Proceedings of the 60th Annual Meeting of the Association for Computational Linguistics (Volume 1: Long Papers)},
  pages={320--335},
  year={2022}
}