雑多情報 - nyasu3w/StackFlow GitHub Wiki

自分がX(Twitter)に垂れ流した情報など。自分でも探せなくなってきたのでまとめ

あらかじめ:当方のModuleLLMは2025/01発売のロットで、StackFlowはv1.4.0に上げ、M5Module-LLMは1月末のdev版を利用しています。

更新

debパッケージの置き場からdebのリンクを全部ダウンロードするスクリプトがあります。ネットワークに繋いだModuleLLM本体から使います。

後者はコマンドの引数にバージョン番号が必要です。bash firmdown.sh v1.4.0 等のようにする必要があります。

カレントディレクトリにdebがダウンロードされるので、終わったら、dpkg -i *.deb などでインストールします。

不具合?

LLMの出力が途中で止まる(2025/02/01)

llm-llmのマルチバイト文字列への対応がどうもうまくないらしく、文字コードの途中でぶった切られて出力のjsonが壊れることがある模様。 本家へissueは立てました。ここのプロジェクトのmain_llmのは、暫定対応入れてありますが、あくまで暫定です。

なお、暫定対応を入れると、今度はllmの出力がループする事象が発生しています。 LLMで使うモデルにより、ループが発生しやすい・しにくいがあるようです。

設定

LLMで使うモデルの切替

LLMの設定は、Arduino側のプログラムで下記のようになっているが、このconfig.modelを書き換えると、StackFlow v1.4.0では3種ほど切り替えられる模様(2025/2/1)。 無設定だと、qwen2.5-0.5B-prefill-20e になる。

    M5.Display.printf(">> Setup llm..\n");
    m5_module_llm::ApiLlmSetupConfig_t config;
    config.max_token_len = 1023; 
//    config.model = "openbuddy-llama3.2-1B-ax630c";
//    config.model = "llama3.2-1B-prefill-ax630c";
    llm_work_id = module_llm.llm.setup(config);

llama-3.2.1B-prefillは、そのままだと llama3.2-1B-prefill-ax630c.jsonが無いといわれてしまうので、 /opt/m5stack/data にて、 ln -s mode_llama3.2-1B-prefill-ax630c.json llama3.2-1B-prefill-ax630c.json などする必要があるかも。 qwen2.5-1.5B-ax630c、qwen2.5-coder-0.5B-ax630cなどもあるようだが試していない。

→ qwen2.5-coder-0.5B-ax630c はいけた。config.modelにこれを書く。

接続

デバッグボードのMACアドレスの固定

現状(2025/2/1)、ModuleLLMのデバッグボードのイーサネットの口は、MACアドレスが固定されていません。理由は色々推測されていますが、環境によってはこれが面倒くさいことになります。例えば、dhcpサーバによるIPアドレス固定がしたい場合など。

デバッグボード無しでModuleLLMのネット接続

adbとsshとプロキシサーバでネット接続出来るフリをする。ちゃんと動くプロキシサーバーがあらかじめ必要。親機に立てるのが手っ取り早いかも。

  • adbでsshdのport22を外に引っ張り出す(親機の2222へ)
adb forward tcp:2222 tcp:22

親機のポート2222がModuleLLMのsshdの待ち受けポートに転送される

  • sshのフォワーディングでプロキシの口を作る
ssh root@localhost -p 2222 -R 3128:XXXX:YY

XXXX:YYのXXXXはプロキシサーバ、YYはプロキシのポート。 これでModuleLLMのport3128が、プロキシサーバに転送される。 このコマンドでModuleLLM側のシェルに接続する。抜けるのはexit

  • ModuleLLM内でプロキシサーバの設定をする もっと楽な手段があるのかもしれないけれど、環境変数や設定ファイルを書き換える。

環境変数のセット。これはどこでやるのがいいかな... 手元のシェルで動けば良いのなら.bashrcとか?環境変数のセットだけでプロキシ設定が終わるコマンドも多い。

export http_proxy=http://localhost:3128
export https_proxy=http://localhost:3128

aptだと、 /etc/apt/apt.conf.d/ あたりに、10-proxy などのファイルを作って

Acquire::http::Proxy "http://localhost:3128";
Acquire::https::Proxy "http://localhost:3128";