{"id":21690,"date":"2025-10-31T14:49:59","date_gmt":"2025-10-31T14:49:59","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=21690"},"modified":"2025-10-31T14:49:59","modified_gmt":"2025-10-31T14:49:59","slug":"liquidai%e3%81%aecpu%e3%83%91%e3%83%95%e3%82%a9%e3%83%bc%e3%83%9e%e3%83%b3%e3%82%b9%e6%a4%9c%e8%a8%bc-lfm2-350m-vs-qwen2-5-0-5b-vs-qwen3-0-6b","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/21690\/","title":{"rendered":"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B"},"content":{"rendered":"\n<\/p>\n<div>\n<h2 id=\"liquid-ai\" data-line=\"0\" class=\"code-line\">\n Liquid AI<\/h2>\n<p data-line=\"1\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/3c51cf6a8a0d-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"3\" class=\"code-line\">LiquidAI\u306fTransfomer\u30d9\u30fc\u30b9\u306eQwen\u306a\u3069\u3088\u308a\u3001\u30a8\u30c3\u30b8\u30fb\u30aa\u30f3\u30c7\u30d0\u30a4\u30b9\u7528\u9014\uff08\u30e2\u30d0\u30a4\u30eb\uff0f\u30bf\u30d6\u30ec\u30c3\u30c8\uff0fNPU\uff09\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u3001SLM\u3068\u3057\u3066\u3001LFM2\u3068\u3044\u3046\u30e2\u30c7\u30eb\u3092Huggingface\u306a\u3069\u306b\u516c\u958b\u3057\u3066\u3044\u307e\u3059\u3002<br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__e9db52f11bafb\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__e9db52f11bafb\" data-content=\"https%3A%2F%2Fwww.liquid.ai%2Fblog%2Fliquid-foundation-models-v2-our-second-series-of-generative-ai-models\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/www.liquid.ai\/blog\/liquid-foundation-models-v2-our-second-series-of-generative-ai-models\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/www.liquid.ai\/blog\/liquid-foundation-models-v2-our-second-series-of-generative-ai-models<\/a><\/p>\n<p data-line=\"6\" class=\"code-line\">\u4eca\u56de\u306f\u3001LFM2-350M\u3068\u6bd4\u8f03\u3057\u305f\u304b\u3063\u305f\u306e\u3067\u3001Qwen2.5-0.5B\u3068\u6bd4\u8f03\u3057\u307e\u3057\u305f\u3002<\/p>\n<p data-line=\"8\" class=\"code-line\">\u307e\u305aGPT\u306b\u673a\u4e0a\u3067\u306e\u6bd4\u8f03\u8868\u3092\u4f5c\u6210\u3057\u3066\u3082\u3089\u3044\u307e\u3057\u305f\u3002<\/p>\n<div class=\"s_table\"><table data-line=\"10\" class=\"code-line\">\n<thead data-line=\"10\" class=\"code-line\">\n<tr data-line=\"10\" class=\"code-line\">\n<th>\u9805\u76ee<\/th>\n<th>LFM2-350M<\/th>\n<th>Qwen2.5-0.5B<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"12\" class=\"code-line\">\n<tr data-line=\"12\" class=\"code-line\">\n<td>\u30d1\u30e9\u30e1\u30fc\u30bf\u6570<\/td>\n<td>\u7d04 <strong>350 M \u30d1\u30e9\u30e1\u30fc\u30bf<\/strong>\uff080.35B\uff09<\/td>\n<td>\u7d04 <strong>500 M \u30d1\u30e9\u30e1\u30fc\u30bf<\/strong>\uff080.5B\uff09\uff0f\u201c0.5B\u201d\u30b5\u30a4\u30ba\u3068\u8a18\u8f09<\/td>\n<\/tr>\n<tr data-line=\"13\" class=\"code-line\">\n<td>\u30a2\u30fc\u30ad\u30c6\u30af\u30c1\u30e3<\/td>\n<td>\u300c\u30cf\u30a4\u30d6\u30ea\u30c3\u30c9\u69cb\u9020\u300d\uff1a\u516c\u5f0f\u306b\u300cnew hybrid architecture \u2026 faster decode &amp; prefill performance than Qwen3 on CPU\u300d \u3068\u8a18\u8ff0\u3042\u308a <br \/>\u2192 \u201c\u7573\u307f\u8fbc\u307f\uff0b\u30b2\u30fc\u30c8\uff0b\u5c11\u6570Attention\u30d6\u30ed\u30c3\u30af\u201d \u3068\u3044\u3046\u8a18\u8ff0\u3042\u308a\uff08\u30e2\u30c7\u30eb\u30ab\u30fc\u30c9\u306b\u306f\u8a73\u7d30\u30d6\u30ed\u30c3\u30af\u69cb\u6210\u8a18\u8f09\u306a\u3057\uff09<\/td>\n<td>Transformer Decoder \u578b\u304c\u30d9\u30fc\u30b9\u3002\u30e2\u30c7\u30eb\u30ab\u30fc\u30c9\u306b\u306f Transformer (SwiGLU, Attention QKV bias, group query attention) \u7b49\u306e\u8a18\u8f09\u3042\u308a<\/td>\n<\/tr>\n<tr data-line=\"14\" class=\"code-line\">\n<td>\u6700\u5927\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u9577\uff0f\u5165\u529b\u9577<\/td>\n<td>\u30e2\u30c7\u30eb\u30ab\u30fc\u30c9\u306b\u660e\u78ba\u306a\u30c8\u30fc\u30af\u30f3\u9577\u8a18\u8f09\u306a\u3057\u3002\u5ba3\u4f1d\u6587\u3067\u306f\u300con-device deployment\u300d\u300coptimized for edge AI\u300d\u306a\u3069\u8a00\u53ca\u3042\u308a<\/td>\n<td>\u30c9\u30ad\u30e5\u30e1\u30f3\u30c8\u306b\u300cpre-training packed sequence length up to 32,768 tokens; maybe extended to 131,072 tokens for some models\u300d\u300cassistant message maximum ~16,384 tokens for instruct models\u300d\u306a\u3069\u8a18\u8f09\u3042\u308a<\/td>\n<\/tr>\n<tr data-line=\"15\" class=\"code-line\">\n<td>\u91cf\u5b50\u5316\u30fb\u8efd\u91cf\u5316\u5bfe\u5fdc<\/td>\n<td>GGUF\u5f62\u5f0f\uff084bit\/8bit\uff09\u306a\u3069\u3001\u30a8\u30c3\u30b8\u5411\u3051\u8efd\u91cf\u5c55\u958b\u7528\u306b\u6e96\u5099\u3042\u308a<\/td>\n<td>\u91cf\u5b50\u5316\uff08\u4f8b\uff1aINT8\uff09\u7248\u3042\u308a\u3002\u30e2\u30c7\u30eb\u30ab\u30fc\u30c9\u306b \u201coptimized weights \u2026 INT8\u201d \u306e\u8a18\u9332\u3042\u308a<\/td>\n<\/tr>\n<tr data-line=\"16\" class=\"code-line\">\n<td>\u4e3b\u306a\u7528\u9014\u30fb\u8a2d\u8a08\u76ee\u7684<\/td>\n<td>\u30a8\u30c3\u30b8\u30c7\u30d0\u30a4\u30b9\uff0f\u30aa\u30f3\u30c7\u30d0\u30a4\u30b9\u751f\u6210\u3092\u30bf\u30fc\u30b2\u30c3\u30c8\u3002\u300cfastest on-device gen-AI experience\u300d\u306a\u3069\u5ba3\u4f1d\u6587\u3042\u308a<\/td>\n<td>\u6c4e\u7528\u5927\u898f\u6a21\u751f\u6210\u30fb\u9577\u6587\u30fb\u591a\u8a00\u8a9e\u30fb\u30b3\u30fc\u30c9\u5bfe\u5fdc\u3002\u30af\u30e9\u30a6\u30c9\uff0f\u30b5\u30fc\u30d0\u7528\u9014\u3082\u8996\u91ce\u306b\u5165\u308c\u305f\u8a2d\u8a08<\/td>\n<\/tr>\n<tr data-line=\"17\" class=\"code-line\">\n<td>\u30e2\u30c7\u30eb\u30b7\u30ea\u30fc\u30ba\u30fb\u30b5\u30a4\u30ba\u5c55\u958b<\/td>\n<td>LFM2\u30b7\u30ea\u30fc\u30ba\uff1a350M, 700M, 1.2B \u306a\u3069\u306e\u8efd\u91cf\u30e2\u30c7\u30eb\u5c55\u958b\u3042\u308a<\/td>\n<td>Qwen2.5\u30b7\u30ea\u30fc\u30ba\uff1a0.5B, 1.5B, 3B, 7B, 14B, 32B, 72B \u306e\u30b5\u30a4\u30ba\u5c55\u958b\u3042\u308a<\/td>\n<\/tr>\n<tr data-line=\"18\" class=\"code-line\">\n<td>\u30e9\u30a4\u30bb\u30f3\u30b9\uff0f\u516c\u958b\u72b6\u6cc1<\/td>\n<td>\u30e2\u30c7\u30eb\u30ab\u30fc\u30c9\u4e0a\u300copen-weights\u300d\u7b49\u306e\u8a18\u8ff0\u3042\u308a\uff08\u8a73\u7d30\u30e9\u30a4\u30bb\u30f3\u30b9\u306f\u8981\u78ba\u8a8d\uff09<\/td>\n<td>Apache-2.0 \u306a\u3069\u30aa\u30fc\u30d7\u30f3\u30e9\u30a4\u30bb\u30f3\u30b9\u8a18\u8f09\u3042\u308a<\/td>\n<\/tr>\n<tr data-line=\"19\" class=\"code-line\">\n<td>\u7279\u7b46\u6027\u80fd\u30fb\u5ba3\u4f1d\u6587<\/td>\n<td>\u300c2\u00d7 faster decode and prefill performance than Qwen3 on CPU\u300d<\/td>\n<td>\u300cPacked sequence length, structured output, instruction following improved\u300d\u306a\u3069\u8a18\u8f09\u3042\u308a<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2 id=\"%E6%A4%9C%E8%A8%BC%E7%92%B0%E5%A2%83\" data-line=\"21\" class=\"code-line\">\n \u691c\u8a3c\u74b0\u5883<\/h2>\n<p data-line=\"22\" class=\"code-line\">M1 Mac\u306ejupyter notebook\u3067cpu\u5b9f\u884c\u3057\u3066\u3001\u30e1\u30e2\u30ea\u3092\u3069\u306e\u304f\u3089\u3044\u4f7f\u3046\u304b\u898b\u3066\u3044\u304d\u307e\u3059\u3002<\/p>\n<p data-line=\"24\" class=\"code-line\">Linux\/macOS\u3067\u306f\u3001\u30d7\u30ed\u30bb\u30b9\u304c\u5229\u7528\u3059\u308b\u30e1\u30e2\u30ea\u306f\u4e0b\u8a18\u306a\u3069\u304c\u6df7\u5728\u3057\u3001\u8907\u6570\u306e\u6307\u6a19\u3067\u898b\u308b\u5fc5\u8981\u304c\u3042\u308b\u3068\u306e\u3053\u3068\u3067\u3059\u3002<\/p>\n<ul data-line=\"25\" class=\"code-line\">\n<li data-line=\"25\" class=\"code-line\">\u7269\u7406RAM<\/li>\n<li data-line=\"26\" class=\"code-line\">\u30da\u30fc\u30b8\u30ad\u30e3\u30c3\u30b7\u30e5\uff08\u30d5\u30a1\u30a4\u30eb\u3092mmap\u3057\u305f\u90e8\u5206\uff09<\/li>\n<li data-line=\"27\" class=\"code-line\">\u30b9\u30ef\u30c3\u30d7\uff08RAM\u304b\u3089\u9000\u907f\u3055\u308c\u305f\u90e8\u5206\uff09<\/li>\n<\/ul>\n<h2 id=\"%E5%90%84%E6%8C%87%E6%A8%99%E3%81%AE%E6%84%8F%E5%91%B3\" data-line=\"29\" class=\"code-line\">\n \u5404\u6307\u6a19\u306e\u610f\u5473<\/h2>\n<div class=\"s_table\"><table data-line=\"30\" class=\"code-line\">\n<thead data-line=\"30\" class=\"code-line\">\n<tr data-line=\"30\" class=\"code-line\">\n<th>\u6307\u6a19<\/th>\n<th>\u6b63\u5f0f\u540d \/ \u610f\u5473<\/th>\n<th>\u542b\u307e\u308c\u308b\u3082\u306e<\/th>\n<th>\u542b\u307e\u308c\u306a\u3044\u3082\u306e<\/th>\n<th>\u5178\u578b\u7684\u306a\u5229\u7528\u76ee\u7684<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"32\" class=\"code-line\">\n<tr data-line=\"32\" class=\"code-line\">\n<td>\n<strong>RSS<\/strong> <br \/>(Resident Set Size)<\/td>\n<td>\u30d7\u30ed\u30bb\u30b9\u304c <strong>\u5b9f\u969b\u306bRAM\u4e0a\u306b\u8f09\u305b\u3066\u3044\u308b\u30da\u30fc\u30b8\u306e\u5408\u8a08\u91cf<\/strong>\n<\/td>\n<td>\u30b3\u30fc\u30c9\u30fb\u30c7\u30fc\u30bf\u30fb\u30b9\u30bf\u30c3\u30af\u30fb\u5171\u6709\u30e9\u30a4\u30d6\u30e9\u30ea\u306a\u3069\u3001\u73fe\u6642\u70b9\u3067\u7269\u7406RAM\u306b\u5b58\u5728\u3059\u308b\u30da\u30fc\u30b8<\/td>\n<td>\u30b9\u30ef\u30c3\u30d7\u306b\u9000\u907f\u4e2d\u306e\u30da\u30fc\u30b8\u3001\u4ed6\u30d7\u30ed\u30bb\u30b9\u5171\u6709\u306e\u3046\u3061\u672a\u30ed\u30fc\u30c9\u90e8\u5206<\/td>\n<td>\u300c\u3053\u306e\u77ac\u9593RAM\u3092\u3069\u306e\u7a0b\u5ea6\u5360\u6709\u3057\u3066\u3044\u308b\u304b\u300d<br \/>\u2192 <strong>\u30e1\u30e2\u30ea\u8ca0\u8377\u306e\u77ac\u9593\u7684\u306a\u6307\u6a19<\/strong>\n<\/td>\n<\/tr>\n<tr data-line=\"33\" class=\"code-line\">\n<td>\n<strong>USS<\/strong> <br \/>(Unique Set Size)<\/td>\n<td>\n<strong>\u305d\u306e\u30d7\u30ed\u30bb\u30b9\u5c02\u6709\u306eRAM\u91cf<\/strong>\uff08\u4ed6\u3068\u5171\u6709\u3057\u3066\u3044\u306a\u3044\u90e8\u5206\u306e\u307f\uff09<\/td>\n<td>\u81ea\u30d7\u30ed\u30bb\u30b9\u56fa\u6709\u306e\u30d2\u30fc\u30d7\u30fb\u30b9\u30bf\u30c3\u30af\u30fb\u4e00\u6642\u9818\u57df\u306a\u3069<\/td>\n<td>\u5171\u6709\u30e9\u30a4\u30d6\u30e9\u30ea\u3084\u30e1\u30e2\u30ea\u30de\u30c3\u30d7\u306a\u3069\u5171\u6709\u30da\u30fc\u30b8<\/td>\n<td>\n<strong>\u30d7\u30ed\u30bb\u30b9\u5358\u4f53\u304c\u6d88\u8cbb\u3057\u3066\u3044\u308b\u7d14\u7c8b\u30e1\u30e2\u30ea\u91cf<\/strong><br \/>\u2192\u300c\u3053\u306e\u30d7\u30ed\u30bb\u30b9\u3092 kill \u3057\u305f\u3089\u89e3\u653e\u3055\u308c\u308b\u91cf\u300d<\/td>\n<\/tr>\n<tr data-line=\"34\" class=\"code-line\">\n<td><strong>Swap Usage<\/strong><\/td>\n<td>\u30b9\u30ef\u30c3\u30d7\uff08\u30c7\u30a3\u30b9\u30af\uff09\u4e0a\u306b\u9000\u907f\u3055\u308c\u305f\u30da\u30fc\u30b8\u91cf<\/td>\n<td>RAM\u304b\u3089\u8ffd\u3044\u51fa\u3055\u308c\u305f\u30da\u30fc\u30b8<\/td>\n<td>RAM\u4e0a\u306e\u30c7\u30fc\u30bf\uff08\u5b9f\u30e1\u30e2\u30ea\uff09<\/td>\n<td>\n<strong>\u30e1\u30e2\u30ea\u903c\u8feb\u306b\u3088\u308bI\/O\u9045\u5ef6\u306e\u5146\u5019<\/strong><br \/>\u2192 \u9ad8\u3044\u3068\u63a8\u8ad6\u304c\u9045\u304f\u306a\u308b\u30fbGC\u304c\u983b\u767a\u3059\u308b<\/td>\n<\/tr>\n<tr data-line=\"35\" class=\"code-line\">\n<td>\n<strong>Mapped Pages<\/strong> <br \/>(File-backed memory, mmap)<\/td>\n<td>\u30d5\u30a1\u30a4\u30eb\u3092\u30e1\u30e2\u30ea\u30de\u30c3\u30d7\u3057\u305f\u9818\u57df\u306e\u30b5\u30a4\u30ba<\/td>\n<td>\u30e2\u30c7\u30eb\u91cd\u307f\uff08<code>.safetensors<\/code> \/ <code>.gguf<\/code>\uff09\u306e mmap\u90e8\u5206<\/td>\n<td>\u5b9f\u884c\u6642\u30d2\u30fc\u30d7\u3084\u30c6\u30f3\u30dd\u30e9\u30ea<\/td>\n<td>\n<strong>\u5927\u898f\u6a21\u30e2\u30c7\u30eb\u7279\u6709\u306e\u201c\u8aad\u307f\u8fbc\u307f\u6e08\u307f\u304c\u307e\u3060\u4f7f\u308f\u308c\u3066\u306a\u3044\u9818\u57df\u201d<\/strong>\u3002<br \/>\u30ad\u30e3\u30c3\u30b7\u30e5\u6271\u3044\u306a\u306e\u3067RSS\u306b\u306f\u51fa\u306a\u3044\u3053\u3068\u304c\u3042\u308b\u3002<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<h2 id=\"%E6%A4%9C%E8%A8%BC%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88(jupyter-notebook)\" data-line=\"38\" class=\"code-line\">\n \u691c\u8a3c\u30b9\u30af\u30ea\u30d7\u30c8(jupyter notebook)<\/h2>\n<div class=\"code-block-container\">\n<pre class=\"language-shell\"><code class=\"language-shell code-line\" data-line=\"39\"><span class=\"token operator\">!<\/span>pip <span class=\"token function\">install<\/span> <span class=\"token parameter variable\">-U<\/span> torch transformers accelerate datasets evaluate sacrebleu rouge-score psutil matplotlib pynvml\n<\/code><\/pre>\n<\/div>\n<div class=\"code-block-container\">\n<pre class=\"language-py\"><code class=\"language-py code-line\" data-line=\"42\"><span class=\"token keyword\">import<\/span> sys<span class=\"token punctuation\">,<\/span> platform<span class=\"token punctuation\">,<\/span> torch<span class=\"token punctuation\">,<\/span> datetime<span class=\"token punctuation\">,<\/span> os\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Python:\"<\/span><span class=\"token punctuation\">,<\/span> sys<span class=\"token punctuation\">.<\/span>version<span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"PyTorch:\"<\/span><span class=\"token punctuation\">,<\/span> torch<span class=\"token punctuation\">.<\/span>__version__<span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"CUDA available:\"<\/span><span class=\"token punctuation\">,<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Device name:\"<\/span><span class=\"token punctuation\">,<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>get_device_name<span class=\"token punctuation\">(<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">\"CPU\"<\/span><span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Started at:\"<\/span><span class=\"token punctuation\">,<\/span> datetime<span class=\"token punctuation\">.<\/span>datetime<span class=\"token punctuation\">.<\/span>now<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">import<\/span> matplotlib<span class=\"token punctuation\">.<\/span>pyplot <span class=\"token keyword\">as<\/span> plt\n<\/code><\/pre>\n<\/div>\n<div class=\"code-block-container\">\n<pre class=\"language-text\"><code class=\"language-text code-line\" data-line=\"53\">Python: 3.10.5\nPyTorch: 2.9.0\nCUDA available: False\nDevice name: CPU\nStarted at: 2025-10-31 16:47:35.165621\n<\/code><\/pre>\n<\/div>\n<div class=\"code-block-container\">\n<pre class=\"language-py\"><code class=\"language-py code-line\" data-line=\"61\">LFM_MODEL_NAME  <span class=\"token operator\">=<\/span> <span class=\"token string\">\"LiquidAI\/LFM2-350M\"<\/span>\nQWEN_MODEL_NAME <span class=\"token operator\">=<\/span> <span class=\"token string\">\"Qwen\/Qwen2.5-0.5B-Instruct\"<\/span>\n\nDTYPE <span class=\"token operator\">=<\/span> <span class=\"token string\">\"float32\"<\/span>          \nCOMPUTE_DEVICE <span class=\"token operator\">=<\/span> <span class=\"token string\">\"cpu\"<\/span>      \nMAX_NEW_TOKENS <span class=\"token operator\">=<\/span> <span class=\"token number\">256<\/span>\nWARMUP_NEW_TOKENS <span class=\"token operator\">=<\/span> <span class=\"token number\">8<\/span>\nPROMPT_LENGTHS <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token number\">512<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2048<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8192<\/span><span class=\"token punctuation\">]<\/span>\n\nSEED <span class=\"token operator\">=<\/span> <span class=\"token number\">42<\/span>\n\nPROMPT_CHUNK <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>\n    <span class=\"token string\">\"\u751f\u6210AI\u306e\u63a8\u8ad6\u6700\u9069\u5316\u3067\u306f\u3001KV\u30ad\u30e3\u30c3\u30b7\u30e5\u3001\u91cf\u5b50\u5316\u3001\u52d5\u7684\u30d0\u30c3\u30c1\u30f3\u30b0\u306a\u3069\u306e\u624b\u6cd5\u304c\u6d3b\u7528\u3055\u308c\u3001\"<\/span>\n    <span class=\"token string\">\"\u5165\u529b\u9577\u306b\u5fdc\u3058\u305f\u30e1\u30e2\u30ea\u52b9\u7387\u3068\u30ec\u30a4\u30c6\u30f3\u30b7\u306e\u30c8\u30ec\u30fc\u30c9\u30aa\u30d5\u304c\u91cd\u8981\u3068\u3055\u308c\u307e\u3059\u3002\"<\/span>\n    <span class=\"token string\">\"\u9ad8\u8ca0\u8377\u6642\u306b\u304a\u3051\u308b\u5b89\u5b9a\u6027\u3068\u30b9\u30eb\u30fc\u30d7\u30c3\u30c8\u306e\u78ba\u4fdd\u306f\u3001\u73fe\u5834\u5c0e\u5165\u3092\u9032\u3081\u308b\u4e0a\u3067\u306e\u9375\u3068\u306a\u308a\u307e\u3059\u3002\"<\/span>\n<span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<div class=\"code-block-container\">\n<pre class=\"language-py\"><code class=\"language-py code-line\" data-line=\"84\"><span class=\"token keyword\">import<\/span> torch\n<span class=\"token keyword\">from<\/span> transformers <span class=\"token keyword\">import<\/span> AutoTokenizer<span class=\"token punctuation\">,<\/span> AutoModelForCausalLM<span class=\"token punctuation\">,<\/span> set_seed\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">resolve_dtype<\/span><span class=\"token punctuation\">(<\/span>dtype_str<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">if<\/span> dtype_str <span class=\"token operator\">==<\/span> <span class=\"token string\">\"auto\"<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token boolean\">None<\/span>\n    <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token builtin\">hasattr<\/span><span class=\"token punctuation\">(<\/span>torch<span class=\"token punctuation\">,<\/span> dtype_str<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">raise<\/span> ValueError<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Unsupported dtype: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>dtype_str<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">getattr<\/span><span class=\"token punctuation\">(<\/span>torch<span class=\"token punctuation\">,<\/span> dtype_str<span class=\"token punctuation\">)<\/span>\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">load_model_and_tokenizer<\/span><span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">str<\/span><span class=\"token punctuation\">,<\/span> dtype<span class=\"token operator\">=<\/span><span class=\"token string\">\"float32\"<\/span><span class=\"token punctuation\">,<\/span> device<span class=\"token operator\">=<\/span><span class=\"token string\">\"cpu\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    tokenizer <span class=\"token operator\">=<\/span> AutoTokenizer<span class=\"token punctuation\">.<\/span>from_pretrained<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">)<\/span>\n    dtype_obj <span class=\"token operator\">=<\/span> resolve_dtype<span class=\"token punctuation\">(<\/span>dtype<span class=\"token punctuation\">)<\/span>\n    model_kwargs <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>\n    <span class=\"token keyword\">if<\/span> dtype_obj <span class=\"token keyword\">is<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span>\n        model_kwargs<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"torch_dtype\"<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> dtype_obj\n    model <span class=\"token operator\">=<\/span> AutoModelForCausalLM<span class=\"token punctuation\">.<\/span>from_pretrained<span class=\"token punctuation\">(<\/span>name<span class=\"token punctuation\">,<\/span> <span class=\"token operator\">**<\/span>model_kwargs<span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">if<\/span> dtype_obj <span class=\"token keyword\">is<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">:<\/span>\n        model <span class=\"token operator\">=<\/span> model<span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>dtype<span class=\"token operator\">=<\/span>dtype_obj<span class=\"token punctuation\">)<\/span>\n    model <span class=\"token operator\">=<\/span> model<span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">return<\/span> tokenizer<span class=\"token punctuation\">,<\/span> model\n\nset_seed<span class=\"token punctuation\">(<\/span>SEED<span class=\"token punctuation\">)<\/span>\nlfm_tok<span class=\"token punctuation\">,<\/span> lfm_model   <span class=\"token operator\">=<\/span> load_model_and_tokenizer<span class=\"token punctuation\">(<\/span>LFM_MODEL_NAME<span class=\"token punctuation\">,<\/span> DTYPE<span class=\"token punctuation\">,<\/span> COMPUTE_DEVICE<span class=\"token punctuation\">)<\/span>\nqwen_tok<span class=\"token punctuation\">,<\/span> qwen_model <span class=\"token operator\">=<\/span> load_model_and_tokenizer<span class=\"token punctuation\">(<\/span>QWEN_MODEL_NAME<span class=\"token punctuation\">,<\/span> DTYPE<span class=\"token punctuation\">,<\/span> COMPUTE_DEVICE<span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"Models loaded on <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>COMPUTE_DEVICE<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> with dtype=<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>DTYPE<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<div class=\"code-block-container\">\n<pre class=\"language-py\"><code class=\"language-py code-line\" data-line=\"113\">\n<span class=\"token keyword\">import<\/span> threading<span class=\"token punctuation\">,<\/span> time<span class=\"token punctuation\">,<\/span> psutil<span class=\"token punctuation\">,<\/span> queue<span class=\"token punctuation\">,<\/span> os<span class=\"token punctuation\">,<\/span> sys<span class=\"token punctuation\">,<\/span> subprocess<span class=\"token punctuation\">,<\/span> re<span class=\"token punctuation\">,<\/span> math\n\n<span class=\"token keyword\">class<\/span> <span class=\"token class-name\">SysMonitor<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">__init__<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">,<\/span> interval<span class=\"token operator\">=<\/span><span class=\"token number\">0.1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>interval <span class=\"token operator\">=<\/span> interval\n        self<span class=\"token punctuation\">.<\/span>q <span class=\"token operator\">=<\/span> queue<span class=\"token punctuation\">.<\/span>Queue<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        self<span class=\"token punctuation\">.<\/span>_stop <span class=\"token operator\">=<\/span> threading<span class=\"token punctuation\">.<\/span>Event<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        self<span class=\"token punctuation\">.<\/span>_th <span class=\"token operator\">=<\/span> <span class=\"token boolean\">None<\/span>\n        self<span class=\"token punctuation\">.<\/span>proc <span class=\"token operator\">=<\/span> psutil<span class=\"token punctuation\">.<\/span>Process<span class=\"token punctuation\">(<\/span>os<span class=\"token punctuation\">.<\/span>getpid<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        self<span class=\"token punctuation\">.<\/span>_platform <span class=\"token operator\">=<\/span> sys<span class=\"token punctuation\">.<\/span>platform\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span>\n            self<span class=\"token punctuation\">.<\/span>_page_size <span class=\"token operator\">=<\/span> os<span class=\"token punctuation\">.<\/span>sysconf<span class=\"token punctuation\">(<\/span><span class=\"token string\">'SC_PAGE_SIZE'<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">except<\/span> <span class=\"token punctuation\">(<\/span>AttributeError<span class=\"token punctuation\">,<\/span> ValueError<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            self<span class=\"token punctuation\">.<\/span>_page_size <span class=\"token operator\">=<\/span> <span class=\"token number\">4096<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_linux_smaps<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        data <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>\n        path <span class=\"token operator\">=<\/span> <span class=\"token string-interpolation\"><span class=\"token string\">f\"\/proc\/<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>self<span class=\"token punctuation\">.<\/span>proc<span class=\"token punctuation\">.<\/span>pid<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">\/smaps_rollup\"<\/span><\/span>\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">with<\/span> <span class=\"token builtin\">open<\/span><span class=\"token punctuation\">(<\/span>path<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">as<\/span> fh<span class=\"token punctuation\">:<\/span>\n                <span class=\"token keyword\">for<\/span> line <span class=\"token keyword\">in<\/span> fh<span class=\"token punctuation\">:<\/span>\n                    <span class=\"token keyword\">if<\/span> line<span class=\"token punctuation\">.<\/span>startswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Pss:'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                        data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'smaps_pss_bytes'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>line<span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">1024<\/span>\n                    <span class=\"token keyword\">elif<\/span> line<span class=\"token punctuation\">.<\/span>startswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">'FilePss:'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                        data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'smaps_file_pss_bytes'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>line<span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">1024<\/span>\n                    <span class=\"token keyword\">elif<\/span> line<span class=\"token punctuation\">.<\/span>startswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Swap:'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                        data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'smaps_swap_bytes'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>line<span class=\"token punctuation\">.<\/span>split<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> <span class=\"token number\">1024<\/span>\n        <span class=\"token keyword\">except<\/span> <span class=\"token punctuation\">(<\/span>FileNotFoundError<span class=\"token punctuation\">,<\/span> PermissionError<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">pass<\/span>\n        <span class=\"token keyword\">return<\/span> data\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_darwin_vm_stat<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        data <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>\n        <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span>\n            out <span class=\"token operator\">=<\/span> subprocess<span class=\"token punctuation\">.<\/span>check_output<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'vm_stat'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> text<span class=\"token operator\">=<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">except<\/span> Exception<span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">return<\/span> data\n        page_size <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>_page_size\n        <span class=\"token keyword\">for<\/span> line <span class=\"token keyword\">in<\/span> out<span class=\"token punctuation\">.<\/span>splitlines<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            m <span class=\"token operator\">=<\/span> re<span class=\"token punctuation\">.<\/span>search<span class=\"token punctuation\">(<\/span><span class=\"token string\">r'page size of (\\d+)'<\/span><span class=\"token punctuation\">,<\/span> line<span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">if<\/span> m<span class=\"token punctuation\">:<\/span>\n                page_size <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span>m<span class=\"token punctuation\">.<\/span>group<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n                <span class=\"token keyword\">continue<\/span>\n            m <span class=\"token operator\">=<\/span> re<span class=\"token punctuation\">.<\/span><span class=\"token keyword\">match<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">r'\"?([A-Za-z\\- ]+)\"?:\\s+([\\d\\.]+)'<\/span><span class=\"token punctuation\">,<\/span> line<span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> m<span class=\"token punctuation\">:<\/span>\n                <span class=\"token keyword\">continue<\/span>\n            key <span class=\"token operator\">=<\/span> m<span class=\"token punctuation\">.<\/span>group<span class=\"token punctuation\">(<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token string\">'\"'<\/span><span class=\"token punctuation\">)<\/span>\n            val <span class=\"token operator\">=<\/span> <span class=\"token builtin\">int<\/span><span class=\"token punctuation\">(<\/span><span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span>m<span class=\"token punctuation\">.<\/span>group<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">if<\/span> key <span class=\"token operator\">==<\/span> <span class=\"token string\">'File-backed pages'<\/span><span class=\"token punctuation\">:<\/span>\n                data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'file_backed_bytes'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> val <span class=\"token operator\">*<\/span> page_size\n            <span class=\"token keyword\">elif<\/span> key <span class=\"token operator\">==<\/span> <span class=\"token string\">'Anonymous pages'<\/span><span class=\"token punctuation\">:<\/span>\n                data<span class=\"token punctuation\">[<\/span><span class=\"token string\">'anonymous_bytes'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">=<\/span> val <span class=\"token operator\">*<\/span> page_size\n        <span class=\"token keyword\">return<\/span> data\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_collect_os_memory<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>_platform<span class=\"token punctuation\">.<\/span>startswith<span class=\"token punctuation\">(<\/span><span class=\"token string\">'linux'<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>_linux_smaps<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>_platform <span class=\"token operator\">==<\/span> <span class=\"token string\">'darwin'<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">return<\/span> self<span class=\"token punctuation\">.<\/span>_darwin_vm_stat<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span><span class=\"token punctuation\">}<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">_run<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">while<\/span> <span class=\"token keyword\">not<\/span> self<span class=\"token punctuation\">.<\/span>_stop<span class=\"token punctuation\">.<\/span>is_set<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            ts <span class=\"token operator\">=<\/span> time<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">try<\/span><span class=\"token punctuation\">:<\/span>\n                full <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>proc<span class=\"token punctuation\">.<\/span>memory_full_info<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">except<\/span> psutil<span class=\"token punctuation\">.<\/span>Error<span class=\"token punctuation\">:<\/span>\n                full <span class=\"token operator\">=<\/span> self<span class=\"token punctuation\">.<\/span>proc<span class=\"token punctuation\">.<\/span>memory_info<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n            vm <span class=\"token operator\">=<\/span> psutil<span class=\"token punctuation\">.<\/span>virtual_memory<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n            swap <span class=\"token operator\">=<\/span> psutil<span class=\"token punctuation\">.<\/span>swap_memory<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n            cpu <span class=\"token operator\">=<\/span> psutil<span class=\"token punctuation\">.<\/span>cpu_percent<span class=\"token punctuation\">(<\/span>interval<span class=\"token operator\">=<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span>\n            sample <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>\n                <span class=\"token string\">'ts'<\/span><span class=\"token punctuation\">:<\/span> ts<span class=\"token punctuation\">,<\/span>\n                <span class=\"token string\">'vm_percent'<\/span><span class=\"token punctuation\">:<\/span> vm<span class=\"token punctuation\">.<\/span>percent<span class=\"token punctuation\">,<\/span>\n                <span class=\"token string\">'rss'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">getattr<\/span><span class=\"token punctuation\">(<\/span>full<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'rss'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                <span class=\"token string\">'uss'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">getattr<\/span><span class=\"token punctuation\">(<\/span>full<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'uss'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n                <span class=\"token string\">'cpu_percent'<\/span><span class=\"token punctuation\">:<\/span> cpu<span class=\"token punctuation\">,<\/span>\n                <span class=\"token string\">'swap_used'<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token builtin\">getattr<\/span><span class=\"token punctuation\">(<\/span>swap<span class=\"token punctuation\">,<\/span> <span class=\"token string\">'used'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token punctuation\">}<\/span>\n            sample<span class=\"token punctuation\">.<\/span>update<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>_collect_os_memory<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n            self<span class=\"token punctuation\">.<\/span>q<span class=\"token punctuation\">.<\/span>put<span class=\"token punctuation\">(<\/span>sample<span class=\"token punctuation\">)<\/span>\n            time<span class=\"token punctuation\">.<\/span>sleep<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>interval<span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">start<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        psutil<span class=\"token punctuation\">.<\/span>cpu_percent<span class=\"token punctuation\">(<\/span>interval<span class=\"token operator\">=<\/span><span class=\"token boolean\">None<\/span><span class=\"token punctuation\">)<\/span>  \n        self<span class=\"token punctuation\">.<\/span>_stop<span class=\"token punctuation\">.<\/span>clear<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        self<span class=\"token punctuation\">.<\/span>_th <span class=\"token operator\">=<\/span> threading<span class=\"token punctuation\">.<\/span>Thread<span class=\"token punctuation\">(<\/span>target<span class=\"token operator\">=<\/span>self<span class=\"token punctuation\">.<\/span>_run<span class=\"token punctuation\">,<\/span> daemon<span class=\"token operator\">=<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span>\n        self<span class=\"token punctuation\">.<\/span>_th<span class=\"token punctuation\">.<\/span>start<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">stop<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        self<span class=\"token punctuation\">.<\/span>_stop<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">set<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> self<span class=\"token punctuation\">.<\/span>_th<span class=\"token punctuation\">:<\/span>\n            self<span class=\"token punctuation\">.<\/span>_th<span class=\"token punctuation\">.<\/span>join<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">def<\/span> <span class=\"token function\">collect<\/span><span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        out <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>\n        <span class=\"token keyword\">while<\/span> <span class=\"token keyword\">not<\/span> self<span class=\"token punctuation\">.<\/span>q<span class=\"token punctuation\">.<\/span>empty<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            out<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>self<span class=\"token punctuation\">.<\/span>q<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span> out\n\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">plot_mem<\/span><span class=\"token punctuation\">(<\/span>series<span class=\"token punctuation\">,<\/span> title<span class=\"token operator\">=<\/span><span class=\"token string\">\"System Memory Usage\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> series<span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"No samples.\"<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">return<\/span>\n    <span class=\"token keyword\">import<\/span> matplotlib<span class=\"token punctuation\">.<\/span>pyplot <span class=\"token keyword\">as<\/span> plt\n\n    t0 <span class=\"token operator\">=<\/span> series<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token string\">'ts'<\/span><span class=\"token punctuation\">]<\/span>\n    t <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">[<\/span><span class=\"token string\">'ts'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token operator\">-<\/span> t0 <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span>\n\n    fig<span class=\"token punctuation\">,<\/span> axes <span class=\"token operator\">=<\/span> plt<span class=\"token punctuation\">.<\/span>subplots<span class=\"token punctuation\">(<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">2<\/span><span class=\"token punctuation\">,<\/span> figsize<span class=\"token operator\">=<\/span><span class=\"token punctuation\">(<\/span><span class=\"token number\">12<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span>\n    axes <span class=\"token operator\">=<\/span> axes<span class=\"token punctuation\">.<\/span>flatten<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">[<\/span><span class=\"token string\">'vm_percent'<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Time [s]'<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'System Memory [%]'<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>title<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> - System %\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n    rss <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'rss'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'rss'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">is<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token boolean\">None<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'nan'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span>\n    uss <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'uss'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'uss'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">is<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token boolean\">None<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'nan'<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">,<\/span> rss<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">=<\/span><span class=\"token string\">'RSS'<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span><span class=\"token keyword\">not<\/span> math<span class=\"token punctuation\">.<\/span>isnan<span class=\"token punctuation\">(<\/span>v<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> v <span class=\"token keyword\">in<\/span> uss<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">,<\/span> uss<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">=<\/span><span class=\"token string\">'USS'<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Time [s]'<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Process Memory [GB]'<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>title<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> - Process RSS\/USS\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">if<\/span> axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>lines<span class=\"token punctuation\">:<\/span>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    swap <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'swap_used'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">,<\/span> swap<span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Time [s]'<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Swap Used [GB]'<\/span><span class=\"token punctuation\">)<\/span>\n    axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">2<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>title<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> - Swap Usage\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\n    file_key <span class=\"token operator\">=<\/span> <span class=\"token string\">'smaps_file_pss_bytes'<\/span> <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">'smaps_file_pss_bytes'<\/span> <span class=\"token keyword\">in<\/span> s <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token string\">'file_backed_bytes'<\/span>\n    file_vals <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>file_key<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span>\n    anon_vals <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'anonymous_bytes'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span>\n    pss_vals <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span><span class=\"token string\">'smaps_pss_bytes'<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series<span class=\"token punctuation\">]<\/span>\n    <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span>v <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">for<\/span> v <span class=\"token keyword\">in<\/span> file_vals <span class=\"token operator\">+<\/span> anon_vals <span class=\"token operator\">+<\/span> pss_vals<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span>v <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">for<\/span> v <span class=\"token keyword\">in<\/span> file_vals<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">,<\/span> file_vals<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">=<\/span><span class=\"token string\">'File-backed'<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span>v <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">for<\/span> v <span class=\"token keyword\">in<\/span> anon_vals<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">,<\/span> anon_vals<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">=<\/span><span class=\"token string\">'Anonymous'<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token builtin\">any<\/span><span class=\"token punctuation\">(<\/span>v <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">for<\/span> v <span class=\"token keyword\">in<\/span> pss_vals<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>plot<span class=\"token punctuation\">(<\/span>t<span class=\"token punctuation\">,<\/span> pss_vals<span class=\"token punctuation\">,<\/span> label<span class=\"token operator\">=<\/span><span class=\"token string\">'PSS'<\/span><span class=\"token punctuation\">)<\/span>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_xlabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Time [s]'<\/span><span class=\"token punctuation\">)<\/span>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_ylabel<span class=\"token punctuation\">(<\/span><span class=\"token string\">'Memory [GB]'<\/span><span class=\"token punctuation\">)<\/span>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_title<span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>title<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> - Mapped Pages\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>lines<span class=\"token punctuation\">:<\/span>\n            axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>legend<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">else<\/span><span class=\"token punctuation\">:<\/span>\n        axes<span class=\"token punctuation\">[<\/span><span class=\"token number\">3<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>set_axis_off<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    plt<span class=\"token punctuation\">.<\/span>tight_layout<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    plt<span class=\"token punctuation\">.<\/span>show<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<div class=\"code-block-container\">\n<pre class=\"language-py\"><code class=\"language-py code-line\" data-line=\"273\">\n<span class=\"token keyword\">import<\/span> time\n<span class=\"token keyword\">import<\/span> torch\n<span class=\"token keyword\">import<\/span> pandas <span class=\"token keyword\">as<\/span> pd\n<span class=\"token keyword\">from<\/span> IPython<span class=\"token punctuation\">.<\/span>display <span class=\"token keyword\">import<\/span> display\n\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">build_prompt_text<\/span><span class=\"token punctuation\">(<\/span>target_tokens<span class=\"token punctuation\">,<\/span> base_chunk<span class=\"token operator\">=<\/span>PROMPT_CHUNK<span class=\"token punctuation\">,<\/span> approx_chars_per_token<span class=\"token operator\">=<\/span><span class=\"token number\">4<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    needed_chars <span class=\"token operator\">=<\/span> target_tokens <span class=\"token operator\">*<\/span> approx_chars_per_token\n    repeat <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>needed_chars <span class=\"token operator\">\/\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>base_chunk<span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">1<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">+<\/span> <span class=\"token number\">2<\/span>\n    prompt <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">(<\/span>base_chunk <span class=\"token operator\">+<\/span> <span class=\"token string\">\"\\n\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">*<\/span> repeat<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span>needed_chars<span class=\"token punctuation\">]<\/span>\n    <span class=\"token keyword\">return<\/span> prompt\n\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">summarize_series<\/span><span class=\"token punctuation\">(<\/span>series<span class=\"token punctuation\">,<\/span> key<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    vals <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> s <span class=\"token keyword\">in<\/span> series <span class=\"token keyword\">if<\/span> s<span class=\"token punctuation\">.<\/span>get<span class=\"token punctuation\">(<\/span>key<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">is<\/span> <span class=\"token keyword\">not<\/span> <span class=\"token boolean\">None<\/span><span class=\"token punctuation\">]<\/span>\n    <span class=\"token keyword\">return<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>vals<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> vals <span class=\"token keyword\">else<\/span> <span class=\"token boolean\">None<\/span>\n\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">generate_benchmark<\/span><span class=\"token punctuation\">(<\/span>model<span class=\"token punctuation\">,<\/span> tokenizer<span class=\"token punctuation\">,<\/span> prompt_text<span class=\"token punctuation\">,<\/span> max_new_tokens<span class=\"token operator\">=<\/span><span class=\"token number\">128<\/span><span class=\"token punctuation\">,<\/span> warmup_new_tokens<span class=\"token operator\">=<\/span><span class=\"token number\">8<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    device <span class=\"token operator\">=<\/span> <span class=\"token builtin\">next<\/span><span class=\"token punctuation\">(<\/span>model<span class=\"token punctuation\">.<\/span>parameters<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>device\n    inputs <span class=\"token operator\">=<\/span> tokenizer<span class=\"token punctuation\">(<\/span>prompt_text<span class=\"token punctuation\">,<\/span> return_tensors<span class=\"token operator\">=<\/span><span class=\"token string\">\"pt\"<\/span><span class=\"token punctuation\">)<\/span>\n    input_tokens <span class=\"token operator\">=<\/span> inputs<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"input_ids\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">[<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span>\n    inputs <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">{<\/span>k<span class=\"token punctuation\">:<\/span> v<span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>device<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">for<\/span> k<span class=\"token punctuation\">,<\/span> v <span class=\"token keyword\">in<\/span> inputs<span class=\"token punctuation\">.<\/span>items<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">}<\/span>\n\n    <span class=\"token keyword\">if<\/span> warmup_new_tokens<span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            model<span class=\"token punctuation\">.<\/span>generate<span class=\"token punctuation\">(<\/span><span class=\"token operator\">**<\/span>inputs<span class=\"token punctuation\">,<\/span> max_new_tokens<span class=\"token operator\">=<\/span>warmup_new_tokens<span class=\"token punctuation\">,<\/span> do_sample<span class=\"token operator\">=<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> use_cache<span class=\"token operator\">=<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span>\n            <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n                torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>reset_peak_memory_stats<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    monitor <span class=\"token operator\">=<\/span> SysMonitor<span class=\"token punctuation\">(<\/span>interval<span class=\"token operator\">=<\/span><span class=\"token number\">0.05<\/span><span class=\"token punctuation\">)<\/span>\n    monitor<span class=\"token punctuation\">.<\/span>start<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    t0 <span class=\"token operator\">=<\/span> time<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n        outputs <span class=\"token operator\">=<\/span> model<span class=\"token punctuation\">.<\/span>generate<span class=\"token punctuation\">(<\/span><span class=\"token operator\">**<\/span>inputs<span class=\"token punctuation\">,<\/span> max_new_tokens<span class=\"token operator\">=<\/span>max_new_tokens<span class=\"token punctuation\">,<\/span> do_sample<span class=\"token operator\">=<\/span><span class=\"token boolean\">False<\/span><span class=\"token punctuation\">,<\/span> use_cache<span class=\"token operator\">=<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>synchronize<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    elapsed <span class=\"token operator\">=<\/span> time<span class=\"token punctuation\">.<\/span>time<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">-<\/span> t0\n    monitor<span class=\"token punctuation\">.<\/span>stop<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    series <span class=\"token operator\">=<\/span> monitor<span class=\"token punctuation\">.<\/span>collect<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n\n    total_tokens <span class=\"token operator\">=<\/span> outputs<span class=\"token punctuation\">.<\/span>shape<span class=\"token punctuation\">[<\/span><span class=\"token operator\">-<\/span><span class=\"token number\">1<\/span><span class=\"token punctuation\">]<\/span>\n    new_tokens <span class=\"token operator\">=<\/span> <span class=\"token builtin\">max<\/span><span class=\"token punctuation\">(<\/span>total_tokens <span class=\"token operator\">-<\/span> input_tokens<span class=\"token punctuation\">,<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span>\n    gpu_peak_gb <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">(<\/span>torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>max_memory_allocated<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token number\">1e9<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token number\">0.0<\/span>\n\n    <span class=\"token keyword\">return<\/span> <span class=\"token punctuation\">{<\/span>\n        <span class=\"token string\">\"sec\"<\/span><span class=\"token punctuation\">:<\/span> elapsed<span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"input_tokens\"<\/span><span class=\"token punctuation\">:<\/span> input_tokens<span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"new_tokens\"<\/span><span class=\"token punctuation\">:<\/span> new_tokens<span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"tok_per_s\"<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">(<\/span>new_tokens <span class=\"token operator\">\/<\/span> elapsed<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> elapsed <span class=\"token operator\">&gt;<\/span> <span class=\"token number\">0<\/span> <span class=\"token keyword\">else<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"nan\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"gpu_gb_peak\"<\/span><span class=\"token punctuation\">:<\/span> gpu_peak_gb<span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"series\"<\/span><span class=\"token punctuation\">:<\/span> series<span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"output\"<\/span><span class=\"token punctuation\">:<\/span> tokenizer<span class=\"token punctuation\">.<\/span>decode<span class=\"token punctuation\">(<\/span>outputs<span class=\"token punctuation\">[<\/span><span class=\"token number\">0<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> skip_special_tokens<span class=\"token operator\">=<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">500<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"rss_peak_bytes\"<\/span><span class=\"token punctuation\">:<\/span> summarize_series<span class=\"token punctuation\">(<\/span>series<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"rss\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"uss_peak_bytes\"<\/span><span class=\"token punctuation\">:<\/span> summarize_series<span class=\"token punctuation\">(<\/span>series<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"uss\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"swap_peak_bytes\"<\/span><span class=\"token punctuation\">:<\/span> summarize_series<span class=\"token punctuation\">(<\/span>series<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"swap_used\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token string\">\"mapped_peak_bytes\"<\/span><span class=\"token punctuation\">:<\/span> summarize_series<span class=\"token punctuation\">(<\/span>series<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"smaps_file_pss_bytes\"<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">or<\/span> summarize_series<span class=\"token punctuation\">(<\/span>series<span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"file_backed_bytes\"<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n    <span class=\"token punctuation\">}<\/span>\n\n\nrecords <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>\n<span class=\"token keyword\">for<\/span> label<span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>tokenizer<span class=\"token punctuation\">,<\/span> model<span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">in<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"LFM\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>lfm_tok<span class=\"token punctuation\">,<\/span> lfm_model<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Qwen\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token punctuation\">(<\/span>qwen_tok<span class=\"token punctuation\">,<\/span> qwen_model<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span>\n    <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"=== <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>label<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> benchmark (device=<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>COMPUTE_DEVICE<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">, dtype=<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>DTYPE<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">) ===\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">for<\/span> target_len <span class=\"token keyword\">in<\/span> PROMPT_LENGTHS<span class=\"token punctuation\">:<\/span>\n        prompt_text <span class=\"token operator\">=<\/span> build_prompt_text<span class=\"token punctuation\">(<\/span>target_len<span class=\"token punctuation\">)<\/span>\n        result <span class=\"token operator\">=<\/span> generate_benchmark<span class=\"token punctuation\">(<\/span>\n            model<span class=\"token punctuation\">,<\/span>\n            tokenizer<span class=\"token punctuation\">,<\/span>\n            prompt_text<span class=\"token punctuation\">,<\/span>\n            max_new_tokens<span class=\"token operator\">=<\/span>MAX_NEW_TOKENS<span class=\"token punctuation\">,<\/span>\n            warmup_new_tokens<span class=\"token operator\">=<\/span>WARMUP_NEW_TOKENS<span class=\"token punctuation\">,<\/span>\n        <span class=\"token punctuation\">)<\/span>\n        records<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">{<\/span>\n            <span class=\"token string\">\"model\"<\/span><span class=\"token punctuation\">:<\/span> label<span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"target_prompt_tokens\"<\/span><span class=\"token punctuation\">:<\/span> target_len<span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"input_tokens\"<\/span><span class=\"token punctuation\">:<\/span> result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"input_tokens\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"new_tokens\"<\/span><span class=\"token punctuation\">:<\/span> result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"new_tokens\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"tok_per_s\"<\/span><span class=\"token punctuation\">:<\/span> result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"tok_per_s\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"wall_time_sec\"<\/span><span class=\"token punctuation\">:<\/span> result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"sec\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"rss_peak_gb\"<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"rss_peak_bytes\"<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"uss_peak_gb\"<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"uss_peak_bytes\"<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"swap_peak_gb\"<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"swap_peak_bytes\"<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n            <span class=\"token string\">\"mapped_peak_gb\"<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"mapped_peak_bytes\"<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">or<\/span> <span class=\"token number\">0<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token operator\">\/<\/span> <span class=\"token punctuation\">(<\/span><span class=\"token number\">1024<\/span> <span class=\"token operator\">**<\/span> <span class=\"token number\">3<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">,<\/span>\n        <span class=\"token punctuation\">}<\/span><span class=\"token punctuation\">)<\/span>\n        plot_mem<span class=\"token punctuation\">(<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"series\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">,<\/span> title<span class=\"token operator\">=<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>label<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> prompt\u2248<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>target_len<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> tokens\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span>\n            <span class=\"token string-interpolation\"><span class=\"token string\">f\"<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>label<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> | target=<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>target_len<span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> | actual_in=<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">'input_tokens'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> | \"<\/span><\/span>\n            <span class=\"token string-interpolation\"><span class=\"token string\">f\"tok\/s=<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">'tok_per_s'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> | wall=<\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">'sec'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.2f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\">s\"<\/span><\/span>\n        <span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">if<\/span> torch<span class=\"token punctuation\">.<\/span>cuda<span class=\"token punctuation\">.<\/span>is_available<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            <span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string-interpolation\"><span class=\"token string\">f\"  GPU peak memory: <\/span><span class=\"token interpolation\"><span class=\"token punctuation\">{<\/span>result<span class=\"token punctuation\">[<\/span><span class=\"token string\">'gpu_gb_peak'<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">:<\/span><span class=\"token format-spec\">.3f<\/span><span class=\"token punctuation\">}<\/span><\/span><span class=\"token string\"> GB\"<\/span><\/span><span class=\"token punctuation\">)<\/span>\n\nsummary_df <span class=\"token operator\">=<\/span> pd<span class=\"token punctuation\">.<\/span>DataFrame<span class=\"token punctuation\">(<\/span>records<span class=\"token punctuation\">)<\/span>\ndisplay<span class=\"token punctuation\">(<\/span>summary_df<span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<h2 id=\"%E7%B5%90%E6%9E%9C\" data-line=\"374\" class=\"code-line\">\n \u7d50\u679c<\/h2>\n<p data-line=\"375\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/5906619202f8-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"377\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/d5daf73ef848-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"379\" class=\"code-line\">512\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u5834\u5408\u3001RSS\u3068USS\u306fLFM\u306e\u65b9\u304c\u4f4e\u3044\u3088\u3046\u3067\u3059\u3002<\/p>\n<p data-line=\"381\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/0fe7f96043d7-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"383\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/a998c18b31d5-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"385\" class=\"code-line\">2048\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u5834\u5408\u3001\u82e5\u5e72\u3001RSS\u3068USS\u306fLFM\u306e\u65b9\u304c\u4f4e\u3044\u3088\u3046\u3067\u3059\u3002<br \/>\u307e\u305ftoken\/s\u306fLFM2\u306e\u65b9\u304c\u5927\u304d\u304f\u3001walltime\uff08\u5fdc\u7b54\u307e\u3067\u306e\u79d2\u6570\uff09\u306fLFM2\u306e\u65b9\u304c\u77ed\u304f\u306a\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"388\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/675ab9e5f609-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"390\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/b644139f43e8-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"392\" class=\"code-line\">8192\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3059\u308b\u5834\u5408\u3001\u3082\u306f\u3084RSS\u3068USS\u306e\u5dee\u306f\u3042\u307e\u308a\u306a\u3055\u305d\u3046\u3067\u3059\u3002<br \/>token\/s\u306fLFM2\u306e\u65b9\u304c\u5927\u304d\u304f\u3001walltime\uff08\u5fdc\u7b54\u307e\u3067\u306e\u79d2\u6570\uff09\u306fLFM2\u306e\u65b9\u304c\u77ed\u3044\u50be\u5411\u306f\u6b8b\u3063\u3066\u3044\u307e\u3059\u3002<\/p>\n<p data-line=\"395\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/e9669061bbd9-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"397\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/558bed32ed39-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"399\" class=\"code-line\">\u3061\u306a\u307f\u306b\u300116384\u30c8\u30fc\u30af\u30f3\u3092\u751f\u6210\u3057\u305f\u5834\u5408\u3082\u540c\u69d8\u306e\u50be\u5411\u304c\u898b\u3089\u308c\u307e\u3057\u305f\u304c\u3001\u4e0b\u8a18\u306eGPT\u307e\u3068\u3081\u306b\u3042\u308b\u3088\u3046\u306b\u3001actual_in\u304ctarget\u306etoken\u306e3\u500d\u304f\u3089\u3044\u306b\u306a\u3063\u3066\u3044\u307e\u3057\u305f\u3002<\/p>\n<div class=\"s_table\"><table data-line=\"401\" class=\"code-line\">\n<thead data-line=\"401\" class=\"code-line\">\n<tr data-line=\"401\" class=\"code-line\">\n<th>model<\/th>\n<th>target_prompt_tokens<\/th>\n<th>input_tokens<\/th>\n<th>new_tokens<\/th>\n<th>tok_per_s<\/th>\n<th>wall_time_sec<\/th>\n<th>rss_peak_gb<\/th>\n<th>uss_peak_gb<\/th>\n<th>swap_peak_gb<\/th>\n<th>mapped_peak_gb<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"403\" class=\"code-line\">\n<tr data-line=\"403\" class=\"code-line\">\n<td>LFM<\/td>\n<td>512<\/td>\n<td>1431<\/td>\n<td>256<\/td>\n<td>9.239644<\/td>\n<td>27.706694<\/td>\n<td>2.955368<\/td>\n<td>2.550400<\/td>\n<td>59.923950<\/td>\n<td>4.011017<\/td>\n<\/tr>\n<tr data-line=\"404\" class=\"code-line\">\n<td>LFM<\/td>\n<td>2048<\/td>\n<td>5717<\/td>\n<td>256<\/td>\n<td>7.191869<\/td>\n<td>35.595756<\/td>\n<td>2.588303<\/td>\n<td>1.895096<\/td>\n<td>59.502075<\/td>\n<td>2.406876<\/td>\n<\/tr>\n<tr data-line=\"405\" class=\"code-line\">\n<td>LFM<\/td>\n<td>8192<\/td>\n<td>22857<\/td>\n<td>256<\/td>\n<td>2.768608<\/td>\n<td>92.465238<\/td>\n<td>4.064514<\/td>\n<td>2.276474<\/td>\n<td>59.893738<\/td>\n<td>2.501022<\/td>\n<\/tr>\n<tr data-line=\"406\" class=\"code-line\">\n<td>LFM<\/td>\n<td>16384<\/td>\n<td>45712<\/td>\n<td>26<\/td>\n<td>0.219486<\/td>\n<td>118.458409<\/td>\n<td>4.892868<\/td>\n<td>3.046844<\/td>\n<td>61.392090<\/td>\n<td>2.564072<\/td>\n<\/tr>\n<tr data-line=\"407\" class=\"code-line\">\n<td>Qwen<\/td>\n<td>512<\/td>\n<td>1462<\/td>\n<td>256<\/td>\n<td>7.802807<\/td>\n<td>32.808707<\/td>\n<td>6.085373<\/td>\n<td>4.113785<\/td>\n<td>61.290527<\/td>\n<td>2.649109<\/td>\n<\/tr>\n<tr data-line=\"408\" class=\"code-line\">\n<td>Qwen<\/td>\n<td>2048<\/td>\n<td>5853<\/td>\n<td>256<\/td>\n<td>4.810232<\/td>\n<td>53.219882<\/td>\n<td>2.874817<\/td>\n<td>2.187973<\/td>\n<td>60.696777<\/td>\n<td>2.716232<\/td>\n<\/tr>\n<tr data-line=\"409\" class=\"code-line\">\n<td>Qwen<\/td>\n<td>8192<\/td>\n<td>23404<\/td>\n<td>256<\/td>\n<td>1.675937<\/td>\n<td>152.750402<\/td>\n<td>4.401276<\/td>\n<td>3.115860<\/td>\n<td>60.105286<\/td>\n<td>2.803894<\/td>\n<\/tr>\n<tr data-line=\"410\" class=\"code-line\">\n<td>Qwen<\/td>\n<td>16384<\/td>\n<td>46813<\/td>\n<td>256<\/td>\n<td>0.704879<\/td>\n<td>363.182963<\/td>\n<td>5.616989<\/td>\n<td>4.128571<\/td>\n<td>61.683167<\/td>\n<td>2.941635<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"412\" class=\"code-line\">\u65e5\u672c\u8a9e\u3067\u30c8\u30fc\u30af\u30f3\u6570\u3092\u898b\u7a4d\u3082\u3063\u3066\u3044\u305f\u305f\u3081\u3001approx_chars_per_token\u306e\u30c7\u30d5\u30a9\u30eb\u30c8\u30921\u3068\u304b\u306b\u3059\u3079\u304d\u3067\u3057\u305f\u3002<br \/>\uff08\u3082\u3057\u691c\u8a3c\u3057\u3066\u307f\u308b\u4eba\u304c\u3044\u305f\u3089\u3001approx_chars_per_token\u30921\u306b\u3057\u305f\u65b9\u304c\u826f\u3044\u304b\u3068\uff09<\/p>\n<p data-line=\"415\" class=\"code-line\">\u3067\u3059\u306e\u3067\u3001\u5b9f\u969b\u306e\u51e6\u7406\u6642\u9593\u306a\u3069\u306f\u53c2\u8003\u5024\u3067\u3059\u3002<\/p>\n<h2 id=\"gpt%E3%81%AB%E3%82%88%E3%82%8B%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"417\" class=\"code-line\">\n GPT\u306b\u3088\u308b\u307e\u3068\u3081<\/h2>\n<h3 id=\"%E8%BB%BD%E9%87%8Fcpu%E6%8E%A8%E8%AB%96%E3%81%AA%E3%82%89lfm%E3%81%8C%E6%9C%89%E5%88%A9%E3%81%AA%E5%B8%AF%E5%9F%9F%E3%81%8C%E5%BA%83%E3%81%84\" data-line=\"418\" class=\"code-line\">\n \u8efd\u91cfCPU\u63a8\u8ad6\u306a\u3089LFM\u304c\u6709\u5229\u306a\u5e2f\u57df\u304c\u5e83\u3044<\/h3>\n<p data-line=\"419\" class=\"code-line\">\u540c\u6761\u4ef6\uff08CPU\/float32\/256\u51fa\u529b\uff09\u3067\u3001512\u301c8k\u7d1a\u306e\u9577\u3055\u3067\u306fLFM\u304c1.2\u301c1.7\u500d\u7a0b\u5ea6\u901f\u3044\u3002\u3057\u304b\u3082RSS\u304c\u5e38\u306b\u4f4e\u3044\u305f\u3081\u3001\u30e1\u30e2\u30ea\u903c\u8feb\u3057\u3084\u3059\u3044\u74b0\u5883\uff08\u30ce\u30fc\u30c8PC\u30fb\u30bf\u30d6\u30ec\u30c3\u30c8\uff09\u3067\u6709\u5229\u306b\u898b\u3048\u308b\u3002<\/p>\n<h3 id=\"%E8%B6%85%E9%95%B7%E6%96%87%E5%9F%9F%EF%BC%88%E2%89%B316k%EF%BC%89%E3%81%A7%E3%81%AE%E6%8C%99%E5%8B%95%E3%81%AF%E8%A6%81%E5%86%8D%E6%A4%9C%E8%A8%BC\" data-line=\"421\" class=\"code-line\">\n \u8d85\u9577\u6587\u57df\uff08\u227316k\uff09\u3067\u306e\u6319\u52d5\u306f\u8981\u518d\u691c\u8a3c<\/h3>\n<p data-line=\"422\" class=\"code-line\">LFM\u306f\u300cactual_in \u2248 45,712 tokens\u300d\u306726\u30c8\u30fc\u30af\u30f3\u3057\u304b\u751f\u6210\u305b\u305a\u7d42\u4e86\u3002\u6709\u52b9\u30b3\u30f3\u30c6\u30ad\u30b9\u30c8\u4e0a\u9650\u30fb\u30c8\u30fc\u30af\u30ca\u30a4\u30b6\u5dee\u30fbEOS\/\u9577\u3055\u5236\u7d04\u306e\u3069\u308c\u304b\u306b\u5f15\u3063\u304b\u304b\u3063\u305f\u53ef\u80fd\u6027\u3002Qwen\u306f\u540c\u6761\u4ef6\u3067256\u51fa\u529b\u3057\u3066\u304a\u308a\u3001\u201c\u6975\u7aef\u306b\u9577\u3044\u5165\u529b\u201d\u3067\u306fQwen\u306e\u307b\u3046\u304c\u7c98\u308b\u4e00\u9762\u304c\u898b\u3048\u308b\u3002\u305f\u3060\u3057\u4eca\u56de\u306e16k\u30b1\u30fc\u30b9\u81ea\u4f53\u304c\u5f53\u521d\u60f3\u5b9a\u3088\u308a\u306f\u308b\u304b\u306b\u9577\u3044\u5b9f\u30c8\u30fc\u30af\u30f3\u6570\u3067\u8d70\u3063\u3066\u3044\u308b\u70b9\u306b\u6ce8\u610f\u3002<\/p>\n<h3 id=\"%E3%83%A1%E3%83%A2%E3%83%AA%E5%8A%B9%E7%8E%87%E3%81%AF%E4%B8%80%E8%B2%AB%E3%81%97%E3%81%A6lfm%E5%84%AA%E4%BD%8D\" data-line=\"424\" class=\"code-line\">\n \u30e1\u30e2\u30ea\u52b9\u7387\u306f\u4e00\u8cab\u3057\u3066LFM\u512a\u4f4d<\/h3>\n<p data-line=\"425\" class=\"code-line\">\u5404\u9577\u3055\u3067RSS\u306fLFM\u306e\u65b9\u304c\u5c0f\u3055\u3044\u3002file-backed\uff08\u30de\u30c3\u30d7\u30c9\uff09\u3082Qwen\u304c\u3084\u3084\u9ad8\u3081\u3002\u30aa\u30f3\u30c7\u30d0\u30a4\u30b9\u5b9f\u88c5\u3084\u540c\u6642\u591a\u672c\u63a8\u8ad6\u3067\u306f\u3001LFM\u306e\u65b9\u304c\u540c\u4e00RAM\u3067\u306e\u540c\u6642\u5b9f\u884c\u672c\u6570\u3092\u5897\u3084\u3057\u3084\u3059\u3044\u53ef\u80fd\u6027\u3002<\/p>\n<h2 id=\"qwen3-0.6b%E3%81%A7%E3%81%AE%E6%AF%94%E8%BC%83%E7%B5%90%E6%9E%9C\" data-line=\"428\" class=\"code-line\">\n Qwen3-0.6B\u3067\u306e\u6bd4\u8f03\u7d50\u679c<\/h2>\n<div class=\"s_table\"><table data-line=\"430\" class=\"code-line\">\n<thead data-line=\"430\" class=\"code-line\">\n<tr data-line=\"430\" class=\"code-line\">\n<th>model<\/th>\n<th>target_prompt_tokens<\/th>\n<th>input_tokens<\/th>\n<th>new_tokens<\/th>\n<th>tok_per_s<\/th>\n<th>wall_time_sec<\/th>\n<th>rss_peak_gb<\/th>\n<th>uss_peak_gb<\/th>\n<th>swap_peak_gb<\/th>\n<th>mapped_peak_gb<\/th>\n<\/tr>\n<\/thead>\n<tbody data-line=\"432\" class=\"code-line\">\n<tr data-line=\"432\" class=\"code-line\">\n<td>LFM<\/td>\n<td>512<\/td>\n<td>1431<\/td>\n<td>256<\/td>\n<td>9.453274<\/td>\n<td>27.080564<\/td>\n<td>1.830536<\/td>\n<td>1.591370<\/td>\n<td>63.014038<\/td>\n<td>3.759613<\/td>\n<\/tr>\n<tr data-line=\"433\" class=\"code-line\">\n<td>LFM<\/td>\n<td>2048<\/td>\n<td>5717<\/td>\n<td>256<\/td>\n<td>6.263960<\/td>\n<td>40.868713<\/td>\n<td>2.207642<\/td>\n<td>1.662888<\/td>\n<td>62.924561<\/td>\n<td>3.704407<\/td>\n<\/tr>\n<tr data-line=\"434\" class=\"code-line\">\n<td>LFM<\/td>\n<td>8192<\/td>\n<td>22857<\/td>\n<td>256<\/td>\n<td>3.006236<\/td>\n<td>85.156326<\/td>\n<td>3.918472<\/td>\n<td>2.385727<\/td>\n<td>64.054077<\/td>\n<td>3.334076<\/td>\n<\/tr>\n<tr data-line=\"435\" class=\"code-line\">\n<td>Qwen<\/td>\n<td>512<\/td>\n<td>1462<\/td>\n<td>256<\/td>\n<td>3.041807<\/td>\n<td>84.160513<\/td>\n<td>4.440308<\/td>\n<td>3.690994<\/td>\n<td>63.509216<\/td>\n<td>3.536728<\/td>\n<\/tr>\n<tr data-line=\"436\" class=\"code-line\">\n<td>Qwen<\/td>\n<td>2048<\/td>\n<td>5853<\/td>\n<td>256<\/td>\n<td>1.496960<\/td>\n<td>171.013219<\/td>\n<td>4.787827<\/td>\n<td>3.078491<\/td>\n<td>60.512878<\/td>\n<td>3.298141<\/td>\n<\/tr>\n<tr data-line=\"437\" class=\"code-line\">\n<td>Qwen<\/td>\n<td>8192<\/td>\n<td>23404<\/td>\n<td>256<\/td>\n<td>0.280379<\/td>\n<td>913.049601<\/td>\n<td>9.420700<\/td>\n<td>8.258942<\/td>\n<td>66.086975<\/td>\n<td>3.465591<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<p data-line=\"439\" class=\"code-line\">token\/s\u3082\u3001wall_time\u3082rss_peak\u3082LFM\u306e\u65b9\u304c\u512a\u79c0\u307f\u305f\u3044\u306a\u7d50\u679c\u304c\u51fa\u307e\u3057\u305f\u3002<\/p>\n<h2 id=\"%E7%B2%BE%E5%BA%A6%EF%BC%88perplexity%EF%BC%89\" data-line=\"441\" class=\"code-line\">\n \u7cbe\u5ea6\uff08Perplexity\uff09<\/h2>\n<p data-line=\"443\" class=\"code-line\">Perplexity\uff08\u56f0\u60d1\u5ea6\uff09\u300c\u30e2\u30c7\u30eb\u304c\u30c6\u30ad\u30b9\u30c8\u3092\u3069\u308c\u3060\u3051\u4e88\u6e2c\u3067\u304d\u308b\u304b\u300d\u3092\u793a\u3059\u6307\u6a19\u3002<br \/>\u6570\u5f0f\u7684\u306b\u306f exp(\u5e73\u5747\u640d\u5931) \u3067\u3001<\/p>\n<ul data-line=\"445\" class=\"code-line\">\n<li data-line=\"445\" class=\"code-line\">\u4f4e\u3044\u307b\u3069 \u78ba\u7387\u5206\u5e03\u304c\u81ea\u7136\u8a00\u8a9e\u306b\u8fd1\u3044<\/li>\n<li data-line=\"446\" class=\"code-line\">\u9ad8\u3044\u307b\u3069 \u4e88\u6e2c\u304c\u4e0d\u78ba\u5b9f\uff08\u78ba\u4fe1\u304c\u6301\u3066\u306a\u3044\uff09<br \/>\uff1d\u300c\u5c0f\u3055\u3044\u307b\u3069\u8ce2\u3044\u300d\u30b9\u30b3\u30a2\u3067\u3059\u3002<\/li>\n<\/ul>\n<div class=\"code-block-container\">\n<pre class=\"language-py\"><code class=\"language-py code-line\" data-line=\"449\">\n<span class=\"token keyword\">from<\/span> datasets <span class=\"token keyword\">import<\/span> load_dataset\n<span class=\"token keyword\">import<\/span> torch<span class=\"token punctuation\">,<\/span> math\n\n<span class=\"token keyword\">def<\/span> <span class=\"token function\">calc_ppl<\/span><span class=\"token punctuation\">(<\/span>model<span class=\"token punctuation\">,<\/span> tokenizer<span class=\"token punctuation\">,<\/span> texts<span class=\"token punctuation\">,<\/span> max_length<span class=\"token operator\">=<\/span><span class=\"token number\">1024<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n    model<span class=\"token punctuation\">.<\/span><span class=\"token builtin\">eval<\/span><span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n    losses <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">]<\/span>\n    <span class=\"token keyword\">for<\/span> txt <span class=\"token keyword\">in<\/span> texts<span class=\"token punctuation\">:<\/span>\n        <span class=\"token keyword\">if<\/span> <span class=\"token keyword\">not<\/span> txt<span class=\"token punctuation\">.<\/span>strip<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span> <span class=\"token keyword\">continue<\/span>\n        enc <span class=\"token operator\">=<\/span> tokenizer<span class=\"token punctuation\">(<\/span>txt<span class=\"token punctuation\">,<\/span> return_tensors<span class=\"token operator\">=<\/span><span class=\"token string\">\"pt\"<\/span><span class=\"token punctuation\">,<\/span> truncation<span class=\"token operator\">=<\/span><span class=\"token boolean\">True<\/span><span class=\"token punctuation\">,<\/span> max_length<span class=\"token operator\">=<\/span>max_length<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">.<\/span>to<span class=\"token punctuation\">(<\/span>model<span class=\"token punctuation\">.<\/span>device<span class=\"token punctuation\">)<\/span>\n        <span class=\"token keyword\">with<\/span> torch<span class=\"token punctuation\">.<\/span>no_grad<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">:<\/span>\n            out <span class=\"token operator\">=<\/span> model<span class=\"token punctuation\">(<\/span><span class=\"token operator\">**<\/span>enc<span class=\"token punctuation\">,<\/span> labels<span class=\"token operator\">=<\/span>enc<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"input_ids\"<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">)<\/span>\n            loss <span class=\"token operator\">=<\/span> out<span class=\"token punctuation\">.<\/span>loss<span class=\"token punctuation\">.<\/span>item<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span>\n        losses<span class=\"token punctuation\">.<\/span>append<span class=\"token punctuation\">(<\/span>loss<span class=\"token punctuation\">)<\/span>\n    <span class=\"token keyword\">return<\/span> math<span class=\"token punctuation\">.<\/span>exp<span class=\"token punctuation\">(<\/span><span class=\"token builtin\">sum<\/span><span class=\"token punctuation\">(<\/span>losses<span class=\"token punctuation\">)<\/span><span class=\"token operator\">\/<\/span><span class=\"token builtin\">len<\/span><span class=\"token punctuation\">(<\/span>losses<span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">)<\/span> <span class=\"token keyword\">if<\/span> losses <span class=\"token keyword\">else<\/span> <span class=\"token builtin\">float<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"inf\"<\/span><span class=\"token punctuation\">)<\/span>\n\nds <span class=\"token operator\">=<\/span> load_dataset<span class=\"token punctuation\">(<\/span><span class=\"token string\">\"wikitext\"<\/span><span class=\"token punctuation\">,<\/span> <span class=\"token string\">\"wikitext-2-raw-v1\"<\/span><span class=\"token punctuation\">,<\/span> split<span class=\"token operator\">=<\/span><span class=\"token string\">\"test[:200]\"<\/span><span class=\"token punctuation\">)<\/span>\ntexts <span class=\"token operator\">=<\/span> <span class=\"token punctuation\">[<\/span>t <span class=\"token keyword\">for<\/span> t <span class=\"token keyword\">in<\/span> ds<span class=\"token punctuation\">[<\/span><span class=\"token string\">\"text\"<\/span><span class=\"token punctuation\">]<\/span> <span class=\"token keyword\">if<\/span> t <span class=\"token keyword\">and<\/span> <span class=\"token keyword\">not<\/span> t<span class=\"token punctuation\">.<\/span>isspace<span class=\"token punctuation\">(<\/span><span class=\"token punctuation\">)<\/span><span class=\"token punctuation\">]<\/span><span class=\"token punctuation\">[<\/span><span class=\"token punctuation\">:<\/span><span class=\"token number\">64<\/span><span class=\"token punctuation\">]<\/span>\n\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Calculating Perplexity... (subset)\"<\/span><span class=\"token punctuation\">)<\/span>\nlfm_ppl  <span class=\"token operator\">=<\/span> calc_ppl<span class=\"token punctuation\">(<\/span>lfm_model<span class=\"token punctuation\">,<\/span> lfm_tok<span class=\"token punctuation\">,<\/span> texts<span class=\"token punctuation\">)<\/span>\nqwen_ppl <span class=\"token operator\">=<\/span> calc_ppl<span class=\"token punctuation\">(<\/span>qwen_model<span class=\"token punctuation\">,<\/span> qwen_tok<span class=\"token punctuation\">,<\/span> texts<span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"LFM PPL :\"<\/span><span class=\"token punctuation\">,<\/span> lfm_ppl<span class=\"token punctuation\">)<\/span>\n<span class=\"token keyword\">print<\/span><span class=\"token punctuation\">(<\/span><span class=\"token string\">\"Qwen PPL:\"<\/span><span class=\"token punctuation\">,<\/span> qwen_ppl<span class=\"token punctuation\">)<\/span>\n<\/code><\/pre>\n<\/div>\n<p data-line=\"476\" class=\"code-line\">Perplexity\u3092\u6bd4\u3079\u308b\u3068\u3001\u4e0b\u8a18\u306e\u7d50\u679c\u3060\u3063\u305f\u306e\u3067\u3001\u81ea\u7136\u8a00\u8a9e\u7406\u89e3\u30fb\u4e00\u822c\u30c6\u30ad\u30b9\u30c8\u306e\u518d\u73fe\u7cbe\u5ea6\u3067\u306fQwen3\u304c\u82e5\u5e72\u4e0a\u3068\u306e\u7d50\u679c\u304c\u51fa\u307e\u3057\u305f\u3002<\/p>\n<p data-line=\"478\" class=\"code-line\">Calculating Perplexity&#8230; (subset)<br \/>LFM PPL : 177.8903552972885<br \/>Qwen PPL: 159.65259927195328<\/p>\n<h2 id=\"%E3%81%BE%E3%81%A8%E3%82%81\" data-line=\"482\" class=\"code-line\">\n \u307e\u3068\u3081<\/h2>\n<p data-line=\"483\" class=\"code-line\">Liquid AI\u306e\u30e2\u30c7\u30eb\u306fLEAP\u3068\u3044\u3046\u30d7\u30e9\u30c3\u30c8\u30d5\u30a9\u30fc\u30e0\u3082\u5408\u308f\u305b\u3066Android\u3084iOS\u5411\u3051\u306b\u6700\u9069\u5316\u3082\u3055\u308c\u3066\u3044\u308b\u3088\u3046\u306a\u306e\u3067\u3001\u30e2\u30d0\u30a4\u30eb\u7aef\u672b\u3060\u3068\u3055\u3089\u306b\u9055\u3044\u304c\u51fa\u308b\u304b\u3082\u3057\u308c\u307e\u305b\u3093\u3002<\/p>\n<p data-line=\"485\" class=\"code-line\">\u307e\u305f\u3001FineTuning\u306eNotebook\u3082\u7528\u610f\u3055\u308c\u3066\u3044\u308b\u306e\u3067\u3001FineTuning\u3082\u6bd4\u8f03\u7684\u3084\u308a\u3084\u3059\u305d\u3046\u3067\u3059\u3002<br style=\"display:none\"\/><br \/>\n<span class=\"embed-block zenn-embedded zenn-embedded-card\"><iframe id=\"zenn-embedded__ece25c0e8f3ff\" src=\"https:\/\/embed.zenn.studio\/card#zenn-embedded__ece25c0e8f3ff\" data-content=\"https%3A%2F%2Fleap.liquid.ai%2Fdocs%2Ffinetuning\" frameborder=\"0\" scrolling=\"no\" loading=\"lazy\"><\/iframe><\/span><a target=\"_blank\" href=\"https:\/\/leap.liquid.ai\/docs\/finetuning\" style=\"display:none\" target=\"_blank\" rel=\"nofollow noopener noreferrer\">https:\/\/leap.liquid.ai\/docs\/finetuning<\/a><\/p>\n<p data-line=\"488\" class=\"code-line\"><img decoding=\"async\" src=\"https:\/\/storage.googleapis.com\/zenn-user-upload\/527a81ae5cb8-20251031.png\" alt=\"\" class=\"md-img\" loading=\"lazy\"\/><\/p>\n<p data-line=\"490\" class=\"code-line\">LLM\/SLM on Edge\u304c\u6765\u308b\u305e\u3068\u3044\u3046\u30cb\u30e5\u30fc\u30b9\u304c\u51fa\u3066\u304d\u3066\u3044\u308b\u306e\u3067\u3001\u7701\u30e1\u30e2\u30ea\u3001\u7701\u96fb\u529b\u306a\u30e2\u30c7\u30eb\u306e\u9032\u5316\u306b\u306f\u671f\u5f85\u3057\u304b\u3042\u308a\u307e\u305b\u3093\u3002<\/p>\n<\/div>\n\n<br \/><a href=\"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"Liquid AI LiquidAI\u306fTransfomer\u30d9\u30fc\u30b9\u306eQwen\u306a\u3069\u3088\u308a\u3001\u30a8\u30c3\u30b8\u30fb\u30aa\u30f3\u30c7\u30d0\u30a4\u30b9\u7528\u9014\uff08\u30e2\u30d0\u30a4\u30eb\uff0f\u30bf\u30d6\u30ec\u30c3\u30c8\uff0fNPU\uff09\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u3001SLM\u3068\u3057\u3066\u3001LFM2\u3068\u3044\u3046\u30e2\u30c7\u30eb\u3092Huggingface\u306a\u3069\u306b [&hellip;]","protected":false},"author":1,"featured_media":21691,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[4],"tags":[],"class_list":["post-21690","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-company-tec"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"Liquid AI LiquidAI\u306fTransfomer\u30d9\u30fc\u30b9\u306eQwen\u306a\u3069\u3088\u308a\u3001\u30a8\u30c3\u30b8\u30fb\u30aa\u30f3\u30c7\u30d0\u30a4\u30b9\u7528\u9014\uff08\u30e2\u30d0\u30a4\u30eb\uff0f\u30bf\u30d6\u30ec\u30c3\u30c8\uff0fNPU\uff09\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u3001SLM\u3068\u3057\u3066\u3001LFM2\u3068\u3044\u3046\u30e2\u30c7\u30eb\u3092Huggingface\u306a\u3069\u306b [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-31T14:49:59+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761922199_og-base-w1200-v2.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\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=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"10\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/21690\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B\",\"datePublished\":\"2025-10-31T14:49:59+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/21690\\\/\"},\"wordCount\":342,\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761922199_og-base-w1200-v2.png\",\"articleSection\":[\"\u4f01\u696d\u30c6\u30c3\u30af\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/21690\\\/\",\"url\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede\",\"name\":\"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761922199_og-base-w1200-v2.png\",\"datePublished\":\"2025-10-31T14:49:59+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761922199_og-base-w1200-v2.png\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/1761922199_og-base-w1200-v2.png\",\"width\":1200,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/zenn.dev\\\/headwaters\\\/articles\\\/502dc7bcf5dede#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B - \u30dd\u30b1\u30b3\u30f3","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:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede","og_locale":"ja_JP","og_type":"article","og_title":"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B - \u30dd\u30b1\u30b3\u30f3","og_description":"Liquid AI LiquidAI\u306fTransfomer\u30d9\u30fc\u30b9\u306eQwen\u306a\u3069\u3088\u308a\u3001\u30a8\u30c3\u30b8\u30fb\u30aa\u30f3\u30c7\u30d0\u30a4\u30b9\u7528\u9014\uff08\u30e2\u30d0\u30a4\u30eb\uff0f\u30bf\u30d6\u30ec\u30c3\u30c8\uff0fNPU\uff09\u306b\u6700\u9069\u5316\u3055\u308c\u305f\u3001SLM\u3068\u3057\u3066\u3001LFM2\u3068\u3044\u3046\u30e2\u30c7\u30eb\u3092Huggingface\u306a\u3069\u306b [&hellip;]","og_url":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-10-31T14:49:59+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761922199_og-base-w1200-v2.png","type":"image\/png"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"10\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/21690\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B","datePublished":"2025-10-31T14:49:59+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/21690\/"},"wordCount":342,"image":{"@id":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761922199_og-base-w1200-v2.png","articleSection":["\u4f01\u696d\u30c6\u30c3\u30af"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/21690\/","url":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede","name":"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede#primaryimage"},"image":{"@id":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761922199_og-base-w1200-v2.png","datePublished":"2025-10-31T14:49:59+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761922199_og-base-w1200-v2.png","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/1761922199_og-base-w1200-v2.png","width":1200,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/zenn.dev\/headwaters\/articles\/502dc7bcf5dede#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"LiquidAI\u306eCPU\u30d1\u30d5\u30a9\u30fc\u30de\u30f3\u30b9\u691c\u8a3c LFM2-350M vs Qwen2.5-0.5B vs Qwen3-0.6B"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/21690","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=21690"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/21690\/revisions"}],"predecessor-version":[{"id":21692,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/21690\/revisions\/21692"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/21691"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=21690"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=21690"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=21690"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}