38
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EVO-X2 + LemonadeServer + ContinueでローカルLLM環境を構築

38
Last updated at Posted at 2025-12-17

はじめに

こんにちは、anyのプロダクトチーム所属@310kaです。
この記事は any Product Team Advent Calendar2025 18日目の記事になります。

今回は、GMKtecのEVO-X2LemonadeServer 9.1.0を使ってローカルLLM環境を構築してみました。最近のMiniPCの性能向上で、ローカルでの大規模言語モデル(LLM)運用が手軽になってきています。特にEVO-X2は128GBのLPDDR5Xを搭載しており、96GBのVRAM割り当てが可能なため、大規模モデルでも余裕を持って運用できます。

普段JetBrainsのIDEを利用しており、All Products Packを契約しているのでAIクレジットがある程度使えるんですが、本格的な開発に使い続けるには厳しいときも多いのでローカルでなんとかできないか試してみます。

環境構成

EVO-X2(Ryzen AI Max+ 395搭載、128GB LPDDR5X)

LemonadeServer 9.1.0(LLM推論サーバ)

JetBrains IntelliJ IDEA(Continueプラグイン経由でローカルLLM連携)

性能と利点

EVO-X2はユニファイドメモリでBIOSにて96GBまでVRAMに割り当てが可能で gpt-oss-120bなどの大規模モデルもロードできます。​

モデルのロードは多少時間がかかりますが、メモリに空きがあれば同時に複数のモデルをロードできるため、それぞれのタスクに適したモデルを使った開発がしやすいと思います。

実行手順

LemonadeServerの起動

Lemonadeは、Windows上でLLMのロードと推論を行うサーバです。
Windows環境なのでこちらからlemonade.msiをダウンロードしてインストールします。

インストール後にショートカットから起動できますが、デフォルトでは外部からアクセスができません。
今回はLAN内のMacから接続するためにhostオプションをして起動します。

lemonade start --host 0.0.0.0 --port 8080 --ctx-size 131072 --max-loaded-models 2 1 1 1
  • --host 0.0.0.0 とすることで、LAN内の別の端末からもアクセス可能になります

  • max-loaded-modelsは同時ロードできるモデル数を指定できます。これにより、モデルロード待ち時間が削減されるはずです。ただし、NPUを使うモデルは同時に1つしかロードできないので注意

詳しくは https://lemonade-server.ai/docs/server/lemonade-server-cli/ を確認してください。

起動するとタスクトレイに追加され、Open appでアプリを表示できます。
スクリーンショット 2025-12-16 074619.png

Lemonade 9.1.0から WebUIが廃止されてアプリになりました。
必要なモデルをダウンロードしておきます。

Continueプラグインの設定

JetBrains IDEにContinueプラグインを導入し、LemonadeServerのAPIエンドポイントに接続することで、コード補完やエラー修正などのアシスタント機能をローカルで実行できます。

​AI AssistantでもOpenAI互換やLMStudioなどのローカルLLMを利用できますが、単純にモデルに投げることしかできないようなので開発には不十分かと思うのでContinueを利用してみます。

Continueプラグインでエラーが出る場合は ヘルプ | カスタムVMオプションの編集 で以下を追加してください。

-Dide.browser.jcef.out-of-process.enabled=false

Lemonadeへの接続設定が必要になるのでContinueのconfig.yamlに以下を追加します。

models:
  - name: Lemonade
    provider: openai
    model: AUTODETECT
    apiBase: http://192.168.***.***:8000/api/v1/
    apiKey: none
  - name: Lemonade Autocomplete
    provider: openai
    model: AUTODETECT
    apiBase: http://192.168.***.***:8000/api/v1/
    apiKey: none
    roles:
      - autocomplete

AUTODETECTを指定しているとLemonadeでダウンロードしているモデルがリストアップされるようになります。

スクリーンショット 2025-12-16 13.12.02.png

Continueプラグインの設定画面でデフォルトのモデルを指定します。
チャットのデフォルト選択にgpt-oss-120bとAutocompleteとApply(作成されたコードを反映する処理)にQwen3 Coder(30B)を指定してみました。

いざ実行

応答速度を見るために、Reactを利用したサンプル環境にて適当に以下のリクエストを出してみました。

Twitchのスクリーンショットを取得するためにTwitchのVideo要素の取得と動画タイトルを取得するための機能をもつ useTwitch hookを作って

使用モデルはQwen3-Coder-30B-A3B-Instruct-GGUFです

[Server] POST /api/v1/chat/completions - Streaming
srv  params_from_: Chat format: Qwen3 Coder
slot get_availabl: id  1 | task -1 | selected slot by LCP similarity, sim_best = 0.974 (> 0.100 thold), f_keep = 0.566
slot launch_slot_: id  1 | task -1 | sampler chain: logits -> logit-bias -> penalties -> dry -> top-n-sigma -> top-k -> typical -> top-p -> min-p -> xtc -> temp-ext -> dist
slot launch_slot_: id  1 | task 5223 | processing task
slot update_slots: id  1 | task 5223 | new prompt, n_ctx_slot = 131072, n_keep = 16, task.n_tokens = 1640
slot update_slots: id  1 | task 5223 | n_tokens = 1598, memory_seq_rm [1598, end)
slot update_slots: id  1 | task 5223 | prompt processing progress, n_tokens = 1640, batch.n_tokens = 42, progress = 1.000000
slot update_slots: id  1 | task 5223 | prompt done, n_tokens = 1640, batch.n_tokens = 42
slot print_timing: id  1 | task 5223 |
prompt eval time =     198.18 ms /    42 tokens (    4.72 ms per token,   211.93 tokens per second)
       eval time =    7615.78 ms /   510 tokens (   14.93 ms per token,    66.97 tokens per second)
      total time =    7813.96 ms /   552 tokens
slot      release: id  1 | task 5223 | stop processing: n_tokens = 2149, truncated = 0
srv  update_slots: all slots are idle
srv  log_server_r: request: POST /v1/chat/completions 127.0.0.1 200
[Server] Streaming completed - 200 OK

=== Telemetry ===
Input tokens:  42
Output tokens: 510
TTFT (s):      0.198
TPS:           66.97
=================

生成速度(TPS)は約67トークン/秒で結構早めです。

実行の様子は以下です。
若干待ちますが使えなくもないという感じですね。

mov_con_102007.gif

autocompleteの方は入力中に稀にいい感じの補完をしてくれますが、個人的にはいらないかなぁという印象でした。

続いてgpt-oss-120bでも試してみます。

mov_con_132135.gif

何度か応答を繰り返したのちに出力されていきますが、途中で長考しています。
トータルで1分30秒ほどで最後まで出力しました。
個人的にはちょっと待つのがきつい時間です。

おわりに

なるべくサブスク料金を減らせないかと思ってましたが、ローカルLLMではまだまだ敵わないという結果でした。
ちなみに、今回使用したEVO-X2はセールで約21万円ほどでした。
月2,500円のサブスク代わりとすると、元を取るには7年かかる計算になります。
当然ながらオンラインの方は進化も早いわけで・・・
これだけで元を取るのは厳しいですが、ただ、まあ、ローカルで動くのは楽しいです!
なんとかして有効活用していきます!

38
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
38
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?