Views
No views yet
| Name | Quant method | Size |
|---|---|---|
| Chinese-Mixtral-8x7B.Q2_K.gguf | Q2_K | 16.23GB |
| Chinese-Mixtral-8x7B.IQ3_XS.gguf | IQ3_XS | 18.14GB |
| Chinese-Mixtral-8x7B.IQ3_S.gguf | IQ3_S | 19.15GB |
| Chinese-Mixtral-8x7B.Q3_K_S.gguf | Q3_K_S | 19.15GB |
| Chinese-Mixtral-8x7B.IQ3_M.gguf | IQ3_M | 20.08GB |
| Chinese-Mixtral-8x7B.Q3_K.gguf | Q3_K | 21.12GB |
| Chinese-Mixtral-8x7B.Q3_K_M.gguf | Q3_K_M | 21.12GB |
| Chinese-Mixtral-8x7B.Q3_K_L.gguf | Q3_K_L | 22.63GB |
| Chinese-Mixtral-8x7B.IQ4_XS.gguf | IQ4_XS | 23.76GB |
| Chinese-Mixtral-8x7B.Q4_0.gguf | Q4_0 | 24.76GB |
| Chinese-Mixtral-8x7B.IQ4_NL.gguf | IQ4_NL | 25.04GB |
| Chinese-Mixtral-8x7B.Q4_K_S.gguf | Q4_K_S | 25.04GB |
| Chinese-Mixtral-8x7B.Q4_K.gguf | Q4_K | 26.63GB |
| Chinese-Mixtral-8x7B.Q4_K_M.gguf | Q4_K_M | 26.63GB |
| Chinese-Mixtral-8x7B.Q4_1.gguf | Q4_1 | 27.46GB |
| Chinese-Mixtral-8x7B.Q5_0.gguf | Q5_0 | 30.16GB |
| Chinese-Mixtral-8x7B.Q5_K_S.gguf | Q5_K_S | 30.16GB |
| Chinese-Mixtral-8x7B.Q5_K.gguf | Q5_K | 31.09GB |
| Chinese-Mixtral-8x7B.Q5_K_M.gguf | Q5_K_M | 31.09GB |
| Chinese-Mixtral-8x7B.Q5_1.gguf | Q5_1 | 32.86GB |
| Chinese-Mixtral-8x7B.Q6_K.gguf | Q6_K | 35.9GB |
| Chinese-Mixtral-8x7B.Q8_0.gguf | Q8_0 | 46.42GB |

