雑多情報 - 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";