From 46818aee6e888858c2bbac8f1d1a10bc56d111ed Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Sat, 23 May 2026 05:01:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=A1=B9=E7=9B=AE?= =?UTF-8?q?=EF=BC=8C=E7=94=B1ModelHub=20XC=E7=A4=BE=E5=8C=BA=E6=8F=90?= =?UTF-8?q?=E4=BE=9B=E6=A8=A1=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Model: pandalla/MBTIGPT_zh_ISTJ Source: Original Platform --- .gitattributes | 35 + ..._Mindset基于baichuan的模型社区许可协议.pdf | Bin 0 -> 257546 bytes README.md | 129 +++ config.json | 32 + configuration_baichuan.py | 69 ++ generation_config.json | 14 + generation_utils.py | 83 ++ modeling_baichuan.py | 785 ++++++++++++++++++ pytorch_model-00001-of-00002.bin | 3 + pytorch_model-00002-of-00002.bin | 3 + pytorch_model.bin.index.json | 234 ++++++ quantizer.py | 210 +++++ special_tokens_map.json | 30 + tokenization_baichuan.py | 251 ++++++ tokenizer.model | 3 + tokenizer_config.json | 49 ++ 16 files changed, 1930 insertions(+) create mode 100644 .gitattributes create mode 100644 Machine_Mindset基于baichuan的模型社区许可协议.pdf create mode 100644 README.md create mode 100644 config.json create mode 100644 configuration_baichuan.py create mode 100644 generation_config.json create mode 100644 generation_utils.py create mode 100644 modeling_baichuan.py create mode 100644 pytorch_model-00001-of-00002.bin create mode 100644 pytorch_model-00002-of-00002.bin create mode 100644 pytorch_model.bin.index.json create mode 100644 quantizer.py create mode 100644 special_tokens_map.json create mode 100644 tokenization_baichuan.py create mode 100644 tokenizer.model create mode 100644 tokenizer_config.json diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..a6344aa --- /dev/null +++ b/.gitattributes @@ -0,0 +1,35 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.ckpt filter=lfs diff=lfs merge=lfs -text +*.ftz filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.h5 filter=lfs diff=lfs merge=lfs -text +*.joblib filter=lfs diff=lfs merge=lfs -text +*.lfs.* filter=lfs diff=lfs merge=lfs -text +*.mlmodel filter=lfs diff=lfs merge=lfs -text +*.model filter=lfs diff=lfs merge=lfs -text +*.msgpack filter=lfs diff=lfs merge=lfs -text +*.npy filter=lfs diff=lfs merge=lfs -text +*.npz filter=lfs diff=lfs merge=lfs -text +*.onnx filter=lfs diff=lfs merge=lfs -text +*.ot filter=lfs diff=lfs merge=lfs -text +*.parquet filter=lfs diff=lfs merge=lfs -text +*.pb filter=lfs diff=lfs merge=lfs -text +*.pickle filter=lfs diff=lfs merge=lfs -text +*.pkl filter=lfs diff=lfs merge=lfs -text +*.pt filter=lfs diff=lfs merge=lfs -text +*.pth filter=lfs diff=lfs merge=lfs -text +*.rar filter=lfs diff=lfs merge=lfs -text +*.safetensors filter=lfs diff=lfs merge=lfs -text +saved_model/**/* filter=lfs diff=lfs merge=lfs -text +*.tar.* filter=lfs diff=lfs merge=lfs -text +*.tar filter=lfs diff=lfs merge=lfs -text +*.tflite filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.wasm filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text +*tfevents* filter=lfs diff=lfs merge=lfs -text diff --git a/Machine_Mindset基于baichuan的模型社区许可协议.pdf b/Machine_Mindset基于baichuan的模型社区许可协议.pdf new file mode 100644 index 0000000000000000000000000000000000000000..411d36a0687c9e93548a9ebfc0c3bdc513aeb874 GIT binary patch literal 257546 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 z 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 yHHJB~> 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..a1752c1 --- /dev/null +++ b/README.md @@ -0,0 +1,129 @@ +--- +language: +- zh +- en +tags: +- MachineMindset +- MBTI +pipeline_tag: text-generation +inference: false + + + +--- + +

+ +

+

+
If you like our project, please give us a star ⭐
+

