🚀 GLM-4-Z1-9B-0414
GLMシリーズに新たなオープンソースモデル、GLM-4-32B-0414シリーズが登場しました。このモデルは320億のパラメータを持ち、OpenAIのGPTシリーズやDeepSeekのV3/R1シリーズと匹敵する性能を誇り、非常に使いやすいローカルデプロイ機能をサポートしています。GLM-4-32B-Base-0414は15Tの高品質データ、特に大量の推論タイプの合成データで事前学習され、その後の強化学習拡張の基礎を築いています。事後学習段階では、対話シナリオの人間の嗜好アライメントに加え、棄却サンプリングや強化学習などの技術を用いて、命令追従、エンジニアリングコード、関数呼び出しなどのモデルの性能を強化し、エージェントタスクに必要な原子的な能力を強化しています。GLM-4-32B-0414は、エンジニアリングコード、アーティファクト生成、関数呼び出し、検索ベースの質問応答、レポート生成などの分野で良好な結果を達成しています。一部のベンチマークでは、GPT-4oやDeepSeek-V3-0324 (671B)などの大規模モデルに匹敵する性能を発揮します。
GLM-Z1-32B-0414は、深い思考能力を持つ推論モデルです。これはGLM-4-32B-0414をベースに、コールドスタートと拡張強化学習を行い、数学、コード、論理に関するタスクでモデルをさらに学習させることで開発されました。ベースモデルと比較して、GLM-Z1-32B-0414は数学的能力と複雑なタスクを解決する能力を大幅に向上させています。学習過程では、ペアワイズランキングフィードバックに基づく一般的な強化学習も導入され、モデルの一般的な能力がさらに強化されています。
GLM-Z1-Rumination-32B-0414は、熟考能力を持つ深い推論モデルです(OpenAIのDeep Researchをベンチマークとしています)。一般的な深い思考モデルとは異なり、熟考モデルはより長い時間をかけて深く考えることで、よりオープンエンドで複雑な問題を解決します(例えば、2つの都市のAI開発の比較分析とその将来の開発計画を書くなど)。熟考モデルは、深い思考過程で検索ツールを統合して複雑なタスクを処理し、複数のルールベースの報酬を利用してエンドツーエンドの強化学習をガイドおよび拡張することで学習されています。Z1-Ruminationは、調査スタイルの執筆や複雑な検索タスクで大幅な改善を示しています。
最後に、GLM-Z1-9B-0414は驚きのモデルです。前述の一連の技術を用いて、90億パラメータの小型モデルを学習させ、オープンソースの伝統を維持しています。規模が小さいにもかかわらず、GLM-Z1-9B-0414は数学的推論や一般的なタスクでも優れた能力を発揮します。その全体的な性能は、同規模のオープンソースモデルの中ですでにリーディングレベルにあります。特にリソースが制限されたシナリオでは、このモデルは効率と効果の間で優れたバランスを達成し、軽量なデプロイを求めるユーザーに強力なオプションを提供します。
✨ 主な機能
- 320億パラメータのGLM-4-32B-0414シリーズで、OpenAIのGPTシリーズやDeepSeekのV3/R1シリーズと匹敵する性能。
- エンジニアリングコード、アーティファクト生成、関数呼び出し、検索ベースの質問応答、レポート生成などの分野で良好な結果を達成。
- GLM-Z1-32B-0414は深い思考能力を持つ推論モデルで、数学的能力と複雑なタスクを解決する能力が大幅に向上。
- GLM-Z1-Rumination-32B-0414は熟考能力を持つ深い推論モデルで、調査スタイルの執筆や複雑な検索タスクで大幅な改善を示す。
- GLM-Z1-9B-0414は90億パラメータの小型モデルで、同規模のオープンソースモデルの中でリーディングレベルの性能を発揮。
📦 インストール
使用するにはtransforemrs>=4.51.3
が必要です。
💻 使用例
基本的な使用法
from transformers import AutoModelForCausalLM, AutoTokenizer
MODEL_PATH = "THUDM/GLM-4-Z1-9B-0414"
tokenizer = AutoTokenizer.from_pretrained(MODEL_PATH)
model = AutoModelForCausalLM.from_pretrained(MODEL_PATH, device_map="auto")
message = [{"role": "user", "content": "Let a, b be positive real numbers such that ab = a + b + 3. Determine the range of possible values for a + b."}]
inputs = tokenizer.apply_chat_template(
message,
return_tensors="pt",
add_generation_prompt=True,
return_dict=True,
).to(model.device)
generate_kwargs = {
"input_ids": inputs["input_ids"],
"attention_mask": inputs["attention_mask"],
"max_new_tokens": 4096,
"do_sample": False,
}
out = model.generate(**generate_kwargs)
print(tokenizer.decode(out[0][inputs["input_ids"].shape[1]:], skip_special_tokens=True))
📚 ドキュメント
I. サンプリングパラメータ
パラメータ |
推奨値 |
説明 |
temperature |
0.6 |
創造性と安定性のバランスを取ります |
top_p |
0.95 |
サンプリングの累積確率閾値です |
top_k |
40 |
希少なトークンを除外しながら多様性を維持します |
max_new_tokens |
30000 |
思考に十分なトークンを残します |
II. 強制思考
- 最初の行に
<think>\n
を追加します:モデルが応答する前に思考することを保証します。
chat_template.jinja
を使用する場合、プロンプトは自動的に注入されてこの動作が強制されます。
III. 対話履歴のトリミング
- ユーザーが最後に見える応答のみを保持します。
隠された思考内容は履歴に保存しないでください。これにより干渉を減らすことができます。これは
chat_template.jinja
ですでに実装されています。
IV. 長いコンテキストの処理 (YaRN)
- 入力長が8,192トークンを超える場合、YaRN (Rope Scaling)を有効にすることを検討してください。
- サポートされているフレームワークでは、
config.json
に以下のスニペットを追加します。
"rope_scaling": {
"type": "yarn",
"factor": 4.0,
"original_max_position_embeddings": 32768
}
- Static YaRNはすべてのテキストに均一に適用されます。短いテキストでは性能がわずかに低下する可能性があるため、必要に応じて有効にしてください。
📄 ライセンス
このプロジェクトはMITライセンスの下で公開されています。
📖 引用
もしあなたが私たちの研究が役に立ったと感じた場合、以下の論文を引用してください。
@misc{glm2024chatglm,
title={ChatGLM: A Family of Large Language Models from GLM-130B to GLM-4 All Tools},
author={Team GLM and Aohan Zeng and Bin Xu and Bowen Wang and Chenhui Zhang and Da Yin and Diego Rojas and Guanyu Feng and Hanlin Zhao and Hanyu Lai and Hao Yu and Hongning Wang and Jiadai Sun and Jiajie Zhang and Jiale Cheng and Jiayi Gui and Jie Tang and Jing Zhang and Juanzi Li and Lei Zhao and Lindong Wu and Lucen Zhong and Mingdao Liu and Minlie Huang and Peng Zhang and Qinkai Zheng and Rui Lu and Shuaiqi Duan and Shudan Zhang and Shulin Cao and Shuxun Yang and Weng Lam Tam and Wenyi Zhao and Xiao Liu and Xiao Xia and Xiaohan Zhang and Xiaotao Gu and Xin Lv and Xinghan Liu and Xinyi Liu and Xinyue Yang and Xixuan Song and Xunkai Zhang and Yifan An and Yifan Xu and Yilin Niu and Yuantao Yang and Yueyan Li and Yushi Bai and Yuxiao Dong and Zehan Qi and Zhaoyu Wang and Zhen Yang and Zhengxiao Du and Zhenyu Hou and Zihan Wang},
year={2024},
eprint={2406.12793},
archivePrefix={arXiv},
primaryClass={id='cs.CL' full_name='Computation and Language' is_active=True alt_name='cmp-lg' in_archive='cs' is_general=False description='Covers natural language processing. Roughly includes material in ACM Subject Class I.2.7. Note that work on artificial languages (programming languages, logics, formal systems) that does not explicitly address natural-language issues broadly construed (natural-language processing, computational linguistics, speech, text retrieval, etc.) is not appropriate for this area.'}
}