From ef2f7a1bc59a54ab54fdb26144f8c620e37c4207 Mon Sep 17 00:00:00 2001 From: coffee Date: Tue, 10 Jun 2025 13:58:12 +0800 Subject: [PATCH] [25.06.10] update code --- deepspeed_config/ds_stage2.json | 0 deepspeed_config/ds_stage3.json | 0 documents/doc_tokenizer.docx | Bin src_inference/dolly_inference.py | 13 ++++--------- src_llm_moe/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 298 -> 0 bytes .../configuration_dollyMoE.cpython-312.pyc | Bin 3260 -> 0 bytes .../modeling_dollyMoE.cpython-312.pyc | Bin 49857 -> 0 bytes src_llm_moe/configuration_dollyMoE.py | 0 src_llm_moe/modeling_dollyMoE.py | 0 src_pretrain/pretrain_deepspeed.py | 0 src_pretrain/pretrain_deepspeed_MoE.py | 0 src_pretrain/pretrain_transformers.py | 0 test/compute_dollyMoE.py | 0 test/test_tokenizer.py | 0 test/test_tokenizer_weights.py | 0 utils/dolly_pretrain_deepspeed.sh | 0 utils/dolly_pretrain_torch.sh | 0 weights_llm/config.json | 0 weights_llm/generation_config.json | 0 weights_llm/merges.txt | 0 weights_llm/tokenizer.json | 0 weights_llm/tokenizer_config.json | 0 weights_llm/vocab.json | 0 24 files changed, 4 insertions(+), 9 deletions(-) mode change 100644 => 100755 deepspeed_config/ds_stage2.json mode change 100644 => 100755 deepspeed_config/ds_stage3.json mode change 100644 => 100755 documents/doc_tokenizer.docx mode change 100644 => 100755 src_inference/dolly_inference.py mode change 100644 => 100755 src_llm_moe/__init__.py delete mode 100644 src_llm_moe/__pycache__/__init__.cpython-312.pyc delete mode 100644 src_llm_moe/__pycache__/configuration_dollyMoE.cpython-312.pyc delete mode 100644 src_llm_moe/__pycache__/modeling_dollyMoE.cpython-312.pyc mode change 100644 => 100755 src_llm_moe/configuration_dollyMoE.py mode change 100644 => 100755 src_llm_moe/modeling_dollyMoE.py mode change 100644 => 100755 src_pretrain/pretrain_deepspeed.py mode change 100644 => 100755 src_pretrain/pretrain_deepspeed_MoE.py mode change 100644 => 100755 src_pretrain/pretrain_transformers.py mode change 100644 => 100755 test/compute_dollyMoE.py mode change 100644 => 100755 test/test_tokenizer.py mode change 100644 => 100755 test/test_tokenizer_weights.py mode change 100644 => 100755 utils/dolly_pretrain_deepspeed.sh mode change 100644 => 100755 utils/dolly_pretrain_torch.sh mode change 100644 => 100755 weights_llm/config.json mode change 100644 => 100755 weights_llm/generation_config.json mode change 100644 => 100755 weights_llm/merges.txt mode change 100644 => 100755 weights_llm/tokenizer.json mode change 100644 => 100755 weights_llm/tokenizer_config.json mode change 100644 => 100755 weights_llm/vocab.json diff --git a/deepspeed_config/ds_stage2.json b/deepspeed_config/ds_stage2.json old mode 100644 new mode 100755 diff --git a/deepspeed_config/ds_stage3.json b/deepspeed_config/ds_stage3.json old mode 100644 new mode 100755 diff --git a/documents/doc_tokenizer.docx b/documents/doc_tokenizer.docx old mode 100644 new mode 100755 diff --git a/src_inference/dolly_inference.py b/src_inference/dolly_inference.py old mode 100644 new mode 100755 index 0701c49..fd238b4 --- a/src_inference/dolly_inference.py +++ b/src_inference/dolly_inference.py @@ -1,8 +1,5 @@ from transformers import AutoModelForCausalLM, AutoTokenizer - -model_name = "Qwen/Qwen3-8B" - -# load the tokenizer and the model +model_name = "" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained( model_name, @@ -10,7 +7,7 @@ model = AutoModelForCausalLM.from_pretrained( device_map="auto" ) -# prepare the model input + prompt = "Give me a short introduction to large language model." messages = [ {"role": "user", "content": prompt} @@ -19,20 +16,18 @@ text = tokenizer.apply_chat_template( messages, tokenize=False, add_generation_prompt=True, - enable_thinking=True # Switches between thinking and non-thinking modes. Default is True. + enable_thinking=True ) model_inputs = tokenizer([text], return_tensors="pt").to(model.device) -# conduct text completion generated_ids = model.generate( **model_inputs, max_new_tokens=32768 ) output_ids = generated_ids[0][len(model_inputs.input_ids[0]):].tolist() -# parsing thinking content + try: - # rindex finding 151668 () index = len(output_ids) - output_ids[::-1].index(151668) except ValueError: index = 0 diff --git a/src_llm_moe/__init__.py b/src_llm_moe/__init__.py old mode 100644 new mode 100755 diff --git a/src_llm_moe/__pycache__/__init__.cpython-312.pyc b/src_llm_moe/__pycache__/__init__.cpython-312.pyc deleted file mode 100644 index b72ac68e83a2511bcca4f1ff4bdb2cca57f3add6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 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 WH(LFYAam4?kX)&kDZP_)eg6kavW+vf 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

5eOh)0L=Ve(OROMe3j-g>=x6 zLbx)i=Ho*6;-DdX%I-{KftAWcirC<=lRcM)iHM5~Zidl#TC4c^2l@d%wGzLb^?T$z zkVYJ?>V@6xHW~&yCZt## zO$%QfK|Y?irHTNRjeN9O$_0z6gk{>k3+&Ayp7uA{wmncAXhI+)!G8x!y(1m zmQoY#qjIBhUhUeH_^l;M3F2bPrHe|igysM=e}amf49}#`NK=|8uvsoylpSi45PD>G zxRfgMAI_sSSix39Jc$D-f@y4tG15Fkyoh9%^kEd^V@lm@X_96d?<1$2a@z>@!LAO2 zwLIg2i4>c*pIs}%S5m(HI!sN`7^By^O$>C_uddOi@m`&yg z1=$4GW;ELZ7{elI4>|Hk374K#5LOO-4oFj{+Wl+e*<(4R~ zfbFjZJ4HFTOwWRoe3|gwr>Y-pHk~q=>Zel3I_U$B{13LLmYUk84!`>J^`{?j@FLGv zlPQ0y?bS8c*F50J|6mu!Xp?{|0{iEeeyH;P%C7E+O69wLL4lO+ol z_|c`rPEdLDE6qO9PW_zn2zIY%DY