{"id":2992,"date":"2026-09-23T16:14:50","date_gmt":"2026-09-23T07:14:50","guid":{"rendered":"https:\/\/localmodelwatch.tsuchitsuchi.com\/2026\/09\/23\/ifm-k2-horizon-32b-nvfp4-released\/"},"modified":"2026-11-08T19:08:38","modified_gmt":"2026-11-08T10:08:38","slug":"ifm-k2-horizon-32b-nvfp4-released","status":"publish","type":"post","link":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/23\/ifm-k2-horizon-32b-nvfp4-released\/","title":{"rendered":"K2-Horizon-32B-NVFP4: Our Test Answers, 32GB+ VRAM"},"content":{"rendered":"<p><!-- lmw:facts --><\/p>\n<h2>At a Glance<\/h2>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Item<\/th>\n<th>Value<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>Repository<\/td>\n<td><a href=\"https:\/\/huggingface.co\/IFM\/K2-Horizon-32B-NVFP4\">IFM\/K2-Horizon-32B-NVFP4<\/a><\/td>\n<\/tr>\n<tr>\n<td>Family guide<\/td>\n<td><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/model-ifm-k2-horizon-en\/\">K2-Horizon guide (3 articles)<\/a><\/td>\n<\/tr>\n<tr>\n<td>Publisher guide<\/td>\n<td><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/publisher-ifm-en\/\">IFM (MBZUAI): models and licenses<\/a><\/td>\n<\/tr>\n<tr>\n<td>Published<\/td>\n<td>2026-09-22<\/td>\n<\/tr>\n<tr>\n<td>License<\/td>\n<td>apache-2.0<\/td>\n<\/tr>\n<tr>\n<td>Formats<\/td>\n<td>safetensors<\/td>\n<\/tr>\n<tr>\n<td>Source type<\/td>\n<td>Primary source (the publisher itself)<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><em>Values determined by this site&#8217;s code when the information was collected. Dates are JST.<\/em><\/p>\n<p><!-- \/lmw:facts --><\/p>\n<p><!-- lmw:lab-summary --><\/p>\n<p><strong>What we checked ourselves<\/strong><\/p>\n<ul>\n<li>Ran the publisher&#8217;s own code (transformers 5.18.0, NVFP4, compressed-tensors, revision <code>71b0789349<\/code>) on a cloud GPU on Modal (NVIDIA A100-SXM4-80GB, peak VRAM 71.3GB) and show its answers verbatim.<\/li>\n<li>It needs about 18% fewer tokens than the Qwen3 tokenizer for the same Japanese text, so about 1.22\u00d7 as much Japanese fits in the same context length, and generation is faster per character.<\/li>\n<\/ul>\n<p>Details and conditions are in \u201cOur Own Measurements\u201d below.<\/p>\n<p><!-- \/lmw:lab-summary --><\/p>\n<h2>Overview<\/h2>\n<p>IFM has released &#8220;IFM\/K2-Horizon-32B-NVFP4&#8221;, a model obtained by quantizing the Stage1 checkpoint of the open-weight large language model &#8220;K2-Horizon-32B&#8221; into the NVFP4 format.<\/p>\n<p>This model is a 32B dense-configuration, decoder-only model featuring a massive context length of 512K (524,288 tokens). Both weights and activations are quantized to NVFP4 across all linear layers except for <code>lm_head<\/code>, making it optimized for NVIDIA Blackwell generation (B\u30b7\u30ea\u30fc\u30ba) and later GPUs with native NVFP4 support.<\/p>\n<h2>Specifications<\/h2>\n<ul>\n<li>Parameter count: 32B (Total parameters 32B \/ Activated parameters 32B)<\/li>\n<li>Architecture: Dense (decoder-only)<\/li>\n<li>Context length: 512K (524,288 tokens)<\/li>\n<\/ul>\n<h2>Performance<\/h2>\n<p>The model card published by the release origin features a comparison table against other open-weight dense models, as well as a quantization comparison table between the BF16 version and the NVFP4 version.<\/p>\n<p>First, the comparison results with open-weight dense models in the same scale category are as follows:<\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<p class=\"lmw-table-hint\" style=\"margin:0 0 4px;font-size:0.85em;opacity:0.7;\">\u2192 Scroll horizontally to see all columns<\/p>\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th><\/th>\n<th>K2-Horizon-32B-Stage1<\/th>\n<th>Open-weight dense models \/ Qwen3.8-27B<\/th>\n<th>Open-weight dense models \/ Muse Glimmer-30B<\/th>\n<th>Open-weight dense models \/ IBM Granite 4.2 30B<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td># Params<\/td>\n<td>32B<\/td>\n<td>27B<\/td>\n<td>30B<\/td>\n<td>30B<\/td>\n<\/tr>\n<tr>\n<td># Activated params<\/td>\n<td>32B<\/td>\n<td>27B<\/td>\n<td>30B<\/td>\n<td>30B<\/td>\n<\/tr>\n<tr>\n<td>Architecture<\/td>\n<td>Dense<\/td>\n<td>Dense<\/td>\n<td>Dense<\/td>\n<td>Dense<\/td>\n<\/tr>\n<tr>\n<td><strong>Agents<\/strong><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>tau3-Banking Agentic tool use<\/td>\n<td>22.5<\/td>\n<td>48.0<\/td>\n<td>23.5<\/td>\n<td>14.4<\/td>\n<\/tr>\n<tr>\n<td><strong>Coding<\/strong><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Terminal-Bench 2.1 Agentic terminal use<\/td>\n<td>36.6<\/td>\n<td>79.8<\/td>\n<td>51.7<\/td>\n<td>26.6<\/td>\n<\/tr>\n<tr>\n<td>SciCode Scientific coding<\/td>\n<td>30.2<\/td>\n<td>44.7<\/td>\n<td>43.6<\/td>\n<td>36.6<\/td>\n<\/tr>\n<tr>\n<td><strong>Scientific Reasoning<\/strong><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>Humanity&#8217;s Last Exam (without tools) Expert-level reasoning<\/td>\n<td>22.8<\/td>\n<td>33.9<\/td>\n<td>22.0<\/td>\n<td>11.2<\/td>\n<\/tr>\n<tr>\n<td>GPQA Diamond Graduate-level science QA<\/td>\n<td>82.3<\/td>\n<td>90.5<\/td>\n<td>83.5<\/td>\n<td>64.4<\/td>\n<\/tr>\n<tr>\n<td>CritPt Frontier physics reasoning<\/td>\n<td>1.4<\/td>\n<td>5.4<\/td>\n<td>2.6<\/td>\n<td>0.3<\/td>\n<\/tr>\n<tr>\n<td><strong>General<\/strong><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<td><\/td>\n<\/tr>\n<tr>\n<td>AA-LCR Long-context reasoning<\/td>\n<td>65.3<\/td>\n<td>77.3<\/td>\n<td>80.0<\/td>\n<td>46.7<\/td>\n<\/tr>\n<tr>\n<td>AA-Omniscience Accuracy Factual accuracy<\/td>\n<td>16.8<\/td>\n<td>15.6<\/td>\n<td>27.0<\/td>\n<td>10.1<\/td>\n<\/tr>\n<tr>\n<td>AA-Omniscience Non-Hallucination Non-hallucination rate<\/td>\n<td>58.3<\/td>\n<td>69.7<\/td>\n<td>18.1<\/td>\n<td>74.4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>From this table, it can be seen that K2-Horizon-32B-Stage1 demonstrates high-level reasoning capabilities comparable to Muse Glimmer-30B and outperforms IBM Granite 4.2 30B in Humanity&#8217;s Last Exam (22.8%), which collects expert-level ultra-difficult questions, and GPQA Diamond (82.3%), which tests PhD-level science questions. On the other hand, in agent capabilities and coding metrics such as Terminal-Bench 2.1 (36.6%) measuring terminal operation completion, tau3-Banking (22.5%), and SciCode (30.2%), it falls short of Qwen3.8-27B (79.8%, 48.0%, 44.7%), showing a clear gap.<\/p>\n<p>Next is the direct comparison data between the original model&#8217;s BF16 version and this NVFP4 version (65,536 token context length, 0-shot evaluation).<\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<p class=\"lmw-table-hint\" style=\"margin:0 0 4px;font-size:0.85em;opacity:0.7;\">\u2192 Scroll horizontally to see all columns<\/p>\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>K2-Horizon-32B-Stage1<\/th>\n<th>IFEval (Prompt)<\/th>\n<th>GSM8K<\/th>\n<th>MBPP<\/th>\n<th>MMLU-Pro<\/th>\n<th>GPQA-Diamond<\/th>\n<th>BBH (3-shot)<\/th>\n<th>AIME 26 (avg @ 32)<\/th>\n<th>Average<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>BF16<\/td>\n<td>86.69<\/td>\n<td>96.21<\/td>\n<td>94.40<\/td>\n<td>81.52<\/td>\n<td>81.76<\/td>\n<td>93.20<\/td>\n<td>92.60<\/td>\n<td>89.5<\/td>\n<\/tr>\n<tr>\n<td>NVFP4<\/td>\n<td>85.40<\/td>\n<td>96.59<\/td>\n<td>93.20<\/td>\n<td>80.47<\/td>\n<td>78.82<\/td>\n<td>93.30<\/td>\n<td>91.15<\/td>\n<td>88.4<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>According to measurements by the release origin, the average score dropped by a mere 1.1 points from 89.5% for the BF16 version to 88.4% for the NVFP4 version. While maintaining figures equal to or higher than BF16 in GSM8K (96.59%), which solves math word problems, and BBH (93.30%), a reasoning task, slight score drops are observed in challenging fields such as GPQA-Diamond (81.76% \u2192 78.82%), AIME 26 (92.60% \u2192 91.15%) testing Math Olympiad preliminary levels, MBPP (94.40% \u2192 93.20%) solving Python problems, and IFEval (86.69% \u2192 85.40%) measuring instruction-following. Note that evaluation of the NVFP4 version is currently limited to non-agent tasks, and agent task results are scheduled to be released at a later date.<\/p>\n<h2>Strengths and Use Cases<\/h2>\n<p>While possessing an easy-to-manage scale of 32B, &#8220;IFM\/K2-Horizon-32B-NVFP4&#8221; combines extremely long-context processing capabilities, advanced reasoning abilities, and flexible tool use functions, making it particularly strong in the following use cases:<\/p>\n<h3>Long-Context Processing (Supports 512K Tokens)<\/h3>\n<p>This model supports a native context window of 524,288 tokens (512K) from the midtraining stage onwards. This makes it possible to input bundles of academic papers, large-scale source code bases, or lengthy contracts all at once, and perform advanced analysis, summarization, and Q&amp;A based on their contents.<\/p>\n<h3>Advanced Reasoning with Thought Processes<\/h3>\n<p>This model features the capability to output thought processes (Reasoning). When used via the API, by specifying the recommended setting <code>reasoning_effort=\"high\"<\/code>, the model outputs the thought process leading to the answer in <code>reasoning_content<\/code> and the final answer in <code>content<\/code> separately. This enables obtaining high-quality answers that build accurate step-by-step thoughts in difficult tasks such as mathematics, science, and complex logic puzzles.<\/p>\n<h3>Flexible Tool Use and Agent Integration<\/h3>\n<p>This model supports multiple formats for integration with external tools. Specifically, it supports three types of tool-calling formats: <code>json<\/code>, <code>xml<\/code>, and <code>xml_typed<\/code>, with <code>xml<\/code> used by default. These can be toggled per request via <code>chat_template_kwargs<\/code>, allowing flexible agent construction tailored to system requirements.<\/p>\n<h3>Fast and Memory-Efficient Inference on Blackwell GPUs<\/h3>\n<p>The greatest feature of this model is that the weights and activations of all linear layers except for <code>lm_head<\/code> are quantized into the NVFP4 format. This allows for extremely fast inference while drastically reducing memory usage on GPUs with native NVFP4 support from the NVIDIA Blackwell generation (B\u30b7\u30ea\u30fc\u30ba) and later. Because the performance drop compared to the BF16 version is suppressed to a mere minimum (a 1.1-point drop in average score), it becomes an extremely practical choice for engineers who own Blackwell hardware.<\/p>\n<p><!-- lmw:hardware --><\/p>\n<h2>Hardware Requirements<\/h2>\n<p><strong>Estimated requirements (calculated by Local Model Watch)<\/strong><\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Your VRAM<\/th>\n<th>Quantization<\/th>\n<th>File size<\/th>\n<th>Est. memory needed<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>32GB (RTX 5090, etc.)<\/td>\n<td>NVFP4<\/td>\n<td>21.7GB<\/td>\n<td>26.0GB<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p><strong>Inference engine support<\/strong> (architecture name matched against each project&#8217;s own model registry in its source code, checked 2026-11-08): llama.cpp: registered, vLLM: registered, MLX (mlx-lm): not registered. &#8220;Not registered&#8221; means the name is absent from that registry today, not that the model cannot run.<\/p>\n<p><em>Memory estimates add a 20% runtime overhead (KV cache, etc.) to the actual size of the distributed files. Actual usage varies with context length, batch size and inference engine. These figures are computed by this site from file sizes, not published by the model&#8217;s authors. Compare with other models in our <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/vram-guide-en\/\">VRAM quick reference<\/a>. What the quantization names mean: <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/glossary-quantization-en\/\">glossary<\/a>.<\/em><\/p>\n<p><!-- \/lmw:hardware --><\/p>\n<p><!-- lmw:runnability --><\/p>\n<h2>Can You Run It Locally?<\/h2>\n<p><strong>Not usable in Ollama, LM Studio and llama.cpp yet \u2014 we have found no GGUF build.<\/strong><\/p>\n<p>The publisher ships safetensors only. However, llama.cpp&#8217;s registry does list this architecture, so <strong>conversion to GGUF is possible<\/strong> and the model will run once someone publishes a converted build. Today it can be run with transformers or vLLM, using the memory figures in the table above.<\/p>\n<p><strong>License \u2014 <code>apache-2.0<\/code> (Commercial use allowed):<\/strong> Permits commercial use, modification and redistribution. Redistribution requires including the license and stating changes; includes a patent grant.<\/p>\n<p><em>Compiled by this site&#8217;s code from the published formats, converted builds we have found, and each engine&#8217;s own model registry. &#8220;Not found&#8221; means we have not seen such a build, not that none exists. License summaries are not legal advice \u2014 check the publisher&#8217;s original terms before relying on them.<\/em><\/p>\n<p><!-- \/lmw:runnability --><\/p>\n<p><!-- lmw:lab --><\/p>\n<h2>Our Own Measurements<\/h2>\n<p>Values we measured ourselves \u2014 not figures copied from the model card. We read this model&#8217;s files on our own server (no GPU), and because we cannot run this model on that server, we ran it on a rented cloud GPU (conditions below). How we measure, and the results for every model: <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/observations-en\/\">Our Measurements<\/a>.<\/p>\n<h3>Japanese Token Efficiency<\/h3>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Tokenizer<\/th>\n<th>Tokens per 1,000 Japanese characters<\/th>\n<th>Ratio to the same text in English<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>This model<\/strong><\/td>\n<td><strong>565<\/strong><\/td>\n<td><strong>1.04\u00d7<\/strong><\/td>\n<\/tr>\n<tr>\n<td>Qwen3<\/td>\n<td>688<\/td>\n<td>1.26\u00d7<\/td>\n<\/tr>\n<tr>\n<td>Llama 3.2<\/td>\n<td>744<\/td>\n<td>1.36\u00d7<\/td>\n<\/tr>\n<tr>\n<td>Gemma 3<\/td>\n<td>564<\/td>\n<td>1.03\u00d7<\/td>\n<\/tr>\n<tr>\n<td>gpt-oss<\/td>\n<td>795<\/td>\n<td>1.45\u00d7<\/td>\n<\/tr>\n<tr>\n<td>LLM-jp-3<\/td>\n<td>497<\/td>\n<td>0.85\u00d7<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>It needs about 18% fewer tokens than the Qwen3 tokenizer for the same Japanese text, so about 1.22\u00d7 as much Japanese fits in the same context length, and generation is faster per character.<\/p>\n<p>Counted with the <code>tokenizer.json<\/code> of <a href=\"https:\/\/huggingface.co\/IFM\/K2-Horizon-32B-NVFP4\">IFM\/K2-Horizon-32B-NVFP4<\/a> on a fixed text we wrote ourselves (876 Japanese characters across news, conversation, technical docs, a formal email, travel writing and a recipe) and its English translation. Fewer tokens mean more Japanese fits in the context window.<\/p>\n<h3>Running It With the Publisher&#8217;s Own Code (Cloud GPU)<\/h3>\n<p>The architecture of this model (<code>K2HorizonForCausalLM<\/code>) is not registered in llama.cpp&#8217;s conversion script (as of 2026-10-01) and we have not found a GGUF version, so we ran the weights as published (NVFP4, compressed-tensors) with the Python code the publisher ships on Hugging Face (transformers with trust_remote_code). That code ran only inside a cloud container with its network cut off.<\/p>\n<p>Right after loading, the quantized layers were still held in their packed NVFP4 form (we counted the loaded weights by type: UINT8 16.1B, BFLOAT16 2.6B, FLOAT8_E4M3FN 2.0B). VRAM grew beyond that while answering (see the table).<\/p>\n<div class=\"lmw-table-scroll\" tabindex=\"0\" style=\"overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%;\">\n<table style=\"width:max-content;min-width:100%;border-collapse:collapse;\">\n<thead>\n<tr>\n<th>Item<\/th>\n<th>Result<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td>VRAM right after loading the weights (loaded as above)<\/td>\n<td>21.7GB<\/td>\n<\/tr>\n<tr>\n<td>Peak VRAM while answering the five questions<\/td>\n<td>71.3GB<\/td>\n<\/tr>\n<tr>\n<td>Generation (median over the five answers, transformers)<\/td>\n<td>2.2 tokens\/s<\/td>\n<\/tr>\n<tr>\n<td>Generation in Japanese characters<\/td>\n<td>about 3.8 characters\/s<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Conditions: NVIDIA A100-SXM4-80GB (VRAM 79GB) on Modal, transformers 5.18.0, PyTorch 2.14.1+cu130, <a href=\"https:\/\/huggingface.co\/IFM\/K2-Horizon-32B-NVFP4\/tree\/71b07893498c52a6508bfce3e3ccb5456ba75328\">IFM\/K2-Horizon-32B-NVFP4<\/a> at revision <code>71b0789349<\/code>, weights NVFP4, compressed-tensors, computed in BF16, measured 2026-10-02 (JST).<\/p>\n<p>The NVIDIA A100-SXM4-80GB has no arithmetic units for NVFP4, so these figures say nothing about a GPU and engine that compute it natively. transformers generates much more slowly than dedicated inference engines, so treat the speed as a reference only.<\/p>\n<h3>Answers to Our Japanese Questions (Verbatim)<\/h3>\n<p>We ask every model the same five questions in Japanese under the conditions above (temperature 0, thinking turned off where the chat template allows it, up to 1024 tokens) and publish the answers unedited. We do not grade them; where a question has a single correct answer, we show it for comparison.<\/p>\n<p><strong>Summarization<\/strong><\/p>\n<blockquote>\n<p>\u6b21\u306e\u8a18\u4e8b\u30923\u6587\u3067\u8981\u7d04\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<p>\u307f\u3069\u308a\u5e02\u306f\u4eca\u5e74\u306e\u6625\u3001\u5e02\u5185\u306b\u4e09\u3064\u3042\u308b\u516c\u7acb\u56f3\u66f8\u9928\u306e\u3046\u3061\u6700\u3082\u53e4\u3044\u4e2d\u592e\u56f3\u66f8\u9928\u306e\u6539\u4fee\u3092\u7d42\u3048\u3001\u5341\u6708\u4e00\u65e5\u306b\u518d\u958b\u9928\u3057\u305f\u3002\u6539\u4fee\u306f\u7d04\u4e00\u5e74\u534a\u306b\u308f\u305f\u308a\u3001\u7dcf\u4e8b\u696d\u8cbb\u306f\u7d04\u5341\u4e8c\u5104\u5186\u3002\u3053\u306e\u3046\u3061\u7d04\u56db\u5104\u5186\u306f\u56fd\u306e\u88dc\u52a9\u91d1\u3067\u307e\u304b\u306a\u308f\u308c\u305f\u3002<\/p>\n<p>\u6700\u5927\u306e\u5909\u5316\u306f\u3001\u95b2\u89a7\u5e2d\u306e\u914d\u7f6e\u3067\u3042\u308b\u3002\u4ee5\u524d\u306f\u9928\u5185\u306e\u5ea7\u5e2d\u306e\u5927\u534a\u304c\u5b66\u7fd2\u7528\u306e\u673a\u3067\u3001\u8a66\u9a13\u671f\u9593\u306b\u306a\u308b\u3068\u4e2d\u9ad8\u751f\u3067\u57cb\u307e\u308a\u3001\u9ad8\u9f62\u306e\u5229\u7528\u8005\u3084\u5c0f\u3055\u306a\u5b50\u3069\u3082\u9023\u308c\u304c\u5ea7\u308c\u306a\u3044\u3068\u3044\u3046\u82e6\u60c5\u304c\u6bce\u5e74\u5bc4\u305b\u3089\u308c\u3066\u3044\u305f\u3002\u6539\u4fee\u5f8c\u306f\u5ea7\u5e2d\u6570\u3092\u767e\u4e8c\u5341\u5e2d\u304b\u3089\u4e8c\u767e\u5e2d\u306b\u5897\u3084\u3057\u305f\u3046\u3048\u3067\u3001\u5b66\u7fd2\u7528\u306e\u673a\u3092\u4e09\u968e\u306b\u307e\u3068\u3081\u3001\u4e00\u968e\u306f\u4f1a\u8a71\u304c\u3067\u304d\u308b\u300c\u306b\u304e\u308f\u3044\u30d5\u30ed\u30a2\u300d\u3001\u4e8c\u968e\u306f\u9759\u304b\u306b\u672c\u3092\u8aad\u3080\u300c\u95b2\u89a7\u30d5\u30ed\u30a2\u300d\u306b\u5206\u3051\u305f\u3002\u4e00\u968e\u306b\u306f\u4e88\u7d04\u5236\u306e\u30b0\u30eb\u30fc\u30d7\u5b66\u7fd2\u5ba4\u304c\u56db\u5ba4\u3068\u3001\u98f2\u307f\u7269\u3092\u6301\u3061\u8fbc\u3081\u308b\u30ab\u30d5\u30a7\u30b9\u30da\u30fc\u30b9\u3082\u8a2d\u3051\u3089\u308c\u305f\u3002<\/p>\n<p>\u8535\u66f8\u306e\u9762\u3067\u3082\u898b\u76f4\u3057\u304c\u9032\u3093\u3060\u3002\u8cb8\u51fa\u306e\u5c11\u306a\u3044\u53e4\u3044\u8cc7\u6599\u7d04\u4e09\u4e07\u518a\u3092\u5e02\u5185\u306e\u4ed6\u306e\u9928\u3084\u4fdd\u5b58\u66f8\u5eab\u306b\u79fb\u3057\u3001\u4ee3\u308f\u308a\u306b\u5b50\u3069\u3082\u5411\u3051\u306e\u7d75\u672c\u3068\u3001\u4ecb\u8b77\u30fb\u5b50\u80b2\u3066\u30fb\u4ed5\u4e8b\u63a2\u3057\u3068\u3044\u3063\u305f\u66ae\u3089\u3057\u306b\u95a2\u308f\u308b\u5b9f\u7528\u66f8\u3092\u7d04\u4e00\u4e07\u4e94\u5343\u518a\u5897\u3084\u3057\u305f\u3002\u96fb\u5b50\u66f8\u7c4d\u306e\u8cb8\u51fa\u30b5\u30fc\u30d3\u30b9\u3082\u59cb\u307e\u308a\u3001\u5229\u7528\u767b\u9332\u3092\u3059\u308c\u3070\u81ea\u5b85\u304b\u3089\u4e00\u5ea6\u306b\u4e09\u518a\u307e\u3067\u3001\u4e8c\u9031\u9593\u501f\u308a\u3089\u308c\u308b\u3002<\/p>\n<p>\u5efa\u7269\u305d\u306e\u3082\u306e\u306b\u3082\u624b\u304c\u5165\u3063\u305f\u3002\u7bc9\u56db\u5341\u5e74\u3092\u8d85\u3048\u3066\u3044\u305f\u7a7a\u8abf\u8a2d\u5099\u3092\u5165\u308c\u66ff\u3048\u3001\u5c4b\u4e0a\u306b\u306f\u592a\u967d\u5149\u30d1\u30cd\u30eb\u3092\u8a2d\u7f6e\u3057\u3066\u3001\u9928\u5185\u3067\u4f7f\u3046\u96fb\u529b\u306e\u7d04\u4e8c\u5272\u3092\u307e\u304b\u306a\u3048\u308b\u3088\u3046\u306b\u3057\u305f\u3002\u8eca\u3044\u3059\u306e\u5229\u7528\u8005\u304b\u3089\u8981\u671b\u306e\u591a\u304b\u3063\u305f\u30a8\u30ec\u30d9\u30fc\u30bf\u30fc\u306f\u4e00\u57fa\u304b\u3089\u4e8c\u57fa\u306b\u5897\u3048\u3001\u66f8\u67b6\u306e\u9593\u306e\u901a\u8def\u3082\u4ee5\u524d\u3088\u308a\u4e09\u5341\u30bb\u30f3\u30c1\u5e83\u3052\u3089\u308c\u305f\u3002\u5165\u53e3\u306b\u306f\u6bb5\u5dee\u306e\u306a\u3044\u30b9\u30ed\u30fc\u30d7\u304c\u65b0\u305f\u306b\u8a2d\u3051\u3089\u308c\u3001\u6388\u4e73\u5ba4\u3068\u591a\u76ee\u7684\u30c8\u30a4\u30ec\u3082\u5404\u968e\u306b\u4e00\u3064\u305a\u3064\u7f6e\u304b\u308c\u305f\u3002<\/p>\n<p>\u4e00\u65b9\u3067\u8ab2\u984c\u3082\u6b8b\u308b\u3002\u99d0\u8eca\u5834\u306f\u6539\u4fee\u524d\u3068\u540c\u3058\u56db\u5341\u53f0\u306e\u307e\u307e\u3067\u3001\u9031\u672b\u306b\u306f\u8fd1\u304f\u306e\u9053\u8def\u306b\u9806\u756a\u5f85\u3061\u306e\u8eca\u304c\u4e26\u3093\u3060\u3002\u5e02\u306f\u96a3\u63a5\u3059\u308b\u5e02\u6709\u5730\u3092\u81e8\u6642\u99d0\u8eca\u5834\u3068\u3057\u3066\u958b\u653e\u3057\u305f\u304c\u3001\u6052\u4e45\u7684\u306a\u5bfe\u7b56\u306f\u6c7a\u307e\u3063\u3066\u3044\u306a\u3044\u3002\u307e\u305f\u3001\u958b\u9928\u6642\u9593\u3092\u5e73\u65e5\u306e\u591c\u4e5d\u6642\u307e\u3067\u5ef6\u3070\u3057\u305f\u3053\u3068\u3067\u8077\u54e1\u306e\u8ca0\u62c5\u304c\u5897\u3048\u3066\u304a\u308a\u3001\u8077\u54e1\u56e3\u4f53\u306f\u4eba\u54e1\u306e\u8ffd\u52a0\u3092\u6c42\u3081\u3066\u3044\u308b\u3002<\/p>\n<p>\u5229\u7528\u8005\u306e\u53d7\u3051\u6b62\u3081\u306f\u304a\u304a\u3080\u306d\u597d\u610f\u7684\u3060\u3002\u9031\u306b\u4e8c\u5ea6\u3001\u5b6b\u3092\u9023\u308c\u3066\u6765\u308b\u3068\u3044\u3046\u4e03\u5341\u4ee3\u306e\u5973\u6027\u306f\u300c\u524d\u306f\u5b50\u3069\u3082\u304c\u58f0\u3092\u51fa\u3059\u3068\u5468\u308a\u306e\u76ee\u304c\u6c17\u306b\u306a\u3063\u305f\u304c\u3001\u4e00\u968e\u306a\u3089\u6c17\u517c\u306d\u306a\u304f\u7d75\u672c\u3092\u8aad\u3093\u3067\u3042\u3052\u3089\u308c\u308b\u300d\u3068\u8a71\u3059\u3002\u4e00\u65b9\u3001\u53d7\u9a13\u3092\u63a7\u3048\u305f\u9ad8\u6821\u751f\u306e\u4e2d\u306b\u306f\u300c\u5b66\u7fd2\u5e2d\u304c\u4e09\u968e\u3060\u3051\u306b\u306a\u308a\u3001\u5915\u65b9\u306f\u3059\u3050\u306b\u6e80\u5e2d\u306b\u306a\u308b\u300d\u3068\u4e0d\u6e80\u3092\u6f0f\u3089\u3059\u4eba\u3082\u3044\u308b\u3002\u56f3\u66f8\u9928\u306f\u3001\u5b66\u7fd2\u5e2d\u306e\u7a7a\u304d\u72b6\u6cc1\u3092\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3067\u78ba\u8a8d\u3067\u304d\u308b\u4ed5\u7d44\u307f\u3092\u5e74\u5185\u306b\u5c0e\u5165\u3059\u308b\u4e88\u5b9a\u3060\u3002<\/p>\n<p>\u518d\u958b\u9928\u306b\u5408\u308f\u305b\u3066\u3001\u50ac\u3057\u3082\u5897\u3048\u305f\u3002\u6bce\u9031\u571f\u66dc\u306e\u5348\u524d\u306b\u306f\u8aad\u307f\u805e\u304b\u305b\u4f1a\u3001\u6708\u306b\u4e00\u5ea6\u306f\u5730\u5143\u306e\u8fb2\u5bb6\u3084\u5546\u5e97\u4e3b\u3092\u8b1b\u5e2b\u306b\u62db\u304f\u300c\u307e\u3061\u306e\u5148\u751f\u300d\u8b1b\u5ea7\u304c\u958b\u304b\u308c\u308b\u3002\u5341\u4e00\u6708\u306b\u306f\u3001\u5e02\u5185\u306e\u4e2d\u5b66\u751f\u304c\u9078\u3093\u3060\u672c\u3092\u7d39\u4ecb\u3059\u308b\u5c55\u793a\u3082\u4e88\u5b9a\u3055\u308c\u3066\u3044\u308b\u3002<\/p>\n<p>\u9928\u9577\u306e\u5c71\u672c\u548c\u5b50\u3055\u3093\u306f\u300c\u672c\u3092\u501f\u308a\u308b\u5834\u6240\u304b\u3089\u3001\u4eba\u304c\u96c6\u307e\u3063\u3066\u904e\u3054\u3059\u5834\u6240\u3078\u5909\u3048\u305f\u304b\u3063\u305f\u3002\u518d\u958b\u9928\u304b\u3089\u306e\u4e00\u304b\u6708\u3067\u6765\u9928\u8005\u306f\u4ee5\u524d\u306e\u4e00\u30fb\u516b\u500d\u306b\u306a\u3063\u305f\u300d\u3068\u8a71\u3059\u3002\u5e02\u306f\u6765\u5e74\u5ea6\u3001\u6b8b\u308b\u4e8c\u3064\u306e\u56f3\u66f8\u9928\u306b\u3064\u3044\u3066\u3082\u5229\u7528\u8005\u3078\u306e\u805e\u304d\u53d6\u308a\u3092\u884c\u3044\u3001\u6539\u4fee\u306e\u5fc5\u8981\u6027\u3092\u691c\u8a0e\u3059\u308b\u65b9\u91dd\u3060\u3002<\/p>\n<\/blockquote>\n<p><em>(Summarize the following article in three sentences. (The article, about 1,200 Japanese characters, describes the renovation and reopening of a city&#8217;s central library: the budget, the new floor layout and seating, changes to the collection and e-book lending, building and accessibility work, remaining issues such as parking and staff workload, users&#8217; reactions, new events, and the city&#8217;s next steps.))<\/em><\/p>\n<pre><code class=\"language-text\">\u307f\u3069\u308a\u5e02\u306e\u4e2d\u592e\u56f3\u66f8\u9928\u306f\u7d041\u5e74\u534a\u306e\u6539\u4fee\u3092\u7d4c\u3066\u518d\u958b\u3057\u3001\u5ea7\u5e2d\u3092120\u5e2d\u304b\u3089200\u5e2d\u306b\u5897\u3084\u3057\u3001\u968e\u5c64\u3054\u3068\u306e\u5229\u7528\u76ee\u7684\u3092\u5206\u96e2\u3059\u308b\u306a\u3069\u3001\u5229\u7528\u8005\u306e\u30cb\u30fc\u30ba\u306b\u5fdc\u3058\u305f\u6539\u5584\u304c\u56f3\u3089\u308c\u305f\u3002\u8535\u66f8\u306f\u8cb8\u51fa\u306e\u5c11\u306a\u3044\u8cc7\u6599\u3092\u524a\u6e1b\u3057\u3001\u5b9f\u7528\u66f8\u3084\u7d75\u672c\u3092\u5897\u3084\u3057\u3001\u96fb\u5b50\u66f8\u7c4d\u8cb8\u51fa\u3084\u592a\u967d\u5149\u767a\u96fb\u306a\u3069\u74b0\u5883\u9762\u3067\u3082\u624b\u304c\u5165\u3063\u305f\u304c\u3001\u99d0\u8eca\u5834\u4e0d\u8db3\u3084\u8077\u54e1\u8ca0\u62c5\u3068\u3044\u3063\u305f\u8ab2\u984c\u306f\u6b8b\u3063\u3066\u3044\u308b\u3002\u518d\u958b\u5f8c\u306e\u4e00\u304b\u6708\u3067\u6765\u9928\u8005\u306f\u524d\u5e74\u6bd41.8\u500d\u306b\u5897\u52a0\u3057\u3001\u56f3\u66f8\u9928\u306f\u300c\u4eba\u304c\u96c6\u307e\u3063\u3066\u904e\u3054\u3059\u5834\u6240\u300d\u3078\u3068\u5909\u8c8c\u3057\u3064\u3064\u3001\u6b8b\u308b\u4e8c\u3064\u306e\u56f3\u66f8\u9928\u306e\u6539\u4fee\u3082\u691c\u8a0e\u3055\u308c\u308b\u3002\n<\/code><\/pre>\n<p><strong>Formal business email<\/strong><\/p>\n<blockquote>\n<p>\u53d6\u5f15\u5148\u306e\u62c5\u5f53\u8005\u306b\u3001\u6765\u9031\u706b\u66dc\u65e5\u306e\u6253\u3061\u5408\u308f\u305b\u3092\u6c34\u66dc\u65e5\u306b\u5909\u66f4\u3057\u3066\u307b\u3057\u3044\u3068\u304a\u9858\u3044\u3059\u308b\u30e1\u30fc\u30eb\u3092\u3001\u4e01\u5be7\u306a\u656c\u8a9e\u3067\u66f8\u3044\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/blockquote>\n<p><em>(Write an email in polite Japanese (keigo) asking a client&#8217;s contact person to move next Tuesday&#8217;s meeting to Wednesday.)<\/em><\/p>\n<pre><code class=\"language-text\">**\u4ef6\u540d\uff1a** \u6b21\u56de\u6253\u3061\u5408\u308f\u305b\u65e5\u7a0b\u306e\u5909\u66f4\u306e\u304a\u9858\u3044\uff08\u6765\u9031\u706b\u66dc\u65e5\u306e\u6253\u3061\u5408\u308f\u305b\u3092\u6c34\u66dc\u65e5\u306b\u5909\u66f4\uff09\n\n---\n\n\u62dd\u5553\u3000\u5e73\u7d20\u3088\u308a\u683c\u5225\u306e\u3054\u9ad8\u914d\u3092\u8cdc\u308a\u3001\u8aa0\u306b\u3042\u308a\u304c\u3068\u3046\u3054\u3056\u3044\u307e\u3059\u3002\n\n\u3053\u306e\u305f\u3073\u306f\u7a81\u7136\u306e\u5909\u66f4\u3067\u6050\u7e2e\u3067\u306f\u3054\u3056\u3044\u307e\u3059\u304c\u3001\u6765\u9031\u306e\u6253\u3061\u5408\u308f\u305b\u304c\u4e88\u5b9a\u3055\u308c\u3066\u304a\u308a\u307e\u3059**\u706b\u66dc\u65e5\uff08\u25cb\u6708\u25cb\u65e5\uff09**\u306e\u4ef6\u306b\u3064\u304d\u307e\u3057\u3066\u3001**\u6c34\u66dc\u65e5\uff08\u25cb\u6708\u25cb\u65e5\uff09**\u306b\u5909\u66f4\u3055\u305b\u3066\u3044\u305f\u3060\u304d\u305f\u304f\u5b58\u3058\u307e\u3059\u3002\n\n\u3064\u304d\u307e\u3057\u3066\u306f\u3001\u4e0b\u8a18\u306e\u3068\u304a\u308a\u3054\u90fd\u5408\u306e\u3088\u3044\u304a\u6642\u9593\u306b\u3066\u3054\u691c\u8a0e\u3044\u305f\u3060\u3051\u307e\u3059\u3068\u5e78\u3044\u306b\u5b58\u3058\u307e\u3059\u3002\n\n| \u9805\u76ee | \u5185\u5bb9 |\n|------|------|\n| \u5909\u66f4\u524d | \u706b\u66dc\u65e5\uff08\u25cb\u6708\u25cb\u65e5\uff09 |\n| \u5909\u66f4\u5f8c | \u6c34\u66dc\u65e5\uff08\u25cb\u6708\u25cb\u65e5\uff09 |\n| \u76ee\u7684 | \u6253\u3061\u5408\u308f\u305b\uff08\u8b70\u984c\u306f\u4e0d\u53d8\uff09 |\n| \u5834\u6240\u30fb\u65b9\u6cd5 | \u5f93\u6765\u901a\u308a\uff08\u30aa\u30f3\u30e9\u30a4\u30f3\uff0f\u4f1a\u8b70\u5ba4\uff09 |\n\n\u3054\u591a\u5fd9\u306e\u6298\u304b\u3089\u6050\u308c\u5165\u308a\u307e\u3059\u304c\u3001**\u6c34\u66dc\u65e5\u306e\u65e5\u7a0b\u3067\u554f\u984c\u304c\u306a\u3051\u308c\u3070\u3054\u78ba\u8a8d\u306e\u307b\u3069\u3001\u3088\u308d\u3057\u304f\u304a\u9858\u3044\u7533\u3057\u4e0a\u3052\u307e\u3059**\u3002  \n\u3082\u3057\u6c34\u66dc\u65e5\u3067\u3082\u3054\u90fd\u5408\u304c\u3088\u308d\u3057\u304f\u306a\u3044\u5834\u5408\u306f\u3001\u4ee3\u66ff\u6848\u3092\u3054\u63d0\u793a\u3044\u305f\u3060\u3051\u307e\u3059\u3068\u5e78\u3044\u3067\u3059\u3002\n\n\u4f55\u5352\u3054\u7406\u89e3\u306e\u307b\u3069\u3001\u3088\u308d\u3057\u304f\u304a\u9858\u3044\u7533\u3057\u4e0a\u3052\u307e\u3059\u3002\n\n\u656c\u5177\n\n---\n\n**\u682a\u5f0f\u4f1a\u793e\u25cb\u25cb\u3000\u25cb\u25cb \u90e8\u3000\u25cb\u25cb \u69d8**  \n\u62c5\u5f53\uff1a\u25cb\u25cb\uff08\u25cb\u25cb\uff09  \n\u96fb\u8a71\u756a\u53f7\uff1a\u25cb\u25cb-\u25cb\u25cb-\u25cb\u25cb  \n\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\uff1a\u25cb\u25cb@\u25cb\u25cb.co.jp\n<\/code><\/pre>\n<p><strong>Word problem<\/strong><\/p>\n<blockquote>\n<p>\u308a\u3093\u3054\u304c1\u500b120\u5186\u3001\u307f\u304b\u3093\u304c1\u500b45\u5186\u3067\u3059\u3002\u308a\u3093\u3054\u30923\u500b\u3068\u307f\u304b\u3093\u30928\u500b\u8cb7\u3063\u3066\u30011,000\u5186\u672d\u3067\u6255\u3044\u307e\u3057\u305f\u3002\u304a\u3064\u308a\u306f\u3044\u304f\u3089\u3067\u3059\u304b\u3002\u8003\u3048\u65b9\u3082\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/blockquote>\n<p><em>(Apples cost 120 yen each and mandarins cost 45 yen each. You buy 3 apples and 8 mandarins and pay with a 1,000-yen bill. How much change do you get? Show your reasoning.)<\/em><\/p>\n<p><em>(The model spent the whole token budget thinking and gave no answer.)<\/em><\/p>\n<p>Reference: The correct answer is 280 yen (120\u00d73 = 360, 45\u00d78 = 360, 1,000 \u2212 720 = 280).<\/p>\n<p><strong>Knowledge<\/strong><\/p>\n<blockquote>\n<p>\u65e5\u672c\u306e\u90fd\u9053\u5e9c\u770c\u306e\u3046\u3061\u3001\u6d77\u306b\u9762\u3057\u3066\u3044\u306a\u3044\u770c\u3092\u3059\u3079\u3066\u6319\u3052\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/blockquote>\n<p><em>(List all of Japan&#8217;s prefectures that do not border the sea.)<\/em><\/p>\n<p><em>(The model spent the whole token budget thinking and gave no answer.)<\/em><\/p>\n<p>Reference: The correct answer is eight prefectures: Tochigi, Gunma, Saitama, Yamanashi, Nagano, Gifu, Shiga and Nara.<\/p>\n<p><strong>Constrained writing<\/strong><\/p>\n<blockquote>\n<p>\u300c\u6625\u300d\u3092\u30c6\u30fc\u30de\u306b\u3057\u305f\u4ff3\u53e5\u30923\u3064\u3001\u4e94\u30fb\u4e03\u30fb\u4e94\u306e\u97f3\u6570\u3092\u5b88\u3063\u3066\u4f5c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u308c\u305e\u308c\u306b\u4e00\u8a00\u306e\u8aac\u660e\u3092\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002<\/p>\n<\/blockquote>\n<p><em>(Write three haiku on the theme of spring, keeping the 5-7-5 syllable pattern, each with a one-line explanation.)<\/em><\/p>\n<p><em>(The model spent the whole token budget thinking and gave no answer.)<\/em><\/p>\n<h4>Setup, Download and Run Steps (What We Actually Ran)<\/h4>\n<p>We split the work into two containers on Modal, both built from the Debian (slim) image with Python 3.12. The container that downloads the files never runs the publisher&#8217;s code; the container that runs it has no network access. These are the packages we installed (without version pins; the versions actually installed are listed below).<\/p>\n<pre><code class=\"language-bash\"># 1. Environment for downloading (no GPU)\npython -m pip install huggingface_hub\n\n# 2. Environment for running (GPU, network blocked)\npython -m pip install torch transformers accelerate safetensors sentencepiece tiktoken protobuf einops compressed-tensors\n<\/code><\/pre>\n<p>We then called <code>download(job)<\/code> in the first container and <code>run(job)<\/code> in the second one from the script below (<code>remote_code_remote.py<\/code>, written by us; full text). Files go under <code>\/models\/&lt;dir&gt;<\/code>. Comments are in Japanese as in our repository:<\/p>\n<pre><code class=\"language-python\">&quot;&quot;&quot;\nModal \u306e\u30b3\u30f3\u30c6\u30ca\u306e\u4e2d\u3067\u52d5\u304f\u3001\u914d\u5e03\u5143\u306e\u30b3\u30fc\u30c9(trust_remote_code)\u306b\u3088\u308b\u5b9f\u6e2c(2026-09-30)\u3002\nlmw\/lab\/gpu_modal.py \u306e download_weights \/ run_remote_code \u304b\u3089\u547c\u3070\u308c\u308b\u3002**\u6a19\u6e96\u30e9\u30a4\u30d6\u30e9\u30ea\u3060\u3051\u3092\u5148\u982d\u3067\u8aad\u307f**\u3001\nhuggingface_hub\u30fbtorch\u30fbtransformers \u306f\u5404\u95a2\u6570\u306e\u4e2d\u3067\u8aad\u3080(\u30b3\u30f3\u30c6\u30ca\u3054\u3068\u306b\u5165\u3063\u3066\u3044\u308b\u3082\u306e\u304c\u9055\u3046)\u3002\n\n\u30102\u3064\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u5206\u3051\u308b\u3011\n- download: GPU \u306e\u7121\u3044\u30b3\u30f3\u30c6\u30ca\u30fb\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u3042\u308a\u3002\u30d5\u30a1\u30a4\u30eb\u3092\u843d\u3068\u3059\u3060\u3051\u3067\u3001**\u914d\u5e03\u5143\u306e\u30b3\u30fc\u30c9\u306f\u5b9f\u884c\u3057\u306a\u3044**\n  (import \u3082\u3057\u306a\u3044)\u3002\u91cd\u307f\u306f safetensors \u3060\u3051(\u547c\u3073\u51fa\u3057\u5074\u304c\u6e21\u3059\u30d5\u30a1\u30a4\u30eb\u540d\u306e\u4e00\u89a7\u306b pickle \u306f\u5165\u3089\u306a\u3044)\u3002\n- run: GPU \u306e\u30b3\u30f3\u30c6\u30ca\u30fb**\u30cd\u30c3\u30c8\u30ef\u30fc\u30af\u906e\u65ad**(block_network)\u30fbModal \u306e\u6a5f\u80fd\u3082\u4f7f\u3048\u306a\u3044(restrict_modal_access)\u30fb\n  Volume \u306f\u8aad\u307f\u53d6\u308a\u5c02\u7528\u3002\u3053\u3053\u3067\u3060\u3051\u914d\u5e03\u5143\u306e\u30b3\u30fc\u30c9\u3092\u5b9f\u884c\u3059\u308b\u3002\u5916\u3078\u9001\u308b\u3053\u3068\u3082\u3001\u307b\u304b\u306e\u30b3\u30f3\u30c6\u30ca\u3092\u8d77\u52d5\u3059\u308b\u3053\u3068\u3082\u3067\u304d\u306a\u3044\u3002\n\n\u8a18\u4e8b\u57f7\u7b46\u7528\u306e LLM \u306f\u547c\u3070\u306a\u3044\u3002\u56de\u7b54\u306e\u826f\u3057\u60aa\u3057\u3082\u5224\u5b9a\u3057\u306a\u3044(\u539f\u6587\u3092\u8fd4\u3059\u3060\u3051)\u3002\n&quot;&quot;&quot;\nimport json\nimport os\nimport re\nimport platform\nimport time\nfrom datetime import datetime, timezone\n\nMOUNT = &quot;\/models&quot;\n# \u30b3\u30f3\u30c6\u30ca\u306e\u30a4\u30e1\u30fc\u30b8(lmw\/lab\/gpu_modal.py \u304c\u4f7f\u3044\u3001\u8a18\u4e8b\u306e\u624b\u9806\u306b\u3082\u540c\u3058\u5024\u3092\u8f09\u305b\u308b)\nPYTHON_VERSION = &quot;3.12&quot;\nDOWNLOAD_PACKAGES = (&quot;huggingface_hub&quot;,)\n# compressed-tensors \u306f\u91cf\u5b50\u5316\u6e08\u307f\u306e\u914d\u5e03(NVFP4 \u7b49\u30022026-10-01\u3001K2-Horizon-32B-NVFP4)\u3092 transformers \u304c\u8aad\u3080\u305f\u3081\u306b\u5165\u308c\u308b\nRUN_PACKAGES = (&quot;torch&quot;, &quot;transformers&quot;, &quot;accelerate&quot;, &quot;safetensors&quot;, &quot;sentencepiece&quot;, &quot;tiktoken&quot;, &quot;protobuf&quot;, &quot;einops&quot;,\n                &quot;compressed-tensors&quot;)\n\ndef installed_packages() -&gt; list[str]:\n    &quot;&quot;&quot;\u3053\u306e\u30b3\u30f3\u30c6\u30ca\u306b\u5165\u3063\u3066\u3044\u308b\u30d1\u30c3\u30b1\u30fc\u30b8\u306e\u7248(pip freeze \u3068\u540c\u3058\u5f62)\u3002\u8a18\u4e8b\u306e\u624b\u9806\u306b\u8f09\u305b\u308b\u3002&quot;&quot;&quot;\n    from importlib import metadata\n    seen = {}\n    for dist in metadata.distributions():\n        name = dist.metadata[&quot;Name&quot;]\n        if name and name.lower() not in seen:\n            seen[name.lower()] = f&quot;{name}=={dist.version}&quot;\n    return sorted(seen.values(), key=str.lower)\n\ndef _log(t0: float, message: str) -&gt; None:\n    print(f&quot;[rc {time.time() - t0:6.0f}s] {message}&quot;, flush=True)\n\ndef download(job: dict) -&gt; dict:\n    &quot;&quot;&quot;job: {&quot;repo&quot;, &quot;revision&quot;, &quot;files&quot;: [...], &quot;dir&quot;}\u3002\u623b\u308a\u5024: {&quot;bytes&quot;, &quot;seconds&quot;, &quot;packages&quot;}\u3002&quot;&quot;&quot;\n    from huggingface_hub import hf_hub_download\n    t0 = time.time()\n    target = os.path.join(MOUNT, job[&quot;dir&quot;])\n    os.makedirs(target, exist_ok=True)\n    total = 0\n    for name in job[&quot;files&quot;]:\n        path = hf_hub_download(job[&quot;repo&quot;], name, revision=job[&quot;revision&quot;], local_dir=target)\n        total += os.path.getsize(path)\n    seconds = round(time.time() - t0)\n    _log(t0, f&quot;\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9 {total \/ 1024 ** 3:.1f}GB\u30fb{seconds}\u79d2({total \/ 1024 ** 2 \/ max(seconds, 1):.0f}MB\/\u79d2)&quot;)\n    return {&quot;bytes&quot;: int(total), &quot;seconds&quot;: int(seconds), &quot;packages&quot;: installed_packages()}\n\ndef _chat_ids(tok, text: str):\n    messages = [{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: text}]\n    try:\n        out = tok.apply_chat_template(messages, add_generation_prompt=True, enable_thinking=False,\n                                      return_tensors=&quot;pt&quot;)\n    except TypeError:\n        out = tok.apply_chat_template(messages, add_generation_prompt=True, return_tensors=&quot;pt&quot;)\n    # \u7248\u306b\u3088\u3063\u3066\u306f dict(BatchEncoding)\u304c\u8fd4\u308b\n    return out[&quot;input_ids&quot;] if hasattr(out, &quot;keys&quot;) else out\n\n# \u601d\u8003\u306e\u76ee\u5370\u3002&lt;think&gt; \u306b\u9650\u3089\u306a\u3044(K2-Horizon \u306f &lt;ifm|think&gt;\u30fb&lt;ifm|think_fast&gt; \u3068 &lt;\/ifm|think&gt;\u30022026-09-30)\n_THINK_OPEN_RE = re.compile(r&quot;&lt;(?!\/)([^&lt;&gt;\\s]*think[^&lt;&gt;\\s]*)&gt;&quot;)\n\ndef split_thinking(generated: str, prompt_text: str = &quot;&quot;) -&gt; tuple[str, str]:\n    &quot;&quot;&quot;\n    \u751f\u6210\u3057\u305f\u6587\u5b57\u5217(\u7279\u5225\u306a\u8a18\u53f7\u3092\u6b8b\u3057\u305f\u3082\u306e)\u3092 (\u56de\u7b54, \u601d\u8003) \u306b\u5206\u3051\u308b\u3002llama-server \u306e reasoning_content \u3068\u540c\u3058\u6271\u3044\u3002\n    \u30c1\u30e3\u30c3\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u30d7\u30ed\u30f3\u30d7\u30c8\u306e\u672b\u5c3e\u3067\u601d\u8003\u306e\u76ee\u5370\u3092\u958b\u3051\u3066\u3044\u308b\u5834\u5408\u306f\u3001\u751f\u6210\u306f\u601d\u8003\u306e\u9014\u4e2d\u304b\u3089\u59cb\u307e\u308b\u3002\n    \u9589\u3058\u308b\u76ee\u5370\u306f\u3001\u958b\u3051\u305f\u76ee\u5370\u306e\u540d\u524d\u304b\u3089\u6c7a\u3081\u308b(&lt;X&gt; \u2192 &lt;\/X&gt;\u3002\u305f\u3060\u3057 think_fast \u7b49\u306e\u5909\u7a2e\u306f &lt;\/\u2026think&gt; \u3067\u3082\u9589\u3058\u308b)\u3002\n    2026-09-30\u3001\u7279\u5225\u306a\u8a18\u53f7\u3054\u3068\u6d88\u3057\u3066\u6587\u5b57\u306b\u3057\u3001\u6b21\u306b &lt;think&gt; \u3060\u3051\u3092\u524d\u63d0\u306b\u3057\u305f\u305f\u3081\u3001K2-Horizon \u306e\u82f1\u8a9e\u306e\u601d\u8003\u304c\n    2\u5ea6\u300c\u56de\u7b54\u300d\u3068\u3057\u3066\u8a18\u9332\u3055\u308c\u305f\u3002\n    &quot;&quot;&quot;\n    text = generated\n    opened = None\n    tail = prompt_text.rstrip()\n    for m in _THINK_OPEN_RE.finditer(tail):\n        if m.end() == len(tail):\n            opened = m\n    if opened:\n        text = opened.group(0) + text\n    m = _THINK_OPEN_RE.search(text)\n    if not m:\n        return text, &quot;&quot;\n    before, rest = text[:m.start()], text[m.end():]\n    name = m.group(1)\n    closers = [f&quot;&lt;\/{name}&gt;&quot;]\n    if &quot;|&quot; in name or &quot;_&quot; in name:\n        # \u5909\u7a2e(think_fast)\u306e\u9589\u3058\u65b9\u304c\u672c\u4f53(&lt;\/ifm|think&gt;)\u3068\u540c\u3058\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u3042\u308b\n        closers.append(&quot;&lt;\/&quot; + re.sub(r&quot;(think)[^|&lt;&gt;]*$&quot;, r&quot;\\1&quot;, name) + &quot;&gt;&quot;)\n    found = [(rest.find(c), c) for c in closers if c in rest]\n    if found:\n        at, closer = min(found)\n        return before + rest[at + len(closer):], rest[:at]\n    return before, rest\n\ndef run(job: dict) -&gt; dict:\n    &quot;&quot;&quot;\n    job: {&quot;dir&quot;, &quot;prompts&quot;: [{&quot;id&quot;, &quot;ja&quot;}], &quot;max_tokens&quot;}\u3002\n    \u623b\u308a\u5024\u306f\u8a18\u9332\u306e\u4e00\u90e8\u3002\u30c1\u30e3\u30c3\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u7121\u3051\u308c\u3070 {&quot;no_chat_template&quot;: True}\u3002\n    &quot;&quot;&quot;\n    import torch\n    import transformers\n    from transformers import AutoModelForCausalLM, AutoTokenizer\n    os.environ[&quot;HF_HUB_OFFLINE&quot;] = &quot;1&quot;\n    os.environ[&quot;TRANSFORMERS_OFFLINE&quot;] = &quot;1&quot;\n    t0 = time.time()\n    path = os.path.join(MOUNT, job[&quot;dir&quot;])\n    gpu = torch.cuda.get_device_name(0)\n    vram_total = torch.cuda.get_device_properties(0).total_memory\n    _log(t0, f&quot;GPU: {gpu}\u30fbtransformers {transformers.__version__}\u30fbtorch {torch.__version__}&quot;)\n    # \u7248\u306f str \u306b\u3059\u308b(torch.__version__ \u306f torch \u306e\u578b\u3067\u3001torch \u306e\u7121\u3044\u30db\u30b9\u30c8\u3067\u7d50\u679c\u3092\u8aad\u3081\u306a\u3044\u30022026-09-30\u30011\u672c\u3076\u3093\u5931\u3063\u305f)\n    record = {&quot;gpu&quot;: gpu, &quot;vram_total&quot;: int(vram_total), &quot;transformers&quot;: str(transformers.__version__),\n              &quot;torch&quot;: str(torch.__version__), &quot;dtype&quot;: &quot;bfloat16&quot;, &quot;packages&quot;: installed_packages(),\n              &quot;python&quot;: platform.python_version(),\n              &quot;measured_at&quot;: datetime.now(timezone.utc).isoformat()}\n    # \u91cf\u5b50\u5316\u6e08\u307f\u306e\u914d\u5e03\u306a\u3089\u3001\u305d\u306e\u5f62\u5f0f\u3092\u8a18\u9332\u3059\u308b(\u8a18\u4e8b\u306b\u300cBF16 \u306e\u307e\u307e\u300d\u3068\u66f8\u304b\u306a\u3044)\n    with open(os.path.join(path, &quot;config.json&quot;), encoding=&quot;utf-8&quot;) as f:\n        quant = json.load(f).get(&quot;quantization_config&quot;) or {}\n    if quant:\n        groups = list((quant.get(&quot;config_groups&quot;) or {}).values())\n        record[&quot;quantization&quot;] = {&quot;quant_method&quot;: quant.get(&quot;quant_method&quot;),\n                                  &quot;format&quot;: quant.get(&quot;format&quot;) or (groups[0].get(&quot;format&quot;) if groups else None),\n                                  &quot;weights_bits&quot;: ((groups[0].get(&quot;weights&quot;) or {}).get(&quot;num_bits&quot;) if groups else None)}\n        _log(t0, f&quot;\u91cf\u5b50\u5316\u6e08\u307f\u306e\u914d\u5e03: {record['quantization']}&quot;)\n    tok = AutoTokenizer.from_pretrained(path, trust_remote_code=True, local_files_only=True)\n    if not getattr(tok, &quot;chat_template&quot;, None):\n        _log(t0, &quot;\u30c1\u30e3\u30c3\u30c8\u30c6\u30f3\u30d7\u30ec\u30fc\u30c8\u304c\u3042\u308a\u307e\u305b\u3093&quot;)\n        return plain({**record, &quot;no_chat_template&quot;: True})\n    model = AutoModelForCausalLM.from_pretrained(path, trust_remote_code=True, local_files_only=True,\n                                                 use_safetensors=True, dtype=torch.bfloat16,\n                                                 device_map=&quot;cuda&quot;)\n    model.eval()\n    torch.cuda.synchronize()\n    # \u8aad\u307f\u8fbc\u3093\u3060\u5f8c\u306e\u91cd\u307f\u306e\u6301\u3061\u65b9(\u578b\u3054\u3068\u306e\u8981\u7d20\u6570\u3068\u3001\u91cd\u307f\u3092\u6301\u3064\u672b\u7aef\u306e\u5c64\u306e\u30af\u30e9\u30b9)\u3002\u91cf\u5b50\u5316\u6e08\u307f\u306e\u914d\u5e03\u304c 4bit \u306e\u307e\u307e\n    # \u8aad\u307e\u308c\u305f\u306e\u304b\u3001BF16 \u3078\u5c55\u958b\u3055\u308c\u305f\u306e\u304b\u3092\u3001\u63a8\u6e2c\u3067\u306f\u306a\u304f\u6570\u3048\u3066\u8a18\u9332\u3059\u308b\n    dtypes, classes = {}, {}\n    for tensor in list(model.parameters()) + list(model.buffers()):\n        name = str(tensor.dtype).replace(&quot;torch.&quot;, &quot;&quot;)\n        dtypes[name] = dtypes.get(name, 0) + int(tensor.numel())\n    for module in model.modules():\n        if not list(module.children()) and list(module.parameters(recurse=False)):\n            cls = type(module).__name__\n            classes[cls] = classes.get(cls, 0) + 1\n    record[&quot;loaded_weights&quot;] = {&quot;dtypes&quot;: dtypes, &quot;leaf_classes&quot;: classes}\n    record[&quot;vram_loaded&quot;] = int(torch.cuda.memory_allocated())\n    record[&quot;load_sec&quot;] = round(time.time() - t0)\n    _log(t0, f&quot;\u8aad\u307f\u8fbc\u307f: VRAM {record['vram_loaded'] \/ 1024 ** 3:.1f}GB\u30fb{record['load_sec']}\u79d2&quot;)\n    torch.cuda.reset_peak_memory_stats()\n    outputs = []\n    # \u6253\u3061\u5207\u308a(Modal \u306e timeout)\u306e\u524d\u306b\u3001\u7b54\u3048\u305f\u5206\u3060\u3051\u3067\u8fd4\u3059\u3002\u6253\u3061\u5207\u3089\u308c\u308b\u3068\u7b54\u3048\u305f\u5206\u3082\u5168\u3066\u5931\u3046\n    # \u6b21\u306e1\u554f\u304c\u6700\u9577(max_tokens)\u307e\u3067\u66f8\u3044\u305f\u3068\u304d\u306e\u6642\u9593\u3092\u3001\u3053\u3053\u307e\u3067\u3067\u6700\u3082\u9045\u304b\u3063\u305f\u901f\u3055\u3067\u898b\u7a4d\u3082\u3063\u3066\u5224\u5b9a\u3059\u308b\n    stop_at = t0 + job.get(&quot;answer_budget_sec&quot;, 10 ** 9)\n    for prompt in job[&quot;prompts&quot;]:\n        slowest = min((o[&quot;gen_tps&quot;] for o in outputs if o.get(&quot;gen_tps&quot;)), default=None)\n        worst = job[&quot;max_tokens&quot;] \/ slowest if slowest else 0\n        if time.time() + worst &gt; stop_at:\n            _log(t0, f&quot;\u6642\u9593\u306e\u4e0a\u9650\u304c\u8fd1\u3044\u305f\u3081\u3001\u6b8b\u308a\u306e\u554f\u3044({prompt['id']} \u304b\u3089)\u306f\u5c0b\u306d\u307e\u305b\u3093&quot;)\n            record[&quot;unanswered&quot;] = [p[&quot;id&quot;] for p in job[&quot;prompts&quot;][len(outputs):]]\n            break\n        ids = _chat_ids(tok, prompt[&quot;ja&quot;]).to(&quot;cuda&quot;)\n        started = time.time()\n        with torch.no_grad():\n            generated = model.generate(ids, max_new_tokens=job[&quot;max_tokens&quot;], do_sample=False)\n        torch.cuda.synchronize()\n        seconds = time.time() - started\n        new = generated[0][ids.shape[1]:]\n        count = int(new.shape[0])\n        # \u7279\u5225\u306a\u8a18\u53f7(&lt;think&gt; \u7b49)\u3092\u6b8b\u3057\u3066\u6587\u5b57\u306b\u3057\u3001\u601d\u8003\u3068\u56de\u7b54\u3092\u5206\u3051\u3066\u304b\u3089\u3001\u6b8b\u308a\u306e\u7279\u5225\u306a\u8a18\u53f7\u3092\u6d88\u3059\n        prompt_text = tok.decode(ids[0][-8:], skip_special_tokens=False)\n        answer, thinking = split_thinking(tok.decode(new, skip_special_tokens=False), prompt_text)\n        for special in tok.all_special_tokens:\n            answer = answer.replace(special, &quot;&quot;)\n        outputs.append({\n            &quot;id&quot;: prompt[&quot;id&quot;],\n            &quot;content&quot;: answer.strip(),\n            &quot;reasoning_chars&quot;: len(thinking.strip()),\n            &quot;finish_reason&quot;: &quot;length&quot; if count &gt;= job[&quot;max_tokens&quot;] else &quot;stop&quot;,\n            &quot;completion_tokens&quot;: count,\n            &quot;gen_tps&quot;: round(count \/ seconds, 2) if seconds &gt; 0 else None,\n            &quot;prompt_tokens&quot;: int(ids.shape[1]),\n        })\n        _log(t0, f&quot;\u56de\u7b54 {prompt['id']}: {count}\u30c8\u30fc\u30af\u30f3\u30fb{outputs[-1]['gen_tps']} \u30c8\u30fc\u30af\u30f3\/\u79d2&quot;)\n    record[&quot;vram_peak&quot;] = int(torch.cuda.max_memory_allocated())\n    record[&quot;outputs&quot;] = outputs\n    gen = sorted(o[&quot;gen_tps&quot;] for o in outputs if o.get(&quot;gen_tps&quot;))\n    if gen:\n        record[&quot;tg_tps&quot;] = gen[len(gen) \/\/ 2]\n    return plain(record)\n\ndef plain(value):\n    &quot;&quot;&quot;JSON \u306b\u901a\u3057\u3066\u3001\u6a19\u6e96\u306e\u578b\u3060\u3051\u306b\u3059\u308b(\u30db\u30b9\u30c8\u306b\u306f torch \u3082 transformers \u3082\u7121\u3044)\u3002&quot;&quot;&quot;\n    return json.loads(json.dumps(value, default=str))\n<\/code><\/pre>\n<p>The end-of-turn marker of the chat template (<code>&lt;|ifm|im_end|&gt;<\/code>) that remained at the end of some answers was removed after recording; the script above does not remove it.<\/p>\n<p>The <code>job<\/code> passed to <code>download<\/code> (as used):<\/p>\n<pre><code class=\"language-json\">{\n  &quot;repo&quot;: &quot;IFM\/K2-Horizon-32B-NVFP4&quot;,\n  &quot;revision&quot;: &quot;71b07893498c52a6508bfce3e3ccb5456ba75328&quot;,\n  &quot;files&quot;: [\n    &quot;chat_template.jinja&quot;,\n    &quot;config.json&quot;,\n    &quot;configuration_k2_horizon.py&quot;,\n    &quot;generation_config.json&quot;,\n    &quot;model-00001-of-00002.safetensors&quot;,\n    &quot;model-00002-of-00002.safetensors&quot;,\n    &quot;model.safetensors.index.json&quot;,\n    &quot;modeling_k2_horizon.py&quot;,\n    &quot;tokenizer.json&quot;,\n    &quot;tokenizer_config.json&quot;\n  ],\n  &quot;dir&quot;: &quot;run-1790872724&quot;\n}\n<\/code><\/pre>\n<p>The <code>job<\/code> passed to <code>run<\/code> (as used):<\/p>\n<pre><code class=\"language-json\">{\n  &quot;dir&quot;: &quot;run-1790872724&quot;,\n  &quot;max_tokens&quot;: 1024,\n  &quot;answer_budget_sec&quot;: 3420,\n  &quot;prompts&quot;: [\n    {\n      &quot;id&quot;: &quot;summary&quot;,\n      &quot;ja&quot;: &quot;\u6b21\u306e\u8a18\u4e8b\u30923\u6587\u3067\u8981\u7d04\u3057\u3066\u304f\u3060\u3055\u3044\u3002\\n\\n\u307f\u3069\u308a\u5e02\u306f\u4eca\u5e74\u306e\u6625\u3001\u5e02\u5185\u306b\u4e09\u3064\u3042\u308b\u516c\u7acb\u56f3\u66f8\u9928\u306e\u3046\u3061\u6700\u3082\u53e4\u3044\u4e2d\u592e\u56f3\u66f8\u9928\u306e\u6539\u4fee\u3092\u7d42\u3048\u3001\u5341\u6708\u4e00\u65e5\u306b\u518d\u958b\u9928\u3057\u305f\u3002\u6539\u4fee\u306f\u7d04\u4e00\u5e74\u534a\u306b\u308f\u305f\u308a\u3001\u7dcf\u4e8b\u696d\u8cbb\u306f\u7d04\u5341\u4e8c\u5104\u5186\u3002\u3053\u306e\u3046\u3061\u7d04\u56db\u5104\u5186\u306f\u56fd\u306e\u88dc\u52a9\u91d1\u3067\u307e\u304b\u306a\u308f\u308c\u305f\u3002\\n\\n\u6700\u5927\u306e\u5909\u5316\u306f\u3001\u95b2\u89a7\u5e2d\u306e\u914d\u7f6e\u3067\u3042\u308b\u3002\u4ee5\u524d\u306f\u9928\u5185\u306e\u5ea7\u5e2d\u306e\u5927\u534a\u304c\u5b66\u7fd2\u7528\u306e\u673a\u3067\u3001\u8a66\u9a13\u671f\u9593\u306b\u306a\u308b\u3068\u4e2d\u9ad8\u751f\u3067\u57cb\u307e\u308a\u3001\u9ad8\u9f62\u306e\u5229\u7528\u8005\u3084\u5c0f\u3055\u306a\u5b50\u3069\u3082\u9023\u308c\u304c\u5ea7\u308c\u306a\u3044\u3068\u3044\u3046\u82e6\u60c5\u304c\u6bce\u5e74\u5bc4\u305b\u3089\u308c\u3066\u3044\u305f\u3002\u6539\u4fee\u5f8c\u306f\u5ea7\u5e2d\u6570\u3092\u767e\u4e8c\u5341\u5e2d\u304b\u3089\u4e8c\u767e\u5e2d\u306b\u5897\u3084\u3057\u305f\u3046\u3048\u3067\u3001\u5b66\u7fd2\u7528\u306e\u673a\u3092\u4e09\u968e\u306b\u307e\u3068\u3081\u3001\u4e00\u968e\u306f\u4f1a\u8a71\u304c\u3067\u304d\u308b\u300c\u306b\u304e\u308f\u3044\u30d5\u30ed\u30a2\u300d\u3001\u4e8c\u968e\u306f\u9759\u304b\u306b\u672c\u3092\u8aad\u3080\u300c\u95b2\u89a7\u30d5\u30ed\u30a2\u300d\u306b\u5206\u3051\u305f\u3002\u4e00\u968e\u306b\u306f\u4e88\u7d04\u5236\u306e\u30b0\u30eb\u30fc\u30d7\u5b66\u7fd2\u5ba4\u304c\u56db\u5ba4\u3068\u3001\u98f2\u307f\u7269\u3092\u6301\u3061\u8fbc\u3081\u308b\u30ab\u30d5\u30a7\u30b9\u30da\u30fc\u30b9\u3082\u8a2d\u3051\u3089\u308c\u305f\u3002\\n\\n\u8535\u66f8\u306e\u9762\u3067\u3082\u898b\u76f4\u3057\u304c\u9032\u3093\u3060\u3002\u8cb8\u51fa\u306e\u5c11\u306a\u3044\u53e4\u3044\u8cc7\u6599\u7d04\u4e09\u4e07\u518a\u3092\u5e02\u5185\u306e\u4ed6\u306e\u9928\u3084\u4fdd\u5b58\u66f8\u5eab\u306b\u79fb\u3057\u3001\u4ee3\u308f\u308a\u306b\u5b50\u3069\u3082\u5411\u3051\u306e\u7d75\u672c\u3068\u3001\u4ecb\u8b77\u30fb\u5b50\u80b2\u3066\u30fb\u4ed5\u4e8b\u63a2\u3057\u3068\u3044\u3063\u305f\u66ae\u3089\u3057\u306b\u95a2\u308f\u308b\u5b9f\u7528\u66f8\u3092\u7d04\u4e00\u4e07\u4e94\u5343\u518a\u5897\u3084\u3057\u305f\u3002\u96fb\u5b50\u66f8\u7c4d\u306e\u8cb8\u51fa\u30b5\u30fc\u30d3\u30b9\u3082\u59cb\u307e\u308a\u3001\u5229\u7528\u767b\u9332\u3092\u3059\u308c\u3070\u81ea\u5b85\u304b\u3089\u4e00\u5ea6\u306b\u4e09\u518a\u307e\u3067\u3001\u4e8c\u9031\u9593\u501f\u308a\u3089\u308c\u308b\u3002\\n\\n\u5efa\u7269\u305d\u306e\u3082\u306e\u306b\u3082\u624b\u304c\u5165\u3063\u305f\u3002\u7bc9\u56db\u5341\u5e74\u3092\u8d85\u3048\u3066\u3044\u305f\u7a7a\u8abf\u8a2d\u5099\u3092\u5165\u308c\u66ff\u3048\u3001\u5c4b\u4e0a\u306b\u306f\u592a\u967d\u5149\u30d1\u30cd\u30eb\u3092\u8a2d\u7f6e\u3057\u3066\u3001\u9928\u5185\u3067\u4f7f\u3046\u96fb\u529b\u306e\u7d04\u4e8c\u5272\u3092\u307e\u304b\u306a\u3048\u308b\u3088\u3046\u306b\u3057\u305f\u3002\u8eca\u3044\u3059\u306e\u5229\u7528\u8005\u304b\u3089\u8981\u671b\u306e\u591a\u304b\u3063\u305f\u30a8\u30ec\u30d9\u30fc\u30bf\u30fc\u306f\u4e00\u57fa\u304b\u3089\u4e8c\u57fa\u306b\u5897\u3048\u3001\u66f8\u67b6\u306e\u9593\u306e\u901a\u8def\u3082\u4ee5\u524d\u3088\u308a\u4e09\u5341\u30bb\u30f3\u30c1\u5e83\u3052\u3089\u308c\u305f\u3002\u5165\u53e3\u306b\u306f\u6bb5\u5dee\u306e\u306a\u3044\u30b9\u30ed\u30fc\u30d7\u304c\u65b0\u305f\u306b\u8a2d\u3051\u3089\u308c\u3001\u6388\u4e73\u5ba4\u3068\u591a\u76ee\u7684\u30c8\u30a4\u30ec\u3082\u5404\u968e\u306b\u4e00\u3064\u305a\u3064\u7f6e\u304b\u308c\u305f\u3002\\n\\n\u4e00\u65b9\u3067\u8ab2\u984c\u3082\u6b8b\u308b\u3002\u99d0\u8eca\u5834\u306f\u6539\u4fee\u524d\u3068\u540c\u3058\u56db\u5341\u53f0\u306e\u307e\u307e\u3067\u3001\u9031\u672b\u306b\u306f\u8fd1\u304f\u306e\u9053\u8def\u306b\u9806\u756a\u5f85\u3061\u306e\u8eca\u304c\u4e26\u3093\u3060\u3002\u5e02\u306f\u96a3\u63a5\u3059\u308b\u5e02\u6709\u5730\u3092\u81e8\u6642\u99d0\u8eca\u5834\u3068\u3057\u3066\u958b\u653e\u3057\u305f\u304c\u3001\u6052\u4e45\u7684\u306a\u5bfe\u7b56\u306f\u6c7a\u307e\u3063\u3066\u3044\u306a\u3044\u3002\u307e\u305f\u3001\u958b\u9928\u6642\u9593\u3092\u5e73\u65e5\u306e\u591c\u4e5d\u6642\u307e\u3067\u5ef6\u3070\u3057\u305f\u3053\u3068\u3067\u8077\u54e1\u306e\u8ca0\u62c5\u304c\u5897\u3048\u3066\u304a\u308a\u3001\u8077\u54e1\u56e3\u4f53\u306f\u4eba\u54e1\u306e\u8ffd\u52a0\u3092\u6c42\u3081\u3066\u3044\u308b\u3002\\n\\n\u5229\u7528\u8005\u306e\u53d7\u3051\u6b62\u3081\u306f\u304a\u304a\u3080\u306d\u597d\u610f\u7684\u3060\u3002\u9031\u306b\u4e8c\u5ea6\u3001\u5b6b\u3092\u9023\u308c\u3066\u6765\u308b\u3068\u3044\u3046\u4e03\u5341\u4ee3\u306e\u5973\u6027\u306f\u300c\u524d\u306f\u5b50\u3069\u3082\u304c\u58f0\u3092\u51fa\u3059\u3068\u5468\u308a\u306e\u76ee\u304c\u6c17\u306b\u306a\u3063\u305f\u304c\u3001\u4e00\u968e\u306a\u3089\u6c17\u517c\u306d\u306a\u304f\u7d75\u672c\u3092\u8aad\u3093\u3067\u3042\u3052\u3089\u308c\u308b\u300d\u3068\u8a71\u3059\u3002\u4e00\u65b9\u3001\u53d7\u9a13\u3092\u63a7\u3048\u305f\u9ad8\u6821\u751f\u306e\u4e2d\u306b\u306f\u300c\u5b66\u7fd2\u5e2d\u304c\u4e09\u968e\u3060\u3051\u306b\u306a\u308a\u3001\u5915\u65b9\u306f\u3059\u3050\u306b\u6e80\u5e2d\u306b\u306a\u308b\u300d\u3068\u4e0d\u6e80\u3092\u6f0f\u3089\u3059\u4eba\u3082\u3044\u308b\u3002\u56f3\u66f8\u9928\u306f\u3001\u5b66\u7fd2\u5e2d\u306e\u7a7a\u304d\u72b6\u6cc1\u3092\u30db\u30fc\u30e0\u30da\u30fc\u30b8\u3067\u78ba\u8a8d\u3067\u304d\u308b\u4ed5\u7d44\u307f\u3092\u5e74\u5185\u306b\u5c0e\u5165\u3059\u308b\u4e88\u5b9a\u3060\u3002\\n\\n\u518d\u958b\u9928\u306b\u5408\u308f\u305b\u3066\u3001\u50ac\u3057\u3082\u5897\u3048\u305f\u3002\u6bce\u9031\u571f\u66dc\u306e\u5348\u524d\u306b\u306f\u8aad\u307f\u805e\u304b\u305b\u4f1a\u3001\u6708\u306b\u4e00\u5ea6\u306f\u5730\u5143\u306e\u8fb2\u5bb6\u3084\u5546\u5e97\u4e3b\u3092\u8b1b\u5e2b\u306b\u62db\u304f\u300c\u307e\u3061\u306e\u5148\u751f\u300d\u8b1b\u5ea7\u304c\u958b\u304b\u308c\u308b\u3002\u5341\u4e00\u6708\u306b\u306f\u3001\u5e02\u5185\u306e\u4e2d\u5b66\u751f\u304c\u9078\u3093\u3060\u672c\u3092\u7d39\u4ecb\u3059\u308b\u5c55\u793a\u3082\u4e88\u5b9a\u3055\u308c\u3066\u3044\u308b\u3002\\n\\n\u9928\u9577\u306e\u5c71\u672c\u548c\u5b50\u3055\u3093\u306f\u300c\u672c\u3092\u501f\u308a\u308b\u5834\u6240\u304b\u3089\u3001\u4eba\u304c\u96c6\u307e\u3063\u3066\u904e\u3054\u3059\u5834\u6240\u3078\u5909\u3048\u305f\u304b\u3063\u305f\u3002\u518d\u958b\u9928\u304b\u3089\u306e\u4e00\u304b\u6708\u3067\u6765\u9928\u8005\u306f\u4ee5\u524d\u306e\u4e00\u30fb\u516b\u500d\u306b\u306a\u3063\u305f\u300d\u3068\u8a71\u3059\u3002\u5e02\u306f\u6765\u5e74\u5ea6\u3001\u6b8b\u308b\u4e8c\u3064\u306e\u56f3\u66f8\u9928\u306b\u3064\u3044\u3066\u3082\u5229\u7528\u8005\u3078\u306e\u805e\u304d\u53d6\u308a\u3092\u884c\u3044\u3001\u6539\u4fee\u306e\u5fc5\u8981\u6027\u3092\u691c\u8a0e\u3059\u308b\u65b9\u91dd\u3060\u3002&quot;\n    },\n    {\n      &quot;id&quot;: &quot;keigo&quot;,\n      &quot;ja&quot;: &quot;\u53d6\u5f15\u5148\u306e\u62c5\u5f53\u8005\u306b\u3001\u6765\u9031\u706b\u66dc\u65e5\u306e\u6253\u3061\u5408\u308f\u305b\u3092\u6c34\u66dc\u65e5\u306b\u5909\u66f4\u3057\u3066\u307b\u3057\u3044\u3068\u304a\u9858\u3044\u3059\u308b\u30e1\u30fc\u30eb\u3092\u3001\u4e01\u5be7\u306a\u656c\u8a9e\u3067\u66f8\u3044\u3066\u304f\u3060\u3055\u3044\u3002&quot;\n    },\n    {\n      &quot;id&quot;: &quot;arithmetic&quot;,\n      &quot;ja&quot;: &quot;\u308a\u3093\u3054\u304c1\u500b120\u5186\u3001\u307f\u304b\u3093\u304c1\u500b45\u5186\u3067\u3059\u3002\u308a\u3093\u3054\u30923\u500b\u3068\u307f\u304b\u3093\u30928\u500b\u8cb7\u3063\u3066\u30011,000\u5186\u672d\u3067\u6255\u3044\u307e\u3057\u305f\u3002\u304a\u3064\u308a\u306f\u3044\u304f\u3089\u3067\u3059\u304b\u3002\u8003\u3048\u65b9\u3082\u793a\u3057\u3066\u304f\u3060\u3055\u3044\u3002&quot;\n    },\n    {\n      &quot;id&quot;: &quot;prefectures&quot;,\n      &quot;ja&quot;: &quot;\u65e5\u672c\u306e\u90fd\u9053\u5e9c\u770c\u306e\u3046\u3061\u3001\u6d77\u306b\u9762\u3057\u3066\u3044\u306a\u3044\u770c\u3092\u3059\u3079\u3066\u6319\u3052\u3066\u304f\u3060\u3055\u3044\u3002&quot;\n    },\n    {\n      &quot;id&quot;: &quot;haiku&quot;,\n      &quot;ja&quot;: &quot;\u300c\u6625\u300d\u3092\u30c6\u30fc\u30de\u306b\u3057\u305f\u4ff3\u53e5\u30923\u3064\u3001\u4e94\u30fb\u4e03\u30fb\u4e94\u306e\u97f3\u6570\u3092\u5b88\u3063\u3066\u4f5c\u3063\u3066\u304f\u3060\u3055\u3044\u3002\u305d\u308c\u305e\u308c\u306b\u4e00\u8a00\u306e\u8aac\u660e\u3092\u4ed8\u3051\u3066\u304f\u3060\u3055\u3044\u3002&quot;\n    }\n  ]\n}\n<\/code><\/pre>\n<details>\n<summary>Package versions in the running container (full list)<\/summary>\n<pre><code>accelerate==1.15.0 aiohappyeyeballs==2.6.1 aiohttp==3.12.7 aiosignal==1.3.2 annotated-doc==0.0.5 annotated-types==0.8.0 anyio==4.15.1 attrs==25.3.0 cbor2==5.7.0 certifi==2026.7.22 charset-normalizer==3.5.2 click==8.5.0 compressed-tensors==0.19.0 cuda-bindings==13.4.3 cuda-pathfinder==1.8.2 cuda-toolkit==13.0.3.0 einops==0.8.2 filelock==4.0.8 frozenlist==1.6.0 fsspec==2026.9.0 grpclib==0.4.8 h11==0.16.0 h2==4.2.0 hf-xet==1.6.0 hpack==4.1.0 httpcore==1.0.9 httpx==0.28.1 huggingface_hub==1.33.0 hyperframe==6.1.0 idna==3.20 Jinja2==3.1.6 loguru==0.7.3 markdown-it-py==4.2.0 MarkupSafe==3.0.3 mdurl==0.1.2 mpmath==1.3.0 multidict==6.4.4 networkx==3.7 numpy==2.5.3 nvidia-cublas==13.1.1.3 nvidia-cuda-cupti==13.0.85 nvidia-cuda-nvrtc==13.0.88 nvidia-cuda-runtime==13.0.96 nvidia-cudnn-cu13==9.24.0.43 nvidia-cufft==12.0.0.61 nvidia-cufile==1.15.1.6 nvidia-curand==10.4.0.35 nvidia-cusolver==12.0.4.66 nvidia-cusparse==12.6.3.3 nvidia-cusparselt-cu13==0.8.1 nvidia-nccl-cu13==2.30.7 nvidia-nvjitlink==13.4.92 nvidia-nvshmem-cu13==3.4.5 nvidia-nvtx==13.0.85 packaging==26.3 pip==25.1.1 propcache==0.3.1 protobuf==7.36.2 psutil==7.2.2 pydantic==2.13.5 pydantic_core==2.46.5 Pygments==2.21.0 PyYAML==6.0.3 regex==2026.9.29 requests==2.34.2 rich==15.0.0 safetensors==0.8.0 sentencepiece==0.2.2 setuptools==84.0.0 shellingham==1.5.4 sympy==1.14.0 tiktoken==0.14.0 tokenizers==0.23.2 torch==2.14.1 tqdm==4.70.1 transformers==5.18.0 triton==3.8.0 typer==0.27.2 typing-inspection==0.4.4 typing_extensions==4.16.0 urllib3==2.8.0 uv==0.7.19 wheel==0.45.1 yarl==1.20.0<\/code><\/pre>\n<\/details>\n<details>\n<summary>Package versions in the downloading container (full list)<\/summary>\n<pre><code>aiohappyeyeballs==2.6.1 aiohttp==3.12.7 aiosignal==1.3.2 anyio==4.15.1 attrs==25.3.0 cbor2==5.7.0 certifi==2025.4.26 click==8.5.0 filelock==4.0.7 frozenlist==1.6.0 fsspec==2026.9.0 grpclib==0.4.8 h11==0.16.0 h2==4.2.0 hf-xet==1.6.0 hpack==4.1.0 httpcore2==2.13.1 httpx2==2.13.1 huggingface_hub==2.0.0 hyperframe==6.1.0 idna==3.20 multidict==6.4.4 packaging==26.3 pip==25.1.1 propcache==0.3.1 protobuf==6.31.1 PyYAML==6.0.3 tqdm==4.70.1 truststore==0.10.4 typing_extensions==4.16.0 uv==0.7.19 wheel==0.45.1 yarl==1.20.0<\/code><\/pre>\n<\/details>\n<p><!-- \/lmw:lab --><\/p>\n<h2>How to Get It<\/h2>\n<p>This model can be freely downloaded and used from the Hugging Face repository. It is published under the &#8220;Apache-2.0&#8221; license and is not a gated model requiring prior consent for use, meaning anyone can obtain it immediately.<\/p>\n<p>The distribution format is <code>safetensors<\/code>, and it is compatible with vLLM, SGLang, and Hugging Face&#8217;s Transformers library as serving engines.<\/p>\n<p>Below are usage methods and code examples for each engine provided by the release origin. Note that the following code examples are written based on the BF16 version (<code>IFM\/K2-Horizon-32B<\/code>), but similar settings and parser designations are also recommended when running the NVFP4 version.<\/p>\n<h3>Serving with vLLM<\/h3>\n<p>Here is an example command for launching a server using vLLM. It is recommended to enable the <code>k2_horizon<\/code> reasoning parser for chat and the tool call parser for agents.<\/p>\n<pre><code class=\"language-shell\">vllm serve IFM\/K2-Horizon-32B \\\n  --revision main \\\n  --model-impl vllm \\\n  --tensor-parallel-size 2 \\\n  --trust-remote-code \\\n  --dtype bfloat16 \\\n  --max-model-len 131072 \\\n  --reasoning-parser k2_horizon \\\n  --enable-auto-tool-choice \\\n  --tool-call-parser k2_horizon\n<\/code><\/pre>\n<h3>Serving with SGLang<\/h3>\n<p>Here is an example command when using SGLang. This recipe is verified on a 2\u00d7 H200 environment.<\/p>\n<pre><code class=\"language-shell\">python3 -m sglang.launch_server \\\n  --model-path IFM\/K2-Horizon-32B \\\n  --revision main \\\n  --tp 2 \\\n  --dtype bfloat16 \\\n  --attention-backend fa3 \\\n  --reasoning-parser k2_horizon \\\n  --tool-call-parser k2_horizon \\\n  --host 0.0.0.0 --port 30000\n<\/code><\/pre>\n<h3>API Usage Example (Python)<\/h3>\n<p>Here is a Python code example to obtain answers with thought processes via the OpenAI-compatible API after starting the server. Recommended settings such as <code>temperature=1.0<\/code>, <code>top_p=0.95<\/code>, and <code>reasoning_effort=\"high\"<\/code> are specified.<\/p>\n<pre><code class=\"language-python\">from openai import OpenAI\n\nclient = OpenAI(base_url=&quot;http:\/\/localhost:30000\/v1&quot;, api_key=&quot;EMPTY&quot;)\nresponse = client.chat.completions.create(\n    model=&quot;IFM\/K2-Horizon-32B&quot;,\n    messages=[{&quot;role&quot;: &quot;user&quot;, &quot;content&quot;: &quot;Explain the result step by step.&quot;}],\n    temperature=1.0,\n    top_p=0.95,\n    max_tokens=32768,\n    extra_body={&quot;chat_template_kwargs&quot;: {&quot;reasoning_effort&quot;: &quot;high&quot;, &quot;tool_call_format&quot;: &quot;xml&quot;}},\n)\nmessage = response.choices[0].message\nprint(&quot;Reasoning:&quot;, getattr(message, &quot;reasoning_content&quot;, None))\nprint(&quot;Answer:&quot;, message.content)\n<\/code><\/pre>\n<h3>Usage Example with Transformers<\/h3>\n<p>Here is a code example to load the model directly and generate text using Transformers (verified with version 5.15.0, PyTorch 2.13.0, and Safetensors 0.8.0).<\/p>\n<pre><code class=\"language-python\">from transformers import AutoModelForCausalLM, AutoTokenizer\n\nmodel_id = &quot;IFM\/K2-Horizon-32B&quot;\ntokenizer = AutoTokenizer.from_pretrained(model_id, trust_remote_code=True)\nmodel = AutoModelForCausalLM.from_pretrained(\n    model_id, device_map=&quot;auto&quot;, dtype=&quot;bfloat16&quot;, low_cpu_mem_usage=True, trust_remote_code=True\n)\n\ninputs = tokenizer(&quot;Explain why long-context evaluation is difficult.&quot;, return_tensors=&quot;pt&quot;).to(model.device)\ninputs.pop(&quot;token_type_ids&quot;, None)\noutputs = model.generate(**inputs, max_new_tokens=32768, temperature=1.0, top_p=0.95, do_sample=True)\nprint(tokenizer.decode(outputs[0], skip_special_tokens=True))\n<\/code><\/pre>\n<p><!-- lmw:related --><\/p>\n<h2>Related Articles<\/h2>\n<ul>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/23\/ifm-k2-horizon-375b-a23b-nvfp4-released-2\/\">K2-Horizon-375B-A23B-NVFP4 Text Generation Model: ~257GB Memory<\/a><\/li>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/10\/nvidia-releases-deepseek-v4-pro-nvfp4\/\">DeepSeek-V4-Pro-0813-nvfp4-DSpark: ~1005GB Memory<\/a><\/li>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/10\/05\/qwen-3-8-flash-next-released\/\">Qwen3.8-Flash-Next Multimodal MoE Model: ~402GB Memory<\/a><\/li>\n<li><a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/2026\/09\/26\/deepseek-v4-pro-0813-released\/\">DeepSeek-V4-Pro-0813 Text Generation Model: ~998GB Memory, GGUF Builds<\/a><\/li>\n<\/ul>\n<p><!-- \/lmw:related --><\/p>\n<p><!-- lmw:next-steps --><\/p>\n<h2>What to Read Next<\/h2>\n<ul>\n<li><strong>Find models by VRAM<\/strong> (This model needs at least 32GB) \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/vram-guide-en\/\">VRAM quick reference<\/a><\/li>\n<li><strong>Explore the same model family<\/strong> \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/model-ifm-k2-horizon-en\/\">K2-Horizon family overview (3 articles, 1 converted builds)<\/a><\/li>\n<li><strong>Engines that run this model<\/strong> \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/engine-vllm-en\/\">vLLM<\/a><\/li>\n<li><strong>What NVFP4 mean and where to get this model<\/strong> \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/format-fp4-en\/\">NVFP4 \/ MXFP4 format guide and models<\/a> \/ <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/glossary-quantization-en\/\">Quantization and model-format glossary<\/a><\/li>\n<li><strong>Learn about the publisher<\/strong> \u2192 <a href=\"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/publisher-ifm-en\/\">IFM (MBZUAI): models, licenses and articles<\/a><\/li>\n<\/ul>\n<p><!-- \/lmw:next-steps --><\/p>\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/huggingface.co\/IFM\/K2-Horizon-32B-NVFP4\">IFM\/K2-Horizon-32B-NVFP4 (Hugging Face)<\/a><\/li>\n<\/ul>\n<p><!-- lmw:updates --><\/p>\n<h2>Update History<\/h2>\n<ul>\n<li>2026-09-24: Rebuilt the article: Added a &#8220;can you run it locally?&#8221; verdict from the distribution formats, converted builds, engine registries, license terms and measured compression<\/li>\n<li>2026-09-25: Changed the title to show what the article covers (VRAM requirements, file list, etc.).<\/li>\n<li>2026-09-28: Added our own measurements: Japanese token efficiency.<\/li>\n<li>2026-10-02: Added our own measurements: VRAM and answers to Japanese questions with the publisher&#8217;s own code.<\/li>\n<li>2026-10-02: Changed the title to show what the article covers (VRAM requirements, file list, etc.).<\/li>\n<\/ul>\n<p><!-- \/lmw:updates --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>IFM releases K2-Horizon-32B-NVFP4, an NVFP4 quantized version of the 32B long-context open-weight LLM optimized for NVIDIA Blackwell GPUs.<\/p>\n","protected":false},"author":1,"featured_media":8810,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[310],"tags":[968,2051,2082,2053,813,169,1547,592,1555],"class_list":["post-2992","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-new-models","tag-blackwell-en","tag-ifm-en","tag-ifm-k2-horizon-32b-nvfp4-en","tag-k2-horizon-en","tag-nvfp4-en","tag-sglang-en","tag-verified","tag-vllm-en","tag--en"],"lang":"en","translations":{"en":2992,"ja":2990},"_links":{"self":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/2992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/comments?post=2992"}],"version-history":[{"count":65,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/2992\/revisions"}],"predecessor-version":[{"id":15537,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/posts\/2992\/revisions\/15537"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/media\/8810"}],"wp:attachment":[{"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/media?parent=2992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/categories?post=2992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/localmodelwatch.tsuchitsuchi.com\/en\/wp-json\/wp\/v2\/tags?post=2992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}