{"id":86008,"date":"2026-04-25T15:28:23","date_gmt":"2026-04-25T15:28:23","guid":{"rendered":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/"},"modified":"2026-04-25T15:28:23","modified_gmt":"2026-04-25T15:28:23","slug":"a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation","status":"publish","type":"post","link":"https:\/\/youzum.net\/ja\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/","title":{"rendered":"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation"},"content":{"rendered":"<p>In this tutorial, we work with <a href=\"http:\/\/huggingface.co\/datasets\/microsoft\/OpenMementos\"><strong>Microsoft\u2019s OpenMementos<\/strong><\/a><strong> <\/strong>dataset and explore how reasoning traces are structured through blocks and mementos in a practical, Colab-ready workflow. We stream the dataset efficiently, parse its special-token format, inspect how reasoning and summaries are organized, and measure the compression provided by the memento representation across different domains. As we move through the analysis, we also visualize dataset patterns, align the streamed format with the richer full subset, simulate inference-time compression, and prepare the data for supervised fine-tuning. In this way, we build both an intuitive and technical understanding of how OpenMementos captures long-form reasoning while preserving compact summaries that can support efficient training and inference.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">!pip install -q -U datasets transformers matplotlib pandas\n\n\nimport re, itertools, textwrap\nfrom collections import Counter\nfrom typing import Dict\nimport pandas as pd\nimport matplotlib.pyplot as plt\nfrom datasets import load_dataset\n\n\nDATASET = \"microsoft\/OpenMementos\"\n\n\nds_stream = load_dataset(DATASET, split=\"train\", streaming=True)\nfirst_row = next(iter(ds_stream))\nprint(\"Columns     :\", list(first_row.keys()))\nprint(\"Domain      :\", first_row[\"domain\"], \"| Source:\", first_row[\"source\"])\nprint(\"Problem head:\", first_row[\"problem\"][:160].replace(\"n\", \" \"), \"...\")<\/code><\/pre>\n<\/div>\n<\/div>\n<p>We install the required libraries and import the core tools needed for dataset streaming, parsing, analysis, and visualization. We then connect to the Microsoft OpenMementos dataset in streaming mode to inspect it without downloading the entire dataset locally. By reading the first example, we begin understanding the dataset schema, the problem format, and the domain and source metadata attached to each reasoning trace.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">BLOCK_RE   = re.compile(r\"&lt;|block_start|&gt;(.*?)&lt;|block_end|&gt;\",     re.DOTALL)\nSUMMARY_RE = re.compile(r\"&lt;|summary_start|&gt;(.*?)&lt;|summary_end|&gt;\", re.DOTALL)\nTHINK_RE   = re.compile(r\"&lt;think&gt;(.*?)&lt;\/think&gt;\",                      re.DOTALL)\n\n\ndef parse_memento(response: str) -&gt; Dict:\n   blocks    = [m.strip() for m in BLOCK_RE.findall(response)]\n   summaries = [m.strip() for m in SUMMARY_RE.findall(response)]\n   think_m   = THINK_RE.search(response)\n   final_ans = response.split(\"&lt;\/think&gt;\")[-1].strip() if \"&lt;\/think&gt;\" in response else \"\"\n   return {\"blocks\": blocks, \"summaries\": summaries,\n           \"reasoning\": (think_m.group(1) if think_m else \"\"),\n           \"final_answer\": final_ans}\n\n\nparsed = parse_memento(first_row[\"response\"])\nprint(f\"n\u2192 {len(parsed['blocks'])} blocks, {len(parsed['summaries'])} mementos parsed\")\nprint(\"First block   :\", parsed[\"blocks\"][0][:140].replace(\"n\", \" \"), \"...\")\nprint(\"First memento :\", parsed[\"summaries\"][0][:140].replace(\"n\", \" \"), \"...\")\n\n\nN_SAMPLES = 500\nrows = []\nfor i, ex in enumerate(itertools.islice(\n       load_dataset(DATASET, split=\"train\", streaming=True), N_SAMPLES)):\n   p = parse_memento(ex[\"response\"])\n   if not p[\"blocks\"] or len(p[\"blocks\"]) != len(p[\"summaries\"]):\n       continue\n   blk_c = sum(len(b) for b in p[\"blocks\"])\n   sum_c = sum(len(s) for s in p[\"summaries\"])\n   blk_w = sum(len(b.split()) for b in p[\"blocks\"])\n   sum_w = sum(len(s.split()) for s in p[\"summaries\"])\n   rows.append(dict(domain=ex[\"domain\"], source=ex[\"source\"],\n                    n_blocks=len(p[\"blocks\"]),\n                    block_chars=blk_c, summ_chars=sum_c,\n                    block_words=blk_w, summ_words=sum_w,\n                    compress_char=sum_c \/ max(blk_c, 1),\n                    compress_word=sum_w \/ max(blk_w, 1)))\n   if (i + 1) % 100 == 0:\n       print(f\"  processed {i+1}\/{N_SAMPLES}\")\n\n\ndf = pd.DataFrame(rows)\nprint(f\"nAnalyzed {len(df)} rows. Domain counts:\")\nprint(df[\"domain\"].value_counts().to_string())\n\n\nper_dom = df.groupby(\"domain\").agg(\n   n=(\"domain\", \"count\"),\n   median_blocks=(\"n_blocks\", \"median\"),\n   median_block_words=(\"block_words\", \"median\"),\n   median_summ_words=(\"summ_words\", \"median\"),\n   median_char_ratio=(\"compress_char\", \"median\"),\n   median_word_ratio=(\"compress_word\", \"median\"),\n).round(3)\nprint(\"nPer-domain medians (ratio = mementos \/ blocks):\")\nprint(per_dom.to_string())<\/code><\/pre>\n<\/div>\n<\/div>\n<p>We define the regex-based parser that extracts reasoning blocks, memento summaries, the main thinking section, and the final answer from each response. We test the parser on the first streamed example and confirm that the block-summary structure is being captured correctly. We then run a streaming analysis over multiple samples to compute block counts, word counts, character counts, and compression ratios, which helps us study how the dataset behaves across examples and domains.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">def compress_trace(response: str, keep_last_k: int = 1) -&gt; str:\n   blocks, summaries = BLOCK_RE.findall(response), SUMMARY_RE.findall(response)\n   if not blocks or len(blocks) != len(summaries):\n       return response\n   out, n = [\"&lt;think&gt;\"], len(blocks)\n   for i, (b, s) in enumerate(zip(blocks, summaries)):\n       if i &gt;= n - keep_last_k:\n           out.append(f\"&lt;|block_start|&gt;{b}&lt;|block_end|&gt;\")\n           out.append(f\"&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;\")\n       else:\n           out.append(f\"&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;\")\n   out.append(\"&lt;\/think&gt;\")\n   out.append(response.split(\"&lt;\/think&gt;\")[-1])\n   return \"n\".join(out)\n\n\norig, comp = first_row[\"response\"], compress_trace(first_row[\"response\"], 1)\nprint(f\"nOriginal   : {len(orig):&gt;8,} chars\")\nprint(f\"Compressed : {len(comp):&gt;8,} chars ({len(comp)\/len(orig)*100:.1f}% of original)\")\n\n\nfrom transformers import AutoTokenizer\ntok = AutoTokenizer.from_pretrained(\"gpt2\")\nMEM_TOKENS = [\"&lt;|block_start|&gt;\", \"&lt;|block_end|&gt;\",\n             \"&lt;|summary_start|&gt;\", \"&lt;|summary_end|&gt;\",\n             \"&lt;think&gt;\", \"&lt;\/think&gt;\"]\ntok.add_special_tokens({\"additional_special_tokens\": MEM_TOKENS})\n\n\ndef tlen(s): return len(tok(s, add_special_tokens=False).input_ids)\n\n\nblk_tok = sum(tlen(b) for b in parsed[\"blocks\"])\nsum_tok = sum(tlen(s) for s in parsed[\"summaries\"])\nprint(f\"nTrace-level token compression for this example:\")\nprint(f\"  block tokens    = {blk_tok}\")\nprint(f\"  memento tokens  = {sum_tok}\")\nprint(f\"  compression     = {blk_tok \/ max(sum_tok,1):.2f}\u00d7  (paper reports ~6\u00d7)\")\n\n\ndef to_chat(ex):\n   return {\"messages\": [\n       {\"role\": \"user\",      \"content\": ex[\"problem\"]},\n       {\"role\": \"assistant\", \"content\": ex[\"response\"]},\n   ]}\nchat_stream = load_dataset(DATASET, split=\"train\", streaming=True).map(to_chat)\nchat_ex = next(iter(chat_stream))\nprint(\"nSFT chat example (truncated):\")\nfor m in chat_ex[\"messages\"]:\n   print(f\"  [{m['role']:9s}] {m['content'][:130].replace(chr(10),' ')}...\")<\/code><\/pre>\n<\/div>\n<\/div>\n<p>We visualize the dataset\u2019s structural patterns by plotting block counts, compression ratios, and the relationship between block size and memento size. We compare these distributions across domains to see how reasoning organization differs between math, code, and science examples. We also stream one example from the full subset and inspect its additional sentence-level and block-alignment fields, which helps us understand the richer internal annotation pipeline behind the dataset.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">def compress_trace(response: str, keep_last_k: int = 1) -&gt; str:\n   blocks, summaries = BLOCK_RE.findall(response), SUMMARY_RE.findall(response)\n   if not blocks or len(blocks) != len(summaries):\n       return response\n   out, n = [\"&lt;think&gt;\"], len(blocks)\n   for i, (b, s) in enumerate(zip(blocks, summaries)):\n       if i &gt;= n - keep_last_k:\n           out.append(f\"&lt;|block_start|&gt;{b}&lt;|block_end|&gt;\")\n           out.append(f\"&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;\")\n       else:\n           out.append(f\"&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;\")\n   out.append(\"&lt;\/think&gt;\")\n   out.append(response.split(\"&lt;\/think&gt;\")[-1])\n   return \"n\".join(out)\n\n\norig, comp = first_row[\"response\"], compress_trace(first_row[\"response\"], 1)\nprint(f\"nOriginal   : {len(orig):&gt;8,} chars\")\nprint(f\"Compressed : {len(comp):&gt;8,} chars ({len(comp)\/len(orig)*100:.1f}% of original)\")\n\n\nfrom transformers import AutoTokenizer\ntok = AutoTokenizer.from_pretrained(\"gpt2\")\nMEM_TOKENS = [\"&lt;|block_start|&gt;\", \"&lt;|block_end|&gt;\",\n             \"&lt;|summary_start|&gt;\", \"&lt;|summary_end|&gt;\",\n             \"&lt;think&gt;\", \"&lt;\/think&gt;\"]\ntok.add_special_tokens({\"additional_special_tokens\": MEM_TOKENS})\n\n\ndef tlen(s): return len(tok(s, add_special_tokens=False).input_ids)\n\n\nblk_tok = sum(tlen(b) for b in parsed[\"blocks\"])\nsum_tok = sum(tlen(s) for s in parsed[\"summaries\"])\nprint(f\"nTrace-level token compression for this example:\")\nprint(f\"  block tokens    = {blk_tok}\")\nprint(f\"  memento tokens  = {sum_tok}\")\nprint(f\"  compression     = {blk_tok \/ max(sum_tok,1):.2f}\u00d7  (paper reports ~6\u00d7)\")\n\n\ndef to_chat(ex):\n   return {\"messages\": [\n       {\"role\": \"user\",      \"content\": ex[\"problem\"]},\n       {\"role\": \"assistant\", \"content\": ex[\"response\"]},\n   ]}\nchat_stream = load_dataset(DATASET, split=\"train\", streaming=True).map(to_chat)\nchat_ex = next(iter(chat_stream))\nprint(\"nSFT chat example (truncated):\")\nfor m in chat_ex[\"messages\"]:\n   print(f\"  [{m['role']:9s}] {m['content'][:130].replace(chr(10),' ')}...\")<\/code><\/pre>\n<\/div>\n<\/div>\n<p>We simulate inference-time compression by rewriting a reasoning trace so that older blocks are replaced by their mementos while the latest blocks remain intact. We then compare the original and compressed trace lengths to see how much context can be reduced in practice. After that, we integrate a tokenizer, add special memento tokens, measure token-level compression, and convert the dataset to an SFT-style chat format suitable for training workflows.<\/p>\n<div class=\"dm-code-snippet dark dm-normal-version default no-background-mobile\">\n<div class=\"control-language\">\n<div class=\"dm-buttons\">\n<div class=\"dm-buttons-left\">\n<div class=\"dm-button-snippet red-button\"><\/div>\n<div class=\"dm-button-snippet orange-button\"><\/div>\n<div class=\"dm-button-snippet green-button\"><\/div>\n<\/div>\n<div class=\"dm-buttons-right\"><a><span class=\"dm-copy-text\">Copy Code<\/span><span class=\"dm-copy-confirmed\">Copied<\/span><span class=\"dm-error-message\">Use a different Browser<\/span><\/a><\/div>\n<\/div>\n<pre class=\"no-line-numbers\"><code class=\"no-wrap language-php\">def render_trace(response: str, width: int = 220) -&gt; None:\n   p = parse_memento(response)\n   print(\"=\" * 72)\n   print(f\"{len(p['blocks'])} blocks \u00b7 {len(p['summaries'])} mementos\")\n   print(\"=\" * 72)\n   for i, (b, s) in enumerate(zip(p[\"blocks\"], p[\"summaries\"]), 1):\n       ratio = len(s) \/ max(len(b), 1) * 100\n       print(f\"n<img decoding=\"async\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png\" alt=\"\u25b6\" class=\"wp-smiley\" \/> BLOCK {i}  ({len(b):,} chars)\")\n       print(textwrap.indent(textwrap.shorten(b.replace(\"n\", \" \"), width=width), \"  \"))\n       print(f\"<img decoding=\"async\" src=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25c0.png\" alt=\"\u25c0\" class=\"wp-smiley\" \/> MEMENTO {i}  ({len(s):,} chars \u00b7 {ratio:.1f}% of block)\")\n       print(textwrap.indent(textwrap.shorten(s.replace(\"n\", \" \"), width=width), \"  \"))\n   if p[\"final_answer\"]:\n       print(\"n\u2605 FINAL ANSWER\")\n       print(textwrap.indent(textwrap.shorten(p[\"final_answer\"].replace(\"n\",\" \"),\n                                              width=width*2), \"  \"))\n\n\nrender_trace(first_row[\"response\"])<\/code><\/pre>\n<\/div>\n<\/div>\n<p>We build a pretty-printer that renders a single reasoning trace in a much more readable block-by-block format. We display each block alongside its paired memento and calculate the summary\u2019s size relative to the original block, making the compression effect easy to inspect manually. By running this renderer on the first example, we create a clean qualitative view of how OpenMementos organizes reasoning and preserves essential information through summaries.<\/p>\n<p>In conclusion, we gained a clear view of how OpenMementos represents reasoning as a sequence of detailed blocks paired with concise mementos, and we saw why this structure is useful for context compression. We parsed real examples, computed domain-level statistics, compared block and summary lengths, and observed how compressed traces can reduce token usage while still retaining key information. We also aligned the streamed dataset format with the full subset, converted the data to an SFT-ready chat structure, and built tools to more clearly inspect traces. Through this end-to-end workflow, we understand the dataset itself and see how it can serve as a practical foundation for studying reasoning traces, memory-style summarization, and efficient long-context model behavior.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" \/>\n<p>Check out\u00a0the\u00a0<strong><a href=\"https:\/\/github.com\/Marktechpost\/AI-Agents-Projects-Tutorials\/blob\/main\/Deep%20Learning\/microsoft_openmementos_parsing_and_compression_marktechpost.py\" target=\"_blank\" rel=\"noreferrer noopener\">Full Codes here<\/a><\/strong>.<strong>\u00a0<\/strong>Also,\u00a0feel free to follow us on\u00a0<strong><a href=\"https:\/\/x.com\/intent\/follow?screen_name=marktechpost\" target=\"_blank\" rel=\"noreferrer noopener\"><mark>Twitter<\/mark><\/a><\/strong>\u00a0and don\u2019t forget to join our\u00a0<strong><a href=\"https:\/\/www.reddit.com\/r\/machinelearningnews\/\" target=\"_blank\" rel=\"noreferrer noopener\">130k+ ML SubReddit<\/a><\/strong>\u00a0and Subscribe to\u00a0<strong><a href=\"https:\/\/www.aidevsignals.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">our Newsletter<\/a><\/strong>. Wait! are you on telegram?\u00a0<strong><a href=\"https:\/\/t.me\/machinelearningresearchnews\" target=\"_blank\" rel=\"noreferrer noopener\">now you can join us on telegram as well.<\/a><\/strong><\/p>\n<p>Need to partner with us for promoting your GitHub Repo OR Hugging Face Page OR Product Release OR Webinar etc.?\u00a0<strong><a href=\"https:\/\/forms.gle\/MTNLpmJtsFA3VRVd9\" target=\"_blank\" rel=\"noreferrer noopener\"><mark>Connect with us<\/mark><\/a><\/strong><\/p>\n<p>The post <a href=\"https:\/\/www.marktechpost.com\/2026\/04\/24\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\">A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation<\/a> appeared first on <a href=\"https:\/\/www.marktechpost.com\/\">MarkTechPost<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>In this tutorial, we work with Microsoft\u2019s OpenMementos dataset and explore how reasoning traces are structured through blocks and mementos in a practical, Colab-ready workflow. We stream the dataset efficiently, parse its special-token format, inspect how reasoning and summaries are organized, and measure the compression provided by the memento representation across different domains. As we move through the analysis, we also visualize dataset patterns, align the streamed format with the richer full subset, simulate inference-time compression, and prepare the data for supervised fine-tuning. In this way, we build both an intuitive and technical understanding of how OpenMementos captures long-form reasoning while preserving compact summaries that can support efficient training and inference. Copy CodeCopiedUse a different Browser !pip install -q -U datasets transformers matplotlib pandas import re, itertools, textwrap from collections import Counter from typing import Dict import pandas as pd import matplotlib.pyplot as plt from datasets import load_dataset DATASET = &#8220;microsoft\/OpenMementos&#8221; ds_stream = load_dataset(DATASET, split=&#8221;train&#8221;, streaming=True) first_row = next(iter(ds_stream)) print(&#8220;Columns :&#8221;, list(first_row.keys())) print(&#8220;Domain :&#8221;, first_row[&#8220;domain&#8221;], &#8220;| Source:&#8221;, first_row[&#8220;source&#8221;]) print(&#8220;Problem head:&#8221;, first_row[&#8220;problem&#8221;][:160].replace(&#8220;n&#8221;, &#8221; &#8220;), &#8220;&#8230;&#8221;) We install the required libraries and import the core tools needed for dataset streaming, parsing, analysis, and visualization. We then connect to the Microsoft OpenMementos dataset in streaming mode to inspect it without downloading the entire dataset locally. By reading the first example, we begin understanding the dataset schema, the problem format, and the domain and source metadata attached to each reasoning trace. Copy CodeCopiedUse a different Browser BLOCK_RE = re.compile(r&#8221;&lt;|block_start|&gt;(.*?)&lt;|block_end|&gt;&#8221;, re.DOTALL) SUMMARY_RE = re.compile(r&#8221;&lt;|summary_start|&gt;(.*?)&lt;|summary_end|&gt;&#8221;, re.DOTALL) THINK_RE = re.compile(r&#8221;&lt;think&gt;(.*?)&lt;\/think&gt;&#8221;, re.DOTALL) def parse_memento(response: str) -&gt; Dict: blocks = [m.strip() for m in BLOCK_RE.findall(response)] summaries = [m.strip() for m in SUMMARY_RE.findall(response)] think_m = THINK_RE.search(response) final_ans = response.split(&#8220;&lt;\/think&gt;&#8221;)[-1].strip() if &#8220;&lt;\/think&gt;&#8221; in response else &#8220;&#8221; return {&#8220;blocks&#8221;: blocks, &#8220;summaries&#8221;: summaries, &#8220;reasoning&#8221;: (think_m.group(1) if think_m else &#8220;&#8221;), &#8220;final_answer&#8221;: final_ans} parsed = parse_memento(first_row[&#8220;response&#8221;]) print(f&#8221;n\u2192 {len(parsed[&#8216;blocks&#8217;])} blocks, {len(parsed[&#8216;summaries&#8217;])} mementos parsed&#8221;) print(&#8220;First block :&#8221;, parsed[&#8220;blocks&#8221;][0][:140].replace(&#8220;n&#8221;, &#8221; &#8220;), &#8220;&#8230;&#8221;) print(&#8220;First memento :&#8221;, parsed[&#8220;summaries&#8221;][0][:140].replace(&#8220;n&#8221;, &#8221; &#8220;), &#8220;&#8230;&#8221;) N_SAMPLES = 500 rows = [] for i, ex in enumerate(itertools.islice( load_dataset(DATASET, split=&#8221;train&#8221;, streaming=True), N_SAMPLES)): p = parse_memento(ex[&#8220;response&#8221;]) if not p[&#8220;blocks&#8221;] or len(p[&#8220;blocks&#8221;]) != len(p[&#8220;summaries&#8221;]): continue blk_c = sum(len(b) for b in p[&#8220;blocks&#8221;]) sum_c = sum(len(s) for s in p[&#8220;summaries&#8221;]) blk_w = sum(len(b.split()) for b in p[&#8220;blocks&#8221;]) sum_w = sum(len(s.split()) for s in p[&#8220;summaries&#8221;]) rows.append(dict(domain=ex[&#8220;domain&#8221;], source=ex[&#8220;source&#8221;], n_blocks=len(p[&#8220;blocks&#8221;]), block_chars=blk_c, summ_chars=sum_c, block_words=blk_w, summ_words=sum_w, compress_char=sum_c \/ max(blk_c, 1), compress_word=sum_w \/ max(blk_w, 1))) if (i + 1) % 100 == 0: print(f&#8221; processed {i+1}\/{N_SAMPLES}&#8221;) df = pd.DataFrame(rows) print(f&#8221;nAnalyzed {len(df)} rows. Domain counts:&#8221;) print(df[&#8220;domain&#8221;].value_counts().to_string()) per_dom = df.groupby(&#8220;domain&#8221;).agg( n=(&#8220;domain&#8221;, &#8220;count&#8221;), median_blocks=(&#8220;n_blocks&#8221;, &#8220;median&#8221;), median_block_words=(&#8220;block_words&#8221;, &#8220;median&#8221;), median_summ_words=(&#8220;summ_words&#8221;, &#8220;median&#8221;), median_char_ratio=(&#8220;compress_char&#8221;, &#8220;median&#8221;), median_word_ratio=(&#8220;compress_word&#8221;, &#8220;median&#8221;), ).round(3) print(&#8220;nPer-domain medians (ratio = mementos \/ blocks):&#8221;) print(per_dom.to_string()) We define the regex-based parser that extracts reasoning blocks, memento summaries, the main thinking section, and the final answer from each response. We test the parser on the first streamed example and confirm that the block-summary structure is being captured correctly. We then run a streaming analysis over multiple samples to compute block counts, word counts, character counts, and compression ratios, which helps us study how the dataset behaves across examples and domains. Copy CodeCopiedUse a different Browser def compress_trace(response: str, keep_last_k: int = 1) -&gt; str: blocks, summaries = BLOCK_RE.findall(response), SUMMARY_RE.findall(response) if not blocks or len(blocks) != len(summaries): return response out, n = [&#8220;&lt;think&gt;&#8221;], len(blocks) for i, (b, s) in enumerate(zip(blocks, summaries)): if i &gt;= n &#8211; keep_last_k: out.append(f&#8221;&lt;|block_start|&gt;{b}&lt;|block_end|&gt;&#8221;) out.append(f&#8221;&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;&#8221;) else: out.append(f&#8221;&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;&#8221;) out.append(&#8220;&lt;\/think&gt;&#8221;) out.append(response.split(&#8220;&lt;\/think&gt;&#8221;)[-1]) return &#8220;n&#8221;.join(out) orig, comp = first_row[&#8220;response&#8221;], compress_trace(first_row[&#8220;response&#8221;], 1) print(f&#8221;nOriginal : {len(orig):&gt;8,} chars&#8221;) print(f&#8221;Compressed : {len(comp):&gt;8,} chars ({len(comp)\/len(orig)*100:.1f}% of original)&#8221;) from transformers import AutoTokenizer tok = AutoTokenizer.from_pretrained(&#8220;gpt2&#8221;) MEM_TOKENS = [&#8220;&lt;|block_start|&gt;&#8221;, &#8220;&lt;|block_end|&gt;&#8221;, &#8220;&lt;|summary_start|&gt;&#8221;, &#8220;&lt;|summary_end|&gt;&#8221;, &#8220;&lt;think&gt;&#8221;, &#8220;&lt;\/think&gt;&#8221;] tok.add_special_tokens({&#8220;additional_special_tokens&#8221;: MEM_TOKENS}) def tlen(s): return len(tok(s, add_special_tokens=False).input_ids) blk_tok = sum(tlen(b) for b in parsed[&#8220;blocks&#8221;]) sum_tok = sum(tlen(s) for s in parsed[&#8220;summaries&#8221;]) print(f&#8221;nTrace-level token compression for this example:&#8221;) print(f&#8221; block tokens = {blk_tok}&#8221;) print(f&#8221; memento tokens = {sum_tok}&#8221;) print(f&#8221; compression = {blk_tok \/ max(sum_tok,1):.2f}\u00d7 (paper reports ~6\u00d7)&#8221;) def to_chat(ex): return {&#8220;messages&#8221;: [ {&#8220;role&#8221;: &#8220;user&#8221;, &#8220;content&#8221;: ex[&#8220;problem&#8221;]}, {&#8220;role&#8221;: &#8220;assistant&#8221;, &#8220;content&#8221;: ex[&#8220;response&#8221;]}, ]} chat_stream = load_dataset(DATASET, split=&#8221;train&#8221;, streaming=True).map(to_chat) chat_ex = next(iter(chat_stream)) print(&#8220;nSFT chat example (truncated):&#8221;) for m in chat_ex[&#8220;messages&#8221;]: print(f&#8221; [{m[&#8216;role&#8217;]:9s}] {m[&#8216;content&#8217;][:130].replace(chr(10),&#8217; &#8216;)}&#8230;&#8221;) We visualize the dataset\u2019s structural patterns by plotting block counts, compression ratios, and the relationship between block size and memento size. We compare these distributions across domains to see how reasoning organization differs between math, code, and science examples. We also stream one example from the full subset and inspect its additional sentence-level and block-alignment fields, which helps us understand the richer internal annotation pipeline behind the dataset. Copy CodeCopiedUse a different Browser def compress_trace(response: str, keep_last_k: int = 1) -&gt; str: blocks, summaries = BLOCK_RE.findall(response), SUMMARY_RE.findall(response) if not blocks or len(blocks) != len(summaries): return response out, n = [&#8220;&lt;think&gt;&#8221;], len(blocks) for i, (b, s) in enumerate(zip(blocks, summaries)): if i &gt;= n &#8211; keep_last_k: out.append(f&#8221;&lt;|block_start|&gt;{b}&lt;|block_end|&gt;&#8221;) out.append(f&#8221;&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;&#8221;) else: out.append(f&#8221;&lt;|summary_start|&gt;{s}&lt;|summary_end|&gt;&#8221;) out.append(&#8220;&lt;\/think&gt;&#8221;) out.append(response.split(&#8220;&lt;\/think&gt;&#8221;)[-1]) return &#8220;n&#8221;.join(out) orig, comp = first_row[&#8220;response&#8221;], compress_trace(first_row[&#8220;response&#8221;], 1) print(f&#8221;nOriginal : {len(orig):&gt;8,} chars&#8221;) print(f&#8221;Compressed : {len(comp):&gt;8,} chars ({len(comp)\/len(orig)*100:.1f}% of original)&#8221;) from transformers import AutoTokenizer tok = AutoTokenizer.from_pretrained(&#8220;gpt2&#8221;) MEM_TOKENS = [&#8220;&lt;|block_start|&gt;&#8221;, &#8220;&lt;|block_end|&gt;&#8221;, &#8220;&lt;|summary_start|&gt;&#8221;, &#8220;&lt;|summary_end|&gt;&#8221;, &#8220;&lt;think&gt;&#8221;, &#8220;&lt;\/think&gt;&#8221;] tok.add_special_tokens({&#8220;additional_special_tokens&#8221;: MEM_TOKENS}) def tlen(s): return len(tok(s, add_special_tokens=False).input_ids) blk_tok = sum(tlen(b) for b in parsed[&#8220;blocks&#8221;]) sum_tok = sum(tlen(s) for s in parsed[&#8220;summaries&#8221;]) print(f&#8221;nTrace-level token compression for this example:&#8221;) print(f&#8221; block tokens = {blk_tok}&#8221;) print(f&#8221; memento tokens = {sum_tok}&#8221;) print(f&#8221; compression = {blk_tok \/ max(sum_tok,1):.2f}\u00d7 (paper reports ~6\u00d7)&#8221;) def to_chat(ex): return {&#8220;messages&#8221;: [ {&#8220;role&#8221;: &#8220;user&#8221;, &#8220;content&#8221;: ex[&#8220;problem&#8221;]}, {&#8220;role&#8221;: &#8220;assistant&#8221;, &#8220;content&#8221;: ex[&#8220;response&#8221;]}, ]} chat_stream = load_dataset(DATASET, split=&#8221;train&#8221;, streaming=True).map(to_chat) chat_ex = next(iter(chat_stream)) print(&#8220;nSFT chat example (truncated):&#8221;) for m in chat_ex[&#8220;messages&#8221;]: print(f&#8221; [{m[&#8216;role&#8217;]:9s}] {m[&#8216;content&#8217;][:130].replace(chr(10),&#8217; &#8216;)}&#8230;&#8221;) We simulate inference-time compression by rewriting a reasoning trace so that older blocks are replaced by their mementos while the latest blocks remain intact. We then compare the original and compressed trace lengths to see how much context can be reduced in practice. After that, we integrate a tokenizer, add special memento tokens, measure token-level compression, and convert the dataset to an SFT-style chat format suitable for training workflows. Copy CodeCopiedUse a different Browser def render_trace(response: str, width: int = 220) -&gt; None: p = parse_memento(response) print(&#8220;=&#8221; * 72) print(f&#8221;{len(p[&#8216;blocks&#8217;])} blocks \u00b7<\/p>","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"pmpro_default_level":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"_pvb_checkbox_block_on_post":false,"footnotes":""},"categories":[52,5,7,1],"tags":[],"class_list":["post-86008","post","type-post","status-publish","format-standard","hentry","category-ai-club","category-committee","category-news","category-uncategorized","pmpro-has-access"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v25.3 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation - YouZum<\/title>\n<meta name=\"description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/youzum.net\/ja\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation - YouZum\" \/>\n<meta property=\"og:description\" content=\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\" \/>\n<meta property=\"og:url\" content=\"https:\/\/youzum.net\/ja\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\" \/>\n<meta property=\"og:site_name\" content=\"YouZum\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/DroneAssociationTH\/\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-25T15:28:23+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png\" \/>\n<meta name=\"author\" content=\"admin NU\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin NU\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"9\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\"},\"author\":{\"name\":\"admin NU\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\"},\"headline\":\"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation\",\"datePublished\":\"2026-04-25T15:28:23+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\"},\"wordCount\":712,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"image\":{\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png\",\"articleSection\":[\"AI\",\"Committee\",\"News\",\"Uncategorized\"],\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\",\"url\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\",\"name\":\"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation - YouZum\",\"isPartOf\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png\",\"datePublished\":\"2026-04-25T15:28:23+00:00\",\"description\":\"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19\",\"breadcrumb\":{\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage\",\"url\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png\",\"contentUrl\":\"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/youzum.net\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/yousum.gpucore.co\/#website\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"name\":\"YouSum\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/yousum.gpucore.co\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/yousum.gpucore.co\/#organization\",\"name\":\"Drone Association Thailand\",\"url\":\"https:\/\/yousum.gpucore.co\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png\",\"width\":300,\"height\":300,\"caption\":\"Drone Association Thailand\"},\"image\":{\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/DroneAssociationTH\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c\",\"name\":\"admin NU\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"contentUrl\":\"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png\",\"caption\":\"admin NU\"},\"url\":\"https:\/\/youzum.net\/ja\/members\/adminnu\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation - YouZum","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/youzum.net\/ja\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/","og_locale":"ja_JP","og_type":"article","og_title":"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation - YouZum","og_description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","og_url":"https:\/\/youzum.net\/ja\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/","og_site_name":"YouZum","article_publisher":"https:\/\/www.facebook.com\/DroneAssociationTH\/","article_published_time":"2026-04-25T15:28:23+00:00","og_image":[{"url":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png","type":"","width":"","height":""}],"author":"admin NU","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"admin NU","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"9\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#article","isPartOf":{"@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/"},"author":{"name":"admin NU","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c"},"headline":"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation","datePublished":"2026-04-25T15:28:23+00:00","mainEntityOfPage":{"@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/"},"wordCount":712,"commentCount":0,"publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"image":{"@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage"},"thumbnailUrl":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png","articleSection":["AI","Committee","News","Uncategorized"],"inLanguage":"ja","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/","url":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/","name":"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation - YouZum","isPartOf":{"@id":"https:\/\/yousum.gpucore.co\/#website"},"primaryImageOfPage":{"@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage"},"image":{"@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage"},"thumbnailUrl":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png","datePublished":"2026-04-25T15:28:23+00:00","description":"\u0e01\u0e34\u0e08\u0e01\u0e23\u0e23\u0e21\u0e40\u0e01\u0e35\u0e48\u0e22\u0e27\u0e01\u0e31\u0e1a\u0e42\u0e14\u0e23\u0e19","breadcrumb":{"@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#primaryimage","url":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png","contentUrl":"https:\/\/s.w.org\/images\/core\/emoji\/17.0.2\/72x72\/25b6.png"},{"@type":"BreadcrumbList","@id":"https:\/\/youzum.net\/a-coding-implementation-on-microsofts-openmementos-with-trace-structure-analysis-context-compression-and-fine-tuning-data-preparation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/youzum.net\/"},{"@type":"ListItem","position":2,"name":"A Coding Implementation on Microsoft\u2019s OpenMementos with Trace Structure Analysis, Context Compression, and Fine-Tuning Data Preparation"}]},{"@type":"WebSite","@id":"https:\/\/yousum.gpucore.co\/#website","url":"https:\/\/yousum.gpucore.co\/","name":"YouSum","description":"","publisher":{"@id":"https:\/\/yousum.gpucore.co\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/yousum.gpucore.co\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Organization","@id":"https:\/\/yousum.gpucore.co\/#organization","name":"Drone Association Thailand","url":"https:\/\/yousum.gpucore.co\/","logo":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/2024\/11\/tranparent-logo.png","width":300,"height":300,"caption":"Drone Association Thailand"},"image":{"@id":"https:\/\/yousum.gpucore.co\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/DroneAssociationTH\/"]},{"@type":"Person","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/97fa48242daf3908e4d9a5f26f4a059c","name":"admin NU","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/yousum.gpucore.co\/#\/schema\/person\/image\/","url":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","contentUrl":"https:\/\/youzum.net\/wp-content\/uploads\/avatars\/2\/1746849356-bpfull.png","caption":"admin NU"},"url":"https:\/\/youzum.net\/ja\/members\/adminnu\/"}]}},"rttpg_featured_image_url":null,"rttpg_author":{"display_name":"admin NU","author_link":"https:\/\/youzum.net\/ja\/members\/adminnu\/"},"rttpg_comment":0,"rttpg_category":"<a href=\"https:\/\/youzum.net\/ja\/category\/ai-club\/\" rel=\"category tag\">AI<\/a> <a href=\"https:\/\/youzum.net\/ja\/category\/committee\/\" rel=\"category tag\">Committee<\/a> <a href=\"https:\/\/youzum.net\/ja\/category\/news\/\" rel=\"category tag\">News<\/a> <a href=\"https:\/\/youzum.net\/ja\/category\/uncategorized\/\" rel=\"category tag\">Uncategorized<\/a>","rttpg_excerpt":"In this tutorial, we work with Microsoft\u2019s OpenMementos dataset and explore how reasoning traces are structured through blocks and mementos in a practical, Colab-ready workflow. We stream the dataset efficiently, parse its special-token format, inspect how reasoning and summaries are organized, and measure the compression provided by the memento representation across different domains. As we&hellip;","_links":{"self":[{"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/posts\/86008","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/comments?post=86008"}],"version-history":[{"count":0,"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/posts\/86008\/revisions"}],"wp:attachment":[{"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/media?parent=86008"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/categories?post=86008"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/youzum.net\/ja\/wp-json\/wp\/v2\/tags?post=86008"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}