commit 2eecf6ea4ad2fb2845f21839f8e710a7941a2c2f Author: ModelHub XC Date: Sat Aug 8 03:49:16 2026 +0800 初始化项目,由ModelHub XC社区提供模型 Model: jy1095/qwen3-0.6b-neucodec-multipack-test Source: Original Platform diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..4283e3b --- /dev/null +++ b/.gitattributes @@ -0,0 +1,37 @@ +*.7z filter=lfs diff=lfs merge=lfs -text +*.arrow filter=lfs diff=lfs merge=lfs -text +*.bin filter=lfs diff=lfs merge=lfs -text +*.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 +tokenizer.json filter=lfs diff=lfs merge=lfs -text +train_loss_curve.png filter=lfs diff=lfs merge=lfs -text diff --git a/chat_template.jinja b/chat_template.jinja new file mode 100644 index 0000000..01be9b3 --- /dev/null +++ b/chat_template.jinja @@ -0,0 +1,89 @@ +{%- if tools %} + {{- '<|im_start|>system\n' }} + {%- if messages[0].role == 'system' %} + {{- messages[0].content + '\n\n' }} + {%- endif %} + {{- "# Tools\n\nYou may call one or more functions to assist with the user query.\n\nYou are provided with function signatures within XML tags:\n" }} + {%- for tool in tools %} + {{- "\n" }} + {{- tool | tojson }} + {%- endfor %} + {{- "\n\n\nFor each function call, return a json object with function name and arguments within XML tags:\n\n{\"name\": , \"arguments\": }\n<|im_end|>\n" }} +{%- else %} + {%- if messages[0].role == 'system' %} + {{- '<|im_start|>system\n' + messages[0].content + '<|im_end|>\n' }} + {%- endif %} +{%- endif %} +{%- set ns = namespace(multi_step_tool=true, last_query_index=messages|length - 1) %} +{%- for message in messages[::-1] %} + {%- set index = (messages|length - 1) - loop.index0 %} + {%- if ns.multi_step_tool and message.role == "user" and message.content is string and not(message.content.startswith('') and message.content.endswith('')) %} + {%- set ns.multi_step_tool = false %} + {%- set ns.last_query_index = index %} + {%- endif %} +{%- endfor %} +{%- for message in messages %} + {%- if message.content is string %} + {%- set content = message.content %} + {%- else %} + {%- set content = '' %} + {%- endif %} + {%- if (message.role == "user") or (message.role == "system" and not loop.first) %} + {{- '<|im_start|>' + message.role + '\n' + content + '<|im_end|>' + '\n' }} + {%- elif message.role == "assistant" %} + {%- set reasoning_content = '' %} + {%- if message.reasoning_content is string %} + {%- set reasoning_content = message.reasoning_content %} + {%- else %} + {%- if '' in content %} + {%- set reasoning_content = content.split('')[0].rstrip('\n').split('')[-1].lstrip('\n') %} + {%- set content = content.split('')[-1].lstrip('\n') %} + {%- endif %} + {%- endif %} + {%- if loop.index0 > ns.last_query_index %} + {%- if loop.last or (not loop.last and reasoning_content) %} + {{- '<|im_start|>' + message.role + '\n\n' + reasoning_content.strip('\n') + '\n\n\n' + content.lstrip('\n') }} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- else %} + {{- '<|im_start|>' + message.role + '\n' + content }} + {%- endif %} + {%- if message.tool_calls %} + {%- for tool_call in message.tool_calls %} + {%- if (loop.first and content) or (not loop.first) %} + {{- '\n' }} + {%- endif %} + {%- if tool_call.function %} + {%- set tool_call = tool_call.function %} + {%- endif %} + {{- '\n{"name": "' }} + {{- tool_call.name }} + {{- '", "arguments": ' }} + {%- if tool_call.arguments is string %} + {{- tool_call.arguments }} + {%- else %} + {{- tool_call.arguments | tojson }} + {%- endif %} + {{- '}\n' }} + {%- endfor %} + {%- endif %} + {{- '<|im_end|>\n' }} + {%- elif message.role == "tool" %} + {%- if loop.first or (messages[loop.index0 - 1].role != "tool") %} + {{- '<|im_start|>user' }} + {%- endif %} + {{- '\n\n' }} + {{- content }} + {{- '\n' }} + {%- if loop.last or (messages[loop.index0 + 1].role != "tool") %} + {{- '<|im_end|>\n' }} + {%- endif %} + {%- endif %} +{%- endfor %} +{%- if add_generation_prompt %} + {{- '<|im_start|>assistant\n' }} + {%- if enable_thinking is defined and enable_thinking is false %} + {{- '\n\n\n\n' }} + {%- endif %} +{%- endif %} \ No newline at end of file diff --git a/config.json b/config.json new file mode 100644 index 0000000..94d21af --- /dev/null +++ b/config.json @@ -0,0 +1,63 @@ +{ + "architectures": [ + "Qwen3ForCausalLM" + ], + "attention_bias": false, + "attention_dropout": 0.0, + "bos_token_id": 151643, + "dtype": "bfloat16", + "eos_token_id": 151645, + "head_dim": 128, + "hidden_act": "silu", + "hidden_size": 1024, + "initializer_range": 0.02, + "intermediate_size": 3072, + "layer_types": [ + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention", + "full_attention" + ], + "max_position_embeddings": 40960, + "max_window_layers": 28, + "model_type": "qwen3", + "num_attention_heads": 16, + "num_hidden_layers": 28, + "num_key_value_heads": 8, + "pad_token_id": null, + "rms_norm_eps": 1e-06, + "rope_parameters": { + "rope_theta": 1000000, + "rope_type": "default" + }, + "sliding_window": null, + "tie_word_embeddings": true, + "transformers_version": "5.12.1", + "use_cache": true, + "use_sliding_window": false, + "vocab_size": 217207 +} diff --git a/generation_config.json b/generation_config.json new file mode 100644 index 0000000..7e050e0 --- /dev/null +++ b/generation_config.json @@ -0,0 +1,13 @@ +{ + "bos_token_id": 151643, + "do_sample": true, + "eos_token_id": [ + 151645, + 151643 + ], + "pad_token_id": 151643, + "temperature": 0.6, + "top_k": 20, + "top_p": 0.95, + "transformers_version": "5.12.1" +} diff --git a/model.safetensors b/model.safetensors new file mode 100644 index 0000000..67128d3 --- /dev/null +++ b/model.safetensors @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:e6e46152b1eea4cdfe06d8e5ae278af029dd5e0ebfcd6f3f9167694baf322d42 +size 1325810200 diff --git a/qwen_train_subset_multipack.py b/qwen_train_subset_multipack.py new file mode 100644 index 0000000..cddf4c7 --- /dev/null +++ b/qwen_train_subset_multipack.py @@ -0,0 +1,275 @@ +import csv +import io +import zipfile +from pathlib import Path + +import pandas as pd +import torch +from torch.optim import AdamW +from transformers import AutoModelForCausalLM, AutoTokenizer + + +DATASET_DIR = Path("/workspace/fleurs-r-neucodec") +MODEL_NAME = "Qwen/Qwen3-0.6B" + +NUM_SPEECH_TOKENS = 65536 +MAX_SPEECH_TOKENS = 500 +MAX_LENGTH = 1536 + +TRAIN_SPLIT = "train" +VAL_SPLIT = "dev" + +MAX_TRAIN_EXAMPLES = 500 +MAX_VAL_EXAMPLES = 50 + +LR = 1e-5 +EPOCHS = 1 +EVAL_EVERY = 25 +SAVE_DIR = Path("/workspace/qwen_speech_multipack_2_ckpt") +LOG_CSV = Path("/workspace/train_log_multipack_2.csv") + + +def list_token_zips(split): + zips = sorted((DATASET_DIR / "neucodec").glob(f"en_us-{split}*.zip")) + if not zips: + raise FileNotFoundError(f"No token zips found for split={split}") + return zips + + +def build_zip_index(zip_paths): + index = {} + open_zips = [] + + for path in zip_paths: + zf = zipfile.ZipFile(path) + open_zips.append(zf) + + for name in zf.namelist(): + if name.endswith(".pt"): + stem = Path(name).stem + index[stem] = (zf, name) + + return index, open_zips + + +def load_codes(zip_index, neucodec_path): + stem = Path(str(neucodec_path).replace("\\", "/")).stem + + if stem not in zip_index: + raise FileNotFoundError(f"No token file found for {neucodec_path}") + + zf, entry = zip_index[stem] + obj = torch.load(io.BytesIO(zf.read(entry)), map_location="cpu") + return obj["codes"].flatten().to(torch.long).tolist() + + +def build_single_example(tokenizer, codes, transcript): + codes = codes[:MAX_SPEECH_TOKENS] + + speech_text = " ".join(f"" for code in codes) + prompt = f" {speech_text} \n" + target = str(transcript) + tokenizer.eos_token + + prompt_ids = tokenizer(prompt, add_special_tokens=False)["input_ids"] + target_ids = tokenizer(target, add_special_tokens=False)["input_ids"] + + input_ids = prompt_ids + target_ids + labels = [-100] * len(prompt_ids) + target_ids + + input_ids = input_ids[:MAX_LENGTH] + labels = labels[:MAX_LENGTH] + + return input_ids, labels + + +def pack_examples(single_examples): + packed = [] + cur_input_ids = [] + cur_labels = [] + cur_segment_ids = [] + segment_id = 0 + + for input_ids, labels in single_examples: + if not input_ids: + continue + + if cur_input_ids and len(cur_input_ids) + len(input_ids) > MAX_LENGTH: + packed.append( + { + "input_ids": torch.tensor(cur_input_ids, dtype=torch.long), + "labels": torch.tensor(cur_labels, dtype=torch.long), + "segment_ids": torch.tensor(cur_segment_ids, dtype=torch.long), + } + ) + cur_input_ids = [] + cur_labels = [] + cur_segment_ids = [] + segment_id = 0 + + if len(input_ids) > MAX_LENGTH: + input_ids = input_ids[:MAX_LENGTH] + labels = labels[:MAX_LENGTH] + + cur_input_ids.extend(input_ids) + cur_labels.extend(labels) + cur_segment_ids.extend([segment_id] * len(input_ids)) + segment_id += 1 + + if cur_input_ids: + packed.append( + { + "input_ids": torch.tensor(cur_input_ids, dtype=torch.long), + "labels": torch.tensor(cur_labels, dtype=torch.long), + "segment_ids": torch.tensor(cur_segment_ids, dtype=torch.long), + } + ) + + return packed + + +def load_examples(tokenizer, split, max_examples): + parquet = DATASET_DIR / "data" / f"en_us-{split}.parquet" + df = pd.read_parquet(parquet).head(max_examples) + + zip_paths = list_token_zips(split) + zip_index, open_zips = build_zip_index(zip_paths) + + single_examples = [] + for _, row in df.iterrows(): + codes = load_codes(zip_index, row["neucodec_path"]) + single_examples.append(build_single_example(tokenizer, codes, row["sentence"])) + + packed_examples = pack_examples(single_examples) + return packed_examples, open_zips + + +def make_block_causal_mask(segment_ids, dtype): + # segment_ids: [L]. Tokens can attend only to earlier tokens in the same packed example. + segment_ids = segment_ids.cuda() + length = segment_ids.numel() + same_segment = segment_ids[:, None] == segment_ids[None, :] + causal = torch.arange(length, device="cuda")[:, None] >= torch.arange(length, device="cuda")[None, :] + allowed = same_segment & causal + + mask = torch.zeros((1, 1, length, length), device="cuda", dtype=dtype) + mask = mask.masked_fill(~allowed[None, None, :, :], torch.finfo(dtype).min) + return mask + + +def make_position_ids(segment_ids): + # Reset positions at each packed-example boundary. + position_ids = torch.zeros_like(segment_ids) + for segment in torch.unique(segment_ids): + idx = torch.nonzero(segment_ids == segment, as_tuple=False).flatten() + position_ids[idx] = torch.arange(idx.numel(), dtype=torch.long) + return position_ids.unsqueeze(0).cuda() + + +@torch.inference_mode() +def evaluate(model, examples): + model.eval() + losses = [] + + for ex in examples: + input_ids = ex["input_ids"].unsqueeze(0).cuda() + labels = ex["labels"].unsqueeze(0).cuda() + attention_mask = make_block_causal_mask(ex["segment_ids"], model.dtype) + position_ids = make_position_ids(ex["segment_ids"]) + + out = model( + input_ids=input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + labels=labels, + ) + losses.append(float(out.loss)) + + model.train() + return sum(losses) / len(losses) + + +def main(): + tokenizer = AutoTokenizer.from_pretrained(MODEL_NAME, trust_remote_code=True) + tokenizer.pad_token = tokenizer.eos_token + + speech_tokens = [f"" for i in range(NUM_SPEECH_TOKENS)] + tokenizer.add_tokens(["", ""] + speech_tokens) + + print("Loading and multipacking train examples...") + train_examples, train_zips = load_examples(tokenizer, TRAIN_SPLIT, MAX_TRAIN_EXAMPLES) + + print("Loading and multipacking validation examples...") + val_examples, val_zips = load_examples(tokenizer, VAL_SPLIT, MAX_VAL_EXAMPLES) + + print(f"packed train batches: {len(train_examples)}") + print(f"packed val batches: {len(val_examples)}") + print(f"vocab size: {len(tokenizer)}") + + model = AutoModelForCausalLM.from_pretrained( + MODEL_NAME, + torch_dtype=torch.bfloat16, + trust_remote_code=True, + ) + model.resize_token_embeddings(len(tokenizer)) + model.cuda() + model.train() + + optimizer = AdamW(model.parameters(), lr=LR) + + with LOG_CSV.open("w", newline="") as f: + writer = csv.DictWriter(f, fieldnames=["step", "train_loss", "val_loss"]) + writer.writeheader() + + step = 0 + for epoch in range(EPOCHS): + for ex in train_examples: + step += 1 + + input_ids = ex["input_ids"].unsqueeze(0).cuda() + labels = ex["labels"].unsqueeze(0).cuda() + attention_mask = make_block_causal_mask(ex["segment_ids"], model.dtype) + position_ids = make_position_ids(ex["segment_ids"]) + + out = model( + input_ids=input_ids, + attention_mask=attention_mask, + position_ids=position_ids, + labels=labels, + ) + + loss = out.loss + loss.backward() + optimizer.step() + optimizer.zero_grad(set_to_none=True) + + train_loss = float(loss.detach()) + val_loss = "" + + if step % EVAL_EVERY == 0: + val_loss = evaluate(model, val_examples) + print(f"step {step:04d} train_loss {train_loss:.4f} val_loss {val_loss:.4f}") + else: + print(f"step {step:04d} train_loss {train_loss:.4f}") + + with LOG_CSV.open("a", newline="") as f: + writer = csv.DictWriter(f, fieldnames=["step", "train_loss", "val_loss"]) + writer.writerow( + { + "step": step, + "train_loss": train_loss, + "val_loss": val_loss, + } + ) + + SAVE_DIR.mkdir(parents=True, exist_ok=True) + model.save_pretrained(SAVE_DIR) + tokenizer.save_pretrained(SAVE_DIR) + print(f"saved checkpoint: {SAVE_DIR}") + print(f"saved log: {LOG_CSV}") + + for zf in train_zips + val_zips: + zf.close() + + +if __name__ == "__main__": + main() diff --git a/tokenizer.json b/tokenizer.json new file mode 100644 index 0000000..8f9c28d --- /dev/null +++ b/tokenizer.json @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:b6683f1da5a789077b380d431d64b639063feb7b51e394e6eab15fb2e2ae3072 +size 23929296 diff --git a/tokenizer_config.json b/tokenizer_config.json new file mode 100644 index 0000000..5e1a57d --- /dev/null +++ b/tokenizer_config.json @@ -0,0 +1,30 @@ +{ + "add_prefix_space": false, + "backend": "tokenizers", + "bos_token": null, + "clean_up_tokenization_spaces": false, + "eos_token": "<|im_end|>", + "errors": "replace", + "extra_special_tokens": [ + "<|im_start|>", + "<|im_end|>", + "<|object_ref_start|>", + "<|object_ref_end|>", + "<|box_start|>", + "<|box_end|>", + "<|quad_start|>", + "<|quad_end|>", + "<|vision_start|>", + "<|vision_end|>", + "<|vision_pad|>", + "<|image_pad|>", + "<|video_pad|>" + ], + "is_local": false, + "local_files_only": false, + "model_max_length": 131072, + "pad_token": "<|im_end|>", + "split_special_tokens": false, + "tokenizer_class": "Qwen2Tokenizer", + "unk_token": null +} diff --git a/train_log_multipack_2.csv b/train_log_multipack_2.csv new file mode 100644 index 0000000..ec1d550 --- /dev/null +++ b/train_log_multipack_2.csv @@ -0,0 +1,459 @@ +step,train_loss,val_loss +1,4.83737850189209, +2,4.579104423522949, +3,3.8569114208221436, +4,4.565186977386475, +5,3.4103474617004395, +6,4.785758018493652, +7,4.017621994018555, +8,4.826681137084961, +9,3.9895143508911133, +10,4.845824241638184, +11,4.819087028503418, +12,4.493717670440674, +13,2.8794360160827637, +14,4.196484565734863, +15,3.2648439407348633, +16,4.475448131561279, +17,3.101593017578125, +18,3.4317128658294678, +19,4.627690315246582, +20,3.764618396759033, +21,4.100680351257324, +22,4.149367332458496, +23,1.7279186248779297, +24,3.528687000274658, +25,4.040360450744629,3.6418914389103016 +26,2.5350730419158936, +27,4.534997463226318, +28,4.401715278625488, +29,3.060065507888794, +30,3.409668207168579, +31,3.075878143310547, +32,3.9714224338531494, +33,2.8314208984375, +34,3.813950300216675, +35,3.7870593070983887, +36,3.8533389568328857, +37,3.509331703186035, +38,4.414717674255371, +39,3.541666030883789, +40,3.0279834270477295, +41,2.312675714492798, +42,3.2705774307250977, +43,3.316633939743042, +44,4.442257404327393, +45,4.468428134918213, +46,3.3701953887939453, +47,4.127744197845459, +48,3.1203060150146484, +49,3.164045810699463, +50,3.515629529953003,3.555581473289652 +51,4.224531173706055, +52,3.420295476913452, +53,3.550535202026367, +54,3.0400187969207764, +55,4.082877159118652, +56,2.9616825580596924, +57,3.734877347946167, +58,5.549570083618164, +59,3.850841999053955, +60,4.226750373840332, +61,4.564910411834717, +62,3.049321174621582, +63,3.783742666244507, +64,3.2545578479766846, +65,3.968663215637207, +66,4.826290130615234, +67,3.6602656841278076, +68,4.045124530792236, +69,3.5444107055664062, +70,3.9055728912353516, +71,2.661231517791748, +72,3.7383553981781006, +73,3.1351959705352783, +74,4.062368392944336, +75,3.156069755554199,3.514297257078455 +76,3.0109686851501465, +77,4.426510810852051, +78,3.423661470413208, +79,3.532076835632324, +80,3.2007856369018555, +81,2.7224533557891846, +82,3.541182518005371, +83,4.03301477432251, +84,3.0639500617980957, +85,2.8058218955993652, +86,4.198553562164307, +87,4.709975242614746, +88,3.4877724647521973, +89,3.526134967803955, +90,3.586360454559326, +91,2.8046786785125732, +92,3.2414307594299316, +93,3.693235158920288, +94,3.6420347690582275, +95,4.170336723327637, +96,2.8600430488586426, +97,3.4960365295410156, +98,2.7975122928619385, +99,4.142976760864258, +100,3.742992401123047,3.487763815737785 +101,3.799506187438965, +102,2.9835662841796875, +103,3.813058614730835, +104,3.8280656337738037, +105,3.2202537059783936, +106,3.07291316986084, +107,3.071430206298828, +108,3.132784128189087, +109,4.195946216583252, +110,2.929187059402466, +111,3.574751377105713, +112,3.8678948879241943, +113,3.149278163909912, +114,3.6508023738861084, +115,4.515976428985596, +116,4.646908760070801, +117,4.965893268585205, +118,2.782670497894287, +119,4.051075458526611, +120,3.78477144241333, +121,3.0531561374664307, +122,3.8409078121185303, +123,3.7307589054107666, +124,4.737176895141602, +125,2.0638153553009033,3.4708150904229345 +126,2.3227977752685547, +127,3.319139003753662, +128,4.758574485778809, +129,4.331243515014648, +130,3.439526081085205, +131,3.6598761081695557, +132,4.913437366485596, +133,4.259307384490967, +134,2.245208263397217, +135,3.726602792739868, +136,4.2422943115234375, +137,3.2248215675354004, +138,3.0694921016693115, +139,4.343524932861328, +140,2.5264651775360107, +141,4.922786712646484, +142,3.552476406097412, +143,3.1056058406829834, +144,4.8071675300598145, +145,1.5579023361206055, +146,3.97298002243042, +147,3.3424508571624756, +148,3.5528564453125, +149,3.0181264877319336, +150,3.5836517810821533,3.464779980639194 +151,4.640353679656982, +152,3.947347402572632, +153,3.9362823963165283, +154,4.109447956085205, +155,3.775275468826294, +156,2.2141740322113037, +157,3.9296300411224365, +158,3.847964286804199, +159,3.5097544193267822, +160,3.119296073913574, +161,3.451831102371216, +162,3.1743721961975098, +163,3.4725611209869385, +164,4.318027973175049, +165,3.184769630432129, +166,3.5490171909332275, +167,3.897948980331421, +168,3.4800829887390137, +169,3.035662889480591, +170,3.121901512145996, +171,2.8668429851531982, +172,2.8848462104797363, +173,3.2499208450317383, +174,2.87648868560791, +175,3.1791110038757324,3.45171933985771 +176,3.20145845413208, +177,3.6656036376953125, +178,4.254746913909912, +179,3.8568413257598877, +180,3.3873519897460938, +181,2.5699331760406494, +182,4.006359577178955, +183,4.802577018737793, +184,3.8868982791900635, +185,3.3518261909484863, +186,2.449648857116699, +187,4.026482105255127, +188,3.218484878540039, +189,2.801923990249634, +190,2.4700212478637695, +191,4.033946990966797, +192,3.5595896244049072, +193,2.2776455879211426, +194,5.420859336853027, +195,2.804280996322632, +196,2.85151743888855, +197,2.7877354621887207, +198,3.6410443782806396, +199,2.140655994415283, +200,4.907998561859131,3.4415235874500683 +201,3.9623546600341797, +202,3.770249605178833, +203,3.7238171100616455, +204,3.3219447135925293, +205,2.794365882873535, +206,3.19931960105896, +207,4.658032417297363, +208,4.272351264953613, +209,3.0018627643585205, +210,4.852128982543945, +211,4.100520133972168, +212,3.228710651397705, +213,2.8996849060058594, +214,4.030970573425293, +215,3.3683249950408936, +216,3.934347152709961, +217,3.7863426208496094, +218,3.919623613357544, +219,4.968966007232666, +220,4.764462947845459, +221,2.889967441558838, +222,4.756126880645752, +223,3.971885919570923, +224,4.080149173736572, +225,4.033597469329834,3.4432580166674676 +226,4.219792366027832, +227,2.8466875553131104, +228,3.5342724323272705, +229,3.143789768218994, +230,2.317599296569824, +231,3.4089839458465576, +232,3.8498101234436035, +233,2.375635862350464, +234,4.283705234527588, +235,3.4035141468048096, +236,4.934589862823486, +237,3.1188302040100098, +238,2.789722442626953, +239,1.6042765378952026, +240,3.65496563911438, +241,4.631184101104736, +242,3.5723822116851807, +243,4.454005718231201, +244,3.399834156036377, +245,3.7455062866210938, +246,4.557286262512207, +247,3.1282284259796143, +248,3.116020917892456, +249,3.6729848384857178, +250,3.3174736499786377,3.444297293399243 +251,2.4893667697906494, +252,3.791905403137207, +253,4.210204601287842, +254,3.109525680541992, +255,2.527846336364746, +256,4.1202006340026855, +257,4.2178826332092285, +258,3.3063230514526367, +259,2.333925485610962, +260,5.110389232635498, +261,2.777125597000122, +262,3.2000536918640137, +263,3.6621885299682617, +264,4.39784574508667, +265,3.153855562210083, +266,5.073533058166504, +267,2.8840157985687256, +268,3.6498281955718994, +269,2.7056210041046143, +270,4.258342742919922, +271,4.288335800170898, +272,3.777733564376831, +273,2.9544053077697754, +274,4.371647357940674, +275,3.1846938133239746,3.4193343050936433 +276,3.6150033473968506, +277,3.0862834453582764, +278,2.6581320762634277, +279,3.1265101432800293, +280,2.7327654361724854, +281,4.979248046875, +282,3.249157190322876, +283,3.3512628078460693, +284,4.189081192016602, +285,4.366570472717285, +286,3.923560857772827, +287,3.81119441986084, +288,4.06733512878418, +289,3.2456679344177246, +290,3.121525764465332, +291,4.4502763748168945, +292,2.859525442123413, +293,3.103595018386841, +294,3.5803730487823486, +295,3.3084216117858887, +296,5.044394493103027, +297,4.349173545837402, +298,2.487546443939209, +299,3.441528081893921, +300,4.484344005584717,3.422133039920888 +301,3.191145896911621, +302,3.6174354553222656, +303,3.4205496311187744, +304,3.1575920581817627, +305,2.7539448738098145, +306,2.5054097175598145, +307,4.509216785430908, +308,4.329964637756348, +309,3.087510347366333, +310,3.219388723373413, +311,2.9950687885284424, +312,3.3501241207122803, +313,3.3984124660491943, +314,3.0490026473999023, +315,3.440187931060791, +316,5.148359298706055, +317,3.3574347496032715, +318,2.603912591934204, +319,3.200441360473633, +320,2.2681984901428223, +321,1.3850171566009521, +322,4.180147647857666, +323,2.865475654602051, +324,3.8928990364074707, +325,2.913665294647217,3.4212434951295245 +326,2.9794881343841553, +327,3.4925873279571533, +328,2.337425708770752, +329,3.538888454437256, +330,3.5051937103271484, +331,4.471581935882568, +332,2.1943535804748535, +333,2.4782488346099854, +334,4.359781742095947, +335,3.9852702617645264, +336,3.104440450668335, +337,2.7623770236968994, +338,2.6553149223327637, +339,2.8583669662475586, +340,3.085019111633301, +341,2.5710747241973877, +342,4.485040664672852, +343,2.7791786193847656, +344,3.3884494304656982, +345,2.7618203163146973, +346,3.5326671600341797, +347,3.1701102256774902, +348,2.5622284412384033, +349,3.6489336490631104, +350,4.041916847229004,3.417217533639137 +351,3.303135633468628, +352,3.7105326652526855, +353,2.986264228820801, +354,3.894716501235962, +355,3.408475160598755, +356,2.84619140625, +357,3.485544443130493, +358,3.0264556407928467, +359,3.6007182598114014, +360,3.5983495712280273, +361,3.245755195617676, +362,2.8272345066070557, +363,2.6484899520874023, +364,3.5493357181549072, +365,3.6680004596710205, +366,4.227343559265137, +367,3.180736780166626, +368,4.276458263397217, +369,3.379707098007202, +370,3.913658618927002, +371,3.6986403465270996, +372,4.247578144073486, +373,2.886542320251465, +374,4.0589470863342285, +375,4.18842887878418,3.4187491853186427 +376,4.287686347961426, +377,3.424771785736084, +378,4.727417945861816, +379,2.1747705936431885, +380,3.835639476776123, +381,1.264375925064087, +382,3.4173645973205566, +383,3.6598403453826904, +384,3.8715529441833496, +385,3.3528504371643066, +386,5.078052997589111, +387,2.4622654914855957, +388,3.9295761585235596, +389,4.596060276031494, +390,4.146194934844971, +391,3.3156752586364746, +392,2.829684019088745, +393,3.097052812576294, +394,2.0725510120391846, +395,2.5597586631774902, +396,3.6028549671173096, +397,3.8087193965911865, +398,3.8290321826934814, +399,3.3390116691589355, +400,2.952338695526123,3.4204193125379847 +401,4.4381818771362305, +402,3.758164644241333, +403,3.729465961456299, +404,3.8695130348205566, +405,4.027613162994385, +406,3.333869695663452, +407,3.0652832984924316, +408,3.888929605484009, +409,3.106435775756836, +410,3.2263383865356445, +411,3.8024957180023193, +412,2.508396625518799, +413,3.454288959503174, +414,4.009916305541992, +415,4.484684944152832, +416,3.197667121887207, +417,3.8992998600006104, +418,2.119562864303589, +419,3.722830295562744, +420,3.4790313243865967, +421,3.4761900901794434, +422,2.4494388103485107, +423,3.956528902053833, +424,3.0699243545532227, +425,3.4583213329315186,3.412918080674841 +426,3.8467800617218018, +427,3.8987865447998047, +428,5.462136268615723, +429,4.194992542266846, +430,3.279252529144287, +431,3.5070934295654297, +432,2.9080519676208496, +433,3.252742290496826, +434,3.7637205123901367, +435,4.262693881988525, +436,3.373936176300049, +437,2.6735756397247314, +438,4.155456066131592, +439,2.1575229167938232, +440,3.4645214080810547, +441,4.160406112670898, +442,3.847316026687622, +443,3.058614730834961, +444,3.3499584197998047, +445,3.798222303390503, +446,3.033684730529785, +447,3.512378215789795, +448,2.828388214111328, +449,4.068789482116699, +450,4.078660011291504,3.412485858227344 +451,3.502532482147217, +452,4.521447658538818, +453,3.8204264640808105, +454,3.152890205383301, +455,2.990062713623047, +456,4.356359481811523, +457,4.176229953765869, +458,4.333327770233154, diff --git a/train_loss_curve.png b/train_loss_curve.png new file mode 100644 index 0000000..bc29c88 --- /dev/null +++ b/train_loss_curve.png @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:d10485692c0d0e1d800972e4cb6c66ce6fa0f0945d90b10ec2233e17f3863b23 +size 235765