Open7

LLM_moduleをまずは動かす

shuyin02shuyin02
❯ adb shell
sh-5.1# echo 100 > /sys/class/leds/R/brightness
sh-5.1# 
sh-5.1# 
sh-5.1# 
sh-5.1# echo 255 > /sys/class/leds/R/brightness
sh-5.1# echo 0 > /sys/class/leds/G/brightness
sh-5.1# echo 0 > /sys/class/leds/B/brightness
sh-5.1# echo 255 > /sys/class/leds/B/brightness
sh-5.1# python
sh: python: command not found
sh-5.1# python3
Python 3.10.12 (main, Mar 22 2024, 16:50:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print('hello')
hello
>>> 
>>> quit()
sh-5.1#  python3 ModuleLLM_LED.py
python3: can't open file '//ModuleLLM_LED.py': [Errno 2] No such file or directory
sh-5.1# ls
bin   dev  home  lost+found  mnt  param  root  sbin  srv  tmp  var
boot  etc  lib	 media	     opt  proc	 run   soc   sys  usr
sh-5.1# ls lib/
aarch64-linux-gnu      libexpat.so.1.8.7	   libz.so
apparmor	       libgomp.so.1		   libz.so.1
apt		       libgomp.so.1.0.0		   libz.so.1.2.11
bfd-plugins	       libiperf.so		   locale
binfmt.d	       libiperf.so.0		   lsb
cmake		       libiperf.so.0.0.0	   mime
compat-ld	       libjson-c.a		   modprobe.d
cpp		       libjson-c.so		   modules
dbus-1.0	       libjson-c.so.5		   modules-load.d
dpkg		       libjson-c.so.5.3.0	   networkd-dispatcher
environment.d	       libjson_script.so	   ntp
firmware	       libnl-3.so		   openssh
gcc		       libnl-3.so.200		   optee_armtz
git-core	       libnl-3.so.200.26.0	   os-release
gnupg		       libnl-genl-3.so		   pam.d
gnupg2		       libnl-genl-3.so.200	   pkgconfig
gold-ld		       libnl-genl-3.so.200.26.0    python2.7
ifupdown	       libnl-idiag-3.so		   python3
init		       libnl-idiag-3.so.200	   python3.10
initramfs-tools        libnl-idiag-3.so.200.26.0   python3.11
kernel		       libnl-nf-3.so		   resolvconf
ld-linux-aarch64.so.1  libnl-nf-3.so.200	   rsyslog
libatomic.so.1	       libnl-nf-3.so.200.26.0	   sasl2
libatomic.so.1.2.0     libnl-route-3.so		   sftp-server
libax_syslog.so        libnl-route-3.so.200	   ssl
libblobmsg_json.a      libnl-route-3.so.200.26.0   sysctl.d
libblobmsg_json.so     libnl-xfrm-3.so		   systemd
libcrypto.so	       libnl-xfrm-3.so.200	   sysusers.d
libcrypto.so.1.1       libnl-xfrm-3.so.200.26.0    tc
libdw-0.186.so	       libssl.so		   tee-supplicant
libdw.so	       libssl.so.1.1		   telnetlogin
libdw.so.1	       libstdc++.so.6.0.28-gdb.py  terminfo
libelf-0.186.so        libubox.a		   tmpfiles.d
libelf.so	       libubox.so		   udev
libelf.so.1	       libubox.so.20210516	   usrmerge
libexpat.so	       libubus.so		   valgrind
libexpat.so.1	       libubus.so.20210630
sh-5.1# ls sys/class/leds/
B  G  R
sh-5.1# cat sys/class/leds/R/max_
max_brightness  max_current     
sh-5.1# cat sys/class/leds/R/max_brightness 
255
sh-5.1# cat 
.update.log  etc/         media/       proc/        soc/         usr/
bin/         home/        mnt/         root/        srv/         var/
boot/        lib/         opt/         run/         sys/         
dev/         lost+found/  param/       sbin/        tmp/         
sh-5.1# cat 
.update.log  etc/         media/       proc/        soc/         usr/
bin/         home/        mnt/         root/        srv/         var/
boot/        lib/         opt/         run/         sys/         
dev/         lost+found/  param/       sbin/        tmp/         
sh-5.1# cat sys/class/leds/R/max_brightness 
255
sh-5.1# cat sys/class/leds/R/max_brightness 
255
sh-5.1# cat > /root/ModuleLLM_LED.py <<'PY'
import os, time
# 各LEDの明るさを設定
def set_led(r=0, g=0, b=0):
    os.system(f"echo {r} > /sys/class/leds/R/brightness")
    os.system(f"echo {g} > /sys/class/leds/G/brightness")
    os.system(f"echo {b} > /sys/class/leds/B/brightness")

# テストでRGBを順番に点滅
for _ in range(5):
    set_led(255,0,0); time.sleep(0.3)
    set_led(0,255,0); time.sleep(0.3)
    set_led(0,0,255); time.sleep(0.3)
set_led(0,0,0)
PY
sh-5.1# ls
bin   dev  home  lost+found  mnt  param  root  sbin  srv  tmp  var
boot  etc  lib	 media	     opt  proc	 run   soc   sys  usr
sh-5.1# python3
Python 3.10.12 (main, Mar 22 2024, 16:50:05) [GCC 11.4.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> quit(0)
sh-5.1# python3 root/ModuleLLM_LED.py 
sh-5.1# python3 root/ModuleLLM_LED.py 
sh-5.1# python3 root/ModuleLLM_LED.py 
sh-5.1# python3 root/ModuleLLM_LED.py 
sh-5.1# python3 root/ModuleLLM_LED.py 
sh-5.1# python3 root/ModuleLLM_LED.py 
sh-5.1# ls
bin   dev  home  lost+found  mnt  param  root  sbin  srv  tmp  var
boot  etc  lib	 media	     opt  proc	 run   soc   sys  usr
sh-5.1# cat root/ModuleLLM_LED.py 
import os, time
# 各LEDの明るさを設定
def set_led(r=0, g=0, b=0):
    os.system(f"echo {r} > /sys/class/leds/R/brightness")
    os.system(f"echo {g} > /sys/class/leds/G/brightness")
    os.system(f"echo {b} > /sys/class/leds/B/brightness")

# テストでRGBを順番に点滅
for _ in range(5):
    set_led(255,0,0); time.sleep(0.3)
    set_led(0,255,0); time.sleep(0.3)
    set_led(0,0,255); time.sleep(0.3)
set_led(0,0,0)
sh-5.1# ls -a
.	     bin   etc	 lost+found  opt    root  soc  tmp
..	     boot  home  media	     param  run   srv  usr
.update.log  dev   lib	 mnt	     proc   sbin  sys  var
sh-5.1# ls
bin   dev  home  lost+found  mnt  param  root  sbin  srv  tmp  var
boot  etc  lib	 media	     opt  proc	 run   soc   sys  usr
sh-5.1# ls root/
ModuleLLM_LED.py
sh-5.1# cat usr/
bin/     include/ libexec/ sbin/    src/     
games/   lib/     local/   share/   
sh-5.1# cat usr/local/
bin/     games/   lib/     man/     share/   
etc/     include/ m5stack/ sbin/    src/     
sh-5.1# cat usr/local/m5stack/
bash_env.sh         lib/                startup-script.sh
bin/                logo.wav            update_check.sh
block-mount.sh      shutdown-script.sh  
sh-5.1# cat usr/local/m5stack/startup-script.sh 
#!/bin/sh
. /etc/profile
insmod /usr/lib/modules/4.19.125/kernel/drivers/leds/led-class.ko
insmod /usr/lib/modules/4.19.125/kernel/drivers/leds/leds-lp55xx-common.ko
insmod /usr/lib/modules/4.19.125/kernel/drivers/leds/leds-lp5562.ko
sleep 0.1
echo 0  > /sys/class/leds/R/brightness
echo 50 > /sys/class/leds/G/brightness
echo 0  > /sys/class/leds/B/brightness
tinyplay -D0 -d1 /usr/local/m5stack/logo.wav > /dev/null 2>&1 &

sh-5.1# ps aux | grep -i llm
avahi       1629  0.0  0.3   7932  3508 ?        Ss   05:11   0:00 avahi-daemon: running [m5stack-LLM.local]
root        1722  0.0  0.7 613944  7196 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_sys
root        1723  0.0  0.7 387972  7580 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_asr
root        1726  0.0  0.5 534312  5588 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_audio
root        1727  0.0  0.5 386008  5412 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_camera
root        1728  0.0  0.6 399676  6636 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_kws
root        1730  0.0  0.5 386908  5876 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_llm
root        1731  0.0  0.6 397556  6860 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_melotts
root        1732  0.0  0.5  12508  5040 ?        Ss   05:11   0:00 /opt/m5stack/bin/llm_skel
root        1733  0.0  1.7 401820 17036 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_tts
root        1734  0.0  0.6 391476  6712 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_vlm
root        1735  0.0  0.7 390932  7100 ?        Ssl  05:11   0:00 /opt/m5stack/bin/llm_yolo
root       10696  0.0  0.2   9008  2044 pts/0    S+   05:43   0:00 grep -i llm
shuyin02shuyin02

rootにpythonスクリプトを保存して実行してみたり
psで動いてるプロセスをgrepしてみたり

shuyin02shuyin02
sh-5.1# dpkg -l | grep llm
ii  lib-llm                                                   1.3                                     arm64        llm-module
ii  llm-asr                                                   1.3                                     arm64        llm-module
ii  llm-audio                                                 1.3                                     arm64        llm-module
ii  llm-audio-en-us                                           0.2                                     arm64        llm-module
ii  llm-audio-zh-cn                                           0.2                                     arm64        llm-module
ii  llm-camera                                                1.3                                     arm64        llm-module
ii  llm-kws                                                   1.3                                     arm64        llm-module
ii  llm-llm                                                   1.3                                     arm64        llm-module
ii  llm-melotts                                               1.3                                     arm64        llm-module
ii  llm-melotts-zh-cn                                         0.2                                     arm64        llm-module
ii  llm-qwen2.5-0.5b-prefill-20e                              0.2                                     arm64        llm-module
ii  llm-sherpa-ncnn-streaming-zipformer-20m-2023-02-17        0.2                                     arm64        llm-module
ii  llm-sherpa-ncnn-streaming-zipformer-zh-14m-2023-02-23     0.2                                     arm64        llm-module
ii  llm-sherpa-onnx-kws-zipformer-gigaspeech-3.3m-2024-01-01  0.2                                     arm64        llm-module
ii  llm-sherpa-onnx-kws-zipformer-wenetspeech-3.3m-2024-01-01 0.2                                     arm64        llm-module
ii  llm-single-speaker-english-fast                           0.2                                     arm64        llm-module
ii  llm-single-speaker-fast                                   0.2                                     arm64        llm-module
ii  llm-skel                                                  1.3                                     arm64        llm-module
ii  llm-sys                                                   1.3                                     arm64        llm-module
ii  llm-tts                                                   1.3                                     arm64        llm-module
ii  llm-vlm                                                   1.3                                     arm64        llm-module
ii  llm-yolo                                                  1.3                                     arm64        llm-module
ii  llm-yolo11n                                               0.2                                     arm64        llm-module
ii  llm-yolo11n-pose                                          0.2                                     arm64        llm-module
ii  llm-yolo11n-seg                                           0.2                                     arm64        llm-module
shuyin02shuyin02
# filename: test_llm.py
import zmq

ctx = zmq.Context()
sock = ctx.socket(zmq.REQ)
sock.connect("ipc:///tmp/llm/5556.sock")

sock.send_json({"prompt": "Hello from Python"})
reply = sock.recv_json()
print("Response:", reply)
sh-5.1# systemctl start llm-llm
sh-5.1# systemctl status llm-llm
● llm-llm.service - llm-llm Service
     Loaded: loaded (/lib/systemd/system/llm-llm.service; enabled; vendor prese>
     Active: active (running) since Tue 2023-08-22 05:11:42 CST; 19min ago
   Main PID: 1734 (llm_llm)
      Tasks: 5 (limit: 1149)
     Memory: 5.0M
        CPU: 39ms
     CGroup: /system.slice/llm-llm.service
             └─1734 /opt/m5stack/bin/llm_llm

Aug 22 05:11:42 m5stack-LLM systemd[1]: Started llm-llm Service.

ここまできた

shuyin02shuyin02
adb push ~/Desktop/test_llm.py /root/

desktopにtest_llm.pyを配置してこれを実行してrootに配置できたので、adb shell上でcat するより良さそう