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 に戻る ・ 日本語 | English

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 lfm2(dense) 5.1 GB 1.5 GB 12〜13 tok/s(先読み検証で 29〜34) 約 4.3 GB
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 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 の「インストール」の 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)

$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)

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

$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

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

& $py -m onw convert $src "$models\LFM2.5-2.6B-onw" --compact

Ubuntu

"$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 の削除の前には、ユーザーに確認する。
  • ライセンスの判断はユーザーに任せる(上の「ライセンスについて」を伝えるだけにする)。
  • 終わったら、変換先のフォルダ、変換にかかった時間、検証ページの生成速度をユーザーに報告する。