ModuleLLMにTinySwallowを入れてみる -3-

 生成されたdebパッケージをインストールする。

root@m5stack-LLM:/mnt/sdcard/tinyswallow-deb# dpkg -i llm-model-tinyswallow-1.5b-ax630c_1.0.0_arm64.deb

Selecting previously unselected package llm-model-tinyswallow-1.5b-ax630c.

(Reading database ... 47062 files and directories currently installed.)

Preparing to unpack llm-model-tinyswallow-1.5b-ax630c_1.0.0_arm64.deb ...

Unpacking llm-model-tinyswallow-1.5b-ax630c (1.0.0) ...

Setting up llm-model-tinyswallow-1.5b-ax630c (1.0.0) ...

root@m5stack-LLM:/mnt/sdcard/tinyswallow-deb# dpkg -L llm-model-tinyswallow-1.5b-ax630c
/.
/opt
/opt/m5stack
/opt/m5stack/data
/opt/m5stack/data/models
/opt/m5stack/data/models/mode_tinyswallow-1.5b-ax630c.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c
/opt/m5stack/data/tinyswallow-1.5b-ax630c/model.embed_tokens.weight.bfloat16.bin
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l0_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l10_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l11_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l12_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l13_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l14_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l15_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l16_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l17_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l18_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l19_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l1_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l20_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l21_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l22_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l23_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l24_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l25_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l26_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l27_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l2_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l3_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l4_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l5_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l6_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l7_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l8_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l9_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_post.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/added_tokens.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/generation_config.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/special_tokens_map.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/tokenizer.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/tokenizer_config.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/vocab.json
/opt/m5stack/scripts
/opt/m5stack/scripts/.cache
/opt/m5stack/scripts/.cache/huggingface
/opt/m5stack/scripts/.cache/huggingface/.gitignore
/opt/m5stack/scripts/.cache/huggingface/download
/opt/m5stack/scripts/.cache/huggingface/download/TinySwallow-1.5B-Instruct-ax630c
/opt/m5stack/scripts/.cache/huggingface/download/TinySwallow-1.5B-Instruct-ax630c/tinyswallow_tokenizer.py.lock
/opt/m5stack/scripts/TinySwallow-1.5B-Instruct-ax630c
/opt/m5stack/scripts/tokenizer_tinyswallow-1.5b-ax630c.py

 なんかいらんファイルまで含まれているな... /opt/m5stack/scripts/.cacheとかゴミだな。

root@m5stack-LLM:/mnt/sdcard# rm -rf tinyswallow-deb/work/opt/m5stack/scripts/.cache
root@m5stack-LLM:/mnt/sdcard# rm -rf tinyswallow-deb/work/opt/m5stack/scripts/TinySwallow-1.5B-Instruct-ax630c

 再ビルド、インストール済みパッケージ削除、再インストール。

root@m5stack-LLM:/mnt/sdcard# dpkg-deb -Znone --build /mnt/sdcard/tinyswallow-deb/work /mnt/sdcard/tinyswallow-deb/
dpkg-deb: building package 'llm-model-tinyswallow-1.5b-ax630c' in '/mnt/sdcard/tinyswallow-deb//llm-model-tinyswallow-1.5b-ax630c_1.0.0_arm64.deb'.
root@m5stack-LLM:/mnt/sdcard# apt remove --purge llm-model-tinyswallow-1.5b-ax630c

Reading package lists... Done

Building dependency tree... Done

Reading state information... Done

The following packages will be REMOVED:

llm-model-tinyswallow-1.5b-ax630c*

0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.

After this operation, 0 B of additional disk space will be used.

Do you want to continue? [Y/n] y

(Reading database ... 47109 files and directories currently installed.)

Removing llm-model-tinyswallow-1.5b-ax630c (1.0.0) ...

root@m5stack-LLM:/mnt/sdcard# dpkg -i tinyswallow-deb//llm-model-tinyswallow-1.5b-ax630c_1.0.0_arm64.deb

Selecting previously unselected package llm-model-tinyswallow-1.5b-ax630c.

(Reading database ... 47062 files and directories currently installed.)

Preparing to unpack .../llm-model-tinyswallow-1.5b-ax630c_1.0.0_arm64.deb ...

Unpacking llm-model-tinyswallow-1.5b-ax630c (1.0.0) ...

Setting up llm-model-tinyswallow-1.5b-ax630c (1.0.0) ...

 ゴミは消えた。

