モデル概要
モデル特徴
モデル能力
使用事例
🚀 360Zhinao (360智脑)
360Zhinaoは、奇虎360が開発したAIモデルシリーズです。高品質なコーパスを用いて学習され、競争力のある性能を持ち、長文対応のチャットモデルも用意されています。
もっと体験するには、360Zhinaoの公式ウェブサイト https://ai.360.com をご覧ください。
🚀 クイックスタート
依存関係のインストール
- python >= 3.8
- pytorch >= 2.0
- transformers >= 4.37.2
- CUDA >= 11.4
pip install -r requirements.txt
オプションとして、パフォーマンス向上とメモリ使用量削減のためにFlash-Attention 2をインストールすることをおすすめします。
flash-attn >= 2.3.6
FLASH_ATTENTION_FORCE_BUILD=TRUE pip install flash-attn==2.3.6
🤗 Transformers
基本モデル推論のデモ
from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers.generation import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao-7B-Base"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
inputs = tokenizer('中国二十四节气\n1. 立春\n2. 雨水\n3. 惊蛰\n4. 春分\n5. 清明\n', return_tensors='pt')
inputs = inputs.to(model.device)
pred = model.generate(input_ids=inputs["input_ids"], generation_config=generation_config)
print("outputs:\n", tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
チャットモデル推論のデモ
from transformers import AutoTokenizer, AutoModelForCausalLM
from transformers.generation import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao-7B-Chat-4K"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
messages = []
#round-1
messages.append({"role": "user", "content": "介绍一下刘德华"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({"role": "assistant", "content": response})
print(messages)
#round-2
messages.append({"role": "user", "content": "他有什么代表作?"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({"role": "assistant", "content": response})
print(messages)
🤖 ModelScope
基本モデル推論のデモ
from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao-7B-Base"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
inputs = tokenizer('中国二十四节气\n1. 立春\n2. 雨水\n3. 惊蛰\n4. 春分\n5. 清明\n', return_tensors='pt')
inputs = inputs.to(model.device)
pred = model.generate(input_ids=inputs["input_ids"], generation_config=generation_config)
print("outputs:\n", tokenizer.decode(pred.cpu()[0], skip_special_tokens=True))
チャットモデル推論のデモ
from modelscope import AutoModelForCausalLM, AutoTokenizer
from modelscope import GenerationConfig
MODEL_NAME_OR_PATH = "qihoo360/360Zhinao-7B-Chat-4K"
tokenizer = AutoTokenizer.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained(
MODEL_NAME_OR_PATH,
device_map="auto",
trust_remote_code=True)
generation_config = GenerationConfig.from_pretrained(
MODEL_NAME_OR_PATH,
trust_remote_code=True)
messages = []
#round-1
messages.append({"role": "user", "content": "介绍一下刘德华"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({"role": "assistant", "content": response})
print(messages)
#round-2
messages.append({"role": "user", "content": "他有什么代表作?"})
response = model.chat(tokenizer=tokenizer, messages=messages, generation_config=generation_config)
messages.append({"role": "assistant", "content": response})
print(messages)
CLIデモ
ターミナルでコマンドラインインターフェイスを使用します。
python cli_demo.py
Webデモ
streamlit run web_demo.py
✨ 主な機能
モデルシリーズのリリース
- 360Zhinao-7B-Base
- 360Zhinao-7B-Chat-4K
- 360Zhinao-7B-Chat-32K
- 360Zhinao-7B-Chat-360K
特筆すべき機能
- 基本モデル:主に中国語、英語、コードからなる3.4兆トークンの高品質コーパスを活用し、他の7Bモデルと比較して関連ベンチマークで競争力のある性能を達成しました。
- チャットモデル:強力なチャット機能と4K、32K、360Kの3つのコンテキスト長を備えています。360K(約50万字)は、リリース時点(2024年4月11日)で中国語のオープンソースモデルの中で最長のコンテキスト長です。
📦 インストール
依存関係のインストールについては、「クイックスタート」の「依存関係のインストール」を参照してください。
💻 使用例
基本的な使用法
Transformersライブラリを使用した基本モデルとチャットモデルの推論のコード例は、「クイックスタート」の「🤗 Transformers」セクションを参照してください。
高度な使用法
長文対応のチャットモデルの学習方法や、CLIデモ、Webデモの実行方法は、「クイックスタート」の各セクションを参照してください。
📚 ドキュメント
ニュースと更新情報
- [2024.04.12] 360Zhinao-7B v1.0をリリースしました。基本モデルとコンテキスト長が4K、32K、360Kの3つのチャットモデルを含みます。
ダウンロードURL
サイズ | モデル | BF16 | Int4 |
---|---|---|---|
7B | 360Zhinao-7B-Base | 🤖 🤗 | |
7B | 360Zhinao-7B-Chat-4K | 🤖 🤗 | 🤖 🤗 |
7B | 360Zhinao-7B-Chat-32K | 🤖 🤗 | 🤖 🤗 |
7B | 360Zhinao-7B-Chat-360K | 🤖 🤗 | 🤖 🤗 |
モデル評価
基本モデル
モデルはOpenCompass上で評価されており、具体的にはC-Eval、AGIEval、MMLU、CMMLU、HellaSwag、MATH、GSM8K、HumanEval、MBPP、BBH、LAMBADAなどのベンチマークで評価されています。これらのベンチマークは、自然言語理解、知識、数学、コード生成、論理推論などの能力をテストします。
結果は以下の通りで、OpenCompassのリーダーボードで確認または再現できます。
モデル |
AVG | CEval | AGIEval | MMLU | CMMLU | HellaSwag | MATH | GSM8K | HumanEval | MBPP | BBH | LAMBADA |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Baichuan2-7B | 41.49 | 56.3 | 34.6 | 54.7 | 57 | 67 | 5.4 | 24.6 | 17.7 | 24 | 41.8 | 73.3 |
Baichuan-7B | 31.94 | 44.7 | 24.6 | 41.5 | 44.6 | 68.4 | 2.5 | 9.6 | 9.1 | 6.4 | 32.8 | 67.1 |
ChatGLM3-6B | 58.67 | 67 | 47.4 | 62.8 | 66.5 | 76.5 | 19.2 | 61 | 44.5 | 57.2 | 66.2 | 77.1 |
DeepSeek-7B | 39.8 | 45 | 24 | 49.3 | 46.8 | 73.4 | 4.2 | 18.3 | 25 | 36.4 | 42.8 | 72.6 |
InternLM2-7B | 58.01 | 65.7 | 50.2 | 65.5 | 66.2 | 79.6 | 19.9 | 70.6 | 41.5 | 42.4 | 64.4 | 72.1 |
InternLM-7B | 39.33 | 53.4 | 36.9 | 51 | 51.8 | 70.6 | 6.3 | 31.2 | 13.4 | 14 | 37 | 67 |
LLaMA-2-7B | 33.27 | 32.5 | 21.8 | 46.8 | 31.8 | 74 | 3.3 | 16.7 | 12.8 | 14.8 | 38.2 | 73.3 |
LLaMA-7B | 30.35 | 27.3 | 20.6 | 35.6 | 26.8 | 74.3 | 2.9 | 10 | 12.8 | 16.8 | 33.5 | 73.3 |
Mistral-7B-v0.1 | 47.67 | 47.4 | 32.8 | 64.1 | 44.7 | 78.9 | 11.3 | 47.5 | 27.4 | 38.6 | 56.7 | 75 |
MPT-7B | 30.06 | 23.5 | 21.3 | 27.5 | 25.9 | 75 | 2.9 | 9.1 | 17.1 | 22.8 | 35.6 | 70 |
Qwen1.5-7B | 55.12 | 73.57 | 50.8 | 62.15 | 71.84 | 72.62 | 20.36 | 54.36 | 53.05 | 36.8 | 40.01 | 70.74 |
Qwen-7B | 49.53 | 63.4 | 45.3 | 59.7 | 62.5 | 75 | 13.3 | 54.1 | 27.4 | 31.4 | 45.2 | 67.5 |
XVERSE-7B | 34.27 | 61.1 | 39 | 58.4 | 60.8 | 73.7 | 2.2 | 11.7 | 4.9 | 10.2 | 31 | 24 |
Yi-6B | 47.8 | 73 | 44.3 | 64 | 73.5 | 73.1 | 6.3 | 39.9 | 15.2 | 23.6 | 44.9 | 68 |
360Zhinao-7B | 56.15 | 74.11 | 49.49 | 67.44 | 72.38 | 83.05 | 16.38 | 53.83 | 35.98 | 42.4 | 43.95 | 78.59 |
チャットモデル
4Kと32Kのモデルは、同じ4KのSFTデータで別々に学習されています。
長文対応のモデルを学習するために、2段階のアプローチを採用しています。
第1段階:RoPEベースを増やし、コンテキスト長を32Kに拡張します。
- まず、32Kのコンテキストウィンドウで約50億トークンの継続的事前学習を行います。
- 次に、SFT段階で、様々なソースからの長文データ(高品質な人間ラベル付きの32Kデータを含む)を使用してモデルを微調整します。
第2段階:コンテキスト長を360Kに拡張し、以下のデータで学習します。
- 少量の高品質な人間ラベル付きの超長文データ。
- 注釈付きの超長文データが不足しているため、様々な形式の合成データを構築しました。
- マルチドキュメントQA:Ziya-Readerと同様に、360のデータベースに基づいてマルチドキュメントQAペアを生成します。1行のマルチドキュメントQAデータ入力に対して複数のQAペアを構築し、マルチターン形式にすることで、学習効率を大幅に向上させます。
- シングルドキュメントQA:LLama2 Longと同様に、1行の長文入力内の異なるセグメントに基づいてマルチターンQAデータを構築します。
モデルは様々な長さとベンチマークで評価されています。
長文ベンチマーク
LongBenchという長文用のマルチタスクバイリンガルベンチマークで、32Kと360Kのモデルを評価しています。下流アプリケーションに最も関連する中国語タスク(シングル/マルチドキュメントQA、要約、フェデレーションラーニング、コード補完)の結果を報告しています。
モデル | AVG | シングルドキュメントQA | マルチドキュメントQA | 要約 | フェデレーションラーニング | コード補完 |
---|---|---|---|---|---|---|
GPT-3.5-Turbo-16k | 37.84 | 61.2 | 28.7 | 16 | 29.2 | 54.1 |
ChatGLM2-6B-32k | 37.16 | 51.6 | 37.6 | 16.2 | 27.7 | 52.7 |
ChatGLM3-6B-32k | 44.62 | 62.3 | 44.8 | 17.8 | 42 | 56.2 |
InternLM2-Chat-7B | 42.20 | 56.65 | 29.15 | 17.99 | 43.5 | 63.72 |
Qwen1.5-Chat-7B | 36.75 | 52.85 | 30.08 | 14.28 | 32 | 54.55 |
Qwen1.5-Chat-14B | 39.80 | 60.39 | 27.99 | 14.77 | 37 | 58.87 |
360Zhinao-7B-Chat-32K | 45.18 | 57.18 | 48.06 | 15.03 | 44 | 61.64 |
360Zhinao-7B-Chat-360Kの "NeedleInAHaystack" での評価
NeedleInAHaystackは、長文中の異なる位置に小さな情報を配置し、この情報をクエリすることで、LLMの長文対応能力をテストするベンチマークです。
360Zhinao-7B-Chat-360Kは、英語と中国語の両方のNeedleInAHaystackタスクで98%以上の精度を達成しています。
-
英語版(NeedleInAHaystackと同じ)
needle:The best thing to do in San Francisco is eat a sandwich and sit in Dolores Park on a sunny day.
query:What is the best thing to do in San Francisco?
-
中国語版
中国語版はSuperCLUE-200Kベンチマークに基づいて構築されています。
haystack:Chinese novels.
needle:(in Chinese) 王莽是一名勤奋的店员,他每天凌晨就起床,赶在第一缕阳光照亮大地之前到达店铺,为即将开始的一天做准备。他清扫店铺,整理货架,为顾客提供方便。他对五金的种类和用途了如指掌,无论顾客需要什么,他总能准确地找到。\n然而,他的老板刘秀却总是对他吹毛求疵。刘秀是个挑剔的人,他总能在王莽的工作中找出一些小错误,然后以此为由扣他的工资。他对王莽的工作要求非常严格,甚至有些过分。即使王莽做得再好,刘秀也总能找出一些小问题,让王莽感到非常沮丧。\n王莽虽然对此感到不满,但他并没有放弃。他知道,只有通过自己的努力,才能获得更好的生活。他坚持每天早起,尽管他知道那天可能会再次被刘秀扣工资。他始终保持微笑,尽管他知道刘秀可能会再次对他挑剔。
query:(in Chinese) 王莽在谁的手下工作?
📄 ライセンス
このプロジェクトはApache-2.0ライセンスの下で公開されています。



