初始化项目,由ModelHub XC社区提供模型

Model: ZhipuAI/LongWriter-glm4-9b
Source: Original Platform
This commit is contained in:
ModelHub XC
2026-10-11 22:11:13 +08:00
commit 1c5f876c8e
15 changed files with 1899 additions and 0 deletions

37
.gitattributes vendored Normal file
View File

@@ -0,0 +1,37 @@
*.7z filter=lfs diff=lfs merge=lfs -text
*.arrow filter=lfs diff=lfs merge=lfs -text
*.bin filter=lfs diff=lfs merge=lfs -text
*.bin.* filter=lfs diff=lfs merge=lfs -text
*.bz2 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
*.model filter=lfs diff=lfs merge=lfs -text
*.msgpack 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
*.pt filter=lfs diff=lfs merge=lfs -text
*.pth filter=lfs diff=lfs merge=lfs -text
*.rar filter=lfs diff=lfs merge=lfs -text
saved_model/**/* 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
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zstandard filter=lfs diff=lfs merge=lfs -text
*.tfevents* filter=lfs diff=lfs merge=lfs -text
*.db* filter=lfs diff=lfs merge=lfs -text
*.ark* filter=lfs diff=lfs merge=lfs -text
**/*ckpt*data* filter=lfs diff=lfs merge=lfs -text
**/*ckpt*.meta filter=lfs diff=lfs merge=lfs -text
**/*ckpt*.index filter=lfs diff=lfs merge=lfs -text
*.safetensors filter=lfs diff=lfs merge=lfs -text
*.ckpt filter=lfs diff=lfs merge=lfs -text
*.gguf* filter=lfs diff=lfs merge=lfs -text
*.ggml filter=lfs diff=lfs merge=lfs -text
*.llamafile* filter=lfs diff=lfs merge=lfs -text

79
README.md Normal file
View File

@@ -0,0 +1,79 @@
---
language:
- en
- zh
library_name: transformers
tags:
- Long Context
- chatglm
- llama
datasets:
- THUDM/LongWriter-6k
pipeline_tag: text-generation
---
# LongWriter-glm4-9b
<p align="center">
🤗 <a href="https://huggingface.co/datasets/THUDM/LongWriter-6k" target="_blank">[LongWriter Dataset] </a> • 💻 <a href="https://github.com/THUDM/LongWriter" target="_blank">[Github Repo]</a> • 📃 <a href="https://arxiv.org/abs/2408.07055" target="_blank">[LongWriter Paper]</a>
</p>
LongWriter-glm4-9b is trained based on [glm-4-9b](https://huggingface.co/THUDM/glm-4-9b), and is capable of generating 10,000+ words at once.
Environment: Same environment requirement as [glm-4-9b-chat](https://huggingface.co/THUDM/glm-4-9b-chat) (`transformers>=4.43.0`).
A simple demo for deployment of the model:
```python
from transformers import AutoTokenizer, AutoModelForCausalLM
import torch
tokenizer = AutoTokenizer.from_pretrained("THUDM/LongWriter-glm4-9b", trust_remote_code=True)
model = AutoModelForCausalLM.from_pretrained("THUDM/LongWriter-glm4-9b", torch_dtype=torch.bfloat16, trust_remote_code=True, device_map="auto")
model = model.eval()
query = "Write a 10000-word China travel guide"
response, history = model.chat(tokenizer, query, history=[], max_new_tokens=32768, temperature=0.5)
print(response)
```
You can also deploy the model with [vllm](https://github.com/vllm-project/vllm), which allows 10,000+ words generation within a minute. Here is an example code:
```python
from vllm import LLM, SamplingParams
model = LLM(
model= "THUDM/LongWriter-glm4-9b",
dtype="auto",
trust_remote_code=True,
tensor_parallel_size=1,
max_model_len=32768,
gpu_memory_utilization=1,
)
tokenizer = model.get_tokenizer()
stop_token_ids = [tokenizer.eos_token_id, tokenizer.get_command("<|user|>"), tokenizer.get_command("<|observation|>")]
generation_params = SamplingParams(
temperature=0.5,
top_p=0.8,
top_k=50,
max_tokens=32768,
repetition_penalty=1,
stop_token_ids=stop_token_ids
)
query = "Write a 10000-word China travel guide"
input_ids = tokenizer.build_chat_input(query, history=[], role='user').input_ids[0].tolist()
outputs = model.generate(
sampling_params=generation_params,
prompt_token_ids=[input_ids],
)
output = outputs[0]
print(output.outputs[0].text)
```
License: [glm-4-9b License](https://huggingface.co/THUDM/glm-4-9b-chat/blob/main/LICENSE)
## Citation
If you find our work useful, please consider citing LongWriter:
```
@article{bai2024longwriter,
title={LongWriter: Unleashing 10,000+ Word Generation from Long Context LLMs},
author={Yushi Bai and Jiajie Zhang and Xin Lv and Linzhi Zheng and Siqi Zhu and Lei Hou and Yuxiao Dong and Jie Tang and Juanzi Li},
journal={arXiv preprint arXiv:2408.07055},
year={2024}
}
```

51
config.json Normal file
View File

@@ -0,0 +1,51 @@
{
"_name_or_path": "THUDM/LongWriter-glm4-9b",
"add_bias_linear": false,
"add_qkv_bias": true,
"apply_query_key_layer_scaling": true,
"apply_residual_connection_post_layernorm": false,
"architectures": [
"ChatGLMForConditionalGeneration"
],
"attention_dropout": 0.0,
"attention_softmax_in_fp32": true,
"attn_implementation": "sdpa",
"auto_map": {
"AutoConfig": "configuration_chatglm.ChatGLMConfig",
"AutoModel": "modeling_chatglm.ChatGLMForConditionalGeneration",
"AutoModelForCausalLM": "modeling_chatglm.ChatGLMForConditionalGeneration",
"AutoModelForSeq2SeqLM": "modeling_chatglm.ChatGLMForConditionalGeneration",
"AutoModelForSequenceClassification": "modeling_chatglm.ChatGLMForSequenceClassification"
},
"bias_dropout_fusion": true,
"classifier_dropout": null,
"eos_token_id": [
151329,
151336,
151338
],
"ffn_hidden_size": 13696,
"fp32_residual_connection": false,
"hidden_dropout": 0.0,
"hidden_size": 4096,
"kv_channels": 128,
"layernorm_epsilon": 1.5625e-07,
"model_type": "chatglm",
"multi_query_attention": true,
"multi_query_group_num": 2,
"num_attention_heads": 32,
"num_hidden_layers": 40,
"num_layers": 40,
"original_rope": true,
"pad_token_id": 151329,
"padded_vocab_size": 151552,
"post_layer_norm": true,
"rmsnorm": true,
"rope_ratio": 500,
"seq_length": 1048576,
"tie_word_embeddings": false,
"torch_dtype": "bfloat16",
"transformers_version": "4.43.0",
"use_cache": true,
"vocab_size": 151552
}

58
configuration_chatglm.py Normal file
View File

@@ -0,0 +1,58 @@
from transformers import PretrainedConfig
class ChatGLMConfig(PretrainedConfig):
model_type = "chatglm"
def __init__(
self,
num_layers=28,
padded_vocab_size=65024,
hidden_size=4096,
ffn_hidden_size=13696,
kv_channels=128,
num_attention_heads=32,
seq_length=2048,
hidden_dropout=0.0,
classifier_dropout=None,
attention_dropout=0.0,
layernorm_epsilon=1e-5,
rmsnorm=True,
apply_residual_connection_post_layernorm=False,
post_layer_norm=True,
add_bias_linear=False,
add_qkv_bias=False,
bias_dropout_fusion=True,
multi_query_attention=False,
multi_query_group_num=1,
rope_ratio=1,
apply_query_key_layer_scaling=True,
attention_softmax_in_fp32=True,
fp32_residual_connection=False,
**kwargs
):
self.num_layers = num_layers
self.vocab_size = padded_vocab_size
self.padded_vocab_size = padded_vocab_size
self.hidden_size = hidden_size
self.ffn_hidden_size = ffn_hidden_size
self.kv_channels = kv_channels
self.num_attention_heads = num_attention_heads
self.seq_length = seq_length
self.hidden_dropout = hidden_dropout
self.classifier_dropout = classifier_dropout
self.attention_dropout = attention_dropout
self.layernorm_epsilon = layernorm_epsilon
self.rmsnorm = rmsnorm
self.apply_residual_connection_post_layernorm = apply_residual_connection_post_layernorm
self.post_layer_norm = post_layer_norm
self.add_bias_linear = add_bias_linear
self.add_qkv_bias = add_qkv_bias
self.bias_dropout_fusion = bias_dropout_fusion
self.multi_query_attention = multi_query_attention
self.multi_query_group_num = multi_query_group_num
self.rope_ratio = rope_ratio
self.apply_query_key_layer_scaling = apply_query_key_layer_scaling
self.attention_softmax_in_fp32 = attention_softmax_in_fp32
self.fp32_residual_connection = fp32_residual_connection
super().__init__(**kwargs)

10
generation_config.json Normal file
View File

@@ -0,0 +1,10 @@
{
"_from_model_config": true,
"eos_token_id": [
151329,
151336,
151338
],
"pad_token_id": 151329,
"transformers_version": "4.43.0"
}

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:38fcd3e38c291c7b63f7c784de99acf2008ed2b9813dc6cb69c3f5e497dab001
size 4984147224

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5d4f93dc73feb92a370018365f84dfe9fc0e368576f6f366c8eb5d2736967676
size 4895071360

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:9b3364e4b4f21a8dd4cce49b92cf0749f2d87d4ebcdb8eb96f5b576b7bc9ea3e
size 4895071384

View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:a703a6e77ec1fceca638c89c82901283e5a384313c50c842da9068b3a6e135aa
size 4025651256

View File

@@ -0,0 +1,291 @@
{
"metadata": {
"total_size": 18799902784
},
"weight_map": {
"transformer.embedding.word_embeddings.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.final_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.0.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.0.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.0.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.0.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.0.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.0.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.0.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.1.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.1.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.1.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.1.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.1.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.1.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.1.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.10.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.10.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.10.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.10.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.10.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.10.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.10.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.11.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.11.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.11.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.11.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.11.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.11.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.11.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.12.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.12.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.12.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.12.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.12.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.12.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.12.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.13.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.13.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.13.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.13.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.13.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.13.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.13.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.14.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.14.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.14.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.14.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.14.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.14.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.14.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.15.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.15.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.15.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.15.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.15.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.15.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.15.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.16.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.16.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.16.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.16.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.16.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.16.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.16.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.17.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.17.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.17.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.17.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.17.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.17.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.17.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.18.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.18.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.18.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.18.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.18.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.18.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.18.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.19.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.19.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.19.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.19.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.19.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.19.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.19.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.2.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.2.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.2.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.2.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.2.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.2.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.2.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.20.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.20.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.20.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.20.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.20.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.20.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.20.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.21.input_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.21.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.21.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.21.post_attention_layernorm.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.21.self_attention.dense.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.21.self_attention.query_key_value.bias": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.21.self_attention.query_key_value.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.22.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.22.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.22.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.22.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.22.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.22.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.22.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.23.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.23.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.23.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.23.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.23.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.23.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.23.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.24.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.24.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.24.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.24.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.24.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.24.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.24.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.25.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.25.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.25.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.25.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.25.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.25.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.25.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.26.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.26.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.26.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.26.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.26.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.26.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.26.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.27.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.27.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.27.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.27.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.27.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.27.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.27.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.28.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.28.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.28.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.28.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.28.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.28.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.28.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.29.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.29.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.29.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.29.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.29.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.29.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.29.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.3.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.3.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.3.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.3.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.3.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.3.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.3.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.30.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.30.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.30.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.30.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.30.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.30.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.30.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.31.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.31.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.31.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.31.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.31.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.31.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.31.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.32.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.32.mlp.dense_4h_to_h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.32.mlp.dense_h_to_4h.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.32.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.32.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.32.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.32.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.33.input_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.33.mlp.dense_4h_to_h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.33.mlp.dense_h_to_4h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.33.post_attention_layernorm.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.33.self_attention.dense.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.33.self_attention.query_key_value.bias": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.33.self_attention.query_key_value.weight": "model-00003-of-00004.safetensors",
"transformer.encoder.layers.34.input_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.34.mlp.dense_4h_to_h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.34.mlp.dense_h_to_4h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.34.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.34.self_attention.dense.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.34.self_attention.query_key_value.bias": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.34.self_attention.query_key_value.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.35.input_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.35.mlp.dense_4h_to_h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.35.mlp.dense_h_to_4h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.35.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.35.self_attention.dense.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.35.self_attention.query_key_value.bias": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.35.self_attention.query_key_value.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.36.input_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.36.mlp.dense_4h_to_h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.36.mlp.dense_h_to_4h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.36.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.36.self_attention.dense.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.36.self_attention.query_key_value.bias": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.36.self_attention.query_key_value.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.37.input_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.37.mlp.dense_4h_to_h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.37.mlp.dense_h_to_4h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.37.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.37.self_attention.dense.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.37.self_attention.query_key_value.bias": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.37.self_attention.query_key_value.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.38.input_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.38.mlp.dense_4h_to_h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.38.mlp.dense_h_to_4h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.38.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.38.self_attention.dense.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.38.self_attention.query_key_value.bias": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.38.self_attention.query_key_value.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.39.input_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.39.mlp.dense_4h_to_h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.39.mlp.dense_h_to_4h.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.39.post_attention_layernorm.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.39.self_attention.dense.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.39.self_attention.query_key_value.bias": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.39.self_attention.query_key_value.weight": "model-00004-of-00004.safetensors",
"transformer.encoder.layers.4.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.4.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.4.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.4.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.4.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.4.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.4.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.5.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.5.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.5.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.5.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.5.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.5.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.5.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.6.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.6.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.6.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.6.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.6.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.6.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.6.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.7.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.7.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.7.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.7.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.7.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.7.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.7.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.8.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.8.mlp.dense_4h_to_h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.8.mlp.dense_h_to_4h.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.8.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.8.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.8.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.8.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.9.input_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.9.mlp.dense_4h_to_h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.9.mlp.dense_h_to_4h.weight": "model-00002-of-00004.safetensors",
"transformer.encoder.layers.9.post_attention_layernorm.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.9.self_attention.dense.weight": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.9.self_attention.query_key_value.bias": "model-00001-of-00004.safetensors",
"transformer.encoder.layers.9.self_attention.query_key_value.weight": "model-00001-of-00004.safetensors",
"transformer.output_layer.weight": "model-00004-of-00004.safetensors",
"transformer.rotary_pos_emb.inv_freq": "model-00001-of-00004.safetensors"
}
}

1064
modeling_chatglm.py Normal file

File diff suppressed because it is too large Load Diff

3
special_tokens_map.json Normal file
View File

@@ -0,0 +1,3 @@
{
"eos_token": "<|endoftext|>"
}

265
tokenization_chatglm.py Normal file
View File

@@ -0,0 +1,265 @@
import regex as re
import base64
import os
import json
import tiktoken
from transformers import PreTrainedTokenizer
from typing import List, Optional, Union, Dict
from transformers import PreTrainedTokenizer
from transformers.utils import logging, PaddingStrategy
from transformers.tokenization_utils_base import EncodedInput, BatchEncoding
class ChatGLM4Tokenizer(PreTrainedTokenizer):
vocab_files_names = {"vocab_file": "tokenizer.model"}
model_input_names = ["input_ids", "attention_mask", "position_ids"]
def __init__(
self,
vocab_file,
padding_side="left",
clean_up_tokenization_spaces=False,
encode_special_tokens=False,
**kwargs
):
self.name = "GLMTokenizer"
self.vocab_file = vocab_file
pat_str = "(?i:'s|'t|'re|'ve|'m|'ll|'d)|[^\\r\\n\\p{L}\\p{N}]?\\p{L}+|\\p{N}{1,3}| ?[^\\s\\p{L}\\p{N}]+[\\r\\n]*|\\s*[\\r\\n]+|\\s+(?!\\S)|\\s+"
self.pat_str = re.compile(pat_str)
self.encode_special_tokens = encode_special_tokens
mergeable_ranks = {}
with open(vocab_file) as f:
for line in f:
token, rank = line.strip().split()
rank = int(rank)
token = base64.b64decode(token)
mergeable_ranks[token] = rank
self.mergeable_ranks = mergeable_ranks
self.special_tokens = ["<|endoftext|>", "[MASK]", "[gMASK]", "[sMASK]", "<sop>", "<eop>", "<|system|>",
"<|user|>", "<|assistant|>", "<|observation|>", "<|begin_of_image|>", "<|end_of_image|>",
"<|begin_of_video|>", "<|end_of_video|>"]
self.special_tokens = {
token: idx for idx, token in enumerate(self.special_tokens, start=len(mergeable_ranks))
}
self.special_token_ids = {idx: token for token, idx in self.special_tokens.items()}
self.tokenizer = tiktoken.Encoding(
name="my_tokenizer",
pat_str=pat_str,
mergeable_ranks=mergeable_ranks,
special_tokens=self.special_tokens
)
self.decoder = {rank: token for token, rank in mergeable_ranks.items()}
self.n_words = len(self.decoder) + len(self.special_tokens)
super().__init__(
padding_side=padding_side,
clean_up_tokenization_spaces=clean_up_tokenization_spaces,
**kwargs
)
def get_command(self, token):
assert token in self.special_tokens
return self.special_tokens[token]
@property
def vocab_size(self):
return self.n_words
@property
def eos_token_id(self):
return self.get_command("<|endoftext|>")
def get_vocab(self):
""" Returns vocab as a dict """
vocab = {self._convert_id_to_token(i): i for i in range(self.vocab_size)}
vocab.update(self.added_tokens_encoder)
return vocab
def convert_tokens_to_string(self, tokens: List[Union[bytes, str]]) -> str:
"""
Converts a sequence of tokens in a single string.
"""
text = ""
temp = b""
for t in tokens:
if isinstance(t, str):
if temp:
text += temp.decode("utf-8", errors="replace")
temp = b""
text += t
elif isinstance(t, bytes):
temp += t
else:
raise TypeError("token should only be of type types or str")
if temp:
text += temp.decode("utf-8", errors="replace")
return text
def _tokenize(self, text, **kwargs):
tokens = []
if self.encode_special_tokens:
ids = self.tokenizer.encode(text, allowed_special="all")
else:
ids = self.tokenizer.encode(text, disallowed_special=())
for t in ids:
tokens.append(self.decoder[t])
return tokens
def _convert_token_to_id(self, token):
""" Converts a token (str) in an id using the vocab. """
if token in self.special_tokens:
return self.special_tokens[token]
return self.mergeable_ranks[token]
def _convert_id_to_token(self, index):
"""Converts an index (integer) in a token (str) using the vocab."""
if index in self.special_token_ids:
return self.special_token_ids[index]
return self.decoder[index]
def save_vocabulary(self, save_directory, filename_prefix=None):
"""
Save the vocabulary and special tokens file to a directory.
Args:
save_directory (`str`):
The directory in which to save the vocabulary.
filename_prefix (`str`, *optional*):
An optional prefix to add to the named of the saved files.
Returns:
`Tuple(str)`: Paths to the files saved.
"""
if os.path.isdir(save_directory):
vocab_file = os.path.join(
save_directory, self.vocab_files_names["vocab_file"]
)
else:
vocab_file = save_directory
with open(self.vocab_file, 'rb') as fin:
proto_str = fin.read()
with open(vocab_file, "wb") as writer:
writer.write(proto_str)
return (vocab_file,)
def get_prefix_tokens(self):
prefix_tokens = [self.get_command("[gMASK]"), self.get_command("<sop>")]
return prefix_tokens
def build_single_message(self, role, metadata, message):
assert role in ["system", "user", "assistant", "observation"], role
role_tokens = [self.get_command(f"<|{role}|>")] + self.tokenizer.encode(f"{metadata}\n")
message_tokens = self.tokenizer.encode(message, disallowed_special=())
tokens = role_tokens + message_tokens
return tokens
def build_chat_input(self, query, history=None, role="user"):
if history is None:
history = []
input_ids = []
for item in history:
content = item["content"]
if item["role"] == "system" and "tools" in item:
for function in item["tools"]:
content += f"\n\n## {function['name']}\n\n{json.dumps(function, ensure_ascii=False, indent=4)}"
content += "\n在调用上述函数时,请使用 Json 格式表示调用的参数。"
input_ids.extend(self.build_single_message(item["role"], item.get("metadata", ""), content))
input_ids.extend(self.build_single_message(role, "", query))
input_ids.extend([self.get_command("<|assistant|>")])
return self.batch_encode_plus([input_ids], return_tensors="pt", is_split_into_words=True)
def build_inputs_with_special_tokens(
self, token_ids_0: List[int], token_ids_1: Optional[List[int]] = None
) -> List[int]:
"""
Build model inputs from a sequence or a pair of sequence for sequence classification tasks by concatenating and
adding special tokens. A BERT sequence has the following format:
- single sequence: `[CLS] X [SEP]`
- pair of sequences: `[CLS] A [SEP] B [SEP]`
Args:
token_ids_0 (`List[int]`):
List of IDs to which the special tokens will be added.
token_ids_1 (`List[int]`, *optional*):
Optional second list of IDs for sequence pairs.
Returns:
`List[int]`: List of [input IDs](../glossary#input-ids) with the appropriate special tokens.
"""
prefix_tokens = self.get_prefix_tokens()
token_ids_0 = prefix_tokens + token_ids_0
if token_ids_1 is not None:
token_ids_0 = token_ids_0 + token_ids_1 + [self.get_command("<eos>")]
return token_ids_0
def _pad(
self,
encoded_inputs: Union[Dict[str, EncodedInput], BatchEncoding],
max_length: Optional[int] = None,
padding_strategy: PaddingStrategy = PaddingStrategy.DO_NOT_PAD,
pad_to_multiple_of: Optional[int] = None,
return_attention_mask: Optional[bool] = None,
padding_side: Optional[str] = None,
) -> dict:
"""
Pad encoded inputs (on left/right and up to predefined length or max length in the batch)
Args:
encoded_inputs:
Dictionary of tokenized inputs (`List[int]`) or batch of tokenized inputs (`List[List[int]]`).
max_length: maximum length of the returned list and optionally padding length (see below).
Will truncate by taking into account the special tokens.
padding_strategy: PaddingStrategy to use for padding.
- PaddingStrategy.LONGEST Pad to the longest sequence in the batch
- PaddingStrategy.MAX_LENGTH: Pad to the max length (default)
- PaddingStrategy.DO_NOT_PAD: Do not pad
The tokenizer padding sides are defined in self.padding_side:
- 'left': pads on the left of the sequences
- 'right': pads on the right of the sequences
pad_to_multiple_of: (optional) Integer if set will pad the sequence to a multiple of the provided value.
This is especially useful to enable the use of Tensor Core on NVIDIA hardware with compute capability
`>= 7.5` (Volta).
return_attention_mask:
(optional) Set to False to avoid returning attention mask (default: set to model specifics)
"""
# Load from model defaults
assert self.padding_side == "left"
required_input = encoded_inputs[self.model_input_names[0]]
seq_length = len(required_input)
if padding_strategy == PaddingStrategy.LONGEST:
max_length = len(required_input)
if max_length is not None and pad_to_multiple_of is not None and (max_length % pad_to_multiple_of != 0):
max_length = ((max_length // pad_to_multiple_of) + 1) * pad_to_multiple_of
needs_to_be_padded = padding_strategy != PaddingStrategy.DO_NOT_PAD and len(required_input) != max_length
# Initialize attention mask if not present.
if "attention_mask" not in encoded_inputs:
encoded_inputs["attention_mask"] = [1] * seq_length
if "position_ids" not in encoded_inputs:
encoded_inputs["position_ids"] = list(range(seq_length))
if needs_to_be_padded:
difference = max_length - len(required_input)
if "attention_mask" in encoded_inputs:
encoded_inputs["attention_mask"] = [0] * difference + encoded_inputs["attention_mask"]
if "position_ids" in encoded_inputs:
encoded_inputs["position_ids"] = [0] * difference + encoded_inputs["position_ids"]
encoded_inputs[self.model_input_names[0]] = [self.pad_token_id] * difference + required_input
return encoded_inputs

3
tokenizer.model Normal file
View File

@@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:5a493598071550244b2ee7f26118f3edec2150b9dfa967929a99052ac83fe716
size 2623634

26
tokenizer_config.json Normal file
View File

@@ -0,0 +1,26 @@
{
"added_tokens_decoder": {
"151329": {
"content": "<|endoftext|>",
"lstrip": false,
"normalized": false,
"rstrip": false,
"single_word": false,
"special": true
}
},
"auto_map": {
"AutoTokenizer": [
"tokenization_chatglm.ChatGLM4Tokenizer",
null
]
},
"chat_template": "{% for message in messages %}{% if loop.first %}[gMASK]<sop><|{{ message['role'] }}|>\n {{ message['content'] }}{% else %}<|{{ message['role'] }}|>\n {{ message['content'] }}{% endif %}{% endfor %}{% if add_generation_prompt %}<|assistant|>{% endif %}",
"clean_up_tokenization_spaces": false,
"do_lower_case": false,
"eos_token": "<|endoftext|>",
"model_max_length": 1000000000000000019884624838656,
"padding_side": "left",
"remove_space": false,
"tokenizer_class": "ChatGLM4Tokenizer"
}