root@m5stack-LLM:/mnt/sdcard# dpkg -L llm-model-tinyswallow-1.5b-ax630c
/.
/opt
/opt/m5stack
/opt/m5stack/data
/opt/m5stack/data/models
/opt/m5stack/data/models/mode_tinyswallow-1.5b-ax630c.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c
/opt/m5stack/data/tinyswallow-1.5b-ax630c/model.embed_tokens.weight.bfloat16.bin
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l0_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l10_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l11_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l12_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l13_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l14_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l15_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l16_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l17_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l18_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l19_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l1_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l20_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l21_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l22_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l23_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l24_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l25_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l26_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l27_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l2_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l3_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l4_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l5_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l6_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l7_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l8_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_p128_l9_together.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/qwen2_post.axmodel
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/added_tokens.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/generation_config.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/special_tokens_map.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/tokenizer.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/tokenizer_config.json
/opt/m5stack/data/tinyswallow-1.5b-ax630c/tokenizer/vocab.json
/opt/m5stack/scripts
/opt/m5stack/scripts/tokenizer_tinyswallow-1.5b-ax630c.py

 とりあえず、使ってみる。

root@m5stack-LLM:/mnt/sdcard/tinyswallow-deb# telnet localhost 10001

Trying 127.0.0.1...

Connected to localhost.

Escape character is '^]'.

{"request_id":"sys_reset","work_id":"sys","action":"reset","object":"sys.reset"}
{"created":1759135603,"data":"None","error":{"code":0,"message":"llm server restarting ..."},"object":"None","request_id":"sys_reset","work_id":"sys"}

Connection closed by foreign host.

root@m5stack-LLM:/mnt/sdcard# telnet localhost 10001
{"request_id": "audio_setup",

"work_id": "audio","action": "setup","object": "audio.setup",

"data": {"capcard": 0,"capdevice": 0,"capVolume": 0.8,

"playcard": 0,"playdevice": 1,"playVolume": 0.8}}

{"request_id":"kws_setup",

"work_id": "kws","action":"setup","object":"kws.setup",

"data":{

"model":"sherpa-onnx-kws-zipformer-gigaspeech-3.3M-2024-01-01",

"response_format":"kws.bool","enoutput":true,

"kws":"ECHO","input":["sys.pcm"]}}

{"request_id":"vad_setup",

"work_id":"vad", "action":"setup","object":"vad.setup",

"data":{"model":"silero-vad","response_format":"vad.bool",

"enoutput":true,"input":["sys.pcm","kws.1001"]}}

{"request_id":"whisper_setup","work_id":"whisper",

"action":"setup","object":"whisper.setup",

"data":{"model":"whisper-tiny","response_format":"asr.utf-8","language":"ja",

"enoutput":true,"input":["sys.pcm","kws.1001","vad.1002"]}}

{"request_id":"llm_setup", "work_id":"llm", "action":"setup", "object":"llm.setup", "data":{"model":"tinyswallow-1.5b-ax630c", "language":"ja", "response_format":"llm.utf-8.stream", "enoutput":true, "enkws":true, "max_token_len":256, "prompt":"Respond in Japanese only, keep a fun tone, and be as concise as possible.", "input":["whisper.1003"]}}

 よしきた!

{"created":1759136435,"data":"None","error":{"code":0,"message":""},"object":"None","request_id":"llm_setup","work_id":"llm.1005"}
{"request_id":"melotts_setup","work_id":"melotts", "action":"setup","object":"melotts.setup",

"data":{"model":"melotts-ja-jp","response_format":"sys.pcm", "input":["llm.1004"],"enoutput":false,"enaudio":true}}

 音声応答させてみる。

 "こんにちは."

 "こんにちは!👋

 \n\n何かお手伝いできることはありますか? 😊"

 "日本で一番高い山を教えてください."

 "日本で一番高い山は富士山(3,776メートル)です。 🗻"

 絵文字を応答に入れてくるな。TTSで読めないのだけどさ。

 "雨の日は何をした遊んだらいいですか."

 "雨の日は室内で楽しめる活動がおすすめです!\n\n

 1. 積読(本屋で新しい本を探そう!)\n

 2. 手芸に挑戦(クッションカバーとか簡単なものでいいと思います)\n

 3. ドラマ・アニメを観賞(懐かしいドラマを思い出して感動するかも)\n

 4. クッキーやパンケーキを作る(楽しい!)\n

 5. ぬいぐるみや人形に話しかけてみる(甘えちゃおう♪)\n\n

 雨の日はゆっくり家で過ごすのも楽しいですよ!😊"

 応答が短くなるように設定してあるので、それを外すかな。

 ちょっと面倒なこともあったのでパッケージ化したものをGithubに置いておくか。

 デカファイルばかりなので、LFSでもdebは無理とか。これはリリースに置く。

 結構めんどくさい。なるほど、LLMモデルがgithubに置かれないわけがわかった。必要なファイルがみなデカいもの。置けないわ。

kinneko/tinyswallow-deb: TinySwallow LLM package for Module LLM.

https://github.com/kinneko/tinyswallow-deb


オリジナル投稿:
ModuleLLMにTinySwallowを入れてみる -3-|kinneko|pixivFANBOX
https://kinneko.fanbox.cc/posts/10648887