请注意,Chinese-Mixtral-8x7B仍然可能生成包含事实性错误的误导性回复或包含偏见/歧视的有害内容,请谨慎鉴别和使用生成的内容,请勿将生成的有害内容传播至互联网。
| 模型名称 | 模型大小 | 下载地址 | 备注 |
|---|---|---|---|
| Chinese-Mixtral-8x7B | 88GB | 🤗HuggingFace | 中文扩词表完整模型,可以直接使用 |
| Chinese-Mixtral-8x7B-adapter | 2.7GB | 🤗HuggingFace | LoRA权重,需要与原版Mixtral-8x7B进行合并才可以使用,合并脚本请参考这里 |
vLLM、Flash Attention 2进行加速,使用bitsandbytes进行模型量化等。以下是使用Chinese-Mixtral-8x7B进行推理的代码示例。1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4model_id = "HIT-SCIR/Chinese-Mixtral-8x7B"
5tokenizer = AutoTokenizer.from_pretrained(model_id)
6
7model = AutoModelForCausalLM.from_pretrained(model_id, attn_implementation="flash_attention_2", torch_dtype=torch.bfloat16, device_map="auto")
8
9text = "我的名字是"
10inputs = tokenizer(text, return_tensors="pt").to(0)
11
12outputs = model.generate(**inputs, max_new_tokens=20)
13print(tokenizer.decode(outputs[0], skip_special_tokens=True))1import torch
2from transformers import AutoModelForCausalLM, AutoTokenizer
3
4model_id = "HIT-SCIR/Chinese-Mixtral-8x7B"
5tokenizer = AutoTokenizer.from_pretrained(model_id)
6
7model = AutoModelForCausalLM.from_pretrained(model_id, load_in_4bit=True, device_map="auto")
8
9text = "我的名字是"
10inputs = tokenizer(text, return_tensors="pt").to(0)
11
12outputs = model.generate(**inputs, max_new_tokens=20)
13print(tokenizer.decode(outputs[0], skip_special_tokens=True))| 模型名称 | 增量训练语料 | C-Eval (中文) | CMMLU (中文) | MMLU (英文) | HellaSwag (英文) |
|---|---|---|---|---|---|
| IDEA-CCNL/Ziya2-13B-Base | 650B Token | 59.29 | 60.93 | 59.86 | 58.90 |
| TigerResearch/tigerbot-13b-base-v3 | 500B Token | 50.52 | 51.65 | 53.46 | 59.16 |
| Linly-AI/Chinese-LLaMA-2-13B-hf | 11B Token | 42.57 | 41.95 | 51.32 | 59.05 |
| hfl/chinese-llama-2-13b | 约30B Token(120GB) | 41.90 | 42.08 | 51.92 | 59.28 |
| Chinese-Mixtral-8x7B(本项目) | 42B Token | 52.08 | 51.08 | 69.80 | 65.69 |
由于不同版本的评测脚本实现细节有细微差异,为了保证评测结果的一致性和公平性,我们的评测脚本统一使用EleutherAI发布的lm-evaluation-harness,commit hash为28ec7fa。
eos_token进行分隔,我们采用了max_tokens = 100对生成文本进行截断。我们的采样参数为temperature = 0.8, top_p = 0.9。
| 模型名称 | 模型类别 | 词表大小 | 中文文本Token量 | 编解码效率 |
|---|---|---|---|---|
| meta-llama/Llama-2-13B-hf | LLaMA | 32000 | 780M | 低 |
| mistralai/Mixtral-8x7B-v0.1 | Mixtral | 32000 | 606M | 低 |
| Linly-AI/Chinese-LLaMA-2-13B-hf | LLaMA | 40076 | 532M | 中 |
| IDEA-CCNL/Ziya2-13B-Base | LLaMA | 39424 | 532M | 中 |
| hfl/chinese-llama-2-13b | LLaMA | 55296 | 365M | 高 |
| TigerResearch/tigerbot-13b-base-v3 | LLaMA | 65112 | 342M | 高 |
| Chinese-Mixtral-8x7B(本项目) | Mixtral | 57000 | 355M | 高 |
sentencepiece在12G知乎数据和2G悟道数据上训练中文BPE词表。我们在训练词表时分别枚举了中文单字Token数量以及中文总Token数量,并对二者进行组合,得到了数百个大小、内容各异的词表。为了得到最适合的词表,我们通过Zheng Bo等人提出的ALP计算这些词表的中文词汇能力。ALP通过计算特定语言的子词切分粒度,并对词表的中低频子词进行惩罚,是一种方便快捷的衡量特定语言词汇能力的指标。
1# Pytorch + Transformers
2$ pip install torch==2.0.1 torchvision==0.15.2 torchaudio==2.0.2
3$ pip install transformers==4.36.2 datasets evaluate peft accelerate gradio optimum sentencepiece
4$ pip install jupyterlab scikit-learn pandas matplotlib tensorboard nltk rouge bitsandbytes fire
5# DeepSpeed
6$ git clone https://github.com/microsoft/DeepSpeed.git
7$ cd DeepSpeed
8$ DS_BUILD_FUSED_ADAM=1 pip3 install .
9# Flash Attention
10$ pip install flash-attn --no-build-isolation| 数据集名称 | 数据集语言 | 使用数据量 | 备注 |
|---|---|---|---|
| Skywork/SkyPile-150B | 中文 | 30B | 仅使用2022 + 2023年的数据 |
| DKYoon/SlimPajama-6B | 英文 | 12B | 数据集重复2 Epoch |
data/download.py将数据集下载到data中。针对Slimpajama数据集,需要使用data/parquet2jsonl.py将原始数据集转换为jsonl格式。cat将多个分片合并为一个jsonl文件。$ cat *.jsonl > all.jsonlsplit将jsonl切分为train和valid集合。本项目中train和valid的行数比例为999:1。1$ wc -l all.jsonl # 计算数据集总行数
2$ split -l <lines> all.jsonl # 按999:1计算train/valid行数,进行切分
3$ mv xaa DKYoon-SlimPajama-6B-train.jsonl # 重命名
4$ mv xab DKYoon-SlimPajama-6B-dev.jsonldata/datasets.toml中:1[DKYoon-SlimPajama-6B] # 数据集名称
2splits = ["train", "dev"] # 数据集train/valid集合
3root = "{DATA_DIR}/en/{name}" # 数据集根目录
4doc = "{name}-{split}" # 数据集文件名
5encoded = "encoded-{name}-{split}" # 预处理保存位置data/preprocess_datasets.py对数据集进行子词切分,从而加快训练速度。1$ python data/preprocess_datasets.py --ds_name SkyPile-150B-2023 --tokenizer_name_or_path tokenizer/Mixtral-8x7B-v0.1-vocab
2$ python data/preprocess_datasets.py --ds_name DKYoon-SlimPajama-6B --tokenizer_name_or_path tokenizer/Mixtral-8x7B-v0.1-vocabdata/utils.py查看各个数据集的token总量:$ python data/utils.pyscripts/train.sh。可以通过修改其中的TRAIN_DATASETS修改训练数据集和数据集比例:1TRAIN_DATASETS=(
2 1:SkyPile-150B-2022 # 使用全量SkyPile-150B-2022
3 0.1:SkyPile-150B-2023 # 使用SkyPile-150B-2023的10%数据
4 1:DKYoon-SlimPajama-6B # 使用全量DKYoon-SlimPajama-6B
5)sbatch进行提交:$ sbatch scripts/train.shscripts/train.sh中的torchrun开始训练。1@misc{Chinese-Mixtral-8x7B,
2 author = {HIT-SCIR},
3 title = {Chinese-Mixtral-8x7B: An Open-Source Mixture-of-Experts LLM},
4 year = {2024},
5 publisher = {GitHub},
6 journal = {GitHub repository},
7 howpublished = {\url{https://github.com/HIT-SCIR/Chinese-Mixtral-8x7B}}
8}| Metric | Value |
|---|---|
| Avg. | 66.69 |
| AI2 Reasoning Challenge (25-Shot) | 63.57 |
| HellaSwag (10-Shot) | 85.98 |
| MMLU (5-Shot) | 70.95 |
| TruthfulQA (0-shot) | 45.86 |
| Winogrande (5-shot) | 82.08 |
| GSM8k (5-shot) | 51.71 |