はじめに
Nanbeige4.1-3Bはわずか3Bと小型ながら、Qwen3-32Bなどをベンチマークで上回っていると謳われています。
公式のHuggingFaceから図をお借りして載せておきます。

PC環境
Ubuntu 25.10
Python環境構築
uvを使っています。pyproject.tomlを載せておくので uv sync のみで環境構築可能です。
[project] name = "nanbeige" version = "0.1.0" description = "Add your description here" readme = "README.md" requires-python = ">=3.13" dependencies = [ "accelerate==1.12.0", "hf-xet==1.3.1", "torch==2.10.0+xpu", "transformers==5.2.0", "triton-xpu==3.6.0", ] [[tool.uv.index]] name = "torch-xpu" url = "https://download.pytorch.org/whl/xpu" explicit = true [tool.uv.sources] torch = [{ index = "torch-xpu" }] triton-xpu = [{ index = "torch-xpu" }]
結果
算数パズルを解かせてみました。
「9 9 9 9」という4つの数字の間に四則演算の記号を追加して計算結果が10になるようにするという問題です。
正解の一例は (9×9+9)÷9 = 10 です。
出力(回答)はこのようになりました。思考過程は省略しています。
「9 9 9 9」を用いて、四則演算と括弧で計算結果が **10** になるよう、以下の式を構成できました。
---
### ✅ 解答式:
$$
\frac{(9 \times 9) + 9}{9}
$$
---
### 🔍 検証:
1. **数字の使用**:4桁の「9 9 9 9」を順序通り使い、各数字間に四則演算記号を配置。
2. **演算の流れ**:
- $ 9 \times 9 = 81 $
- $ 81 + 9 = 90 $
- $ 90 \div 9 = 10 $
3. **制約の遵守**:
- ❌ **小数点の追加**:禁止 → なし(全演算は整数)。
- ❌ **隣接数字を2桁以上にまとめる**:禁止 → なし(各演算は単一数字に対応)。
- ✅ **括弧の使用**:可能 → $(9 \times 9) + 9$ をグループ化し、順序を明確に。
- ✅ **四則演算記号の配置**:`×`, `+`, `/` を数字間に配置。
4. **計算結果**:**10** となる。
---
### 📝 表述例(例と同様の形式で):
```
「9 9 9 9」 → $ \frac{(9 \times 9) + 9}{9} = 10 $
```
---
### 💡 補足:
- この式は、**順序を厳守**しています(「9 9 9 9」の順で使用)。
- 括弧は必要であり、演算の優先順位を明確にします。
- 類似の解法も存在します(例:`9 + (9 ÷ 9) × (9 ÷ 9)` は5個の9を使用するため無効)、但本解答は**4個の9を正しく使い、全制約を満たす最適解**です。
---
### ✅ 最終回答:
$$
\boxed{\frac{(9 \times 9) + 9}{9}}
$$
正解にたどり着きました。
VRAM 12GBしかないArc B580ですが問題なく動作しました。
Pythonスクリプト
from transformers import AutoModelForCausalLM, AutoTokenizer, TextStreamer tokenizer = AutoTokenizer.from_pretrained( 'Nanbeige/Nanbeige4.1-3B', use_fast=False, trust_remote_code=True ) model = AutoModelForCausalLM.from_pretrained( 'Nanbeige/Nanbeige4.1-3B', torch_dtype='auto', device_map='auto', trust_remote_code=True ) prompt = """「9 9 9 9」という4桁の数字があります。数字と数字の間に四則演算の記号を追加して計算結果が10になるようにして下さい。 数字と数字の間に少数点を追加することは禁止されています。 隣あう数字をまとめて2桁以上の数字とみなすことは禁止されています。 括弧を使うことは可能です。 以下に例を示します。 ~~~ 「1 2 3 4」なら1+2+3+4が解答の一例です。 「4 5 4 2」なら(4*5)/(4-2)が解答の一例です。 ~~~""" messages = [ {'role': 'user', 'content': prompt} ] prompt = tokenizer.apply_chat_template( messages, add_generation_prompt=True, tokenize=False ) input_ids = tokenizer( prompt, add_special_tokens=False, return_tensors='pt' ).to("xpu") streamer = TextStreamer( tokenizer, skip_prompt=True, skip_special_tokens=True ) generate_kwargs = { "max_new_tokens": 131072, "do_sample": True, "temperature": 0.6, "top_p": 0.95, "streamer": streamer, } model.generate( **input_ids, **generate_kwargs, eos_token_id=166101 )