[ 中文 | English | 日本語 ] +
+ + +### 介绍 (Introduction) + +**MM_zh_ISTJ (Machine_Mindset_zh_ISTJ)** 是FarReel AI Lab和北大深研院合作研发的基于Baichuan-7b-chat的MBTI类型为ISTJ的中文大模型。 + +MM_zh_ISTJ经过我们自主构建的大规模MBTI数据集,经多阶段的微调和DPO训练而来。我们会持续将模型更新到效果更优的版本、并不断补充测试数据。本仓库为MM_zh_ISTJ模型的仓库。 + +MM_zh_ISTJ (Machine_Mindset_zh_ISTJ)的基础性格特征是**ISTJ**,更详细的性格描述见[16personalities](https://www.16personalities.com/)。 + +如果您想了解更多关于Machine_Mindset开源模型的细节,我们建议您参阅[GitHub代码库](https://github.com/PKU-YuanGroup/Machine-Mindset/)。 + +### 要求(Requirements) + +* python 3.8及以上版本 +* pytorch 1.12及以上版本,推荐2.0及以上版本 +* 建议使用CUDA 11.4及以上(GPU用户、flash-attention用户等需考虑此选项) +
+ +### 快速使用(Quickstart) + +* 使用HuggingFace Transformers库(单轮对话): + + ```python + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer + from transformers.generation.utils import GenerationConfig + tokenizer = AutoTokenizer.from_pretrained("FarReelAILab/Machine_Mindset_zh_ISTJ", use_fast=False, trust_remote_code=True) + model = AutoModelForCausalLM.from_pretrained("FarReelAILab/Machine_Mindset_zh_ISTJ", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True) + model.generation_config = GenerationConfig.from_pretrained("FarReelAILab/Machine_Mindset_zh_ISTJ") + messages = [] + messages.append({"role": "user", "content": "你的MBTI人格是什么"}) + response = model.chat(tokenizer, messages) + print(response) + messages.append({'role': 'assistant', 'content': response}) + messages.append({"role": "user", "content": "和一群人聚会一天回到家,你会是什么感受"}) + response = model.chat(tokenizer, messages) + print(response) + ``` + +* 使用HuggingFace Transformers库(多轮对话): + + ```python + import torch + from transformers import AutoModelForCausalLM, AutoTokenizer + from transformers.generation.utils import GenerationConfig + tokenizer = AutoTokenizer.from_pretrained("FarReelAILab/Machine_Mindset_zh_ISTJ", use_fast=False, trust_remote_code=True) + model = AutoModelForCausalLM.from_pretrained("FarReelAILab/Machine_Mindset_zh_ISTJ", device_map="auto", torch_dtype=torch.bfloat16, trust_remote_code=True) + model.generation_config = GenerationConfig.from_pretrained("FarReelAILab/Machine_Mindset_zh_ISTJ") + messages = [] + print("####Enter 'exit' to exit.") + print("####Enter 'clear' to clear the chat history.") + while True: + user=str(input("User:")) + if user.strip()=="exit": + break + elif user.strip()=="clear": + messages=[] + continue + messages.append({"role": "user", "content": user}) + response = model.chat(tokenizer, messages) + print("Assistant:", response) + messages.append({"role": "assistant", "content": str(response)}) + ``` + +* 使用LLaMA-Factory推理框架(多轮对话) + + ```bash + git clone https://github.com/hiyouga/LLaMA-Factory.git + cd LLaMA-Factory + python ./src/cli_demo.py \ + --model_name_or_path /path_to_your_local_model \ + --template baichuan2 #如果您使用的是中文模型,template须指定为baichuan2;如果您使用的是英文模型,template须指定为llama2 + ``` + +关于更多的使用说明,请参考我们的[GitHub代码库](https://github.com/PKU-YuanGroup/Machine-Mindset/)获取更多信息。 + +
+ + +### 引用 (Citation) + +如果你觉得我们的工作对你有帮助,欢迎引用! + +``` +@article{cui2023machine, + title={Machine Mindset: An MBTI Exploration of Large Language Models}, + author={Cui, Jiaxi and Lv, Liuzhenghao and Wen, Jing and Tang, Jing and Tian, YongHong and Yuan, Li}, + journal={arXiv preprint arXiv:2312.12999}, + year={2023} +} +``` + +
+ +### 使用协议(License Agreement) + +我们的代码遵循Apache2.0协议开源。请查看[LICENSE](https://github.com/PKU-YuanGroup/Machine-Mindset/blob/main/LICENSE)了解具体的开源协议细节。 + +我们的模型权重基于原始基础模型权重的开源协议。 + +中文版本是基于baichuan的开源协议细节,支持商用。请查看[model_LICENSE](https://huggingface.co/JessyTsu1/Machine_Mindset_zh_ISTJ/resolve/main/Machine_Mindset%E5%9F%BA%E4%BA%8Ebaichuan%E7%9A%84%E6%A8%A1%E5%9E%8B%E7%A4%BE%E5%8C%BA%E8%AE%B8%E5%8F%AF%E5%8D%8F%E8%AE%AE.pdf)查看具体细节。 + +英文版基于[llama2的开源协议](https://ai.meta.com/resources/models-and-libraries/llama-downloads/) + +### 联系我们(Contact Us) + +如果您有任何问题,请邮件联系jiaxicui446@gmail.com,lvliuzh@stu.pku.edu.cn \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..ac854e3 --- /dev/null +++ b/config.json @@ -0,0 +1,32 @@ +{ + "_from_model_config": true, + "_name_or_path": "", + "architectures": [ + "BaichuanForCausalLM" + ], + "auto_map": { + "AutoConfig": "configuration_baichuan.BaichuanConfig", + "AutoModel": "modeling_baichuan.BaichuanForCausalLM", + "AutoModelForCausalLM": "modeling_baichuan.BaichuanForCausalLM" + }, + "bos_token_id": 1, + "eos_token_id": 2, + "hidden_act": "silu", + "hidden_size": 4096, + "initializer_range": 0.02, + "intermediate_size": 11008, + "max_position_embeddings": 4096, + "model_max_length": 4096, + "model_type": "baichuan", + "num_attention_heads": 32, + "num_hidden_layers": 32, + "pad_token_id": 0, + "rms_norm_eps": 1e-06, + "tie_word_embeddings": false, + "tokenizer_class": "BaichuanTokenizer", + "torch_dtype": "bfloat16", + "transformers_version": "4.33.2", + "use_cache": true, + "vocab_size": 125696, + "z_loss_weight": 0 +} diff --git a/configuration_baichuan.py b/configuration_baichuan.py new file mode 100644 index 0000000..a260931 --- /dev/null +++ b/configuration_baichuan.py @@ -0,0 +1,69 @@ +# Copyright 2023 Baichuan Inc. All Rights Reserved. + +# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. +# +# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX +# and OPT implementations in this library. It has been modified from its +# original forms to accommodate minor architectural differences compared +# to GPT-NeoX and OPT used by the Meta AI team that trained the model. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from transformers.configuration_utils import PretrainedConfig +from transformers.utils import logging + + +logger = logging.get_logger(__name__) + + +class BaichuanConfig(PretrainedConfig): + model_type = "baichuan" + keys_to_ignore_at_inference = ["past_key_values"] + + def __init__( + self, + vocab_size=125696, + hidden_size=4096, + intermediate_size=11008, + num_hidden_layers=32, + num_attention_heads=32, + hidden_act="silu", + max_position_embeddings=4096, + initializer_range=0.02, + rms_norm_eps=1e-6, + use_cache=True, + pad_token_id=0, + bos_token_id=1, + eos_token_id=2, + tie_word_embeddings=False, + z_loss_weight=0, + **kwargs, + ): + self.vocab_size = vocab_size + self.max_position_embeddings = max_position_embeddings + self.hidden_size = hidden_size + self.intermediate_size = intermediate_size + self.num_hidden_layers = num_hidden_layers + self.num_attention_heads = num_attention_heads + self.hidden_act = hidden_act + self.initializer_range = initializer_range + self.rms_norm_eps = rms_norm_eps + self.use_cache = use_cache + self.z_loss_weight = z_loss_weight + super().__init__( + pad_token_id=pad_token_id, + bos_token_id=bos_token_id, + eos_token_id=eos_token_id, + tie_word_embeddings=tie_word_embeddings, + **kwargs, + ) diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..53d0763 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,14 @@ +{ + "assistant_token_id": 196, + "bos_token_id": 1, + "do_sample": true, + "eos_token_id": 2, + "max_new_tokens": 2048, + "pad_token_id": 0, + "repetition_penalty": 1.05, + "temperature": 0.3, + "top_k": 5, + "top_p": 0.85, + "transformers_version": "4.33.2", + "user_token_id": 195 +} diff --git a/generation_utils.py b/generation_utils.py new file mode 100644 index 0000000..5771699 --- /dev/null +++ b/generation_utils.py @@ -0,0 +1,83 @@ +from typing import List +from queue import Queue + +import torch + + +def build_chat_input(model, tokenizer, messages: List[dict], max_new_tokens: int=0): + def _parse_messages(messages, split_role="user"): + system, rounds = "", [] + round = [] + for i, message in enumerate(messages): + if message["role"] == "system": + assert i == 0 + system = message["content"] + continue + if message["role"] == split_role and round: + rounds.append(round) + round = [] + round.append(message) + if round: + rounds.append(round) + return system, rounds + + max_new_tokens = max_new_tokens or model.generation_config.max_new_tokens + max_input_tokens = model.config.model_max_length - max_new_tokens + system, rounds = _parse_messages(messages, split_role="user") + system_tokens = tokenizer.encode(system) + max_history_tokens = max_input_tokens - len(system_tokens) + + history_tokens = [] + for round in rounds[::-1]: + round_tokens = [] + for message in round: + if message["role"] == "user": + round_tokens.append(model.generation_config.user_token_id) + else: + round_tokens.append(model.generation_config.assistant_token_id) + round_tokens.extend(tokenizer.encode(message["content"])) + if len(history_tokens) == 0 or len(history_tokens) + len(round_tokens) <= max_history_tokens: + history_tokens = round_tokens + history_tokens # concat left + if len(history_tokens) < max_history_tokens: + continue + break + + input_tokens = system_tokens + history_tokens + if messages[-1]["role"] != "assistant": + input_tokens.append(model.generation_config.assistant_token_id) + input_tokens = input_tokens[-max_input_tokens:] # truncate left + return torch.LongTensor([input_tokens]).to(model.device) + + +class TextIterStreamer: + def __init__(self, tokenizer, skip_prompt=False, skip_special_tokens=False): + self.tokenizer = tokenizer + self.skip_prompt = skip_prompt + self.skip_special_tokens = skip_special_tokens + self.tokens = [] + self.text_queue = Queue() + self.next_tokens_are_prompt = True + + def put(self, value): + if self.skip_prompt and self.next_tokens_are_prompt: + self.next_tokens_are_prompt = False + else: + if len(value.shape) > 1: + value = value[0] + self.tokens.extend(value.tolist()) + self.text_queue.put( + self.tokenizer.decode(self.tokens, skip_special_tokens=self.skip_special_tokens)) + + def end(self): + self.text_queue.put(None) + + def __iter__(self): + return self + + def __next__(self): + value = self.text_queue.get() + if value is None: + raise StopIteration() + else: + return value + diff --git a/modeling_baichuan.py b/modeling_baichuan.py new file mode 100644 index 0000000..a202cb8 --- /dev/null +++ b/modeling_baichuan.py @@ -0,0 +1,785 @@ +# Copyright 2023 Baichuan Inc. All Rights Reserved. + +# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. +# +# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX +# and OPT implementations in this library. It has been modified from its +# original forms to accommodate minor architectural differences compared +# to GPT-NeoX and OPT used by the Meta AI team that trained the model. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + + +from .configuration_baichuan import BaichuanConfig +from .generation_utils import build_chat_input, TextIterStreamer + +import math +from typing import List, Optional, Tuple, Union +from threading import Thread + +import torch +import torch.utils.checkpoint +from torch import nn +from torch.nn import BCEWithLogitsLoss, CrossEntropyLoss, MSELoss +from torch.nn import functional as F +from transformers import PreTrainedModel, PretrainedConfig +from transformers.activations import ACT2FN +from transformers.modeling_outputs import BaseModelOutputWithPast, CausalLMOutputWithPast +from transformers.generation.utils import GenerationConfig +from transformers.utils import logging, ContextManagers + +import os +from contextlib import contextmanager +logger = logging.get_logger(__name__) + +try: + from xformers import ops as xops +except ImportError: + xops = None + logger.warning( + "Xformers is not installed correctly. If you want to use memory_efficient_attention to accelerate training use the following command to install Xformers\npip install xformers." + ) + + +# Copied from transformers.models.bart.modeling_bart._make_causal_mask +def _make_causal_mask( + input_ids_shape: torch.Size, dtype: torch.dtype, device: torch.device, past_key_values_length: int = 0 +): + """ + Make causal mask used for bi-directional self-attention. + """ + bsz, tgt_len = input_ids_shape + mask = torch.full((tgt_len, tgt_len), torch.tensor(torch.finfo(dtype).min, device=device), device=device) + mask_cond = torch.arange(mask.size(-1), device=device) + mask.masked_fill_(mask_cond < (mask_cond + 1).view(mask.size(-1), 1), 0) + mask = mask.to(dtype) + + if past_key_values_length > 0: + mask = torch.cat([torch.zeros(tgt_len, past_key_values_length, dtype=dtype, device=device), mask], dim=-1) + return mask[None, None, :, :].expand(bsz, 1, tgt_len, tgt_len + past_key_values_length) + +def _expand_mask(mask: torch.Tensor, dtype: torch.dtype, tgt_len: Optional[int] = None): + """ + Expands attention_mask from `[bsz, seq_len]` to `[bsz, 1, tgt_seq_len, src_seq_len]`. + """ + if len(mask.size()) == 3: + bsz, src_len, _ = mask.size() + tgt_len = tgt_len if tgt_len is not None else src_len + expanded_mask = mask[:,None,:,:].expand(bsz, 1, tgt_len, src_len).to(dtype) + else: + bsz, src_len = mask.size() + tgt_len = tgt_len if tgt_len is not None else src_len + expanded_mask = mask[:, None, None, :].expand(bsz, 1, tgt_len, src_len).to(dtype) + + inverted_mask = 1.0 - expanded_mask + + return inverted_mask.masked_fill(inverted_mask.to(torch.bool), torch.finfo(dtype).min) + + +class RMSNorm(nn.Module): + def __init__(self, hidden_size, eps=1e-6): + """ + RMSNorm is equivalent to T5LayerNorm + """ + super().__init__() + self.weight = nn.Parameter(torch.ones(hidden_size)) + self.variance_epsilon = eps + + def forward(self, hidden_states): + variance = hidden_states.to(torch.float32).pow(2).mean(-1, keepdim=True) + hidden_states = hidden_states * torch.rsqrt(variance + self.variance_epsilon) + + # convert into half-precision if necessary + if self.weight.dtype in [torch.float16, torch.bfloat16]: + hidden_states = hidden_states.to(self.weight.dtype) + + return self.weight * hidden_states + + +class RotaryEmbedding(torch.nn.Module): + def __init__(self, dim, max_position_embeddings=2048, base=10000, device=None): + super().__init__() + self.inv_freq = 1.0 / (base ** (torch.arange(0, dim, 2).float().to(device) / dim)) + self.max_seq_len_cached = max_position_embeddings + t = torch.arange(self.max_seq_len_cached, device=self.inv_freq.device, dtype=torch.float32) + freqs = torch.outer(t, self.inv_freq) + emb = torch.cat((freqs, freqs), dim=-1) + self.cos_cached = emb.cos()[None, None, :, :].to(torch.float32) + self.sin_cached = emb.sin()[None, None, :, :].to(torch.float32) + def forward(self, x, seq_len=None): + # x: [bs, num_attention_heads, seq_len, head_size] + # This `if` block is unlikely to be run after we build sin/cos in `__init__`. Keep the logic here just in case. + if seq_len > self.max_seq_len_cached: + self.max_seq_len_cached = seq_len + t = torch.arange(self.max_seq_len_cached, device=self.inv_freq.device, dtype=torch.float32) + freqs = torch.outer(t, self.inv_freq) + emb = torch.cat((freqs, freqs), dim=-1) + self.cos_cached = emb.cos()[None, None, :, :].to(torch.float32).to(x.device) + self.sin_cached = emb.sin()[None, None, :, :].to(torch.float32).to(x.device) + elif self.cos_cached.device != x.device: + self.cos_cached = self.cos_cached.to(x.device) + self.sin_cached = self.sin_cached.to(x.device) + return ( + self.cos_cached[:, :, :seq_len, ...], + self.sin_cached[:, :, :seq_len, ...], + ) + + +def rotate_half(x): + """Rotates half the hidden dims of the input.""" + x1 = x[..., : x.shape[-1] // 2] + x2 = x[..., x.shape[-1] // 2:] + return torch.cat((-x2, x1), dim=-1) + + +def apply_rotary_pos_emb(q, k, cos_, sin_, position_ids): + cos = cos_.squeeze(1).squeeze(0) # [seq_len, dim] + sin = sin_.squeeze(1).squeeze(0) # [seq_len, dim] + cos = cos[position_ids].unsqueeze(1) # [bs, 1, seq_len, dim] + sin = sin[position_ids].unsqueeze(1) # [bs, 1, seq_len, dim] + q_embed = (q.float() * cos) + (rotate_half(q.float()) * sin) + k_embed = (k.float() * cos) + (rotate_half(k.float()) * sin) + return q_embed.to(q.dtype), k_embed.to(k.dtype) + + +class MLP(nn.Module): + def __init__( + self, + hidden_size: int, + intermediate_size: int, + hidden_act: str, + ): + super().__init__() + self.gate_proj = nn.Linear(hidden_size, intermediate_size, bias=False) + self.down_proj = nn.Linear(intermediate_size, hidden_size, bias=False) + self.up_proj = nn.Linear(hidden_size, intermediate_size, bias=False) + self.act_fn = ACT2FN[hidden_act] + + def forward(self, x): + return self.down_proj(self.act_fn(self.gate_proj(x)) * self.up_proj(x)) + + +class Attention(nn.Module): + """Multi-headed attention from 'Attention Is All You Need' paper""" + def __init__(self, config: BaichuanConfig): + super().__init__() + self.config = config + self.hidden_size = config.hidden_size + self.num_heads = config.num_attention_heads + self.head_dim = self.hidden_size // self.num_heads + self.max_position_embeddings = config.max_position_embeddings + + if (self.head_dim * self.num_heads) != self.hidden_size: + raise ValueError( + f"hidden_size must be divisible by num_heads (got `hidden_size`: {self.hidden_size}" + f" and `num_heads`: {self.num_heads})." + ) + self.W_pack = nn.Linear(self.hidden_size, 3 * self.hidden_size, bias=False) + self.o_proj = nn.Linear(self.num_heads * self.head_dim, self.hidden_size, bias=False) + self.rotary_emb = RotaryEmbedding(self.head_dim, max_position_embeddings=self.max_position_embeddings) + + def _shape(self, tensor: torch.Tensor, seq_len: int, bsz: int): + return tensor.view(bsz, seq_len, self.num_heads, self.head_dim).transpose(1, 2).contiguous() + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + output_attentions: bool = False, + use_cache: bool = False, + ) -> Tuple[torch.Tensor, Optional[torch.Tensor], Optional[Tuple[torch.Tensor]]]: + bsz, q_len, _ = hidden_states.size() + + proj = self.W_pack(hidden_states) + proj = proj.unflatten(-1, (3, self.hidden_size)).unsqueeze(0).transpose(0, -2).squeeze(-2) + query_states = proj[0].view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + key_states = proj[1].view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + value_states = proj[2].view(bsz, q_len, self.num_heads, self.head_dim).transpose(1, 2) + + kv_seq_len = key_states.shape[-2] + if past_key_value is not None: + kv_seq_len += past_key_value[0].shape[-2] + cos, sin = self.rotary_emb(value_states, seq_len=kv_seq_len) + query_states, key_states = apply_rotary_pos_emb(query_states, key_states, cos, sin, position_ids) + # [bsz, nh, t, hd] + + if past_key_value is not None: + # reuse k, v, self_attention + key_states = torch.cat([past_key_value[0], key_states], dim=2) + value_states = torch.cat([past_key_value[1], value_states], dim=2) + + past_key_value = (key_states, value_states) if use_cache else None + if xops is not None and self.training: + attn_weights = None + query_states = query_states.transpose(1, 2) + key_states = key_states.transpose(1, 2) + value_states = value_states.transpose(1, 2) + attn_output = xops.memory_efficient_attention( + query_states, key_states, value_states, attn_bias=xops.LowerTriangularMask() + ) + else: + with torch.backends.cuda.sdp_kernel(enable_flash=True, enable_math=True, enable_mem_efficient=True): + attn_output = F.scaled_dot_product_attention(query_states, key_states, value_states, attn_mask = attention_mask) + attn_output = attn_output.transpose(1, 2) + attn_output = attn_output.reshape(bsz, q_len, self.hidden_size) + attn_output = self.o_proj(attn_output) + + if not output_attentions: + attn_weights = None + + return attn_output, attn_weights, past_key_value + + +class DecoderLayer(nn.Module): + def __init__(self, config: BaichuanConfig): + super().__init__() + self.hidden_size = config.hidden_size + self.self_attn = Attention(config=config) + self.mlp = MLP( + hidden_size=self.hidden_size, + intermediate_size=config.intermediate_size, + hidden_act=config.hidden_act, + ) + self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + self.post_attention_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + + def forward( + self, + hidden_states: torch.Tensor, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_value: Optional[Tuple[torch.Tensor]] = None, + output_attentions: Optional[bool] = False, + use_cache: Optional[bool] = False, + ) -> Tuple[torch.FloatTensor, Optional[Tuple[torch.FloatTensor, torch.FloatTensor]]]: + + residual = hidden_states + + hidden_states = self.input_layernorm(hidden_states) + + # Self Attention + hidden_states, self_attn_weights, present_key_value = self.self_attn( + hidden_states=hidden_states, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_value=past_key_value, + output_attentions=output_attentions, + use_cache=use_cache, + ) + hidden_states = residual + hidden_states + + # Fully Connected + residual = hidden_states + hidden_states = self.post_attention_layernorm(hidden_states) + hidden_states = self.mlp(hidden_states) + hidden_states = residual + hidden_states + + outputs = (hidden_states,) + + if output_attentions: + outputs += (self_attn_weights,) + + if use_cache: + outputs += (present_key_value,) + + return outputs + + +class BaichuanPreTrainedModel(PreTrainedModel): + config_class = BaichuanConfig + base_model_prefix = "model" + supports_gradient_checkpointing = True + _no_split_modules = ["DecoderLayer"] + _keys_to_ignore_on_load_unexpected = [r"decoder\.version"] + + def _init_weights(self, module): + std = self.config.initializer_range + if isinstance(module, nn.Linear): + module.weight.data.normal_(mean=0.0, std=std) + if module.bias is not None: + module.bias.data.zero_() + elif isinstance(module, nn.Embedding): + module.weight.data.normal_(mean=0.0, std=std) + if module.padding_idx is not None: + module.weight.data[module.padding_idx].zero_() + + def _set_gradient_checkpointing(self, module, value=False): + if isinstance(module, BaichuanModel): + module.gradient_checkpointing = value + + +class BaichuanModel(BaichuanPreTrainedModel): + def __init__(self, config: BaichuanConfig): + super().__init__(config) + self.padding_idx = config.pad_token_id + self.vocab_size = config.vocab_size + + self.embed_tokens = nn.Embedding(config.vocab_size, config.hidden_size, self.padding_idx) + self.layers = nn.ModuleList([DecoderLayer(config) for _ in range(config.num_hidden_layers)]) + self.norm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps) + + self.gradient_checkpointing = False + # Initialize weights and apply final processing + self.post_init() + + def get_input_embeddings(self): + return self.embed_tokens + + def set_input_embeddings(self, value): + self.embed_tokens = value + + # Copied from transformers.models.bart.modeling_bart.BartDecoder._prepare_decoder_attention_mask + def _prepare_decoder_attention_mask(self, attention_mask, input_shape, inputs_embeds, past_key_values_length): + # create causal mask + # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len] + combined_attention_mask = None + if input_shape[-1] > 1: + combined_attention_mask = _make_causal_mask( + input_shape, + inputs_embeds.dtype, + device=inputs_embeds.device, + past_key_values_length=past_key_values_length, + ) + + if attention_mask is not None: + # [bsz, seq_len] -> [bsz, 1, tgt_seq_len, src_seq_len] + expanded_attn_mask = _expand_mask(attention_mask, inputs_embeds.dtype, tgt_len=input_shape[-1]).to( + inputs_embeds.device + ) + combined_attention_mask = ( + expanded_attn_mask if combined_attention_mask is None else expanded_attn_mask + combined_attention_mask + ) + + return combined_attention_mask + + def forward( + self, + input_ids: torch.LongTensor = None, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_values: Optional[List[torch.FloatTensor]] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple, BaseModelOutputWithPast]: + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + use_cache = use_cache if use_cache is not None else self.config.use_cache + + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + # retrieve input_ids and inputs_embeds + if input_ids is not None and inputs_embeds is not None: + raise ValueError("You cannot specify both decoder_input_ids and decoder_inputs_embeds at the same time") + elif input_ids is not None: + batch_size, seq_length = input_ids.shape + elif inputs_embeds is not None: + batch_size, seq_length, _ = inputs_embeds.shape + else: + raise ValueError("You have to specify either decoder_input_ids or decoder_inputs_embeds") + + seq_length_with_past = seq_length + past_key_values_length = 0 + + if past_key_values is not None: + past_key_values_length = past_key_values[0][0].shape[2] + seq_length_with_past = seq_length_with_past + past_key_values_length + + if position_ids is None: + device = input_ids.device if input_ids is not None else inputs_embeds.device + position_ids = torch.arange( + past_key_values_length, seq_length + past_key_values_length, dtype=torch.long, device=device + ) + position_ids = position_ids.unsqueeze(0).view(-1, seq_length) + else: + position_ids = position_ids.view(-1, seq_length).long() + + if inputs_embeds is None: + inputs_embeds = self.embed_tokens(input_ids) + # embed positions + if attention_mask is None: + attention_mask = torch.ones( + (batch_size, seq_length_with_past), dtype=torch.bool, device=inputs_embeds.device + ) + attention_mask = self._prepare_decoder_attention_mask( + attention_mask, (batch_size, seq_length), inputs_embeds, past_key_values_length + ) + + hidden_states = inputs_embeds + + if self.gradient_checkpointing and self.training: + if use_cache: + logger.warning_once( + "`use_cache=True` is incompatible with gradient checkpointing. Setting `use_cache=False`..." + ) + use_cache = False + + # decoder layers + all_hidden_states = () if output_hidden_states else None + all_self_attns = () if output_attentions else None + next_decoder_cache = () if use_cache else None + + for idx, decoder_layer in enumerate(self.layers): + if output_hidden_states: + all_hidden_states += (hidden_states,) + + past_key_value = past_key_values[idx] if past_key_values is not None else None + + if self.gradient_checkpointing and self.training: + + def create_custom_forward(module): + def custom_forward(*inputs): + # None for past_key_value + return module(*inputs, output_attentions, None) + + return custom_forward + + layer_outputs = torch.utils.checkpoint.checkpoint( + create_custom_forward(decoder_layer), + hidden_states, + attention_mask, + position_ids, + None, + ) + else: + layer_outputs = decoder_layer( + hidden_states, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_value=past_key_value, + output_attentions=output_attentions, + use_cache=use_cache, + ) + + hidden_states = layer_outputs[0] + + if use_cache: + next_decoder_cache += (layer_outputs[2 if output_attentions else 1],) + + if output_attentions: + all_self_attns += (layer_outputs[1],) + + hidden_states = self.norm(hidden_states) + + # add hidden states from the last decoder layer + if output_hidden_states: + all_hidden_states += (hidden_states,) + + next_cache = next_decoder_cache if use_cache else None + if not return_dict: + return tuple(v for v in [hidden_states, next_cache, all_hidden_states, all_self_attns] if v is not None) + return BaseModelOutputWithPast( + last_hidden_state=hidden_states, + past_key_values=next_cache, + hidden_states=all_hidden_states, + attentions=all_self_attns, + ) + + +class NormHead(nn.Module): + def __init__(self, hidden_size, vocab_size, bias=False): + super().__init__() + self.weight = nn.Parameter(torch.empty((vocab_size, hidden_size))) + nn.init.kaiming_uniform_(self.weight, a=math.sqrt(5)) + self.first_flag = True + + def forward(self, hidden_states): + if self.training: + norm_weight = nn.functional.normalize(self.weight) + self.first_flag = True + elif self.first_flag: + self.first_flag = False + self.weight.data = nn.functional.normalize(self.weight) + norm_weight = self.weight + else: + norm_weight = self.weight + return nn.functional.linear(hidden_states, norm_weight) + +_init_weights = True +@contextmanager +def no_init_weights(_enable=True): + global _init_weights + old_init_weights = _init_weights + if _enable: + _init_weights = False + try: + yield + finally: + _init_weights = old_init_weights + +class BaichuanForCausalLM(BaichuanPreTrainedModel): + def __init__(self, config, *model_args, **model_kwargs): + super().__init__(config, *model_args, **model_kwargs) + self.model = BaichuanModel(config) + + self.lm_head = NormHead(config.hidden_size, config.vocab_size, bias=False) + if hasattr(config, "quantization_config") and isinstance(config.quantization_config, dict) and config.quantization_config.get('load_in_4bit', False): + try: + from .quantizer import quantize_offline, init_model_weight_int4 + except ImportError: + raise ImportError(f"Needs QLinear to run quantize.") + quantize_offline(self, 4) + # Initialize weights and apply final processing + self.post_init() + + def get_input_embeddings(self): + return self.model.embed_tokens + + def set_input_embeddings(self, value): + self.model.embed_tokens = value + + def get_output_embeddings(self): + return self.lm_head + + def set_output_embeddings(self, new_embeddings): + self.lm_head = new_embeddings + + def set_decoder(self, decoder): + self.model = decoder + + def get_decoder(self): + return self.model + + @classmethod + def from_pretrained( + cls, + pretrained_model_name_or_path: Optional[Union[str, os.PathLike]], + *model_args, + config: Optional[Union[PretrainedConfig, str, os.PathLike]] = None, + cache_dir: Optional[Union[str, os.PathLike]] = None, + ignore_mismatched_sizes: bool = False, + force_download: bool = False, + local_files_only: bool = False, + token: Optional[Union[str, bool]] = None, + revision: str = "main", + use_safetensors: bool = None, + **kwargs, + ): + # Load config if we don't provide a configuration + if not isinstance(config, PretrainedConfig): + config_path = config if config is not None else pretrained_model_name_or_path + config, model_kwargs = cls.config_class.from_pretrained( + config_path, + cache_dir=cache_dir, + return_unused_kwargs=True, + force_download=force_download, + resume_download=False, + proxies=None, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder="", + _from_auto=False, + _from_pipeline=None, + **kwargs, + ) + else: + model_kwargs = kwargs + + if hasattr(config, "quantization_config") and config.quantization_config['load_in_4bit']: + try: + from .quantizer import init_model_weight_int4 + from accelerate import init_empty_weights, dispatch_model, infer_auto_device_map + from accelerate.utils import CustomDtype + from accelerate.utils import get_balanced_memory + except ImportError: + raise ImportError(f"Needs import model weight init func to run quantize.") + # Instantiate model. + init_contexts = [no_init_weights(_enable=True)] + init_contexts.append(init_empty_weights()) + with ContextManagers(init_contexts): + model = cls(config) + + model_file = os.path.join(pretrained_model_name_or_path, 'pytorch_model.bin') + state_dict = torch.load(model_file, map_location="cpu") + model.is_quantized = True + + device_map = kwargs.pop("device_map", None) + torch_dtype = kwargs.pop("torch_dtype", None) + + if device_map is not None: + kwargs = {"no_split_module_classes": model._no_split_modules} + target_dtype = CustomDtype.INT4 + max_memory = get_balanced_memory( + model, + dtype=target_dtype, + low_zero=(device_map == "balanced_low_0"), + max_memory=None, + **kwargs, + ) + kwargs["max_memory"] = max_memory + device_map = infer_auto_device_map(model, dtype=target_dtype, **kwargs) + + model = init_model_weight_int4(config, model, state_dict) + + # Set model in evaluation mode to deactivate DropOut modules by default + model.eval() + # If it is a model with generation capabilities, attempt to load the generation config + if model.can_generate(): + try: + model.generation_config = GenerationConfig.from_pretrained( + pretrained_model_name_or_path, + cache_dir=cache_dir, + force_download=force_download, + resume_download=False, + proxies=None, + local_files_only=local_files_only, + token=token, + revision=revision, + subfolder="", + _from_auto=False, + _from_pipeline=None, + **kwargs, + ) + except (OSError, TypeError): + logger.info( + "Generation config file not found, using a generation config created from the model config." + ) + pass + + if device_map is not None: + dispatch_model(model, device_map=device_map) + + return model + return super(BaichuanForCausalLM, cls).from_pretrained(pretrained_model_name_or_path, *model_args, + config=config, cache_dir=cache_dir, ignore_mismatched_sizes=ignore_mismatched_sizes, + force_download=force_download, local_files_only=local_files_only, token=token, revision=revision, + use_safetensors=use_safetensors, **kwargs) + + def forward( + self, + input_ids: torch.LongTensor = None, + attention_mask: Optional[torch.Tensor] = None, + position_ids: Optional[torch.LongTensor] = None, + past_key_values: Optional[List[torch.FloatTensor]] = None, + inputs_embeds: Optional[torch.FloatTensor] = None, + labels: Optional[torch.LongTensor] = None, + use_cache: Optional[bool] = None, + output_attentions: Optional[bool] = None, + output_hidden_states: Optional[bool] = None, + return_dict: Optional[bool] = None, + ) -> Union[Tuple, CausalLMOutputWithPast]: + + output_attentions = output_attentions if output_attentions is not None else self.config.output_attentions + output_hidden_states = ( + output_hidden_states if output_hidden_states is not None else self.config.output_hidden_states + ) + return_dict = return_dict if return_dict is not None else self.config.use_return_dict + + # decoder outputs consists of (dec_features, layer_state, dec_hidden, dec_attn) + outputs = self.model( + input_ids=input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + past_key_values=past_key_values, + inputs_embeds=inputs_embeds, + use_cache=use_cache, + output_attentions=output_attentions, + output_hidden_states=output_hidden_states, + return_dict=return_dict, + ) + + hidden_states = outputs[0] + logits = self.lm_head(hidden_states) + loss = None + if labels is not None: + # Shift so that tokens < n predict n + shift_logits = logits[..., :-1, :].contiguous() + shift_labels = labels[..., 1:].contiguous() + # Flatten the tokens + loss_fct = CrossEntropyLoss() + shift_logits = shift_logits.view(-1, self.config.vocab_size) + shift_labels = shift_labels.view(-1) + softmax_normalizer = shift_logits.max(-1).values ** 2 + z_loss = self.config.z_loss_weight * softmax_normalizer.mean() + # Enable model parallelism + shift_labels = shift_labels.to(shift_logits.device) + loss = loss_fct(shift_logits, shift_labels) + z_loss + + if not return_dict: + output = (logits,) + outputs[1:] + return (loss,) + output if loss is not None else output + + return CausalLMOutputWithPast( + loss=loss, + logits=logits, + past_key_values=outputs.past_key_values, + hidden_states=outputs.hidden_states, + attentions=outputs.attentions, + ) + + def prepare_inputs_for_generation( + self, input_ids, past_key_values=None, attention_mask=None, inputs_embeds=None, **kwargs + ): + if past_key_values: + input_ids = input_ids[:, -1:] + + position_ids = kwargs.get("position_ids", None) + if attention_mask is not None and position_ids is None: + # create position_ids on the fly for batch generation + position_ids = attention_mask.long().cumsum(-1) - 1 + position_ids.masked_fill_(attention_mask == 0, 1) + if past_key_values: + position_ids = position_ids[:, -1].unsqueeze(-1) + + # if `inputs_embeds` are passed, we only want to use them in the 1st generation step + if inputs_embeds is not None and past_key_values is None: + model_inputs = {"inputs_embeds": inputs_embeds} + else: + model_inputs = {"input_ids": input_ids} + + model_inputs.update( + { + "position_ids": position_ids, + "past_key_values": past_key_values, + "use_cache": kwargs.get("use_cache"), + "attention_mask": attention_mask, + } + ) + return model_inputs + + @staticmethod + def _reorder_cache(past_key_values, beam_idx): + reordered_past = () + for layer_past in past_key_values: + reordered_past += (tuple(past_state.index_select(0, beam_idx) for past_state in layer_past),) + return reordered_past + + def quantize(self, bits: int): + try: + from .quantizer import quantize_online + except ImportError: + raise ImportError(f"Needs QLinear to run quantize.") + return quantize_online(self, bits) + + def chat(self, tokenizer, messages: List[dict], stream=False, + generation_config: Optional[GenerationConfig]=None): + generation_config = generation_config or self.generation_config + input_ids = build_chat_input(self, tokenizer, messages, generation_config.max_new_tokens) + if stream: + streamer = TextIterStreamer(tokenizer, skip_prompt=True, skip_special_tokens=True) + Thread(target=self.generate, kwargs=dict( + inputs=input_ids, streamer=streamer, + generation_config=generation_config, + )).start() + return streamer + else: + outputs = self.generate(input_ids, generation_config=generation_config) + response = tokenizer.decode(outputs[0][len(input_ids[0]):], skip_special_tokens=True) + return response diff --git a/pytorch_model-00001-of-00002.bin b/pytorch_model-00001-of-00002.bin new file mode 100644 index 0000000..665fc12 --- /dev/null +++ b/pytorch_model-00001-of-00002.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:13529f80435fc16b7e5963820954cd322bde3434342c96d1baeef135ec6ba83a +size 9934623283 diff --git a/pytorch_model-00002-of-00002.bin b/pytorch_model-00002-of-00002.bin new file mode 100644 index 0000000..bb88c66 --- /dev/null +++ b/pytorch_model-00002-of-00002.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0f135135a7b401594af0334aa2c4b1b4c23ad9fc33f55026995449eb3250b0bf +size 5077401650 diff --git a/pytorch_model.bin.index.json b/pytorch_model.bin.index.json new file mode 100644 index 0000000..eb05cf9 --- /dev/null +++ b/pytorch_model.bin.index.json @@ -0,0 +1,234 @@ +{ + "metadata": { + "total_size": 15011946496 + }, + "weight_map": { + "lm_head.weight": "pytorch_model-00002-of-00002.bin", + "model.embed_tokens.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.0.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.0.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.0.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.0.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.0.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.0.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.0.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.1.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.1.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.1.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.1.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.1.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.1.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.1.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.10.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.10.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.10.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.10.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.10.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.10.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.10.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.11.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.11.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.11.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.11.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.11.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.11.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.11.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.12.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.12.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.12.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.12.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.12.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.12.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.12.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.13.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.13.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.13.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.13.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.13.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.13.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.13.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.14.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.14.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.14.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.14.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.14.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.14.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.14.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.15.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.15.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.15.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.15.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.15.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.15.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.15.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.16.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.16.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.16.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.16.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.16.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.16.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.16.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.17.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.17.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.17.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.17.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.17.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.17.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.17.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.18.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.18.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.18.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.18.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.18.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.18.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.18.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.19.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.19.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.19.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.19.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.19.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.19.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.19.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.2.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.2.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.2.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.2.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.2.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.2.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.2.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.20.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.20.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.20.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.20.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.20.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.20.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.20.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.21.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.21.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.21.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.21.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.21.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.21.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.21.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.22.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.22.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.22.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.22.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.22.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.22.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.22.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.23.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.23.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.23.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.23.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.23.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.23.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.23.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.24.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.24.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.24.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.24.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.24.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.24.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.24.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.25.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.25.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.25.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.25.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.25.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.25.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.25.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.26.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.26.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.26.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.26.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.26.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.26.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.26.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.27.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.27.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.27.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.27.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.27.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.27.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.27.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.28.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.28.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.28.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.28.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.28.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.28.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.28.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.29.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.29.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.29.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.29.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.29.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.29.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.29.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.3.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.3.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.3.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.3.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.3.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.3.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.3.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.30.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.30.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.30.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.30.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.30.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.30.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.30.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.31.input_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.31.mlp.down_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.31.mlp.gate_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.31.mlp.up_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.31.post_attention_layernorm.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.31.self_attn.W_pack.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.31.self_attn.o_proj.weight": "pytorch_model-00002-of-00002.bin", + "model.layers.4.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.4.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.4.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.4.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.4.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.4.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.4.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.5.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.5.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.5.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.5.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.5.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.5.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.5.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.6.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.6.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.6.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.6.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.6.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.6.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.6.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.7.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.7.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.7.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.7.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.7.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.7.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.7.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.8.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.8.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.8.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.8.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.8.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.8.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.8.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.9.input_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.9.mlp.down_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.9.mlp.gate_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.9.mlp.up_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.9.post_attention_layernorm.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.9.self_attn.W_pack.weight": "pytorch_model-00001-of-00002.bin", + "model.layers.9.self_attn.o_proj.weight": "pytorch_model-00001-of-00002.bin", + "model.norm.weight": "pytorch_model-00002-of-00002.bin" + } +} diff --git a/quantizer.py b/quantizer.py new file mode 100644 index 0000000..239a2fb --- /dev/null +++ b/quantizer.py @@ -0,0 +1,210 @@ +import bitsandbytes as bnb +from bitsandbytes.nn.modules import Params4bit, Int8Params +import torch + +def Params4bitCuda(self, device): + self.data = self.data.cuda(device) + self.quant_state[0] = self.quant_state[0].cuda(device) + self.quant_state[4][0] = self.quant_state[4][0].cuda(device) + self.quant_state[4][1][0] = self.quant_state[4][1][0].cuda(device) + self.quant_state[4][1][1] = self.quant_state[4][1][1].cuda(device) + + self.quant_state[6] = self.quant_state[6].cuda(device) + return self + +class Linear4bitOnline(torch.nn.Module): + def __init__(self, weight, bias, quant_type): + super().__init__() + self.weight = Params4bit( + weight.data, requires_grad=False, compress_statistics=True, quant_type=quant_type + ) + self.compute_dtype = None + #self.weight.cuda(weight.device) + self.bias = bias + + def forward(self, x: torch.Tensor): + # weights are cast automatically as Int8Params, but the bias has to be cast manually + if self.bias is not None and self.bias.dtype != x.dtype: + self.bias.data = self.bias.data.to(x.dtype) + + if getattr(self.weight, "quant_state", None) is None: + print( + "FP4 quantization state not initialized. Please call .cuda() or .to(device) on the LinearFP4 layer first." + ) + inp_dtype = x.dtype + if self.compute_dtype is not None: + x = x.to(self.compute_dtype) + + bias = None if self.bias is None else self.bias.to(self.compute_dtype) + out = bnb.matmul_4bit( + x, self.weight.t(), bias=bias, quant_state=self.weight.quant_state + ) + + out = out.to(inp_dtype) + + return out + +class Linear8bitLtOnline(torch.nn.Module): + def __init__( + self, + weight, + bias, + has_fp16_weights=True, + memory_efficient_backward=False, + threshold=0.0, + index=None, + ): + super().__init__() + assert ( + not memory_efficient_backward + ), "memory_efficient_backward is no longer required and the argument is deprecated in 0.37.0 and will be removed in 0.39.0" + self.state = bnb.MatmulLtState() + self.index = index + + # Necessary for stacked layers + self.state.threshold = threshold + self.state.has_fp16_weights = has_fp16_weights + self.state.memory_efficient_backward = memory_efficient_backward + if threshold > 0.0 and not has_fp16_weights: + self.state.use_pool = True + + self.weight = Int8Params( + weight.data, + has_fp16_weights=has_fp16_weights, + requires_grad=has_fp16_weights, + ) + self.bias = bias + + def init_8bit_state(self): + self.state.CB = self.weight.CB + self.state.SCB = self.weight.SCB + self.weight.CB = None + self.weight.SCB = None + + def forward(self, x: torch.Tensor): + self.state.is_training = self.training + if self.weight.CB is not None: + self.init_8bit_state() + + # weights are cast automatically as Int8Params, but the bias has to be cast manually + if self.bias is not None and self.bias.dtype != x.dtype: + self.bias.data = self.bias.data.to(x.dtype) + + out = bnb.matmul(x, self.weight, bias=self.bias, state=self.state) + + if not self.state.has_fp16_weights: + if self.state.CB is not None and self.state.CxB is not None: + # we converted 8-bit row major to turing/ampere format in the first inference pass + # we no longer need the row-major weight + del self.state.CB + self.weight.data = self.state.CxB + return out + +def quantize_offline(model, bits: int): + assert (bits == 4), f'bits: {bits} is not supported' + + for i, layer in enumerate(model.model.layers): + layer.self_attn.W_pack = bnb.nn.Linear4bit( + layer.self_attn.W_pack.weight.shape[1], + layer.self_attn.W_pack.weight.shape[0], + False, + torch.float16, + compress_statistics=True, + quant_type="nf4", + ) + layer.self_attn.o_proj = bnb.nn.Linear4bit( + layer.self_attn.o_proj.weight.shape[1], + layer.self_attn.o_proj.weight.shape[0], + False, + torch.float16, + compress_statistics=True, + quant_type="nf4", + ) + + layer.mlp.gate_proj = bnb.nn.Linear4bit( + layer.mlp.gate_proj.weight.shape[1], + layer.mlp.gate_proj.weight.shape[0], + False, + torch.float16, + compress_statistics=True, + quant_type="nf4", + ) + layer.mlp.down_proj = bnb.nn.Linear4bit( + layer.mlp.down_proj.weight.shape[1], + layer.mlp.down_proj.weight.shape[0], + False, + torch.float16, + compress_statistics=True, + quant_type="nf4", + ) + layer.mlp.up_proj = bnb.nn.Linear4bit( + layer.mlp.up_proj.weight.shape[1], + layer.mlp.up_proj.weight.shape[0], + False, + torch.float16, + compress_statistics=True, + quant_type="nf4", + ) + return model + +def quantize_online(model, bits: int): + def quant(weight, bias=None): + if bits == 8: + linear = Linear8bitLtOnline( + weight, + bias, + has_fp16_weights=False, + threshold=6.0, + ) + if bias is not None: + linear.bias = torch.nn.Parameter(bias) + elif bits == 4: + linear = Linear4bitOnline( + weight, + bias, + quant_type="nf4", #fp4/nf4 + ) + else: + raise ValueError("quantize only support 4/8 bit") + return linear + + for i, layer in enumerate(model.model.layers): + layer.self_attn.W_pack = quant(layer.self_attn.W_pack.weight) + layer.self_attn.o_proj = quant(layer.self_attn.o_proj.weight) + layer.mlp.gate_proj = quant(layer.mlp.gate_proj.weight) + layer.mlp.down_proj = quant(layer.mlp.down_proj.weight) + layer.mlp.up_proj = quant(layer.mlp.up_proj.weight) + return model + +def init_model_weight_int4(config, model, state_dict): + #replace Params4bit.cuda with Params4bitCuda + Params4bit.cuda = Params4bitCuda + + for i in range(config.num_hidden_layers): + weight_data = state_dict[f'model.layers.{i}.self_attn.W_pack.weight.data'] + weight_quant_state = state_dict[f'model.layers.{i}.self_attn.W_pack.weight.quant_state'] + model.model.layers[i].self_attn.W_pack.weight = Params4bit(weight_data, requires_grad=False, quant_state=weight_quant_state) + + weight_data = state_dict[f'model.layers.{i}.self_attn.o_proj.weight.data'] + weight_quant_state = state_dict[f'model.layers.{i}.self_attn.o_proj.weight.quant_state'] + model.model.layers[i].self_attn.o_proj.weight = Params4bit(weight_data, requires_grad=False, quant_state=weight_quant_state) + + weight_data = state_dict[f'model.layers.{i}.mlp.gate_proj.weight.data'] + weight_quant_state = state_dict[f'model.layers.{i}.mlp.gate_proj.weight.quant_state'] + model.model.layers[i].mlp.gate_proj.weight = Params4bit(weight_data, requires_grad=False, quant_state=weight_quant_state) + + weight_data = state_dict[f'model.layers.{i}.mlp.up_proj.weight.data'] + weight_quant_state = state_dict[f'model.layers.{i}.mlp.up_proj.weight.quant_state'] + model.model.layers[i].mlp.up_proj.weight = Params4bit(weight_data, requires_grad=False, quant_state=weight_quant_state) + + weight_data = state_dict[f'model.layers.{i}.mlp.down_proj.weight.data'] + weight_quant_state = state_dict[f'model.layers.{i}.mlp.down_proj.weight.quant_state'] + model.model.layers[i].mlp.down_proj.weight = Params4bit(weight_data, requires_grad=False, quant_state=weight_quant_state) + + model.model.layers[i].input_layernorm.weight = state_dict[f'model.layers.{i}.input_layernorm.weight'] + model.model.layers[i].post_attention_layernorm.weight = state_dict[f'model.layers.{i}.post_attention_layernorm.weight'] + + model.model.embed_tokens.weight = state_dict['model.embed_tokens.weight'] + model.model.norm.weight = state_dict['model.norm.weight'] + model.lm_head.weight = state_dict['lm_head.weight'] + return model \ No newline at end of file diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000..5819ea2 --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,30 @@ +{ + "bos_token": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "pad_token": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "unk_token": { + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + } +} diff --git a/tokenization_baichuan.py b/tokenization_baichuan.py new file mode 100644 index 0000000..1d347e6 --- /dev/null +++ b/tokenization_baichuan.py @@ -0,0 +1,251 @@ +# Copyright 2023 Baichuan Inc. All Rights Reserved. + +# Copyright 2022 EleutherAI and the HuggingFace Inc. team. All rights reserved. +# +# This code is based on EleutherAI's GPT-NeoX library and the GPT-NeoX +# and OPT implementations in this library. It has been modified from its +# original forms to accommodate minor architectural differences compared +# to GPT-NeoX and OPT used by the Meta AI team that trained the model. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import os +from shutil import copyfile +from typing import Any, Dict, List, Optional, Tuple + +import sentencepiece as spm + +from transformers.tokenization_utils import AddedToken, PreTrainedTokenizer +from transformers.utils import logging + + +logger = logging.get_logger(__name__) + +VOCAB_FILES_NAMES = {"vocab_file": "tokenizer.model"} + +PRETRAINED_VOCAB_FILES_MAP = { + "vocab_file": {}, + "tokenizer_file": {}, +} +PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES = {} + + +class BaichuanTokenizer(PreTrainedTokenizer): + """ + Construct a Baichuan tokenizer. Based on byte-level Byte-Pair-Encoding. + + Args: + vocab_file (`str`): + Path to the vocabulary file. + """ + + vocab_files_names = VOCAB_FILES_NAMES + pretrained_vocab_files_map = PRETRAINED_VOCAB_FILES_MAP + max_model_input_sizes = PRETRAINED_POSITIONAL_EMBEDDINGS_SIZES + model_input_names = ["input_ids", "attention_mask"] + + def __init__( + self, + vocab_file, + unk_token="", + bos_token="", + eos_token="", + pad_token=None, + sp_model_kwargs: Optional[Dict[str, Any]] = None, + add_bos_token=True, + add_eos_token=False, + clean_up_tokenization_spaces=False, + **kwargs, + ): + self.sp_model_kwargs = {} if sp_model_kwargs is None else sp_model_kwargs + bos_token = AddedToken(bos_token, lstrip=False, rstrip=False) if isinstance(bos_token, str) else bos_token + eos_token = AddedToken(eos_token, lstrip=False, rstrip=False) if isinstance(eos_token, str) else eos_token + unk_token = AddedToken(unk_token, lstrip=False, rstrip=False) if isinstance(unk_token, str) else unk_token + pad_token = AddedToken(pad_token, lstrip=False, rstrip=False) if isinstance(pad_token, str) else pad_token + self.vocab_file = vocab_file + self.add_bos_token = add_bos_token + self.add_eos_token = add_eos_token + self.sp_model = spm.SentencePieceProcessor(**self.sp_model_kwargs) + self.sp_model.Load(vocab_file) + super().__init__( + bos_token=bos_token, + eos_token=eos_token, + unk_token=unk_token, + pad_token=pad_token, + add_bos_token=add_bos_token, + add_eos_token=add_eos_token, + sp_model_kwargs=self.sp_model_kwargs, + clean_up_tokenization_spaces=clean_up_tokenization_spaces, + **kwargs, + ) + + def __getstate__(self): + state = self.__dict__.copy() + state["sp_model"] = None + return state + + def __setstate__(self, d): + self.__dict__ = d + self.sp_model = spm.SentencePieceProcessor(**self.sp_model_kwargs) + self.sp_model.Load(self.vocab_file) + + @property + def vocab_size(self): + """Returns vocab size""" + return self.sp_model.get_piece_size() + + def get_vocab(self): + """Returns vocab as a dict""" + vocab = {self.convert_ids_to_tokens(i): i for i in range(self.vocab_size)} + vocab.update(self.added_tokens_encoder) + return vocab + + def _tokenize(self, text): + """Returns a tokenized string.""" + return self.sp_model.encode(text, out_type=str) + + def _convert_token_to_id(self, token): + """Converts a token (str) in an id using the vocab.""" + return self.sp_model.piece_to_id(token) + + def _convert_id_to_token(self, index): + """Converts an index (integer) in a token (str) using the vocab.""" + token = self.sp_model.IdToPiece(index) + return token + + def convert_tokens_to_string(self, tokens): + """Converts a sequence of tokens (string) in a single string.""" + current_sub_tokens = [] + out_string = "" + prev_is_special = False + for i, token in enumerate(tokens): + # make sure that special tokens are not decoded using sentencepiece model + if token in self.all_special_tokens: + if not prev_is_special and i != 0: + out_string += " " + out_string += self.sp_model.decode(current_sub_tokens) + token + prev_is_special = True + current_sub_tokens = [] + else: + current_sub_tokens.append(token) + prev_is_special = False + out_string += self.sp_model.decode(current_sub_tokens) + return out_string + + def save_vocabulary(self, save_directory, filename_prefix: Optional[str] = None) -> Tuple[str]: + """ + Save the vocabulary and special tokens file to a directory. + + Args: + save_directory (`str`): + The directory in which to save the vocabulary. + + Returns: + `Tuple(str)`: Paths to the files saved. + """ + if not os.path.isdir(save_directory): + logger.error(f"Vocabulary path ({save_directory}) should be a directory") + return + out_vocab_file = os.path.join( + save_directory, (filename_prefix + "-" if filename_prefix else "") + VOCAB_FILES_NAMES["vocab_file"] + ) + + if os.path.abspath(self.vocab_file) != os.path.abspath(out_vocab_file) and os.path.isfile(self.vocab_file): + copyfile(self.vocab_file, out_vocab_file) + elif not os.path.isfile(self.vocab_file): + with open(out_vocab_file, "wb") as fi: + content_spiece_model = self.sp_model.serialized_model_proto() + fi.write(content_spiece_model) + + return (out_vocab_file,) + + def build_inputs_with_special_tokens(self, token_ids_0, token_ids_1=None): + bos_token_id = [self.bos_token_id] if self.add_bos_token else [] + eos_token_id = [self.eos_token_id] if self.add_eos_token else [] + + output = bos_token_id + token_ids_0 + eos_token_id + + if token_ids_1 is not None: + output = output + bos_token_id + token_ids_1 + eos_token_id + + return output + + def get_special_tokens_mask( + self, token_ids_0: List[int], token_ids_1: Optional[List[int]] = None, already_has_special_tokens: bool = False + ) -> List[int]: + """ + Retrieve sequence ids from a token list that has no special tokens added. This method is called when adding + special tokens using the tokenizer `prepare_for_model` method. + + Args: + token_ids_0 (`List[int]`): + List of IDs. + token_ids_1 (`List[int]`, *optional*): + Optional second list of IDs for sequence pairs. + already_has_special_tokens (`bool`, *optional*, defaults to `False`): + Whether or not the token list is already formatted with special tokens for the model. + + Returns: + `List[int]`: A list of integers in the range [0, 1]: 1 for a special token, 0 for a sequence token. + """ + if already_has_special_tokens: + return super().get_special_tokens_mask( + token_ids_0=token_ids_0, token_ids_1=token_ids_1, already_has_special_tokens=True + ) + + bos_token_id = [1] if self.add_bos_token else [] + eos_token_id = [1] if self.add_eos_token else [] + + if token_ids_1 is None: + return bos_token_id + ([0] * len(token_ids_0)) + eos_token_id + return ( + bos_token_id + + ([0] * len(token_ids_0)) + + eos_token_id + + bos_token_id + + ([0] * len(token_ids_1)) + + eos_token_id + ) + + def create_token_type_ids_from_sequences( + self, token_ids_0: List[int], token_ids_1: Optional[List[int]] = None + ) -> List[int]: + """ + Creates a mask from the two sequences passed to be used in a sequence-pair classification task. An ALBERT + sequence pair mask has the following format: + + ``` + 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 + | first sequence | second sequence | + ``` + + if token_ids_1 is None, only returns the first portion of the mask (0s). + + Args: + token_ids_0 (`List[int]`): + List of ids. + token_ids_1 (`List[int]`, *optional*): + Optional second list of IDs for sequence pairs. + + Returns: + `List[int]`: List of [token type IDs](../glossary#token-type-ids) according to the given sequence(s). + """ + bos_token_id = [self.bos_token_id] if self.add_bos_token else [] + eos_token_id = [self.eos_token_id] if self.add_eos_token else [] + + output = [0] * len(bos_token_id + token_ids_0 + eos_token_id) + + if token_ids_1 is not None: + output += [1] * len(bos_token_id + token_ids_1 + eos_token_id) + + return output diff --git a/tokenizer.model b/tokenizer.model new file mode 100644 index 0000000..b3902c4 --- /dev/null +++ b/tokenizer.model @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:79452955be6b419a65984273a9f08af86042e1c2a75ee3ba989cbf620a133cc2 +size 2001107 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..1c0f50a --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,49 @@ +{ + "add_bos_token": false, + "add_eos_token": false, + "auto_map": { + "AutoTokenizer": [ + "tokenization_baichuan.BaichuanTokenizer", + null + ] + }, + "bos_token": { + "__type": "AddedToken", + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": false + }, + "clean_up_tokenization_spaces": false, + "eos_token": { + "__type": "AddedToken", + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": true + }, + "model_max_length": 4096, + "pad_token": { + "__type": "AddedToken", + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": true + }, + "padding_side": "left", + "sp_model_kwargs": {}, + "split_special_tokens": false, + "tokenizer_class": "BaichuanTokenizer", + "unk_token": { + "__type": "AddedToken", + "content": "", + "lstrip": false, + "normalized": true, + "rstrip": false, + "single_word": true + }, + "use_fast": false +}

Machine Mindset: An MBTI Exploration of Large Language Models