onw / CONVERT_LFM.md
ryugyosoft's picture
onw 3.3.0: LFM2.5-24B-A2B (converted on this PC), faster MoE prompts
7ed2518 verified
|
Raw History Blame Contribute Delete
9.99 kB
# LFM を自分で変換して onw で使う
[README に戻る](README.md) ・ **日本語** | [English](CONVERT_LFM_en.md)
LiquidAI の LFM2.5-2.6B・LFM2-8B-A1B・LFM2.5-24B-A2B は onw で動きますが、変換済みのモデルは配布していません。LFM のライセンス
(LFM Open License v1.0)は、年間売上 1000 万ドル以上の法人による商用利用を対象外にしているためです。このページの
手順で、元のモデルを Hugging Face から取得して、自分の PC で変換してください。onw だけで変換でき(torch などは不要)、
1〜2 分で終わります。変換したモデルはその PC の中だけにあり、どこにも送られません。
**AI アシスタントに任せる場合**:このページの URL を渡して「この手順で LFM2.5-2.6B を onw 用に変換して」と頼めば、
そのまま実行できるように書いてあります(下の「AI アシスタントへ」も読ませてください)。
## 対応しているモデル
| 元のモデル | onw のアーキテクチャ | 元の大きさ | 変換後 | NPU 3720 生成速度 | 使用メモリ |
|---|---|---|---|---|---|
| [LiquidAI/LFM2.5-2.6B](https://huggingface.co/LiquidAI/LFM2.5-2.6B) | `lfm2`(dense) | 5.1 GB | 1.5 GB | 12〜13 tok/s(先読み検証で 29〜34) | 約 4.3 GB |
| [LiquidAI/LFM2-8B-A1B](https://huggingface.co/LiquidAI/LFM2-8B-A1B) | `lfm2_moe`(MoE) | 16 GB | 4.0 GB | 16〜17 tok/s(先読み検証で 29〜43) | 約 5 GB |
| [LiquidAI/LFM2.5-24B-A2B](https://huggingface.co/LiquidAI/LFM2.5-24B-A2B) | `lfm2_moe`(MoE、NF4) | 48 GB | 12 GB | 動かない(Panther Lake で約 20 tok/s) | 約 12.6 GB |
**LFM2.5-24B-A2B は onw 3.3.0 以降、Lunar Lake 以降専用**です(重みを NF4 にするため。NPU 3720 では動きません)。onw ウィンドウの「モデル」タブの「ダウンロードして変換」で、下の手順 2・3 を自動で行えます。手で変換するときは、手順 3 のコマンドの最後に `--fmt nf4` を付けてください(変換はテスト機で約 9 分。空きは元のモデル+変換後で約 60 GB)。
同じ `lfm2` 構造のほかの LFM2/LFM2.5(テキストのみのもの)も変換できるはずですが、確認したのは上の 3 つだけです。
画像や音声を扱う LFM2-VL/LFM2-Audio には対応していません。
## 必要なもの
- **onw 0.9.0 以降**がインストール済みであること([README の「インストール」](README.md)の 1 行コマンド)。
- 空き容量:元のモデル+変換後(LFM2.5-2.6B なら 6.6 GB、LFM2-8B-A1B なら 20 GB)。変換が終われば元のモデルは消せます。
- メモリ:変換中に実際に占有するのは 2〜4 GB です(元のファイルの読み込みで作業セットは 8〜17 GB まで増えますが、
OS が必要に応じて手放す分です)。
- インターネット接続(元のモデルの取得)。
## 手順
以下は **Windows は PowerShell、Ubuntu は端末(bash)** で、上から順に実行します。例は LFM2.5-2.6B です。
LFM2-8B-A1B にするときは `LiquidAI/LFM2.5-2.6B` と `LFM2.5-2.6B` をそれぞれ `LiquidAI/LFM2-8B-A1B` と `LFM2-8B-A1B` に
置き換えてください。
### 1. onw の Python と保存先を調べる
**Windows(PowerShell)**
```powershell
$py = "$env:LOCALAPPDATA\onw\.venv\Scripts\python.exe"
& $py -c "import onw; print(onw.__version__)"
$models = & $py -c "from onw import app; print(app.models_dir(app.load_config()))"
$models
```
**Ubuntu(bash)**
```bash
py=~/onw/.venv/bin/python
"$py" -c "import onw; print(onw.__version__)"
models=$("$py" -c "from onw import app; print(app.models_dir(app.load_config()))")
echo "$models"
```
- 1 行目の表示(onw の版)が **0.9.0 以上**であること。それより古ければ、トレイのメニューか onw ウィンドウの
「設定」→「今すぐ確認」で更新するか、インストールの 1 行コマンドをもう一度実行してから、やり直します。
- `$models` は onw のモデルの保存先です(onw ウィンドウの「モデル」タブの「保存先」と同じ)。
ここに変換すると、onw の一覧に自動で出ます。
### 2. 元のモデルを取得する
**Windows**
```powershell
$src = "$env:USERPROFILE\lfm-src\LFM2.5-2.6B"
& $py -c "from huggingface_hub import snapshot_download; snapshot_download('LiquidAI/LFM2.5-2.6B', local_dir=r'$src')"
```
**Ubuntu**
```bash
src=~/lfm-src/LFM2.5-2.6B
"$py" -c "from huggingface_hub import snapshot_download; snapshot_download('LiquidAI/LFM2.5-2.6B', local_dir='$src')"
```
途中で止まったら、同じコマンドをもう一度実行すれば続きから取得します。終わると `$src` に `config.json`、
`model-*.safetensors`、`tokenizer.json` などが入っています。
### 3. 変換する
**Windows**
```powershell
& $py -m onw convert $src "$models\LFM2.5-2.6B-onw" --compact
```
**Ubuntu**
```bash
"$py" -m onw convert "$src" "$models/LFM2.5-2.6B-onw" --compact
```
**プロンプトを速くしたいとき(LFM2-8B-A1B、onw 3.3.0 以降)**:変換の前に `$env:ONW_LFM_MIXER = "128"`(Ubuntu は `export ONW_LFM_MIXER=128`)を実行しておくと、プロンプトをエキスパートごとにまとめて計算するグラフも作ります。NPU 3720 でプロンプト 70 → 約 310 tok/s、Panther Lake で 147 → 約 650 tok/s になりますが、メモリが約 0.7 GB 増え、先読み検証(コード修正・要約で速くなる仕組み)は使わなくなります。LFM2.5-24B-A2B(`--fmt nf4`)では最初から作ります。
成功すると、最後に `done in …s` と表示されます(テスト機で LFM2.5-2.6B は約 1 分、LFM2-8B-A1B は約 2 分)。
出力フォルダには `engine.json`、`seg00.bin`〜、`seg00_S1.xml`〜、`shared.bin`、`tokenizer.json`、`LICENSE` などが
でき、LFM2-8B-A1B では `experts.bin` も加わります。大きさは上の表の「変換後」とほぼ同じになります。
### 4. onw で使う
- onw ウィンドウの「モデル」タブに、**LFM2.5-2.6B-onw**(「ローカル」の印付き)が出ます。出なければウィンドウを
開き直してください。保存先以外に変換した場合は、「ほかの場所」の「追加…」でそのフォルダ(またはその親フォルダ)を
選びます。
- 「サーバー」タブでモデルを選んで「ロード」を押します。初回だけ NPU 向けのコンパイルがあります(テスト機で
LFM2.5-2.6B は約 5 分、LFM2-8B-A1B は約 1.5 分)。状態が「動作中」になれば使えます。
- コマンドから起動する場合:`& $py -m onw serve "$models\LFM2.5-2.6B-onw"`(Ubuntu は `"$py" -m onw serve "$models/LFM2.5-2.6B-onw"`)。
### 5. 動作を確かめる
- 「検証ページ」を開いて「検証を実行」を押し、すべての項目が「OK」になることを確かめます。生成速度の目安は
上の表のとおりです(PC によって変わります)。
- LFM2.5 は、既定では考えずにすぐ答えます。考えさせたいときは、チャット画面の「思考モード」をオンにするか、API で
`"chat_template_kwargs": {"enable_thinking": true}` を指定します。
### 6. 後片付け(任意)
変換が終われば、元のモデル(`$src`)は使いません。容量が必要なら削除して構いません。
## うまくいかないとき
| 症状 | 対処 |
|---|---|
| `unsupported architecture 'lfm2'` | onw が古い。0.9.0 以上に更新してから変換し直す。 |
| `No such file` や `config.json` が見つからない | 手順 2 が終わっていない。取得のコマンドをもう一度実行する。 |
| Ubuntu で `returned NaN/inf logits` と出る、回答が途中から空になる | NPU ドライバー(linux-npu-driver)が 1.38 より古い。1.38 以降に更新する。 |
| 空き容量が足りない | 元のモデルの保存先(`$src`)を別のドライブにする。 |
| 一覧に出ない | 変換先が保存先か「ほかの場所」の下にあるか確認し、ウィンドウを開き直す。 |
## ライセンスについて
変換したモデルは、元のモデルと同じ LFM Open License v1.0 に従います(変換先に `LICENSE` がコピーされます)。
年間売上 1000 万ドル以上の法人(その関連会社を含む)が商用で使う場合は、Liquid AI との別の契約が必要です。
自分の使い方がどれに当たるかは、ご自身で判断してください。onw のコード自体は Apache 2.0 です。
## AI アシスタントへ
このページの手順をユーザーの代わりに実行するときの約束です。
- 手順 1〜5 を上から順に、ユーザーの OS に合ったほう(Windows なら PowerShell、Ubuntu なら bash)だけ実行する。
変数(`$py`、`$models`、`$src`)は同じシェルの中で使い続ける。
- 手順 1 で onw の版が 0.9.0 未満(LFM2.5-24B-A2B では 3.3.0 未満)なら、先に進まずユーザーに更新を頼む。
- 各手順の「成功の目安」(版の表示、`done in …s`、出力フォルダのファイル、検証ページの OK)を確かめてから次に進み、
失敗したら「うまくいかないとき」の表に沿って対処する。
- モデルの取得(数 GB のダウンロード)の前と、手順 6 の削除の前には、ユーザーに確認する。
- ライセンスの判断はユーザーに任せる(上の「ライセンスについて」を伝えるだけにする)。
- 終わったら、変換先のフォルダ、変換にかかった時間、検証ページの生成速度をユーザーに報告する。