From dd42342ccadcae9ad597faa9bce99f249d2f4653 Mon Sep 17 00:00:00 2001 From: ModelHub XC Date: Fri, 15 May 2026 15:08:49 +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: SidhaarthMurali/llama3.2-1b-gsm8k-full Source: Original Platform --- .gitattributes | 40 + .../training_loss-checkpoint.png | Bin 0 -> 45311 bytes README.md | 59 + all_results.json | 8 + checkpoint-1000/config.json | 36 + checkpoint-1000/generation_config.json | 9 + ..._zero_pp_rank_0_mp_rank_00_optim_states.pt | 3 + .../zero_pp_rank_0_mp_rank_00_model_states.pt | 3 + checkpoint-1000/latest | 1 + checkpoint-1000/model.safetensors | 3 + checkpoint-1000/rng_state.pth | 3 + checkpoint-1000/scheduler.pt | 3 + checkpoint-1000/special_tokens_map.json | 33 + checkpoint-1000/tokenizer.json | 3 + checkpoint-1000/tokenizer_config.json | 2069 +++++++++++++++++ checkpoint-1000/trainer_state.json | 733 ++++++ checkpoint-1000/training_args.bin | 3 + checkpoint-1000/zero_to_fp32.py | 760 ++++++ checkpoint-1500/config.json | 36 + checkpoint-1500/generation_config.json | 9 + ..._zero_pp_rank_0_mp_rank_00_optim_states.pt | 3 + .../zero_pp_rank_0_mp_rank_00_model_states.pt | 3 + checkpoint-1500/latest | 1 + checkpoint-1500/model.safetensors | 3 + checkpoint-1500/rng_state.pth | 3 + checkpoint-1500/scheduler.pt | 3 + checkpoint-1500/special_tokens_map.json | 33 + checkpoint-1500/tokenizer.json | 3 + checkpoint-1500/tokenizer_config.json | 2069 +++++++++++++++++ checkpoint-1500/trainer_state.json | 1083 +++++++++ checkpoint-1500/training_args.bin | 3 + checkpoint-1500/zero_to_fp32.py | 760 ++++++ checkpoint-1632/config.json | 36 + checkpoint-1632/generation_config.json | 9 + ..._zero_pp_rank_0_mp_rank_00_optim_states.pt | 3 + .../zero_pp_rank_0_mp_rank_00_model_states.pt | 3 + checkpoint-1632/latest | 1 + checkpoint-1632/model.safetensors | 3 + checkpoint-1632/rng_state.pth | 3 + checkpoint-1632/scheduler.pt | 3 + checkpoint-1632/special_tokens_map.json | 33 + checkpoint-1632/tokenizer.json | 3 + checkpoint-1632/tokenizer_config.json | 2069 +++++++++++++++++ checkpoint-1632/trainer_state.json | 1174 ++++++++++ checkpoint-1632/training_args.bin | 3 + checkpoint-1632/zero_to_fp32.py | 760 ++++++ checkpoint-500/config.json | 36 + checkpoint-500/generation_config.json | 9 + ..._zero_pp_rank_0_mp_rank_00_optim_states.pt | 3 + .../zero_pp_rank_0_mp_rank_00_model_states.pt | 3 + checkpoint-500/latest | 1 + checkpoint-500/model.safetensors | 3 + checkpoint-500/rng_state.pth | 3 + checkpoint-500/scheduler.pt | 3 + checkpoint-500/special_tokens_map.json | 33 + checkpoint-500/tokenizer.json | 3 + checkpoint-500/tokenizer_config.json | 2069 +++++++++++++++++ checkpoint-500/trainer_state.json | 383 +++ checkpoint-500/training_args.bin | 3 + checkpoint-500/zero_to_fp32.py | 760 ++++++ config.json | 36 + generation_config.json | 9 + model.safetensors | 3 + special_tokens_map.json | 33 + tokenizer.json | 3 + tokenizer_config.json | 2069 +++++++++++++++++ train_results.json | 8 + trainer_log.jsonl | 164 ++ trainer_state.json | 1183 ++++++++++ training_args.bin | 3 + training_loss.png | Bin 0 -> 45311 bytes 71 files changed, 18707 insertions(+) create mode 100644 .gitattributes create mode 100644 .ipynb_checkpoints/training_loss-checkpoint.png create mode 100644 README.md create mode 100644 all_results.json create mode 100644 checkpoint-1000/config.json create mode 100644 checkpoint-1000/generation_config.json create mode 100644 checkpoint-1000/global_step1000/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt create mode 100644 checkpoint-1000/global_step1000/zero_pp_rank_0_mp_rank_00_model_states.pt create mode 100644 checkpoint-1000/latest create mode 100644 checkpoint-1000/model.safetensors create mode 100644 checkpoint-1000/rng_state.pth create mode 100644 checkpoint-1000/scheduler.pt create mode 100644 checkpoint-1000/special_tokens_map.json create mode 100644 checkpoint-1000/tokenizer.json create mode 100644 checkpoint-1000/tokenizer_config.json create mode 100644 checkpoint-1000/trainer_state.json create mode 100644 checkpoint-1000/training_args.bin create mode 100644 checkpoint-1000/zero_to_fp32.py create mode 100644 checkpoint-1500/config.json create mode 100644 checkpoint-1500/generation_config.json create mode 100644 checkpoint-1500/global_step1500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt create mode 100644 checkpoint-1500/global_step1500/zero_pp_rank_0_mp_rank_00_model_states.pt create mode 100644 checkpoint-1500/latest create mode 100644 checkpoint-1500/model.safetensors create mode 100644 checkpoint-1500/rng_state.pth create mode 100644 checkpoint-1500/scheduler.pt create mode 100644 checkpoint-1500/special_tokens_map.json create mode 100644 checkpoint-1500/tokenizer.json create mode 100644 checkpoint-1500/tokenizer_config.json create mode 100644 checkpoint-1500/trainer_state.json create mode 100644 checkpoint-1500/training_args.bin create mode 100644 checkpoint-1500/zero_to_fp32.py create mode 100644 checkpoint-1632/config.json create mode 100644 checkpoint-1632/generation_config.json create mode 100644 checkpoint-1632/global_step1632/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt create mode 100644 checkpoint-1632/global_step1632/zero_pp_rank_0_mp_rank_00_model_states.pt create mode 100644 checkpoint-1632/latest create mode 100644 checkpoint-1632/model.safetensors create mode 100644 checkpoint-1632/rng_state.pth create mode 100644 checkpoint-1632/scheduler.pt create mode 100644 checkpoint-1632/special_tokens_map.json create mode 100644 checkpoint-1632/tokenizer.json create mode 100644 checkpoint-1632/tokenizer_config.json create mode 100644 checkpoint-1632/trainer_state.json create mode 100644 checkpoint-1632/training_args.bin create mode 100644 checkpoint-1632/zero_to_fp32.py create mode 100644 checkpoint-500/config.json create mode 100644 checkpoint-500/generation_config.json create mode 100644 checkpoint-500/global_step500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt create mode 100644 checkpoint-500/global_step500/zero_pp_rank_0_mp_rank_00_model_states.pt create mode 100644 checkpoint-500/latest create mode 100644 checkpoint-500/model.safetensors create mode 100644 checkpoint-500/rng_state.pth create mode 100644 checkpoint-500/scheduler.pt create mode 100644 checkpoint-500/special_tokens_map.json create mode 100644 checkpoint-500/tokenizer.json create mode 100644 checkpoint-500/tokenizer_config.json create mode 100644 checkpoint-500/trainer_state.json create mode 100644 checkpoint-500/training_args.bin create mode 100644 checkpoint-500/zero_to_fp32.py create mode 100644 config.json create mode 100644 generation_config.json create mode 100644 model.safetensors create mode 100644 special_tokens_map.json create mode 100644 tokenizer.json create mode 100644 tokenizer_config.json create mode 100644 train_results.json create mode 100644 trainer_log.jsonl create mode 100644 trainer_state.json create mode 100644 training_args.bin create mode 100644 training_loss.png diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..cb7fa69 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,40 @@ +*.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 +checkpoint-1000/tokenizer.json filter=lfs diff=lfs merge=lfs -text +checkpoint-1500/tokenizer.json filter=lfs diff=lfs merge=lfs -text +checkpoint-1632/tokenizer.json filter=lfs diff=lfs merge=lfs -text +checkpoint-500/tokenizer.json filter=lfs diff=lfs merge=lfs -text +tokenizer.json filter=lfs diff=lfs merge=lfs -text diff --git a/.ipynb_checkpoints/training_loss-checkpoint.png b/.ipynb_checkpoints/training_loss-checkpoint.png new file mode 100644 index 0000000000000000000000000000000000000000..27c49838a16a1b230410ac6240331dee7c1a1b41 GIT binary patch literal 45311 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

{fIlPF$zF0l=kdI=t|=Og6iUPg|2=&T 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 literal 0 HcmV?d00001 diff --git a/README.md b/README.md new file mode 100644 index 0000000..23e2df5 --- /dev/null +++ b/README.md @@ -0,0 +1,59 @@ +--- +library_name: transformers +license: other +base_model: meta-llama/Llama-3.2-1B +tags: +- llama-factory +- full +- generated_from_trainer +model-index: +- name: gsm8k + results: [] +--- + + + +# gsm8k + +This model is a fine-tuned version of [meta-llama/Llama-3.2-1B](https://huggingface.co/meta-llama/Llama-3.2-1B) on the identity and the gsm8k datasets. + +## Model description + +More information needed + +## Intended uses & limitations + +More information needed + +## Training and evaluation data + +More information needed + +## Training procedure + +### Training hyperparameters + +The following hyperparameters were used during training: +- learning_rate: 1e-05 +- train_batch_size: 1 +- eval_batch_size: 8 +- seed: 42 +- distributed_type: multi-GPU +- gradient_accumulation_steps: 2 +- total_train_batch_size: 2 +- optimizer: Use OptimizerNames.ADAMW_TORCH with betas=(0.9,0.999) and epsilon=1e-08 and optimizer_args=No additional optimizer arguments +- lr_scheduler_type: cosine +- lr_scheduler_warmup_ratio: 0.1 +- num_epochs: 3.0 + +### Training results + + + +### Framework versions + +- Transformers 4.46.1 +- Pytorch 2.4.0 +- Datasets 3.1.0 +- Tokenizers 0.20.3 diff --git a/all_results.json b/all_results.json new file mode 100644 index 0000000..3961629 --- /dev/null +++ b/all_results.json @@ -0,0 +1,8 @@ +{ + "epoch": 3.0, + "total_flos": 246796222464.0, + "train_loss": 0.3023774076490572, + "train_runtime": 943.8917, + "train_samples_per_second": 3.458, + "train_steps_per_second": 1.729 +} \ No newline at end of file diff --git a/checkpoint-1000/config.json b/checkpoint-1000/config.json new file mode 100644 index 0000000..5a1694f --- /dev/null +++ b/checkpoint-1000/config.json @@ -0,0 +1,36 @@ +{ + "_name_or_path": "meta-llama/Llama-3.2-1B", + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 128000, + "eos_token_id": 128001, + "head_dim": 64, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 8192, + "max_position_embeddings": 131072, + "mlp_bias": false, + "model_type": "llama", + "num_attention_heads": 32, + "num_hidden_layers": 16, + "num_key_value_heads": 8, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": { + "factor": 32.0, + "high_freq_factor": 4.0, + "low_freq_factor": 1.0, + "original_max_position_embeddings": 8192, + "rope_type": "llama3" + }, + "rope_theta": 500000.0, + "tie_word_embeddings": true, + "torch_dtype": "bfloat16", + "transformers_version": "4.46.1", + "use_cache": false, + "vocab_size": 128256 +} diff --git a/checkpoint-1000/generation_config.json b/checkpoint-1000/generation_config.json new file mode 100644 index 0000000..eab5082 --- /dev/null +++ b/checkpoint-1000/generation_config.json @@ -0,0 +1,9 @@ +{ + "_from_model_config": true, + "bos_token_id": 128000, + "do_sample": true, + "eos_token_id": 128001, + "temperature": 0.6, + "top_p": 0.9, + "transformers_version": "4.46.1" +} diff --git a/checkpoint-1000/global_step1000/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt b/checkpoint-1000/global_step1000/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt new file mode 100644 index 0000000..b6bc66f --- /dev/null +++ b/checkpoint-1000/global_step1000/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:892c2d03db456ff21170b647f052b0cf6e1352777d6d579d4beddc9a855b4675 +size 14829779262 diff --git a/checkpoint-1000/global_step1000/zero_pp_rank_0_mp_rank_00_model_states.pt b/checkpoint-1000/global_step1000/zero_pp_rank_0_mp_rank_00_model_states.pt new file mode 100644 index 0000000..9dd7b18 --- /dev/null +++ b/checkpoint-1000/global_step1000/zero_pp_rank_0_mp_rank_00_model_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5a04be0563c5f386492666542da6a8d1e4c6a1a9682f2b7a829686ba673404cb +size 76664 diff --git a/checkpoint-1000/latest b/checkpoint-1000/latest new file mode 100644 index 0000000..e2d3435 --- /dev/null +++ b/checkpoint-1000/latest @@ -0,0 +1 @@ +global_step1000 \ No newline at end of file diff --git a/checkpoint-1000/model.safetensors b/checkpoint-1000/model.safetensors new file mode 100644 index 0000000..d102971 --- /dev/null +++ b/checkpoint-1000/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:58f6ff8a12bf515c19d967824c18ff17da812fd6da6052cac5f0ecfb939257fc +size 2471645608 diff --git a/checkpoint-1000/rng_state.pth b/checkpoint-1000/rng_state.pth new file mode 100644 index 0000000..4a3bd2e --- /dev/null +++ b/checkpoint-1000/rng_state.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7c733f603eddfbf8aea2db46dfb96d2d44052ea3c8d772ba82a9011002700581 +size 14244 diff --git a/checkpoint-1000/scheduler.pt b/checkpoint-1000/scheduler.pt new file mode 100644 index 0000000..1938310 --- /dev/null +++ b/checkpoint-1000/scheduler.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:37c48f28ae63964e8f5659d7f3fce20932fb92cf5ae691f29ab80ac40fc0fdab +size 1064 diff --git a/checkpoint-1000/special_tokens_map.json b/checkpoint-1000/special_tokens_map.json new file mode 100644 index 0000000..426a800 --- /dev/null +++ b/checkpoint-1000/special_tokens_map.json @@ -0,0 +1,33 @@ +{ + "additional_special_tokens": [ + { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } + ], + "bos_token": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": "<|end_of_text|>" +} diff --git a/checkpoint-1000/tokenizer.json b/checkpoint-1000/tokenizer.json new file mode 100644 index 0000000..1c1d8d5 --- /dev/null +++ b/checkpoint-1000/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9e4e7fb171f92fd137b777cc2714bf87d11576700a1dcd7a399e7bbe39537b +size 17209920 diff --git a/checkpoint-1000/tokenizer_config.json b/checkpoint-1000/tokenizer_config.json new file mode 100644 index 0000000..3a8f322 --- /dev/null +++ b/checkpoint-1000/tokenizer_config.json @@ -0,0 +1,2069 @@ +{ + "added_tokens_decoder": { + "128000": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128001": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128002": { + "content": "<|reserved_special_token_0|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128003": { + "content": "<|reserved_special_token_1|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128004": { + "content": "<|finetune_right_pad_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128005": { + "content": "<|reserved_special_token_2|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128006": { + "content": "<|start_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128007": { + "content": "<|end_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128008": { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128009": { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128010": { + "content": "<|python_tag|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128011": { + "content": "<|reserved_special_token_3|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128012": { + "content": "<|reserved_special_token_4|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128013": { + "content": "<|reserved_special_token_5|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128014": { + "content": "<|reserved_special_token_6|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128015": { + "content": "<|reserved_special_token_7|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128016": { + "content": "<|reserved_special_token_8|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128017": { + "content": "<|reserved_special_token_9|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128018": { + "content": "<|reserved_special_token_10|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128019": { + "content": "<|reserved_special_token_11|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128020": { + "content": "<|reserved_special_token_12|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128021": { + "content": "<|reserved_special_token_13|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128022": { + "content": "<|reserved_special_token_14|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128023": { + "content": "<|reserved_special_token_15|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128024": { + "content": "<|reserved_special_token_16|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128025": { + "content": "<|reserved_special_token_17|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128026": { + "content": "<|reserved_special_token_18|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128027": { + "content": "<|reserved_special_token_19|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128028": { + "content": "<|reserved_special_token_20|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128029": { + "content": "<|reserved_special_token_21|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128030": { + "content": "<|reserved_special_token_22|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128031": { + "content": "<|reserved_special_token_23|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128032": { + "content": "<|reserved_special_token_24|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128033": { + "content": "<|reserved_special_token_25|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128034": { + "content": "<|reserved_special_token_26|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128035": { + "content": "<|reserved_special_token_27|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128036": { + "content": "<|reserved_special_token_28|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128037": { + "content": "<|reserved_special_token_29|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128038": { + "content": "<|reserved_special_token_30|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128039": { + "content": "<|reserved_special_token_31|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128040": { + "content": "<|reserved_special_token_32|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128041": { + "content": "<|reserved_special_token_33|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128042": { + "content": "<|reserved_special_token_34|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128043": { + "content": "<|reserved_special_token_35|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128044": { + "content": "<|reserved_special_token_36|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128045": { + "content": "<|reserved_special_token_37|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128046": { + "content": "<|reserved_special_token_38|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128047": { + "content": "<|reserved_special_token_39|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128048": { + "content": "<|reserved_special_token_40|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128049": { + "content": "<|reserved_special_token_41|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128050": { + "content": "<|reserved_special_token_42|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128051": { + "content": "<|reserved_special_token_43|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128052": { + "content": "<|reserved_special_token_44|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128053": { + "content": "<|reserved_special_token_45|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128054": { + "content": "<|reserved_special_token_46|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128055": { + "content": "<|reserved_special_token_47|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128056": { + "content": "<|reserved_special_token_48|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128057": { + "content": "<|reserved_special_token_49|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128058": { + "content": "<|reserved_special_token_50|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128059": { + "content": "<|reserved_special_token_51|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128060": { + "content": "<|reserved_special_token_52|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128061": { + "content": "<|reserved_special_token_53|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128062": { + "content": "<|reserved_special_token_54|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128063": { + "content": "<|reserved_special_token_55|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128064": { + "content": "<|reserved_special_token_56|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128065": { + "content": "<|reserved_special_token_57|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128066": { + "content": "<|reserved_special_token_58|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128067": { + "content": "<|reserved_special_token_59|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128068": { + "content": "<|reserved_special_token_60|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128069": { + "content": "<|reserved_special_token_61|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128070": { + "content": "<|reserved_special_token_62|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128071": { + "content": "<|reserved_special_token_63|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128072": { + "content": "<|reserved_special_token_64|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128073": { + "content": "<|reserved_special_token_65|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128074": { + "content": "<|reserved_special_token_66|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128075": { + "content": "<|reserved_special_token_67|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128076": { + "content": "<|reserved_special_token_68|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128077": { + "content": "<|reserved_special_token_69|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128078": { + "content": "<|reserved_special_token_70|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128079": { + "content": "<|reserved_special_token_71|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128080": { + "content": "<|reserved_special_token_72|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128081": { + "content": "<|reserved_special_token_73|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128082": { + "content": "<|reserved_special_token_74|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128083": { + "content": "<|reserved_special_token_75|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128084": { + "content": "<|reserved_special_token_76|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128085": { + "content": "<|reserved_special_token_77|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128086": { + "content": "<|reserved_special_token_78|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128087": { + "content": "<|reserved_special_token_79|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128088": { + "content": "<|reserved_special_token_80|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128089": { + "content": "<|reserved_special_token_81|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128090": { + "content": "<|reserved_special_token_82|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128091": { + "content": "<|reserved_special_token_83|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128092": { + "content": "<|reserved_special_token_84|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128093": { + "content": "<|reserved_special_token_85|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128094": { + "content": "<|reserved_special_token_86|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128095": { + "content": "<|reserved_special_token_87|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128096": { + "content": "<|reserved_special_token_88|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128097": { + "content": "<|reserved_special_token_89|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128098": { + "content": "<|reserved_special_token_90|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128099": { + "content": "<|reserved_special_token_91|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128100": { + "content": "<|reserved_special_token_92|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128101": { + "content": "<|reserved_special_token_93|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128102": { + "content": "<|reserved_special_token_94|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128103": { + "content": "<|reserved_special_token_95|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128104": { + "content": "<|reserved_special_token_96|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128105": { + "content": "<|reserved_special_token_97|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128106": { + "content": "<|reserved_special_token_98|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128107": { + "content": "<|reserved_special_token_99|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128108": { + "content": "<|reserved_special_token_100|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128109": { + "content": "<|reserved_special_token_101|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128110": { + "content": "<|reserved_special_token_102|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128111": { + "content": "<|reserved_special_token_103|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128112": { + "content": "<|reserved_special_token_104|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128113": { + "content": "<|reserved_special_token_105|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128114": { + "content": "<|reserved_special_token_106|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128115": { + "content": "<|reserved_special_token_107|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128116": { + "content": "<|reserved_special_token_108|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128117": { + "content": "<|reserved_special_token_109|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128118": { + "content": "<|reserved_special_token_110|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128119": { + "content": "<|reserved_special_token_111|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128120": { + "content": "<|reserved_special_token_112|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128121": { + "content": "<|reserved_special_token_113|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128122": { + "content": "<|reserved_special_token_114|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128123": { + "content": "<|reserved_special_token_115|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128124": { + "content": "<|reserved_special_token_116|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128125": { + "content": "<|reserved_special_token_117|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128126": { + "content": "<|reserved_special_token_118|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128127": { + "content": "<|reserved_special_token_119|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128128": { + "content": "<|reserved_special_token_120|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128129": { + "content": "<|reserved_special_token_121|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128130": { + "content": "<|reserved_special_token_122|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128131": { + "content": "<|reserved_special_token_123|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128132": { + "content": "<|reserved_special_token_124|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128133": { + "content": "<|reserved_special_token_125|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128134": { + "content": "<|reserved_special_token_126|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128135": { + "content": "<|reserved_special_token_127|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128136": { + "content": "<|reserved_special_token_128|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128137": { + "content": "<|reserved_special_token_129|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128138": { + "content": "<|reserved_special_token_130|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128139": { + "content": "<|reserved_special_token_131|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128140": { + "content": "<|reserved_special_token_132|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128141": { + "content": "<|reserved_special_token_133|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128142": { + "content": "<|reserved_special_token_134|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128143": { + "content": "<|reserved_special_token_135|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128144": { + "content": "<|reserved_special_token_136|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128145": { + "content": "<|reserved_special_token_137|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128146": { + "content": "<|reserved_special_token_138|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128147": { + "content": "<|reserved_special_token_139|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128148": { + "content": "<|reserved_special_token_140|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128149": { + "content": "<|reserved_special_token_141|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128150": { + "content": "<|reserved_special_token_142|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128151": { + "content": "<|reserved_special_token_143|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128152": { + "content": "<|reserved_special_token_144|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128153": { + "content": "<|reserved_special_token_145|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128154": { + "content": "<|reserved_special_token_146|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128155": { + "content": "<|reserved_special_token_147|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128156": { + "content": "<|reserved_special_token_148|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128157": { + "content": "<|reserved_special_token_149|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128158": { + "content": "<|reserved_special_token_150|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128159": { + "content": "<|reserved_special_token_151|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128160": { + "content": "<|reserved_special_token_152|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128161": { + "content": "<|reserved_special_token_153|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128162": { + "content": "<|reserved_special_token_154|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128163": { + "content": "<|reserved_special_token_155|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128164": { + "content": "<|reserved_special_token_156|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128165": { + "content": "<|reserved_special_token_157|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128166": { + "content": "<|reserved_special_token_158|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128167": { + "content": "<|reserved_special_token_159|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128168": { + "content": "<|reserved_special_token_160|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128169": { + "content": "<|reserved_special_token_161|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128170": { + "content": "<|reserved_special_token_162|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128171": { + "content": "<|reserved_special_token_163|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128172": { + "content": "<|reserved_special_token_164|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128173": { + "content": "<|reserved_special_token_165|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128174": { + "content": "<|reserved_special_token_166|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128175": { + "content": "<|reserved_special_token_167|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128176": { + "content": "<|reserved_special_token_168|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128177": { + "content": "<|reserved_special_token_169|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128178": { + "content": "<|reserved_special_token_170|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128179": { + "content": "<|reserved_special_token_171|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128180": { + "content": "<|reserved_special_token_172|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128181": { + "content": "<|reserved_special_token_173|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128182": { + "content": "<|reserved_special_token_174|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128183": { + "content": "<|reserved_special_token_175|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128184": { + "content": "<|reserved_special_token_176|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128185": { + "content": "<|reserved_special_token_177|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128186": { + "content": "<|reserved_special_token_178|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128187": { + "content": "<|reserved_special_token_179|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128188": { + "content": "<|reserved_special_token_180|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128189": { + "content": "<|reserved_special_token_181|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128190": { + "content": "<|reserved_special_token_182|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128191": { + "content": "<|reserved_special_token_183|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128192": { + "content": "<|reserved_special_token_184|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128193": { + "content": "<|reserved_special_token_185|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128194": { + "content": "<|reserved_special_token_186|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128195": { + "content": "<|reserved_special_token_187|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128196": { + "content": "<|reserved_special_token_188|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128197": { + "content": "<|reserved_special_token_189|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128198": { + "content": "<|reserved_special_token_190|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128199": { + "content": "<|reserved_special_token_191|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128200": { + "content": "<|reserved_special_token_192|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128201": { + "content": "<|reserved_special_token_193|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128202": { + "content": "<|reserved_special_token_194|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128203": { + "content": "<|reserved_special_token_195|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128204": { + "content": "<|reserved_special_token_196|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128205": { + "content": "<|reserved_special_token_197|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128206": { + "content": "<|reserved_special_token_198|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128207": { + "content": "<|reserved_special_token_199|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128208": { + "content": "<|reserved_special_token_200|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128209": { + "content": "<|reserved_special_token_201|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128210": { + "content": "<|reserved_special_token_202|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128211": { + "content": "<|reserved_special_token_203|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128212": { + "content": "<|reserved_special_token_204|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128213": { + "content": "<|reserved_special_token_205|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128214": { + "content": "<|reserved_special_token_206|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128215": { + "content": "<|reserved_special_token_207|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128216": { + "content": "<|reserved_special_token_208|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128217": { + "content": "<|reserved_special_token_209|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128218": { + "content": "<|reserved_special_token_210|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128219": { + "content": "<|reserved_special_token_211|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128220": { + "content": "<|reserved_special_token_212|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128221": { + "content": "<|reserved_special_token_213|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128222": { + "content": "<|reserved_special_token_214|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128223": { + "content": "<|reserved_special_token_215|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128224": { + "content": "<|reserved_special_token_216|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128225": { + "content": "<|reserved_special_token_217|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128226": { + "content": "<|reserved_special_token_218|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128227": { + "content": "<|reserved_special_token_219|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128228": { + "content": "<|reserved_special_token_220|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128229": { + "content": "<|reserved_special_token_221|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128230": { + "content": "<|reserved_special_token_222|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128231": { + "content": "<|reserved_special_token_223|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128232": { + "content": "<|reserved_special_token_224|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128233": { + "content": "<|reserved_special_token_225|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128234": { + "content": "<|reserved_special_token_226|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128235": { + "content": "<|reserved_special_token_227|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128236": { + "content": "<|reserved_special_token_228|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128237": { + "content": "<|reserved_special_token_229|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128238": { + "content": "<|reserved_special_token_230|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128239": { + "content": "<|reserved_special_token_231|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128240": { + "content": "<|reserved_special_token_232|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128241": { + "content": "<|reserved_special_token_233|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128242": { + "content": "<|reserved_special_token_234|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128243": { + "content": "<|reserved_special_token_235|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128244": { + "content": "<|reserved_special_token_236|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128245": { + "content": "<|reserved_special_token_237|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128246": { + "content": "<|reserved_special_token_238|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128247": { + "content": "<|reserved_special_token_239|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128248": { + "content": "<|reserved_special_token_240|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128249": { + "content": "<|reserved_special_token_241|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128250": { + "content": "<|reserved_special_token_242|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128251": { + "content": "<|reserved_special_token_243|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128252": { + "content": "<|reserved_special_token_244|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128253": { + "content": "<|reserved_special_token_245|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128254": { + "content": "<|reserved_special_token_246|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128255": { + "content": "<|reserved_special_token_247|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|eot_id|>", + "<|eom_id|>" + ], + "bos_token": "<|begin_of_text|>", + "chat_template": "{{ '<|begin_of_text|>' }}{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% endif %}{% if system_message is defined %}{{ '<|start_header_id|>system<|end_header_id|>\n\n' + system_message + '<|eot_id|>' }}{% endif %}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|start_header_id|>user<|end_header_id|>\n\n' + content + '<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n' }}{% elif message['role'] == 'assistant' %}{{ content + '<|eot_id|>' }}{% endif %}{% endfor %}", + "clean_up_tokenization_spaces": true, + "eos_token": "<|end_of_text|>", + "model_input_names": [ + "input_ids", + "attention_mask" + ], + "model_max_length": 2048, + "pad_token": "<|end_of_text|>", + "padding_side": "right", + "split_special_tokens": false, + "tokenizer_class": "PreTrainedTokenizerFast" +} diff --git a/checkpoint-1000/trainer_state.json b/checkpoint-1000/trainer_state.json new file mode 100644 index 0000000..86b842f --- /dev/null +++ b/checkpoint-1000/trainer_state.json @@ -0,0 +1,733 @@ +{ + "best_metric": null, + "best_model_checkpoint": null, + "epoch": 1.8382352941176472, + "eval_steps": 500, + "global_step": 1000, + "is_hyper_param_search": false, + "is_local_process_zero": true, + "is_world_process_zero": true, + "log_history": [ + { + "epoch": 0.01838235294117647, + "grad_norm": 24.461347652326168, + "learning_rate": 6.097560975609757e-07, + "loss": 1.2036, + "step": 10 + }, + { + "epoch": 0.03676470588235294, + "grad_norm": 17.308880580961944, + "learning_rate": 1.2195121951219514e-06, + "loss": 1.2064, + "step": 20 + }, + { + "epoch": 0.05514705882352941, + "grad_norm": 29.601720546719697, + "learning_rate": 1.8292682926829268e-06, + "loss": 1.2741, + "step": 30 + }, + { + "epoch": 0.07352941176470588, + "grad_norm": 14.115818236245202, + "learning_rate": 2.4390243902439027e-06, + "loss": 0.7596, + "step": 40 + }, + { + "epoch": 0.09191176470588236, + "grad_norm": 21.73939509164672, + "learning_rate": 3.0487804878048782e-06, + "loss": 0.6171, + "step": 50 + }, + { + "epoch": 0.11029411764705882, + "grad_norm": 16.96116387460838, + "learning_rate": 3.6585365853658537e-06, + "loss": 0.794, + "step": 60 + }, + { + "epoch": 0.12867647058823528, + "grad_norm": 15.372652400517632, + "learning_rate": 4.268292682926829e-06, + "loss": 0.6233, + "step": 70 + }, + { + "epoch": 0.14705882352941177, + "grad_norm": 15.062285237489078, + "learning_rate": 4.8780487804878055e-06, + "loss": 0.5441, + "step": 80 + }, + { + "epoch": 0.16544117647058823, + "grad_norm": 18.632304280702545, + "learning_rate": 5.487804878048781e-06, + "loss": 0.5784, + "step": 90 + }, + { + "epoch": 0.18382352941176472, + "grad_norm": 13.945519044585177, + "learning_rate": 6.0975609756097564e-06, + "loss": 0.4844, + "step": 100 + }, + { + "epoch": 0.20220588235294118, + "grad_norm": 6.9751627817275, + "learning_rate": 6.707317073170733e-06, + "loss": 0.6535, + "step": 110 + }, + { + "epoch": 0.22058823529411764, + "grad_norm": 25.188175477401735, + "learning_rate": 7.317073170731707e-06, + "loss": 0.6897, + "step": 120 + }, + { + "epoch": 0.23897058823529413, + "grad_norm": 14.572936912172068, + "learning_rate": 7.926829268292685e-06, + "loss": 0.4217, + "step": 130 + }, + { + "epoch": 0.25735294117647056, + "grad_norm": 14.934836192557746, + "learning_rate": 8.536585365853658e-06, + "loss": 0.5868, + "step": 140 + }, + { + "epoch": 0.2757352941176471, + "grad_norm": 11.450309910668999, + "learning_rate": 9.146341463414635e-06, + "loss": 0.53, + "step": 150 + }, + { + "epoch": 0.29411764705882354, + "grad_norm": 21.677329690439954, + "learning_rate": 9.756097560975611e-06, + "loss": 0.5538, + "step": 160 + }, + { + "epoch": 0.3125, + "grad_norm": 13.221017712308962, + "learning_rate": 9.999587822598768e-06, + "loss": 0.4616, + "step": 170 + }, + { + "epoch": 0.33088235294117646, + "grad_norm": 17.10580370679984, + "learning_rate": 9.997069206794246e-06, + "loss": 0.5633, + "step": 180 + }, + { + "epoch": 0.3492647058823529, + "grad_norm": 12.4225156252439, + "learning_rate": 9.992262114666653e-06, + "loss": 0.6035, + "step": 190 + }, + { + "epoch": 0.36764705882352944, + "grad_norm": 9.012606555821149, + "learning_rate": 9.985168747689706e-06, + "loss": 0.5822, + "step": 200 + }, + { + "epoch": 0.3860294117647059, + "grad_norm": 7.876601539287651, + "learning_rate": 9.975792354368019e-06, + "loss": 0.3755, + "step": 210 + }, + { + "epoch": 0.40441176470588236, + "grad_norm": 6.10882571982772, + "learning_rate": 9.964137228749409e-06, + "loss": 0.4914, + "step": 220 + }, + { + "epoch": 0.4227941176470588, + "grad_norm": 6.537974128609375, + "learning_rate": 9.950208708458371e-06, + "loss": 0.4604, + "step": 230 + }, + { + "epoch": 0.4411764705882353, + "grad_norm": 7.108775542718406, + "learning_rate": 9.934013172251654e-06, + "loss": 0.5029, + "step": 240 + }, + { + "epoch": 0.45955882352941174, + "grad_norm": 13.652621643454376, + "learning_rate": 9.915558037097003e-06, + "loss": 0.5404, + "step": 250 + }, + { + "epoch": 0.47794117647058826, + "grad_norm": 9.685271320615122, + "learning_rate": 9.894851754776473e-06, + "loss": 0.3555, + "step": 260 + }, + { + "epoch": 0.4963235294117647, + "grad_norm": 10.504810722270348, + "learning_rate": 9.871903808015812e-06, + "loss": 0.4092, + "step": 270 + }, + { + "epoch": 0.5147058823529411, + "grad_norm": 12.557835687927717, + "learning_rate": 9.846724706141718e-06, + "loss": 0.4489, + "step": 280 + }, + { + "epoch": 0.5330882352941176, + "grad_norm": 19.32420837447236, + "learning_rate": 9.819325980268946e-06, + "loss": 0.5297, + "step": 290 + }, + { + "epoch": 0.5514705882352942, + "grad_norm": 12.56688753149935, + "learning_rate": 9.789720178019483e-06, + "loss": 0.4301, + "step": 300 + }, + { + "epoch": 0.5698529411764706, + "grad_norm": 8.769304725602016, + "learning_rate": 9.757920857776188e-06, + "loss": 0.5499, + "step": 310 + }, + { + "epoch": 0.5882352941176471, + "grad_norm": 6.742725850222398, + "learning_rate": 9.723942582473545e-06, + "loss": 0.3723, + "step": 320 + }, + { + "epoch": 0.6066176470588235, + "grad_norm": 32.81061857477797, + "learning_rate": 9.687800912928362e-06, + "loss": 0.6103, + "step": 330 + }, + { + "epoch": 0.625, + "grad_norm": 7.250155807815409, + "learning_rate": 9.649512400713497e-06, + "loss": 0.5561, + "step": 340 + }, + { + "epoch": 0.6433823529411765, + "grad_norm": 8.449295772111478, + "learning_rate": 9.609094580577825e-06, + "loss": 0.4384, + "step": 350 + }, + { + "epoch": 0.6617647058823529, + "grad_norm": 8.965901929446623, + "learning_rate": 9.566565962415958e-06, + "loss": 0.492, + "step": 360 + }, + { + "epoch": 0.6801470588235294, + "grad_norm": 10.783592668291883, + "learning_rate": 9.521946022791402e-06, + "loss": 0.5596, + "step": 370 + }, + { + "epoch": 0.6985294117647058, + "grad_norm": 6.524203722153494, + "learning_rate": 9.475255196016972e-06, + "loss": 0.4657, + "step": 380 + }, + { + "epoch": 0.7169117647058824, + "grad_norm": 6.844495651307719, + "learning_rate": 9.426514864796648e-06, + "loss": 0.547, + "step": 390 + }, + { + "epoch": 0.7352941176470589, + "grad_norm": 7.093995062440304, + "learning_rate": 9.375747350433044e-06, + "loss": 0.4821, + "step": 400 + }, + { + "epoch": 0.7536764705882353, + "grad_norm": 13.008619062718342, + "learning_rate": 9.322975902605082e-06, + "loss": 0.3627, + "step": 410 + }, + { + "epoch": 0.7720588235294118, + "grad_norm": 7.658314017103231, + "learning_rate": 9.268224688720475e-06, + "loss": 0.2779, + "step": 420 + }, + { + "epoch": 0.7904411764705882, + "grad_norm": 9.961772688539515, + "learning_rate": 9.211518782847932e-06, + "loss": 0.684, + "step": 430 + }, + { + "epoch": 0.8088235294117647, + "grad_norm": 5.184448250813704, + "learning_rate": 9.152884154234147e-06, + "loss": 0.3829, + "step": 440 + }, + { + "epoch": 0.8272058823529411, + "grad_norm": 16.899974205034713, + "learning_rate": 9.092347655410818e-06, + "loss": 0.409, + "step": 450 + }, + { + "epoch": 0.8455882352941176, + "grad_norm": 9.123647569900998, + "learning_rate": 9.029937009897176e-06, + "loss": 0.4189, + "step": 460 + }, + { + "epoch": 0.8639705882352942, + "grad_norm": 14.941661911314725, + "learning_rate": 8.96568079950361e-06, + "loss": 0.4846, + "step": 470 + }, + { + "epoch": 0.8823529411764706, + "grad_norm": 6.576553080941865, + "learning_rate": 8.899608451242233e-06, + "loss": 0.4869, + "step": 480 + }, + { + "epoch": 0.9007352941176471, + "grad_norm": 9.989273508498824, + "learning_rate": 8.83175022385039e-06, + "loss": 0.368, + "step": 490 + }, + { + "epoch": 0.9191176470588235, + "grad_norm": 5.168977011450082, + "learning_rate": 8.762137193933241e-06, + "loss": 0.3489, + "step": 500 + }, + { + "epoch": 0.9375, + "grad_norm": 9.716727823960543, + "learning_rate": 8.690801241731818e-06, + "loss": 0.4095, + "step": 510 + }, + { + "epoch": 0.9558823529411765, + "grad_norm": 9.305144213419574, + "learning_rate": 8.617775036523014e-06, + "loss": 0.4641, + "step": 520 + }, + { + "epoch": 0.9742647058823529, + "grad_norm": 7.973224876288721, + "learning_rate": 8.543092021658259e-06, + "loss": 0.3311, + "step": 530 + }, + { + "epoch": 0.9926470588235294, + "grad_norm": 7.223605900810482, + "learning_rate": 8.466786399247663e-06, + "loss": 0.3561, + "step": 540 + }, + { + "epoch": 1.0110294117647058, + "grad_norm": 7.955108957559817, + "learning_rate": 8.388893114496706e-06, + "loss": 0.3474, + "step": 550 + }, + { + "epoch": 1.0294117647058822, + "grad_norm": 8.495071396849232, + "learning_rate": 8.309447839702583e-06, + "loss": 0.2188, + "step": 560 + }, + { + "epoch": 1.0477941176470589, + "grad_norm": 6.043931760485918, + "learning_rate": 8.228486957917608e-06, + "loss": 0.2178, + "step": 570 + }, + { + "epoch": 1.0661764705882353, + "grad_norm": 6.438867996730345, + "learning_rate": 8.146047546287077e-06, + "loss": 0.2783, + "step": 580 + }, + { + "epoch": 1.0845588235294117, + "grad_norm": 3.6977346854366107, + "learning_rate": 8.062167359069301e-06, + "loss": 0.2463, + "step": 590 + }, + { + "epoch": 1.1029411764705883, + "grad_norm": 6.660661443962452, + "learning_rate": 7.97688481034551e-06, + "loss": 0.2634, + "step": 600 + }, + { + "epoch": 1.1213235294117647, + "grad_norm": 9.365314735040004, + "learning_rate": 7.8902389564276e-06, + "loss": 0.294, + "step": 610 + }, + { + "epoch": 1.1397058823529411, + "grad_norm": 6.992327039164838, + "learning_rate": 7.802269477971771e-06, + "loss": 0.273, + "step": 620 + }, + { + "epoch": 1.1580882352941178, + "grad_norm": 16.22021668710731, + "learning_rate": 7.713016661806213e-06, + "loss": 0.2975, + "step": 630 + }, + { + "epoch": 1.1764705882352942, + "grad_norm": 5.1105720664815, + "learning_rate": 7.622521382481208e-06, + "loss": 0.2831, + "step": 640 + }, + { + "epoch": 1.1948529411764706, + "grad_norm": 18.745915660915887, + "learning_rate": 7.530825083550073e-06, + "loss": 0.3548, + "step": 650 + }, + { + "epoch": 1.213235294117647, + "grad_norm": 10.329160246000239, + "learning_rate": 7.437969758589508e-06, + "loss": 0.2454, + "step": 660 + }, + { + "epoch": 1.2316176470588236, + "grad_norm": 6.408214730217885, + "learning_rate": 7.343997931968068e-06, + "loss": 0.2694, + "step": 670 + }, + { + "epoch": 1.25, + "grad_norm": 7.486293079129486, + "learning_rate": 7.248952639371543e-06, + "loss": 0.3091, + "step": 680 + }, + { + "epoch": 1.2683823529411764, + "grad_norm": 5.956954386852354, + "learning_rate": 7.152877408094179e-06, + "loss": 0.2305, + "step": 690 + }, + { + "epoch": 1.2867647058823528, + "grad_norm": 8.065888848768314, + "learning_rate": 7.055816237104753e-06, + "loss": 0.3002, + "step": 700 + }, + { + "epoch": 1.3051470588235294, + "grad_norm": 3.322320099042565, + "learning_rate": 6.957813576896647e-06, + "loss": 0.2868, + "step": 710 + }, + { + "epoch": 1.3235294117647058, + "grad_norm": 11.20812027560389, + "learning_rate": 6.858914309131131e-06, + "loss": 0.2342, + "step": 720 + }, + { + "epoch": 1.3419117647058822, + "grad_norm": 11.126428155503467, + "learning_rate": 6.7591637260831925e-06, + "loss": 0.2143, + "step": 730 + }, + { + "epoch": 1.3602941176470589, + "grad_norm": 6.169632411834191, + "learning_rate": 6.6586075098993196e-06, + "loss": 0.3071, + "step": 740 + }, + { + "epoch": 1.3786764705882353, + "grad_norm": 8.952863279335729, + "learning_rate": 6.557291711676738e-06, + "loss": 0.2977, + "step": 750 + }, + { + "epoch": 1.3970588235294117, + "grad_norm": 4.407249523532787, + "learning_rate": 6.455262730373673e-06, + "loss": 0.2326, + "step": 760 + }, + { + "epoch": 1.4154411764705883, + "grad_norm": 11.807741453984933, + "learning_rate": 6.352567291560319e-06, + "loss": 0.3158, + "step": 770 + }, + { + "epoch": 1.4338235294117647, + "grad_norm": 13.900682242664102, + "learning_rate": 6.249252426020217e-06, + "loss": 0.3301, + "step": 780 + }, + { + "epoch": 1.4522058823529411, + "grad_norm": 10.2905193894227, + "learning_rate": 6.145365448211866e-06, + "loss": 0.2937, + "step": 790 + }, + { + "epoch": 1.4705882352941178, + "grad_norm": 5.654029084586675, + "learning_rate": 6.040953934600425e-06, + "loss": 0.2229, + "step": 800 + }, + { + "epoch": 1.4889705882352942, + "grad_norm": 7.884909374384519, + "learning_rate": 5.936065701869404e-06, + "loss": 0.3169, + "step": 810 + }, + { + "epoch": 1.5073529411764706, + "grad_norm": 4.885582156638979, + "learning_rate": 5.830748785022369e-06, + "loss": 0.257, + "step": 820 + }, + { + "epoch": 1.5257352941176472, + "grad_norm": 10.069197658253753, + "learning_rate": 5.725051415384657e-06, + "loss": 0.2766, + "step": 830 + }, + { + "epoch": 1.5441176470588234, + "grad_norm": 8.25370914927739, + "learning_rate": 5.619021998515165e-06, + "loss": 0.2385, + "step": 840 + }, + { + "epoch": 1.5625, + "grad_norm": 4.810424736549512, + "learning_rate": 5.51270909203838e-06, + "loss": 0.2844, + "step": 850 + }, + { + "epoch": 1.5808823529411766, + "grad_norm": 10.0208212747629, + "learning_rate": 5.40616138340673e-06, + "loss": 0.2924, + "step": 860 + }, + { + "epoch": 1.5992647058823528, + "grad_norm": 13.748183320384355, + "learning_rate": 5.299427667603516e-06, + "loss": 0.2826, + "step": 870 + }, + { + "epoch": 1.6176470588235294, + "grad_norm": 2.892654980772666, + "learning_rate": 5.1925568247965686e-06, + "loss": 0.2106, + "step": 880 + }, + { + "epoch": 1.6360294117647058, + "grad_norm": 4.016652056640837, + "learning_rate": 5.085597797952906e-06, + "loss": 0.3306, + "step": 890 + }, + { + "epoch": 1.6544117647058822, + "grad_norm": 4.348213620564617, + "learning_rate": 4.97859957042464e-06, + "loss": 0.2227, + "step": 900 + }, + { + "epoch": 1.6727941176470589, + "grad_norm": 8.314405849156318, + "learning_rate": 4.871611143516367e-06, + "loss": 0.2275, + "step": 910 + }, + { + "epoch": 1.6911764705882353, + "grad_norm": 3.1251931465193747, + "learning_rate": 4.7646815140443625e-06, + "loss": 0.2966, + "step": 920 + }, + { + "epoch": 1.7095588235294117, + "grad_norm": 2.9353246185637287, + "learning_rate": 4.657859651897807e-06, + "loss": 0.228, + "step": 930 + }, + { + "epoch": 1.7279411764705883, + "grad_norm": 4.988890457346432, + "learning_rate": 4.551194477612351e-06, + "loss": 0.2694, + "step": 940 + }, + { + "epoch": 1.7463235294117647, + "grad_norm": 2.1319176010435252, + "learning_rate": 4.444734839966306e-06, + "loss": 0.1944, + "step": 950 + }, + { + "epoch": 1.7647058823529411, + "grad_norm": 4.43095941592791, + "learning_rate": 4.338529493609647e-06, + "loss": 0.2479, + "step": 960 + }, + { + "epoch": 1.7830882352941178, + "grad_norm": 4.620277796996259, + "learning_rate": 4.232627076736181e-06, + "loss": 0.1819, + "step": 970 + }, + { + "epoch": 1.8014705882352942, + "grad_norm": 9.324548402262511, + "learning_rate": 4.127076088809e-06, + "loss": 0.2514, + "step": 980 + }, + { + "epoch": 1.8198529411764706, + "grad_norm": 9.685553327436127, + "learning_rate": 4.021924868349493e-06, + "loss": 0.24, + "step": 990 + }, + { + "epoch": 1.8382352941176472, + "grad_norm": 4.557597261535076, + "learning_rate": 3.9172215708000655e-06, + "loss": 0.2477, + "step": 1000 + } + ], + "logging_steps": 10, + "max_steps": 1632, + "num_input_tokens_seen": 0, + "num_train_epochs": 3, + "save_steps": 500, + "stateful_callbacks": { + "TrainerControl": { + "args": { + "should_epoch_stop": false, + "should_evaluate": false, + "should_log": false, + "should_save": true, + "should_training_stop": false + }, + "attributes": {} + } + }, + "total_flos": 151077814272.0, + "train_batch_size": 1, + "trial_name": null, + "trial_params": null +} diff --git a/checkpoint-1000/training_args.bin b/checkpoint-1000/training_args.bin new file mode 100644 index 0000000..10fbb2a --- /dev/null +++ b/checkpoint-1000/training_args.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4bebf5c7141bddbed6a7feb4bf1a35ed3fbf020c7c4dc7ab21f6f30268f7e3 +size 7352 diff --git a/checkpoint-1000/zero_to_fp32.py b/checkpoint-1000/zero_to_fp32.py new file mode 100644 index 0000000..0e75914 --- /dev/null +++ b/checkpoint-1000/zero_to_fp32.py @@ -0,0 +1,760 @@ +#!/usr/bin/env python + +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 + +# DeepSpeed Team + +# This script extracts fp32 consolidated weights from a zero 1, 2 and 3 DeepSpeed checkpoints. It gets +# copied into the top level checkpoint dir, so the user can easily do the conversion at any point in +# the future. Once extracted, the weights don't require DeepSpeed and can be used in any +# application. +# +# example: +# python zero_to_fp32.py . output_dir/ +# or +# python zero_to_fp32.py . output_dir/ --safe_serialization + +import argparse +import torch +import glob +import math +import os +import re +import gc +import json +import numpy as np +from tqdm import tqdm +from collections import OrderedDict +from dataclasses import dataclass + +# while this script doesn't use deepspeed to recover data, since the checkpoints are pickled with +# DeepSpeed data structures it has to be available in the current python environment. +from deepspeed.utils import logger +from deepspeed.checkpoint.constants import (DS_VERSION, OPTIMIZER_STATE_DICT, SINGLE_PARTITION_OF_FP32_GROUPS, + FP32_FLAT_GROUPS, ZERO_STAGE, PARTITION_COUNT, PARAM_SHAPES, BUFFER_NAMES, + FROZEN_PARAM_SHAPES, FROZEN_PARAM_FRAGMENTS) + + +@dataclass +class zero_model_state: + buffers: dict() + param_shapes: dict() + shared_params: list + ds_version: int + frozen_param_shapes: dict() + frozen_param_fragments: dict() + + +debug = 0 + +# load to cpu +device = torch.device('cpu') + + +def atoi(text): + return int(text) if text.isdigit() else text + + +def natural_keys(text): + ''' + alist.sort(key=natural_keys) sorts in human order + http://nedbatchelder.com/blog/200712/human_sorting.html + (See Toothy's implementation in the comments) + ''' + return [atoi(c) for c in re.split(r'(\d+)', text)] + + +def get_model_state_file(checkpoint_dir, zero_stage): + if not os.path.isdir(checkpoint_dir): + raise FileNotFoundError(f"Directory '{checkpoint_dir}' doesn't exist") + + # there should be only one file + if zero_stage <= 2: + file = os.path.join(checkpoint_dir, "mp_rank_00_model_states.pt") + elif zero_stage == 3: + file = os.path.join(checkpoint_dir, "zero_pp_rank_0_mp_rank_00_model_states.pt") + + if not os.path.exists(file): + raise FileNotFoundError(f"can't find model states file at '{file}'") + + return file + + +def get_checkpoint_files(checkpoint_dir, glob_pattern): + # XXX: need to test that this simple glob rule works for multi-node setup too + ckpt_files = sorted(glob.glob(os.path.join(checkpoint_dir, glob_pattern)), key=natural_keys) + + if len(ckpt_files) == 0: + raise FileNotFoundError(f"can't find {glob_pattern} files in directory '{checkpoint_dir}'") + + return ckpt_files + + +def get_optim_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_optim_states.pt") + + +def get_model_state_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_model_states.pt") + + +def parse_model_states(files): + zero_model_states = [] + for file in files: + state_dict = torch.load(file, map_location=device, weights_only=False) + + if BUFFER_NAMES not in state_dict: + raise ValueError(f"{file} is not a model state checkpoint") + buffer_names = state_dict[BUFFER_NAMES] + if debug: + print("Found buffers:", buffer_names) + + # recover just the buffers while restoring them to fp32 if they were saved in fp16 + buffers = {k: v.float() for k, v in state_dict["module"].items() if k in buffer_names} + param_shapes = state_dict[PARAM_SHAPES] + + # collect parameters that are included in param_shapes + param_names = [] + for s in param_shapes: + for name in s.keys(): + param_names.append(name) + + # update with frozen parameters + frozen_param_shapes = state_dict.get(FROZEN_PARAM_SHAPES, None) + if frozen_param_shapes is not None: + if debug: + print(f"Found frozen_param_shapes: {frozen_param_shapes}") + param_names += list(frozen_param_shapes.keys()) + + # handle shared params + shared_params = [[k, v] for k, v in state_dict["shared_params"].items()] + + ds_version = state_dict.get(DS_VERSION, None) + + frozen_param_fragments = state_dict.get(FROZEN_PARAM_FRAGMENTS, None) + + z_model_state = zero_model_state(buffers=buffers, + param_shapes=param_shapes, + shared_params=shared_params, + ds_version=ds_version, + frozen_param_shapes=frozen_param_shapes, + frozen_param_fragments=frozen_param_fragments) + zero_model_states.append(z_model_state) + + return zero_model_states + + +def parse_optim_states(files, ds_checkpoint_dir): + total_files = len(files) + state_dicts = [] + for f in tqdm(files, desc='Loading checkpoint shards'): + state_dict = torch.load(f, map_location=device, mmap=True, weights_only=False) + # immediately discard the potentially huge 2 optimizer states as we only care for fp32 master weights + # and also handle the case where it was already removed by another helper script + state_dict["optimizer_state_dict"].pop("optimizer_state_dict", None) + state_dicts.append(state_dict) + + if not ZERO_STAGE in state_dicts[0][OPTIMIZER_STATE_DICT]: + raise ValueError(f"{files[0]} is not a zero checkpoint") + zero_stage = state_dicts[0][OPTIMIZER_STATE_DICT][ZERO_STAGE] + world_size = state_dicts[0][OPTIMIZER_STATE_DICT][PARTITION_COUNT] + + # For ZeRO-2 each param group can have different partition_count as data parallelism for expert + # parameters can be different from data parallelism for non-expert parameters. So we can just + # use the max of the partition_count to get the dp world_size. + + if type(world_size) is list: + world_size = max(world_size) + + if world_size != total_files: + raise ValueError( + f"Expected {world_size} of '*_optim_states.pt' under '{ds_checkpoint_dir}' but found {total_files} files. " + "Possibly due to an overwrite of an old checkpoint, or a checkpoint didn't get saved by one or more processes." + ) + + # the groups are named differently in each stage + if zero_stage <= 2: + fp32_groups_key = SINGLE_PARTITION_OF_FP32_GROUPS + elif zero_stage == 3: + fp32_groups_key = FP32_FLAT_GROUPS + else: + raise ValueError(f"unknown zero stage {zero_stage}") + + fp32_flat_groups = [state_dicts[i][OPTIMIZER_STATE_DICT][fp32_groups_key] for i in range(len(state_dicts))] + return zero_stage, world_size, fp32_flat_groups + + +def _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters): + """ + Returns fp32 state_dict reconstructed from ds checkpoint + + Args: + - ``ds_checkpoint_dir``: path to the deepspeed checkpoint folder (where the optimizer files are) + + """ + print(f"Processing zero checkpoint '{ds_checkpoint_dir}'") + + optim_files = get_optim_files(ds_checkpoint_dir) + zero_stage, world_size, fp32_flat_groups = parse_optim_states(optim_files, ds_checkpoint_dir) + print(f"Detected checkpoint of type zero stage {zero_stage}, world_size: {world_size}") + + model_files = get_model_state_files(ds_checkpoint_dir) + + zero_model_states = parse_model_states(model_files) + print(f'Parsing checkpoint created by deepspeed=={zero_model_states[0].ds_version}') + + if zero_stage <= 2: + return _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + elif zero_stage == 3: + return _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + + +def _zero2_merge_frozen_params(state_dict, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + frozen_param_fragments = zero_model_states[0].frozen_param_fragments + + if debug: + num_elem = sum(s.numel() for s in frozen_param_shapes.values()) + print(f'rank 0: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in frozen_param_fragments.values()]) + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + state_dict[name] = frozen_param_fragments[name] + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +def _has_callable(obj, fn): + attr = getattr(obj, fn, None) + return callable(attr) + + +def _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + + # Reconstruction protocol: + # + # XXX: document this + + if debug: + for i in range(world_size): + for j in range(len(fp32_flat_groups[0])): + print(f"{FP32_FLAT_GROUPS}[{i}][{j}].shape={fp32_flat_groups[i][j].shape}") + + # XXX: memory usage doubles here (zero2) + num_param_groups = len(fp32_flat_groups[0]) + merged_single_partition_of_fp32_groups = [] + for i in range(num_param_groups): + merged_partitions = [sd[i] for sd in fp32_flat_groups] + full_single_fp32_vector = torch.cat(merged_partitions, 0) + merged_single_partition_of_fp32_groups.append(full_single_fp32_vector) + avail_numel = sum( + [full_single_fp32_vector.numel() for full_single_fp32_vector in merged_single_partition_of_fp32_groups]) + + if debug: + wanted_params = sum([len(shapes) for shapes in param_shapes]) + wanted_numel = sum([sum(shape.numel() for shape in shapes.values()) for shapes in param_shapes]) + # not asserting if there is a mismatch due to possible padding + print(f"Have {avail_numel} numels to process.") + print(f"Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + total_numel = 0 + total_params = 0 + for shapes, full_single_fp32_vector in zip(param_shapes, merged_single_partition_of_fp32_groups): + offset = 0 + avail_numel = full_single_fp32_vector.numel() + for name, shape in shapes.items(): + + unpartitioned_numel = shape.numel() if _has_callable(shape, 'numel') else math.prod(shape) + total_numel += unpartitioned_numel + total_params += 1 + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + state_dict[name] = full_single_fp32_vector.narrow(0, offset, unpartitioned_numel).view(shape) + offset += unpartitioned_numel + + # Z2 started to align to 2*world_size to improve nccl performance. Therefore both offset and + # avail_numel can differ by anywhere between 0..2*world_size. Due to two unrelated complex + # paddings performed in the code it's almost impossible to predict the exact numbers w/o the + # live optimizer object, so we are checking that the numbers are within the right range + align_to = 2 * world_size + + def zero2_align(x): + return align_to * math.ceil(x / align_to) + + if debug: + print(f"original offset={offset}, avail_numel={avail_numel}") + + offset = zero2_align(offset) + avail_numel = zero2_align(avail_numel) + + if debug: + print(f"aligned offset={offset}, avail_numel={avail_numel}") + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero2_merge_frozen_params(state_dict, zero_model_states) + + _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def zero3_partitioned_param_info(unpartitioned_numel, world_size): + remainder = unpartitioned_numel % world_size + padding_numel = (world_size - remainder) if remainder else 0 + partitioned_numel = math.ceil(unpartitioned_numel / world_size) + return partitioned_numel, padding_numel + + +def _zero3_merge_frozen_params(state_dict, world_size, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + if debug: + for i in range(world_size): + num_elem = sum(s.numel() for s in zero_model_states[i].frozen_param_fragments.values()) + print(f'rank {i}: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in zero_model_states[0].frozen_param_fragments.values()]) * world_size + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in zero_model_states[0].frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + param_frags = tuple(model_state.frozen_param_fragments[name] for model_state in zero_model_states) + state_dict[name] = torch.cat(param_frags, 0).narrow(0, 0, unpartitioned_numel).view(shape) + + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Frozen params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +class GatheredTensor: + """ + A pseudo tensor that collects partitioned weights. + It is more memory efficient when there are multiple groups. + """ + + def __init__(self, flat_groups, flat_groups_offset, offset, partitioned_numel, shape): + self.flat_groups = flat_groups + self.flat_groups_offset = flat_groups_offset + self.offset = offset + self.partitioned_numel = partitioned_numel + self.shape = shape + self.dtype = self.flat_groups[0][0].dtype + + def contiguous(self): + """ + Merge partitioned weights from flat_groups into a single tensor. + """ + end_idx = self.offset + self.partitioned_numel + world_size = len(self.flat_groups) + pad_flat_param_chunks = [] + + for rank_i in range(world_size): + # for each rank, we need to collect weights from related group/groups + flat_groups_at_rank_i = self.flat_groups[rank_i] + start_group_id = None + end_group_id = None + for group_id in range(len(self.flat_groups_offset)): + if self.flat_groups_offset[group_id] <= self.offset < self.flat_groups_offset[group_id + 1]: + start_group_id = group_id + if self.flat_groups_offset[group_id] < end_idx <= self.flat_groups_offset[group_id + 1]: + end_group_id = group_id + break + # collect weights from related group/groups + for group_id in range(start_group_id, end_group_id + 1): + flat_tensor = flat_groups_at_rank_i[group_id] + start_offset = self.offset - self.flat_groups_offset[group_id] + end_offset = min(end_idx, self.flat_groups_offset[group_id + 1]) - self.flat_groups_offset[group_id] + pad_flat_param_chunks.append(flat_tensor[start_offset:end_offset]) + + # collect weights from all ranks + pad_flat_param = torch.cat(pad_flat_param_chunks, dim=0) + param = pad_flat_param[:self.shape.numel()].view(self.shape).contiguous() + return param + + +def _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + avail_numel = sum([flat_group.numel() for flat_group in fp32_flat_groups[0]]) * world_size + + # Reconstruction protocol: For zero3 we need to zip the partitions together at boundary of each + # param, re-consolidating each param, while dealing with padding if any + + # merge list of dicts, preserving order + param_shapes = {k: v for d in param_shapes for k, v in d.items()} + + if debug: + for i in range(world_size): + print(f"{FP32_FLAT_GROUPS}[{i}].shape={fp32_flat_groups[i].shape}") + + wanted_params = len(param_shapes) + wanted_numel = sum(shape.numel() for shape in param_shapes.values()) + # not asserting if there is a mismatch due to possible padding + avail_numel = fp32_flat_groups[0].numel() * world_size + print(f"Trainable params: Have {avail_numel} numels to process.") + print(f"Trainable params: Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + offset = 0 + total_numel = 0 + total_params = 0 + flat_groups_offset = [0] + list(np.cumsum([flat_tensor.numel() for flat_tensor in fp32_flat_groups[0]])) + for name, shape in tqdm(param_shapes.items(), desc='Gathering sharded weights'): + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + total_params += 1 + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Trainable params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + # memory efficient tensor + tensor = GatheredTensor(fp32_flat_groups, flat_groups_offset, offset, partitioned_numel, shape) + state_dict[name] = tensor + offset += partitioned_numel + + offset *= world_size + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed Trainable fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero3_merge_frozen_params(state_dict, world_size, zero_model_states) + + _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def to_torch_tensor(state_dict, return_empty_tensor=False): + """ + Convert state_dict of GatheredTensor to torch tensor + """ + torch_state_dict = {} + converted_tensors = {} + for name, tensor in state_dict.items(): + tensor_id = id(tensor) + if tensor_id in converted_tensors: # shared tensors + shared_tensor = torch_state_dict[converted_tensors[tensor_id]] + torch_state_dict[name] = shared_tensor + else: + converted_tensors[tensor_id] = name + if return_empty_tensor: + torch_state_dict[name] = torch.empty(tensor.shape, dtype=tensor.dtype) + else: + torch_state_dict[name] = tensor.contiguous() + return torch_state_dict + + +def get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag=None, + exclude_frozen_parameters=False, + lazy_mode=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated state_dict that can be loaded with + ``load_state_dict()`` and used for training without DeepSpeed or shared with others, for example + via a model hub. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in 'latest' file. e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + - ``lazy_mode``: get state_dict in lazy mode. It returns a dict of pesduo tensor instead of torch tensor, which is more memory efficient. + Convert the pesduo tensor to torch tensor by ``.contiguous()`` + + Returns: + - pytorch ``state_dict`` + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + # do the training and checkpoint saving + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir) # already on cpu + model = model.cpu() # move to cpu + model.load_state_dict(state_dict) + # submit to model hub or save the model to share with others + + In this example the ``model`` will no longer be usable in the deepspeed context of the same + application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + If you want it all done for you, use ``load_state_dict_from_zero_checkpoint`` instead. + + Note: the above usage may not work if your application doesn't have sufficient free CPU memory. + You may need to use the offline approach using the ``zero_to_fp32.py`` script that is saved with + the checkpoint. Or you can load state_dict in lazy mode :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, lazy_mode=True) # not on cpu + for name, lazy_tensor in state_dict.item(): + tensor = lazy_tensor.contiguous() # to cpu + print(name, tensor) + # del tensor to release memory if it no longer in use + """ + if tag is None: + latest_path = os.path.join(checkpoint_dir, 'latest') + if os.path.isfile(latest_path): + with open(latest_path, 'r') as fd: + tag = fd.read().strip() + else: + raise ValueError(f"Unable to find 'latest' file at {latest_path}") + + ds_checkpoint_dir = os.path.join(checkpoint_dir, tag) + + if not os.path.isdir(ds_checkpoint_dir): + raise FileNotFoundError(f"Directory '{ds_checkpoint_dir}' doesn't exist") + + state_dict = _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters) + if lazy_mode: + return state_dict + else: + return to_torch_tensor(state_dict) + + +def convert_zero_checkpoint_to_fp32_state_dict(checkpoint_dir, + output_dir, + max_shard_size="5GB", + safe_serialization=False, + tag=None, + exclude_frozen_parameters=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` file that can be + loaded with ``torch.load(file)`` + ``load_state_dict()`` and used for training without DeepSpeed. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``output_dir``: directory to the pytorch fp32 state_dict output files + - ``max_shard_size``: the maximum size for a checkpoint before being sharded, default value is 5GB + - ``safe_serialization``: whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`). + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + """ + + # Dependency pre-check + if safe_serialization: + try: + from safetensors.torch import save_file + except ImportError: + print('If you want to use `safe_serialization`, please `pip install safetensors`') + raise + if max_shard_size is not None: + try: + from huggingface_hub import split_torch_state_dict_into_shards + except ImportError: + print('If you want to use `max_shard_size`, please `pip install huggingface_hub`') + raise + + # Convert zero checkpoint to state_dict + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag, + exclude_frozen_parameters, + lazy_mode=True) + + # Shard the model if it is too big. + weights_name = "model.safetensors" if safe_serialization else "pytorch_model.bin" + if max_shard_size is not None: + filename_pattern = weights_name.replace(".bin", "{suffix}.bin").replace(".safetensors", "{suffix}.safetensors") + # an memory-efficient approach for sharding + empty_state_dict = to_torch_tensor(state_dict, return_empty_tensor=True) + state_dict_split = split_torch_state_dict_into_shards(empty_state_dict, + filename_pattern=filename_pattern, + max_shard_size=max_shard_size) + else: + from collections import namedtuple + StateDictSplit = namedtuple("StateDictSplit", ["is_sharded", "filename_to_tensors"]) + state_dict_split = StateDictSplit(is_sharded=False, + filename_to_tensors={weights_name: list(state_dict.keys())}) + + # Save the model by shard + os.makedirs(output_dir, exist_ok=True) + filename_to_tensors = state_dict_split.filename_to_tensors.items() + for shard_file, tensors in tqdm(filename_to_tensors, desc="Saving checkpoint shards"): + shard_state_dict = {tensor_name: state_dict[tensor_name] for tensor_name in tensors} + shard_state_dict = to_torch_tensor(shard_state_dict) + output_path = os.path.join(output_dir, shard_file) + if safe_serialization: + save_file(shard_state_dict, output_path, metadata={"format": "pt"}) + else: + torch.save(shard_state_dict, output_path) + # release the memory of current shard + for tensor_name in list(shard_state_dict.keys()): + del state_dict[tensor_name] + del shard_state_dict[tensor_name] + del shard_state_dict + gc.collect() + + # Save index if sharded + if state_dict_split.is_sharded: + index = { + "metadata": state_dict_split.metadata, + "weight_map": state_dict_split.tensor_to_filename, + } + save_index_file = "model.safetensors.index.json" if safe_serialization else "pytorch_model.bin.index.json" + save_index_file = os.path.join(output_dir, save_index_file) + with open(save_index_file, "w", encoding="utf-8") as f: + content = json.dumps(index, indent=2, sort_keys=True) + "\n" + f.write(content) + + +def load_state_dict_from_zero_checkpoint(model, checkpoint_dir, tag=None): + """ + 1. Put the provided model to cpu + 2. Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` + 3. Load it into the provided model + + Args: + - ``model``: the model object to update + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + + Returns: + - ``model`: modified model + + Make sure you have plenty of CPU memory available before you call this function. If you don't + have enough use the ``zero_to_fp32.py`` utility to do the conversion. You will find it + conveniently placed for you in the checkpoint folder. + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import load_state_dict_from_zero_checkpoint + model = load_state_dict_from_zero_checkpoint(trainer.model, checkpoint_dir) + # submit to model hub or save the model to share with others + + Note, that once this was run, the ``model`` will no longer be usable in the deepspeed context + of the same application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + """ + logger.info(f"Extracting fp32 weights") + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, tag) + + logger.info(f"Overwriting model with fp32 weights") + model = model.cpu() + model.load_state_dict(state_dict, strict=False) + + return model + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("checkpoint_dir", + type=str, + help="path to the desired checkpoint folder, e.g., path/checkpoint-12") + parser.add_argument("output_dir", + type=str, + help="directory to the pytorch fp32 state_dict output files" + "(e.g. path/checkpoint-12-output/)") + parser.add_argument( + "--max_shard_size", + type=str, + default="5GB", + help="The maximum size for a checkpoint before being sharded. Checkpoints shard will then be each of size" + "lower than this size. If expressed as a string, needs to be digits followed by a unit (like `5MB`" + "We default it to 5GB in order for models to be able to run easily on free-tier google colab instances" + "without CPU OOM issues.") + parser.add_argument( + "--safe_serialization", + default=False, + action='store_true', + help="Whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`).") + parser.add_argument("-t", + "--tag", + type=str, + default=None, + help="checkpoint tag used as a unique identifier for checkpoint. e.g., global_step1") + parser.add_argument("--exclude_frozen_parameters", action='store_true', help="exclude frozen parameters") + parser.add_argument("-d", "--debug", action='store_true', help="enable debug") + args = parser.parse_args() + + debug = args.debug + + convert_zero_checkpoint_to_fp32_state_dict(args.checkpoint_dir, + args.output_dir, + max_shard_size=args.max_shard_size, + safe_serialization=args.safe_serialization, + tag=args.tag, + exclude_frozen_parameters=args.exclude_frozen_parameters) diff --git a/checkpoint-1500/config.json b/checkpoint-1500/config.json new file mode 100644 index 0000000..5a1694f --- /dev/null +++ b/checkpoint-1500/config.json @@ -0,0 +1,36 @@ +{ + "_name_or_path": "meta-llama/Llama-3.2-1B", + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 128000, + "eos_token_id": 128001, + "head_dim": 64, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 8192, + "max_position_embeddings": 131072, + "mlp_bias": false, + "model_type": "llama", + "num_attention_heads": 32, + "num_hidden_layers": 16, + "num_key_value_heads": 8, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": { + "factor": 32.0, + "high_freq_factor": 4.0, + "low_freq_factor": 1.0, + "original_max_position_embeddings": 8192, + "rope_type": "llama3" + }, + "rope_theta": 500000.0, + "tie_word_embeddings": true, + "torch_dtype": "bfloat16", + "transformers_version": "4.46.1", + "use_cache": false, + "vocab_size": 128256 +} diff --git a/checkpoint-1500/generation_config.json b/checkpoint-1500/generation_config.json new file mode 100644 index 0000000..eab5082 --- /dev/null +++ b/checkpoint-1500/generation_config.json @@ -0,0 +1,9 @@ +{ + "_from_model_config": true, + "bos_token_id": 128000, + "do_sample": true, + "eos_token_id": 128001, + "temperature": 0.6, + "top_p": 0.9, + "transformers_version": "4.46.1" +} diff --git a/checkpoint-1500/global_step1500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt b/checkpoint-1500/global_step1500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt new file mode 100644 index 0000000..b02209f --- /dev/null +++ b/checkpoint-1500/global_step1500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f1e68b08d66e431b3cd54cd0f89659dff824fc2df3105c3b2e2180ac2da06517 +size 14829779262 diff --git a/checkpoint-1500/global_step1500/zero_pp_rank_0_mp_rank_00_model_states.pt b/checkpoint-1500/global_step1500/zero_pp_rank_0_mp_rank_00_model_states.pt new file mode 100644 index 0000000..d4fe419 --- /dev/null +++ b/checkpoint-1500/global_step1500/zero_pp_rank_0_mp_rank_00_model_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a48e8852617ed68d2128d22e238030c2b0bba361e1cfee8f20d5f61a7370aee8 +size 76664 diff --git a/checkpoint-1500/latest b/checkpoint-1500/latest new file mode 100644 index 0000000..c56ff77 --- /dev/null +++ b/checkpoint-1500/latest @@ -0,0 +1 @@ +global_step1500 \ No newline at end of file diff --git a/checkpoint-1500/model.safetensors b/checkpoint-1500/model.safetensors new file mode 100644 index 0000000..1142159 --- /dev/null +++ b/checkpoint-1500/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2c807005cf21d562786f30bcca039f1908d791df0c8e69013f2cad81e826a57e +size 2471645608 diff --git a/checkpoint-1500/rng_state.pth b/checkpoint-1500/rng_state.pth new file mode 100644 index 0000000..fb20aa3 --- /dev/null +++ b/checkpoint-1500/rng_state.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b5fa02ce1f2057ffdcccd86019817387a38e6b835bf0ecf5d2277b489b598e7 +size 14244 diff --git a/checkpoint-1500/scheduler.pt b/checkpoint-1500/scheduler.pt new file mode 100644 index 0000000..c6643c0 --- /dev/null +++ b/checkpoint-1500/scheduler.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a7e74e96ab047aa96cdf8dce254abe6ca588ba7199dd2ebe656d636245ccf92a +size 1064 diff --git a/checkpoint-1500/special_tokens_map.json b/checkpoint-1500/special_tokens_map.json new file mode 100644 index 0000000..426a800 --- /dev/null +++ b/checkpoint-1500/special_tokens_map.json @@ -0,0 +1,33 @@ +{ + "additional_special_tokens": [ + { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } + ], + "bos_token": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": "<|end_of_text|>" +} diff --git a/checkpoint-1500/tokenizer.json b/checkpoint-1500/tokenizer.json new file mode 100644 index 0000000..1c1d8d5 --- /dev/null +++ b/checkpoint-1500/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9e4e7fb171f92fd137b777cc2714bf87d11576700a1dcd7a399e7bbe39537b +size 17209920 diff --git a/checkpoint-1500/tokenizer_config.json b/checkpoint-1500/tokenizer_config.json new file mode 100644 index 0000000..3a8f322 --- /dev/null +++ b/checkpoint-1500/tokenizer_config.json @@ -0,0 +1,2069 @@ +{ + "added_tokens_decoder": { + "128000": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128001": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128002": { + "content": "<|reserved_special_token_0|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128003": { + "content": "<|reserved_special_token_1|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128004": { + "content": "<|finetune_right_pad_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128005": { + "content": "<|reserved_special_token_2|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128006": { + "content": "<|start_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128007": { + "content": "<|end_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128008": { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128009": { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128010": { + "content": "<|python_tag|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128011": { + "content": "<|reserved_special_token_3|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128012": { + "content": "<|reserved_special_token_4|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128013": { + "content": "<|reserved_special_token_5|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128014": { + "content": "<|reserved_special_token_6|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128015": { + "content": "<|reserved_special_token_7|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128016": { + "content": "<|reserved_special_token_8|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128017": { + "content": "<|reserved_special_token_9|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128018": { + "content": "<|reserved_special_token_10|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128019": { + "content": "<|reserved_special_token_11|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128020": { + "content": "<|reserved_special_token_12|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128021": { + "content": "<|reserved_special_token_13|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128022": { + "content": "<|reserved_special_token_14|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128023": { + "content": "<|reserved_special_token_15|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128024": { + "content": "<|reserved_special_token_16|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128025": { + "content": "<|reserved_special_token_17|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128026": { + "content": "<|reserved_special_token_18|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128027": { + "content": "<|reserved_special_token_19|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128028": { + "content": "<|reserved_special_token_20|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128029": { + "content": "<|reserved_special_token_21|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128030": { + "content": "<|reserved_special_token_22|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128031": { + "content": "<|reserved_special_token_23|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128032": { + "content": "<|reserved_special_token_24|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128033": { + "content": "<|reserved_special_token_25|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128034": { + "content": "<|reserved_special_token_26|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128035": { + "content": "<|reserved_special_token_27|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128036": { + "content": "<|reserved_special_token_28|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128037": { + "content": "<|reserved_special_token_29|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128038": { + "content": "<|reserved_special_token_30|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128039": { + "content": "<|reserved_special_token_31|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128040": { + "content": "<|reserved_special_token_32|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128041": { + "content": "<|reserved_special_token_33|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128042": { + "content": "<|reserved_special_token_34|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128043": { + "content": "<|reserved_special_token_35|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128044": { + "content": "<|reserved_special_token_36|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128045": { + "content": "<|reserved_special_token_37|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128046": { + "content": "<|reserved_special_token_38|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128047": { + "content": "<|reserved_special_token_39|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128048": { + "content": "<|reserved_special_token_40|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128049": { + "content": "<|reserved_special_token_41|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128050": { + "content": "<|reserved_special_token_42|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128051": { + "content": "<|reserved_special_token_43|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128052": { + "content": "<|reserved_special_token_44|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128053": { + "content": "<|reserved_special_token_45|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128054": { + "content": "<|reserved_special_token_46|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128055": { + "content": "<|reserved_special_token_47|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128056": { + "content": "<|reserved_special_token_48|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128057": { + "content": "<|reserved_special_token_49|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128058": { + "content": "<|reserved_special_token_50|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128059": { + "content": "<|reserved_special_token_51|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128060": { + "content": "<|reserved_special_token_52|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128061": { + "content": "<|reserved_special_token_53|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128062": { + "content": "<|reserved_special_token_54|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128063": { + "content": "<|reserved_special_token_55|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128064": { + "content": "<|reserved_special_token_56|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128065": { + "content": "<|reserved_special_token_57|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128066": { + "content": "<|reserved_special_token_58|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128067": { + "content": "<|reserved_special_token_59|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128068": { + "content": "<|reserved_special_token_60|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128069": { + "content": "<|reserved_special_token_61|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128070": { + "content": "<|reserved_special_token_62|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128071": { + "content": "<|reserved_special_token_63|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128072": { + "content": "<|reserved_special_token_64|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128073": { + "content": "<|reserved_special_token_65|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128074": { + "content": "<|reserved_special_token_66|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128075": { + "content": "<|reserved_special_token_67|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128076": { + "content": "<|reserved_special_token_68|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128077": { + "content": "<|reserved_special_token_69|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128078": { + "content": "<|reserved_special_token_70|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128079": { + "content": "<|reserved_special_token_71|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128080": { + "content": "<|reserved_special_token_72|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128081": { + "content": "<|reserved_special_token_73|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128082": { + "content": "<|reserved_special_token_74|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128083": { + "content": "<|reserved_special_token_75|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128084": { + "content": "<|reserved_special_token_76|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128085": { + "content": "<|reserved_special_token_77|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128086": { + "content": "<|reserved_special_token_78|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128087": { + "content": "<|reserved_special_token_79|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128088": { + "content": "<|reserved_special_token_80|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128089": { + "content": "<|reserved_special_token_81|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128090": { + "content": "<|reserved_special_token_82|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128091": { + "content": "<|reserved_special_token_83|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128092": { + "content": "<|reserved_special_token_84|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128093": { + "content": "<|reserved_special_token_85|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128094": { + "content": "<|reserved_special_token_86|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128095": { + "content": "<|reserved_special_token_87|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128096": { + "content": "<|reserved_special_token_88|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128097": { + "content": "<|reserved_special_token_89|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128098": { + "content": "<|reserved_special_token_90|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128099": { + "content": "<|reserved_special_token_91|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128100": { + "content": "<|reserved_special_token_92|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128101": { + "content": "<|reserved_special_token_93|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128102": { + "content": "<|reserved_special_token_94|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128103": { + "content": "<|reserved_special_token_95|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128104": { + "content": "<|reserved_special_token_96|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128105": { + "content": "<|reserved_special_token_97|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128106": { + "content": "<|reserved_special_token_98|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128107": { + "content": "<|reserved_special_token_99|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128108": { + "content": "<|reserved_special_token_100|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128109": { + "content": "<|reserved_special_token_101|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128110": { + "content": "<|reserved_special_token_102|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128111": { + "content": "<|reserved_special_token_103|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128112": { + "content": "<|reserved_special_token_104|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128113": { + "content": "<|reserved_special_token_105|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128114": { + "content": "<|reserved_special_token_106|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128115": { + "content": "<|reserved_special_token_107|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128116": { + "content": "<|reserved_special_token_108|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128117": { + "content": "<|reserved_special_token_109|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128118": { + "content": "<|reserved_special_token_110|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128119": { + "content": "<|reserved_special_token_111|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128120": { + "content": "<|reserved_special_token_112|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128121": { + "content": "<|reserved_special_token_113|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128122": { + "content": "<|reserved_special_token_114|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128123": { + "content": "<|reserved_special_token_115|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128124": { + "content": "<|reserved_special_token_116|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128125": { + "content": "<|reserved_special_token_117|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128126": { + "content": "<|reserved_special_token_118|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128127": { + "content": "<|reserved_special_token_119|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128128": { + "content": "<|reserved_special_token_120|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128129": { + "content": "<|reserved_special_token_121|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128130": { + "content": "<|reserved_special_token_122|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128131": { + "content": "<|reserved_special_token_123|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128132": { + "content": "<|reserved_special_token_124|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128133": { + "content": "<|reserved_special_token_125|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128134": { + "content": "<|reserved_special_token_126|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128135": { + "content": "<|reserved_special_token_127|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128136": { + "content": "<|reserved_special_token_128|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128137": { + "content": "<|reserved_special_token_129|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128138": { + "content": "<|reserved_special_token_130|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128139": { + "content": "<|reserved_special_token_131|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128140": { + "content": "<|reserved_special_token_132|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128141": { + "content": "<|reserved_special_token_133|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128142": { + "content": "<|reserved_special_token_134|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128143": { + "content": "<|reserved_special_token_135|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128144": { + "content": "<|reserved_special_token_136|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128145": { + "content": "<|reserved_special_token_137|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128146": { + "content": "<|reserved_special_token_138|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128147": { + "content": "<|reserved_special_token_139|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128148": { + "content": "<|reserved_special_token_140|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128149": { + "content": "<|reserved_special_token_141|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128150": { + "content": "<|reserved_special_token_142|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128151": { + "content": "<|reserved_special_token_143|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128152": { + "content": "<|reserved_special_token_144|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128153": { + "content": "<|reserved_special_token_145|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128154": { + "content": "<|reserved_special_token_146|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128155": { + "content": "<|reserved_special_token_147|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128156": { + "content": "<|reserved_special_token_148|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128157": { + "content": "<|reserved_special_token_149|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128158": { + "content": "<|reserved_special_token_150|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128159": { + "content": "<|reserved_special_token_151|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128160": { + "content": "<|reserved_special_token_152|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128161": { + "content": "<|reserved_special_token_153|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128162": { + "content": "<|reserved_special_token_154|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128163": { + "content": "<|reserved_special_token_155|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128164": { + "content": "<|reserved_special_token_156|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128165": { + "content": "<|reserved_special_token_157|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128166": { + "content": "<|reserved_special_token_158|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128167": { + "content": "<|reserved_special_token_159|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128168": { + "content": "<|reserved_special_token_160|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128169": { + "content": "<|reserved_special_token_161|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128170": { + "content": "<|reserved_special_token_162|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128171": { + "content": "<|reserved_special_token_163|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128172": { + "content": "<|reserved_special_token_164|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128173": { + "content": "<|reserved_special_token_165|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128174": { + "content": "<|reserved_special_token_166|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128175": { + "content": "<|reserved_special_token_167|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128176": { + "content": "<|reserved_special_token_168|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128177": { + "content": "<|reserved_special_token_169|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128178": { + "content": "<|reserved_special_token_170|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128179": { + "content": "<|reserved_special_token_171|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128180": { + "content": "<|reserved_special_token_172|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128181": { + "content": "<|reserved_special_token_173|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128182": { + "content": "<|reserved_special_token_174|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128183": { + "content": "<|reserved_special_token_175|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128184": { + "content": "<|reserved_special_token_176|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128185": { + "content": "<|reserved_special_token_177|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128186": { + "content": "<|reserved_special_token_178|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128187": { + "content": "<|reserved_special_token_179|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128188": { + "content": "<|reserved_special_token_180|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128189": { + "content": "<|reserved_special_token_181|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128190": { + "content": "<|reserved_special_token_182|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128191": { + "content": "<|reserved_special_token_183|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128192": { + "content": "<|reserved_special_token_184|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128193": { + "content": "<|reserved_special_token_185|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128194": { + "content": "<|reserved_special_token_186|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128195": { + "content": "<|reserved_special_token_187|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128196": { + "content": "<|reserved_special_token_188|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128197": { + "content": "<|reserved_special_token_189|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128198": { + "content": "<|reserved_special_token_190|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128199": { + "content": "<|reserved_special_token_191|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128200": { + "content": "<|reserved_special_token_192|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128201": { + "content": "<|reserved_special_token_193|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128202": { + "content": "<|reserved_special_token_194|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128203": { + "content": "<|reserved_special_token_195|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128204": { + "content": "<|reserved_special_token_196|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128205": { + "content": "<|reserved_special_token_197|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128206": { + "content": "<|reserved_special_token_198|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128207": { + "content": "<|reserved_special_token_199|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128208": { + "content": "<|reserved_special_token_200|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128209": { + "content": "<|reserved_special_token_201|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128210": { + "content": "<|reserved_special_token_202|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128211": { + "content": "<|reserved_special_token_203|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128212": { + "content": "<|reserved_special_token_204|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128213": { + "content": "<|reserved_special_token_205|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128214": { + "content": "<|reserved_special_token_206|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128215": { + "content": "<|reserved_special_token_207|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128216": { + "content": "<|reserved_special_token_208|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128217": { + "content": "<|reserved_special_token_209|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128218": { + "content": "<|reserved_special_token_210|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128219": { + "content": "<|reserved_special_token_211|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128220": { + "content": "<|reserved_special_token_212|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128221": { + "content": "<|reserved_special_token_213|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128222": { + "content": "<|reserved_special_token_214|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128223": { + "content": "<|reserved_special_token_215|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128224": { + "content": "<|reserved_special_token_216|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128225": { + "content": "<|reserved_special_token_217|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128226": { + "content": "<|reserved_special_token_218|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128227": { + "content": "<|reserved_special_token_219|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128228": { + "content": "<|reserved_special_token_220|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128229": { + "content": "<|reserved_special_token_221|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128230": { + "content": "<|reserved_special_token_222|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128231": { + "content": "<|reserved_special_token_223|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128232": { + "content": "<|reserved_special_token_224|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128233": { + "content": "<|reserved_special_token_225|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128234": { + "content": "<|reserved_special_token_226|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128235": { + "content": "<|reserved_special_token_227|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128236": { + "content": "<|reserved_special_token_228|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128237": { + "content": "<|reserved_special_token_229|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128238": { + "content": "<|reserved_special_token_230|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128239": { + "content": "<|reserved_special_token_231|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128240": { + "content": "<|reserved_special_token_232|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128241": { + "content": "<|reserved_special_token_233|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128242": { + "content": "<|reserved_special_token_234|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128243": { + "content": "<|reserved_special_token_235|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128244": { + "content": "<|reserved_special_token_236|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128245": { + "content": "<|reserved_special_token_237|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128246": { + "content": "<|reserved_special_token_238|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128247": { + "content": "<|reserved_special_token_239|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128248": { + "content": "<|reserved_special_token_240|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128249": { + "content": "<|reserved_special_token_241|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128250": { + "content": "<|reserved_special_token_242|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128251": { + "content": "<|reserved_special_token_243|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128252": { + "content": "<|reserved_special_token_244|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128253": { + "content": "<|reserved_special_token_245|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128254": { + "content": "<|reserved_special_token_246|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128255": { + "content": "<|reserved_special_token_247|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|eot_id|>", + "<|eom_id|>" + ], + "bos_token": "<|begin_of_text|>", + "chat_template": "{{ '<|begin_of_text|>' }}{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% endif %}{% if system_message is defined %}{{ '<|start_header_id|>system<|end_header_id|>\n\n' + system_message + '<|eot_id|>' }}{% endif %}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|start_header_id|>user<|end_header_id|>\n\n' + content + '<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n' }}{% elif message['role'] == 'assistant' %}{{ content + '<|eot_id|>' }}{% endif %}{% endfor %}", + "clean_up_tokenization_spaces": true, + "eos_token": "<|end_of_text|>", + "model_input_names": [ + "input_ids", + "attention_mask" + ], + "model_max_length": 2048, + "pad_token": "<|end_of_text|>", + "padding_side": "right", + "split_special_tokens": false, + "tokenizer_class": "PreTrainedTokenizerFast" +} diff --git a/checkpoint-1500/trainer_state.json b/checkpoint-1500/trainer_state.json new file mode 100644 index 0000000..561eb38 --- /dev/null +++ b/checkpoint-1500/trainer_state.json @@ -0,0 +1,1083 @@ +{ + "best_metric": null, + "best_model_checkpoint": null, + "epoch": 2.7573529411764706, + "eval_steps": 500, + "global_step": 1500, + "is_hyper_param_search": false, + "is_local_process_zero": true, + "is_world_process_zero": true, + "log_history": [ + { + "epoch": 0.01838235294117647, + "grad_norm": 24.461347652326168, + "learning_rate": 6.097560975609757e-07, + "loss": 1.2036, + "step": 10 + }, + { + "epoch": 0.03676470588235294, + "grad_norm": 17.308880580961944, + "learning_rate": 1.2195121951219514e-06, + "loss": 1.2064, + "step": 20 + }, + { + "epoch": 0.05514705882352941, + "grad_norm": 29.601720546719697, + "learning_rate": 1.8292682926829268e-06, + "loss": 1.2741, + "step": 30 + }, + { + "epoch": 0.07352941176470588, + "grad_norm": 14.115818236245202, + "learning_rate": 2.4390243902439027e-06, + "loss": 0.7596, + "step": 40 + }, + { + "epoch": 0.09191176470588236, + "grad_norm": 21.73939509164672, + "learning_rate": 3.0487804878048782e-06, + "loss": 0.6171, + "step": 50 + }, + { + "epoch": 0.11029411764705882, + "grad_norm": 16.96116387460838, + "learning_rate": 3.6585365853658537e-06, + "loss": 0.794, + "step": 60 + }, + { + "epoch": 0.12867647058823528, + "grad_norm": 15.372652400517632, + "learning_rate": 4.268292682926829e-06, + "loss": 0.6233, + "step": 70 + }, + { + "epoch": 0.14705882352941177, + "grad_norm": 15.062285237489078, + "learning_rate": 4.8780487804878055e-06, + "loss": 0.5441, + "step": 80 + }, + { + "epoch": 0.16544117647058823, + "grad_norm": 18.632304280702545, + "learning_rate": 5.487804878048781e-06, + "loss": 0.5784, + "step": 90 + }, + { + "epoch": 0.18382352941176472, + "grad_norm": 13.945519044585177, + "learning_rate": 6.0975609756097564e-06, + "loss": 0.4844, + "step": 100 + }, + { + "epoch": 0.20220588235294118, + "grad_norm": 6.9751627817275, + "learning_rate": 6.707317073170733e-06, + "loss": 0.6535, + "step": 110 + }, + { + "epoch": 0.22058823529411764, + "grad_norm": 25.188175477401735, + "learning_rate": 7.317073170731707e-06, + "loss": 0.6897, + "step": 120 + }, + { + "epoch": 0.23897058823529413, + "grad_norm": 14.572936912172068, + "learning_rate": 7.926829268292685e-06, + "loss": 0.4217, + "step": 130 + }, + { + "epoch": 0.25735294117647056, + "grad_norm": 14.934836192557746, + "learning_rate": 8.536585365853658e-06, + "loss": 0.5868, + "step": 140 + }, + { + "epoch": 0.2757352941176471, + "grad_norm": 11.450309910668999, + "learning_rate": 9.146341463414635e-06, + "loss": 0.53, + "step": 150 + }, + { + "epoch": 0.29411764705882354, + "grad_norm": 21.677329690439954, + "learning_rate": 9.756097560975611e-06, + "loss": 0.5538, + "step": 160 + }, + { + "epoch": 0.3125, + "grad_norm": 13.221017712308962, + "learning_rate": 9.999587822598768e-06, + "loss": 0.4616, + "step": 170 + }, + { + "epoch": 0.33088235294117646, + "grad_norm": 17.10580370679984, + "learning_rate": 9.997069206794246e-06, + "loss": 0.5633, + "step": 180 + }, + { + "epoch": 0.3492647058823529, + "grad_norm": 12.4225156252439, + "learning_rate": 9.992262114666653e-06, + "loss": 0.6035, + "step": 190 + }, + { + "epoch": 0.36764705882352944, + "grad_norm": 9.012606555821149, + "learning_rate": 9.985168747689706e-06, + "loss": 0.5822, + "step": 200 + }, + { + "epoch": 0.3860294117647059, + "grad_norm": 7.876601539287651, + "learning_rate": 9.975792354368019e-06, + "loss": 0.3755, + "step": 210 + }, + { + "epoch": 0.40441176470588236, + "grad_norm": 6.10882571982772, + "learning_rate": 9.964137228749409e-06, + "loss": 0.4914, + "step": 220 + }, + { + "epoch": 0.4227941176470588, + "grad_norm": 6.537974128609375, + "learning_rate": 9.950208708458371e-06, + "loss": 0.4604, + "step": 230 + }, + { + "epoch": 0.4411764705882353, + "grad_norm": 7.108775542718406, + "learning_rate": 9.934013172251654e-06, + "loss": 0.5029, + "step": 240 + }, + { + "epoch": 0.45955882352941174, + "grad_norm": 13.652621643454376, + "learning_rate": 9.915558037097003e-06, + "loss": 0.5404, + "step": 250 + }, + { + "epoch": 0.47794117647058826, + "grad_norm": 9.685271320615122, + "learning_rate": 9.894851754776473e-06, + "loss": 0.3555, + "step": 260 + }, + { + "epoch": 0.4963235294117647, + "grad_norm": 10.504810722270348, + "learning_rate": 9.871903808015812e-06, + "loss": 0.4092, + "step": 270 + }, + { + "epoch": 0.5147058823529411, + "grad_norm": 12.557835687927717, + "learning_rate": 9.846724706141718e-06, + "loss": 0.4489, + "step": 280 + }, + { + "epoch": 0.5330882352941176, + "grad_norm": 19.32420837447236, + "learning_rate": 9.819325980268946e-06, + "loss": 0.5297, + "step": 290 + }, + { + "epoch": 0.5514705882352942, + "grad_norm": 12.56688753149935, + "learning_rate": 9.789720178019483e-06, + "loss": 0.4301, + "step": 300 + }, + { + "epoch": 0.5698529411764706, + "grad_norm": 8.769304725602016, + "learning_rate": 9.757920857776188e-06, + "loss": 0.5499, + "step": 310 + }, + { + "epoch": 0.5882352941176471, + "grad_norm": 6.742725850222398, + "learning_rate": 9.723942582473545e-06, + "loss": 0.3723, + "step": 320 + }, + { + "epoch": 0.6066176470588235, + "grad_norm": 32.81061857477797, + "learning_rate": 9.687800912928362e-06, + "loss": 0.6103, + "step": 330 + }, + { + "epoch": 0.625, + "grad_norm": 7.250155807815409, + "learning_rate": 9.649512400713497e-06, + "loss": 0.5561, + "step": 340 + }, + { + "epoch": 0.6433823529411765, + "grad_norm": 8.449295772111478, + "learning_rate": 9.609094580577825e-06, + "loss": 0.4384, + "step": 350 + }, + { + "epoch": 0.6617647058823529, + "grad_norm": 8.965901929446623, + "learning_rate": 9.566565962415958e-06, + "loss": 0.492, + "step": 360 + }, + { + "epoch": 0.6801470588235294, + "grad_norm": 10.783592668291883, + "learning_rate": 9.521946022791402e-06, + "loss": 0.5596, + "step": 370 + }, + { + "epoch": 0.6985294117647058, + "grad_norm": 6.524203722153494, + "learning_rate": 9.475255196016972e-06, + "loss": 0.4657, + "step": 380 + }, + { + "epoch": 0.7169117647058824, + "grad_norm": 6.844495651307719, + "learning_rate": 9.426514864796648e-06, + "loss": 0.547, + "step": 390 + }, + { + "epoch": 0.7352941176470589, + "grad_norm": 7.093995062440304, + "learning_rate": 9.375747350433044e-06, + "loss": 0.4821, + "step": 400 + }, + { + "epoch": 0.7536764705882353, + "grad_norm": 13.008619062718342, + "learning_rate": 9.322975902605082e-06, + "loss": 0.3627, + "step": 410 + }, + { + "epoch": 0.7720588235294118, + "grad_norm": 7.658314017103231, + "learning_rate": 9.268224688720475e-06, + "loss": 0.2779, + "step": 420 + }, + { + "epoch": 0.7904411764705882, + "grad_norm": 9.961772688539515, + "learning_rate": 9.211518782847932e-06, + "loss": 0.684, + "step": 430 + }, + { + "epoch": 0.8088235294117647, + "grad_norm": 5.184448250813704, + "learning_rate": 9.152884154234147e-06, + "loss": 0.3829, + "step": 440 + }, + { + "epoch": 0.8272058823529411, + "grad_norm": 16.899974205034713, + "learning_rate": 9.092347655410818e-06, + "loss": 0.409, + "step": 450 + }, + { + "epoch": 0.8455882352941176, + "grad_norm": 9.123647569900998, + "learning_rate": 9.029937009897176e-06, + "loss": 0.4189, + "step": 460 + }, + { + "epoch": 0.8639705882352942, + "grad_norm": 14.941661911314725, + "learning_rate": 8.96568079950361e-06, + "loss": 0.4846, + "step": 470 + }, + { + "epoch": 0.8823529411764706, + "grad_norm": 6.576553080941865, + "learning_rate": 8.899608451242233e-06, + "loss": 0.4869, + "step": 480 + }, + { + "epoch": 0.9007352941176471, + "grad_norm": 9.989273508498824, + "learning_rate": 8.83175022385039e-06, + "loss": 0.368, + "step": 490 + }, + { + "epoch": 0.9191176470588235, + "grad_norm": 5.168977011450082, + "learning_rate": 8.762137193933241e-06, + "loss": 0.3489, + "step": 500 + }, + { + "epoch": 0.9375, + "grad_norm": 9.716727823960543, + "learning_rate": 8.690801241731818e-06, + "loss": 0.4095, + "step": 510 + }, + { + "epoch": 0.9558823529411765, + "grad_norm": 9.305144213419574, + "learning_rate": 8.617775036523014e-06, + "loss": 0.4641, + "step": 520 + }, + { + "epoch": 0.9742647058823529, + "grad_norm": 7.973224876288721, + "learning_rate": 8.543092021658259e-06, + "loss": 0.3311, + "step": 530 + }, + { + "epoch": 0.9926470588235294, + "grad_norm": 7.223605900810482, + "learning_rate": 8.466786399247663e-06, + "loss": 0.3561, + "step": 540 + }, + { + "epoch": 1.0110294117647058, + "grad_norm": 7.955108957559817, + "learning_rate": 8.388893114496706e-06, + "loss": 0.3474, + "step": 550 + }, + { + "epoch": 1.0294117647058822, + "grad_norm": 8.495071396849232, + "learning_rate": 8.309447839702583e-06, + "loss": 0.2188, + "step": 560 + }, + { + "epoch": 1.0477941176470589, + "grad_norm": 6.043931760485918, + "learning_rate": 8.228486957917608e-06, + "loss": 0.2178, + "step": 570 + }, + { + "epoch": 1.0661764705882353, + "grad_norm": 6.438867996730345, + "learning_rate": 8.146047546287077e-06, + "loss": 0.2783, + "step": 580 + }, + { + "epoch": 1.0845588235294117, + "grad_norm": 3.6977346854366107, + "learning_rate": 8.062167359069301e-06, + "loss": 0.2463, + "step": 590 + }, + { + "epoch": 1.1029411764705883, + "grad_norm": 6.660661443962452, + "learning_rate": 7.97688481034551e-06, + "loss": 0.2634, + "step": 600 + }, + { + "epoch": 1.1213235294117647, + "grad_norm": 9.365314735040004, + "learning_rate": 7.8902389564276e-06, + "loss": 0.294, + "step": 610 + }, + { + "epoch": 1.1397058823529411, + "grad_norm": 6.992327039164838, + "learning_rate": 7.802269477971771e-06, + "loss": 0.273, + "step": 620 + }, + { + "epoch": 1.1580882352941178, + "grad_norm": 16.22021668710731, + "learning_rate": 7.713016661806213e-06, + "loss": 0.2975, + "step": 630 + }, + { + "epoch": 1.1764705882352942, + "grad_norm": 5.1105720664815, + "learning_rate": 7.622521382481208e-06, + "loss": 0.2831, + "step": 640 + }, + { + "epoch": 1.1948529411764706, + "grad_norm": 18.745915660915887, + "learning_rate": 7.530825083550073e-06, + "loss": 0.3548, + "step": 650 + }, + { + "epoch": 1.213235294117647, + "grad_norm": 10.329160246000239, + "learning_rate": 7.437969758589508e-06, + "loss": 0.2454, + "step": 660 + }, + { + "epoch": 1.2316176470588236, + "grad_norm": 6.408214730217885, + "learning_rate": 7.343997931968068e-06, + "loss": 0.2694, + "step": 670 + }, + { + "epoch": 1.25, + "grad_norm": 7.486293079129486, + "learning_rate": 7.248952639371543e-06, + "loss": 0.3091, + "step": 680 + }, + { + "epoch": 1.2683823529411764, + "grad_norm": 5.956954386852354, + "learning_rate": 7.152877408094179e-06, + "loss": 0.2305, + "step": 690 + }, + { + "epoch": 1.2867647058823528, + "grad_norm": 8.065888848768314, + "learning_rate": 7.055816237104753e-06, + "loss": 0.3002, + "step": 700 + }, + { + "epoch": 1.3051470588235294, + "grad_norm": 3.322320099042565, + "learning_rate": 6.957813576896647e-06, + "loss": 0.2868, + "step": 710 + }, + { + "epoch": 1.3235294117647058, + "grad_norm": 11.20812027560389, + "learning_rate": 6.858914309131131e-06, + "loss": 0.2342, + "step": 720 + }, + { + "epoch": 1.3419117647058822, + "grad_norm": 11.126428155503467, + "learning_rate": 6.7591637260831925e-06, + "loss": 0.2143, + "step": 730 + }, + { + "epoch": 1.3602941176470589, + "grad_norm": 6.169632411834191, + "learning_rate": 6.6586075098993196e-06, + "loss": 0.3071, + "step": 740 + }, + { + "epoch": 1.3786764705882353, + "grad_norm": 8.952863279335729, + "learning_rate": 6.557291711676738e-06, + "loss": 0.2977, + "step": 750 + }, + { + "epoch": 1.3970588235294117, + "grad_norm": 4.407249523532787, + "learning_rate": 6.455262730373673e-06, + "loss": 0.2326, + "step": 760 + }, + { + "epoch": 1.4154411764705883, + "grad_norm": 11.807741453984933, + "learning_rate": 6.352567291560319e-06, + "loss": 0.3158, + "step": 770 + }, + { + "epoch": 1.4338235294117647, + "grad_norm": 13.900682242664102, + "learning_rate": 6.249252426020217e-06, + "loss": 0.3301, + "step": 780 + }, + { + "epoch": 1.4522058823529411, + "grad_norm": 10.2905193894227, + "learning_rate": 6.145365448211866e-06, + "loss": 0.2937, + "step": 790 + }, + { + "epoch": 1.4705882352941178, + "grad_norm": 5.654029084586675, + "learning_rate": 6.040953934600425e-06, + "loss": 0.2229, + "step": 800 + }, + { + "epoch": 1.4889705882352942, + "grad_norm": 7.884909374384519, + "learning_rate": 5.936065701869404e-06, + "loss": 0.3169, + "step": 810 + }, + { + "epoch": 1.5073529411764706, + "grad_norm": 4.885582156638979, + "learning_rate": 5.830748785022369e-06, + "loss": 0.257, + "step": 820 + }, + { + "epoch": 1.5257352941176472, + "grad_norm": 10.069197658253753, + "learning_rate": 5.725051415384657e-06, + "loss": 0.2766, + "step": 830 + }, + { + "epoch": 1.5441176470588234, + "grad_norm": 8.25370914927739, + "learning_rate": 5.619021998515165e-06, + "loss": 0.2385, + "step": 840 + }, + { + "epoch": 1.5625, + "grad_norm": 4.810424736549512, + "learning_rate": 5.51270909203838e-06, + "loss": 0.2844, + "step": 850 + }, + { + "epoch": 1.5808823529411766, + "grad_norm": 10.0208212747629, + "learning_rate": 5.40616138340673e-06, + "loss": 0.2924, + "step": 860 + }, + { + "epoch": 1.5992647058823528, + "grad_norm": 13.748183320384355, + "learning_rate": 5.299427667603516e-06, + "loss": 0.2826, + "step": 870 + }, + { + "epoch": 1.6176470588235294, + "grad_norm": 2.892654980772666, + "learning_rate": 5.1925568247965686e-06, + "loss": 0.2106, + "step": 880 + }, + { + "epoch": 1.6360294117647058, + "grad_norm": 4.016652056640837, + "learning_rate": 5.085597797952906e-06, + "loss": 0.3306, + "step": 890 + }, + { + "epoch": 1.6544117647058822, + "grad_norm": 4.348213620564617, + "learning_rate": 4.97859957042464e-06, + "loss": 0.2227, + "step": 900 + }, + { + "epoch": 1.6727941176470589, + "grad_norm": 8.314405849156318, + "learning_rate": 4.871611143516367e-06, + "loss": 0.2275, + "step": 910 + }, + { + "epoch": 1.6911764705882353, + "grad_norm": 3.1251931465193747, + "learning_rate": 4.7646815140443625e-06, + "loss": 0.2966, + "step": 920 + }, + { + "epoch": 1.7095588235294117, + "grad_norm": 2.9353246185637287, + "learning_rate": 4.657859651897807e-06, + "loss": 0.228, + "step": 930 + }, + { + "epoch": 1.7279411764705883, + "grad_norm": 4.988890457346432, + "learning_rate": 4.551194477612351e-06, + "loss": 0.2694, + "step": 940 + }, + { + "epoch": 1.7463235294117647, + "grad_norm": 2.1319176010435252, + "learning_rate": 4.444734839966306e-06, + "loss": 0.1944, + "step": 950 + }, + { + "epoch": 1.7647058823529411, + "grad_norm": 4.43095941592791, + "learning_rate": 4.338529493609647e-06, + "loss": 0.2479, + "step": 960 + }, + { + "epoch": 1.7830882352941178, + "grad_norm": 4.620277796996259, + "learning_rate": 4.232627076736181e-06, + "loss": 0.1819, + "step": 970 + }, + { + "epoch": 1.8014705882352942, + "grad_norm": 9.324548402262511, + "learning_rate": 4.127076088809e-06, + "loss": 0.2514, + "step": 980 + }, + { + "epoch": 1.8198529411764706, + "grad_norm": 9.685553327436127, + "learning_rate": 4.021924868349493e-06, + "loss": 0.24, + "step": 990 + }, + { + "epoch": 1.8382352941176472, + "grad_norm": 4.557597261535076, + "learning_rate": 3.9172215708000655e-06, + "loss": 0.2477, + "step": 1000 + }, + { + "epoch": 1.8566176470588234, + "grad_norm": 7.730856763833525, + "learning_rate": 3.8130141464706806e-06, + "loss": 0.2207, + "step": 1010 + }, + { + "epoch": 1.875, + "grad_norm": 6.292936274037211, + "learning_rate": 3.709350318579371e-06, + "loss": 0.2634, + "step": 1020 + }, + { + "epoch": 1.8933823529411766, + "grad_norm": 3.506287081857162, + "learning_rate": 3.606277561396726e-06, + "loss": 0.236, + "step": 1030 + }, + { + "epoch": 1.9117647058823528, + "grad_norm": 5.326613968704466, + "learning_rate": 3.503843078504405e-06, + "loss": 0.2132, + "step": 1040 + }, + { + "epoch": 1.9301470588235294, + "grad_norm": 4.120806515275935, + "learning_rate": 3.4020937811776154e-06, + "loss": 0.2088, + "step": 1050 + }, + { + "epoch": 1.9485294117647058, + "grad_norm": 12.349465603173341, + "learning_rate": 3.301076266901435e-06, + "loss": 0.2413, + "step": 1060 + }, + { + "epoch": 1.9669117647058822, + "grad_norm": 9.063898128342878, + "learning_rate": 3.2008367980308737e-06, + "loss": 0.2271, + "step": 1070 + }, + { + "epoch": 1.9852941176470589, + "grad_norm": 7.508365526935029, + "learning_rate": 3.1014212806043794e-06, + "loss": 0.2285, + "step": 1080 + }, + { + "epoch": 2.0036764705882355, + "grad_norm": 4.625627595178375, + "learning_rate": 3.0028752433205475e-06, + "loss": 0.1852, + "step": 1090 + }, + { + "epoch": 2.0220588235294117, + "grad_norm": 4.4357477825464935, + "learning_rate": 2.9052438166876305e-06, + "loss": 0.1519, + "step": 1100 + }, + { + "epoch": 2.0404411764705883, + "grad_norm": 7.270033498844353, + "learning_rate": 2.808571712355389e-06, + "loss": 0.1601, + "step": 1110 + }, + { + "epoch": 2.0588235294117645, + "grad_norm": 5.430788007652682, + "learning_rate": 2.7129032026388046e-06, + "loss": 0.1264, + "step": 1120 + }, + { + "epoch": 2.077205882352941, + "grad_norm": 5.229399168057504, + "learning_rate": 2.618282100242935e-06, + "loss": 0.137, + "step": 1130 + }, + { + "epoch": 2.0955882352941178, + "grad_norm": 3.2530670171730063, + "learning_rate": 2.5247517381983137e-06, + "loss": 0.1085, + "step": 1140 + }, + { + "epoch": 2.113970588235294, + "grad_norm": 6.719943927301841, + "learning_rate": 2.4323549500159806e-06, + "loss": 0.1258, + "step": 1150 + }, + { + "epoch": 2.1323529411764706, + "grad_norm": 3.3488917523348367, + "learning_rate": 2.3411340500712833e-06, + "loss": 0.1046, + "step": 1160 + }, + { + "epoch": 2.150735294117647, + "grad_norm": 4.657370433299325, + "learning_rate": 2.251130814225449e-06, + "loss": 0.092, + "step": 1170 + }, + { + "epoch": 2.1691176470588234, + "grad_norm": 2.9670688472212303, + "learning_rate": 2.16238646069373e-06, + "loss": 0.0868, + "step": 1180 + }, + { + "epoch": 2.1875, + "grad_norm": 8.131857870303, + "learning_rate": 2.0749416311689845e-06, + "loss": 0.1059, + "step": 1190 + }, + { + "epoch": 2.2058823529411766, + "grad_norm": 10.154475227479216, + "learning_rate": 1.9888363722092376e-06, + "loss": 0.098, + "step": 1200 + }, + { + "epoch": 2.224264705882353, + "grad_norm": 2.0050786002974026, + "learning_rate": 1.9041101168978094e-06, + "loss": 0.108, + "step": 1210 + }, + { + "epoch": 2.2426470588235294, + "grad_norm": 8.439945942355502, + "learning_rate": 1.8208016667844153e-06, + "loss": 0.1039, + "step": 1220 + }, + { + "epoch": 2.261029411764706, + "grad_norm": 8.60486564105295, + "learning_rate": 1.7389491741154373e-06, + "loss": 0.1132, + "step": 1230 + }, + { + "epoch": 2.2794117647058822, + "grad_norm": 4.696484712814838, + "learning_rate": 1.6585901243616044e-06, + "loss": 0.0999, + "step": 1240 + }, + { + "epoch": 2.297794117647059, + "grad_norm": 4.6231552830326255, + "learning_rate": 1.5797613190509908e-06, + "loss": 0.1059, + "step": 1250 + }, + { + "epoch": 2.3161764705882355, + "grad_norm": 3.6902436160334737, + "learning_rate": 1.502498858915254e-06, + "loss": 0.1186, + "step": 1260 + }, + { + "epoch": 2.3345588235294117, + "grad_norm": 2.5370814512282176, + "learning_rate": 1.4268381273568232e-06, + "loss": 0.1018, + "step": 1270 + }, + { + "epoch": 2.3529411764705883, + "grad_norm": 3.8657043800430584, + "learning_rate": 1.352813774244565e-06, + "loss": 0.0953, + "step": 1280 + }, + { + "epoch": 2.3713235294117645, + "grad_norm": 3.432166252044578, + "learning_rate": 1.2804597000454217e-06, + "loss": 0.1211, + "step": 1290 + }, + { + "epoch": 2.389705882352941, + "grad_norm": 4.3716222719550935, + "learning_rate": 1.2098090402992085e-06, + "loss": 0.1821, + "step": 1300 + }, + { + "epoch": 2.4080882352941178, + "grad_norm": 7.998384499842822, + "learning_rate": 1.1408941504437533e-06, + "loss": 0.1263, + "step": 1310 + }, + { + "epoch": 2.426470588235294, + "grad_norm": 3.850208203788365, + "learning_rate": 1.0737465909972778e-06, + "loss": 0.0792, + "step": 1320 + }, + { + "epoch": 2.4448529411764706, + "grad_norm": 3.688555564340551, + "learning_rate": 1.0083971131048158e-06, + "loss": 0.1395, + "step": 1330 + }, + { + "epoch": 2.463235294117647, + "grad_norm": 4.6455960796035, + "learning_rate": 9.448756444553226e-07, + "loss": 0.1168, + "step": 1340 + }, + { + "epoch": 2.4816176470588234, + "grad_norm": 4.203311959035869, + "learning_rate": 8.832112755758598e-07, + "loss": 0.0876, + "step": 1350 + }, + { + "epoch": 2.5, + "grad_norm": 3.3555040280656607, + "learning_rate": 8.234322465092049e-07, + "loss": 0.1019, + "step": 1360 + }, + { + "epoch": 2.5183823529411766, + "grad_norm": 4.650061051052002, + "learning_rate": 7.655659338809329e-07, + "loss": 0.1377, + "step": 1370 + }, + { + "epoch": 2.536764705882353, + "grad_norm": 6.813560936019147, + "learning_rate": 7.09638838361908e-07, + "loss": 0.0879, + "step": 1380 + }, + { + "epoch": 2.5551470588235294, + "grad_norm": 3.7280612376648845, + "learning_rate": 6.556765725319525e-07, + "loss": 0.0958, + "step": 1390 + }, + { + "epoch": 2.5735294117647056, + "grad_norm": 9.06780320870103, + "learning_rate": 6.037038491501978e-07, + "loss": 0.0994, + "step": 1400 + }, + { + "epoch": 2.5919117647058822, + "grad_norm": 3.786951767893351, + "learning_rate": 5.53744469837551e-07, + "loss": 0.0818, + "step": 1410 + }, + { + "epoch": 2.610294117647059, + "grad_norm": 6.614547209289121, + "learning_rate": 5.058213141764151e-07, + "loss": 0.1018, + "step": 1420 + }, + { + "epoch": 2.6286764705882355, + "grad_norm": 1.3227088771313298, + "learning_rate": 4.599563292326592e-07, + "loss": 0.0874, + "step": 1430 + }, + { + "epoch": 2.6470588235294117, + "grad_norm": 4.123067760097869, + "learning_rate": 4.1617051950467613e-07, + "loss": 0.1395, + "step": 1440 + }, + { + "epoch": 2.6654411764705883, + "grad_norm": 3.277587387385848, + "learning_rate": 3.744839373040682e-07, + "loss": 0.1316, + "step": 1450 + }, + { + "epoch": 2.6838235294117645, + "grad_norm": 7.242903909781894, + "learning_rate": 3.3491567357242736e-07, + "loss": 0.1149, + "step": 1460 + }, + { + "epoch": 2.702205882352941, + "grad_norm": 6.625461967024777, + "learning_rate": 2.9748384913837525e-07, + "loss": 0.0907, + "step": 1470 + }, + { + "epoch": 2.7205882352941178, + "grad_norm": 7.203659881581687, + "learning_rate": 2.6220560641887385e-07, + "loss": 0.1253, + "step": 1480 + }, + { + "epoch": 2.7389705882352944, + "grad_norm": 6.378763396607792, + "learning_rate": 2.2909710156863275e-07, + "loss": 0.098, + "step": 1490 + }, + { + "epoch": 2.7573529411764706, + "grad_norm": 7.337516899008145, + "learning_rate": 1.981734970811644e-07, + "loss": 0.1071, + "step": 1500 + } + ], + "logging_steps": 10, + "max_steps": 1632, + "num_input_tokens_seen": 0, + "num_train_epochs": 3, + "save_steps": 500, + "stateful_callbacks": { + "TrainerControl": { + "args": { + "should_epoch_stop": false, + "should_evaluate": false, + "should_log": false, + "should_save": true, + "should_training_stop": false + }, + "attributes": {} + } + }, + "total_flos": 226842181632.0, + "train_batch_size": 1, + "trial_name": null, + "trial_params": null +} diff --git a/checkpoint-1500/training_args.bin b/checkpoint-1500/training_args.bin new file mode 100644 index 0000000..10fbb2a --- /dev/null +++ b/checkpoint-1500/training_args.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4bebf5c7141bddbed6a7feb4bf1a35ed3fbf020c7c4dc7ab21f6f30268f7e3 +size 7352 diff --git a/checkpoint-1500/zero_to_fp32.py b/checkpoint-1500/zero_to_fp32.py new file mode 100644 index 0000000..0e75914 --- /dev/null +++ b/checkpoint-1500/zero_to_fp32.py @@ -0,0 +1,760 @@ +#!/usr/bin/env python + +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 + +# DeepSpeed Team + +# This script extracts fp32 consolidated weights from a zero 1, 2 and 3 DeepSpeed checkpoints. It gets +# copied into the top level checkpoint dir, so the user can easily do the conversion at any point in +# the future. Once extracted, the weights don't require DeepSpeed and can be used in any +# application. +# +# example: +# python zero_to_fp32.py . output_dir/ +# or +# python zero_to_fp32.py . output_dir/ --safe_serialization + +import argparse +import torch +import glob +import math +import os +import re +import gc +import json +import numpy as np +from tqdm import tqdm +from collections import OrderedDict +from dataclasses import dataclass + +# while this script doesn't use deepspeed to recover data, since the checkpoints are pickled with +# DeepSpeed data structures it has to be available in the current python environment. +from deepspeed.utils import logger +from deepspeed.checkpoint.constants import (DS_VERSION, OPTIMIZER_STATE_DICT, SINGLE_PARTITION_OF_FP32_GROUPS, + FP32_FLAT_GROUPS, ZERO_STAGE, PARTITION_COUNT, PARAM_SHAPES, BUFFER_NAMES, + FROZEN_PARAM_SHAPES, FROZEN_PARAM_FRAGMENTS) + + +@dataclass +class zero_model_state: + buffers: dict() + param_shapes: dict() + shared_params: list + ds_version: int + frozen_param_shapes: dict() + frozen_param_fragments: dict() + + +debug = 0 + +# load to cpu +device = torch.device('cpu') + + +def atoi(text): + return int(text) if text.isdigit() else text + + +def natural_keys(text): + ''' + alist.sort(key=natural_keys) sorts in human order + http://nedbatchelder.com/blog/200712/human_sorting.html + (See Toothy's implementation in the comments) + ''' + return [atoi(c) for c in re.split(r'(\d+)', text)] + + +def get_model_state_file(checkpoint_dir, zero_stage): + if not os.path.isdir(checkpoint_dir): + raise FileNotFoundError(f"Directory '{checkpoint_dir}' doesn't exist") + + # there should be only one file + if zero_stage <= 2: + file = os.path.join(checkpoint_dir, "mp_rank_00_model_states.pt") + elif zero_stage == 3: + file = os.path.join(checkpoint_dir, "zero_pp_rank_0_mp_rank_00_model_states.pt") + + if not os.path.exists(file): + raise FileNotFoundError(f"can't find model states file at '{file}'") + + return file + + +def get_checkpoint_files(checkpoint_dir, glob_pattern): + # XXX: need to test that this simple glob rule works for multi-node setup too + ckpt_files = sorted(glob.glob(os.path.join(checkpoint_dir, glob_pattern)), key=natural_keys) + + if len(ckpt_files) == 0: + raise FileNotFoundError(f"can't find {glob_pattern} files in directory '{checkpoint_dir}'") + + return ckpt_files + + +def get_optim_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_optim_states.pt") + + +def get_model_state_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_model_states.pt") + + +def parse_model_states(files): + zero_model_states = [] + for file in files: + state_dict = torch.load(file, map_location=device, weights_only=False) + + if BUFFER_NAMES not in state_dict: + raise ValueError(f"{file} is not a model state checkpoint") + buffer_names = state_dict[BUFFER_NAMES] + if debug: + print("Found buffers:", buffer_names) + + # recover just the buffers while restoring them to fp32 if they were saved in fp16 + buffers = {k: v.float() for k, v in state_dict["module"].items() if k in buffer_names} + param_shapes = state_dict[PARAM_SHAPES] + + # collect parameters that are included in param_shapes + param_names = [] + for s in param_shapes: + for name in s.keys(): + param_names.append(name) + + # update with frozen parameters + frozen_param_shapes = state_dict.get(FROZEN_PARAM_SHAPES, None) + if frozen_param_shapes is not None: + if debug: + print(f"Found frozen_param_shapes: {frozen_param_shapes}") + param_names += list(frozen_param_shapes.keys()) + + # handle shared params + shared_params = [[k, v] for k, v in state_dict["shared_params"].items()] + + ds_version = state_dict.get(DS_VERSION, None) + + frozen_param_fragments = state_dict.get(FROZEN_PARAM_FRAGMENTS, None) + + z_model_state = zero_model_state(buffers=buffers, + param_shapes=param_shapes, + shared_params=shared_params, + ds_version=ds_version, + frozen_param_shapes=frozen_param_shapes, + frozen_param_fragments=frozen_param_fragments) + zero_model_states.append(z_model_state) + + return zero_model_states + + +def parse_optim_states(files, ds_checkpoint_dir): + total_files = len(files) + state_dicts = [] + for f in tqdm(files, desc='Loading checkpoint shards'): + state_dict = torch.load(f, map_location=device, mmap=True, weights_only=False) + # immediately discard the potentially huge 2 optimizer states as we only care for fp32 master weights + # and also handle the case where it was already removed by another helper script + state_dict["optimizer_state_dict"].pop("optimizer_state_dict", None) + state_dicts.append(state_dict) + + if not ZERO_STAGE in state_dicts[0][OPTIMIZER_STATE_DICT]: + raise ValueError(f"{files[0]} is not a zero checkpoint") + zero_stage = state_dicts[0][OPTIMIZER_STATE_DICT][ZERO_STAGE] + world_size = state_dicts[0][OPTIMIZER_STATE_DICT][PARTITION_COUNT] + + # For ZeRO-2 each param group can have different partition_count as data parallelism for expert + # parameters can be different from data parallelism for non-expert parameters. So we can just + # use the max of the partition_count to get the dp world_size. + + if type(world_size) is list: + world_size = max(world_size) + + if world_size != total_files: + raise ValueError( + f"Expected {world_size} of '*_optim_states.pt' under '{ds_checkpoint_dir}' but found {total_files} files. " + "Possibly due to an overwrite of an old checkpoint, or a checkpoint didn't get saved by one or more processes." + ) + + # the groups are named differently in each stage + if zero_stage <= 2: + fp32_groups_key = SINGLE_PARTITION_OF_FP32_GROUPS + elif zero_stage == 3: + fp32_groups_key = FP32_FLAT_GROUPS + else: + raise ValueError(f"unknown zero stage {zero_stage}") + + fp32_flat_groups = [state_dicts[i][OPTIMIZER_STATE_DICT][fp32_groups_key] for i in range(len(state_dicts))] + return zero_stage, world_size, fp32_flat_groups + + +def _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters): + """ + Returns fp32 state_dict reconstructed from ds checkpoint + + Args: + - ``ds_checkpoint_dir``: path to the deepspeed checkpoint folder (where the optimizer files are) + + """ + print(f"Processing zero checkpoint '{ds_checkpoint_dir}'") + + optim_files = get_optim_files(ds_checkpoint_dir) + zero_stage, world_size, fp32_flat_groups = parse_optim_states(optim_files, ds_checkpoint_dir) + print(f"Detected checkpoint of type zero stage {zero_stage}, world_size: {world_size}") + + model_files = get_model_state_files(ds_checkpoint_dir) + + zero_model_states = parse_model_states(model_files) + print(f'Parsing checkpoint created by deepspeed=={zero_model_states[0].ds_version}') + + if zero_stage <= 2: + return _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + elif zero_stage == 3: + return _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + + +def _zero2_merge_frozen_params(state_dict, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + frozen_param_fragments = zero_model_states[0].frozen_param_fragments + + if debug: + num_elem = sum(s.numel() for s in frozen_param_shapes.values()) + print(f'rank 0: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in frozen_param_fragments.values()]) + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + state_dict[name] = frozen_param_fragments[name] + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +def _has_callable(obj, fn): + attr = getattr(obj, fn, None) + return callable(attr) + + +def _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + + # Reconstruction protocol: + # + # XXX: document this + + if debug: + for i in range(world_size): + for j in range(len(fp32_flat_groups[0])): + print(f"{FP32_FLAT_GROUPS}[{i}][{j}].shape={fp32_flat_groups[i][j].shape}") + + # XXX: memory usage doubles here (zero2) + num_param_groups = len(fp32_flat_groups[0]) + merged_single_partition_of_fp32_groups = [] + for i in range(num_param_groups): + merged_partitions = [sd[i] for sd in fp32_flat_groups] + full_single_fp32_vector = torch.cat(merged_partitions, 0) + merged_single_partition_of_fp32_groups.append(full_single_fp32_vector) + avail_numel = sum( + [full_single_fp32_vector.numel() for full_single_fp32_vector in merged_single_partition_of_fp32_groups]) + + if debug: + wanted_params = sum([len(shapes) for shapes in param_shapes]) + wanted_numel = sum([sum(shape.numel() for shape in shapes.values()) for shapes in param_shapes]) + # not asserting if there is a mismatch due to possible padding + print(f"Have {avail_numel} numels to process.") + print(f"Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + total_numel = 0 + total_params = 0 + for shapes, full_single_fp32_vector in zip(param_shapes, merged_single_partition_of_fp32_groups): + offset = 0 + avail_numel = full_single_fp32_vector.numel() + for name, shape in shapes.items(): + + unpartitioned_numel = shape.numel() if _has_callable(shape, 'numel') else math.prod(shape) + total_numel += unpartitioned_numel + total_params += 1 + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + state_dict[name] = full_single_fp32_vector.narrow(0, offset, unpartitioned_numel).view(shape) + offset += unpartitioned_numel + + # Z2 started to align to 2*world_size to improve nccl performance. Therefore both offset and + # avail_numel can differ by anywhere between 0..2*world_size. Due to two unrelated complex + # paddings performed in the code it's almost impossible to predict the exact numbers w/o the + # live optimizer object, so we are checking that the numbers are within the right range + align_to = 2 * world_size + + def zero2_align(x): + return align_to * math.ceil(x / align_to) + + if debug: + print(f"original offset={offset}, avail_numel={avail_numel}") + + offset = zero2_align(offset) + avail_numel = zero2_align(avail_numel) + + if debug: + print(f"aligned offset={offset}, avail_numel={avail_numel}") + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero2_merge_frozen_params(state_dict, zero_model_states) + + _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def zero3_partitioned_param_info(unpartitioned_numel, world_size): + remainder = unpartitioned_numel % world_size + padding_numel = (world_size - remainder) if remainder else 0 + partitioned_numel = math.ceil(unpartitioned_numel / world_size) + return partitioned_numel, padding_numel + + +def _zero3_merge_frozen_params(state_dict, world_size, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + if debug: + for i in range(world_size): + num_elem = sum(s.numel() for s in zero_model_states[i].frozen_param_fragments.values()) + print(f'rank {i}: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in zero_model_states[0].frozen_param_fragments.values()]) * world_size + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in zero_model_states[0].frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + param_frags = tuple(model_state.frozen_param_fragments[name] for model_state in zero_model_states) + state_dict[name] = torch.cat(param_frags, 0).narrow(0, 0, unpartitioned_numel).view(shape) + + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Frozen params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +class GatheredTensor: + """ + A pseudo tensor that collects partitioned weights. + It is more memory efficient when there are multiple groups. + """ + + def __init__(self, flat_groups, flat_groups_offset, offset, partitioned_numel, shape): + self.flat_groups = flat_groups + self.flat_groups_offset = flat_groups_offset + self.offset = offset + self.partitioned_numel = partitioned_numel + self.shape = shape + self.dtype = self.flat_groups[0][0].dtype + + def contiguous(self): + """ + Merge partitioned weights from flat_groups into a single tensor. + """ + end_idx = self.offset + self.partitioned_numel + world_size = len(self.flat_groups) + pad_flat_param_chunks = [] + + for rank_i in range(world_size): + # for each rank, we need to collect weights from related group/groups + flat_groups_at_rank_i = self.flat_groups[rank_i] + start_group_id = None + end_group_id = None + for group_id in range(len(self.flat_groups_offset)): + if self.flat_groups_offset[group_id] <= self.offset < self.flat_groups_offset[group_id + 1]: + start_group_id = group_id + if self.flat_groups_offset[group_id] < end_idx <= self.flat_groups_offset[group_id + 1]: + end_group_id = group_id + break + # collect weights from related group/groups + for group_id in range(start_group_id, end_group_id + 1): + flat_tensor = flat_groups_at_rank_i[group_id] + start_offset = self.offset - self.flat_groups_offset[group_id] + end_offset = min(end_idx, self.flat_groups_offset[group_id + 1]) - self.flat_groups_offset[group_id] + pad_flat_param_chunks.append(flat_tensor[start_offset:end_offset]) + + # collect weights from all ranks + pad_flat_param = torch.cat(pad_flat_param_chunks, dim=0) + param = pad_flat_param[:self.shape.numel()].view(self.shape).contiguous() + return param + + +def _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + avail_numel = sum([flat_group.numel() for flat_group in fp32_flat_groups[0]]) * world_size + + # Reconstruction protocol: For zero3 we need to zip the partitions together at boundary of each + # param, re-consolidating each param, while dealing with padding if any + + # merge list of dicts, preserving order + param_shapes = {k: v for d in param_shapes for k, v in d.items()} + + if debug: + for i in range(world_size): + print(f"{FP32_FLAT_GROUPS}[{i}].shape={fp32_flat_groups[i].shape}") + + wanted_params = len(param_shapes) + wanted_numel = sum(shape.numel() for shape in param_shapes.values()) + # not asserting if there is a mismatch due to possible padding + avail_numel = fp32_flat_groups[0].numel() * world_size + print(f"Trainable params: Have {avail_numel} numels to process.") + print(f"Trainable params: Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + offset = 0 + total_numel = 0 + total_params = 0 + flat_groups_offset = [0] + list(np.cumsum([flat_tensor.numel() for flat_tensor in fp32_flat_groups[0]])) + for name, shape in tqdm(param_shapes.items(), desc='Gathering sharded weights'): + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + total_params += 1 + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Trainable params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + # memory efficient tensor + tensor = GatheredTensor(fp32_flat_groups, flat_groups_offset, offset, partitioned_numel, shape) + state_dict[name] = tensor + offset += partitioned_numel + + offset *= world_size + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed Trainable fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero3_merge_frozen_params(state_dict, world_size, zero_model_states) + + _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def to_torch_tensor(state_dict, return_empty_tensor=False): + """ + Convert state_dict of GatheredTensor to torch tensor + """ + torch_state_dict = {} + converted_tensors = {} + for name, tensor in state_dict.items(): + tensor_id = id(tensor) + if tensor_id in converted_tensors: # shared tensors + shared_tensor = torch_state_dict[converted_tensors[tensor_id]] + torch_state_dict[name] = shared_tensor + else: + converted_tensors[tensor_id] = name + if return_empty_tensor: + torch_state_dict[name] = torch.empty(tensor.shape, dtype=tensor.dtype) + else: + torch_state_dict[name] = tensor.contiguous() + return torch_state_dict + + +def get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag=None, + exclude_frozen_parameters=False, + lazy_mode=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated state_dict that can be loaded with + ``load_state_dict()`` and used for training without DeepSpeed or shared with others, for example + via a model hub. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in 'latest' file. e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + - ``lazy_mode``: get state_dict in lazy mode. It returns a dict of pesduo tensor instead of torch tensor, which is more memory efficient. + Convert the pesduo tensor to torch tensor by ``.contiguous()`` + + Returns: + - pytorch ``state_dict`` + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + # do the training and checkpoint saving + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir) # already on cpu + model = model.cpu() # move to cpu + model.load_state_dict(state_dict) + # submit to model hub or save the model to share with others + + In this example the ``model`` will no longer be usable in the deepspeed context of the same + application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + If you want it all done for you, use ``load_state_dict_from_zero_checkpoint`` instead. + + Note: the above usage may not work if your application doesn't have sufficient free CPU memory. + You may need to use the offline approach using the ``zero_to_fp32.py`` script that is saved with + the checkpoint. Or you can load state_dict in lazy mode :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, lazy_mode=True) # not on cpu + for name, lazy_tensor in state_dict.item(): + tensor = lazy_tensor.contiguous() # to cpu + print(name, tensor) + # del tensor to release memory if it no longer in use + """ + if tag is None: + latest_path = os.path.join(checkpoint_dir, 'latest') + if os.path.isfile(latest_path): + with open(latest_path, 'r') as fd: + tag = fd.read().strip() + else: + raise ValueError(f"Unable to find 'latest' file at {latest_path}") + + ds_checkpoint_dir = os.path.join(checkpoint_dir, tag) + + if not os.path.isdir(ds_checkpoint_dir): + raise FileNotFoundError(f"Directory '{ds_checkpoint_dir}' doesn't exist") + + state_dict = _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters) + if lazy_mode: + return state_dict + else: + return to_torch_tensor(state_dict) + + +def convert_zero_checkpoint_to_fp32_state_dict(checkpoint_dir, + output_dir, + max_shard_size="5GB", + safe_serialization=False, + tag=None, + exclude_frozen_parameters=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` file that can be + loaded with ``torch.load(file)`` + ``load_state_dict()`` and used for training without DeepSpeed. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``output_dir``: directory to the pytorch fp32 state_dict output files + - ``max_shard_size``: the maximum size for a checkpoint before being sharded, default value is 5GB + - ``safe_serialization``: whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`). + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + """ + + # Dependency pre-check + if safe_serialization: + try: + from safetensors.torch import save_file + except ImportError: + print('If you want to use `safe_serialization`, please `pip install safetensors`') + raise + if max_shard_size is not None: + try: + from huggingface_hub import split_torch_state_dict_into_shards + except ImportError: + print('If you want to use `max_shard_size`, please `pip install huggingface_hub`') + raise + + # Convert zero checkpoint to state_dict + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag, + exclude_frozen_parameters, + lazy_mode=True) + + # Shard the model if it is too big. + weights_name = "model.safetensors" if safe_serialization else "pytorch_model.bin" + if max_shard_size is not None: + filename_pattern = weights_name.replace(".bin", "{suffix}.bin").replace(".safetensors", "{suffix}.safetensors") + # an memory-efficient approach for sharding + empty_state_dict = to_torch_tensor(state_dict, return_empty_tensor=True) + state_dict_split = split_torch_state_dict_into_shards(empty_state_dict, + filename_pattern=filename_pattern, + max_shard_size=max_shard_size) + else: + from collections import namedtuple + StateDictSplit = namedtuple("StateDictSplit", ["is_sharded", "filename_to_tensors"]) + state_dict_split = StateDictSplit(is_sharded=False, + filename_to_tensors={weights_name: list(state_dict.keys())}) + + # Save the model by shard + os.makedirs(output_dir, exist_ok=True) + filename_to_tensors = state_dict_split.filename_to_tensors.items() + for shard_file, tensors in tqdm(filename_to_tensors, desc="Saving checkpoint shards"): + shard_state_dict = {tensor_name: state_dict[tensor_name] for tensor_name in tensors} + shard_state_dict = to_torch_tensor(shard_state_dict) + output_path = os.path.join(output_dir, shard_file) + if safe_serialization: + save_file(shard_state_dict, output_path, metadata={"format": "pt"}) + else: + torch.save(shard_state_dict, output_path) + # release the memory of current shard + for tensor_name in list(shard_state_dict.keys()): + del state_dict[tensor_name] + del shard_state_dict[tensor_name] + del shard_state_dict + gc.collect() + + # Save index if sharded + if state_dict_split.is_sharded: + index = { + "metadata": state_dict_split.metadata, + "weight_map": state_dict_split.tensor_to_filename, + } + save_index_file = "model.safetensors.index.json" if safe_serialization else "pytorch_model.bin.index.json" + save_index_file = os.path.join(output_dir, save_index_file) + with open(save_index_file, "w", encoding="utf-8") as f: + content = json.dumps(index, indent=2, sort_keys=True) + "\n" + f.write(content) + + +def load_state_dict_from_zero_checkpoint(model, checkpoint_dir, tag=None): + """ + 1. Put the provided model to cpu + 2. Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` + 3. Load it into the provided model + + Args: + - ``model``: the model object to update + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + + Returns: + - ``model`: modified model + + Make sure you have plenty of CPU memory available before you call this function. If you don't + have enough use the ``zero_to_fp32.py`` utility to do the conversion. You will find it + conveniently placed for you in the checkpoint folder. + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import load_state_dict_from_zero_checkpoint + model = load_state_dict_from_zero_checkpoint(trainer.model, checkpoint_dir) + # submit to model hub or save the model to share with others + + Note, that once this was run, the ``model`` will no longer be usable in the deepspeed context + of the same application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + """ + logger.info(f"Extracting fp32 weights") + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, tag) + + logger.info(f"Overwriting model with fp32 weights") + model = model.cpu() + model.load_state_dict(state_dict, strict=False) + + return model + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("checkpoint_dir", + type=str, + help="path to the desired checkpoint folder, e.g., path/checkpoint-12") + parser.add_argument("output_dir", + type=str, + help="directory to the pytorch fp32 state_dict output files" + "(e.g. path/checkpoint-12-output/)") + parser.add_argument( + "--max_shard_size", + type=str, + default="5GB", + help="The maximum size for a checkpoint before being sharded. Checkpoints shard will then be each of size" + "lower than this size. If expressed as a string, needs to be digits followed by a unit (like `5MB`" + "We default it to 5GB in order for models to be able to run easily on free-tier google colab instances" + "without CPU OOM issues.") + parser.add_argument( + "--safe_serialization", + default=False, + action='store_true', + help="Whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`).") + parser.add_argument("-t", + "--tag", + type=str, + default=None, + help="checkpoint tag used as a unique identifier for checkpoint. e.g., global_step1") + parser.add_argument("--exclude_frozen_parameters", action='store_true', help="exclude frozen parameters") + parser.add_argument("-d", "--debug", action='store_true', help="enable debug") + args = parser.parse_args() + + debug = args.debug + + convert_zero_checkpoint_to_fp32_state_dict(args.checkpoint_dir, + args.output_dir, + max_shard_size=args.max_shard_size, + safe_serialization=args.safe_serialization, + tag=args.tag, + exclude_frozen_parameters=args.exclude_frozen_parameters) diff --git a/checkpoint-1632/config.json b/checkpoint-1632/config.json new file mode 100644 index 0000000..5a1694f --- /dev/null +++ b/checkpoint-1632/config.json @@ -0,0 +1,36 @@ +{ + "_name_or_path": "meta-llama/Llama-3.2-1B", + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 128000, + "eos_token_id": 128001, + "head_dim": 64, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 8192, + "max_position_embeddings": 131072, + "mlp_bias": false, + "model_type": "llama", + "num_attention_heads": 32, + "num_hidden_layers": 16, + "num_key_value_heads": 8, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": { + "factor": 32.0, + "high_freq_factor": 4.0, + "low_freq_factor": 1.0, + "original_max_position_embeddings": 8192, + "rope_type": "llama3" + }, + "rope_theta": 500000.0, + "tie_word_embeddings": true, + "torch_dtype": "bfloat16", + "transformers_version": "4.46.1", + "use_cache": false, + "vocab_size": 128256 +} diff --git a/checkpoint-1632/generation_config.json b/checkpoint-1632/generation_config.json new file mode 100644 index 0000000..eab5082 --- /dev/null +++ b/checkpoint-1632/generation_config.json @@ -0,0 +1,9 @@ +{ + "_from_model_config": true, + "bos_token_id": 128000, + "do_sample": true, + "eos_token_id": 128001, + "temperature": 0.6, + "top_p": 0.9, + "transformers_version": "4.46.1" +} diff --git a/checkpoint-1632/global_step1632/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt b/checkpoint-1632/global_step1632/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt new file mode 100644 index 0000000..7defc50 --- /dev/null +++ b/checkpoint-1632/global_step1632/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:46b7ba153e6a773ec5bb4f19f823a41bf3262a6e785936ec134ed20e02588fdf +size 14829779262 diff --git a/checkpoint-1632/global_step1632/zero_pp_rank_0_mp_rank_00_model_states.pt b/checkpoint-1632/global_step1632/zero_pp_rank_0_mp_rank_00_model_states.pt new file mode 100644 index 0000000..37d5178 --- /dev/null +++ b/checkpoint-1632/global_step1632/zero_pp_rank_0_mp_rank_00_model_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:5acab3879626811ad85f5df10c5139869df0cb796888beee5202ff8554e87206 +size 76664 diff --git a/checkpoint-1632/latest b/checkpoint-1632/latest new file mode 100644 index 0000000..c5a1134 --- /dev/null +++ b/checkpoint-1632/latest @@ -0,0 +1 @@ +global_step1632 \ No newline at end of file diff --git a/checkpoint-1632/model.safetensors b/checkpoint-1632/model.safetensors new file mode 100644 index 0000000..1b87b65 --- /dev/null +++ b/checkpoint-1632/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:297c740fd49c32381d3300f0f09c71cffc651269dd89120d8e28cf8032173667 +size 2471645608 diff --git a/checkpoint-1632/rng_state.pth b/checkpoint-1632/rng_state.pth new file mode 100644 index 0000000..fb20aa3 --- /dev/null +++ b/checkpoint-1632/rng_state.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:7b5fa02ce1f2057ffdcccd86019817387a38e6b835bf0ecf5d2277b489b598e7 +size 14244 diff --git a/checkpoint-1632/scheduler.pt b/checkpoint-1632/scheduler.pt new file mode 100644 index 0000000..521d254 --- /dev/null +++ b/checkpoint-1632/scheduler.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b641a7a33fc204d057f4018cff79d83370a7ec087a5e1a7e9641a81a0c087fd4 +size 1064 diff --git a/checkpoint-1632/special_tokens_map.json b/checkpoint-1632/special_tokens_map.json new file mode 100644 index 0000000..426a800 --- /dev/null +++ b/checkpoint-1632/special_tokens_map.json @@ -0,0 +1,33 @@ +{ + "additional_special_tokens": [ + { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } + ], + "bos_token": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": "<|end_of_text|>" +} diff --git a/checkpoint-1632/tokenizer.json b/checkpoint-1632/tokenizer.json new file mode 100644 index 0000000..1c1d8d5 --- /dev/null +++ b/checkpoint-1632/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9e4e7fb171f92fd137b777cc2714bf87d11576700a1dcd7a399e7bbe39537b +size 17209920 diff --git a/checkpoint-1632/tokenizer_config.json b/checkpoint-1632/tokenizer_config.json new file mode 100644 index 0000000..3a8f322 --- /dev/null +++ b/checkpoint-1632/tokenizer_config.json @@ -0,0 +1,2069 @@ +{ + "added_tokens_decoder": { + "128000": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128001": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128002": { + "content": "<|reserved_special_token_0|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128003": { + "content": "<|reserved_special_token_1|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128004": { + "content": "<|finetune_right_pad_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128005": { + "content": "<|reserved_special_token_2|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128006": { + "content": "<|start_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128007": { + "content": "<|end_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128008": { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128009": { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128010": { + "content": "<|python_tag|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128011": { + "content": "<|reserved_special_token_3|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128012": { + "content": "<|reserved_special_token_4|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128013": { + "content": "<|reserved_special_token_5|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128014": { + "content": "<|reserved_special_token_6|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128015": { + "content": "<|reserved_special_token_7|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128016": { + "content": "<|reserved_special_token_8|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128017": { + "content": "<|reserved_special_token_9|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128018": { + "content": "<|reserved_special_token_10|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128019": { + "content": "<|reserved_special_token_11|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128020": { + "content": "<|reserved_special_token_12|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128021": { + "content": "<|reserved_special_token_13|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128022": { + "content": "<|reserved_special_token_14|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128023": { + "content": "<|reserved_special_token_15|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128024": { + "content": "<|reserved_special_token_16|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128025": { + "content": "<|reserved_special_token_17|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128026": { + "content": "<|reserved_special_token_18|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128027": { + "content": "<|reserved_special_token_19|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128028": { + "content": "<|reserved_special_token_20|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128029": { + "content": "<|reserved_special_token_21|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128030": { + "content": "<|reserved_special_token_22|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128031": { + "content": "<|reserved_special_token_23|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128032": { + "content": "<|reserved_special_token_24|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128033": { + "content": "<|reserved_special_token_25|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128034": { + "content": "<|reserved_special_token_26|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128035": { + "content": "<|reserved_special_token_27|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128036": { + "content": "<|reserved_special_token_28|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128037": { + "content": "<|reserved_special_token_29|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128038": { + "content": "<|reserved_special_token_30|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128039": { + "content": "<|reserved_special_token_31|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128040": { + "content": "<|reserved_special_token_32|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128041": { + "content": "<|reserved_special_token_33|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128042": { + "content": "<|reserved_special_token_34|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128043": { + "content": "<|reserved_special_token_35|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128044": { + "content": "<|reserved_special_token_36|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128045": { + "content": "<|reserved_special_token_37|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128046": { + "content": "<|reserved_special_token_38|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128047": { + "content": "<|reserved_special_token_39|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128048": { + "content": "<|reserved_special_token_40|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128049": { + "content": "<|reserved_special_token_41|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128050": { + "content": "<|reserved_special_token_42|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128051": { + "content": "<|reserved_special_token_43|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128052": { + "content": "<|reserved_special_token_44|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128053": { + "content": "<|reserved_special_token_45|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128054": { + "content": "<|reserved_special_token_46|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128055": { + "content": "<|reserved_special_token_47|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128056": { + "content": "<|reserved_special_token_48|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128057": { + "content": "<|reserved_special_token_49|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128058": { + "content": "<|reserved_special_token_50|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128059": { + "content": "<|reserved_special_token_51|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128060": { + "content": "<|reserved_special_token_52|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128061": { + "content": "<|reserved_special_token_53|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128062": { + "content": "<|reserved_special_token_54|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128063": { + "content": "<|reserved_special_token_55|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128064": { + "content": "<|reserved_special_token_56|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128065": { + "content": "<|reserved_special_token_57|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128066": { + "content": "<|reserved_special_token_58|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128067": { + "content": "<|reserved_special_token_59|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128068": { + "content": "<|reserved_special_token_60|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128069": { + "content": "<|reserved_special_token_61|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128070": { + "content": "<|reserved_special_token_62|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128071": { + "content": "<|reserved_special_token_63|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128072": { + "content": "<|reserved_special_token_64|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128073": { + "content": "<|reserved_special_token_65|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128074": { + "content": "<|reserved_special_token_66|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128075": { + "content": "<|reserved_special_token_67|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128076": { + "content": "<|reserved_special_token_68|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128077": { + "content": "<|reserved_special_token_69|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128078": { + "content": "<|reserved_special_token_70|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128079": { + "content": "<|reserved_special_token_71|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128080": { + "content": "<|reserved_special_token_72|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128081": { + "content": "<|reserved_special_token_73|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128082": { + "content": "<|reserved_special_token_74|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128083": { + "content": "<|reserved_special_token_75|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128084": { + "content": "<|reserved_special_token_76|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128085": { + "content": "<|reserved_special_token_77|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128086": { + "content": "<|reserved_special_token_78|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128087": { + "content": "<|reserved_special_token_79|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128088": { + "content": "<|reserved_special_token_80|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128089": { + "content": "<|reserved_special_token_81|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128090": { + "content": "<|reserved_special_token_82|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128091": { + "content": "<|reserved_special_token_83|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128092": { + "content": "<|reserved_special_token_84|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128093": { + "content": "<|reserved_special_token_85|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128094": { + "content": "<|reserved_special_token_86|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128095": { + "content": "<|reserved_special_token_87|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128096": { + "content": "<|reserved_special_token_88|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128097": { + "content": "<|reserved_special_token_89|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128098": { + "content": "<|reserved_special_token_90|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128099": { + "content": "<|reserved_special_token_91|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128100": { + "content": "<|reserved_special_token_92|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128101": { + "content": "<|reserved_special_token_93|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128102": { + "content": "<|reserved_special_token_94|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128103": { + "content": "<|reserved_special_token_95|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128104": { + "content": "<|reserved_special_token_96|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128105": { + "content": "<|reserved_special_token_97|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128106": { + "content": "<|reserved_special_token_98|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128107": { + "content": "<|reserved_special_token_99|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128108": { + "content": "<|reserved_special_token_100|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128109": { + "content": "<|reserved_special_token_101|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128110": { + "content": "<|reserved_special_token_102|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128111": { + "content": "<|reserved_special_token_103|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128112": { + "content": "<|reserved_special_token_104|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128113": { + "content": "<|reserved_special_token_105|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128114": { + "content": "<|reserved_special_token_106|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128115": { + "content": "<|reserved_special_token_107|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128116": { + "content": "<|reserved_special_token_108|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128117": { + "content": "<|reserved_special_token_109|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128118": { + "content": "<|reserved_special_token_110|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128119": { + "content": "<|reserved_special_token_111|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128120": { + "content": "<|reserved_special_token_112|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128121": { + "content": "<|reserved_special_token_113|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128122": { + "content": "<|reserved_special_token_114|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128123": { + "content": "<|reserved_special_token_115|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128124": { + "content": "<|reserved_special_token_116|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128125": { + "content": "<|reserved_special_token_117|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128126": { + "content": "<|reserved_special_token_118|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128127": { + "content": "<|reserved_special_token_119|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128128": { + "content": "<|reserved_special_token_120|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128129": { + "content": "<|reserved_special_token_121|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128130": { + "content": "<|reserved_special_token_122|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128131": { + "content": "<|reserved_special_token_123|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128132": { + "content": "<|reserved_special_token_124|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128133": { + "content": "<|reserved_special_token_125|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128134": { + "content": "<|reserved_special_token_126|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128135": { + "content": "<|reserved_special_token_127|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128136": { + "content": "<|reserved_special_token_128|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128137": { + "content": "<|reserved_special_token_129|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128138": { + "content": "<|reserved_special_token_130|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128139": { + "content": "<|reserved_special_token_131|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128140": { + "content": "<|reserved_special_token_132|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128141": { + "content": "<|reserved_special_token_133|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128142": { + "content": "<|reserved_special_token_134|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128143": { + "content": "<|reserved_special_token_135|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128144": { + "content": "<|reserved_special_token_136|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128145": { + "content": "<|reserved_special_token_137|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128146": { + "content": "<|reserved_special_token_138|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128147": { + "content": "<|reserved_special_token_139|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128148": { + "content": "<|reserved_special_token_140|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128149": { + "content": "<|reserved_special_token_141|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128150": { + "content": "<|reserved_special_token_142|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128151": { + "content": "<|reserved_special_token_143|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128152": { + "content": "<|reserved_special_token_144|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128153": { + "content": "<|reserved_special_token_145|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128154": { + "content": "<|reserved_special_token_146|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128155": { + "content": "<|reserved_special_token_147|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128156": { + "content": "<|reserved_special_token_148|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128157": { + "content": "<|reserved_special_token_149|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128158": { + "content": "<|reserved_special_token_150|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128159": { + "content": "<|reserved_special_token_151|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128160": { + "content": "<|reserved_special_token_152|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128161": { + "content": "<|reserved_special_token_153|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128162": { + "content": "<|reserved_special_token_154|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128163": { + "content": "<|reserved_special_token_155|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128164": { + "content": "<|reserved_special_token_156|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128165": { + "content": "<|reserved_special_token_157|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128166": { + "content": "<|reserved_special_token_158|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128167": { + "content": "<|reserved_special_token_159|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128168": { + "content": "<|reserved_special_token_160|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128169": { + "content": "<|reserved_special_token_161|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128170": { + "content": "<|reserved_special_token_162|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128171": { + "content": "<|reserved_special_token_163|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128172": { + "content": "<|reserved_special_token_164|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128173": { + "content": "<|reserved_special_token_165|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128174": { + "content": "<|reserved_special_token_166|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128175": { + "content": "<|reserved_special_token_167|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128176": { + "content": "<|reserved_special_token_168|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128177": { + "content": "<|reserved_special_token_169|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128178": { + "content": "<|reserved_special_token_170|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128179": { + "content": "<|reserved_special_token_171|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128180": { + "content": "<|reserved_special_token_172|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128181": { + "content": "<|reserved_special_token_173|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128182": { + "content": "<|reserved_special_token_174|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128183": { + "content": "<|reserved_special_token_175|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128184": { + "content": "<|reserved_special_token_176|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128185": { + "content": "<|reserved_special_token_177|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128186": { + "content": "<|reserved_special_token_178|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128187": { + "content": "<|reserved_special_token_179|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128188": { + "content": "<|reserved_special_token_180|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128189": { + "content": "<|reserved_special_token_181|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128190": { + "content": "<|reserved_special_token_182|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128191": { + "content": "<|reserved_special_token_183|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128192": { + "content": "<|reserved_special_token_184|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128193": { + "content": "<|reserved_special_token_185|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128194": { + "content": "<|reserved_special_token_186|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128195": { + "content": "<|reserved_special_token_187|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128196": { + "content": "<|reserved_special_token_188|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128197": { + "content": "<|reserved_special_token_189|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128198": { + "content": "<|reserved_special_token_190|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128199": { + "content": "<|reserved_special_token_191|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128200": { + "content": "<|reserved_special_token_192|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128201": { + "content": "<|reserved_special_token_193|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128202": { + "content": "<|reserved_special_token_194|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128203": { + "content": "<|reserved_special_token_195|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128204": { + "content": "<|reserved_special_token_196|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128205": { + "content": "<|reserved_special_token_197|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128206": { + "content": "<|reserved_special_token_198|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128207": { + "content": "<|reserved_special_token_199|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128208": { + "content": "<|reserved_special_token_200|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128209": { + "content": "<|reserved_special_token_201|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128210": { + "content": "<|reserved_special_token_202|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128211": { + "content": "<|reserved_special_token_203|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128212": { + "content": "<|reserved_special_token_204|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128213": { + "content": "<|reserved_special_token_205|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128214": { + "content": "<|reserved_special_token_206|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128215": { + "content": "<|reserved_special_token_207|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128216": { + "content": "<|reserved_special_token_208|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128217": { + "content": "<|reserved_special_token_209|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128218": { + "content": "<|reserved_special_token_210|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128219": { + "content": "<|reserved_special_token_211|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128220": { + "content": "<|reserved_special_token_212|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128221": { + "content": "<|reserved_special_token_213|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128222": { + "content": "<|reserved_special_token_214|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128223": { + "content": "<|reserved_special_token_215|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128224": { + "content": "<|reserved_special_token_216|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128225": { + "content": "<|reserved_special_token_217|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128226": { + "content": "<|reserved_special_token_218|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128227": { + "content": "<|reserved_special_token_219|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128228": { + "content": "<|reserved_special_token_220|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128229": { + "content": "<|reserved_special_token_221|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128230": { + "content": "<|reserved_special_token_222|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128231": { + "content": "<|reserved_special_token_223|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128232": { + "content": "<|reserved_special_token_224|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128233": { + "content": "<|reserved_special_token_225|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128234": { + "content": "<|reserved_special_token_226|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128235": { + "content": "<|reserved_special_token_227|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128236": { + "content": "<|reserved_special_token_228|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128237": { + "content": "<|reserved_special_token_229|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128238": { + "content": "<|reserved_special_token_230|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128239": { + "content": "<|reserved_special_token_231|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128240": { + "content": "<|reserved_special_token_232|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128241": { + "content": "<|reserved_special_token_233|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128242": { + "content": "<|reserved_special_token_234|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128243": { + "content": "<|reserved_special_token_235|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128244": { + "content": "<|reserved_special_token_236|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128245": { + "content": "<|reserved_special_token_237|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128246": { + "content": "<|reserved_special_token_238|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128247": { + "content": "<|reserved_special_token_239|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128248": { + "content": "<|reserved_special_token_240|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128249": { + "content": "<|reserved_special_token_241|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128250": { + "content": "<|reserved_special_token_242|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128251": { + "content": "<|reserved_special_token_243|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128252": { + "content": "<|reserved_special_token_244|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128253": { + "content": "<|reserved_special_token_245|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128254": { + "content": "<|reserved_special_token_246|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128255": { + "content": "<|reserved_special_token_247|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|eot_id|>", + "<|eom_id|>" + ], + "bos_token": "<|begin_of_text|>", + "chat_template": "{{ '<|begin_of_text|>' }}{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% endif %}{% if system_message is defined %}{{ '<|start_header_id|>system<|end_header_id|>\n\n' + system_message + '<|eot_id|>' }}{% endif %}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|start_header_id|>user<|end_header_id|>\n\n' + content + '<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n' }}{% elif message['role'] == 'assistant' %}{{ content + '<|eot_id|>' }}{% endif %}{% endfor %}", + "clean_up_tokenization_spaces": true, + "eos_token": "<|end_of_text|>", + "model_input_names": [ + "input_ids", + "attention_mask" + ], + "model_max_length": 2048, + "pad_token": "<|end_of_text|>", + "padding_side": "right", + "split_special_tokens": false, + "tokenizer_class": "PreTrainedTokenizerFast" +} diff --git a/checkpoint-1632/trainer_state.json b/checkpoint-1632/trainer_state.json new file mode 100644 index 0000000..5b5a518 --- /dev/null +++ b/checkpoint-1632/trainer_state.json @@ -0,0 +1,1174 @@ +{ + "best_metric": null, + "best_model_checkpoint": null, + "epoch": 3.0, + "eval_steps": 500, + "global_step": 1632, + "is_hyper_param_search": false, + "is_local_process_zero": true, + "is_world_process_zero": true, + "log_history": [ + { + "epoch": 0.01838235294117647, + "grad_norm": 24.461347652326168, + "learning_rate": 6.097560975609757e-07, + "loss": 1.2036, + "step": 10 + }, + { + "epoch": 0.03676470588235294, + "grad_norm": 17.308880580961944, + "learning_rate": 1.2195121951219514e-06, + "loss": 1.2064, + "step": 20 + }, + { + "epoch": 0.05514705882352941, + "grad_norm": 29.601720546719697, + "learning_rate": 1.8292682926829268e-06, + "loss": 1.2741, + "step": 30 + }, + { + "epoch": 0.07352941176470588, + "grad_norm": 14.115818236245202, + "learning_rate": 2.4390243902439027e-06, + "loss": 0.7596, + "step": 40 + }, + { + "epoch": 0.09191176470588236, + "grad_norm": 21.73939509164672, + "learning_rate": 3.0487804878048782e-06, + "loss": 0.6171, + "step": 50 + }, + { + "epoch": 0.11029411764705882, + "grad_norm": 16.96116387460838, + "learning_rate": 3.6585365853658537e-06, + "loss": 0.794, + "step": 60 + }, + { + "epoch": 0.12867647058823528, + "grad_norm": 15.372652400517632, + "learning_rate": 4.268292682926829e-06, + "loss": 0.6233, + "step": 70 + }, + { + "epoch": 0.14705882352941177, + "grad_norm": 15.062285237489078, + "learning_rate": 4.8780487804878055e-06, + "loss": 0.5441, + "step": 80 + }, + { + "epoch": 0.16544117647058823, + "grad_norm": 18.632304280702545, + "learning_rate": 5.487804878048781e-06, + "loss": 0.5784, + "step": 90 + }, + { + "epoch": 0.18382352941176472, + "grad_norm": 13.945519044585177, + "learning_rate": 6.0975609756097564e-06, + "loss": 0.4844, + "step": 100 + }, + { + "epoch": 0.20220588235294118, + "grad_norm": 6.9751627817275, + "learning_rate": 6.707317073170733e-06, + "loss": 0.6535, + "step": 110 + }, + { + "epoch": 0.22058823529411764, + "grad_norm": 25.188175477401735, + "learning_rate": 7.317073170731707e-06, + "loss": 0.6897, + "step": 120 + }, + { + "epoch": 0.23897058823529413, + "grad_norm": 14.572936912172068, + "learning_rate": 7.926829268292685e-06, + "loss": 0.4217, + "step": 130 + }, + { + "epoch": 0.25735294117647056, + "grad_norm": 14.934836192557746, + "learning_rate": 8.536585365853658e-06, + "loss": 0.5868, + "step": 140 + }, + { + "epoch": 0.2757352941176471, + "grad_norm": 11.450309910668999, + "learning_rate": 9.146341463414635e-06, + "loss": 0.53, + "step": 150 + }, + { + "epoch": 0.29411764705882354, + "grad_norm": 21.677329690439954, + "learning_rate": 9.756097560975611e-06, + "loss": 0.5538, + "step": 160 + }, + { + "epoch": 0.3125, + "grad_norm": 13.221017712308962, + "learning_rate": 9.999587822598768e-06, + "loss": 0.4616, + "step": 170 + }, + { + "epoch": 0.33088235294117646, + "grad_norm": 17.10580370679984, + "learning_rate": 9.997069206794246e-06, + "loss": 0.5633, + "step": 180 + }, + { + "epoch": 0.3492647058823529, + "grad_norm": 12.4225156252439, + "learning_rate": 9.992262114666653e-06, + "loss": 0.6035, + "step": 190 + }, + { + "epoch": 0.36764705882352944, + "grad_norm": 9.012606555821149, + "learning_rate": 9.985168747689706e-06, + "loss": 0.5822, + "step": 200 + }, + { + "epoch": 0.3860294117647059, + "grad_norm": 7.876601539287651, + "learning_rate": 9.975792354368019e-06, + "loss": 0.3755, + "step": 210 + }, + { + "epoch": 0.40441176470588236, + "grad_norm": 6.10882571982772, + "learning_rate": 9.964137228749409e-06, + "loss": 0.4914, + "step": 220 + }, + { + "epoch": 0.4227941176470588, + "grad_norm": 6.537974128609375, + "learning_rate": 9.950208708458371e-06, + "loss": 0.4604, + "step": 230 + }, + { + "epoch": 0.4411764705882353, + "grad_norm": 7.108775542718406, + "learning_rate": 9.934013172251654e-06, + "loss": 0.5029, + "step": 240 + }, + { + "epoch": 0.45955882352941174, + "grad_norm": 13.652621643454376, + "learning_rate": 9.915558037097003e-06, + "loss": 0.5404, + "step": 250 + }, + { + "epoch": 0.47794117647058826, + "grad_norm": 9.685271320615122, + "learning_rate": 9.894851754776473e-06, + "loss": 0.3555, + "step": 260 + }, + { + "epoch": 0.4963235294117647, + "grad_norm": 10.504810722270348, + "learning_rate": 9.871903808015812e-06, + "loss": 0.4092, + "step": 270 + }, + { + "epoch": 0.5147058823529411, + "grad_norm": 12.557835687927717, + "learning_rate": 9.846724706141718e-06, + "loss": 0.4489, + "step": 280 + }, + { + "epoch": 0.5330882352941176, + "grad_norm": 19.32420837447236, + "learning_rate": 9.819325980268946e-06, + "loss": 0.5297, + "step": 290 + }, + { + "epoch": 0.5514705882352942, + "grad_norm": 12.56688753149935, + "learning_rate": 9.789720178019483e-06, + "loss": 0.4301, + "step": 300 + }, + { + "epoch": 0.5698529411764706, + "grad_norm": 8.769304725602016, + "learning_rate": 9.757920857776188e-06, + "loss": 0.5499, + "step": 310 + }, + { + "epoch": 0.5882352941176471, + "grad_norm": 6.742725850222398, + "learning_rate": 9.723942582473545e-06, + "loss": 0.3723, + "step": 320 + }, + { + "epoch": 0.6066176470588235, + "grad_norm": 32.81061857477797, + "learning_rate": 9.687800912928362e-06, + "loss": 0.6103, + "step": 330 + }, + { + "epoch": 0.625, + "grad_norm": 7.250155807815409, + "learning_rate": 9.649512400713497e-06, + "loss": 0.5561, + "step": 340 + }, + { + "epoch": 0.6433823529411765, + "grad_norm": 8.449295772111478, + "learning_rate": 9.609094580577825e-06, + "loss": 0.4384, + "step": 350 + }, + { + "epoch": 0.6617647058823529, + "grad_norm": 8.965901929446623, + "learning_rate": 9.566565962415958e-06, + "loss": 0.492, + "step": 360 + }, + { + "epoch": 0.6801470588235294, + "grad_norm": 10.783592668291883, + "learning_rate": 9.521946022791402e-06, + "loss": 0.5596, + "step": 370 + }, + { + "epoch": 0.6985294117647058, + "grad_norm": 6.524203722153494, + "learning_rate": 9.475255196016972e-06, + "loss": 0.4657, + "step": 380 + }, + { + "epoch": 0.7169117647058824, + "grad_norm": 6.844495651307719, + "learning_rate": 9.426514864796648e-06, + "loss": 0.547, + "step": 390 + }, + { + "epoch": 0.7352941176470589, + "grad_norm": 7.093995062440304, + "learning_rate": 9.375747350433044e-06, + "loss": 0.4821, + "step": 400 + }, + { + "epoch": 0.7536764705882353, + "grad_norm": 13.008619062718342, + "learning_rate": 9.322975902605082e-06, + "loss": 0.3627, + "step": 410 + }, + { + "epoch": 0.7720588235294118, + "grad_norm": 7.658314017103231, + "learning_rate": 9.268224688720475e-06, + "loss": 0.2779, + "step": 420 + }, + { + "epoch": 0.7904411764705882, + "grad_norm": 9.961772688539515, + "learning_rate": 9.211518782847932e-06, + "loss": 0.684, + "step": 430 + }, + { + "epoch": 0.8088235294117647, + "grad_norm": 5.184448250813704, + "learning_rate": 9.152884154234147e-06, + "loss": 0.3829, + "step": 440 + }, + { + "epoch": 0.8272058823529411, + "grad_norm": 16.899974205034713, + "learning_rate": 9.092347655410818e-06, + "loss": 0.409, + "step": 450 + }, + { + "epoch": 0.8455882352941176, + "grad_norm": 9.123647569900998, + "learning_rate": 9.029937009897176e-06, + "loss": 0.4189, + "step": 460 + }, + { + "epoch": 0.8639705882352942, + "grad_norm": 14.941661911314725, + "learning_rate": 8.96568079950361e-06, + "loss": 0.4846, + "step": 470 + }, + { + "epoch": 0.8823529411764706, + "grad_norm": 6.576553080941865, + "learning_rate": 8.899608451242233e-06, + "loss": 0.4869, + "step": 480 + }, + { + "epoch": 0.9007352941176471, + "grad_norm": 9.989273508498824, + "learning_rate": 8.83175022385039e-06, + "loss": 0.368, + "step": 490 + }, + { + "epoch": 0.9191176470588235, + "grad_norm": 5.168977011450082, + "learning_rate": 8.762137193933241e-06, + "loss": 0.3489, + "step": 500 + }, + { + "epoch": 0.9375, + "grad_norm": 9.716727823960543, + "learning_rate": 8.690801241731818e-06, + "loss": 0.4095, + "step": 510 + }, + { + "epoch": 0.9558823529411765, + "grad_norm": 9.305144213419574, + "learning_rate": 8.617775036523014e-06, + "loss": 0.4641, + "step": 520 + }, + { + "epoch": 0.9742647058823529, + "grad_norm": 7.973224876288721, + "learning_rate": 8.543092021658259e-06, + "loss": 0.3311, + "step": 530 + }, + { + "epoch": 0.9926470588235294, + "grad_norm": 7.223605900810482, + "learning_rate": 8.466786399247663e-06, + "loss": 0.3561, + "step": 540 + }, + { + "epoch": 1.0110294117647058, + "grad_norm": 7.955108957559817, + "learning_rate": 8.388893114496706e-06, + "loss": 0.3474, + "step": 550 + }, + { + "epoch": 1.0294117647058822, + "grad_norm": 8.495071396849232, + "learning_rate": 8.309447839702583e-06, + "loss": 0.2188, + "step": 560 + }, + { + "epoch": 1.0477941176470589, + "grad_norm": 6.043931760485918, + "learning_rate": 8.228486957917608e-06, + "loss": 0.2178, + "step": 570 + }, + { + "epoch": 1.0661764705882353, + "grad_norm": 6.438867996730345, + "learning_rate": 8.146047546287077e-06, + "loss": 0.2783, + "step": 580 + }, + { + "epoch": 1.0845588235294117, + "grad_norm": 3.6977346854366107, + "learning_rate": 8.062167359069301e-06, + "loss": 0.2463, + "step": 590 + }, + { + "epoch": 1.1029411764705883, + "grad_norm": 6.660661443962452, + "learning_rate": 7.97688481034551e-06, + "loss": 0.2634, + "step": 600 + }, + { + "epoch": 1.1213235294117647, + "grad_norm": 9.365314735040004, + "learning_rate": 7.8902389564276e-06, + "loss": 0.294, + "step": 610 + }, + { + "epoch": 1.1397058823529411, + "grad_norm": 6.992327039164838, + "learning_rate": 7.802269477971771e-06, + "loss": 0.273, + "step": 620 + }, + { + "epoch": 1.1580882352941178, + "grad_norm": 16.22021668710731, + "learning_rate": 7.713016661806213e-06, + "loss": 0.2975, + "step": 630 + }, + { + "epoch": 1.1764705882352942, + "grad_norm": 5.1105720664815, + "learning_rate": 7.622521382481208e-06, + "loss": 0.2831, + "step": 640 + }, + { + "epoch": 1.1948529411764706, + "grad_norm": 18.745915660915887, + "learning_rate": 7.530825083550073e-06, + "loss": 0.3548, + "step": 650 + }, + { + "epoch": 1.213235294117647, + "grad_norm": 10.329160246000239, + "learning_rate": 7.437969758589508e-06, + "loss": 0.2454, + "step": 660 + }, + { + "epoch": 1.2316176470588236, + "grad_norm": 6.408214730217885, + "learning_rate": 7.343997931968068e-06, + "loss": 0.2694, + "step": 670 + }, + { + "epoch": 1.25, + "grad_norm": 7.486293079129486, + "learning_rate": 7.248952639371543e-06, + "loss": 0.3091, + "step": 680 + }, + { + "epoch": 1.2683823529411764, + "grad_norm": 5.956954386852354, + "learning_rate": 7.152877408094179e-06, + "loss": 0.2305, + "step": 690 + }, + { + "epoch": 1.2867647058823528, + "grad_norm": 8.065888848768314, + "learning_rate": 7.055816237104753e-06, + "loss": 0.3002, + "step": 700 + }, + { + "epoch": 1.3051470588235294, + "grad_norm": 3.322320099042565, + "learning_rate": 6.957813576896647e-06, + "loss": 0.2868, + "step": 710 + }, + { + "epoch": 1.3235294117647058, + "grad_norm": 11.20812027560389, + "learning_rate": 6.858914309131131e-06, + "loss": 0.2342, + "step": 720 + }, + { + "epoch": 1.3419117647058822, + "grad_norm": 11.126428155503467, + "learning_rate": 6.7591637260831925e-06, + "loss": 0.2143, + "step": 730 + }, + { + "epoch": 1.3602941176470589, + "grad_norm": 6.169632411834191, + "learning_rate": 6.6586075098993196e-06, + "loss": 0.3071, + "step": 740 + }, + { + "epoch": 1.3786764705882353, + "grad_norm": 8.952863279335729, + "learning_rate": 6.557291711676738e-06, + "loss": 0.2977, + "step": 750 + }, + { + "epoch": 1.3970588235294117, + "grad_norm": 4.407249523532787, + "learning_rate": 6.455262730373673e-06, + "loss": 0.2326, + "step": 760 + }, + { + "epoch": 1.4154411764705883, + "grad_norm": 11.807741453984933, + "learning_rate": 6.352567291560319e-06, + "loss": 0.3158, + "step": 770 + }, + { + "epoch": 1.4338235294117647, + "grad_norm": 13.900682242664102, + "learning_rate": 6.249252426020217e-06, + "loss": 0.3301, + "step": 780 + }, + { + "epoch": 1.4522058823529411, + "grad_norm": 10.2905193894227, + "learning_rate": 6.145365448211866e-06, + "loss": 0.2937, + "step": 790 + }, + { + "epoch": 1.4705882352941178, + "grad_norm": 5.654029084586675, + "learning_rate": 6.040953934600425e-06, + "loss": 0.2229, + "step": 800 + }, + { + "epoch": 1.4889705882352942, + "grad_norm": 7.884909374384519, + "learning_rate": 5.936065701869404e-06, + "loss": 0.3169, + "step": 810 + }, + { + "epoch": 1.5073529411764706, + "grad_norm": 4.885582156638979, + "learning_rate": 5.830748785022369e-06, + "loss": 0.257, + "step": 820 + }, + { + "epoch": 1.5257352941176472, + "grad_norm": 10.069197658253753, + "learning_rate": 5.725051415384657e-06, + "loss": 0.2766, + "step": 830 + }, + { + "epoch": 1.5441176470588234, + "grad_norm": 8.25370914927739, + "learning_rate": 5.619021998515165e-06, + "loss": 0.2385, + "step": 840 + }, + { + "epoch": 1.5625, + "grad_norm": 4.810424736549512, + "learning_rate": 5.51270909203838e-06, + "loss": 0.2844, + "step": 850 + }, + { + "epoch": 1.5808823529411766, + "grad_norm": 10.0208212747629, + "learning_rate": 5.40616138340673e-06, + "loss": 0.2924, + "step": 860 + }, + { + "epoch": 1.5992647058823528, + "grad_norm": 13.748183320384355, + "learning_rate": 5.299427667603516e-06, + "loss": 0.2826, + "step": 870 + }, + { + "epoch": 1.6176470588235294, + "grad_norm": 2.892654980772666, + "learning_rate": 5.1925568247965686e-06, + "loss": 0.2106, + "step": 880 + }, + { + "epoch": 1.6360294117647058, + "grad_norm": 4.016652056640837, + "learning_rate": 5.085597797952906e-06, + "loss": 0.3306, + "step": 890 + }, + { + "epoch": 1.6544117647058822, + "grad_norm": 4.348213620564617, + "learning_rate": 4.97859957042464e-06, + "loss": 0.2227, + "step": 900 + }, + { + "epoch": 1.6727941176470589, + "grad_norm": 8.314405849156318, + "learning_rate": 4.871611143516367e-06, + "loss": 0.2275, + "step": 910 + }, + { + "epoch": 1.6911764705882353, + "grad_norm": 3.1251931465193747, + "learning_rate": 4.7646815140443625e-06, + "loss": 0.2966, + "step": 920 + }, + { + "epoch": 1.7095588235294117, + "grad_norm": 2.9353246185637287, + "learning_rate": 4.657859651897807e-06, + "loss": 0.228, + "step": 930 + }, + { + "epoch": 1.7279411764705883, + "grad_norm": 4.988890457346432, + "learning_rate": 4.551194477612351e-06, + "loss": 0.2694, + "step": 940 + }, + { + "epoch": 1.7463235294117647, + "grad_norm": 2.1319176010435252, + "learning_rate": 4.444734839966306e-06, + "loss": 0.1944, + "step": 950 + }, + { + "epoch": 1.7647058823529411, + "grad_norm": 4.43095941592791, + "learning_rate": 4.338529493609647e-06, + "loss": 0.2479, + "step": 960 + }, + { + "epoch": 1.7830882352941178, + "grad_norm": 4.620277796996259, + "learning_rate": 4.232627076736181e-06, + "loss": 0.1819, + "step": 970 + }, + { + "epoch": 1.8014705882352942, + "grad_norm": 9.324548402262511, + "learning_rate": 4.127076088809e-06, + "loss": 0.2514, + "step": 980 + }, + { + "epoch": 1.8198529411764706, + "grad_norm": 9.685553327436127, + "learning_rate": 4.021924868349493e-06, + "loss": 0.24, + "step": 990 + }, + { + "epoch": 1.8382352941176472, + "grad_norm": 4.557597261535076, + "learning_rate": 3.9172215708000655e-06, + "loss": 0.2477, + "step": 1000 + }, + { + "epoch": 1.8566176470588234, + "grad_norm": 7.730856763833525, + "learning_rate": 3.8130141464706806e-06, + "loss": 0.2207, + "step": 1010 + }, + { + "epoch": 1.875, + "grad_norm": 6.292936274037211, + "learning_rate": 3.709350318579371e-06, + "loss": 0.2634, + "step": 1020 + }, + { + "epoch": 1.8933823529411766, + "grad_norm": 3.506287081857162, + "learning_rate": 3.606277561396726e-06, + "loss": 0.236, + "step": 1030 + }, + { + "epoch": 1.9117647058823528, + "grad_norm": 5.326613968704466, + "learning_rate": 3.503843078504405e-06, + "loss": 0.2132, + "step": 1040 + }, + { + "epoch": 1.9301470588235294, + "grad_norm": 4.120806515275935, + "learning_rate": 3.4020937811776154e-06, + "loss": 0.2088, + "step": 1050 + }, + { + "epoch": 1.9485294117647058, + "grad_norm": 12.349465603173341, + "learning_rate": 3.301076266901435e-06, + "loss": 0.2413, + "step": 1060 + }, + { + "epoch": 1.9669117647058822, + "grad_norm": 9.063898128342878, + "learning_rate": 3.2008367980308737e-06, + "loss": 0.2271, + "step": 1070 + }, + { + "epoch": 1.9852941176470589, + "grad_norm": 7.508365526935029, + "learning_rate": 3.1014212806043794e-06, + "loss": 0.2285, + "step": 1080 + }, + { + "epoch": 2.0036764705882355, + "grad_norm": 4.625627595178375, + "learning_rate": 3.0028752433205475e-06, + "loss": 0.1852, + "step": 1090 + }, + { + "epoch": 2.0220588235294117, + "grad_norm": 4.4357477825464935, + "learning_rate": 2.9052438166876305e-06, + "loss": 0.1519, + "step": 1100 + }, + { + "epoch": 2.0404411764705883, + "grad_norm": 7.270033498844353, + "learning_rate": 2.808571712355389e-06, + "loss": 0.1601, + "step": 1110 + }, + { + "epoch": 2.0588235294117645, + "grad_norm": 5.430788007652682, + "learning_rate": 2.7129032026388046e-06, + "loss": 0.1264, + "step": 1120 + }, + { + "epoch": 2.077205882352941, + "grad_norm": 5.229399168057504, + "learning_rate": 2.618282100242935e-06, + "loss": 0.137, + "step": 1130 + }, + { + "epoch": 2.0955882352941178, + "grad_norm": 3.2530670171730063, + "learning_rate": 2.5247517381983137e-06, + "loss": 0.1085, + "step": 1140 + }, + { + "epoch": 2.113970588235294, + "grad_norm": 6.719943927301841, + "learning_rate": 2.4323549500159806e-06, + "loss": 0.1258, + "step": 1150 + }, + { + "epoch": 2.1323529411764706, + "grad_norm": 3.3488917523348367, + "learning_rate": 2.3411340500712833e-06, + "loss": 0.1046, + "step": 1160 + }, + { + "epoch": 2.150735294117647, + "grad_norm": 4.657370433299325, + "learning_rate": 2.251130814225449e-06, + "loss": 0.092, + "step": 1170 + }, + { + "epoch": 2.1691176470588234, + "grad_norm": 2.9670688472212303, + "learning_rate": 2.16238646069373e-06, + "loss": 0.0868, + "step": 1180 + }, + { + "epoch": 2.1875, + "grad_norm": 8.131857870303, + "learning_rate": 2.0749416311689845e-06, + "loss": 0.1059, + "step": 1190 + }, + { + "epoch": 2.2058823529411766, + "grad_norm": 10.154475227479216, + "learning_rate": 1.9888363722092376e-06, + "loss": 0.098, + "step": 1200 + }, + { + "epoch": 2.224264705882353, + "grad_norm": 2.0050786002974026, + "learning_rate": 1.9041101168978094e-06, + "loss": 0.108, + "step": 1210 + }, + { + "epoch": 2.2426470588235294, + "grad_norm": 8.439945942355502, + "learning_rate": 1.8208016667844153e-06, + "loss": 0.1039, + "step": 1220 + }, + { + "epoch": 2.261029411764706, + "grad_norm": 8.60486564105295, + "learning_rate": 1.7389491741154373e-06, + "loss": 0.1132, + "step": 1230 + }, + { + "epoch": 2.2794117647058822, + "grad_norm": 4.696484712814838, + "learning_rate": 1.6585901243616044e-06, + "loss": 0.0999, + "step": 1240 + }, + { + "epoch": 2.297794117647059, + "grad_norm": 4.6231552830326255, + "learning_rate": 1.5797613190509908e-06, + "loss": 0.1059, + "step": 1250 + }, + { + "epoch": 2.3161764705882355, + "grad_norm": 3.6902436160334737, + "learning_rate": 1.502498858915254e-06, + "loss": 0.1186, + "step": 1260 + }, + { + "epoch": 2.3345588235294117, + "grad_norm": 2.5370814512282176, + "learning_rate": 1.4268381273568232e-06, + "loss": 0.1018, + "step": 1270 + }, + { + "epoch": 2.3529411764705883, + "grad_norm": 3.8657043800430584, + "learning_rate": 1.352813774244565e-06, + "loss": 0.0953, + "step": 1280 + }, + { + "epoch": 2.3713235294117645, + "grad_norm": 3.432166252044578, + "learning_rate": 1.2804597000454217e-06, + "loss": 0.1211, + "step": 1290 + }, + { + "epoch": 2.389705882352941, + "grad_norm": 4.3716222719550935, + "learning_rate": 1.2098090402992085e-06, + "loss": 0.1821, + "step": 1300 + }, + { + "epoch": 2.4080882352941178, + "grad_norm": 7.998384499842822, + "learning_rate": 1.1408941504437533e-06, + "loss": 0.1263, + "step": 1310 + }, + { + "epoch": 2.426470588235294, + "grad_norm": 3.850208203788365, + "learning_rate": 1.0737465909972778e-06, + "loss": 0.0792, + "step": 1320 + }, + { + "epoch": 2.4448529411764706, + "grad_norm": 3.688555564340551, + "learning_rate": 1.0083971131048158e-06, + "loss": 0.1395, + "step": 1330 + }, + { + "epoch": 2.463235294117647, + "grad_norm": 4.6455960796035, + "learning_rate": 9.448756444553226e-07, + "loss": 0.1168, + "step": 1340 + }, + { + "epoch": 2.4816176470588234, + "grad_norm": 4.203311959035869, + "learning_rate": 8.832112755758598e-07, + "loss": 0.0876, + "step": 1350 + }, + { + "epoch": 2.5, + "grad_norm": 3.3555040280656607, + "learning_rate": 8.234322465092049e-07, + "loss": 0.1019, + "step": 1360 + }, + { + "epoch": 2.5183823529411766, + "grad_norm": 4.650061051052002, + "learning_rate": 7.655659338809329e-07, + "loss": 0.1377, + "step": 1370 + }, + { + "epoch": 2.536764705882353, + "grad_norm": 6.813560936019147, + "learning_rate": 7.09638838361908e-07, + "loss": 0.0879, + "step": 1380 + }, + { + "epoch": 2.5551470588235294, + "grad_norm": 3.7280612376648845, + "learning_rate": 6.556765725319525e-07, + "loss": 0.0958, + "step": 1390 + }, + { + "epoch": 2.5735294117647056, + "grad_norm": 9.06780320870103, + "learning_rate": 6.037038491501978e-07, + "loss": 0.0994, + "step": 1400 + }, + { + "epoch": 2.5919117647058822, + "grad_norm": 3.786951767893351, + "learning_rate": 5.53744469837551e-07, + "loss": 0.0818, + "step": 1410 + }, + { + "epoch": 2.610294117647059, + "grad_norm": 6.614547209289121, + "learning_rate": 5.058213141764151e-07, + "loss": 0.1018, + "step": 1420 + }, + { + "epoch": 2.6286764705882355, + "grad_norm": 1.3227088771313298, + "learning_rate": 4.599563292326592e-07, + "loss": 0.0874, + "step": 1430 + }, + { + "epoch": 2.6470588235294117, + "grad_norm": 4.123067760097869, + "learning_rate": 4.1617051950467613e-07, + "loss": 0.1395, + "step": 1440 + }, + { + "epoch": 2.6654411764705883, + "grad_norm": 3.277587387385848, + "learning_rate": 3.744839373040682e-07, + "loss": 0.1316, + "step": 1450 + }, + { + "epoch": 2.6838235294117645, + "grad_norm": 7.242903909781894, + "learning_rate": 3.3491567357242736e-07, + "loss": 0.1149, + "step": 1460 + }, + { + "epoch": 2.702205882352941, + "grad_norm": 6.625461967024777, + "learning_rate": 2.9748384913837525e-07, + "loss": 0.0907, + "step": 1470 + }, + { + "epoch": 2.7205882352941178, + "grad_norm": 7.203659881581687, + "learning_rate": 2.6220560641887385e-07, + "loss": 0.1253, + "step": 1480 + }, + { + "epoch": 2.7389705882352944, + "grad_norm": 6.378763396607792, + "learning_rate": 2.2909710156863275e-07, + "loss": 0.098, + "step": 1490 + }, + { + "epoch": 2.7573529411764706, + "grad_norm": 7.337516899008145, + "learning_rate": 1.981734970811644e-07, + "loss": 0.1071, + "step": 1500 + }, + { + "epoch": 2.775735294117647, + "grad_norm": 3.1329621536642542, + "learning_rate": 1.6944895484492075e-07, + "loss": 0.097, + "step": 1510 + }, + { + "epoch": 2.7941176470588234, + "grad_norm": 4.118478339669222, + "learning_rate": 1.429366296576623e-07, + "loss": 0.0984, + "step": 1520 + }, + { + "epoch": 2.8125, + "grad_norm": 4.232819621818319, + "learning_rate": 1.1864866320203116e-07, + "loss": 0.0858, + "step": 1530 + }, + { + "epoch": 2.8308823529411766, + "grad_norm": 5.587393080677787, + "learning_rate": 9.659617848510883e-08, + "loss": 0.1211, + "step": 1540 + }, + { + "epoch": 2.849264705882353, + "grad_norm": 7.695362333030779, + "learning_rate": 7.678927474447817e-08, + "loss": 0.1214, + "step": 1550 + }, + { + "epoch": 2.8676470588235294, + "grad_norm": 5.960106493970138, + "learning_rate": 5.9237022823140924e-08, + "loss": 0.0839, + "step": 1560 + }, + { + "epoch": 2.8860294117647056, + "grad_norm": 3.1314860543234366, + "learning_rate": 4.394746101540115e-08, + "loss": 0.1084, + "step": 1570 + }, + { + "epoch": 2.9044117647058822, + "grad_norm": 4.547681508219823, + "learning_rate": 3.092759138561607e-08, + "loss": 0.109, + "step": 1580 + }, + { + "epoch": 2.922794117647059, + "grad_norm": 4.617590187379549, + "learning_rate": 2.0183376561507263e-08, + "loss": 0.0956, + "step": 1590 + }, + { + "epoch": 2.9411764705882355, + "grad_norm": 3.342902872290941, + "learning_rate": 1.171973700349216e-08, + "loss": 0.119, + "step": 1600 + }, + { + "epoch": 2.9595588235294117, + "grad_norm": 7.136250820241153, + "learning_rate": 5.540548751292174e-09, + "loss": 0.1018, + "step": 1610 + }, + { + "epoch": 2.9779411764705883, + "grad_norm": 6.138459039674928, + "learning_rate": 1.6486416488459279e-09, + "loss": 0.0922, + "step": 1620 + }, + { + "epoch": 2.9963235294117645, + "grad_norm": 3.150046185555739, + "learning_rate": 4.579804834703438e-11, + "loss": 0.0803, + "step": 1630 + } + ], + "logging_steps": 10, + "max_steps": 1632, + "num_input_tokens_seen": 0, + "num_train_epochs": 3, + "save_steps": 500, + "stateful_callbacks": { + "TrainerControl": { + "args": { + "should_epoch_stop": false, + "should_evaluate": false, + "should_log": false, + "should_save": true, + "should_training_stop": true + }, + "attributes": {} + } + }, + "total_flos": 246796222464.0, + "train_batch_size": 1, + "trial_name": null, + "trial_params": null +} diff --git a/checkpoint-1632/training_args.bin b/checkpoint-1632/training_args.bin new file mode 100644 index 0000000..10fbb2a --- /dev/null +++ b/checkpoint-1632/training_args.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4bebf5c7141bddbed6a7feb4bf1a35ed3fbf020c7c4dc7ab21f6f30268f7e3 +size 7352 diff --git a/checkpoint-1632/zero_to_fp32.py b/checkpoint-1632/zero_to_fp32.py new file mode 100644 index 0000000..0e75914 --- /dev/null +++ b/checkpoint-1632/zero_to_fp32.py @@ -0,0 +1,760 @@ +#!/usr/bin/env python + +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 + +# DeepSpeed Team + +# This script extracts fp32 consolidated weights from a zero 1, 2 and 3 DeepSpeed checkpoints. It gets +# copied into the top level checkpoint dir, so the user can easily do the conversion at any point in +# the future. Once extracted, the weights don't require DeepSpeed and can be used in any +# application. +# +# example: +# python zero_to_fp32.py . output_dir/ +# or +# python zero_to_fp32.py . output_dir/ --safe_serialization + +import argparse +import torch +import glob +import math +import os +import re +import gc +import json +import numpy as np +from tqdm import tqdm +from collections import OrderedDict +from dataclasses import dataclass + +# while this script doesn't use deepspeed to recover data, since the checkpoints are pickled with +# DeepSpeed data structures it has to be available in the current python environment. +from deepspeed.utils import logger +from deepspeed.checkpoint.constants import (DS_VERSION, OPTIMIZER_STATE_DICT, SINGLE_PARTITION_OF_FP32_GROUPS, + FP32_FLAT_GROUPS, ZERO_STAGE, PARTITION_COUNT, PARAM_SHAPES, BUFFER_NAMES, + FROZEN_PARAM_SHAPES, FROZEN_PARAM_FRAGMENTS) + + +@dataclass +class zero_model_state: + buffers: dict() + param_shapes: dict() + shared_params: list + ds_version: int + frozen_param_shapes: dict() + frozen_param_fragments: dict() + + +debug = 0 + +# load to cpu +device = torch.device('cpu') + + +def atoi(text): + return int(text) if text.isdigit() else text + + +def natural_keys(text): + ''' + alist.sort(key=natural_keys) sorts in human order + http://nedbatchelder.com/blog/200712/human_sorting.html + (See Toothy's implementation in the comments) + ''' + return [atoi(c) for c in re.split(r'(\d+)', text)] + + +def get_model_state_file(checkpoint_dir, zero_stage): + if not os.path.isdir(checkpoint_dir): + raise FileNotFoundError(f"Directory '{checkpoint_dir}' doesn't exist") + + # there should be only one file + if zero_stage <= 2: + file = os.path.join(checkpoint_dir, "mp_rank_00_model_states.pt") + elif zero_stage == 3: + file = os.path.join(checkpoint_dir, "zero_pp_rank_0_mp_rank_00_model_states.pt") + + if not os.path.exists(file): + raise FileNotFoundError(f"can't find model states file at '{file}'") + + return file + + +def get_checkpoint_files(checkpoint_dir, glob_pattern): + # XXX: need to test that this simple glob rule works for multi-node setup too + ckpt_files = sorted(glob.glob(os.path.join(checkpoint_dir, glob_pattern)), key=natural_keys) + + if len(ckpt_files) == 0: + raise FileNotFoundError(f"can't find {glob_pattern} files in directory '{checkpoint_dir}'") + + return ckpt_files + + +def get_optim_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_optim_states.pt") + + +def get_model_state_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_model_states.pt") + + +def parse_model_states(files): + zero_model_states = [] + for file in files: + state_dict = torch.load(file, map_location=device, weights_only=False) + + if BUFFER_NAMES not in state_dict: + raise ValueError(f"{file} is not a model state checkpoint") + buffer_names = state_dict[BUFFER_NAMES] + if debug: + print("Found buffers:", buffer_names) + + # recover just the buffers while restoring them to fp32 if they were saved in fp16 + buffers = {k: v.float() for k, v in state_dict["module"].items() if k in buffer_names} + param_shapes = state_dict[PARAM_SHAPES] + + # collect parameters that are included in param_shapes + param_names = [] + for s in param_shapes: + for name in s.keys(): + param_names.append(name) + + # update with frozen parameters + frozen_param_shapes = state_dict.get(FROZEN_PARAM_SHAPES, None) + if frozen_param_shapes is not None: + if debug: + print(f"Found frozen_param_shapes: {frozen_param_shapes}") + param_names += list(frozen_param_shapes.keys()) + + # handle shared params + shared_params = [[k, v] for k, v in state_dict["shared_params"].items()] + + ds_version = state_dict.get(DS_VERSION, None) + + frozen_param_fragments = state_dict.get(FROZEN_PARAM_FRAGMENTS, None) + + z_model_state = zero_model_state(buffers=buffers, + param_shapes=param_shapes, + shared_params=shared_params, + ds_version=ds_version, + frozen_param_shapes=frozen_param_shapes, + frozen_param_fragments=frozen_param_fragments) + zero_model_states.append(z_model_state) + + return zero_model_states + + +def parse_optim_states(files, ds_checkpoint_dir): + total_files = len(files) + state_dicts = [] + for f in tqdm(files, desc='Loading checkpoint shards'): + state_dict = torch.load(f, map_location=device, mmap=True, weights_only=False) + # immediately discard the potentially huge 2 optimizer states as we only care for fp32 master weights + # and also handle the case where it was already removed by another helper script + state_dict["optimizer_state_dict"].pop("optimizer_state_dict", None) + state_dicts.append(state_dict) + + if not ZERO_STAGE in state_dicts[0][OPTIMIZER_STATE_DICT]: + raise ValueError(f"{files[0]} is not a zero checkpoint") + zero_stage = state_dicts[0][OPTIMIZER_STATE_DICT][ZERO_STAGE] + world_size = state_dicts[0][OPTIMIZER_STATE_DICT][PARTITION_COUNT] + + # For ZeRO-2 each param group can have different partition_count as data parallelism for expert + # parameters can be different from data parallelism for non-expert parameters. So we can just + # use the max of the partition_count to get the dp world_size. + + if type(world_size) is list: + world_size = max(world_size) + + if world_size != total_files: + raise ValueError( + f"Expected {world_size} of '*_optim_states.pt' under '{ds_checkpoint_dir}' but found {total_files} files. " + "Possibly due to an overwrite of an old checkpoint, or a checkpoint didn't get saved by one or more processes." + ) + + # the groups are named differently in each stage + if zero_stage <= 2: + fp32_groups_key = SINGLE_PARTITION_OF_FP32_GROUPS + elif zero_stage == 3: + fp32_groups_key = FP32_FLAT_GROUPS + else: + raise ValueError(f"unknown zero stage {zero_stage}") + + fp32_flat_groups = [state_dicts[i][OPTIMIZER_STATE_DICT][fp32_groups_key] for i in range(len(state_dicts))] + return zero_stage, world_size, fp32_flat_groups + + +def _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters): + """ + Returns fp32 state_dict reconstructed from ds checkpoint + + Args: + - ``ds_checkpoint_dir``: path to the deepspeed checkpoint folder (where the optimizer files are) + + """ + print(f"Processing zero checkpoint '{ds_checkpoint_dir}'") + + optim_files = get_optim_files(ds_checkpoint_dir) + zero_stage, world_size, fp32_flat_groups = parse_optim_states(optim_files, ds_checkpoint_dir) + print(f"Detected checkpoint of type zero stage {zero_stage}, world_size: {world_size}") + + model_files = get_model_state_files(ds_checkpoint_dir) + + zero_model_states = parse_model_states(model_files) + print(f'Parsing checkpoint created by deepspeed=={zero_model_states[0].ds_version}') + + if zero_stage <= 2: + return _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + elif zero_stage == 3: + return _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + + +def _zero2_merge_frozen_params(state_dict, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + frozen_param_fragments = zero_model_states[0].frozen_param_fragments + + if debug: + num_elem = sum(s.numel() for s in frozen_param_shapes.values()) + print(f'rank 0: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in frozen_param_fragments.values()]) + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + state_dict[name] = frozen_param_fragments[name] + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +def _has_callable(obj, fn): + attr = getattr(obj, fn, None) + return callable(attr) + + +def _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + + # Reconstruction protocol: + # + # XXX: document this + + if debug: + for i in range(world_size): + for j in range(len(fp32_flat_groups[0])): + print(f"{FP32_FLAT_GROUPS}[{i}][{j}].shape={fp32_flat_groups[i][j].shape}") + + # XXX: memory usage doubles here (zero2) + num_param_groups = len(fp32_flat_groups[0]) + merged_single_partition_of_fp32_groups = [] + for i in range(num_param_groups): + merged_partitions = [sd[i] for sd in fp32_flat_groups] + full_single_fp32_vector = torch.cat(merged_partitions, 0) + merged_single_partition_of_fp32_groups.append(full_single_fp32_vector) + avail_numel = sum( + [full_single_fp32_vector.numel() for full_single_fp32_vector in merged_single_partition_of_fp32_groups]) + + if debug: + wanted_params = sum([len(shapes) for shapes in param_shapes]) + wanted_numel = sum([sum(shape.numel() for shape in shapes.values()) for shapes in param_shapes]) + # not asserting if there is a mismatch due to possible padding + print(f"Have {avail_numel} numels to process.") + print(f"Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + total_numel = 0 + total_params = 0 + for shapes, full_single_fp32_vector in zip(param_shapes, merged_single_partition_of_fp32_groups): + offset = 0 + avail_numel = full_single_fp32_vector.numel() + for name, shape in shapes.items(): + + unpartitioned_numel = shape.numel() if _has_callable(shape, 'numel') else math.prod(shape) + total_numel += unpartitioned_numel + total_params += 1 + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + state_dict[name] = full_single_fp32_vector.narrow(0, offset, unpartitioned_numel).view(shape) + offset += unpartitioned_numel + + # Z2 started to align to 2*world_size to improve nccl performance. Therefore both offset and + # avail_numel can differ by anywhere between 0..2*world_size. Due to two unrelated complex + # paddings performed in the code it's almost impossible to predict the exact numbers w/o the + # live optimizer object, so we are checking that the numbers are within the right range + align_to = 2 * world_size + + def zero2_align(x): + return align_to * math.ceil(x / align_to) + + if debug: + print(f"original offset={offset}, avail_numel={avail_numel}") + + offset = zero2_align(offset) + avail_numel = zero2_align(avail_numel) + + if debug: + print(f"aligned offset={offset}, avail_numel={avail_numel}") + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero2_merge_frozen_params(state_dict, zero_model_states) + + _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def zero3_partitioned_param_info(unpartitioned_numel, world_size): + remainder = unpartitioned_numel % world_size + padding_numel = (world_size - remainder) if remainder else 0 + partitioned_numel = math.ceil(unpartitioned_numel / world_size) + return partitioned_numel, padding_numel + + +def _zero3_merge_frozen_params(state_dict, world_size, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + if debug: + for i in range(world_size): + num_elem = sum(s.numel() for s in zero_model_states[i].frozen_param_fragments.values()) + print(f'rank {i}: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in zero_model_states[0].frozen_param_fragments.values()]) * world_size + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in zero_model_states[0].frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + param_frags = tuple(model_state.frozen_param_fragments[name] for model_state in zero_model_states) + state_dict[name] = torch.cat(param_frags, 0).narrow(0, 0, unpartitioned_numel).view(shape) + + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Frozen params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +class GatheredTensor: + """ + A pseudo tensor that collects partitioned weights. + It is more memory efficient when there are multiple groups. + """ + + def __init__(self, flat_groups, flat_groups_offset, offset, partitioned_numel, shape): + self.flat_groups = flat_groups + self.flat_groups_offset = flat_groups_offset + self.offset = offset + self.partitioned_numel = partitioned_numel + self.shape = shape + self.dtype = self.flat_groups[0][0].dtype + + def contiguous(self): + """ + Merge partitioned weights from flat_groups into a single tensor. + """ + end_idx = self.offset + self.partitioned_numel + world_size = len(self.flat_groups) + pad_flat_param_chunks = [] + + for rank_i in range(world_size): + # for each rank, we need to collect weights from related group/groups + flat_groups_at_rank_i = self.flat_groups[rank_i] + start_group_id = None + end_group_id = None + for group_id in range(len(self.flat_groups_offset)): + if self.flat_groups_offset[group_id] <= self.offset < self.flat_groups_offset[group_id + 1]: + start_group_id = group_id + if self.flat_groups_offset[group_id] < end_idx <= self.flat_groups_offset[group_id + 1]: + end_group_id = group_id + break + # collect weights from related group/groups + for group_id in range(start_group_id, end_group_id + 1): + flat_tensor = flat_groups_at_rank_i[group_id] + start_offset = self.offset - self.flat_groups_offset[group_id] + end_offset = min(end_idx, self.flat_groups_offset[group_id + 1]) - self.flat_groups_offset[group_id] + pad_flat_param_chunks.append(flat_tensor[start_offset:end_offset]) + + # collect weights from all ranks + pad_flat_param = torch.cat(pad_flat_param_chunks, dim=0) + param = pad_flat_param[:self.shape.numel()].view(self.shape).contiguous() + return param + + +def _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + avail_numel = sum([flat_group.numel() for flat_group in fp32_flat_groups[0]]) * world_size + + # Reconstruction protocol: For zero3 we need to zip the partitions together at boundary of each + # param, re-consolidating each param, while dealing with padding if any + + # merge list of dicts, preserving order + param_shapes = {k: v for d in param_shapes for k, v in d.items()} + + if debug: + for i in range(world_size): + print(f"{FP32_FLAT_GROUPS}[{i}].shape={fp32_flat_groups[i].shape}") + + wanted_params = len(param_shapes) + wanted_numel = sum(shape.numel() for shape in param_shapes.values()) + # not asserting if there is a mismatch due to possible padding + avail_numel = fp32_flat_groups[0].numel() * world_size + print(f"Trainable params: Have {avail_numel} numels to process.") + print(f"Trainable params: Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + offset = 0 + total_numel = 0 + total_params = 0 + flat_groups_offset = [0] + list(np.cumsum([flat_tensor.numel() for flat_tensor in fp32_flat_groups[0]])) + for name, shape in tqdm(param_shapes.items(), desc='Gathering sharded weights'): + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + total_params += 1 + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Trainable params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + # memory efficient tensor + tensor = GatheredTensor(fp32_flat_groups, flat_groups_offset, offset, partitioned_numel, shape) + state_dict[name] = tensor + offset += partitioned_numel + + offset *= world_size + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed Trainable fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero3_merge_frozen_params(state_dict, world_size, zero_model_states) + + _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def to_torch_tensor(state_dict, return_empty_tensor=False): + """ + Convert state_dict of GatheredTensor to torch tensor + """ + torch_state_dict = {} + converted_tensors = {} + for name, tensor in state_dict.items(): + tensor_id = id(tensor) + if tensor_id in converted_tensors: # shared tensors + shared_tensor = torch_state_dict[converted_tensors[tensor_id]] + torch_state_dict[name] = shared_tensor + else: + converted_tensors[tensor_id] = name + if return_empty_tensor: + torch_state_dict[name] = torch.empty(tensor.shape, dtype=tensor.dtype) + else: + torch_state_dict[name] = tensor.contiguous() + return torch_state_dict + + +def get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag=None, + exclude_frozen_parameters=False, + lazy_mode=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated state_dict that can be loaded with + ``load_state_dict()`` and used for training without DeepSpeed or shared with others, for example + via a model hub. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in 'latest' file. e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + - ``lazy_mode``: get state_dict in lazy mode. It returns a dict of pesduo tensor instead of torch tensor, which is more memory efficient. + Convert the pesduo tensor to torch tensor by ``.contiguous()`` + + Returns: + - pytorch ``state_dict`` + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + # do the training and checkpoint saving + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir) # already on cpu + model = model.cpu() # move to cpu + model.load_state_dict(state_dict) + # submit to model hub or save the model to share with others + + In this example the ``model`` will no longer be usable in the deepspeed context of the same + application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + If you want it all done for you, use ``load_state_dict_from_zero_checkpoint`` instead. + + Note: the above usage may not work if your application doesn't have sufficient free CPU memory. + You may need to use the offline approach using the ``zero_to_fp32.py`` script that is saved with + the checkpoint. Or you can load state_dict in lazy mode :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, lazy_mode=True) # not on cpu + for name, lazy_tensor in state_dict.item(): + tensor = lazy_tensor.contiguous() # to cpu + print(name, tensor) + # del tensor to release memory if it no longer in use + """ + if tag is None: + latest_path = os.path.join(checkpoint_dir, 'latest') + if os.path.isfile(latest_path): + with open(latest_path, 'r') as fd: + tag = fd.read().strip() + else: + raise ValueError(f"Unable to find 'latest' file at {latest_path}") + + ds_checkpoint_dir = os.path.join(checkpoint_dir, tag) + + if not os.path.isdir(ds_checkpoint_dir): + raise FileNotFoundError(f"Directory '{ds_checkpoint_dir}' doesn't exist") + + state_dict = _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters) + if lazy_mode: + return state_dict + else: + return to_torch_tensor(state_dict) + + +def convert_zero_checkpoint_to_fp32_state_dict(checkpoint_dir, + output_dir, + max_shard_size="5GB", + safe_serialization=False, + tag=None, + exclude_frozen_parameters=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` file that can be + loaded with ``torch.load(file)`` + ``load_state_dict()`` and used for training without DeepSpeed. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``output_dir``: directory to the pytorch fp32 state_dict output files + - ``max_shard_size``: the maximum size for a checkpoint before being sharded, default value is 5GB + - ``safe_serialization``: whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`). + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + """ + + # Dependency pre-check + if safe_serialization: + try: + from safetensors.torch import save_file + except ImportError: + print('If you want to use `safe_serialization`, please `pip install safetensors`') + raise + if max_shard_size is not None: + try: + from huggingface_hub import split_torch_state_dict_into_shards + except ImportError: + print('If you want to use `max_shard_size`, please `pip install huggingface_hub`') + raise + + # Convert zero checkpoint to state_dict + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag, + exclude_frozen_parameters, + lazy_mode=True) + + # Shard the model if it is too big. + weights_name = "model.safetensors" if safe_serialization else "pytorch_model.bin" + if max_shard_size is not None: + filename_pattern = weights_name.replace(".bin", "{suffix}.bin").replace(".safetensors", "{suffix}.safetensors") + # an memory-efficient approach for sharding + empty_state_dict = to_torch_tensor(state_dict, return_empty_tensor=True) + state_dict_split = split_torch_state_dict_into_shards(empty_state_dict, + filename_pattern=filename_pattern, + max_shard_size=max_shard_size) + else: + from collections import namedtuple + StateDictSplit = namedtuple("StateDictSplit", ["is_sharded", "filename_to_tensors"]) + state_dict_split = StateDictSplit(is_sharded=False, + filename_to_tensors={weights_name: list(state_dict.keys())}) + + # Save the model by shard + os.makedirs(output_dir, exist_ok=True) + filename_to_tensors = state_dict_split.filename_to_tensors.items() + for shard_file, tensors in tqdm(filename_to_tensors, desc="Saving checkpoint shards"): + shard_state_dict = {tensor_name: state_dict[tensor_name] for tensor_name in tensors} + shard_state_dict = to_torch_tensor(shard_state_dict) + output_path = os.path.join(output_dir, shard_file) + if safe_serialization: + save_file(shard_state_dict, output_path, metadata={"format": "pt"}) + else: + torch.save(shard_state_dict, output_path) + # release the memory of current shard + for tensor_name in list(shard_state_dict.keys()): + del state_dict[tensor_name] + del shard_state_dict[tensor_name] + del shard_state_dict + gc.collect() + + # Save index if sharded + if state_dict_split.is_sharded: + index = { + "metadata": state_dict_split.metadata, + "weight_map": state_dict_split.tensor_to_filename, + } + save_index_file = "model.safetensors.index.json" if safe_serialization else "pytorch_model.bin.index.json" + save_index_file = os.path.join(output_dir, save_index_file) + with open(save_index_file, "w", encoding="utf-8") as f: + content = json.dumps(index, indent=2, sort_keys=True) + "\n" + f.write(content) + + +def load_state_dict_from_zero_checkpoint(model, checkpoint_dir, tag=None): + """ + 1. Put the provided model to cpu + 2. Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` + 3. Load it into the provided model + + Args: + - ``model``: the model object to update + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + + Returns: + - ``model`: modified model + + Make sure you have plenty of CPU memory available before you call this function. If you don't + have enough use the ``zero_to_fp32.py`` utility to do the conversion. You will find it + conveniently placed for you in the checkpoint folder. + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import load_state_dict_from_zero_checkpoint + model = load_state_dict_from_zero_checkpoint(trainer.model, checkpoint_dir) + # submit to model hub or save the model to share with others + + Note, that once this was run, the ``model`` will no longer be usable in the deepspeed context + of the same application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + """ + logger.info(f"Extracting fp32 weights") + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, tag) + + logger.info(f"Overwriting model with fp32 weights") + model = model.cpu() + model.load_state_dict(state_dict, strict=False) + + return model + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("checkpoint_dir", + type=str, + help="path to the desired checkpoint folder, e.g., path/checkpoint-12") + parser.add_argument("output_dir", + type=str, + help="directory to the pytorch fp32 state_dict output files" + "(e.g. path/checkpoint-12-output/)") + parser.add_argument( + "--max_shard_size", + type=str, + default="5GB", + help="The maximum size for a checkpoint before being sharded. Checkpoints shard will then be each of size" + "lower than this size. If expressed as a string, needs to be digits followed by a unit (like `5MB`" + "We default it to 5GB in order for models to be able to run easily on free-tier google colab instances" + "without CPU OOM issues.") + parser.add_argument( + "--safe_serialization", + default=False, + action='store_true', + help="Whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`).") + parser.add_argument("-t", + "--tag", + type=str, + default=None, + help="checkpoint tag used as a unique identifier for checkpoint. e.g., global_step1") + parser.add_argument("--exclude_frozen_parameters", action='store_true', help="exclude frozen parameters") + parser.add_argument("-d", "--debug", action='store_true', help="enable debug") + args = parser.parse_args() + + debug = args.debug + + convert_zero_checkpoint_to_fp32_state_dict(args.checkpoint_dir, + args.output_dir, + max_shard_size=args.max_shard_size, + safe_serialization=args.safe_serialization, + tag=args.tag, + exclude_frozen_parameters=args.exclude_frozen_parameters) diff --git a/checkpoint-500/config.json b/checkpoint-500/config.json new file mode 100644 index 0000000..5a1694f --- /dev/null +++ b/checkpoint-500/config.json @@ -0,0 +1,36 @@ +{ + "_name_or_path": "meta-llama/Llama-3.2-1B", + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 128000, + "eos_token_id": 128001, + "head_dim": 64, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 8192, + "max_position_embeddings": 131072, + "mlp_bias": false, + "model_type": "llama", + "num_attention_heads": 32, + "num_hidden_layers": 16, + "num_key_value_heads": 8, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": { + "factor": 32.0, + "high_freq_factor": 4.0, + "low_freq_factor": 1.0, + "original_max_position_embeddings": 8192, + "rope_type": "llama3" + }, + "rope_theta": 500000.0, + "tie_word_embeddings": true, + "torch_dtype": "bfloat16", + "transformers_version": "4.46.1", + "use_cache": false, + "vocab_size": 128256 +} diff --git a/checkpoint-500/generation_config.json b/checkpoint-500/generation_config.json new file mode 100644 index 0000000..eab5082 --- /dev/null +++ b/checkpoint-500/generation_config.json @@ -0,0 +1,9 @@ +{ + "_from_model_config": true, + "bos_token_id": 128000, + "do_sample": true, + "eos_token_id": 128001, + "temperature": 0.6, + "top_p": 0.9, + "transformers_version": "4.46.1" +} diff --git a/checkpoint-500/global_step500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt b/checkpoint-500/global_step500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt new file mode 100644 index 0000000..baddb88 --- /dev/null +++ b/checkpoint-500/global_step500/bf16_zero_pp_rank_0_mp_rank_00_optim_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f961f3448064dc752f94d8dfd289d74cce46be39b3ec34d5dd06a04b9648ecf6 +size 14829779262 diff --git a/checkpoint-500/global_step500/zero_pp_rank_0_mp_rank_00_model_states.pt b/checkpoint-500/global_step500/zero_pp_rank_0_mp_rank_00_model_states.pt new file mode 100644 index 0000000..59e659b --- /dev/null +++ b/checkpoint-500/global_step500/zero_pp_rank_0_mp_rank_00_model_states.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:39f51449e1fd4b5a48b41f33e928e36d9d078efd55264156360b3ee751e865d0 +size 76664 diff --git a/checkpoint-500/latest b/checkpoint-500/latest new file mode 100644 index 0000000..f0b47ce --- /dev/null +++ b/checkpoint-500/latest @@ -0,0 +1 @@ +global_step500 \ No newline at end of file diff --git a/checkpoint-500/model.safetensors b/checkpoint-500/model.safetensors new file mode 100644 index 0000000..7db7ef5 --- /dev/null +++ b/checkpoint-500/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fefe2d5a3d03415cdfd9e766365e52e825289ffd058ac4b8e7bd97ead3599ad0 +size 2471645608 diff --git a/checkpoint-500/rng_state.pth b/checkpoint-500/rng_state.pth new file mode 100644 index 0000000..97f0d87 --- /dev/null +++ b/checkpoint-500/rng_state.pth @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:835f869ea325fd6edf27b48b589309fb66641cb92b45f2fc13d1bb6e8814106c +size 14244 diff --git a/checkpoint-500/scheduler.pt b/checkpoint-500/scheduler.pt new file mode 100644 index 0000000..6f89811 --- /dev/null +++ b/checkpoint-500/scheduler.pt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f7f7a6ec5b6b336abd2fdc77b6cf79ecd28a2794fe661fa2e10edb2faaed0f3a +size 1064 diff --git a/checkpoint-500/special_tokens_map.json b/checkpoint-500/special_tokens_map.json new file mode 100644 index 0000000..426a800 --- /dev/null +++ b/checkpoint-500/special_tokens_map.json @@ -0,0 +1,33 @@ +{ + "additional_special_tokens": [ + { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } + ], + "bos_token": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": "<|end_of_text|>" +} diff --git a/checkpoint-500/tokenizer.json b/checkpoint-500/tokenizer.json new file mode 100644 index 0000000..1c1d8d5 --- /dev/null +++ b/checkpoint-500/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9e4e7fb171f92fd137b777cc2714bf87d11576700a1dcd7a399e7bbe39537b +size 17209920 diff --git a/checkpoint-500/tokenizer_config.json b/checkpoint-500/tokenizer_config.json new file mode 100644 index 0000000..3a8f322 --- /dev/null +++ b/checkpoint-500/tokenizer_config.json @@ -0,0 +1,2069 @@ +{ + "added_tokens_decoder": { + "128000": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128001": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128002": { + "content": "<|reserved_special_token_0|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128003": { + "content": "<|reserved_special_token_1|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128004": { + "content": "<|finetune_right_pad_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128005": { + "content": "<|reserved_special_token_2|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128006": { + "content": "<|start_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128007": { + "content": "<|end_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128008": { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128009": { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128010": { + "content": "<|python_tag|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128011": { + "content": "<|reserved_special_token_3|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128012": { + "content": "<|reserved_special_token_4|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128013": { + "content": "<|reserved_special_token_5|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128014": { + "content": "<|reserved_special_token_6|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128015": { + "content": "<|reserved_special_token_7|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128016": { + "content": "<|reserved_special_token_8|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128017": { + "content": "<|reserved_special_token_9|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128018": { + "content": "<|reserved_special_token_10|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128019": { + "content": "<|reserved_special_token_11|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128020": { + "content": "<|reserved_special_token_12|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128021": { + "content": "<|reserved_special_token_13|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128022": { + "content": "<|reserved_special_token_14|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128023": { + "content": "<|reserved_special_token_15|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128024": { + "content": "<|reserved_special_token_16|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128025": { + "content": "<|reserved_special_token_17|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128026": { + "content": "<|reserved_special_token_18|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128027": { + "content": "<|reserved_special_token_19|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128028": { + "content": "<|reserved_special_token_20|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128029": { + "content": "<|reserved_special_token_21|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128030": { + "content": "<|reserved_special_token_22|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128031": { + "content": "<|reserved_special_token_23|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128032": { + "content": "<|reserved_special_token_24|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128033": { + "content": "<|reserved_special_token_25|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128034": { + "content": "<|reserved_special_token_26|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128035": { + "content": "<|reserved_special_token_27|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128036": { + "content": "<|reserved_special_token_28|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128037": { + "content": "<|reserved_special_token_29|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128038": { + "content": "<|reserved_special_token_30|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128039": { + "content": "<|reserved_special_token_31|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128040": { + "content": "<|reserved_special_token_32|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128041": { + "content": "<|reserved_special_token_33|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128042": { + "content": "<|reserved_special_token_34|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128043": { + "content": "<|reserved_special_token_35|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128044": { + "content": "<|reserved_special_token_36|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128045": { + "content": "<|reserved_special_token_37|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128046": { + "content": "<|reserved_special_token_38|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128047": { + "content": "<|reserved_special_token_39|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128048": { + "content": "<|reserved_special_token_40|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128049": { + "content": "<|reserved_special_token_41|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128050": { + "content": "<|reserved_special_token_42|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128051": { + "content": "<|reserved_special_token_43|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128052": { + "content": "<|reserved_special_token_44|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128053": { + "content": "<|reserved_special_token_45|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128054": { + "content": "<|reserved_special_token_46|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128055": { + "content": "<|reserved_special_token_47|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128056": { + "content": "<|reserved_special_token_48|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128057": { + "content": "<|reserved_special_token_49|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128058": { + "content": "<|reserved_special_token_50|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128059": { + "content": "<|reserved_special_token_51|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128060": { + "content": "<|reserved_special_token_52|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128061": { + "content": "<|reserved_special_token_53|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128062": { + "content": "<|reserved_special_token_54|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128063": { + "content": "<|reserved_special_token_55|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128064": { + "content": "<|reserved_special_token_56|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128065": { + "content": "<|reserved_special_token_57|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128066": { + "content": "<|reserved_special_token_58|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128067": { + "content": "<|reserved_special_token_59|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128068": { + "content": "<|reserved_special_token_60|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128069": { + "content": "<|reserved_special_token_61|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128070": { + "content": "<|reserved_special_token_62|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128071": { + "content": "<|reserved_special_token_63|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128072": { + "content": "<|reserved_special_token_64|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128073": { + "content": "<|reserved_special_token_65|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128074": { + "content": "<|reserved_special_token_66|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128075": { + "content": "<|reserved_special_token_67|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128076": { + "content": "<|reserved_special_token_68|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128077": { + "content": "<|reserved_special_token_69|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128078": { + "content": "<|reserved_special_token_70|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128079": { + "content": "<|reserved_special_token_71|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128080": { + "content": "<|reserved_special_token_72|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128081": { + "content": "<|reserved_special_token_73|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128082": { + "content": "<|reserved_special_token_74|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128083": { + "content": "<|reserved_special_token_75|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128084": { + "content": "<|reserved_special_token_76|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128085": { + "content": "<|reserved_special_token_77|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128086": { + "content": "<|reserved_special_token_78|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128087": { + "content": "<|reserved_special_token_79|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128088": { + "content": "<|reserved_special_token_80|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128089": { + "content": "<|reserved_special_token_81|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128090": { + "content": "<|reserved_special_token_82|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128091": { + "content": "<|reserved_special_token_83|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128092": { + "content": "<|reserved_special_token_84|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128093": { + "content": "<|reserved_special_token_85|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128094": { + "content": "<|reserved_special_token_86|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128095": { + "content": "<|reserved_special_token_87|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128096": { + "content": "<|reserved_special_token_88|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128097": { + "content": "<|reserved_special_token_89|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128098": { + "content": "<|reserved_special_token_90|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128099": { + "content": "<|reserved_special_token_91|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128100": { + "content": "<|reserved_special_token_92|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128101": { + "content": "<|reserved_special_token_93|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128102": { + "content": "<|reserved_special_token_94|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128103": { + "content": "<|reserved_special_token_95|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128104": { + "content": "<|reserved_special_token_96|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128105": { + "content": "<|reserved_special_token_97|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128106": { + "content": "<|reserved_special_token_98|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128107": { + "content": "<|reserved_special_token_99|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128108": { + "content": "<|reserved_special_token_100|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128109": { + "content": "<|reserved_special_token_101|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128110": { + "content": "<|reserved_special_token_102|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128111": { + "content": "<|reserved_special_token_103|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128112": { + "content": "<|reserved_special_token_104|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128113": { + "content": "<|reserved_special_token_105|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128114": { + "content": "<|reserved_special_token_106|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128115": { + "content": "<|reserved_special_token_107|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128116": { + "content": "<|reserved_special_token_108|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128117": { + "content": "<|reserved_special_token_109|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128118": { + "content": "<|reserved_special_token_110|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128119": { + "content": "<|reserved_special_token_111|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128120": { + "content": "<|reserved_special_token_112|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128121": { + "content": "<|reserved_special_token_113|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128122": { + "content": "<|reserved_special_token_114|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128123": { + "content": "<|reserved_special_token_115|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128124": { + "content": "<|reserved_special_token_116|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128125": { + "content": "<|reserved_special_token_117|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128126": { + "content": "<|reserved_special_token_118|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128127": { + "content": "<|reserved_special_token_119|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128128": { + "content": "<|reserved_special_token_120|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128129": { + "content": "<|reserved_special_token_121|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128130": { + "content": "<|reserved_special_token_122|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128131": { + "content": "<|reserved_special_token_123|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128132": { + "content": "<|reserved_special_token_124|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128133": { + "content": "<|reserved_special_token_125|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128134": { + "content": "<|reserved_special_token_126|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128135": { + "content": "<|reserved_special_token_127|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128136": { + "content": "<|reserved_special_token_128|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128137": { + "content": "<|reserved_special_token_129|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128138": { + "content": "<|reserved_special_token_130|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128139": { + "content": "<|reserved_special_token_131|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128140": { + "content": "<|reserved_special_token_132|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128141": { + "content": "<|reserved_special_token_133|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128142": { + "content": "<|reserved_special_token_134|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128143": { + "content": "<|reserved_special_token_135|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128144": { + "content": "<|reserved_special_token_136|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128145": { + "content": "<|reserved_special_token_137|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128146": { + "content": "<|reserved_special_token_138|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128147": { + "content": "<|reserved_special_token_139|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128148": { + "content": "<|reserved_special_token_140|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128149": { + "content": "<|reserved_special_token_141|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128150": { + "content": "<|reserved_special_token_142|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128151": { + "content": "<|reserved_special_token_143|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128152": { + "content": "<|reserved_special_token_144|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128153": { + "content": "<|reserved_special_token_145|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128154": { + "content": "<|reserved_special_token_146|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128155": { + "content": "<|reserved_special_token_147|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128156": { + "content": "<|reserved_special_token_148|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128157": { + "content": "<|reserved_special_token_149|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128158": { + "content": "<|reserved_special_token_150|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128159": { + "content": "<|reserved_special_token_151|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128160": { + "content": "<|reserved_special_token_152|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128161": { + "content": "<|reserved_special_token_153|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128162": { + "content": "<|reserved_special_token_154|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128163": { + "content": "<|reserved_special_token_155|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128164": { + "content": "<|reserved_special_token_156|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128165": { + "content": "<|reserved_special_token_157|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128166": { + "content": "<|reserved_special_token_158|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128167": { + "content": "<|reserved_special_token_159|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128168": { + "content": "<|reserved_special_token_160|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128169": { + "content": "<|reserved_special_token_161|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128170": { + "content": "<|reserved_special_token_162|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128171": { + "content": "<|reserved_special_token_163|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128172": { + "content": "<|reserved_special_token_164|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128173": { + "content": "<|reserved_special_token_165|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128174": { + "content": "<|reserved_special_token_166|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128175": { + "content": "<|reserved_special_token_167|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128176": { + "content": "<|reserved_special_token_168|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128177": { + "content": "<|reserved_special_token_169|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128178": { + "content": "<|reserved_special_token_170|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128179": { + "content": "<|reserved_special_token_171|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128180": { + "content": "<|reserved_special_token_172|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128181": { + "content": "<|reserved_special_token_173|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128182": { + "content": "<|reserved_special_token_174|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128183": { + "content": "<|reserved_special_token_175|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128184": { + "content": "<|reserved_special_token_176|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128185": { + "content": "<|reserved_special_token_177|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128186": { + "content": "<|reserved_special_token_178|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128187": { + "content": "<|reserved_special_token_179|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128188": { + "content": "<|reserved_special_token_180|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128189": { + "content": "<|reserved_special_token_181|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128190": { + "content": "<|reserved_special_token_182|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128191": { + "content": "<|reserved_special_token_183|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128192": { + "content": "<|reserved_special_token_184|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128193": { + "content": "<|reserved_special_token_185|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128194": { + "content": "<|reserved_special_token_186|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128195": { + "content": "<|reserved_special_token_187|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128196": { + "content": "<|reserved_special_token_188|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128197": { + "content": "<|reserved_special_token_189|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128198": { + "content": "<|reserved_special_token_190|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128199": { + "content": "<|reserved_special_token_191|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128200": { + "content": "<|reserved_special_token_192|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128201": { + "content": "<|reserved_special_token_193|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128202": { + "content": "<|reserved_special_token_194|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128203": { + "content": "<|reserved_special_token_195|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128204": { + "content": "<|reserved_special_token_196|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128205": { + "content": "<|reserved_special_token_197|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128206": { + "content": "<|reserved_special_token_198|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128207": { + "content": "<|reserved_special_token_199|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128208": { + "content": "<|reserved_special_token_200|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128209": { + "content": "<|reserved_special_token_201|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128210": { + "content": "<|reserved_special_token_202|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128211": { + "content": "<|reserved_special_token_203|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128212": { + "content": "<|reserved_special_token_204|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128213": { + "content": "<|reserved_special_token_205|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128214": { + "content": "<|reserved_special_token_206|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128215": { + "content": "<|reserved_special_token_207|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128216": { + "content": "<|reserved_special_token_208|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128217": { + "content": "<|reserved_special_token_209|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128218": { + "content": "<|reserved_special_token_210|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128219": { + "content": "<|reserved_special_token_211|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128220": { + "content": "<|reserved_special_token_212|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128221": { + "content": "<|reserved_special_token_213|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128222": { + "content": "<|reserved_special_token_214|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128223": { + "content": "<|reserved_special_token_215|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128224": { + "content": "<|reserved_special_token_216|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128225": { + "content": "<|reserved_special_token_217|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128226": { + "content": "<|reserved_special_token_218|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128227": { + "content": "<|reserved_special_token_219|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128228": { + "content": "<|reserved_special_token_220|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128229": { + "content": "<|reserved_special_token_221|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128230": { + "content": "<|reserved_special_token_222|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128231": { + "content": "<|reserved_special_token_223|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128232": { + "content": "<|reserved_special_token_224|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128233": { + "content": "<|reserved_special_token_225|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128234": { + "content": "<|reserved_special_token_226|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128235": { + "content": "<|reserved_special_token_227|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128236": { + "content": "<|reserved_special_token_228|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128237": { + "content": "<|reserved_special_token_229|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128238": { + "content": "<|reserved_special_token_230|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128239": { + "content": "<|reserved_special_token_231|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128240": { + "content": "<|reserved_special_token_232|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128241": { + "content": "<|reserved_special_token_233|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128242": { + "content": "<|reserved_special_token_234|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128243": { + "content": "<|reserved_special_token_235|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128244": { + "content": "<|reserved_special_token_236|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128245": { + "content": "<|reserved_special_token_237|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128246": { + "content": "<|reserved_special_token_238|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128247": { + "content": "<|reserved_special_token_239|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128248": { + "content": "<|reserved_special_token_240|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128249": { + "content": "<|reserved_special_token_241|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128250": { + "content": "<|reserved_special_token_242|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128251": { + "content": "<|reserved_special_token_243|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128252": { + "content": "<|reserved_special_token_244|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128253": { + "content": "<|reserved_special_token_245|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128254": { + "content": "<|reserved_special_token_246|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128255": { + "content": "<|reserved_special_token_247|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|eot_id|>", + "<|eom_id|>" + ], + "bos_token": "<|begin_of_text|>", + "chat_template": "{{ '<|begin_of_text|>' }}{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% endif %}{% if system_message is defined %}{{ '<|start_header_id|>system<|end_header_id|>\n\n' + system_message + '<|eot_id|>' }}{% endif %}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|start_header_id|>user<|end_header_id|>\n\n' + content + '<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n' }}{% elif message['role'] == 'assistant' %}{{ content + '<|eot_id|>' }}{% endif %}{% endfor %}", + "clean_up_tokenization_spaces": true, + "eos_token": "<|end_of_text|>", + "model_input_names": [ + "input_ids", + "attention_mask" + ], + "model_max_length": 2048, + "pad_token": "<|end_of_text|>", + "padding_side": "right", + "split_special_tokens": false, + "tokenizer_class": "PreTrainedTokenizerFast" +} diff --git a/checkpoint-500/trainer_state.json b/checkpoint-500/trainer_state.json new file mode 100644 index 0000000..b670d39 --- /dev/null +++ b/checkpoint-500/trainer_state.json @@ -0,0 +1,383 @@ +{ + "best_metric": null, + "best_model_checkpoint": null, + "epoch": 0.9191176470588235, + "eval_steps": 500, + "global_step": 500, + "is_hyper_param_search": false, + "is_local_process_zero": true, + "is_world_process_zero": true, + "log_history": [ + { + "epoch": 0.01838235294117647, + "grad_norm": 24.461347652326168, + "learning_rate": 6.097560975609757e-07, + "loss": 1.2036, + "step": 10 + }, + { + "epoch": 0.03676470588235294, + "grad_norm": 17.308880580961944, + "learning_rate": 1.2195121951219514e-06, + "loss": 1.2064, + "step": 20 + }, + { + "epoch": 0.05514705882352941, + "grad_norm": 29.601720546719697, + "learning_rate": 1.8292682926829268e-06, + "loss": 1.2741, + "step": 30 + }, + { + "epoch": 0.07352941176470588, + "grad_norm": 14.115818236245202, + "learning_rate": 2.4390243902439027e-06, + "loss": 0.7596, + "step": 40 + }, + { + "epoch": 0.09191176470588236, + "grad_norm": 21.73939509164672, + "learning_rate": 3.0487804878048782e-06, + "loss": 0.6171, + "step": 50 + }, + { + "epoch": 0.11029411764705882, + "grad_norm": 16.96116387460838, + "learning_rate": 3.6585365853658537e-06, + "loss": 0.794, + "step": 60 + }, + { + "epoch": 0.12867647058823528, + "grad_norm": 15.372652400517632, + "learning_rate": 4.268292682926829e-06, + "loss": 0.6233, + "step": 70 + }, + { + "epoch": 0.14705882352941177, + "grad_norm": 15.062285237489078, + "learning_rate": 4.8780487804878055e-06, + "loss": 0.5441, + "step": 80 + }, + { + "epoch": 0.16544117647058823, + "grad_norm": 18.632304280702545, + "learning_rate": 5.487804878048781e-06, + "loss": 0.5784, + "step": 90 + }, + { + "epoch": 0.18382352941176472, + "grad_norm": 13.945519044585177, + "learning_rate": 6.0975609756097564e-06, + "loss": 0.4844, + "step": 100 + }, + { + "epoch": 0.20220588235294118, + "grad_norm": 6.9751627817275, + "learning_rate": 6.707317073170733e-06, + "loss": 0.6535, + "step": 110 + }, + { + "epoch": 0.22058823529411764, + "grad_norm": 25.188175477401735, + "learning_rate": 7.317073170731707e-06, + "loss": 0.6897, + "step": 120 + }, + { + "epoch": 0.23897058823529413, + "grad_norm": 14.572936912172068, + "learning_rate": 7.926829268292685e-06, + "loss": 0.4217, + "step": 130 + }, + { + "epoch": 0.25735294117647056, + "grad_norm": 14.934836192557746, + "learning_rate": 8.536585365853658e-06, + "loss": 0.5868, + "step": 140 + }, + { + "epoch": 0.2757352941176471, + "grad_norm": 11.450309910668999, + "learning_rate": 9.146341463414635e-06, + "loss": 0.53, + "step": 150 + }, + { + "epoch": 0.29411764705882354, + "grad_norm": 21.677329690439954, + "learning_rate": 9.756097560975611e-06, + "loss": 0.5538, + "step": 160 + }, + { + "epoch": 0.3125, + "grad_norm": 13.221017712308962, + "learning_rate": 9.999587822598768e-06, + "loss": 0.4616, + "step": 170 + }, + { + "epoch": 0.33088235294117646, + "grad_norm": 17.10580370679984, + "learning_rate": 9.997069206794246e-06, + "loss": 0.5633, + "step": 180 + }, + { + "epoch": 0.3492647058823529, + "grad_norm": 12.4225156252439, + "learning_rate": 9.992262114666653e-06, + "loss": 0.6035, + "step": 190 + }, + { + "epoch": 0.36764705882352944, + "grad_norm": 9.012606555821149, + "learning_rate": 9.985168747689706e-06, + "loss": 0.5822, + "step": 200 + }, + { + "epoch": 0.3860294117647059, + "grad_norm": 7.876601539287651, + "learning_rate": 9.975792354368019e-06, + "loss": 0.3755, + "step": 210 + }, + { + "epoch": 0.40441176470588236, + "grad_norm": 6.10882571982772, + "learning_rate": 9.964137228749409e-06, + "loss": 0.4914, + "step": 220 + }, + { + "epoch": 0.4227941176470588, + "grad_norm": 6.537974128609375, + "learning_rate": 9.950208708458371e-06, + "loss": 0.4604, + "step": 230 + }, + { + "epoch": 0.4411764705882353, + "grad_norm": 7.108775542718406, + "learning_rate": 9.934013172251654e-06, + "loss": 0.5029, + "step": 240 + }, + { + "epoch": 0.45955882352941174, + "grad_norm": 13.652621643454376, + "learning_rate": 9.915558037097003e-06, + "loss": 0.5404, + "step": 250 + }, + { + "epoch": 0.47794117647058826, + "grad_norm": 9.685271320615122, + "learning_rate": 9.894851754776473e-06, + "loss": 0.3555, + "step": 260 + }, + { + "epoch": 0.4963235294117647, + "grad_norm": 10.504810722270348, + "learning_rate": 9.871903808015812e-06, + "loss": 0.4092, + "step": 270 + }, + { + "epoch": 0.5147058823529411, + "grad_norm": 12.557835687927717, + "learning_rate": 9.846724706141718e-06, + "loss": 0.4489, + "step": 280 + }, + { + "epoch": 0.5330882352941176, + "grad_norm": 19.32420837447236, + "learning_rate": 9.819325980268946e-06, + "loss": 0.5297, + "step": 290 + }, + { + "epoch": 0.5514705882352942, + "grad_norm": 12.56688753149935, + "learning_rate": 9.789720178019483e-06, + "loss": 0.4301, + "step": 300 + }, + { + "epoch": 0.5698529411764706, + "grad_norm": 8.769304725602016, + "learning_rate": 9.757920857776188e-06, + "loss": 0.5499, + "step": 310 + }, + { + "epoch": 0.5882352941176471, + "grad_norm": 6.742725850222398, + "learning_rate": 9.723942582473545e-06, + "loss": 0.3723, + "step": 320 + }, + { + "epoch": 0.6066176470588235, + "grad_norm": 32.81061857477797, + "learning_rate": 9.687800912928362e-06, + "loss": 0.6103, + "step": 330 + }, + { + "epoch": 0.625, + "grad_norm": 7.250155807815409, + "learning_rate": 9.649512400713497e-06, + "loss": 0.5561, + "step": 340 + }, + { + "epoch": 0.6433823529411765, + "grad_norm": 8.449295772111478, + "learning_rate": 9.609094580577825e-06, + "loss": 0.4384, + "step": 350 + }, + { + "epoch": 0.6617647058823529, + "grad_norm": 8.965901929446623, + "learning_rate": 9.566565962415958e-06, + "loss": 0.492, + "step": 360 + }, + { + "epoch": 0.6801470588235294, + "grad_norm": 10.783592668291883, + "learning_rate": 9.521946022791402e-06, + "loss": 0.5596, + "step": 370 + }, + { + "epoch": 0.6985294117647058, + "grad_norm": 6.524203722153494, + "learning_rate": 9.475255196016972e-06, + "loss": 0.4657, + "step": 380 + }, + { + "epoch": 0.7169117647058824, + "grad_norm": 6.844495651307719, + "learning_rate": 9.426514864796648e-06, + "loss": 0.547, + "step": 390 + }, + { + "epoch": 0.7352941176470589, + "grad_norm": 7.093995062440304, + "learning_rate": 9.375747350433044e-06, + "loss": 0.4821, + "step": 400 + }, + { + "epoch": 0.7536764705882353, + "grad_norm": 13.008619062718342, + "learning_rate": 9.322975902605082e-06, + "loss": 0.3627, + "step": 410 + }, + { + "epoch": 0.7720588235294118, + "grad_norm": 7.658314017103231, + "learning_rate": 9.268224688720475e-06, + "loss": 0.2779, + "step": 420 + }, + { + "epoch": 0.7904411764705882, + "grad_norm": 9.961772688539515, + "learning_rate": 9.211518782847932e-06, + "loss": 0.684, + "step": 430 + }, + { + "epoch": 0.8088235294117647, + "grad_norm": 5.184448250813704, + "learning_rate": 9.152884154234147e-06, + "loss": 0.3829, + "step": 440 + }, + { + "epoch": 0.8272058823529411, + "grad_norm": 16.899974205034713, + "learning_rate": 9.092347655410818e-06, + "loss": 0.409, + "step": 450 + }, + { + "epoch": 0.8455882352941176, + "grad_norm": 9.123647569900998, + "learning_rate": 9.029937009897176e-06, + "loss": 0.4189, + "step": 460 + }, + { + "epoch": 0.8639705882352942, + "grad_norm": 14.941661911314725, + "learning_rate": 8.96568079950361e-06, + "loss": 0.4846, + "step": 470 + }, + { + "epoch": 0.8823529411764706, + "grad_norm": 6.576553080941865, + "learning_rate": 8.899608451242233e-06, + "loss": 0.4869, + "step": 480 + }, + { + "epoch": 0.9007352941176471, + "grad_norm": 9.989273508498824, + "learning_rate": 8.83175022385039e-06, + "loss": 0.368, + "step": 490 + }, + { + "epoch": 0.9191176470588235, + "grad_norm": 5.168977011450082, + "learning_rate": 8.762137193933241e-06, + "loss": 0.3489, + "step": 500 + } + ], + "logging_steps": 10, + "max_steps": 1632, + "num_input_tokens_seen": 0, + "num_train_epochs": 3, + "save_steps": 500, + "stateful_callbacks": { + "TrainerControl": { + "args": { + "should_epoch_stop": false, + "should_evaluate": false, + "should_log": false, + "should_save": true, + "should_training_stop": false + }, + "attributes": {} + } + }, + "total_flos": 75890884608.0, + "train_batch_size": 1, + "trial_name": null, + "trial_params": null +} diff --git a/checkpoint-500/training_args.bin b/checkpoint-500/training_args.bin new file mode 100644 index 0000000..10fbb2a --- /dev/null +++ b/checkpoint-500/training_args.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4bebf5c7141bddbed6a7feb4bf1a35ed3fbf020c7c4dc7ab21f6f30268f7e3 +size 7352 diff --git a/checkpoint-500/zero_to_fp32.py b/checkpoint-500/zero_to_fp32.py new file mode 100644 index 0000000..0e75914 --- /dev/null +++ b/checkpoint-500/zero_to_fp32.py @@ -0,0 +1,760 @@ +#!/usr/bin/env python + +# Copyright (c) Microsoft Corporation. +# SPDX-License-Identifier: Apache-2.0 + +# DeepSpeed Team + +# This script extracts fp32 consolidated weights from a zero 1, 2 and 3 DeepSpeed checkpoints. It gets +# copied into the top level checkpoint dir, so the user can easily do the conversion at any point in +# the future. Once extracted, the weights don't require DeepSpeed and can be used in any +# application. +# +# example: +# python zero_to_fp32.py . output_dir/ +# or +# python zero_to_fp32.py . output_dir/ --safe_serialization + +import argparse +import torch +import glob +import math +import os +import re +import gc +import json +import numpy as np +from tqdm import tqdm +from collections import OrderedDict +from dataclasses import dataclass + +# while this script doesn't use deepspeed to recover data, since the checkpoints are pickled with +# DeepSpeed data structures it has to be available in the current python environment. +from deepspeed.utils import logger +from deepspeed.checkpoint.constants import (DS_VERSION, OPTIMIZER_STATE_DICT, SINGLE_PARTITION_OF_FP32_GROUPS, + FP32_FLAT_GROUPS, ZERO_STAGE, PARTITION_COUNT, PARAM_SHAPES, BUFFER_NAMES, + FROZEN_PARAM_SHAPES, FROZEN_PARAM_FRAGMENTS) + + +@dataclass +class zero_model_state: + buffers: dict() + param_shapes: dict() + shared_params: list + ds_version: int + frozen_param_shapes: dict() + frozen_param_fragments: dict() + + +debug = 0 + +# load to cpu +device = torch.device('cpu') + + +def atoi(text): + return int(text) if text.isdigit() else text + + +def natural_keys(text): + ''' + alist.sort(key=natural_keys) sorts in human order + http://nedbatchelder.com/blog/200712/human_sorting.html + (See Toothy's implementation in the comments) + ''' + return [atoi(c) for c in re.split(r'(\d+)', text)] + + +def get_model_state_file(checkpoint_dir, zero_stage): + if not os.path.isdir(checkpoint_dir): + raise FileNotFoundError(f"Directory '{checkpoint_dir}' doesn't exist") + + # there should be only one file + if zero_stage <= 2: + file = os.path.join(checkpoint_dir, "mp_rank_00_model_states.pt") + elif zero_stage == 3: + file = os.path.join(checkpoint_dir, "zero_pp_rank_0_mp_rank_00_model_states.pt") + + if not os.path.exists(file): + raise FileNotFoundError(f"can't find model states file at '{file}'") + + return file + + +def get_checkpoint_files(checkpoint_dir, glob_pattern): + # XXX: need to test that this simple glob rule works for multi-node setup too + ckpt_files = sorted(glob.glob(os.path.join(checkpoint_dir, glob_pattern)), key=natural_keys) + + if len(ckpt_files) == 0: + raise FileNotFoundError(f"can't find {glob_pattern} files in directory '{checkpoint_dir}'") + + return ckpt_files + + +def get_optim_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_optim_states.pt") + + +def get_model_state_files(checkpoint_dir): + return get_checkpoint_files(checkpoint_dir, "*_model_states.pt") + + +def parse_model_states(files): + zero_model_states = [] + for file in files: + state_dict = torch.load(file, map_location=device, weights_only=False) + + if BUFFER_NAMES not in state_dict: + raise ValueError(f"{file} is not a model state checkpoint") + buffer_names = state_dict[BUFFER_NAMES] + if debug: + print("Found buffers:", buffer_names) + + # recover just the buffers while restoring them to fp32 if they were saved in fp16 + buffers = {k: v.float() for k, v in state_dict["module"].items() if k in buffer_names} + param_shapes = state_dict[PARAM_SHAPES] + + # collect parameters that are included in param_shapes + param_names = [] + for s in param_shapes: + for name in s.keys(): + param_names.append(name) + + # update with frozen parameters + frozen_param_shapes = state_dict.get(FROZEN_PARAM_SHAPES, None) + if frozen_param_shapes is not None: + if debug: + print(f"Found frozen_param_shapes: {frozen_param_shapes}") + param_names += list(frozen_param_shapes.keys()) + + # handle shared params + shared_params = [[k, v] for k, v in state_dict["shared_params"].items()] + + ds_version = state_dict.get(DS_VERSION, None) + + frozen_param_fragments = state_dict.get(FROZEN_PARAM_FRAGMENTS, None) + + z_model_state = zero_model_state(buffers=buffers, + param_shapes=param_shapes, + shared_params=shared_params, + ds_version=ds_version, + frozen_param_shapes=frozen_param_shapes, + frozen_param_fragments=frozen_param_fragments) + zero_model_states.append(z_model_state) + + return zero_model_states + + +def parse_optim_states(files, ds_checkpoint_dir): + total_files = len(files) + state_dicts = [] + for f in tqdm(files, desc='Loading checkpoint shards'): + state_dict = torch.load(f, map_location=device, mmap=True, weights_only=False) + # immediately discard the potentially huge 2 optimizer states as we only care for fp32 master weights + # and also handle the case where it was already removed by another helper script + state_dict["optimizer_state_dict"].pop("optimizer_state_dict", None) + state_dicts.append(state_dict) + + if not ZERO_STAGE in state_dicts[0][OPTIMIZER_STATE_DICT]: + raise ValueError(f"{files[0]} is not a zero checkpoint") + zero_stage = state_dicts[0][OPTIMIZER_STATE_DICT][ZERO_STAGE] + world_size = state_dicts[0][OPTIMIZER_STATE_DICT][PARTITION_COUNT] + + # For ZeRO-2 each param group can have different partition_count as data parallelism for expert + # parameters can be different from data parallelism for non-expert parameters. So we can just + # use the max of the partition_count to get the dp world_size. + + if type(world_size) is list: + world_size = max(world_size) + + if world_size != total_files: + raise ValueError( + f"Expected {world_size} of '*_optim_states.pt' under '{ds_checkpoint_dir}' but found {total_files} files. " + "Possibly due to an overwrite of an old checkpoint, or a checkpoint didn't get saved by one or more processes." + ) + + # the groups are named differently in each stage + if zero_stage <= 2: + fp32_groups_key = SINGLE_PARTITION_OF_FP32_GROUPS + elif zero_stage == 3: + fp32_groups_key = FP32_FLAT_GROUPS + else: + raise ValueError(f"unknown zero stage {zero_stage}") + + fp32_flat_groups = [state_dicts[i][OPTIMIZER_STATE_DICT][fp32_groups_key] for i in range(len(state_dicts))] + return zero_stage, world_size, fp32_flat_groups + + +def _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters): + """ + Returns fp32 state_dict reconstructed from ds checkpoint + + Args: + - ``ds_checkpoint_dir``: path to the deepspeed checkpoint folder (where the optimizer files are) + + """ + print(f"Processing zero checkpoint '{ds_checkpoint_dir}'") + + optim_files = get_optim_files(ds_checkpoint_dir) + zero_stage, world_size, fp32_flat_groups = parse_optim_states(optim_files, ds_checkpoint_dir) + print(f"Detected checkpoint of type zero stage {zero_stage}, world_size: {world_size}") + + model_files = get_model_state_files(ds_checkpoint_dir) + + zero_model_states = parse_model_states(model_files) + print(f'Parsing checkpoint created by deepspeed=={zero_model_states[0].ds_version}') + + if zero_stage <= 2: + return _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + elif zero_stage == 3: + return _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters) + + +def _zero2_merge_frozen_params(state_dict, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + frozen_param_fragments = zero_model_states[0].frozen_param_fragments + + if debug: + num_elem = sum(s.numel() for s in frozen_param_shapes.values()) + print(f'rank 0: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in frozen_param_fragments.values()]) + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + state_dict[name] = frozen_param_fragments[name] + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +def _has_callable(obj, fn): + attr = getattr(obj, fn, None) + return callable(attr) + + +def _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + + # Reconstruction protocol: + # + # XXX: document this + + if debug: + for i in range(world_size): + for j in range(len(fp32_flat_groups[0])): + print(f"{FP32_FLAT_GROUPS}[{i}][{j}].shape={fp32_flat_groups[i][j].shape}") + + # XXX: memory usage doubles here (zero2) + num_param_groups = len(fp32_flat_groups[0]) + merged_single_partition_of_fp32_groups = [] + for i in range(num_param_groups): + merged_partitions = [sd[i] for sd in fp32_flat_groups] + full_single_fp32_vector = torch.cat(merged_partitions, 0) + merged_single_partition_of_fp32_groups.append(full_single_fp32_vector) + avail_numel = sum( + [full_single_fp32_vector.numel() for full_single_fp32_vector in merged_single_partition_of_fp32_groups]) + + if debug: + wanted_params = sum([len(shapes) for shapes in param_shapes]) + wanted_numel = sum([sum(shape.numel() for shape in shapes.values()) for shapes in param_shapes]) + # not asserting if there is a mismatch due to possible padding + print(f"Have {avail_numel} numels to process.") + print(f"Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + total_numel = 0 + total_params = 0 + for shapes, full_single_fp32_vector in zip(param_shapes, merged_single_partition_of_fp32_groups): + offset = 0 + avail_numel = full_single_fp32_vector.numel() + for name, shape in shapes.items(): + + unpartitioned_numel = shape.numel() if _has_callable(shape, 'numel') else math.prod(shape) + total_numel += unpartitioned_numel + total_params += 1 + + if debug: + print(f"{name} full shape: {shape} unpartitioned numel {unpartitioned_numel} ") + state_dict[name] = full_single_fp32_vector.narrow(0, offset, unpartitioned_numel).view(shape) + offset += unpartitioned_numel + + # Z2 started to align to 2*world_size to improve nccl performance. Therefore both offset and + # avail_numel can differ by anywhere between 0..2*world_size. Due to two unrelated complex + # paddings performed in the code it's almost impossible to predict the exact numbers w/o the + # live optimizer object, so we are checking that the numbers are within the right range + align_to = 2 * world_size + + def zero2_align(x): + return align_to * math.ceil(x / align_to) + + if debug: + print(f"original offset={offset}, avail_numel={avail_numel}") + + offset = zero2_align(offset) + avail_numel = zero2_align(avail_numel) + + if debug: + print(f"aligned offset={offset}, avail_numel={avail_numel}") + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero2_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero2_merge_frozen_params(state_dict, zero_model_states) + + _zero2_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def zero3_partitioned_param_info(unpartitioned_numel, world_size): + remainder = unpartitioned_numel % world_size + padding_numel = (world_size - remainder) if remainder else 0 + partitioned_numel = math.ceil(unpartitioned_numel / world_size) + return partitioned_numel, padding_numel + + +def _zero3_merge_frozen_params(state_dict, world_size, zero_model_states): + if zero_model_states[0].frozen_param_shapes is None or len(zero_model_states[0].frozen_param_shapes) == 0: + return + + if debug: + for i in range(world_size): + num_elem = sum(s.numel() for s in zero_model_states[i].frozen_param_fragments.values()) + print(f'rank {i}: {FROZEN_PARAM_SHAPES}.numel = {num_elem}') + + frozen_param_shapes = zero_model_states[0].frozen_param_shapes + wanted_params = len(frozen_param_shapes) + wanted_numel = sum(s.numel() for s in frozen_param_shapes.values()) + avail_numel = sum([p.numel() for p in zero_model_states[0].frozen_param_fragments.values()]) * world_size + print(f'Frozen params: Have {avail_numel} numels to process.') + print(f'Frozen params: Need {wanted_numel} numels in {wanted_params} params') + + total_params = 0 + total_numel = 0 + for name, shape in zero_model_states[0].frozen_param_shapes.items(): + total_params += 1 + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + + param_frags = tuple(model_state.frozen_param_fragments[name] for model_state in zero_model_states) + state_dict[name] = torch.cat(param_frags, 0).narrow(0, 0, unpartitioned_numel).view(shape) + + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Frozen params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + print(f"Reconstructed Frozen fp32 state dict with {total_params} params {total_numel} elements") + + +class GatheredTensor: + """ + A pseudo tensor that collects partitioned weights. + It is more memory efficient when there are multiple groups. + """ + + def __init__(self, flat_groups, flat_groups_offset, offset, partitioned_numel, shape): + self.flat_groups = flat_groups + self.flat_groups_offset = flat_groups_offset + self.offset = offset + self.partitioned_numel = partitioned_numel + self.shape = shape + self.dtype = self.flat_groups[0][0].dtype + + def contiguous(self): + """ + Merge partitioned weights from flat_groups into a single tensor. + """ + end_idx = self.offset + self.partitioned_numel + world_size = len(self.flat_groups) + pad_flat_param_chunks = [] + + for rank_i in range(world_size): + # for each rank, we need to collect weights from related group/groups + flat_groups_at_rank_i = self.flat_groups[rank_i] + start_group_id = None + end_group_id = None + for group_id in range(len(self.flat_groups_offset)): + if self.flat_groups_offset[group_id] <= self.offset < self.flat_groups_offset[group_id + 1]: + start_group_id = group_id + if self.flat_groups_offset[group_id] < end_idx <= self.flat_groups_offset[group_id + 1]: + end_group_id = group_id + break + # collect weights from related group/groups + for group_id in range(start_group_id, end_group_id + 1): + flat_tensor = flat_groups_at_rank_i[group_id] + start_offset = self.offset - self.flat_groups_offset[group_id] + end_offset = min(end_idx, self.flat_groups_offset[group_id + 1]) - self.flat_groups_offset[group_id] + pad_flat_param_chunks.append(flat_tensor[start_offset:end_offset]) + + # collect weights from all ranks + pad_flat_param = torch.cat(pad_flat_param_chunks, dim=0) + param = pad_flat_param[:self.shape.numel()].view(self.shape).contiguous() + return param + + +def _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states): + param_shapes = zero_model_states[0].param_shapes + avail_numel = sum([flat_group.numel() for flat_group in fp32_flat_groups[0]]) * world_size + + # Reconstruction protocol: For zero3 we need to zip the partitions together at boundary of each + # param, re-consolidating each param, while dealing with padding if any + + # merge list of dicts, preserving order + param_shapes = {k: v for d in param_shapes for k, v in d.items()} + + if debug: + for i in range(world_size): + print(f"{FP32_FLAT_GROUPS}[{i}].shape={fp32_flat_groups[i].shape}") + + wanted_params = len(param_shapes) + wanted_numel = sum(shape.numel() for shape in param_shapes.values()) + # not asserting if there is a mismatch due to possible padding + avail_numel = fp32_flat_groups[0].numel() * world_size + print(f"Trainable params: Have {avail_numel} numels to process.") + print(f"Trainable params: Need {wanted_numel} numels in {wanted_params} params.") + + # params + # XXX: for huge models that can't fit into the host's RAM we will have to recode this to support + # out-of-core computing solution + offset = 0 + total_numel = 0 + total_params = 0 + flat_groups_offset = [0] + list(np.cumsum([flat_tensor.numel() for flat_tensor in fp32_flat_groups[0]])) + for name, shape in tqdm(param_shapes.items(), desc='Gathering sharded weights'): + unpartitioned_numel = shape.numel() + total_numel += unpartitioned_numel + total_params += 1 + partitioned_numel, partitioned_padding_numel = zero3_partitioned_param_info(unpartitioned_numel, world_size) + + if debug: + print( + f"Trainable params: {total_params} {name} full shape: {shape} partition0 numel={partitioned_numel} partitioned_padding_numel={partitioned_padding_numel}" + ) + + # memory efficient tensor + tensor = GatheredTensor(fp32_flat_groups, flat_groups_offset, offset, partitioned_numel, shape) + state_dict[name] = tensor + offset += partitioned_numel + + offset *= world_size + + # Sanity check + if offset != avail_numel: + raise ValueError(f"consumed {offset} numels out of {avail_numel} - something is wrong") + + print(f"Reconstructed Trainable fp32 state dict with {total_params} params {total_numel} elements") + + +def _get_fp32_state_dict_from_zero3_checkpoint(world_size, fp32_flat_groups, zero_model_states, + exclude_frozen_parameters): + state_dict = OrderedDict() + + # buffers + buffers = zero_model_states[0].buffers + state_dict.update(buffers) + if debug: + print(f"added {len(buffers)} buffers") + + if not exclude_frozen_parameters: + _zero3_merge_frozen_params(state_dict, world_size, zero_model_states) + + _zero3_merge_trainable_params(state_dict, world_size, fp32_flat_groups, zero_model_states) + + # recover shared parameters + for pair in zero_model_states[0].shared_params: + if pair[1] in state_dict: + state_dict[pair[0]] = state_dict[pair[1]] + + return state_dict + + +def to_torch_tensor(state_dict, return_empty_tensor=False): + """ + Convert state_dict of GatheredTensor to torch tensor + """ + torch_state_dict = {} + converted_tensors = {} + for name, tensor in state_dict.items(): + tensor_id = id(tensor) + if tensor_id in converted_tensors: # shared tensors + shared_tensor = torch_state_dict[converted_tensors[tensor_id]] + torch_state_dict[name] = shared_tensor + else: + converted_tensors[tensor_id] = name + if return_empty_tensor: + torch_state_dict[name] = torch.empty(tensor.shape, dtype=tensor.dtype) + else: + torch_state_dict[name] = tensor.contiguous() + return torch_state_dict + + +def get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag=None, + exclude_frozen_parameters=False, + lazy_mode=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated state_dict that can be loaded with + ``load_state_dict()`` and used for training without DeepSpeed or shared with others, for example + via a model hub. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in 'latest' file. e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + - ``lazy_mode``: get state_dict in lazy mode. It returns a dict of pesduo tensor instead of torch tensor, which is more memory efficient. + Convert the pesduo tensor to torch tensor by ``.contiguous()`` + + Returns: + - pytorch ``state_dict`` + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + # do the training and checkpoint saving + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir) # already on cpu + model = model.cpu() # move to cpu + model.load_state_dict(state_dict) + # submit to model hub or save the model to share with others + + In this example the ``model`` will no longer be usable in the deepspeed context of the same + application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + If you want it all done for you, use ``load_state_dict_from_zero_checkpoint`` instead. + + Note: the above usage may not work if your application doesn't have sufficient free CPU memory. + You may need to use the offline approach using the ``zero_to_fp32.py`` script that is saved with + the checkpoint. Or you can load state_dict in lazy mode :: + + from deepspeed.utils.zero_to_fp32 import get_fp32_state_dict_from_zero_checkpoint + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, lazy_mode=True) # not on cpu + for name, lazy_tensor in state_dict.item(): + tensor = lazy_tensor.contiguous() # to cpu + print(name, tensor) + # del tensor to release memory if it no longer in use + """ + if tag is None: + latest_path = os.path.join(checkpoint_dir, 'latest') + if os.path.isfile(latest_path): + with open(latest_path, 'r') as fd: + tag = fd.read().strip() + else: + raise ValueError(f"Unable to find 'latest' file at {latest_path}") + + ds_checkpoint_dir = os.path.join(checkpoint_dir, tag) + + if not os.path.isdir(ds_checkpoint_dir): + raise FileNotFoundError(f"Directory '{ds_checkpoint_dir}' doesn't exist") + + state_dict = _get_fp32_state_dict_from_zero_checkpoint(ds_checkpoint_dir, exclude_frozen_parameters) + if lazy_mode: + return state_dict + else: + return to_torch_tensor(state_dict) + + +def convert_zero_checkpoint_to_fp32_state_dict(checkpoint_dir, + output_dir, + max_shard_size="5GB", + safe_serialization=False, + tag=None, + exclude_frozen_parameters=False): + """ + Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` file that can be + loaded with ``torch.load(file)`` + ``load_state_dict()`` and used for training without DeepSpeed. + + Args: + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``output_dir``: directory to the pytorch fp32 state_dict output files + - ``max_shard_size``: the maximum size for a checkpoint before being sharded, default value is 5GB + - ``safe_serialization``: whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`). + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + - ``exclude_frozen_parameters``: exclude frozen parameters + """ + + # Dependency pre-check + if safe_serialization: + try: + from safetensors.torch import save_file + except ImportError: + print('If you want to use `safe_serialization`, please `pip install safetensors`') + raise + if max_shard_size is not None: + try: + from huggingface_hub import split_torch_state_dict_into_shards + except ImportError: + print('If you want to use `max_shard_size`, please `pip install huggingface_hub`') + raise + + # Convert zero checkpoint to state_dict + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, + tag, + exclude_frozen_parameters, + lazy_mode=True) + + # Shard the model if it is too big. + weights_name = "model.safetensors" if safe_serialization else "pytorch_model.bin" + if max_shard_size is not None: + filename_pattern = weights_name.replace(".bin", "{suffix}.bin").replace(".safetensors", "{suffix}.safetensors") + # an memory-efficient approach for sharding + empty_state_dict = to_torch_tensor(state_dict, return_empty_tensor=True) + state_dict_split = split_torch_state_dict_into_shards(empty_state_dict, + filename_pattern=filename_pattern, + max_shard_size=max_shard_size) + else: + from collections import namedtuple + StateDictSplit = namedtuple("StateDictSplit", ["is_sharded", "filename_to_tensors"]) + state_dict_split = StateDictSplit(is_sharded=False, + filename_to_tensors={weights_name: list(state_dict.keys())}) + + # Save the model by shard + os.makedirs(output_dir, exist_ok=True) + filename_to_tensors = state_dict_split.filename_to_tensors.items() + for shard_file, tensors in tqdm(filename_to_tensors, desc="Saving checkpoint shards"): + shard_state_dict = {tensor_name: state_dict[tensor_name] for tensor_name in tensors} + shard_state_dict = to_torch_tensor(shard_state_dict) + output_path = os.path.join(output_dir, shard_file) + if safe_serialization: + save_file(shard_state_dict, output_path, metadata={"format": "pt"}) + else: + torch.save(shard_state_dict, output_path) + # release the memory of current shard + for tensor_name in list(shard_state_dict.keys()): + del state_dict[tensor_name] + del shard_state_dict[tensor_name] + del shard_state_dict + gc.collect() + + # Save index if sharded + if state_dict_split.is_sharded: + index = { + "metadata": state_dict_split.metadata, + "weight_map": state_dict_split.tensor_to_filename, + } + save_index_file = "model.safetensors.index.json" if safe_serialization else "pytorch_model.bin.index.json" + save_index_file = os.path.join(output_dir, save_index_file) + with open(save_index_file, "w", encoding="utf-8") as f: + content = json.dumps(index, indent=2, sort_keys=True) + "\n" + f.write(content) + + +def load_state_dict_from_zero_checkpoint(model, checkpoint_dir, tag=None): + """ + 1. Put the provided model to cpu + 2. Convert ZeRO 2 or 3 checkpoint into a single fp32 consolidated ``state_dict`` + 3. Load it into the provided model + + Args: + - ``model``: the model object to update + - ``checkpoint_dir``: path to the desired checkpoint folder. (one that contains the tag-folder, like ``global_step14``) + - ``tag``: checkpoint tag used as a unique identifier for checkpoint. If not provided will attempt to load tag in the file named ``latest`` in the checkpoint folder, e.g., ``global_step14`` + + Returns: + - ``model`: modified model + + Make sure you have plenty of CPU memory available before you call this function. If you don't + have enough use the ``zero_to_fp32.py`` utility to do the conversion. You will find it + conveniently placed for you in the checkpoint folder. + + A typical usage might be :: + + from deepspeed.utils.zero_to_fp32 import load_state_dict_from_zero_checkpoint + model = load_state_dict_from_zero_checkpoint(trainer.model, checkpoint_dir) + # submit to model hub or save the model to share with others + + Note, that once this was run, the ``model`` will no longer be usable in the deepspeed context + of the same application. i.e. you will need to re-initialize the deepspeed engine, since + ``model.load_state_dict(state_dict)`` will remove all the deepspeed magic from it. + + """ + logger.info(f"Extracting fp32 weights") + state_dict = get_fp32_state_dict_from_zero_checkpoint(checkpoint_dir, tag) + + logger.info(f"Overwriting model with fp32 weights") + model = model.cpu() + model.load_state_dict(state_dict, strict=False) + + return model + + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument("checkpoint_dir", + type=str, + help="path to the desired checkpoint folder, e.g., path/checkpoint-12") + parser.add_argument("output_dir", + type=str, + help="directory to the pytorch fp32 state_dict output files" + "(e.g. path/checkpoint-12-output/)") + parser.add_argument( + "--max_shard_size", + type=str, + default="5GB", + help="The maximum size for a checkpoint before being sharded. Checkpoints shard will then be each of size" + "lower than this size. If expressed as a string, needs to be digits followed by a unit (like `5MB`" + "We default it to 5GB in order for models to be able to run easily on free-tier google colab instances" + "without CPU OOM issues.") + parser.add_argument( + "--safe_serialization", + default=False, + action='store_true', + help="Whether to save the model using `safetensors` or the traditional PyTorch way (that uses `pickle`).") + parser.add_argument("-t", + "--tag", + type=str, + default=None, + help="checkpoint tag used as a unique identifier for checkpoint. e.g., global_step1") + parser.add_argument("--exclude_frozen_parameters", action='store_true', help="exclude frozen parameters") + parser.add_argument("-d", "--debug", action='store_true', help="enable debug") + args = parser.parse_args() + + debug = args.debug + + convert_zero_checkpoint_to_fp32_state_dict(args.checkpoint_dir, + args.output_dir, + max_shard_size=args.max_shard_size, + safe_serialization=args.safe_serialization, + tag=args.tag, + exclude_frozen_parameters=args.exclude_frozen_parameters) diff --git a/config.json b/config.json new file mode 100644 index 0000000..5a1694f --- /dev/null +++ b/config.json @@ -0,0 +1,36 @@ +{ + "_name_or_path": "meta-llama/Llama-3.2-1B", + "architectures": [ + "LlamaForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 128000, + "eos_token_id": 128001, + "head_dim": 64, + "hidden_act": "silu", + "hidden_size": 2048, + "initializer_range": 0.02, + "intermediate_size": 8192, + "max_position_embeddings": 131072, + "mlp_bias": false, + "model_type": "llama", + "num_attention_heads": 32, + "num_hidden_layers": 16, + "num_key_value_heads": 8, + "pretraining_tp": 1, + "rms_norm_eps": 1e-05, + "rope_scaling": { + "factor": 32.0, + "high_freq_factor": 4.0, + "low_freq_factor": 1.0, + "original_max_position_embeddings": 8192, + "rope_type": "llama3" + }, + "rope_theta": 500000.0, + "tie_word_embeddings": true, + "torch_dtype": "bfloat16", + "transformers_version": "4.46.1", + "use_cache": false, + "vocab_size": 128256 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..eab5082 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,9 @@ +{ + "_from_model_config": true, + "bos_token_id": 128000, + "do_sample": true, + "eos_token_id": 128001, + "temperature": 0.6, + "top_p": 0.9, + "transformers_version": "4.46.1" +} diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..1b87b65 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:297c740fd49c32381d3300f0f09c71cffc651269dd89120d8e28cf8032173667 +size 2471645608 diff --git a/special_tokens_map.json b/special_tokens_map.json new file mode 100644 index 0000000..426a800 --- /dev/null +++ b/special_tokens_map.json @@ -0,0 +1,33 @@ +{ + "additional_special_tokens": [ + { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + } + ], + "bos_token": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "eos_token": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false + }, + "pad_token": "<|end_of_text|>" +} diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..1c1d8d5 --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:6b9e4e7fb171f92fd137b777cc2714bf87d11576700a1dcd7a399e7bbe39537b +size 17209920 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..3a8f322 --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,2069 @@ +{ + "added_tokens_decoder": { + "128000": { + "content": "<|begin_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128001": { + "content": "<|end_of_text|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128002": { + "content": "<|reserved_special_token_0|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128003": { + "content": "<|reserved_special_token_1|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128004": { + "content": "<|finetune_right_pad_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128005": { + "content": "<|reserved_special_token_2|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128006": { + "content": "<|start_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128007": { + "content": "<|end_header_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128008": { + "content": "<|eom_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128009": { + "content": "<|eot_id|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128010": { + "content": "<|python_tag|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128011": { + "content": "<|reserved_special_token_3|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128012": { + "content": "<|reserved_special_token_4|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128013": { + "content": "<|reserved_special_token_5|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128014": { + "content": "<|reserved_special_token_6|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128015": { + "content": "<|reserved_special_token_7|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128016": { + "content": "<|reserved_special_token_8|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128017": { + "content": "<|reserved_special_token_9|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128018": { + "content": "<|reserved_special_token_10|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128019": { + "content": "<|reserved_special_token_11|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128020": { + "content": "<|reserved_special_token_12|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128021": { + "content": "<|reserved_special_token_13|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128022": { + "content": "<|reserved_special_token_14|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128023": { + "content": "<|reserved_special_token_15|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128024": { + "content": "<|reserved_special_token_16|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128025": { + "content": "<|reserved_special_token_17|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128026": { + "content": "<|reserved_special_token_18|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128027": { + "content": "<|reserved_special_token_19|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128028": { + "content": "<|reserved_special_token_20|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128029": { + "content": "<|reserved_special_token_21|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128030": { + "content": "<|reserved_special_token_22|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128031": { + "content": "<|reserved_special_token_23|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128032": { + "content": "<|reserved_special_token_24|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128033": { + "content": "<|reserved_special_token_25|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128034": { + "content": "<|reserved_special_token_26|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128035": { + "content": "<|reserved_special_token_27|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128036": { + "content": "<|reserved_special_token_28|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128037": { + "content": "<|reserved_special_token_29|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128038": { + "content": "<|reserved_special_token_30|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128039": { + "content": "<|reserved_special_token_31|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128040": { + "content": "<|reserved_special_token_32|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128041": { + "content": "<|reserved_special_token_33|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128042": { + "content": "<|reserved_special_token_34|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128043": { + "content": "<|reserved_special_token_35|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128044": { + "content": "<|reserved_special_token_36|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128045": { + "content": "<|reserved_special_token_37|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128046": { + "content": "<|reserved_special_token_38|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128047": { + "content": "<|reserved_special_token_39|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128048": { + "content": "<|reserved_special_token_40|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128049": { + "content": "<|reserved_special_token_41|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128050": { + "content": "<|reserved_special_token_42|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128051": { + "content": "<|reserved_special_token_43|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128052": { + "content": "<|reserved_special_token_44|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128053": { + "content": "<|reserved_special_token_45|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128054": { + "content": "<|reserved_special_token_46|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128055": { + "content": "<|reserved_special_token_47|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128056": { + "content": "<|reserved_special_token_48|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128057": { + "content": "<|reserved_special_token_49|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128058": { + "content": "<|reserved_special_token_50|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128059": { + "content": "<|reserved_special_token_51|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128060": { + "content": "<|reserved_special_token_52|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128061": { + "content": "<|reserved_special_token_53|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128062": { + "content": "<|reserved_special_token_54|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128063": { + "content": "<|reserved_special_token_55|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128064": { + "content": "<|reserved_special_token_56|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128065": { + "content": "<|reserved_special_token_57|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128066": { + "content": "<|reserved_special_token_58|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128067": { + "content": "<|reserved_special_token_59|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128068": { + "content": "<|reserved_special_token_60|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128069": { + "content": "<|reserved_special_token_61|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128070": { + "content": "<|reserved_special_token_62|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128071": { + "content": "<|reserved_special_token_63|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128072": { + "content": "<|reserved_special_token_64|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128073": { + "content": "<|reserved_special_token_65|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128074": { + "content": "<|reserved_special_token_66|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128075": { + "content": "<|reserved_special_token_67|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128076": { + "content": "<|reserved_special_token_68|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128077": { + "content": "<|reserved_special_token_69|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128078": { + "content": "<|reserved_special_token_70|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128079": { + "content": "<|reserved_special_token_71|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128080": { + "content": "<|reserved_special_token_72|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128081": { + "content": "<|reserved_special_token_73|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128082": { + "content": "<|reserved_special_token_74|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128083": { + "content": "<|reserved_special_token_75|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128084": { + "content": "<|reserved_special_token_76|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128085": { + "content": "<|reserved_special_token_77|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128086": { + "content": "<|reserved_special_token_78|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128087": { + "content": "<|reserved_special_token_79|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128088": { + "content": "<|reserved_special_token_80|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128089": { + "content": "<|reserved_special_token_81|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128090": { + "content": "<|reserved_special_token_82|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128091": { + "content": "<|reserved_special_token_83|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128092": { + "content": "<|reserved_special_token_84|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128093": { + "content": "<|reserved_special_token_85|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128094": { + "content": "<|reserved_special_token_86|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128095": { + "content": "<|reserved_special_token_87|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128096": { + "content": "<|reserved_special_token_88|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128097": { + "content": "<|reserved_special_token_89|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128098": { + "content": "<|reserved_special_token_90|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128099": { + "content": "<|reserved_special_token_91|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128100": { + "content": "<|reserved_special_token_92|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128101": { + "content": "<|reserved_special_token_93|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128102": { + "content": "<|reserved_special_token_94|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128103": { + "content": "<|reserved_special_token_95|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128104": { + "content": "<|reserved_special_token_96|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128105": { + "content": "<|reserved_special_token_97|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128106": { + "content": "<|reserved_special_token_98|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128107": { + "content": "<|reserved_special_token_99|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128108": { + "content": "<|reserved_special_token_100|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128109": { + "content": "<|reserved_special_token_101|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128110": { + "content": "<|reserved_special_token_102|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128111": { + "content": "<|reserved_special_token_103|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128112": { + "content": "<|reserved_special_token_104|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128113": { + "content": "<|reserved_special_token_105|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128114": { + "content": "<|reserved_special_token_106|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128115": { + "content": "<|reserved_special_token_107|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128116": { + "content": "<|reserved_special_token_108|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128117": { + "content": "<|reserved_special_token_109|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128118": { + "content": "<|reserved_special_token_110|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128119": { + "content": "<|reserved_special_token_111|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128120": { + "content": "<|reserved_special_token_112|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128121": { + "content": "<|reserved_special_token_113|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128122": { + "content": "<|reserved_special_token_114|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128123": { + "content": "<|reserved_special_token_115|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128124": { + "content": "<|reserved_special_token_116|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128125": { + "content": "<|reserved_special_token_117|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128126": { + "content": "<|reserved_special_token_118|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128127": { + "content": "<|reserved_special_token_119|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128128": { + "content": "<|reserved_special_token_120|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128129": { + "content": "<|reserved_special_token_121|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128130": { + "content": "<|reserved_special_token_122|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128131": { + "content": "<|reserved_special_token_123|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128132": { + "content": "<|reserved_special_token_124|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128133": { + "content": "<|reserved_special_token_125|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128134": { + "content": "<|reserved_special_token_126|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128135": { + "content": "<|reserved_special_token_127|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128136": { + "content": "<|reserved_special_token_128|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128137": { + "content": "<|reserved_special_token_129|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128138": { + "content": "<|reserved_special_token_130|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128139": { + "content": "<|reserved_special_token_131|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128140": { + "content": "<|reserved_special_token_132|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128141": { + "content": "<|reserved_special_token_133|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128142": { + "content": "<|reserved_special_token_134|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128143": { + "content": "<|reserved_special_token_135|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128144": { + "content": "<|reserved_special_token_136|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128145": { + "content": "<|reserved_special_token_137|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128146": { + "content": "<|reserved_special_token_138|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128147": { + "content": "<|reserved_special_token_139|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128148": { + "content": "<|reserved_special_token_140|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128149": { + "content": "<|reserved_special_token_141|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128150": { + "content": "<|reserved_special_token_142|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128151": { + "content": "<|reserved_special_token_143|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128152": { + "content": "<|reserved_special_token_144|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128153": { + "content": "<|reserved_special_token_145|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128154": { + "content": "<|reserved_special_token_146|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128155": { + "content": "<|reserved_special_token_147|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128156": { + "content": "<|reserved_special_token_148|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128157": { + "content": "<|reserved_special_token_149|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128158": { + "content": "<|reserved_special_token_150|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128159": { + "content": "<|reserved_special_token_151|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128160": { + "content": "<|reserved_special_token_152|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128161": { + "content": "<|reserved_special_token_153|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128162": { + "content": "<|reserved_special_token_154|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128163": { + "content": "<|reserved_special_token_155|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128164": { + "content": "<|reserved_special_token_156|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128165": { + "content": "<|reserved_special_token_157|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128166": { + "content": "<|reserved_special_token_158|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128167": { + "content": "<|reserved_special_token_159|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128168": { + "content": "<|reserved_special_token_160|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128169": { + "content": "<|reserved_special_token_161|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128170": { + "content": "<|reserved_special_token_162|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128171": { + "content": "<|reserved_special_token_163|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128172": { + "content": "<|reserved_special_token_164|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128173": { + "content": "<|reserved_special_token_165|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128174": { + "content": "<|reserved_special_token_166|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128175": { + "content": "<|reserved_special_token_167|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128176": { + "content": "<|reserved_special_token_168|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128177": { + "content": "<|reserved_special_token_169|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128178": { + "content": "<|reserved_special_token_170|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128179": { + "content": "<|reserved_special_token_171|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128180": { + "content": "<|reserved_special_token_172|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128181": { + "content": "<|reserved_special_token_173|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128182": { + "content": "<|reserved_special_token_174|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128183": { + "content": "<|reserved_special_token_175|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128184": { + "content": "<|reserved_special_token_176|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128185": { + "content": "<|reserved_special_token_177|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128186": { + "content": "<|reserved_special_token_178|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128187": { + "content": "<|reserved_special_token_179|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128188": { + "content": "<|reserved_special_token_180|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128189": { + "content": "<|reserved_special_token_181|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128190": { + "content": "<|reserved_special_token_182|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128191": { + "content": "<|reserved_special_token_183|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128192": { + "content": "<|reserved_special_token_184|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128193": { + "content": "<|reserved_special_token_185|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128194": { + "content": "<|reserved_special_token_186|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128195": { + "content": "<|reserved_special_token_187|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128196": { + "content": "<|reserved_special_token_188|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128197": { + "content": "<|reserved_special_token_189|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128198": { + "content": "<|reserved_special_token_190|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128199": { + "content": "<|reserved_special_token_191|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128200": { + "content": "<|reserved_special_token_192|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128201": { + "content": "<|reserved_special_token_193|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128202": { + "content": "<|reserved_special_token_194|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128203": { + "content": "<|reserved_special_token_195|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128204": { + "content": "<|reserved_special_token_196|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128205": { + "content": "<|reserved_special_token_197|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128206": { + "content": "<|reserved_special_token_198|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128207": { + "content": "<|reserved_special_token_199|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128208": { + "content": "<|reserved_special_token_200|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128209": { + "content": "<|reserved_special_token_201|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128210": { + "content": "<|reserved_special_token_202|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128211": { + "content": "<|reserved_special_token_203|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128212": { + "content": "<|reserved_special_token_204|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128213": { + "content": "<|reserved_special_token_205|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128214": { + "content": "<|reserved_special_token_206|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128215": { + "content": "<|reserved_special_token_207|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128216": { + "content": "<|reserved_special_token_208|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128217": { + "content": "<|reserved_special_token_209|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128218": { + "content": "<|reserved_special_token_210|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128219": { + "content": "<|reserved_special_token_211|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128220": { + "content": "<|reserved_special_token_212|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128221": { + "content": "<|reserved_special_token_213|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128222": { + "content": "<|reserved_special_token_214|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128223": { + "content": "<|reserved_special_token_215|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128224": { + "content": "<|reserved_special_token_216|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128225": { + "content": "<|reserved_special_token_217|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128226": { + "content": "<|reserved_special_token_218|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128227": { + "content": "<|reserved_special_token_219|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128228": { + "content": "<|reserved_special_token_220|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128229": { + "content": "<|reserved_special_token_221|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128230": { + "content": "<|reserved_special_token_222|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128231": { + "content": "<|reserved_special_token_223|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128232": { + "content": "<|reserved_special_token_224|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128233": { + "content": "<|reserved_special_token_225|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128234": { + "content": "<|reserved_special_token_226|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128235": { + "content": "<|reserved_special_token_227|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128236": { + "content": "<|reserved_special_token_228|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128237": { + "content": "<|reserved_special_token_229|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128238": { + "content": "<|reserved_special_token_230|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128239": { + "content": "<|reserved_special_token_231|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128240": { + "content": "<|reserved_special_token_232|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128241": { + "content": "<|reserved_special_token_233|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128242": { + "content": "<|reserved_special_token_234|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128243": { + "content": "<|reserved_special_token_235|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128244": { + "content": "<|reserved_special_token_236|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128245": { + "content": "<|reserved_special_token_237|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128246": { + "content": "<|reserved_special_token_238|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128247": { + "content": "<|reserved_special_token_239|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128248": { + "content": "<|reserved_special_token_240|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128249": { + "content": "<|reserved_special_token_241|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128250": { + "content": "<|reserved_special_token_242|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128251": { + "content": "<|reserved_special_token_243|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128252": { + "content": "<|reserved_special_token_244|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128253": { + "content": "<|reserved_special_token_245|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128254": { + "content": "<|reserved_special_token_246|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + }, + "128255": { + "content": "<|reserved_special_token_247|>", + "lstrip": false, + "normalized": false, + "rstrip": false, + "single_word": false, + "special": true + } + }, + "additional_special_tokens": [ + "<|eot_id|>", + "<|eom_id|>" + ], + "bos_token": "<|begin_of_text|>", + "chat_template": "{{ '<|begin_of_text|>' }}{% if messages[0]['role'] == 'system' %}{% set loop_messages = messages[1:] %}{% set system_message = messages[0]['content'] %}{% else %}{% set loop_messages = messages %}{% endif %}{% if system_message is defined %}{{ '<|start_header_id|>system<|end_header_id|>\n\n' + system_message + '<|eot_id|>' }}{% endif %}{% for message in loop_messages %}{% set content = message['content'] %}{% if message['role'] == 'user' %}{{ '<|start_header_id|>user<|end_header_id|>\n\n' + content + '<|eot_id|><|start_header_id|>assistant<|end_header_id|>\n\n' }}{% elif message['role'] == 'assistant' %}{{ content + '<|eot_id|>' }}{% endif %}{% endfor %}", + "clean_up_tokenization_spaces": true, + "eos_token": "<|end_of_text|>", + "model_input_names": [ + "input_ids", + "attention_mask" + ], + "model_max_length": 2048, + "pad_token": "<|end_of_text|>", + "padding_side": "right", + "split_special_tokens": false, + "tokenizer_class": "PreTrainedTokenizerFast" +} diff --git a/train_results.json b/train_results.json new file mode 100644 index 0000000..3961629 --- /dev/null +++ b/train_results.json @@ -0,0 +1,8 @@ +{ + "epoch": 3.0, + "total_flos": 246796222464.0, + "train_loss": 0.3023774076490572, + "train_runtime": 943.8917, + "train_samples_per_second": 3.458, + "train_steps_per_second": 1.729 +} \ No newline at end of file diff --git a/trainer_log.jsonl b/trainer_log.jsonl new file mode 100644 index 0000000..2d97525 --- /dev/null +++ b/trainer_log.jsonl @@ -0,0 +1,164 @@ +{"current_steps": 10, "total_steps": 1632, "loss": 1.2036, "lr": 6.097560975609757e-07, "epoch": 0.01838235294117647, "percentage": 0.61, "elapsed_time": "0:00:06", "remaining_time": "0:17:09"} +{"current_steps": 20, "total_steps": 1632, "loss": 1.2064, "lr": 1.2195121951219514e-06, "epoch": 0.03676470588235294, "percentage": 1.23, "elapsed_time": "0:00:11", "remaining_time": "0:15:49"} +{"current_steps": 30, "total_steps": 1632, "loss": 1.2741, "lr": 1.8292682926829268e-06, "epoch": 0.05514705882352941, "percentage": 1.84, "elapsed_time": "0:00:17", "remaining_time": "0:15:16"} +{"current_steps": 40, "total_steps": 1632, "loss": 0.7596, "lr": 2.4390243902439027e-06, "epoch": 0.07352941176470588, "percentage": 2.45, "elapsed_time": "0:00:22", "remaining_time": "0:14:58"} +{"current_steps": 50, "total_steps": 1632, "loss": 0.6171, "lr": 3.0487804878048782e-06, "epoch": 0.09191176470588236, "percentage": 3.06, "elapsed_time": "0:00:27", "remaining_time": "0:14:44"} +{"current_steps": 60, "total_steps": 1632, "loss": 0.794, "lr": 3.6585365853658537e-06, "epoch": 0.11029411764705882, "percentage": 3.68, "elapsed_time": "0:00:33", "remaining_time": "0:14:33"} +{"current_steps": 70, "total_steps": 1632, "loss": 0.6233, "lr": 4.268292682926829e-06, "epoch": 0.12867647058823528, "percentage": 4.29, "elapsed_time": "0:00:38", "remaining_time": "0:14:25"} +{"current_steps": 80, "total_steps": 1632, "loss": 0.5441, "lr": 4.8780487804878055e-06, "epoch": 0.14705882352941177, "percentage": 4.9, "elapsed_time": "0:00:44", "remaining_time": "0:14:16"} +{"current_steps": 90, "total_steps": 1632, "loss": 0.5784, "lr": 5.487804878048781e-06, "epoch": 0.16544117647058823, "percentage": 5.51, "elapsed_time": "0:00:49", "remaining_time": "0:14:08"} +{"current_steps": 100, "total_steps": 1632, "loss": 0.4844, "lr": 6.0975609756097564e-06, "epoch": 0.18382352941176472, "percentage": 6.13, "elapsed_time": "0:00:54", "remaining_time": "0:14:00"} +{"current_steps": 110, "total_steps": 1632, "loss": 0.6535, "lr": 6.707317073170733e-06, "epoch": 0.20220588235294118, "percentage": 6.74, "elapsed_time": "0:01:00", "remaining_time": "0:13:53"} +{"current_steps": 120, "total_steps": 1632, "loss": 0.6897, "lr": 7.317073170731707e-06, "epoch": 0.22058823529411764, "percentage": 7.35, "elapsed_time": "0:01:05", "remaining_time": "0:13:47"} +{"current_steps": 130, "total_steps": 1632, "loss": 0.4217, "lr": 7.926829268292685e-06, "epoch": 0.23897058823529413, "percentage": 7.97, "elapsed_time": "0:01:11", "remaining_time": "0:13:41"} +{"current_steps": 140, "total_steps": 1632, "loss": 0.5868, "lr": 8.536585365853658e-06, "epoch": 0.25735294117647056, "percentage": 8.58, "elapsed_time": "0:01:16", "remaining_time": "0:13:35"} +{"current_steps": 150, "total_steps": 1632, "loss": 0.53, "lr": 9.146341463414635e-06, "epoch": 0.2757352941176471, "percentage": 9.19, "elapsed_time": "0:01:21", "remaining_time": "0:13:29"} +{"current_steps": 160, "total_steps": 1632, "loss": 0.5538, "lr": 9.756097560975611e-06, "epoch": 0.29411764705882354, "percentage": 9.8, "elapsed_time": "0:01:27", "remaining_time": "0:13:23"} +{"current_steps": 170, "total_steps": 1632, "loss": 0.4616, "lr": 9.999587822598768e-06, "epoch": 0.3125, "percentage": 10.42, "elapsed_time": "0:01:32", "remaining_time": "0:13:17"} +{"current_steps": 180, "total_steps": 1632, "loss": 0.5633, "lr": 9.997069206794246e-06, "epoch": 0.33088235294117646, "percentage": 11.03, "elapsed_time": "0:01:38", "remaining_time": "0:13:11"} +{"current_steps": 190, "total_steps": 1632, "loss": 0.6035, "lr": 9.992262114666653e-06, "epoch": 0.3492647058823529, "percentage": 11.64, "elapsed_time": "0:01:43", "remaining_time": "0:13:05"} +{"current_steps": 200, "total_steps": 1632, "loss": 0.5822, "lr": 9.985168747689706e-06, "epoch": 0.36764705882352944, "percentage": 12.25, "elapsed_time": "0:01:48", "remaining_time": "0:13:00"} +{"current_steps": 210, "total_steps": 1632, "loss": 0.3755, "lr": 9.975792354368019e-06, "epoch": 0.3860294117647059, "percentage": 12.87, "elapsed_time": "0:01:54", "remaining_time": "0:12:54"} +{"current_steps": 220, "total_steps": 1632, "loss": 0.4914, "lr": 9.964137228749409e-06, "epoch": 0.40441176470588236, "percentage": 13.48, "elapsed_time": "0:01:59", "remaining_time": "0:12:49"} +{"current_steps": 230, "total_steps": 1632, "loss": 0.4604, "lr": 9.950208708458371e-06, "epoch": 0.4227941176470588, "percentage": 14.09, "elapsed_time": "0:02:05", "remaining_time": "0:12:43"} +{"current_steps": 240, "total_steps": 1632, "loss": 0.5029, "lr": 9.934013172251654e-06, "epoch": 0.4411764705882353, "percentage": 14.71, "elapsed_time": "0:02:10", "remaining_time": "0:12:37"} +{"current_steps": 250, "total_steps": 1632, "loss": 0.5404, "lr": 9.915558037097003e-06, "epoch": 0.45955882352941174, "percentage": 15.32, "elapsed_time": "0:02:16", "remaining_time": "0:12:32"} +{"current_steps": 260, "total_steps": 1632, "loss": 0.3555, "lr": 9.894851754776473e-06, "epoch": 0.47794117647058826, "percentage": 15.93, "elapsed_time": "0:02:21", "remaining_time": "0:12:26"} +{"current_steps": 270, "total_steps": 1632, "loss": 0.4092, "lr": 9.871903808015812e-06, "epoch": 0.4963235294117647, "percentage": 16.54, "elapsed_time": "0:02:26", "remaining_time": "0:12:21"} +{"current_steps": 280, "total_steps": 1632, "loss": 0.4489, "lr": 9.846724706141718e-06, "epoch": 0.5147058823529411, "percentage": 17.16, "elapsed_time": "0:02:32", "remaining_time": "0:12:15"} +{"current_steps": 290, "total_steps": 1632, "loss": 0.5297, "lr": 9.819325980268946e-06, "epoch": 0.5330882352941176, "percentage": 17.77, "elapsed_time": "0:02:37", "remaining_time": "0:12:10"} +{"current_steps": 300, "total_steps": 1632, "loss": 0.4301, "lr": 9.789720178019483e-06, "epoch": 0.5514705882352942, "percentage": 18.38, "elapsed_time": "0:02:43", "remaining_time": "0:12:04"} +{"current_steps": 310, "total_steps": 1632, "loss": 0.5499, "lr": 9.757920857776188e-06, "epoch": 0.5698529411764706, "percentage": 19.0, "elapsed_time": "0:02:48", "remaining_time": "0:11:59"} +{"current_steps": 320, "total_steps": 1632, "loss": 0.3723, "lr": 9.723942582473545e-06, "epoch": 0.5882352941176471, "percentage": 19.61, "elapsed_time": "0:02:54", "remaining_time": "0:11:54"} +{"current_steps": 330, "total_steps": 1632, "loss": 0.6103, "lr": 9.687800912928362e-06, "epoch": 0.6066176470588235, "percentage": 20.22, "elapsed_time": "0:02:59", "remaining_time": "0:11:48"} +{"current_steps": 340, "total_steps": 1632, "loss": 0.5561, "lr": 9.649512400713497e-06, "epoch": 0.625, "percentage": 20.83, "elapsed_time": "0:03:04", "remaining_time": "0:11:42"} +{"current_steps": 350, "total_steps": 1632, "loss": 0.4384, "lr": 9.609094580577825e-06, "epoch": 0.6433823529411765, "percentage": 21.45, "elapsed_time": "0:03:10", "remaining_time": "0:11:37"} +{"current_steps": 360, "total_steps": 1632, "loss": 0.492, "lr": 9.566565962415958e-06, "epoch": 0.6617647058823529, "percentage": 22.06, "elapsed_time": "0:03:15", "remaining_time": "0:11:31"} +{"current_steps": 370, "total_steps": 1632, "loss": 0.5596, "lr": 9.521946022791402e-06, "epoch": 0.6801470588235294, "percentage": 22.67, "elapsed_time": "0:03:21", "remaining_time": "0:11:26"} +{"current_steps": 380, "total_steps": 1632, "loss": 0.4657, "lr": 9.475255196016972e-06, "epoch": 0.6985294117647058, "percentage": 23.28, "elapsed_time": "0:03:26", "remaining_time": "0:11:20"} +{"current_steps": 390, "total_steps": 1632, "loss": 0.547, "lr": 9.426514864796648e-06, "epoch": 0.7169117647058824, "percentage": 23.9, "elapsed_time": "0:03:32", "remaining_time": "0:11:15"} +{"current_steps": 400, "total_steps": 1632, "loss": 0.4821, "lr": 9.375747350433044e-06, "epoch": 0.7352941176470589, "percentage": 24.51, "elapsed_time": "0:03:37", "remaining_time": "0:11:09"} +{"current_steps": 410, "total_steps": 1632, "loss": 0.3627, "lr": 9.322975902605082e-06, "epoch": 0.7536764705882353, "percentage": 25.12, "elapsed_time": "0:03:42", "remaining_time": "0:11:04"} +{"current_steps": 420, "total_steps": 1632, "loss": 0.2779, "lr": 9.268224688720475e-06, "epoch": 0.7720588235294118, "percentage": 25.74, "elapsed_time": "0:03:48", "remaining_time": "0:10:58"} +{"current_steps": 430, "total_steps": 1632, "loss": 0.684, "lr": 9.211518782847932e-06, "epoch": 0.7904411764705882, "percentage": 26.35, "elapsed_time": "0:03:53", "remaining_time": "0:10:53"} +{"current_steps": 440, "total_steps": 1632, "loss": 0.3829, "lr": 9.152884154234147e-06, "epoch": 0.8088235294117647, "percentage": 26.96, "elapsed_time": "0:03:59", "remaining_time": "0:10:47"} +{"current_steps": 450, "total_steps": 1632, "loss": 0.409, "lr": 9.092347655410818e-06, "epoch": 0.8272058823529411, "percentage": 27.57, "elapsed_time": "0:04:04", "remaining_time": "0:10:42"} +{"current_steps": 460, "total_steps": 1632, "loss": 0.4189, "lr": 9.029937009897176e-06, "epoch": 0.8455882352941176, "percentage": 28.19, "elapsed_time": "0:04:09", "remaining_time": "0:10:36"} +{"current_steps": 470, "total_steps": 1632, "loss": 0.4846, "lr": 8.96568079950361e-06, "epoch": 0.8639705882352942, "percentage": 28.8, "elapsed_time": "0:04:15", "remaining_time": "0:10:31"} +{"current_steps": 480, "total_steps": 1632, "loss": 0.4869, "lr": 8.899608451242233e-06, "epoch": 0.8823529411764706, "percentage": 29.41, "elapsed_time": "0:04:20", "remaining_time": "0:10:25"} +{"current_steps": 490, "total_steps": 1632, "loss": 0.368, "lr": 8.83175022385039e-06, "epoch": 0.9007352941176471, "percentage": 30.02, "elapsed_time": "0:04:26", "remaining_time": "0:10:20"} +{"current_steps": 500, "total_steps": 1632, "loss": 0.3489, "lr": 8.762137193933241e-06, "epoch": 0.9191176470588235, "percentage": 30.64, "elapsed_time": "0:04:31", "remaining_time": "0:10:14"} +{"current_steps": 510, "total_steps": 1632, "loss": 0.4095, "lr": 8.690801241731818e-06, "epoch": 0.9375, "percentage": 31.25, "elapsed_time": "0:04:52", "remaining_time": "0:10:42"} +{"current_steps": 520, "total_steps": 1632, "loss": 0.4641, "lr": 8.617775036523014e-06, "epoch": 0.9558823529411765, "percentage": 31.86, "elapsed_time": "0:04:57", "remaining_time": "0:10:36"} +{"current_steps": 530, "total_steps": 1632, "loss": 0.3311, "lr": 8.543092021658259e-06, "epoch": 0.9742647058823529, "percentage": 32.48, "elapsed_time": "0:05:03", "remaining_time": "0:10:30"} +{"current_steps": 540, "total_steps": 1632, "loss": 0.3561, "lr": 8.466786399247663e-06, "epoch": 0.9926470588235294, "percentage": 33.09, "elapsed_time": "0:05:08", "remaining_time": "0:10:23"} +{"current_steps": 550, "total_steps": 1632, "loss": 0.3474, "lr": 8.388893114496706e-06, "epoch": 1.0110294117647058, "percentage": 33.7, "elapsed_time": "0:05:13", "remaining_time": "0:10:17"} +{"current_steps": 560, "total_steps": 1632, "loss": 0.2188, "lr": 8.309447839702583e-06, "epoch": 1.0294117647058822, "percentage": 34.31, "elapsed_time": "0:05:19", "remaining_time": "0:10:11"} +{"current_steps": 570, "total_steps": 1632, "loss": 0.2178, "lr": 8.228486957917608e-06, "epoch": 1.0477941176470589, "percentage": 34.93, "elapsed_time": "0:05:24", "remaining_time": "0:10:05"} +{"current_steps": 580, "total_steps": 1632, "loss": 0.2783, "lr": 8.146047546287077e-06, "epoch": 1.0661764705882353, "percentage": 35.54, "elapsed_time": "0:05:30", "remaining_time": "0:09:58"} +{"current_steps": 590, "total_steps": 1632, "loss": 0.2463, "lr": 8.062167359069301e-06, "epoch": 1.0845588235294117, "percentage": 36.15, "elapsed_time": "0:05:35", "remaining_time": "0:09:52"} +{"current_steps": 600, "total_steps": 1632, "loss": 0.2634, "lr": 7.97688481034551e-06, "epoch": 1.1029411764705883, "percentage": 36.76, "elapsed_time": "0:05:41", "remaining_time": "0:09:46"} +{"current_steps": 610, "total_steps": 1632, "loss": 0.294, "lr": 7.8902389564276e-06, "epoch": 1.1213235294117647, "percentage": 37.38, "elapsed_time": "0:05:46", "remaining_time": "0:09:40"} +{"current_steps": 620, "total_steps": 1632, "loss": 0.273, "lr": 7.802269477971771e-06, "epoch": 1.1397058823529411, "percentage": 37.99, "elapsed_time": "0:05:51", "remaining_time": "0:09:34"} +{"current_steps": 630, "total_steps": 1632, "loss": 0.2975, "lr": 7.713016661806213e-06, "epoch": 1.1580882352941178, "percentage": 38.6, "elapsed_time": "0:05:57", "remaining_time": "0:09:28"} +{"current_steps": 640, "total_steps": 1632, "loss": 0.2831, "lr": 7.622521382481208e-06, "epoch": 1.1764705882352942, "percentage": 39.22, "elapsed_time": "0:06:02", "remaining_time": "0:09:22"} +{"current_steps": 650, "total_steps": 1632, "loss": 0.3548, "lr": 7.530825083550073e-06, "epoch": 1.1948529411764706, "percentage": 39.83, "elapsed_time": "0:06:08", "remaining_time": "0:09:16"} +{"current_steps": 660, "total_steps": 1632, "loss": 0.2454, "lr": 7.437969758589508e-06, "epoch": 1.213235294117647, "percentage": 40.44, "elapsed_time": "0:06:13", "remaining_time": "0:09:10"} +{"current_steps": 670, "total_steps": 1632, "loss": 0.2694, "lr": 7.343997931968068e-06, "epoch": 1.2316176470588236, "percentage": 41.05, "elapsed_time": "0:06:19", "remaining_time": "0:09:04"} +{"current_steps": 680, "total_steps": 1632, "loss": 0.3091, "lr": 7.248952639371543e-06, "epoch": 1.25, "percentage": 41.67, "elapsed_time": "0:06:24", "remaining_time": "0:08:58"} +{"current_steps": 690, "total_steps": 1632, "loss": 0.2305, "lr": 7.152877408094179e-06, "epoch": 1.2683823529411764, "percentage": 42.28, "elapsed_time": "0:06:29", "remaining_time": "0:08:52"} +{"current_steps": 700, "total_steps": 1632, "loss": 0.3002, "lr": 7.055816237104753e-06, "epoch": 1.2867647058823528, "percentage": 42.89, "elapsed_time": "0:06:35", "remaining_time": "0:08:46"} +{"current_steps": 710, "total_steps": 1632, "loss": 0.2868, "lr": 6.957813576896647e-06, "epoch": 1.3051470588235294, "percentage": 43.5, "elapsed_time": "0:06:40", "remaining_time": "0:08:40"} +{"current_steps": 720, "total_steps": 1632, "loss": 0.2342, "lr": 6.858914309131131e-06, "epoch": 1.3235294117647058, "percentage": 44.12, "elapsed_time": "0:06:45", "remaining_time": "0:08:34"} +{"current_steps": 730, "total_steps": 1632, "loss": 0.2143, "lr": 6.7591637260831925e-06, "epoch": 1.3419117647058822, "percentage": 44.73, "elapsed_time": "0:06:51", "remaining_time": "0:08:28"} +{"current_steps": 740, "total_steps": 1632, "loss": 0.3071, "lr": 6.6586075098993196e-06, "epoch": 1.3602941176470589, "percentage": 45.34, "elapsed_time": "0:06:56", "remaining_time": "0:08:22"} +{"current_steps": 750, "total_steps": 1632, "loss": 0.2977, "lr": 6.557291711676738e-06, "epoch": 1.3786764705882353, "percentage": 45.96, "elapsed_time": "0:07:02", "remaining_time": "0:08:16"} +{"current_steps": 760, "total_steps": 1632, "loss": 0.2326, "lr": 6.455262730373673e-06, "epoch": 1.3970588235294117, "percentage": 46.57, "elapsed_time": "0:07:07", "remaining_time": "0:08:10"} +{"current_steps": 770, "total_steps": 1632, "loss": 0.3158, "lr": 6.352567291560319e-06, "epoch": 1.4154411764705883, "percentage": 47.18, "elapsed_time": "0:07:12", "remaining_time": "0:08:04"} +{"current_steps": 780, "total_steps": 1632, "loss": 0.3301, "lr": 6.249252426020217e-06, "epoch": 1.4338235294117647, "percentage": 47.79, "elapsed_time": "0:07:18", "remaining_time": "0:07:58"} +{"current_steps": 790, "total_steps": 1632, "loss": 0.2937, "lr": 6.145365448211866e-06, "epoch": 1.4522058823529411, "percentage": 48.41, "elapsed_time": "0:07:23", "remaining_time": "0:07:53"} +{"current_steps": 800, "total_steps": 1632, "loss": 0.2229, "lr": 6.040953934600425e-06, "epoch": 1.4705882352941178, "percentage": 49.02, "elapsed_time": "0:07:29", "remaining_time": "0:07:47"} +{"current_steps": 810, "total_steps": 1632, "loss": 0.3169, "lr": 5.936065701869404e-06, "epoch": 1.4889705882352942, "percentage": 49.63, "elapsed_time": "0:07:34", "remaining_time": "0:07:41"} +{"current_steps": 820, "total_steps": 1632, "loss": 0.257, "lr": 5.830748785022369e-06, "epoch": 1.5073529411764706, "percentage": 50.25, "elapsed_time": "0:07:40", "remaining_time": "0:07:35"} +{"current_steps": 830, "total_steps": 1632, "loss": 0.2766, "lr": 5.725051415384657e-06, "epoch": 1.5257352941176472, "percentage": 50.86, "elapsed_time": "0:07:45", "remaining_time": "0:07:29"} +{"current_steps": 840, "total_steps": 1632, "loss": 0.2385, "lr": 5.619021998515165e-06, "epoch": 1.5441176470588234, "percentage": 51.47, "elapsed_time": "0:07:50", "remaining_time": "0:07:23"} +{"current_steps": 850, "total_steps": 1632, "loss": 0.2844, "lr": 5.51270909203838e-06, "epoch": 1.5625, "percentage": 52.08, "elapsed_time": "0:07:56", "remaining_time": "0:07:18"} +{"current_steps": 860, "total_steps": 1632, "loss": 0.2924, "lr": 5.40616138340673e-06, "epoch": 1.5808823529411766, "percentage": 52.7, "elapsed_time": "0:08:01", "remaining_time": "0:07:12"} +{"current_steps": 870, "total_steps": 1632, "loss": 0.2826, "lr": 5.299427667603516e-06, "epoch": 1.5992647058823528, "percentage": 53.31, "elapsed_time": "0:08:07", "remaining_time": "0:07:06"} +{"current_steps": 880, "total_steps": 1632, "loss": 0.2106, "lr": 5.1925568247965686e-06, "epoch": 1.6176470588235294, "percentage": 53.92, "elapsed_time": "0:08:12", "remaining_time": "0:07:00"} +{"current_steps": 890, "total_steps": 1632, "loss": 0.3306, "lr": 5.085597797952906e-06, "epoch": 1.6360294117647058, "percentage": 54.53, "elapsed_time": "0:08:18", "remaining_time": "0:06:55"} +{"current_steps": 900, "total_steps": 1632, "loss": 0.2227, "lr": 4.97859957042464e-06, "epoch": 1.6544117647058822, "percentage": 55.15, "elapsed_time": "0:08:23", "remaining_time": "0:06:49"} +{"current_steps": 910, "total_steps": 1632, "loss": 0.2275, "lr": 4.871611143516367e-06, "epoch": 1.6727941176470589, "percentage": 55.76, "elapsed_time": "0:08:28", "remaining_time": "0:06:43"} +{"current_steps": 920, "total_steps": 1632, "loss": 0.2966, "lr": 4.7646815140443625e-06, "epoch": 1.6911764705882353, "percentage": 56.37, "elapsed_time": "0:08:34", "remaining_time": "0:06:38"} +{"current_steps": 930, "total_steps": 1632, "loss": 0.228, "lr": 4.657859651897807e-06, "epoch": 1.7095588235294117, "percentage": 56.99, "elapsed_time": "0:08:39", "remaining_time": "0:06:32"} +{"current_steps": 940, "total_steps": 1632, "loss": 0.2694, "lr": 4.551194477612351e-06, "epoch": 1.7279411764705883, "percentage": 57.6, "elapsed_time": "0:08:45", "remaining_time": "0:06:26"} +{"current_steps": 950, "total_steps": 1632, "loss": 0.1944, "lr": 4.444734839966306e-06, "epoch": 1.7463235294117647, "percentage": 58.21, "elapsed_time": "0:08:50", "remaining_time": "0:06:20"} +{"current_steps": 960, "total_steps": 1632, "loss": 0.2479, "lr": 4.338529493609647e-06, "epoch": 1.7647058823529411, "percentage": 58.82, "elapsed_time": "0:08:55", "remaining_time": "0:06:15"} +{"current_steps": 970, "total_steps": 1632, "loss": 0.1819, "lr": 4.232627076736181e-06, "epoch": 1.7830882352941178, "percentage": 59.44, "elapsed_time": "0:09:01", "remaining_time": "0:06:09"} +{"current_steps": 980, "total_steps": 1632, "loss": 0.2514, "lr": 4.127076088809e-06, "epoch": 1.8014705882352942, "percentage": 60.05, "elapsed_time": "0:09:06", "remaining_time": "0:06:03"} +{"current_steps": 990, "total_steps": 1632, "loss": 0.24, "lr": 4.021924868349493e-06, "epoch": 1.8198529411764706, "percentage": 60.66, "elapsed_time": "0:09:12", "remaining_time": "0:05:57"} +{"current_steps": 1000, "total_steps": 1632, "loss": 0.2477, "lr": 3.9172215708000655e-06, "epoch": 1.8382352941176472, "percentage": 61.27, "elapsed_time": "0:09:17", "remaining_time": "0:05:52"} +{"current_steps": 1010, "total_steps": 1632, "loss": 0.2207, "lr": 3.8130141464706806e-06, "epoch": 1.8566176470588234, "percentage": 61.89, "elapsed_time": "0:09:36", "remaining_time": "0:05:55"} +{"current_steps": 1020, "total_steps": 1632, "loss": 0.2634, "lr": 3.709350318579371e-06, "epoch": 1.875, "percentage": 62.5, "elapsed_time": "0:09:41", "remaining_time": "0:05:49"} +{"current_steps": 1030, "total_steps": 1632, "loss": 0.236, "lr": 3.606277561396726e-06, "epoch": 1.8933823529411766, "percentage": 63.11, "elapsed_time": "0:09:47", "remaining_time": "0:05:43"} +{"current_steps": 1040, "total_steps": 1632, "loss": 0.2132, "lr": 3.503843078504405e-06, "epoch": 1.9117647058823528, "percentage": 63.73, "elapsed_time": "0:09:52", "remaining_time": "0:05:37"} +{"current_steps": 1050, "total_steps": 1632, "loss": 0.2088, "lr": 3.4020937811776154e-06, "epoch": 1.9301470588235294, "percentage": 64.34, "elapsed_time": "0:09:58", "remaining_time": "0:05:31"} +{"current_steps": 1060, "total_steps": 1632, "loss": 0.2413, "lr": 3.301076266901435e-06, "epoch": 1.9485294117647058, "percentage": 64.95, "elapsed_time": "0:10:03", "remaining_time": "0:05:25"} +{"current_steps": 1070, "total_steps": 1632, "loss": 0.2271, "lr": 3.2008367980308737e-06, "epoch": 1.9669117647058822, "percentage": 65.56, "elapsed_time": "0:10:08", "remaining_time": "0:05:19"} +{"current_steps": 1080, "total_steps": 1632, "loss": 0.2285, "lr": 3.1014212806043794e-06, "epoch": 1.9852941176470589, "percentage": 66.18, "elapsed_time": "0:10:14", "remaining_time": "0:05:13"} +{"current_steps": 1090, "total_steps": 1632, "loss": 0.1852, "lr": 3.0028752433205475e-06, "epoch": 2.0036764705882355, "percentage": 66.79, "elapsed_time": "0:10:19", "remaining_time": "0:05:08"} +{"current_steps": 1100, "total_steps": 1632, "loss": 0.1519, "lr": 2.9052438166876305e-06, "epoch": 2.0220588235294117, "percentage": 67.4, "elapsed_time": "0:10:25", "remaining_time": "0:05:02"} +{"current_steps": 1110, "total_steps": 1632, "loss": 0.1601, "lr": 2.808571712355389e-06, "epoch": 2.0404411764705883, "percentage": 68.01, "elapsed_time": "0:10:30", "remaining_time": "0:04:56"} +{"current_steps": 1120, "total_steps": 1632, "loss": 0.1264, "lr": 2.7129032026388046e-06, "epoch": 2.0588235294117645, "percentage": 68.63, "elapsed_time": "0:10:35", "remaining_time": "0:04:50"} +{"current_steps": 1130, "total_steps": 1632, "loss": 0.137, "lr": 2.618282100242935e-06, "epoch": 2.077205882352941, "percentage": 69.24, "elapsed_time": "0:10:41", "remaining_time": "0:04:44"} +{"current_steps": 1140, "total_steps": 1632, "loss": 0.1085, "lr": 2.5247517381983137e-06, "epoch": 2.0955882352941178, "percentage": 69.85, "elapsed_time": "0:10:46", "remaining_time": "0:04:39"} +{"current_steps": 1150, "total_steps": 1632, "loss": 0.1258, "lr": 2.4323549500159806e-06, "epoch": 2.113970588235294, "percentage": 70.47, "elapsed_time": "0:10:52", "remaining_time": "0:04:33"} +{"current_steps": 1160, "total_steps": 1632, "loss": 0.1046, "lr": 2.3411340500712833e-06, "epoch": 2.1323529411764706, "percentage": 71.08, "elapsed_time": "0:10:57", "remaining_time": "0:04:27"} +{"current_steps": 1170, "total_steps": 1632, "loss": 0.092, "lr": 2.251130814225449e-06, "epoch": 2.150735294117647, "percentage": 71.69, "elapsed_time": "0:11:03", "remaining_time": "0:04:21"} +{"current_steps": 1180, "total_steps": 1632, "loss": 0.0868, "lr": 2.16238646069373e-06, "epoch": 2.1691176470588234, "percentage": 72.3, "elapsed_time": "0:11:08", "remaining_time": "0:04:16"} +{"current_steps": 1190, "total_steps": 1632, "loss": 0.1059, "lr": 2.0749416311689845e-06, "epoch": 2.1875, "percentage": 72.92, "elapsed_time": "0:11:13", "remaining_time": "0:04:10"} +{"current_steps": 1200, "total_steps": 1632, "loss": 0.098, "lr": 1.9888363722092376e-06, "epoch": 2.2058823529411766, "percentage": 73.53, "elapsed_time": "0:11:19", "remaining_time": "0:04:04"} +{"current_steps": 1210, "total_steps": 1632, "loss": 0.108, "lr": 1.9041101168978094e-06, "epoch": 2.224264705882353, "percentage": 74.14, "elapsed_time": "0:11:24", "remaining_time": "0:03:58"} +{"current_steps": 1220, "total_steps": 1632, "loss": 0.1039, "lr": 1.8208016667844153e-06, "epoch": 2.2426470588235294, "percentage": 74.75, "elapsed_time": "0:11:30", "remaining_time": "0:03:53"} +{"current_steps": 1230, "total_steps": 1632, "loss": 0.1132, "lr": 1.7389491741154373e-06, "epoch": 2.261029411764706, "percentage": 75.37, "elapsed_time": "0:11:35", "remaining_time": "0:03:47"} +{"current_steps": 1240, "total_steps": 1632, "loss": 0.0999, "lr": 1.6585901243616044e-06, "epoch": 2.2794117647058822, "percentage": 75.98, "elapsed_time": "0:11:41", "remaining_time": "0:03:41"} +{"current_steps": 1250, "total_steps": 1632, "loss": 0.1059, "lr": 1.5797613190509908e-06, "epoch": 2.297794117647059, "percentage": 76.59, "elapsed_time": "0:11:46", "remaining_time": "0:03:35"} +{"current_steps": 1260, "total_steps": 1632, "loss": 0.1186, "lr": 1.502498858915254e-06, "epoch": 2.3161764705882355, "percentage": 77.21, "elapsed_time": "0:11:51", "remaining_time": "0:03:30"} +{"current_steps": 1270, "total_steps": 1632, "loss": 0.1018, "lr": 1.4268381273568232e-06, "epoch": 2.3345588235294117, "percentage": 77.82, "elapsed_time": "0:11:57", "remaining_time": "0:03:24"} +{"current_steps": 1280, "total_steps": 1632, "loss": 0.0953, "lr": 1.352813774244565e-06, "epoch": 2.3529411764705883, "percentage": 78.43, "elapsed_time": "0:12:02", "remaining_time": "0:03:18"} +{"current_steps": 1290, "total_steps": 1632, "loss": 0.1211, "lr": 1.2804597000454217e-06, "epoch": 2.3713235294117645, "percentage": 79.04, "elapsed_time": "0:12:08", "remaining_time": "0:03:13"} +{"current_steps": 1300, "total_steps": 1632, "loss": 0.1821, "lr": 1.2098090402992085e-06, "epoch": 2.389705882352941, "percentage": 79.66, "elapsed_time": "0:12:13", "remaining_time": "0:03:07"} +{"current_steps": 1310, "total_steps": 1632, "loss": 0.1263, "lr": 1.1408941504437533e-06, "epoch": 2.4080882352941178, "percentage": 80.27, "elapsed_time": "0:12:18", "remaining_time": "0:03:01"} +{"current_steps": 1320, "total_steps": 1632, "loss": 0.0792, "lr": 1.0737465909972778e-06, "epoch": 2.426470588235294, "percentage": 80.88, "elapsed_time": "0:12:24", "remaining_time": "0:02:55"} +{"current_steps": 1330, "total_steps": 1632, "loss": 0.1395, "lr": 1.0083971131048158e-06, "epoch": 2.4448529411764706, "percentage": 81.5, "elapsed_time": "0:12:29", "remaining_time": "0:02:50"} +{"current_steps": 1340, "total_steps": 1632, "loss": 0.1168, "lr": 9.448756444553226e-07, "epoch": 2.463235294117647, "percentage": 82.11, "elapsed_time": "0:12:35", "remaining_time": "0:02:44"} +{"current_steps": 1350, "total_steps": 1632, "loss": 0.0876, "lr": 8.832112755758598e-07, "epoch": 2.4816176470588234, "percentage": 82.72, "elapsed_time": "0:12:40", "remaining_time": "0:02:38"} +{"current_steps": 1360, "total_steps": 1632, "loss": 0.1019, "lr": 8.234322465092049e-07, "epoch": 2.5, "percentage": 83.33, "elapsed_time": "0:12:46", "remaining_time": "0:02:33"} +{"current_steps": 1370, "total_steps": 1632, "loss": 0.1377, "lr": 7.655659338809329e-07, "epoch": 2.5183823529411766, "percentage": 83.95, "elapsed_time": "0:12:51", "remaining_time": "0:02:27"} +{"current_steps": 1380, "total_steps": 1632, "loss": 0.0879, "lr": 7.09638838361908e-07, "epoch": 2.536764705882353, "percentage": 84.56, "elapsed_time": "0:12:56", "remaining_time": "0:02:21"} +{"current_steps": 1390, "total_steps": 1632, "loss": 0.0958, "lr": 6.556765725319525e-07, "epoch": 2.5551470588235294, "percentage": 85.17, "elapsed_time": "0:13:02", "remaining_time": "0:02:16"} +{"current_steps": 1400, "total_steps": 1632, "loss": 0.0994, "lr": 6.037038491501978e-07, "epoch": 2.5735294117647056, "percentage": 85.78, "elapsed_time": "0:13:07", "remaining_time": "0:02:10"} +{"current_steps": 1410, "total_steps": 1632, "loss": 0.0818, "lr": 5.53744469837551e-07, "epoch": 2.5919117647058822, "percentage": 86.4, "elapsed_time": "0:13:13", "remaining_time": "0:02:04"} +{"current_steps": 1420, "total_steps": 1632, "loss": 0.1018, "lr": 5.058213141764151e-07, "epoch": 2.610294117647059, "percentage": 87.01, "elapsed_time": "0:13:18", "remaining_time": "0:01:59"} +{"current_steps": 1430, "total_steps": 1632, "loss": 0.0874, "lr": 4.599563292326592e-07, "epoch": 2.6286764705882355, "percentage": 87.62, "elapsed_time": "0:13:23", "remaining_time": "0:01:53"} +{"current_steps": 1440, "total_steps": 1632, "loss": 0.1395, "lr": 4.1617051950467613e-07, "epoch": 2.6470588235294117, "percentage": 88.24, "elapsed_time": "0:13:29", "remaining_time": "0:01:47"} +{"current_steps": 1450, "total_steps": 1632, "loss": 0.1316, "lr": 3.744839373040682e-07, "epoch": 2.6654411764705883, "percentage": 88.85, "elapsed_time": "0:13:34", "remaining_time": "0:01:42"} +{"current_steps": 1460, "total_steps": 1632, "loss": 0.1149, "lr": 3.3491567357242736e-07, "epoch": 2.6838235294117645, "percentage": 89.46, "elapsed_time": "0:13:40", "remaining_time": "0:01:36"} +{"current_steps": 1470, "total_steps": 1632, "loss": 0.0907, "lr": 2.9748384913837525e-07, "epoch": 2.702205882352941, "percentage": 90.07, "elapsed_time": "0:13:45", "remaining_time": "0:01:30"} +{"current_steps": 1480, "total_steps": 1632, "loss": 0.1253, "lr": 2.6220560641887385e-07, "epoch": 2.7205882352941178, "percentage": 90.69, "elapsed_time": "0:13:50", "remaining_time": "0:01:25"} +{"current_steps": 1490, "total_steps": 1632, "loss": 0.098, "lr": 2.2909710156863275e-07, "epoch": 2.7389705882352944, "percentage": 91.3, "elapsed_time": "0:13:56", "remaining_time": "0:01:19"} +{"current_steps": 1500, "total_steps": 1632, "loss": 0.1071, "lr": 1.981734970811644e-07, "epoch": 2.7573529411764706, "percentage": 91.91, "elapsed_time": "0:14:01", "remaining_time": "0:01:14"} +{"current_steps": 1510, "total_steps": 1632, "loss": 0.097, "lr": 1.6944895484492075e-07, "epoch": 2.775735294117647, "percentage": 92.52, "elapsed_time": "0:14:21", "remaining_time": "0:01:09"} +{"current_steps": 1520, "total_steps": 1632, "loss": 0.0984, "lr": 1.429366296576623e-07, "epoch": 2.7941176470588234, "percentage": 93.14, "elapsed_time": "0:14:26", "remaining_time": "0:01:03"} +{"current_steps": 1530, "total_steps": 1632, "loss": 0.0858, "lr": 1.1864866320203116e-07, "epoch": 2.8125, "percentage": 93.75, "elapsed_time": "0:14:32", "remaining_time": "0:00:58"} +{"current_steps": 1540, "total_steps": 1632, "loss": 0.1211, "lr": 9.659617848510883e-08, "epoch": 2.8308823529411766, "percentage": 94.36, "elapsed_time": "0:14:37", "remaining_time": "0:00:52"} +{"current_steps": 1550, "total_steps": 1632, "loss": 0.1214, "lr": 7.678927474447817e-08, "epoch": 2.849264705882353, "percentage": 94.98, "elapsed_time": "0:14:43", "remaining_time": "0:00:46"} +{"current_steps": 1560, "total_steps": 1632, "loss": 0.0839, "lr": 5.9237022823140924e-08, "epoch": 2.8676470588235294, "percentage": 95.59, "elapsed_time": "0:14:48", "remaining_time": "0:00:41"} +{"current_steps": 1570, "total_steps": 1632, "loss": 0.1084, "lr": 4.394746101540115e-08, "epoch": 2.8860294117647056, "percentage": 96.2, "elapsed_time": "0:14:54", "remaining_time": "0:00:35"} +{"current_steps": 1580, "total_steps": 1632, "loss": 0.109, "lr": 3.092759138561607e-08, "epoch": 2.9044117647058822, "percentage": 96.81, "elapsed_time": "0:14:59", "remaining_time": "0:00:29"} +{"current_steps": 1590, "total_steps": 1632, "loss": 0.0956, "lr": 2.0183376561507263e-08, "epoch": 2.922794117647059, "percentage": 97.43, "elapsed_time": "0:15:04", "remaining_time": "0:00:23"} +{"current_steps": 1600, "total_steps": 1632, "loss": 0.119, "lr": 1.171973700349216e-08, "epoch": 2.9411764705882355, "percentage": 98.04, "elapsed_time": "0:15:10", "remaining_time": "0:00:18"} +{"current_steps": 1610, "total_steps": 1632, "loss": 0.1018, "lr": 5.540548751292174e-09, "epoch": 2.9595588235294117, "percentage": 98.65, "elapsed_time": "0:15:15", "remaining_time": "0:00:12"} +{"current_steps": 1620, "total_steps": 1632, "loss": 0.0922, "lr": 1.6486416488459279e-09, "epoch": 2.9779411764705883, "percentage": 99.26, "elapsed_time": "0:15:21", "remaining_time": "0:00:06"} +{"current_steps": 1630, "total_steps": 1632, "loss": 0.0803, "lr": 4.579804834703438e-11, "epoch": 2.9963235294117645, "percentage": 99.88, "elapsed_time": "0:15:26", "remaining_time": "0:00:01"} +{"current_steps": 1632, "total_steps": 1632, "epoch": 3.0, "percentage": 100.0, "elapsed_time": "0:15:43", "remaining_time": "0:00:00"} diff --git a/trainer_state.json b/trainer_state.json new file mode 100644 index 0000000..b558657 --- /dev/null +++ b/trainer_state.json @@ -0,0 +1,1183 @@ +{ + "best_metric": null, + "best_model_checkpoint": null, + "epoch": 3.0, + "eval_steps": 500, + "global_step": 1632, + "is_hyper_param_search": false, + "is_local_process_zero": true, + "is_world_process_zero": true, + "log_history": [ + { + "epoch": 0.01838235294117647, + "grad_norm": 24.461347652326168, + "learning_rate": 6.097560975609757e-07, + "loss": 1.2036, + "step": 10 + }, + { + "epoch": 0.03676470588235294, + "grad_norm": 17.308880580961944, + "learning_rate": 1.2195121951219514e-06, + "loss": 1.2064, + "step": 20 + }, + { + "epoch": 0.05514705882352941, + "grad_norm": 29.601720546719697, + "learning_rate": 1.8292682926829268e-06, + "loss": 1.2741, + "step": 30 + }, + { + "epoch": 0.07352941176470588, + "grad_norm": 14.115818236245202, + "learning_rate": 2.4390243902439027e-06, + "loss": 0.7596, + "step": 40 + }, + { + "epoch": 0.09191176470588236, + "grad_norm": 21.73939509164672, + "learning_rate": 3.0487804878048782e-06, + "loss": 0.6171, + "step": 50 + }, + { + "epoch": 0.11029411764705882, + "grad_norm": 16.96116387460838, + "learning_rate": 3.6585365853658537e-06, + "loss": 0.794, + "step": 60 + }, + { + "epoch": 0.12867647058823528, + "grad_norm": 15.372652400517632, + "learning_rate": 4.268292682926829e-06, + "loss": 0.6233, + "step": 70 + }, + { + "epoch": 0.14705882352941177, + "grad_norm": 15.062285237489078, + "learning_rate": 4.8780487804878055e-06, + "loss": 0.5441, + "step": 80 + }, + { + "epoch": 0.16544117647058823, + "grad_norm": 18.632304280702545, + "learning_rate": 5.487804878048781e-06, + "loss": 0.5784, + "step": 90 + }, + { + "epoch": 0.18382352941176472, + "grad_norm": 13.945519044585177, + "learning_rate": 6.0975609756097564e-06, + "loss": 0.4844, + "step": 100 + }, + { + "epoch": 0.20220588235294118, + "grad_norm": 6.9751627817275, + "learning_rate": 6.707317073170733e-06, + "loss": 0.6535, + "step": 110 + }, + { + "epoch": 0.22058823529411764, + "grad_norm": 25.188175477401735, + "learning_rate": 7.317073170731707e-06, + "loss": 0.6897, + "step": 120 + }, + { + "epoch": 0.23897058823529413, + "grad_norm": 14.572936912172068, + "learning_rate": 7.926829268292685e-06, + "loss": 0.4217, + "step": 130 + }, + { + "epoch": 0.25735294117647056, + "grad_norm": 14.934836192557746, + "learning_rate": 8.536585365853658e-06, + "loss": 0.5868, + "step": 140 + }, + { + "epoch": 0.2757352941176471, + "grad_norm": 11.450309910668999, + "learning_rate": 9.146341463414635e-06, + "loss": 0.53, + "step": 150 + }, + { + "epoch": 0.29411764705882354, + "grad_norm": 21.677329690439954, + "learning_rate": 9.756097560975611e-06, + "loss": 0.5538, + "step": 160 + }, + { + "epoch": 0.3125, + "grad_norm": 13.221017712308962, + "learning_rate": 9.999587822598768e-06, + "loss": 0.4616, + "step": 170 + }, + { + "epoch": 0.33088235294117646, + "grad_norm": 17.10580370679984, + "learning_rate": 9.997069206794246e-06, + "loss": 0.5633, + "step": 180 + }, + { + "epoch": 0.3492647058823529, + "grad_norm": 12.4225156252439, + "learning_rate": 9.992262114666653e-06, + "loss": 0.6035, + "step": 190 + }, + { + "epoch": 0.36764705882352944, + "grad_norm": 9.012606555821149, + "learning_rate": 9.985168747689706e-06, + "loss": 0.5822, + "step": 200 + }, + { + "epoch": 0.3860294117647059, + "grad_norm": 7.876601539287651, + "learning_rate": 9.975792354368019e-06, + "loss": 0.3755, + "step": 210 + }, + { + "epoch": 0.40441176470588236, + "grad_norm": 6.10882571982772, + "learning_rate": 9.964137228749409e-06, + "loss": 0.4914, + "step": 220 + }, + { + "epoch": 0.4227941176470588, + "grad_norm": 6.537974128609375, + "learning_rate": 9.950208708458371e-06, + "loss": 0.4604, + "step": 230 + }, + { + "epoch": 0.4411764705882353, + "grad_norm": 7.108775542718406, + "learning_rate": 9.934013172251654e-06, + "loss": 0.5029, + "step": 240 + }, + { + "epoch": 0.45955882352941174, + "grad_norm": 13.652621643454376, + "learning_rate": 9.915558037097003e-06, + "loss": 0.5404, + "step": 250 + }, + { + "epoch": 0.47794117647058826, + "grad_norm": 9.685271320615122, + "learning_rate": 9.894851754776473e-06, + "loss": 0.3555, + "step": 260 + }, + { + "epoch": 0.4963235294117647, + "grad_norm": 10.504810722270348, + "learning_rate": 9.871903808015812e-06, + "loss": 0.4092, + "step": 270 + }, + { + "epoch": 0.5147058823529411, + "grad_norm": 12.557835687927717, + "learning_rate": 9.846724706141718e-06, + "loss": 0.4489, + "step": 280 + }, + { + "epoch": 0.5330882352941176, + "grad_norm": 19.32420837447236, + "learning_rate": 9.819325980268946e-06, + "loss": 0.5297, + "step": 290 + }, + { + "epoch": 0.5514705882352942, + "grad_norm": 12.56688753149935, + "learning_rate": 9.789720178019483e-06, + "loss": 0.4301, + "step": 300 + }, + { + "epoch": 0.5698529411764706, + "grad_norm": 8.769304725602016, + "learning_rate": 9.757920857776188e-06, + "loss": 0.5499, + "step": 310 + }, + { + "epoch": 0.5882352941176471, + "grad_norm": 6.742725850222398, + "learning_rate": 9.723942582473545e-06, + "loss": 0.3723, + "step": 320 + }, + { + "epoch": 0.6066176470588235, + "grad_norm": 32.81061857477797, + "learning_rate": 9.687800912928362e-06, + "loss": 0.6103, + "step": 330 + }, + { + "epoch": 0.625, + "grad_norm": 7.250155807815409, + "learning_rate": 9.649512400713497e-06, + "loss": 0.5561, + "step": 340 + }, + { + "epoch": 0.6433823529411765, + "grad_norm": 8.449295772111478, + "learning_rate": 9.609094580577825e-06, + "loss": 0.4384, + "step": 350 + }, + { + "epoch": 0.6617647058823529, + "grad_norm": 8.965901929446623, + "learning_rate": 9.566565962415958e-06, + "loss": 0.492, + "step": 360 + }, + { + "epoch": 0.6801470588235294, + "grad_norm": 10.783592668291883, + "learning_rate": 9.521946022791402e-06, + "loss": 0.5596, + "step": 370 + }, + { + "epoch": 0.6985294117647058, + "grad_norm": 6.524203722153494, + "learning_rate": 9.475255196016972e-06, + "loss": 0.4657, + "step": 380 + }, + { + "epoch": 0.7169117647058824, + "grad_norm": 6.844495651307719, + "learning_rate": 9.426514864796648e-06, + "loss": 0.547, + "step": 390 + }, + { + "epoch": 0.7352941176470589, + "grad_norm": 7.093995062440304, + "learning_rate": 9.375747350433044e-06, + "loss": 0.4821, + "step": 400 + }, + { + "epoch": 0.7536764705882353, + "grad_norm": 13.008619062718342, + "learning_rate": 9.322975902605082e-06, + "loss": 0.3627, + "step": 410 + }, + { + "epoch": 0.7720588235294118, + "grad_norm": 7.658314017103231, + "learning_rate": 9.268224688720475e-06, + "loss": 0.2779, + "step": 420 + }, + { + "epoch": 0.7904411764705882, + "grad_norm": 9.961772688539515, + "learning_rate": 9.211518782847932e-06, + "loss": 0.684, + "step": 430 + }, + { + "epoch": 0.8088235294117647, + "grad_norm": 5.184448250813704, + "learning_rate": 9.152884154234147e-06, + "loss": 0.3829, + "step": 440 + }, + { + "epoch": 0.8272058823529411, + "grad_norm": 16.899974205034713, + "learning_rate": 9.092347655410818e-06, + "loss": 0.409, + "step": 450 + }, + { + "epoch": 0.8455882352941176, + "grad_norm": 9.123647569900998, + "learning_rate": 9.029937009897176e-06, + "loss": 0.4189, + "step": 460 + }, + { + "epoch": 0.8639705882352942, + "grad_norm": 14.941661911314725, + "learning_rate": 8.96568079950361e-06, + "loss": 0.4846, + "step": 470 + }, + { + "epoch": 0.8823529411764706, + "grad_norm": 6.576553080941865, + "learning_rate": 8.899608451242233e-06, + "loss": 0.4869, + "step": 480 + }, + { + "epoch": 0.9007352941176471, + "grad_norm": 9.989273508498824, + "learning_rate": 8.83175022385039e-06, + "loss": 0.368, + "step": 490 + }, + { + "epoch": 0.9191176470588235, + "grad_norm": 5.168977011450082, + "learning_rate": 8.762137193933241e-06, + "loss": 0.3489, + "step": 500 + }, + { + "epoch": 0.9375, + "grad_norm": 9.716727823960543, + "learning_rate": 8.690801241731818e-06, + "loss": 0.4095, + "step": 510 + }, + { + "epoch": 0.9558823529411765, + "grad_norm": 9.305144213419574, + "learning_rate": 8.617775036523014e-06, + "loss": 0.4641, + "step": 520 + }, + { + "epoch": 0.9742647058823529, + "grad_norm": 7.973224876288721, + "learning_rate": 8.543092021658259e-06, + "loss": 0.3311, + "step": 530 + }, + { + "epoch": 0.9926470588235294, + "grad_norm": 7.223605900810482, + "learning_rate": 8.466786399247663e-06, + "loss": 0.3561, + "step": 540 + }, + { + "epoch": 1.0110294117647058, + "grad_norm": 7.955108957559817, + "learning_rate": 8.388893114496706e-06, + "loss": 0.3474, + "step": 550 + }, + { + "epoch": 1.0294117647058822, + "grad_norm": 8.495071396849232, + "learning_rate": 8.309447839702583e-06, + "loss": 0.2188, + "step": 560 + }, + { + "epoch": 1.0477941176470589, + "grad_norm": 6.043931760485918, + "learning_rate": 8.228486957917608e-06, + "loss": 0.2178, + "step": 570 + }, + { + "epoch": 1.0661764705882353, + "grad_norm": 6.438867996730345, + "learning_rate": 8.146047546287077e-06, + "loss": 0.2783, + "step": 580 + }, + { + "epoch": 1.0845588235294117, + "grad_norm": 3.6977346854366107, + "learning_rate": 8.062167359069301e-06, + "loss": 0.2463, + "step": 590 + }, + { + "epoch": 1.1029411764705883, + "grad_norm": 6.660661443962452, + "learning_rate": 7.97688481034551e-06, + "loss": 0.2634, + "step": 600 + }, + { + "epoch": 1.1213235294117647, + "grad_norm": 9.365314735040004, + "learning_rate": 7.8902389564276e-06, + "loss": 0.294, + "step": 610 + }, + { + "epoch": 1.1397058823529411, + "grad_norm": 6.992327039164838, + "learning_rate": 7.802269477971771e-06, + "loss": 0.273, + "step": 620 + }, + { + "epoch": 1.1580882352941178, + "grad_norm": 16.22021668710731, + "learning_rate": 7.713016661806213e-06, + "loss": 0.2975, + "step": 630 + }, + { + "epoch": 1.1764705882352942, + "grad_norm": 5.1105720664815, + "learning_rate": 7.622521382481208e-06, + "loss": 0.2831, + "step": 640 + }, + { + "epoch": 1.1948529411764706, + "grad_norm": 18.745915660915887, + "learning_rate": 7.530825083550073e-06, + "loss": 0.3548, + "step": 650 + }, + { + "epoch": 1.213235294117647, + "grad_norm": 10.329160246000239, + "learning_rate": 7.437969758589508e-06, + "loss": 0.2454, + "step": 660 + }, + { + "epoch": 1.2316176470588236, + "grad_norm": 6.408214730217885, + "learning_rate": 7.343997931968068e-06, + "loss": 0.2694, + "step": 670 + }, + { + "epoch": 1.25, + "grad_norm": 7.486293079129486, + "learning_rate": 7.248952639371543e-06, + "loss": 0.3091, + "step": 680 + }, + { + "epoch": 1.2683823529411764, + "grad_norm": 5.956954386852354, + "learning_rate": 7.152877408094179e-06, + "loss": 0.2305, + "step": 690 + }, + { + "epoch": 1.2867647058823528, + "grad_norm": 8.065888848768314, + "learning_rate": 7.055816237104753e-06, + "loss": 0.3002, + "step": 700 + }, + { + "epoch": 1.3051470588235294, + "grad_norm": 3.322320099042565, + "learning_rate": 6.957813576896647e-06, + "loss": 0.2868, + "step": 710 + }, + { + "epoch": 1.3235294117647058, + "grad_norm": 11.20812027560389, + "learning_rate": 6.858914309131131e-06, + "loss": 0.2342, + "step": 720 + }, + { + "epoch": 1.3419117647058822, + "grad_norm": 11.126428155503467, + "learning_rate": 6.7591637260831925e-06, + "loss": 0.2143, + "step": 730 + }, + { + "epoch": 1.3602941176470589, + "grad_norm": 6.169632411834191, + "learning_rate": 6.6586075098993196e-06, + "loss": 0.3071, + "step": 740 + }, + { + "epoch": 1.3786764705882353, + "grad_norm": 8.952863279335729, + "learning_rate": 6.557291711676738e-06, + "loss": 0.2977, + "step": 750 + }, + { + "epoch": 1.3970588235294117, + "grad_norm": 4.407249523532787, + "learning_rate": 6.455262730373673e-06, + "loss": 0.2326, + "step": 760 + }, + { + "epoch": 1.4154411764705883, + "grad_norm": 11.807741453984933, + "learning_rate": 6.352567291560319e-06, + "loss": 0.3158, + "step": 770 + }, + { + "epoch": 1.4338235294117647, + "grad_norm": 13.900682242664102, + "learning_rate": 6.249252426020217e-06, + "loss": 0.3301, + "step": 780 + }, + { + "epoch": 1.4522058823529411, + "grad_norm": 10.2905193894227, + "learning_rate": 6.145365448211866e-06, + "loss": 0.2937, + "step": 790 + }, + { + "epoch": 1.4705882352941178, + "grad_norm": 5.654029084586675, + "learning_rate": 6.040953934600425e-06, + "loss": 0.2229, + "step": 800 + }, + { + "epoch": 1.4889705882352942, + "grad_norm": 7.884909374384519, + "learning_rate": 5.936065701869404e-06, + "loss": 0.3169, + "step": 810 + }, + { + "epoch": 1.5073529411764706, + "grad_norm": 4.885582156638979, + "learning_rate": 5.830748785022369e-06, + "loss": 0.257, + "step": 820 + }, + { + "epoch": 1.5257352941176472, + "grad_norm": 10.069197658253753, + "learning_rate": 5.725051415384657e-06, + "loss": 0.2766, + "step": 830 + }, + { + "epoch": 1.5441176470588234, + "grad_norm": 8.25370914927739, + "learning_rate": 5.619021998515165e-06, + "loss": 0.2385, + "step": 840 + }, + { + "epoch": 1.5625, + "grad_norm": 4.810424736549512, + "learning_rate": 5.51270909203838e-06, + "loss": 0.2844, + "step": 850 + }, + { + "epoch": 1.5808823529411766, + "grad_norm": 10.0208212747629, + "learning_rate": 5.40616138340673e-06, + "loss": 0.2924, + "step": 860 + }, + { + "epoch": 1.5992647058823528, + "grad_norm": 13.748183320384355, + "learning_rate": 5.299427667603516e-06, + "loss": 0.2826, + "step": 870 + }, + { + "epoch": 1.6176470588235294, + "grad_norm": 2.892654980772666, + "learning_rate": 5.1925568247965686e-06, + "loss": 0.2106, + "step": 880 + }, + { + "epoch": 1.6360294117647058, + "grad_norm": 4.016652056640837, + "learning_rate": 5.085597797952906e-06, + "loss": 0.3306, + "step": 890 + }, + { + "epoch": 1.6544117647058822, + "grad_norm": 4.348213620564617, + "learning_rate": 4.97859957042464e-06, + "loss": 0.2227, + "step": 900 + }, + { + "epoch": 1.6727941176470589, + "grad_norm": 8.314405849156318, + "learning_rate": 4.871611143516367e-06, + "loss": 0.2275, + "step": 910 + }, + { + "epoch": 1.6911764705882353, + "grad_norm": 3.1251931465193747, + "learning_rate": 4.7646815140443625e-06, + "loss": 0.2966, + "step": 920 + }, + { + "epoch": 1.7095588235294117, + "grad_norm": 2.9353246185637287, + "learning_rate": 4.657859651897807e-06, + "loss": 0.228, + "step": 930 + }, + { + "epoch": 1.7279411764705883, + "grad_norm": 4.988890457346432, + "learning_rate": 4.551194477612351e-06, + "loss": 0.2694, + "step": 940 + }, + { + "epoch": 1.7463235294117647, + "grad_norm": 2.1319176010435252, + "learning_rate": 4.444734839966306e-06, + "loss": 0.1944, + "step": 950 + }, + { + "epoch": 1.7647058823529411, + "grad_norm": 4.43095941592791, + "learning_rate": 4.338529493609647e-06, + "loss": 0.2479, + "step": 960 + }, + { + "epoch": 1.7830882352941178, + "grad_norm": 4.620277796996259, + "learning_rate": 4.232627076736181e-06, + "loss": 0.1819, + "step": 970 + }, + { + "epoch": 1.8014705882352942, + "grad_norm": 9.324548402262511, + "learning_rate": 4.127076088809e-06, + "loss": 0.2514, + "step": 980 + }, + { + "epoch": 1.8198529411764706, + "grad_norm": 9.685553327436127, + "learning_rate": 4.021924868349493e-06, + "loss": 0.24, + "step": 990 + }, + { + "epoch": 1.8382352941176472, + "grad_norm": 4.557597261535076, + "learning_rate": 3.9172215708000655e-06, + "loss": 0.2477, + "step": 1000 + }, + { + "epoch": 1.8566176470588234, + "grad_norm": 7.730856763833525, + "learning_rate": 3.8130141464706806e-06, + "loss": 0.2207, + "step": 1010 + }, + { + "epoch": 1.875, + "grad_norm": 6.292936274037211, + "learning_rate": 3.709350318579371e-06, + "loss": 0.2634, + "step": 1020 + }, + { + "epoch": 1.8933823529411766, + "grad_norm": 3.506287081857162, + "learning_rate": 3.606277561396726e-06, + "loss": 0.236, + "step": 1030 + }, + { + "epoch": 1.9117647058823528, + "grad_norm": 5.326613968704466, + "learning_rate": 3.503843078504405e-06, + "loss": 0.2132, + "step": 1040 + }, + { + "epoch": 1.9301470588235294, + "grad_norm": 4.120806515275935, + "learning_rate": 3.4020937811776154e-06, + "loss": 0.2088, + "step": 1050 + }, + { + "epoch": 1.9485294117647058, + "grad_norm": 12.349465603173341, + "learning_rate": 3.301076266901435e-06, + "loss": 0.2413, + "step": 1060 + }, + { + "epoch": 1.9669117647058822, + "grad_norm": 9.063898128342878, + "learning_rate": 3.2008367980308737e-06, + "loss": 0.2271, + "step": 1070 + }, + { + "epoch": 1.9852941176470589, + "grad_norm": 7.508365526935029, + "learning_rate": 3.1014212806043794e-06, + "loss": 0.2285, + "step": 1080 + }, + { + "epoch": 2.0036764705882355, + "grad_norm": 4.625627595178375, + "learning_rate": 3.0028752433205475e-06, + "loss": 0.1852, + "step": 1090 + }, + { + "epoch": 2.0220588235294117, + "grad_norm": 4.4357477825464935, + "learning_rate": 2.9052438166876305e-06, + "loss": 0.1519, + "step": 1100 + }, + { + "epoch": 2.0404411764705883, + "grad_norm": 7.270033498844353, + "learning_rate": 2.808571712355389e-06, + "loss": 0.1601, + "step": 1110 + }, + { + "epoch": 2.0588235294117645, + "grad_norm": 5.430788007652682, + "learning_rate": 2.7129032026388046e-06, + "loss": 0.1264, + "step": 1120 + }, + { + "epoch": 2.077205882352941, + "grad_norm": 5.229399168057504, + "learning_rate": 2.618282100242935e-06, + "loss": 0.137, + "step": 1130 + }, + { + "epoch": 2.0955882352941178, + "grad_norm": 3.2530670171730063, + "learning_rate": 2.5247517381983137e-06, + "loss": 0.1085, + "step": 1140 + }, + { + "epoch": 2.113970588235294, + "grad_norm": 6.719943927301841, + "learning_rate": 2.4323549500159806e-06, + "loss": 0.1258, + "step": 1150 + }, + { + "epoch": 2.1323529411764706, + "grad_norm": 3.3488917523348367, + "learning_rate": 2.3411340500712833e-06, + "loss": 0.1046, + "step": 1160 + }, + { + "epoch": 2.150735294117647, + "grad_norm": 4.657370433299325, + "learning_rate": 2.251130814225449e-06, + "loss": 0.092, + "step": 1170 + }, + { + "epoch": 2.1691176470588234, + "grad_norm": 2.9670688472212303, + "learning_rate": 2.16238646069373e-06, + "loss": 0.0868, + "step": 1180 + }, + { + "epoch": 2.1875, + "grad_norm": 8.131857870303, + "learning_rate": 2.0749416311689845e-06, + "loss": 0.1059, + "step": 1190 + }, + { + "epoch": 2.2058823529411766, + "grad_norm": 10.154475227479216, + "learning_rate": 1.9888363722092376e-06, + "loss": 0.098, + "step": 1200 + }, + { + "epoch": 2.224264705882353, + "grad_norm": 2.0050786002974026, + "learning_rate": 1.9041101168978094e-06, + "loss": 0.108, + "step": 1210 + }, + { + "epoch": 2.2426470588235294, + "grad_norm": 8.439945942355502, + "learning_rate": 1.8208016667844153e-06, + "loss": 0.1039, + "step": 1220 + }, + { + "epoch": 2.261029411764706, + "grad_norm": 8.60486564105295, + "learning_rate": 1.7389491741154373e-06, + "loss": 0.1132, + "step": 1230 + }, + { + "epoch": 2.2794117647058822, + "grad_norm": 4.696484712814838, + "learning_rate": 1.6585901243616044e-06, + "loss": 0.0999, + "step": 1240 + }, + { + "epoch": 2.297794117647059, + "grad_norm": 4.6231552830326255, + "learning_rate": 1.5797613190509908e-06, + "loss": 0.1059, + "step": 1250 + }, + { + "epoch": 2.3161764705882355, + "grad_norm": 3.6902436160334737, + "learning_rate": 1.502498858915254e-06, + "loss": 0.1186, + "step": 1260 + }, + { + "epoch": 2.3345588235294117, + "grad_norm": 2.5370814512282176, + "learning_rate": 1.4268381273568232e-06, + "loss": 0.1018, + "step": 1270 + }, + { + "epoch": 2.3529411764705883, + "grad_norm": 3.8657043800430584, + "learning_rate": 1.352813774244565e-06, + "loss": 0.0953, + "step": 1280 + }, + { + "epoch": 2.3713235294117645, + "grad_norm": 3.432166252044578, + "learning_rate": 1.2804597000454217e-06, + "loss": 0.1211, + "step": 1290 + }, + { + "epoch": 2.389705882352941, + "grad_norm": 4.3716222719550935, + "learning_rate": 1.2098090402992085e-06, + "loss": 0.1821, + "step": 1300 + }, + { + "epoch": 2.4080882352941178, + "grad_norm": 7.998384499842822, + "learning_rate": 1.1408941504437533e-06, + "loss": 0.1263, + "step": 1310 + }, + { + "epoch": 2.426470588235294, + "grad_norm": 3.850208203788365, + "learning_rate": 1.0737465909972778e-06, + "loss": 0.0792, + "step": 1320 + }, + { + "epoch": 2.4448529411764706, + "grad_norm": 3.688555564340551, + "learning_rate": 1.0083971131048158e-06, + "loss": 0.1395, + "step": 1330 + }, + { + "epoch": 2.463235294117647, + "grad_norm": 4.6455960796035, + "learning_rate": 9.448756444553226e-07, + "loss": 0.1168, + "step": 1340 + }, + { + "epoch": 2.4816176470588234, + "grad_norm": 4.203311959035869, + "learning_rate": 8.832112755758598e-07, + "loss": 0.0876, + "step": 1350 + }, + { + "epoch": 2.5, + "grad_norm": 3.3555040280656607, + "learning_rate": 8.234322465092049e-07, + "loss": 0.1019, + "step": 1360 + }, + { + "epoch": 2.5183823529411766, + "grad_norm": 4.650061051052002, + "learning_rate": 7.655659338809329e-07, + "loss": 0.1377, + "step": 1370 + }, + { + "epoch": 2.536764705882353, + "grad_norm": 6.813560936019147, + "learning_rate": 7.09638838361908e-07, + "loss": 0.0879, + "step": 1380 + }, + { + "epoch": 2.5551470588235294, + "grad_norm": 3.7280612376648845, + "learning_rate": 6.556765725319525e-07, + "loss": 0.0958, + "step": 1390 + }, + { + "epoch": 2.5735294117647056, + "grad_norm": 9.06780320870103, + "learning_rate": 6.037038491501978e-07, + "loss": 0.0994, + "step": 1400 + }, + { + "epoch": 2.5919117647058822, + "grad_norm": 3.786951767893351, + "learning_rate": 5.53744469837551e-07, + "loss": 0.0818, + "step": 1410 + }, + { + "epoch": 2.610294117647059, + "grad_norm": 6.614547209289121, + "learning_rate": 5.058213141764151e-07, + "loss": 0.1018, + "step": 1420 + }, + { + "epoch": 2.6286764705882355, + "grad_norm": 1.3227088771313298, + "learning_rate": 4.599563292326592e-07, + "loss": 0.0874, + "step": 1430 + }, + { + "epoch": 2.6470588235294117, + "grad_norm": 4.123067760097869, + "learning_rate": 4.1617051950467613e-07, + "loss": 0.1395, + "step": 1440 + }, + { + "epoch": 2.6654411764705883, + "grad_norm": 3.277587387385848, + "learning_rate": 3.744839373040682e-07, + "loss": 0.1316, + "step": 1450 + }, + { + "epoch": 2.6838235294117645, + "grad_norm": 7.242903909781894, + "learning_rate": 3.3491567357242736e-07, + "loss": 0.1149, + "step": 1460 + }, + { + "epoch": 2.702205882352941, + "grad_norm": 6.625461967024777, + "learning_rate": 2.9748384913837525e-07, + "loss": 0.0907, + "step": 1470 + }, + { + "epoch": 2.7205882352941178, + "grad_norm": 7.203659881581687, + "learning_rate": 2.6220560641887385e-07, + "loss": 0.1253, + "step": 1480 + }, + { + "epoch": 2.7389705882352944, + "grad_norm": 6.378763396607792, + "learning_rate": 2.2909710156863275e-07, + "loss": 0.098, + "step": 1490 + }, + { + "epoch": 2.7573529411764706, + "grad_norm": 7.337516899008145, + "learning_rate": 1.981734970811644e-07, + "loss": 0.1071, + "step": 1500 + }, + { + "epoch": 2.775735294117647, + "grad_norm": 3.1329621536642542, + "learning_rate": 1.6944895484492075e-07, + "loss": 0.097, + "step": 1510 + }, + { + "epoch": 2.7941176470588234, + "grad_norm": 4.118478339669222, + "learning_rate": 1.429366296576623e-07, + "loss": 0.0984, + "step": 1520 + }, + { + "epoch": 2.8125, + "grad_norm": 4.232819621818319, + "learning_rate": 1.1864866320203116e-07, + "loss": 0.0858, + "step": 1530 + }, + { + "epoch": 2.8308823529411766, + "grad_norm": 5.587393080677787, + "learning_rate": 9.659617848510883e-08, + "loss": 0.1211, + "step": 1540 + }, + { + "epoch": 2.849264705882353, + "grad_norm": 7.695362333030779, + "learning_rate": 7.678927474447817e-08, + "loss": 0.1214, + "step": 1550 + }, + { + "epoch": 2.8676470588235294, + "grad_norm": 5.960106493970138, + "learning_rate": 5.9237022823140924e-08, + "loss": 0.0839, + "step": 1560 + }, + { + "epoch": 2.8860294117647056, + "grad_norm": 3.1314860543234366, + "learning_rate": 4.394746101540115e-08, + "loss": 0.1084, + "step": 1570 + }, + { + "epoch": 2.9044117647058822, + "grad_norm": 4.547681508219823, + "learning_rate": 3.092759138561607e-08, + "loss": 0.109, + "step": 1580 + }, + { + "epoch": 2.922794117647059, + "grad_norm": 4.617590187379549, + "learning_rate": 2.0183376561507263e-08, + "loss": 0.0956, + "step": 1590 + }, + { + "epoch": 2.9411764705882355, + "grad_norm": 3.342902872290941, + "learning_rate": 1.171973700349216e-08, + "loss": 0.119, + "step": 1600 + }, + { + "epoch": 2.9595588235294117, + "grad_norm": 7.136250820241153, + "learning_rate": 5.540548751292174e-09, + "loss": 0.1018, + "step": 1610 + }, + { + "epoch": 2.9779411764705883, + "grad_norm": 6.138459039674928, + "learning_rate": 1.6486416488459279e-09, + "loss": 0.0922, + "step": 1620 + }, + { + "epoch": 2.9963235294117645, + "grad_norm": 3.150046185555739, + "learning_rate": 4.579804834703438e-11, + "loss": 0.0803, + "step": 1630 + }, + { + "epoch": 3.0, + "step": 1632, + "total_flos": 246796222464.0, + "train_loss": 0.3023774076490572, + "train_runtime": 943.8917, + "train_samples_per_second": 3.458, + "train_steps_per_second": 1.729 + } + ], + "logging_steps": 10, + "max_steps": 1632, + "num_input_tokens_seen": 0, + "num_train_epochs": 3, + "save_steps": 500, + "stateful_callbacks": { + "TrainerControl": { + "args": { + "should_epoch_stop": false, + "should_evaluate": false, + "should_log": false, + "should_save": true, + "should_training_stop": true + }, + "attributes": {} + } + }, + "total_flos": 246796222464.0, + "train_batch_size": 1, + "trial_name": null, + "trial_params": null +} diff --git a/training_args.bin b/training_args.bin new file mode 100644 index 0000000..10fbb2a --- /dev/null +++ b/training_args.bin @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:1f4bebf5c7141bddbed6a7feb4bf1a35ed3fbf020c7c4dc7ab21f6f30268f7e3 +size 7352 diff --git a/training_loss.png b/training_loss.png new file mode 100644 index 0000000000000000000000000000000000000000..27c49838a16a1b230410ac6240331dee7c1a1b41 GIT binary patch literal 45311 zcmd?Ri8qyB_%{9=GZ`}vAxaXVOqoe4AyWt$OJ$zt;Yh}kN`uIp%u^*Y&r%7YBbg~A z^F06V-RJvz-?e`0x7Payysgh?73ZAi+0WklzVGY4u4|tt9qscpR2)HGK)q@n(m&h4(lu4Km7z$VR?Ovr1E6p!VpDV;WI$Ac~u|IoG z&FG;J1<^NMSt822kIe-fw{~~M-JNX(;;!o*i>peRY|GHJol}S-@!3pvuQ^YDPM3rM z{*-b?Thiep;g1OmF)#c=SFRDepr)qQ^HmHxh~99T8V^6J%~Jng@N)Y}1%*Rp!$JO` z=5k(tjqe|ldw;Q&F}vk{rR2tPhmyGKm>OG*I>jCQjnB_W{V#}oTEBVh^l8RByp~<* z=TtcLP5A;9EPQ`GC9`OBDjQ#HXn`Ya9UFdsr<3O_i+!-cTR&syAp1V$!vr>P5meGk;Ef6X0uIN)A zl9lK?YiFpP#kjb*=rf)9{EosC^%rN{1<2^Q@5jfpu~Cz)%nfpOD6DgR`t<2ffTN)y zOLFj@FEx)MS65e8FMcW0UIs>Thm$f+$^PHSBlA% z>&tF@W|80DSuWpQ`^mt}+&e)~a+{!FiVoj3wORest0kYXmiFe&LDMp)W~IGFI?WVC zg}%ny3_r`9&j$r53S3U+`kN;4>A@j6G21U}1Fo%yI;TDQ-rl79-JTdxYEQ6+dzbE+ zZ|!Z*FOJ<4wf^+vc=_!6pO$4m7l-%vSf87@Q7Udt@uLrV4h7GAFYsAzm+s2C%!B68 ze|^sJ&H8)0ULjcTD8^$%SkT_)%~!8pjg%71?cezKObmQ*M>pHs> zO*U*Bmg(u~Ad9kqO*d-xQzREJUW_^96}LSa!6SC#6VrXJGkS%oK`_7ZQjQ!;%gc!h zclBrLu?wqX9pdL>cNakAqLTyStnIy}6Q=5_Cs9t8rs-oH$79Y-^cy zGu43aWYTKTwM+3z!HSRL;uawoJ_k$f5AW~t_^tj4J9m#o9DC3IlE`TiZD0AdJ{t`G zHA(I)JxS4V9u<1Az%7pe7}?a%GSPP?B8G)#lo-0ZOFbzouap#vUo|&usKrY2CU32; z>F4h8QV>Zw58c1|*7mTXBDa;5Rr&7(`-u_0#cQoc3odPL%@i#*91!J|lw_7oqGh!R z5Qi;bI6HKJMOgXy$!n>E8FAQZ4*lWh=3&T8k@SscE(dU-ybAz4_tU8hv%KyIk zOwZ09wXon~7O>d7FGnbpXc zm}VO3fe}fX_wJM0u%9j~ZocYY&HU66tF$Mmk`zl_z*)?Wgm3^l;tN51%}_D>q-oNJ>g--VrBs^n5ILv&G&LE2O5T*4FVC zH11z{i=KIn*aWID}MbWJ-qjBSeVt9cyZ&}pg`sE zCpE#IBHge)MMfLMX8Ty>&eCVst(DtPo;~~STLhT}N&tz($u|3<>TvBOS(PHfc>2AQ z4ST!Wc?zx59@f7;J&l+5eNz?Wvb(h^<1&KZnfw|~!#OcL&MD=v;1_5^a5-sF!vz5u zYF

V#4n~=t($y{5T~nU`|d>`Sj~V9X&n0@eLLcle@57IQ$6*{|BaToQD;!-?-ts zE1WFvd(h~bCv!tX!^4LU@h?u_{8W2P-oo@}{E=@dZNmY}G+Qgv#MS1pkND49!wh2h z^&x+{!3xh%*vgRe^0clbY6`$=`|mcIW$GP1c~X0?zo*H%WF-1TA-?NY(=!p%KdY-* z-y@joyyp7ti<-MK&M*FYZZQVo9=E>~85{dNWf}JU_)Jl4%gS^&11syX{TnMSoX#V; zd4&xHWkXbXz0uA0SjWRTo$6p+**Yzn=oD7y(=##_|Gw?ugF*q}D*O6!%7dbst=zAK zuZhxhRAEGrVg)rcG#0*H5*__+>fHR^@#n;3)$&)lc*Q{3miz3X@T};=`mZ%rJUk@y z^z~;ppAxybxuNJuO;0B}ZTm&p!9iGYbAr*#v-gTIq@ltOzd5kFhOh(THZ9a10cQi)KKf-Qf(cP#()%oHonJ$31sa6LQ=%6UvoOd|w~;O4Zm5n?_IBOI+RBXzj@ z?5D{dJ$mG`v)Gzun726OKX3K7uVe$JMa;U1!pwiRG%`B6;meEDu8=v$mp+T0_wn(G zAy8khg8EqpQ|i*KC4Cs;^u>!8K9fn_Vo+7NL9O{z_vajAn>W8{p=vqX zFYzHTe8$TPt4x0Db0V>(Zy<>uIdbHqz0>EsPt?CYU_o zS})iWK8ww)i(gK6jKEq#7DV~97;>Gj<7=g-PoI`={mCnVAM*haG=|gIe<{0bLj0(| z`ng5WRT5s?>(>poxiH-{ok((8uI#lB(a}^z7N!M;B^I?oV=!OU-19v-aXvpC%i3!9 zHpXMmVPkhG8P&47k1Hv<|JKyaF^GoMSh8Wg=JCj<>l|xat$A%wHHGru!OF5*CB_r2 z!#?9Q4ES=Gc3q}(UDhR$B_$`Lti-LFUt0B*( z(0n847ZL7dT~2w%GyL8$kwW?98TZ$O?IIq=CRj2y3Y01)P9?H9bTWA-#!*- zA-}m-!+cKHtjsBiunk}-mO^>wccQah(6Z$H`9$ZMMLET`cyXJmx&1$RMbTIj;Oe&6 zD~5*A)qbl>722sbM7(yTCPnjY{`1wxi0I=UKURxtJEF8V5qH^edk;2Nl=P5Kh9JeA zo#h*1Y*j7CqOS}`IM-~d3yX*_i&jkWi9?Y<}zQs?svr)QZ8{sV@TYw%ilNqA+t2v2adoPvGUiqa0HL* zDk?aX6|xPkgw2^cS2F{w#>I3HqM1)1e0!f;!6ZmnUY-l)Ui8%I)2<66Dp;YXH_TcK zfE2qbLjwaQ$nfEBZ+4Ic1jBuL^Nef&m`;7mytm`y=61^I!!MQ{KsaJAG*^QxLhcim z{T<)_(9zMsI}KJG783e2v#sFy$Dq$aO88oZL68IBWWkdsTLA6huynz(pU$<-PmRne zb(tQeq=*JXGNpt^T#_Va=N#D@^3k3r{j|Jk`<8ukb90G9E?BA6dpNLcXI~@pASC24 z!RYdt!pe!(jP&$Qn6=HDx_*T#%dib}jg2WP2OmIj*s8vqq8M0g+s+|u`korM0Jc9NX;+V%!KMkLgB9=MOVxH#1MRsdMzrRJGZhvd9gwn~}4!00%3 zO^&O1&3td4@fCWS`*qbt@{I4&5x=#+S7%*sZ=J80WV|dN0@x5WTZ5I}t)X;^k?o1n z{?)%TpPM77^yt~M@X^MI@eh;9%UfsrQ>v=u4Gau=WXQ6*qw@3f{c4MpTTHKBjr#HS zCclUX4I~E0=rEY`uC677b^kg%ZmKu$IYD9%Rm$>m8Q;Y~b93(Kd-oQh!-4uSG;_B9 z)x*R@&IQ;VoZs`WcBi_)!bL{#1hGX$MIj&xC?Z-6~UeafT4Zf5Sjx=m@y zI6zVosLIPF!1oi0{GmnzI^@q5dqD3d|puvhiJ_P-`-kT?I;9m%Y5xV_kzE> z3>U&~F0jp^k0m)I>+w*@2p-|@Ux%XD@IO$$N?ZL_rbbKGgyrNoE4}AwO|X?~JpGVY zza&T=;0aj3jg5_o-Trn&*tnQ?M5)s54Rl=CL+>-hg-WayUb7~SXF}#vv{u>UYE#Z) z7cN~|-iE~<1JJSvwUzE3t7was^x$0-iS~rTa}Yq>P`&Kd{U#orFSco=g^D9JA#MCf znoK!2t~U46Ypp~VXn|C+x<>)Nx4>RRTY13kvk3h;@zfciry8}f&^*~a9S?-c zyZ|lA2*AT8Kvgj)%G(npp%Dn{o?fXKf^aPf+Vz{5oNNRL3JX-{Nw{{*$U1X!|CeZR zeS)O@PSAZ0NuiOFi%&b?+EqjIyXaZ~>0E~c*R7_%Wg1uel~%R2tq0=vg6D`fukHZI zbb&Euz&va$G}4v0{nE(4`j!lE&bmL31;N~31hZTmYsOWJV&%}MEkNC{hSJyTRTH$@ zYjiE?Uuw7(&r0?=?(v`OwX`zYA*)2*g_RFv+s#)Duy}4J+E87&I*uUm73B6cp8GA_X z_v-TpgHGpdZ3O^%RFPd<{`iQ$ms=@dqnMz8;}sUBh9cAq6ALZ0>uf1uER5B>F7C48 z@v_c~+S)C^R^Z9GeXtK7KCsFAh#{DT1{5^U!^1-tTCX$C#zb|llu9}E56ArDqnBI& zZ1~PPNhY=jd1pe$!wg7Az6L-g;I;-pqEM2T{CJ>?c9G$V7qe2$Xnhaee$jNbGBY!? z74#iG(C>=-uQ_ZkD(&yQH78Iu!BsmmFR?<}?wMIny!o&orrA2Adz!jjb+ykXb`+MQ z1$v7IP!>P*Pae}sxGQP@okVIwc4OP`kb+;&%=Ty{aha5!F?;${|p3!AL z9sVkKe{X8I_8$;+`0<7m+W7`(`|kw<%#buMdaWdSPPggP(-VtR8L@r}Lpl1#5C~5f z^sD}ELAVqC;J6O-lEpt~gBstp+lF>e=dXP@uK(I{tSRarGsD0T;yvV>)is{_J%m|V z)!3K~Uty~0qbKwf(OGo&zI^#&=swT~K$U@$^Iq5i)&{4t&#?gDCvjTh+wK5NY_`{C z`zk#1c8q;}&mf5YDl6;r%#lFT$XgN|5XqlJ-w(rRwK8%Bi!Z%yzEbc*F zVmzkZv_2d>FIoL8E-n;u5K+eYSoQ1IuU8KnT^oNoH*0z=5c>I@y>s6xy`5L)hj}al zSD%{Qe(cq#L8zFkm|1{5wdKe<_Jd0BVTq)N;|l|k#Xt+_#r&#^dLQ~b{(Rp)bCc3# zm;1@k^DKn?u_|r%ob2p6$kk9p=T`>+rm`1REm0-={W)H%?}wk^;b9ceT-dsm4S;17 z+MlJOGUwq3aHY2WhdJ|1fmzx~sRlwNuH))Ot;0dvvt%*OQ10SoT+<0AmT_$ptCK_{ zROVD+>EDM#mD_{O=lV*BVPp0VO+uI90(8I*1n`m#)ae7PCs+K;ZCaSJ@7^U*J9lmr z)^#~|1;TF>Ru{1^zocJXPL!en)FUtyxPDE3v58UZ6bqH2Aw~(L3J%*D=h?4=97$4Y z5_6)cN^dXpYYNa4<4XIRbSJA<^ib~m*xufJhx9;afvGgKdORYMD;&2aIOL(`q8>vG z`h@|X@tBWazBBIO`wg)Fxi)}KwVl1WMu$T z9H`+i5MqYTQ^8pH85vKAA;AZSdiFZVv{V^gkpSi_fx0uU^b&!(wQKJFrza;~!CwmM z7_5DvU6#=o=(7RUBE;YV%xEg$7eQg+rn$jNbW|{P+&!Zhn6Lj3GkqXJ#X_kjzWZ#}e!d>mjc}Ya9aji8XL*WwC#t#Hx|( z!>kt2MUa6?Zg&eHfM%X8`lBXLt|f*u0uTucVrH=sSi?rtQNa*0yyu5DAahr>xB}PY zQ);`I_39OgbM-0<_HjmJvLhunJ6jOe{fgYx*T93K0yI~MI0Ep0hdOa zsjdw2zg}{PT;Ak4R?05p!uv$ysCmHRxhGGaDChNB?`$j@*93eZD3Ki9Uk~1o*j%0* z2L#^&9r68%iR*~fThhd@+|-3FDwwGkb)F}X>9W$U#8;*L08QAIv=PKSK^up)Qxvbw zPBwQ#tXrLWu@D=)L#&>`0R5>!-2JFK+0E;R^z&Ar)wra2@gf5=RhZFF5L@1#*n}`> zhFQ92QegNOu+Ii;PV$~-Dt5$gp|%%IZrbnb=yS3S8&d9>s70m=)@=Sxw1(hQD=<8P ziq=4t?^_w5yB2|5DOk22D@tlw9B*xgG;4l8I{KieY?2H>Q^bm__R?tA4tGO9Qvpm{S1pl;r1s znc@C6PZ~U)Kh6Kp@YFX#+i=9Bu|jZ*dEn|5G}s;}_<#wThJ*L71r24yDhjPlcel=0 z@04C;IH&vN^Jm7Q$~oCCOR-4kna1{ahxenl*XN78IpYCT=rWP0d}(W2^!o~2dlS@m z{lERCdD-35O+Y@n4wSo&^_SWca|{CjYCd_bB2pt$Z?A&(kgP$#NC^2(O$StoNNCwu zfaPT4;St@Nbq;1k91sJ316rb9d(FK)&BEz*f30A1;PEHN7DgMJA+mI#qvcn>Pybx_ z>cLKX7>6qZUM6@ipmzSLY6Nd|fn~3}?g3ZXB-9cB5oqd26|NfFGg0xL>^+kignd0^ zgsu@PPaFA#I${KF-a8Ku<*&E3wW$CUh45>|OY>Jlq=IlF06{R@s~(Y^=|UCXFZ}ig zb%EiGlByW8DjK%|8$@!5&T31~Ht^90}#dj>I%rUG#CuWr}KJAe@&#ix6P2Vzkm zEcUaL{m;+1hwx)|(x|{gbr*;{|21KFABV>qq(qj=>oVz@m_(x`mCMPlw!|FnLXXTR zA|le)$P1Sv14dib&d#nlf`N$|AH$mzm+0RtnMEz&=z1QA|9@mn0{pC7c`TX_(jXV@`QivwE#({o)l9w8 z8Ob0|E9?k7NjvOpPW8(N&KVaNPW<|Hn4g~*8bar?_GJ5i>gw#XUOVUm)Ic4iCOcakaaK#Mh;X*R za2#q1aEhQ})pP6RHD1sJ-Ie=9pR_VA=#J|}?BjU3=hIAI7B8$z7*yX&0xqT-d zrN)LPu%M@5C}l)^Cb!>InqRdobP76oz3mcwR4iy6(xqTnGF-HGBO>_a<*Uq#VxppM zzt+_ibET5Gd!5;EWaO%TafFJRS^)sCdf~ILf|0i1RtaM*yJ9V7` zWD+D~+36PnBZ`P^Yy)_pV*hm~kD2c@upw2gtkQN~LR&Z=FYU|?JLxXmuBcxUl`~YRHXzrP_%7SV zYYG5&k^j}d7HCN}Sr5Urzdu4zZvZe;=>gXnzF3BMtCNRGP0c{MvN5X2JDK)VwKG=&)zeeO6`Ba<`c57aHhD+! z{F)a#hOU6vY7~pqoKn=-LPzi(BPfs;V+g*0UKij=5URjoUs9BKfG5db-UHNmhTCTZ zhZWilBi&_nhL8dLB8CU#V-n;9A{BSwimtGE6&uhOKFag42|UD>k%E#&S9V`o)03;J zsi}DHY`6j!0G*^pkY<6Q4KUO)9#apwun5{iCgYMIJ3ItT4LJ96?D3}>NUPMoIU7dS zVVBNJ0pLy5$*FLs53vm>3$(`aoWFXN9pZ$KpMPdoF=tZ@3y;)u@9n3|`bcs?t%u7% zgVc#Df#aRObZK#Mu|TZ=-mdZvsmjB%17)^7C_1M4=HzW^|V=F?b4X93#V{2W1avT=Q3oHHzAx$1y>IeuwNC*Eobs&uF7bJ70Dbqhn zbm<7hQ37^?LeO4Oeue2=Kq>#Fp&eJ<4xd+Q(}}Y|kTb%5IH&^xDiW0p;n$~u-dc(z4aJ1kz#%EfIl7_mUSI&q)Xl)4fs!G|`X6eEVD70WsdF+0>u%ZnZPc`eJzQ^v|WQm}Akj@U=AQsM$XND}GqQ`-$N z&d<{x>F?e#!Pb{lY_%?_yMD?yP$DAT?Znq-@sBKQpEeE`@XL<<9=(m>`OhHh&+H)L zEoy^(#*K2w;`RYwp@uK+EO$t68#|q;WhC>CR=0jdYh}Vb)*yKyMr!2qY}UfB zHDRvylR$(oy{3mc%aJaa{*C3O=Xbx-QzJ@*jwHDV;AhxHt5*&pjTN*(YXHn{DSd#Q z*g?qdD|h8b)`iNsiUX$a9qNIDiUe9<6zJ0igm_0EUplE`XD9RtwhA;0UmqAf@3LWrk8-~*KT0J65tY=0^8R7h~d z$PYnz;6HPQ9d)_@BE>)>0DM3XEj%4&3EH@f&jK%tsQG;;i~ssh;H0Ag+^2!hrSH8X zC-llEQOX0AxgIe^(2`2cN~b0H0;@b2N- zS!cs~A1J;JeS3IeMCn+4DrNr3w@}Ve9Rk4^TorMINfd1keZ{zA+Ar~{qX|MDl`t3r!nvi)jE*WIX>c$$Cuj z);d8Puqg(}{Dvqnb^1UG=@|9NJDX@ACyWX~j4c^1dNjZOJ+AHgovvFBCAGDt8D2`H zRZutv0@nvOAd2m2g0a+II|g?4>D8{sD|XC}WBjnXq5LtHYH5IR+{9$mbs)~(2kqdW zs{ooGT?2z7!8OjqHEtWkcnCk>yDauf^>Wm}0pRBDjzg8b0goe|SRluM2D}3e6gVO* zPrYyfodR&cCwnf$4uUfBhYPL}_zT_#-O5t+`s`0~kfQ*L@j?f?hctc{m*O(K>i`^C{dwIODDOta{+)X*6!UDiHt~>9k z%tpsWl}hhaU==`+2!)Q=5=x5?f;@->051YD2F-TS*6;LNIol=9fF7jB;8kP z|J>*T34UQ=frZ_|zsHuy65t0!y1>3H>>${<=QK5`Wxf7J9!m*0c=PMadSJvXu)^EJ zKb&5I(sZc%^o&%UQh-zlyhJFJcQzlr`6gkxan1-B9IawAzH zWF9DB>M#pVr4mZkCSqpW zo)8BAvH}>2nH{jboFscxX&*pJ#GunZ5eayf&2bQYX+Lccr_qzVI#>C9_mGT@_1Rm{ zo7lk=#-F}P>jjsCK_g}0a8V5CAK!oZ?~rQvKJbx`;vVI048d99S?w zfy7|NYlW=(OEMV1e;rC3pH38wKvUSXv$UU5vi$s2b zDJXk&v*3{`X5AnW*_mVMDdYN(CM_zmKNI*j2UI!%{DN>40$7&=X$93=qkgB@sEteQ zn5hmN5O?SkL*!vOj9nb?$>te!dr&(T%4&CMcDL7C(NKV+f}dxEVHem10G zkURHMm3?3f_Z*1;6k{>~J%_2hLpx8p&S5^$oGPfd+hfDdMlxY?6`aZ`Cv(-JI?mKX z6sbWIN`3enrHX9n!Q;Ax;hpE-_?`ru#?VVgY)PS8&We*gmujR(f{k2|@+LxfX%}!g z{cXlb!RV={f2r^h2rk)4NHyK^-%uzx1Rr|z9jg$+7dp;Fbd(SQaM$_9a06ru6>dsN z$!Y&T{?vy)+->odCP}rUN!4dkc#Xd_>Jh!P0yibq&N1K<5~2dK8Z)DLL>dyD9DWKq zcU|3(fdR9BJf%gv89c{@E2KJVljUN!o=`n8JtT9@AnHL$IB)EONI?lml{h>XQH~>c zhaT6K8T=d3o|aHFUL!|&y~%}3#=arVff4lr#FTgNu=~NeQfF&pU+`YJ!0_#o5jh~l zv8y-|vl)!;rR3IG_&YUHEUlYV2Ngz8_n*> zo|CU3xVgnl>*-;p6wplN5DBhIJ@&)dvOLLXu%qiQhj$CUL$8DlkhQE1m%E6JHI&ky z8@Z)@b%9JBR^)IPPVBD16)cZCj(~e}SOOMIPoBYuiCnz{0}{PZ>rFQ=j1y+!}BKKbgt)h(7Jyhu)Ba)&nL% zmT()UQ|NOI9URJ-jv$HIz)wkNGD_hRqCl&X?Lce+?csdh?uu$RuondLI+VYqpM zI2O(pmZFG%tTGqgx!sXqSt@7hVt}ru0aw%1(yzlFa@#9EQK88jj5<51DWV_&v=J2p zHU9AHTn3NT4%j0hw{60J#O+c05HB=A^#`)KUFOfKym?D4I0RxbRcJ%K1XV z5m&_=EwNO0GZ|`*qe70fTpcIuqtf6--N;*~aV}sTLLEw1+FA1dEbhIV3BdMPE{xQ7 z+LcayFW>}oX3yVohkWJ!It;IOIMsrDUAC_KB^kV=CqRPe}FB{>e>Ga>6h%KQJKgh^f&3y^Hw{6!| zZ`{ZnCLkQFo}s%3ZUdMfKV6be3X^X~Pf}ZP9Q`77?1AgQ3H?y|6YHY~*TfNEQ6^%+ zzrn&2syal@o;>5tU1T4$=sM$|gGXSrDT)ypH(fUttg66Zj{v8*`|mH7)Jm2#1sJ!y z{hgS9b%(-H5CgX%BjA;WRFzN+du!W{{vihHHC6`>zzH!54Dfo((yz}*mZN49!=NM! zDS|`LaFB>>!Hk&A7}JcU3DqqMZ=P!kc`H(D{{ptBNs3fAxeKUzrQv+RSpmow@4xo< zc8jj0f-kEJzF9s@wXS&OR=&cMd$a7MZ1F6;0ih@#J?um^^IYH-rlIcffE07+5OjEO z_}@N-QYcP!ZWm^wZsDsqW`^s$n!*Z{r*0z9h1P%ES&CmdM_gc&(1`!y#npD)@%1D0 zv23*YSI-d!;XdS^kW=^P7zYUJIj#)X@D<5|6nAvBGZF{Fk`x=27?tLI_QK zpe?Wgb?Y{=X{w*7DLqkx@#SjL;v_6j8x0hvwm1f&ifM; zm{MnyrD|^C{5eL&X@JgEn`MQNy?u+69t(f_uW*Fm#3m?Ka5DO4QB``E z^yy+ye3PI|l#6}eFJ+LGtT=X;7+bStmL5!n*92do;e^i-J)`z;Ci#(grAH0sjxSxO z5hZi=PK?8&aK2805XGDSj}x{)IdSw6#`%T;0%7mbm2asSDh+9|kXn4m>$YlZ&Rff@ z*c}B%1to@t|2=b59mhw=46rL2q+3}WILu!LJxR|=l(<#sCp_^qgA}JO3{mI}9I-(o z=xo5)?r?Ndb1d{x2IQ9CCWE{DE14u$4v`b;us(4r%;iWH(^JFq`ZWJ413V^$p2V2E zC3ZpT&m*>+u*T!o!!I5SaIvEmB7zlq^^kx`RmI$spxKcl;1I_x2hWpT!mNz3^>p>p z`!#kAyk>*n|F@t=B-|iLavwu@B7{ks)<^;I*Qi*BqBR`>kp zWy!XGMPCA@G__?7_hdje9Sr@6z@(J8O9SlD^@ruXlaNkCfsOmM@c+m@YxRNo#QII? zX2jMAlAzD!s&~dzKG4Xi>#+jzq@&E0BObCn2pQBWZv0a%0?L>)%?w4RYTep>)twjm z{ZlhATHTpexbUmvBQ1qE68w=2TGn+93>c)~{6$s-APix3NF>*UEiF!;oTJ5z->(a= zEnkP6nJ)G3m0kh*i?vMrg&dtYY~fojzm}U8EP-7$Y~P2SYKhA73bG}~dNgpHvA?aB zOLksY!ox6>%A&cmqp|EhTKAxY?1Sh?RSKM;~^1$Jz19!luuhysBFv8o z0&K5trN71RvVUu1#=KL6?7m5c!>;J@gPG$EOWzd22ggRJFs>(uDct z+KsUT|C%t6Z|{L;ViY;g5djaLtK6{j=D|=l6Xv+0atS1dqR;h0etp6fh&)OC!PPt6(mwNaA#%3L-VB!15o^TP>Lb2I1pmrbqvh0buuv`W&Ady$sh`3`Qm! zKg4$)E15&sR5y!&qG^*B{OTRV<^912#T326moDsEGSO5eLuw zP7Nqk$@Qp_Mq~~$Um-pa-PnEdEAselCm>b=dYz^7hK7c5wa=9eR&gsqJGZot)25tg zUaWc}P)T@q;9HsjMW0_fM*j7g#1Bu{v4TGRYFN)L38bz84mhUt+e5a*X;2oZ!f*5T zLPA2RIzF|5nR=9|zxls|{04}kTJerbwiQ*Mwfj-kd)2pv@YutHnXQ?-W{0=N+h1sT zT|=8a8J+`Y2^@@Zxyxa6Rs{Sm6iDy_DiRLBd1DxA>tW1#L3>~zjsnLQIk+p4j(~`p zo5{XpK&EDLk(izcYuFc{&ue7H3f5j<(k*nnV7SdwVJ zioYnC(>ZzHPf{S|xvsNjkyqAEk8%d zY0sGQft!nyI!!u|-1Cl1CxOW64;3$Fc3Os1BMh&Q740fq_O7kyGDMmPbZsQP9xTNY zqz;}Efx6O%RU=###&Ov2--$L}cthI#|9Qi;T&zE_2I_@0wdbnBj@SAN+niGfsC-6Q za!;G6MDFEM;mB{Qo8$gRc~6>!?wmRx#nop2%pYKb?lSaiDtljv-ur59%QolQS?cSZ zU@o`Sp~5V?Sdys$D>CJx6#wZO(F(P%REmv?LwhkTJ?2!&dq^k@-`+~K01e06flvs$ z1V9`V-?Ghyr8+cH<|~x!PiqlpsdKvY*3n{k5I6qcTS8l+Vwb6EPHx=0)m%A7;L@*q zye;~N3N!ZPjS#VdE2+{09ML;*ZCEyMFnGT9cLEU^elCh3zOS|S)>abDv4mMgl#S$J zWKRsQ8DS1XQX+KsXUMRPpm}y62OYlqqd4t`JLz(GlXhCKE0GSE*<(kEyVG5Qp0o8O z@zo4Ax1a=!I$*VnoGQX9xzO9toHdI{dp@f`%zYfvFq1600TbpZ`EuX>t#mMNVxKgF z$y1_ZOP^dv@^gO7pN9)*L7`H+op%K@^`c_K_&n@1r)K-9mm249Chmenrq&~YE~1`8 zq7%p%sXcp*-N8xkavjfFa#&;AZA;h{I&~OZ`m5uX!=UmCRtF6Zw5;7f|4KW|A&&j$ zX)4o+WONZ3D5M$*MDJy}u-w;p8jh#i1QAB8ROsl*`4nnwV|4wrh}&h9O1YraT+t^L z(>$R?Q#Rm{FF{ka6YHK`+;94~23<%DE|mLPO3csmGtd*3YLmvV)MuCqu-` z0$n0LmAnp_v_Wxv9=r=uHb3w%C<|*R%dVnA0ibYbLzo9Urh%E1}|iatbGQ;>3Z$iVt6(UVHDr4)Uq& z0H~Sqa^5GU9Q&Cjx=PLUFcQ2*BJnpBu5TwTE4!JgO~0KsT2T+U%hJ0137(B##LpQe zC$mmsOCKK@Dk?a3pJ!Cma`d?w5e7Dh?EHM{-<>9sVXAnO;~4fyxG;wG4mQ=Rv3W+M zi@IO`iApHzfPVb}=^G<4rNK*)G6|nW~m?a9*zO09Va>;32ZhkhR%n9t0h#f z+)&$u+<1-_FBFEsr8P#W!fCFO-+F&WN6*TBAzoljtHCDDj|ek2^=A?-ly9Ji9=zuh zi2`=gxESL<|3D3F_sHc4dKeJ~MKBCBp))XjgYVohkAku|qBN7Eq;*^5MXM3+B>}@{ z&KO8Fg^pK@PPbL#u=zbVE>U5nrhgZW&c3672Okos{eV0>8qN16E$(qR`>1lu$f=ZH^XCFjY-OuQh;~6!_vf|oP>a*_hhEpiP4 zBZ*M!^=JFF$G@)be%?%4_`)2BVWLH{cRGUXYaIjkzKAp~R=HiDcn&AiVKdd!;lUfn zrYXRPS%QqP@pE`D9DM3rV1kL4v^RWso>0+dj}_=)9$LGGrI9%nn7q-qcQ|@%j$@FW zF2?)HUh-y;k`&Kp=f^YQ962Jf)nVSYKs{|Tu6)P_H|EOpc<#YK@OYHN`7^PbU%CDc zRhtgctL|OI6*v4bA)YeD1 zP;1lkC`31UBsgMiXCvu4_cfE0}PfV+cZ1fFt zK^{KD>OqF(E4_@+u-~>nIBSW#K!!)Aa4suTUGR`Bd#gpkR^V(#rdDhOtdtkDv}l&5 zOr(KPd~_$pL{^}X8`t@Ei(Dd5XZrcUsGeI2z`E?XNt9hIIz;uV=orGSrDPD5%aa`u z8kr5Cv@U?Ro%iTbQf#67veGEn7XMwaqgxrDOO;whR?MBK{Pk&hf>Wg_g_N%j0}1Z= z>Lns<=bcjJziSE=#Lc?EvNKa`anvD~4OkoV*EWDTVY%CNm&LJ^Ds`QsPC3i9!0Q;* zrvePGmO(oi-QKR3Q}NE?6pPcRx{9+OKp^u)q&n`9aDx!sPP4a^K>OE_tRuZQrQFmit|1Dl`LRoqMlCt^&=S{vE9k=qIP85(x}qz2w`nW`f7V@yc@^Uq6Y!w88rS-fbW9KWe@Sw8 z4i7`u?8k2Z>&cIgSOjg7f|-!h+S+=e73@vuI4L@v5y@}A3!axJRLY-pYxL_v$b^pz z+C8D#lzd>@pD!k?K;}BiG4cHB;^5rra#v%Mw*y(FkA(08Bv8K#R60-K;e=0SW@az9 z=!p}d>KT*`k*fD5C5n6YGHVHf zxluuXX%Y%m;Y49M5jt-M=gP=*nGQ$uf#Y0y0PuhLpWM7VFnyQDOLWx>7MzG}yd#$= znMxm_3Q>e}_?qfAIrViai7RT1igRywyxz9*vOS*>hFT}sLVj2P`a*GY*Cr&N_+5V#et{C_auA{=;c8vuI7f}^a>(GpIm#=zM&Qs3)oDpYu?`ceUU7p=D%_QZ~~ zH%kW_lGSuqOo#=^>uk;QqF6a=A zfC^-{yR)@A^J{+}dZO-uM#|gYJc>TuJYTGlhHsqCcju418KzUfl7* z3h+H#QsG2Ej|@l3a_~{WEjKXX_jN?6{We={x02O6_skTEi4}h&L;><#T*~G5`4x^6 zaT|U%QMuT7I9dmfD9<~`rr^Mg>#JpaU>3enqR_#@%Cl$7FK>XTMGliP;=g49-$}BD zGWaF0q!ym6d!`dLB5h^sJcv8dEiV24Z(~K_93eWi28zqAQWHpW#9&0bmDVK{GbLtJ z)D$mPN*E_AfbW`lvHc`A!N3u7B~{9yv%DlF%-ti-L7>*aVe*T!iksITzi*J9M@CDy z)eCF`&J9^X58<=+<7Nqx_klk|ZapxU4Nt-;Uo*G1qv&V>I&}jYB$C~ZA3rW4ztj?S zfH2lye;fpm{+UIWf;=K)qxd&J>=TI8l@&-5KMjk{g!PHh&?cQ84e9Wf-WGQa`(+qV zyG{*_g5*pf{*P5cdn(L$-~X{a4qoXxkIn>uAxO-wM-ck^e_wBa$EB5#X=NE2{uEc)3F5e06GpcOhD&6kmHCO4Bw#0ro(|}B<6BG=qG#$ zi*|ury;SiX>%V5zR7ON0QKNUo*r}Ny_ojGX^P+MGPdrQ5rZio+Dpu3~BCIxWS1$Tf zK@7)PtyemR23_)mbpuBlULv+I)Js;Gl`A90Z> zh7;oQ%U@3avz@@#xKy@m!yyB(N*2X_*DxWzRVw!@PI2eaYZFN!qXkA1BgWgQi_CTR zciaHA(EIiW4tC9r4pBhBZ(}$jl=R9=&otRuxPO$y1Cr{0 z7X{QgIA$p+DSbfbMqfyw2}i8ObvHa!9gRc*RPF zw_hX8|4tVEFK+U+Na_IY3O+@uwvR$GxF12dR1#(AR*)(ZSni0IzuI#P9}(Y67t!`v)WA0eok2Mv>(qSv^+SR zlwK0h!Zsiy!Hg|*6}_P0zNeHt`o6ru@bhWT4)0IT{|%!+i$pm_J@oL|a7*wQF4@3b zz!{cCFj?%@*!E=Wf@040lA9(Lh7^sWQG%nk2+q?*-oL-Hb*nwsi-;hkmw0G(xUEU%9Jy*wWwDsya8))AgMt zcAW>Dz;=#6G?1809uS3qO9@z_M21{Bae_7EU?rN<3eiosUrw)p$Q>liW>Y zOFNe`L4nmh`uojq9ABOTg*Wr*I)uz}e$15$6z7!CPy{q(Gbjw_zKi!^u#66k*G zzk@hpkkoUa_)9gJSY9#F(Wg?^e;Y|Et(B4K=!#&5S6VfMX3RyOTiAvOR(#*TXr(J_ z-}gH|I8!T)-sQ84(bRUp&m6znA)e{#i_Vp22spz;B3lG)dBHZ>7~qdfK3+(I#XD;I za_G$w8($*r{KJ3|Q)+z3ESw&`8<`uO&|h8hDs6N!JneR;AoIq!2c;BuyM3pm{KYHf z@nQtFdx@@xQs)I8K9j!*D$qwBvO1|RZ&_2@9O4MSaLSqOxWvZeMp-=?!S>kT;V$!9 zOwbX7ovdfiZYrXcW6#L=`VoOhalH{|{5M9fTEL6cjd$7s!m$7 zZhvWyy-yOnwXhqo%zXlq9+Lw#-tpx-+Rl^CYc5yDgdDtL57pfv*gtV2?OgTkki^p- zvpi))dUROKc-o1jz{r1|=~)*3P|N`(Bf7u%(Igwo_h-bnw~1+TU!QrI-r7?}q+ZQ| zO?=8MdfRLZdQEFh_fZ-S_fknbQoNb2qr2T?);^3KvZ2PRvhb3M%yqe1yoDB~vsd(+ zF-y03lA*v{is8TVG;ts7c3*m!M4Ib+HgW4*x$#c=6h?IiAAD_)4!EQgy2&w%&vf5S z9<8*#P0!JzaKnTpw~H{1`J#sYV$X;gPK!Q@1b`$lXabih@QVy4Y88zSe(+<4DMV{d zBq9o;{Ud&ku38xuebF16uiT{VL_m0N; zkN?Ks7cS#6q9}WntP~X)k(HS}vl3+!*(;YVA%zkd*)BVKWo5MNEg=cXo|*Ua`rP+@ z&hLAl^ZVoTIj7T!>w3Rme6@`CtKL|^xEx&4bip=J~6DaV;=kZ!sV z&(uq;X<`o(M{kr3U+nK6Q7$@dULE=0T205VRSF|6qL!hknqaLf2DN++REEnxmI$~~ zqti{7 z9} zQH%FIPl~*KZAUb1bdJR9QRLbrx=@o;?+8t3LSks>lpyy?0Gn@_tMf5b@~4oc-wmYs zEnPT%zZwQyI5)K{cAkyHz@4g;fGRfvBrK!u@4Fs#74pI+8k=&(MSsbhi<&=zb~q>$ z(xZzxz#7uPBsd9P3SyFI5 zp&Hqm%`LoUPWZ= zj{K*$2#SUesf6nu^B>Mp)@6-O&t}E;yZUe|W&nX4meVO+q^m3Zs!IHqbCw?OVexug zvJA;6=3?i0g!sKnM&5V2VW8mlcH_a^U#pzx=@{@`ijM_Ov$2cUe*AEzxQm|idNk|e zAZ3Qlz%X&T@!9BN@LbREsVa`9!arXhN}e)09=XS;4Lj(XB0{~;+?3y~_h zFh&s@rFi&M{u<;$HoEjltmkhTlxVf;+bU)cajbf5ryOs8cz!+|lRh~U?>R;go10;O zUT=<1Qsjx@Uv(Qj6=02{u2iM9`Zm37wl?C56=LZT= z4GQCfKgZtQ-9P!j!YKqQqn)>WVU?{_X1d9C5AwQ{6d`W;+A@Im|~}ecA7lA zSh%?qv%dwxUjh5bPB7|@sE5z6vaXGxx`?^TEstHOEs;aL+k>bx|`FHJZ&&K;w`sfo{wp}0H z`snpnOfMu;?4cQDY2}IL0(42Y=YZ# z`WF=b2-a9$A7=U7QrA|CKkK-gCc+a=-CNiej%`h~?gjTrz$TCyy`==BROmWl>O5S| z&~@}BbTg(Pv%_-wLjT3sIuSR+zf}LSUJTk0BF#pM=+f_&2E{!3ddHWfxC43Ug8Tw{ zcJp=kagt468~e`p`)`EHWXfl$N2~5%;2g^fm!*z%7~~K!dB#g9!9JGP_9+O{@L?x! zWHhU~Ko=A1^a%qvBKi!hs9$$ePKW$KX;R~Sc9iL^Pw5MN7{OJH&)MBqLuuA&m=4s| zUL5)TT&WTB!p9(`uvm>f)&C!2;Os7XyTn&{iL@XlsK94R8{J!O!L$4~y0^B2y>aB` z?&bRl+IRt8f-F`c`=ie5U1H?YcQ=9q_19e^FLJO6LDTMES>Yj+f>B3Kyi&VZe&~8- zf%7BHSe%cr2CCrKymHTw?cpthB%|U2$~(me4Rs%tO!aIEXN4b1Io<_Ov_z0ZS4~p& zWZM|EB}%3K2Sv|efS9fdPc=%2nG}F4gw&JdV@pbg3tW26krM)p}Vs}&M&2*9yoX%LRxf_D!hE> znj8P65A$ax8gpC&anlBRs4Xb!Qb-(1Y6*B64Qzdk_A9U7cEDB4)E4Z^mgs{X<+OvO z8T-_u#nfwiTh(!fHH$=FSN>f1KVMr%TdBa-F|A)xl8?pMSO*!z(XuX$HY)Y3Iqwj+F<`S?f1bfDNuB+<`3G$X-$Z|bKr&JV| zCV>~{XwxGTytd-yIp(<=VxKZ|(jg;jBuTbX8;k3(uVbwiE9l;x+_GkUB9_Em!gh(L zT$VOau;?^#GzJsO{ye+t+xfW_VJyIxNHMQ@J^}p2awDo7c)5nM=>4X{Rvn1q3*y}iz zW!AJB&2Ivq_$L@un({IiYrn9XyG4l=zIiGS6PG%&t+=d%a#IVf!$svj<3n`SPCCL3 zwih-H#I}C9Mdnr1Nu8U2k}}UIZ5z!xjU(8fKo`0<-O44!cjC3V-kB73-m_tk5DHHc z)qGi-#|9J^g?2~8o3IQ_e(^^SY8i1oQ{n;v1p+iy3+>64X_B?iNO-@$M ziXE!N%)R0`-}HT{VTKcbHs+B*_NopXpMnjp*Y|VjkDiz<(!|gb*u5P_Hw0@Hp)^xJ z7vT_<$7*L29jSi3t_zB>Mg|967$a!oDU7oHPJp00ySrVAArrU)WesM`Deq9>gj7m>|$FT5f2g0ImOSUt z606=P{KOHeGgz;&hZ}`4Llx?p7Mi|=C<=3oVbaBI(~})*bq0j}vMjj_HLkH+-xA%+ z0xWRtY3@krr}Zy$^mym^GTMK~dy0(cqArz>&fzkyXPa!BCGcFExZj)C(2=LZdp~G$ zNz&BCj3ld*5u{T>NEiNQwGsPL~u*MNXARuKVhjP3_h=50FtT(nc%$ z#~nUN1ouTpW62b^e0=i2Z_S?g^H&e3&Y{|#?RaOa$&0>u(kAm)TrVX2!}nl~RpuBP zQ;VY~EU?`P+J&*dURytJ@KHmJ)Df53y_wDeT48npUe ze>Q%2J&^S@89mQ>zP`i4IoAd}u|f|uG5gu_P*eY0(eU_bqn0i5 zWT5_2YwH)hDM_4tR$^t(D|{-}^JX&BV_-lm!`&!3B|HLoxwv% zxfX+4H+yorwGI1mbbwnChawjk+=p844$(XwB1|9P&1f|eMpJl&Ysxqam%S?H&_n!l z0|NiF2&vp_B%sgNv2@!Nl|Km4ol@xE*!wP{ffLbp3|VKh$~Ft?AJGzjC(psNHY^Z~ zw+2{8^1H0&N)${MWc63Nw70Uffo_0=SbF1&YjB8y-T^54p`s3Ukv!8NqA=)TTCa%K z%+==noZgZ^C~odnU1L|GHS(S;tN%Bar;g7-du`JsE>Dk_oixagaxwJ-lQgnw+KBZe zPppIGowmkRWFOBLkeV!g$h)17;Nmf2*BP&?_<2oe(r?>AxfbPnTz}@EC%$H7mUiw( z=m$L|ctZDpKzlNjOJG>C#D_NgTP(u8FByI?Wd2d2*F# zKx#ZpE#SB1Kw6W9mk$M~<#*BqWb(&i^5Nxm`=2HQ_rR?}X4JV-y;b;g-6XW`DWmw?D(#qirqyD`m!o;N?l*#n@ zacr9gs4dAaqf?C1*|M=|^N&cJ9d9-%fRkN5O&DA0NWi*IIV z`{(eDeDV5BjgvE33?uMR8xQ=L1P*itF2-t?Q_|^^ z&=OEDX_XD+(Q0LuNJ(+J>ZH&?Z${qoR!qXp%=78quI5`m=2Y-*VX!xzN-=Xg+N}^M_M7xL5n z?36rWVk+J?8pzco-Ehy={9XUM2fidylWxp>`47XrRbKPva)yd|hR$MyM{kQ3rHl9* zFYXniwjP4Q#MZsUQMaaB>&g6Zi_+8n^XHqGbkJ{p1$hkRC#?uK0Qsde!R4 zKGI>ce)w0WFl$4xuoxh&n)LSak z*ZA!H*-oc<=-xeRbZOY}lm0iIGvah^E4!0I!`O$XVp^wTv;^NQC+_rlz>4}5)*t{} zKrmb$CBH#dQO_WEu9>!U-mPd}fjVI6zn!M!tVPI5P4Rs@|;clB{k(u6k zn~@Ux2_kK~7X<06LaxFkpkU_Q-Fg&nwp__1CMEmq%8D2pu!4bYygwHo9;|;qMRF)I z2jqWxe~O*6j-Nh$EeUwkHE|v! z(joAB`U?_B2l!~tu&@NRvedHR0&0Ta=q1EZqNnLNtbmX z3rFME+7mW}{SGb<>!IRBu<}gTH|&d8m#EP)&3F;dWD`Xg=&J&n(%QkP>(g`#9-jpM z?hTb~rki(f{wSra=3_cl=^5xifWlP=eG(}0KDrk@vPSAJT!eC?6g97j|+zwM8B-2L(AO{3UUx-}&CIKETT~alpBSPGxj$YzYvX9&1`E*ed zNF6_xj0T|XAur13pN-0kQ5Aak2ze^E<3xg$>>0{2{H6a4rQULa-KrTD2^3G>tfi~! z)7s@MRJlt>A@+J3w563{uY^v;EMa7jVb;$rE#*1HA9Mg#bO%!kK1LF+i@_&k;zbvD z`!a-mKq9H}(h`K>;^PM`AaY*ddjHNh&$_B&Xpgm>Dm{qo~X3B*=k*` zk1Rt?=*cFX#%qp%GPiWwE0FnE!6Uk8eNQYvzzRvP=@&k-zg`nlylG0fP@w83S}a;Z zh?uwd;49+s0tjO`*-Sf`hLoHZ$lMBqkhp1(gN3%3H$y;~?yNl|hd4EE>*I${K=Q6C zc}&%jwl5L8Or8c(h(pdM)XP0LW9i+$HD$kd9H6sqfQr{3(9%7H1=$(^XAxKPz`8B{ z4LGL7dyV5u-j%}9Pn=B*kmksvd1p|IuG|1!wxfD7DOSIL4sw@(?>+OY6RhO;DAgk4 z>fyb*faA?HB_*Y1Q_o4dUjIvH$?sf@8zC8bZf!o0PgfbnS~5~QvU-RV!yQi59b=q=;`}w>)un$e8}s%%N$;#jf8!T{V%xv!WnoD1a)4{NF6#Pc zy5{i_M8(SFI}5S~f=ica2j!GqZt(tR1N*wqCm_&{*G=Pje#o~)HLZN&PJLv)#cWG zzrNLx&mWUO_U#F0HSlf-=4m7Hz5dVV-G8Kk1>mgSq=xMg#LWIr4L7b@NbJd>C_bba zsK(FF#U`V@_4w!@|0f8dXY_qj^b11unY<=waNXCu(Bp*Ec}X7xszo)OT=ZJ9de7`N zN_wJh^fdWb@SzJma_hBo!v>dcb9gyP=leW)y|;!fF4!z5E*-Q8*KyOM&CXnf@1x@u zDm|4Nl**biN_cBoBK%&=@B3fY{h;kw3jmf;%f|i;-Tx0STp-zGP+~S({fKR6Ws*O@ z1Y(itZ#Xf-AHL*ITKy8+X6)i+KW%%?IrU)gMz8{d=G<54jeg%HB-Krkyi_z4=YjGC zx9P#KJ+0D?YgEd~lK!nzhT;;U+9j_>sC}xU@*P>&r~im~eTj%cu;&8AFO?VrCs6#fawy zqNd-iPnJCxu|0fJM|98OR;aO}8^-1)5M1M+>39nPX^@_eXNiHYw}k8l!`jE$4MM-b z3a5E}pn`4axym9ep#157#bX7l`?u2h#1oNW9Bp2yxSb>V{8QiyTU;jB@G2auu_tg7)HDPx5tSx))yy6ViBIuuHQ+=Xedsyg|VrQX2dzS@0%Ox9u*f9e;_Wc zf@)<~f%+4nW&KZG88lwY5q@qpP$u)^Xe!w@BZSO`o_+N(uf09g9)fNn$jEPg{3qfU zgR>^5hc6_ec*f@GBXsZ7Xsl$IlNv z9`{ces=_!p?Y=pK-(2r*kl3_ZW*n# z^WTwGT#DO@qra^##zayO-PUjU=V)9S{hqw$9j9Ayy65|J+0^6cLA?_rrG#z}56+F` z(|RrC$SlxXHZNwV+&mmI^FD-iD*|Mn$(N5CjiLWw7 zbc>o?MQ?j!49AG*nt^=>ng~L@n5E{$!^QhGkgX!*cj8x3Jx!W52+NH4_}%{CKeCtp z$COt?i)Ha6x|i@{i3!<5DQp=hze zy$-JCZ7)m?eJ-&{TqU1V<8`mK(&V#>S|vsj%YO=jVoZN^{p>5__2rd;QGZ0W2`N(OXv+pq+V_{yej3K4Rpc&iqAy5OIqVlFmoE&nA~`%gZ$H zCb_tH-h5)Kfi!0byrJLyOzc;-tSg-?_xX|s@}rR);3;>|&DvQIt8HVW5}XP3IwAS}R0*w_xxucs5cv9Z>2LAlm|; z27K&Py5^kkXl5Q6>V}x^rB~Ec%?F~A_Jjm)jPjdPG9@hkMfK6g+Jykgas*J)uNwjF z)=eq#xqhe-G9J2NT>g{_-cVo32c*2(onpjjSkqRbmQ-||Q;ZCiWcCFGlk zVso;2(#tkp&XEVjo^uHid9{NlHw8Fx3A(7Qaiad#lfkPt@jSv4eZo@Tmt2ZeKv7Qi ztPPbub3`l5hh}Z6IEUwIrdFh)@pRYIhQ~lEXyEC08gV-HbG5^yVYYe;r`f^)VPf2T z#aNX0JyJOQF?F_qr3Lx(Ip->}ChG)qrCgh>JCQbhzGrCuwPDz`&ct<#?p(TF>4tXJ z?6je{^GtRZ2nlMNx@d;J`;6ZubI6Cg8%W8W7^0lWX2AMBOY1xpowb`#23C)#5DS=I@ZLq`$Nx99#5I0JsGFFNJnR%W!4?ME~Ux z;&uJ0({GjdK|(<(S@QCt(*crAXIAJFV$K<`wyfT5-v!KWPS2w?`TRSmW z`PGsDK<|8V+cbGA>s)dhnNGI-CBpuUbS=JgeN5?i3J*{9XNfE>ZD#?#YGFsD0wkeY zO8~YFQnY@bM-d7%p|V7b5-NyG{{<<5E+~9J?_ZRAiClcpb9U02ihHLoFTW-NPJP$6 z2c*Q;KxiptX5>xuW#_F7I7s@4DSa*|OoJDjI7@+JyvIiY0a6&Kby8&o7V&odw5p=g znw0{5OfRGtUu1Ca;wzN*csj<9jI*eZG8a2eq%NVEAW*V(#p&dya~-3LYJwpsiy&Xq zj`%(+o%BQg{d%(r0-ff5GIru3jE|=(a{yf@e0@Gg^*eu(qc-b5{+!cObiSTTq3HVg zdygndb7k?`hi7%uFUTa*cm7$V3W&^lnTdfIHM8}PG~87sJ+F;TEy*@TuZi)#=R zg+4zw@Y0=6x{B;O9p+Vt(IZcJ7T|wLfrI4KHV^5f-M^rlNsCm9>y$fNyoqa=TZFSazd;{x+Qm7>Xm${F^f@Jr;c;sgJ#pL$x)Y&Vjy(;2Bkq@QCAl z)_2`U-aV^|FZ+ZmfmU8;)XA>&CP;6$9v`uA1+I739719+ht@n=*VYO}D{%-9wEF8t z714^DYoP7O=>HSz`}g*Ot|mX7X6=adesRDT{>rYCdrmIw0v%WY1beTvM{H_m;+1_L z(xfntro`!i?tRk32gl-#nfW%cjis#fzq5FE{jF7;IZM7S)gja?>qn6OLsP8N!s`>R z*#kORiDZYyR48Zu<}&_qiyQ?)1_V1e|Coq8u~Gt9I8bfJV`@fPD|3*A{TpfDI9eBJ zml|c}Oq97qSiW`kZrQlGq+Qk4w0fa&v?q{>*zJ~a&xnt(T@jBy{m@DR*0cPANy3#} zoh=MDHTsR(N;JJlcmx>coNcErz;V@j{@JdDuNBA2@dNJE+Kf|9P3$bU=k#H(%fHlm zc6gOv{hS`>#XADe)yAVTbokf5^xgDpyhbj@WtI3<1Q;m5aXZhv-T}ta%=#Q*F<-iF zOQ9-s`JanCwv;0Bc7(SnCyu*sck`FC1M*}2jNiE876(lwxbx+|NmCOo2=m3iSuTRy zoeoPu{qQs5x6M(Ck45WgJ#r%;-vlZn2+3(qW7R8gZMUjjj@ES_$fxBA2IE4|YzIwg%<3;HFi6=Fi!{_F)pDKH)#r2O*#6Y|1 zJWzU_`3ryB?^~PeJ7JcOmA1E5u5d#eOL4`_la(rkzokx23?f+jBsmCUBc}s@2*iu^$!*p z@izaao~!hc)}#NEW`Rc|Mg59t^ZR@*$S(-)jvwQ1D7>Zfjm7TWHbyS(OiDqXcDCudCX$rCiL!`|qAM}|;SkOOhFK?;KAMqJ%5fuB zMt?za#)%i%{cHDFH|v|26`SIfzWd%c0OF+d zS~=+(G@alZ$KHYjC?sMnueR|LfEjo84gbD$J~c=ZXJ~H&x3@5;(xlUzZMBMg1seWa zG%7aljS@{peU0B+~vPf>7m0yLppV3Nw`rne8Dh5dX9Gw9`yyZBIun<{BI zJE>@s{iR{%uVD}*@>z1S@HIht{psJe$0g+wh|#1@+QW?`N%Wu!`ZQ-{*QGpZt=b{` zOAu!Cg0ZM`k+aU^P|wnU8uHsI~O z)!{f%0}BPC3fAhFg^)7fK~h(lz%G--gul993^&`xZyQ^We6O&}XK>p__KX!cfFJ|t zOzBy^c-qK{Gv|cl(S(=?1?Wox-d+xz0U7y_jYuN zIfFFWG(^8h`h<4mZU_8c9$JDb)}GFe%zt=$`mEX5wBGs`KHSHKgm9OeB@_@x5mNz) z30m@R+I_)^lvfLvyKr2L5V7t!GnC+iN59VM4pEHz^7XGce`XSdW77xS3|duK{jKhN z^5M4Ty?icfZ^__tf((ihHS!Pj=D^JSepMIrKsM`a5Ig&wf}nP%+i%)08#HCDF=rdd zQJV~OCg_KMH)PBkS6dpJy`o*xF=jDx`Cfig8Z^TiG)4xXO`W)3CLuX|8AqL?m+}24 zHoreiZY&!r$#~sy!P%cHiO>>()u(i^$4{PVu%x-XF*}%` zkgtu?0aYpenNJD zVc9Bke+DHS{-E0Ra?m~ng^$UynY=tDbf$ydcn)vpLTc_kSfNm;$5Q791EVY9B;lir zuIE-r_qC8u*^L`Pj96BpPZzHZa(t#kvMXOcJe%A=tciJyP+RtPp-SZ-No~s*l`&wkSxow$*%bYjM z+IIKAiVF^E&INj=u!Bx_IV%u(?+Fva^-9f@(+&hazAQA3Imh1l;6;-<;(TIVzh3=R z(gk0-7BVL483yi=IyQO)oza@W7sTCNxq+hvH>7sr^>m+xD6w26{|tG$kYyJ^S-|S` z=chOG_ZNS)A!$v9>T6Qlq8bmrveba=%WG%W5-*objvSfCyX#z3aff(fFsOX#k1PR;2fov1y@0(z|d z?jt!LMj&FwQZoDo-&i{f)e!1vh3Yxc&DJ_y5x*l4@FR|P9AwoX@mdk!Q5zW61$)Dr zF9LdeIjvJNX3%z}f`ag)xi?1aORjiWDDvHud*&YjNCdyiWGWolX$?^*!(;|2gs(n@Y{q zOEYhstbSytu2W48Uj(Yyv@tbVC1X+|Q1zR~D6_h^t9&Rk(s)AuY_LE}(<-#>XvYq7 z10omsvXS~soItd$TGU{{J8e?uNKOzF$d+hvYOfkS^MVr$Yrj8oZw>RBA1flZu=rii z!1m0u`EK(b_vbT4bdSw}H@^5t1)RG0l!K9l?!AA`m)}S7frX3A;=2HS~p8 znMWuwGFWW{WDM@=ODZ$;$kk1LU}cw=M4#p@P(-hkpcu%Hw9Bga* zp8L0-l+>mfq92-pNxqp4IfLLd@7Ps$zSpBic_(tPMfYx)>q?1oVcO!okt1DA(qh;2 zY+N?*)*>Hk_)}5^%v&q@{+VT4)sL)u!6n0zu~p;hW{qGWZkD9U%KV2$c$wSo8@ps> zi?-`4?0H!IY-w1!vpyHi9eTWYh){~=EBwQEGD#&Lt6mf|LAFNzLu_*p5rD(oQsr%AJ~63-ZWuPDA}LVjucQRk*W~CJAEwcy^ z!GksB^``UZ=U>(3WG}CjsLIsRp{2f+H%l>a(hp16PTe;t@xo)DaMLG|5-p-zFp82+)JKiE16N52I1KC!$8%?k8wmHK)} zqsHwQIRRi;0Q&pzNA@bzL0FktoXxAde

{fIlPF$zF0l=kdI=t|=Og6iUPg|2=&T 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 literal 0 HcmV?d00001